您的当前位置:首页正文

用OPC技术间接扩充MCGS设备驱动库

2020-01-25 来源:爱go旅游网
维普资讯 http://www.cqvip.com

《工业控制计算机}2006年19卷第4期 47 用OPC技术间接扩充MCGS设备驱动库 Expanding the Equipment Drivers Library Indirectly by the OPC Technology 刘 波 梁岚珍(新疆大学电气工程学院,新疆乌鲁木齐830008) 摘 要 针对智能温湿度仪表与MCGS的相互通讯,利用OPC技术间接扩充了MCGS设备驱动程序库。重点阐述采用OPC 自动化接口扩充MCGS设备驱动库的编程思路。 关键词:OPC技术,组态软件,设备驱动 Abstract Aming at the program realized the communication between the intelligent temperature and humId;ty instruments and MCGS configuration software,indirectly expanded the equipment drivers library by the OPC ̄chnology.the programming con— cept for expanding the equipment drivers library using 0PC automation interface is emphasized. Keywords:OPC ̄chnology,configuration software,equipment drivers 1 工程概述 速度和稳定性。 在某棉纺厂棉纺车间温湿度控制改造项目中,采用常规的 3问题的解决 上位机+数据采集前端的控制模式,利用MCGS组态软件采集 综合以上方案的特点和实验结果,本系统采用了第三种方 各区域的温、湿度,基于这些采集的数据,按一定的控制策略实 案,即使用0PC自动化接口完成温湿度数据的采集工作。需要 现对相关设备(电磁阀、轴流风机等)的控制,从而调整各车间的 开发的程序主要由两部分组成,一是根据温湿度仪表的通讯协 温湿度。数据采集前端采用北京宝利马传感器公司生产的 议完成数据采集工作;二是利用0PC自动化接口完成MCGS WS302M2智能型温湿度仪表,该型仪表采用RS485总线方式 实时数据库内各温、湿度数据的刷新工作。 实现与系统(PC机)的通讯,通讯方式为主从应答方式。 1)根据温湿度仪表的通讯协议采集温湿度数据。WS302M2 2问题的提出与分析 智能型温湿度仪表的串行通讯帧结构分为发送和响应两种结 本工程采用的组态软件MCGS的设备驱动库中包含了大 构。发送结构为: 量的硬件设备的驱动构件,可以使工程人员轻松地实现MCGS 55H+address[2]+command+datatype+length+data[1ength]+check- 组态软件与大多数硬件设备的通讯问题。同时,MCGS还提供了 sum+AAH 多种扩充驱动程序库的方法,以实现硬件设备与软件系统间的 响应结构为: 无缝配合。在此工程中,由于MCGS组态软件设备驱动程序库 55H+address[2]+command+length+data[1ength]+checksum+AAH 内没有WS302M2智能型温湿度仪表的驱动程序,所以无法直 其中,address=B1+B2,为两个字节数据。在广播模式下, 接利用设备管理器实现MCGS组态软件与温湿度仪表的通讯。 B1=99H,B2=99H;其他模式下B1为测控仪表地址,B2必须等 在尝试与比较了多种方法后,最终利用OPC技术间接扩充 于0。利用VB6,0中的MSComm6,0串行通讯控件的接收完成 MCGS设备驱动库的方法来实现MCGS组态软件与温湿度仪 中断可以实现PC机与仪表的通讯。 表的相互通讯。根据实际应用中的体会,对这些方法进行比较的 2)采用OPC自动化接口刷新MCGS实时数据库内的温、 结果如下: 湿度数据。OPC自动化接口是为了便于使用Visual Basic的程 1)参考MCGS公司提供的例程并根据具体产品的通讯协议 序员编制OPC客户端而提供的类对象,它采用动态链接库的封 开发设备驱动构件。运用此种办法系统的稳定性好,但驱动程序 装形式,提供了OPC定制接口到自动化接口的转换,在链接库 的扩充性差;同时,如果相关设备或仪表协议不满足MCGS提 内实现了访问OPC服务器所需使用的各类对象,如OPCServ— 供的串口读写函数对于通讯帧结束符的ASCIl值小于127的要 er对象、OPCGroups对象等。VB编制的客户端程序通过对象 求,将无法使用该函数,那么开发构件就难以实现。 提供的各类属性和方法就可以完成OPC客户端的编制。 2)利用OLE自动化技术,在VB中操作MCGS程序。根据 程序编制的主要步骤为: 现场温湿度的实时数据刷新MCGS实时数据库,并以实时数据 1)注册OPC自动化接口动态链接库OPCAutomation,dll, 库内的记录值作为MCGS组态软件后续处理的数据值。这种办 本系统中使用了OPC中国促进会提供的免费OPC自动化接 法的处理较为简单,其不足在于VB通讯程序无法得到运行环 口动态链接库OPCAutomation,dll。 境异常情况下的错误标示码,不利于程序的错误处理。 2)在应用程序添加对0PCAutomation,dll的引用,之后,在 3)利用0PC自动化接口刷新MCGS 0PC服务器的各区 Visual Basic的对象浏览器内会看到该DLL中所实现的各种对 域温、湿度值所对应的标签值,从而使MCGS得到相应的温、湿 象,如图1所示。 度值。由于MCGS运行环境本身就是一个0PC服务器,因此, 3)在应用程序内声明OPC相关对象,包括OPCServer对 利用0PC自动化接口提供的相关接口函数可以直接将对应变 象、OPCGroups对象、OPCGroup对象、OPCItems对象和 量的标签值以组对象的形式一次性地写入。采用这种办法,可以 OPCItem对象,之后,利用对象的相关方法,就可以完成刷新 利用0PC对象的方法及属性,在VB通讯程序刷新MCGS实 MCGS实时数据库内的数据值。主要程序段如下: 时数据的同时返回通讯的错误代码,从而提高用户系统的运行 Sub Connect() (下转第49页) 维普资讯 http://www.cqvip.com

