面向PLC的OPC服务器设计与开发
2011-07-03李绍成马连祥
李绍成,马连祥
(南京林业大学 木材工业学院,南京 210037)
0 引言
可编程控制器PLC(Programmable Logic Controller)具有可靠性高、通用性强、编程简单、体积小、安装维护方便等优点,在工业控制中得到了广泛应用[1~3]。
在工业控制系统中,可能存在不同厂家生产的、多种型号的可编程控制器PLC。为了便于系统集成,一般采用基于OPC(OLE for Process Control)规范的接口进行数据交换,为此,需要设计、开发面向PLC的OPC服务器。
1 OPC服务器开发工具
面向PLC的OPC服务器开发需要完成以下两个方面工作:一方面,需要根据PLC的通信协议实现上位机服务器软件与PLC的数据交换;另一方面,需要合理设计服务器软件的架构与接口,使之符合OPC技术规范。
由于OPC服务器是基于COM技术的,这就要求程序设计人员必须非常熟悉COM技术,而精通COM技术是有一定难度的,因此,OPC服务器的源码级开发是相当复杂的,一般由专业的软件公司进行开发[4,5]。
为了便于OPC技术的推广和应用,国内外许多单位推出了OPC服务器快速开发工具包。这种工具包将微软公司的OLE/COM/DCOM技术和OPC的技术细节进行了隐藏,使用户开发工作集中在数据采集和处理任务上,从而简化了OPC服务器的开发。
基于工具包的OPC服务器开发,主要任务是熟悉工具包的API接口函数,通过调用工具包的API接口函数实现OPC服务器的功能,为应用软件提供符合OPC规范的接口。
2 OPC服务器设计与开发
2.1 软件设计
基于工具包的面向PLC的OPC服务器开发的首要任务是设计OPC对象与接口、OPC服务器界面,然后进行OPC服务器与PLC的通信设计,以实现OPC服务器与PLC的数据交换,具体的软件架构如图1所示。
图1 面向PLC的OPC服务器软件架构
OPC对象与接口是OPC服务器与客户端程序进行交互的部分。首先应进行OPC服务器对象设计,即定义服务器名称ProgID和类标识符CLSID。服务器名称ProgID可以自由确定;类标识符CLSID是一个128字节的数据,是用来标识一个COM对象的,可用微软自带的工具GUIDGEN.EXE快速确定。然后根据OPC项的管理要求设计OPC组对象,如果OPC项较少,可以直接利用工具包默认的一个OPC组对象。最后确定OPC项对象,一个OPC项可以对应于PLC内存中的若干寄存器,一般根据PLC的具体控制要求进行设计,并确定可读项与可写项。
OPC服务器与PLC的通信模块是面向PLC的OPC服务器的重要组成部分,OPC可读项的数据就是通过该模块采集PLC中相应寄存器的信息获得的;OPC可写项的数据就是通过该模块写入PLC中相应寄存器的。
服务器程序界面可以为用户提供友好的交互平台,便于观察数据项的变化,以及对数据项进行管理和设置。
2.2 软件开发
在采用工具包开发面向PLC的OPC服务器时,主要是利用工具包提供的API接口函数进行如下的操作:
1)工具包动态库初始化
OPC服务器开始运行时,应进行工具包动态库初始化,以及设置OPC服务器的最高刷新频率,这是OPC服务器得以运行的基础。
2)OPC服务器信息设置
主要是设置服务器的运行状态、版本号、厂商信息等。
3)OPC项的创建与删除
在OPC服务器开始运行时创建OPC项,在OPC服务器运行结束时删除OPC项。
4)OPC项数据的更新
OPC服务器需要周期地更新OPC项的值、质量和时间戳,即将数据存储区中的数据更新到相应的OPC项。当客户端程序请求写数据时,OPC运行库调用写回调函数,并利用服务器与PLC的通信模块将数据写入PLC中的相应寄存器中;当客户请求读数据时,OPC运行库调用读回调函数,返回相应的OPC项的数据。
服务器与PLC的通信模块是基于PLC的通信接口方式进行开发的。例如串口通信,其是根据PLC的通信协议采用串口通信控件或API函数编程来实现数据交换的。
5)回调函数注册
工具包中有三个回调函数:读回调函数、写回调函数和断开回函数。只有注册了这三个回调函数后,OPC服务器才能和客户端程序按照OPC技术规范进行正常通信。
6)OPC服务器注册和注销
OPC服务器安装到计算机后,首先应将服务器名称ProgID和类标识符CLSID等信息进行注册。在OPC服务器注册后,OPC客户端程序才能在本机或局域网上检索到该OPC服务器,从而与该OPC服务器建立连接与数据交换。注销是将计算机系统中的OPC服务器信息清除。
OPC服务器是一个进程外组件,其在运行过程中对工具包接口函数的调用流程如图2所示。
图2 工具包接口函数调用流程
3 设计实例
3.1 PLC控制对象
Denford公司的FMS(Flexible Manufacturing System)教学演示系统由一台数控车床、一台数控铣床、两台机器手和一条传送带组成,该系统可以通过数字I/O接口进行控制,各设备的I/O接口数如表1所示。
由表1可以看出,该FMS的控制器需要有13个数字输入口采集设备的状态信息,需要11个数字输出口发送控制命令。欧姆龙公司生产的CPM1A-30CDR-A-V型PLC有18个数字输入口和12数字输出口,满足该FMS控制的接口要求。为了满足该FMS控制系统快速重构的要求,其控制系统必须是基于OPC规范接口的,即按照图3所示的体系结构进行控制。因此,需要为图3所示的PLC开发OPC服务器。
表1 Denford FMS硬件设备I/O接口
图3 基于PLC和OPC的FMS控制系统
3.2 OPC服务器设计
由表1和图3所示的CPM1A-30CDR-A-V型PLC控制对象的具体要求可知,该 OPC服务器主要与PLC的输入与输出口进行数据交换,因此,在该OPC服务器中设计定义了6个OPC项,其中4个OPC数据项为可读项:TagIn0CH、TagIn1CH、TagIn10CH、TagIn11CH,分别用于读取该PLC的输入端000通道与001通道、输出端010通道与011通道的数值,即采集FMS硬件设备的状态信息;另外2个OPC数据项为可写项:TagOut10CH、TagOut11CH,分别用于对该PLC的输出端010通道与011通道写数值,即向FMS硬件设备发送控制命令。
服务器与PLC的通信功能模块是采用串口通信控件MSComm实现的,具体的通信协议是由CPM1A-PLC手册中的读出输入输出继电器内容和写入输入输出继电器区中的命令格式和响应格式确定的。
开发的OPC服务器主界面如图4所示,具有注册和注销、OPC项的创建与删除、OPC项数据的更新等功能。在该OPC服务器安装、注册后,利用图4所示的OPC客户端软件进行了性能测试,结果表明该OPC 服务器符合OPC接口规范要求,可以在本机或局域网上进行访问,满足图3所示的FMS控制要求。
图4 CPM1A-30CDR型 PLC的OPC服务器界面
4 结束语
本文研究了面向PLC的OPC服务器的快速实现方法,设计了一用于Denford公司FMS控制的PLC的OPC服务器,运行结果表明采用本文研究的方法所开发的OPC服务器符合OPC技术规范要求,具有一定的工程应用价值。
[1] 谢庆华. PLC在电力系统操作电源监控系统中的应用[J].化工自动化及仪表, 2007, 34(5): 77-78.
[2] 宋青. 基于工业以太网多PLC的污水处理控制系统[J].自动化与仪表, 2011, (6); 28-32.
[3] 杨旭宏, 刘进平. 基于PLC的煤矿水仓水位监控系统[J].辽宁工程技术大学学报(自然科学版), 2011, 30(2): 190-193.
[4] 戚中奎, 林果园, 孙统风. OPC数据访问服务器的研究与实现[J]. 计算机工程与设计, 2011, 32(4): 1517-1520.
[5] 周磊, 刘大成, 周传福, 等. OPC规范下数据访问服务器的设计与实现[J]. 微计算机信息, 2007, 23(11): 264-266.