解析:
阐述了当前自动化软件的技术特点和发展趋势,并介绍了在iFIX自动化软件中使用VBA访问历史和实时数据的机制。通过一段使用VBA语言编写的程序,实现向Excel输出历史数据,生成历史报表的实例,说明了VBA语言在自动化软件中的应用。
1、自动化软件的发展趋势
自动化软件主要是指那些为用户提供人机 *** 作界面(HMI)的开发和运行环境的软件,有些软件还能够提供回路控制功能,用户可以实现基于PC的控制方案。自动化软件应当具备如下的主要功能及特征:工业过程的动态可视化;数据采集和管理;过程监控和报警;报表和 *** 作记录功能;系统安全等级化管理;为其他企业级程序提供实时和历史数据;简单的回路调节;批量控制等。
近年来,随着计算机和网络技术的发展与应用,自动化软件的发展也呈现如下的发展趋势。
11 开放和标准化
近年来,许多自动化软件厂商把通用的标准化编程语言,如微软的VBA(Visual Basic for Applications)集成在自己软件的开发环境中。VBA与VB(Visual Basic)极为相似,只是不能编译成可执行文件,这就为众多熟悉VB的用户提供了一个编程环境。用户在VBA环境中编写程序,可以使用DDE,ActiveX控件,ODBC,COM/DCOM 等技术使得自动化软件演变成开放的软件平台,在软件功能不能满足用户特殊需要时,用户可以根据自己的需要进行二次开发。
同时,OPC(OLE for Process Contro1)技术也是自动化软件的一个热点。OPC是Microsoft公司的对象链接和嵌入OLE/COM技术在过程控制方面的应用,为工业控制领域提供了标准的数据访问机制。
12 网络化
随着Inter/Intra的普及,自动化软件又集成了基于TCP/IP协议的网络功能,使其成为协作生产制造过程中的核心系统,实现了企业网络环境下实时数据的管理、实时流程查看、实时趋势浏览、报警记录与查看、报表数据存储、历史趋势存储与查看、生产过程报表生成、生产统计报表生成等功能,从而实现过程控制系统与信息系统的网络集成。用户可以通过IE浏览器登录自动化软件的Web Server服务器,实现远程浏览生产过程。
13 管理控制一体化
生产管理信息系统是大型企业重点建设的项目,随着大型数据库技术的日益成熟,自动化软件成为全厂范围内信息收集和集成的工具。在未来企业的信息化进程中,自动化软件将成为硬件设备与生产管理信息系统的桥梁。因为自动化软件能为生产管理信息系统提供生产过程的实时和历史数据,而生产管理信息系统叉对生产过程有着指导作用。
2、VBA在自动化软件中的应用
下面,以iFIX软件为例,通过VBA编写的脚本程序,实现向Excel输出历史数据的实例来具体说明VBA在自动化软件中的应用。
21 iFIX软件简介
iFIX软件是GE自动化软件产品家族中的一个基于Windows的HMI/SCADA组件。iFIX是基于开放的和组件技术的产品,专为在工厂级和商业系统之间提供易于集成和协同工作的设计环境。iFIX中还加入了OPC,VBA,ActiveX,DDE,ODBC等工业标准化技术,可以提供一个强大的开发环境,实现用户的特殊需求。
22 iFIX软件中VBA的应用实例
a) iFIX的数据访问机制。iFIX中的数据分为实时数据库和历史数据库,这2种数据库的访问方法不同,对于实时数据库,iFIX的VBA项目中提供了各种iFIX对象,利用这些对象,就可以方便地在VBA中实现对iFIX的控制功能;对于历史数据库,可以访问关系数据库来获得历史数据。对于这些关系数据库,各种编程语言大多都提供了相应的数据控件来访问,在VBA 中,通常采用ADO对象模型来访问这些历史数据库。
b) ADO Data控件使用Microsoft ActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合ODBC规范的数据源。
c) 利用VBA实现Excel报表。通过编写VBA脚本程序,可以实现向Excel输出历史数据,生成Excel报表。其触发方式有2种:一种是通过iFIX的调度程序,以固定的时间或事件来启动VBA脚本程序,生成报表;还可以直接使用VBA生成用户 *** 作界面,用户可以输入开始时间,间隔等参数,由用户点击按钮启动VBA脚本程序,生成报表。这2种方式在程序上大同小异,其主要部分VBA脚本程序如下。其中程序将历史数据、时间、TAG名称等参数送到Excel的Sheet2中,用户可以将Sheet1作为报表版面,通过编辑版面格式,引用Sheet2数据等方式,形成最终报表。
根据用户要求定义所要查询的时间段和变量名称
Dim MyDate,StartTime,EndTime As String Dim Tagl,Tag2 As String
Tagl=“TIC101.F_CV”
Tag2=“TIC102.F_CV”
MyDate=Format(Now(),“yyyy-mm—dd”)
StartTime=MyDate&“ ”& “0:00:00”
EndTime=MyDate&“ ”& “23:OO:OO”
使用ADO对象来访问ODBC数据库,用SQL语盲查询历史数据
strQuerySamp=“Select Datetime,Value,Tag From Fix Where Mode=‘Sample’and (TAG=‘ “& Tagl & ”‘or TAG=’”& Tag2 ) and Interval=‘ 01:00:00’and (Datetime) >={ts‘“& StartTime &”’ )and Datetime<={ts‘“ EndTime & ”’})”
Dim ADO As New ADODB.Connection
Dim rsADO As Recordset
Set ADO=New ADODB.Connection
ADO.ConnectionString=“ DSN= FIX Dynamics Historical Data;UID=sa;PWD= ;”
AD0.Open “FIX Dynamics Historical Data”,“sa”,“”
Set rsADO— New ADODB.Recordset
rsADO.Open strQuerySamp,ADO,adOpenForwardOnly,adLockBatchOptimistic
调用Excel,将历史数据写入打开的Excel报表文件
Dim 0utReport File,InReportFile As String
Set Intyexcel= New ExcelApplication
InReportFile-”C:\data\HisReport“
Intyexce1.Workbooks.Open InReportFile &“.XLS”
Intyexce1.Sheets(“Sheet2”).Select
While rsADO.EOF < > True
With Intyexce1.Worksheets(2)
For C=0 To Items
If rsADO(c)= “ ”Then .Cells(r,C + 1).Value= rsADO(c)
Next C
r; r+ 1
rsADO.M oveNex
End With
W end
关闭Excel,保存报表文件
OutReportFile=InRep0rtFile &“_”& MyDate
Intyexce1. ActiveW orkbook. SaveAs OutReportFile
Intyexce1.Quit
Set Intyexcel=Nothing
Set ADO==Nothing
3、VBA应用的注意事项与展望
集成了VBA编程语言的自动化软件,变成了标准化的、开放的软件开发平台,这使得自动化软件本身具有了无限的开放性和可扩展性。但同时也带来一些问题。首先,开发人员要确保VBA脚本程序的可靠和精简。VBA程序要经过严格和全面的测试,并要编写出错处理程序,保证生产过程控制的万无一失。其次,目前VBA程序还不能编写多线程程序,开发人员要选择恰当的触发方式,避免发生冲突。
总之,随着最终用户变得更加成熟以及对自动化软件的更加了解,他们将通过编写程序的方式来针对其过程及系统进行更多的定制,以便能够满足其需求。自动化软件将不断为用户提供这样的安全可靠的技术手段。
参考文献
[1] 刘恩涛,赵耀峰.Visual Basic6.0编程技术与实例分析,北京:中国水利水电出版杜,1999.455~456,472~478,479~482
[2] 刘炳文,张绅.Visual Basic程序设计——数据库篇.北京:人民邮电出版社。1999.196~198,224~232,248~251
详细教程:whzxtzr/readphpwid=455当错误代码为 -2147217904 时则执行。。。
附,部分错误代码说明:
400窗体已经显示,不能显示为模式窗体
402代码必须先关闭顶端模式窗体
419允许使用否定的对象
422找不到属性
423找不到属性或方法
424需要对象
425无效的对象使用
429ActiveX 部件不能建立对象或返回对此对象的引用
430类不支持自动 *** 作
432在自动 *** 作期间找不到文件或类名
438对象不支持此属性或方法
440自动 *** 作错误
442连接至型态程序库或对象程序库的远程处理已经丢失
443自动 *** 作对象没有默认值
445对象不支持此动作
446对象不支持指定参数
447对象不支持当前的位置设置
448找不到指定参数
449参数无选择性或无效的属性设置
450参数的个数错误或无效的属性设置
451对象不是集合对象
452序数无效
453找不到指定的 DLL 函数
454找不到源代码
455代码源锁定错误
457此键已经与集合对象中的某元素相关
458变量使用的型态是 Visual Basic 不支持的
459此部件不支持事件
460剪贴板格式无效
461 未找到方法或数据成员
462远程服务器机器不存在或不可用
463类未在本地机器上注册
480不能创建 AutoRedraw 图象
481无效
482打印机错误
483打印驱动不支持指定的属性
484从系统得到打印机信息时出错。 确保正确设置了打印机
485无效的类型
486不能用这种类型的打印机打印窗体图象
520不能清空剪贴板
521不能打开剪贴板
735不能将文件保存至 TEMP 目录
744找不到要搜寻的文本
746取代数据过长
31001内存溢出
31004无对象
31018未设置类
31027不能激活对象
31032不能创建内嵌对象
31036存储到文件时出错
31037从文件读出时出错
Err。 对象来探测并回应可捕获的错误
3没有返回的GoSub
5无效的过程调用
6溢出
7内存不足
9数组索引超出范围
10此数组为固定的或暂时锁定
11除以零
13类型不符合
14字符串空间不足
16表达式太复杂
17不能完成所要求的 *** 作
18发生用户中断
20没有恢复的错误
28堆栈空间不足
35没有定义 子程序、函数,或属性
47DLL 应用程序的客户端过多
48装入 DLL 时发生错误
49DLL 调用规格错误
51内部错误
52错误的文件名或数目
53文件找不到
54错误的文件方式
55文件已打开
57 I/O 设备错误
58文件已经存在
59记录的长度错误
61磁盘已满
62输入已超过文件结尾
63记录的个数错误
67文件过多
68设备不可用
70没有访问权限
71磁盘尚未就绪
74不能用其他磁盘机重命名
75路径/文件访问错误
76找不到路径
91尚未设置对象变量或 With 区块变量
92For循环没有被初始化
93无效的模式字符串
94Null 的使用无效
97不能在对象上调用 Friend 过程,该对象不是定义类的实例
298系统 DLL 不能被加载
320在指定的文件中不能使用字符设备名
321无效的文件格式
322不能建立必要的临时文件
325源文件中有无效的格式
327未找到命名的数据值
328非法参数,不能写入数组
335不能访问系统注册表
336ActiveX 部件不能正确注册
337未找到 ActiveX 部件
338ActiveX 部件不能正确运行
360对象已经加载
361不能加载或卸载该对象
363未找到指定的 ActiveX 控件
364对象未卸载
365在该上下文中不能卸载
368指定文件过时。该程序要求较新版本
371指定的对象不能用作供显示的所有者窗体
380属性值无效
381无效的属性数组索引
382属性设置不能在运行时完成
383属性设置不能用于只读属性
385需要属性数组索引
387属性设置不允许
393属性的取得不能在运行时完成
394属性的取得不能用于只写属性
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)