《工业控制计算机)2006年19卷第4期 49 则可满足实时性要求并可防止外部设备干扰应用程序,定时查 HANDLE hFile,//设备句柄,IN 询有很多种实现方式。 LPVOID IpBuffer,//存放读取数据的地址指针,OUT 2 Windows CE流接口驱动程序应用研究 DWORD nNumberOfBytesToRead,//欲读取数据长度的字节数,IN 计算机接口设备有很多种,具体的物理实现各不相同。为 LPDWORD IpNumberOfBytesRead,//读取到的数据长度字节数, 此,微软公司对设备进行了一定程度的模型化和抽象,提出了 OUT Windows CE流接口设备,将硬件和软件相对分隔,物理层与逻 LPOVERLAPPED IpOverlapped,//保留,Windows CE不支持,IN 辑层分离,提高了系统的可移植性和灵活性。 ): 从表面上看,Windows CE流接口设备是一种面向串型接 最简单的处理方式是将协议简单化,例如,调用ReadFile 口的设备,适合CAN等总线型设备,如RS232C串口通信设 函数读取一次数据即可读取全部的数字量和模拟量数据,数据 备。但是,正如利用串口通信可以进行多种数据的通信一样,通 格式中包含所有的数据。此外,还可通过DeviceloControl函数 过规定的协议,将应用程序看成上位机,驱动程序看成下位机, 实现并行接口设备的数据输入,本文不再赘述。 上位机发出指令,下位机进行响应,可以容易地实现与并行接口 对于输出设备,则比较简单。在上例中,将输入换作输出,命 设备进行通信。 令字不变。直接将命令字和数据组成完整的一条指令,调用 例如,假定有一并行接口设备有2个数字量输入和2个模 WriteFile直接传递到XX_Write函数中,在XX_Write函数直接 拟量输入,读取数字量1的命令字为D1,读取数字量2的命令 进行输出即可。此外,还可通过DeviceloControl函数实现并行 字为D2,读取模拟量1的命令字为A1,读取模拟量2的命令字 接口设备的数据输出。 为A2。一种比较烦琐的读取数据方法是:当应用程序需要读取 3结束语 数字量1时,只需先调用WriteFile,将命令D1发给驱动程序, 编制驱动程序是嵌入式系统应用的重要基础。Windows 驱动程序在X×-Write函数中进行必要的解释和处理;然后,应 CE系统和其它Windows系统有很大区别。Windows CE系统 用程序再调用ReadFile函数,即可读取数字量1的值。 流接口设备驱动程序是一种结构比较简洁的驱动程序,能实现 种比较简单地处理方式是利用ReadFile函数的参数进 包括DMA在内的各种l/O方式驱动。流接口设备驱动程序可 一行命令字的传递。ReadFile函数声明如下。其中nNumberOf— 以用驱动各种串型接口设备,通过规定的协议,也可以用来驱动 B ̄esToRead为欲读取数据长度的字节数,可以将命令字通过 并行接口设备,适用范围广泛。 该参数直接传给驱动程序的xxx Read函数。在XXX Read函 数中对命令字进行解析,然后将读取到数据传给IpBuffer指向 参考文献 1 马玉春,宋瀚涛.串行通讯协议的研究及应用计算机应用研究,2004 的地址,进而传给应用程序。 (4):228~229 [收稿日期:2005.9.24] BOOL ReadFilef (上接第47页) End If End Sub 在与OPC服务器连接后,通过调用组对象的Addltems方 法增加OPC服务器的标签对象,标签名应与MCGS内所定义 的变量名相对应。之后,将利用MSComm6.0串行通讯控件读 取的温湿度仪表响应数据分离出温、湿度数据后,使用组对象的 同步数据写入方法SyncWrite将其写入MCGS OPC服务器中 的响应的标签,完成实时数据库的刷新工作。 应当指出,为了程序运行的稳定和可靠,必须为程序添加通 讯处理异常和OPC服务器异常的错误处理代码。 将编制好的程序生成后缀为.EXE的应用程序后,在MCGS 的启动策略中添加脚本程序,利用MCGS提供的系统函数Shell (pathname,windowstyle)(函数参数意义为:pathname,字符型, 图1 OPC自动化接口内所实现的各种类对象 要执行的外部应用程序的名称,包括路径;windowstyle,数值型, 新建服务器对象并与MCGS OPC服务器连接 指定被执行的外部应用程序窗口的状态),使MCGS进入运行 If objServer Is Nothing Then 时,系统将自动启动并执行该应用程序,开始温湿度数据的采集。 Set objServer:New OPCServer 4结束语 End If 连接本地机器的MCGS OPC服务器 以上方法在棉纺车间温湿度监控改造项目应用中获得了很 if objServer.ServerState:OPCDisconnected Then 好的效果。它避开了VC开发动态链接库的繁琐与深奥,使普通 objServer.Connect”MCGS.OPC.Server" 的工程师也能按照自己的需要来方便地定制设备驱动程序。 End If lf objGroups Is Nothing Then 建立一个OPC组集合 参考文献 Set objGroups:objServer.OPCGroups 1 日本0PC协会OPC应用程序入门 End If 2 Data Access Automation Interface Standard Version 2 02, If objTestGrp Is Nothing Then 添加一个OPC组 1990 该组将包含所有要刷新的温、湿度标签 3常晓波,刘颖,等.Visual Basic6.0高级编程清华大学出版社,2003 Set objTestGrp:objG roups.Add("TestGrp”) 『收稿日期:2o06.1.5] 

因篇幅问题不能全部显示,请点此查看更多更全内容