基于控制及信息协议的计算机监控通信软件
2012-07-25马殷元蒋兆远
雷 斌,马殷元,蒋兆远,柴 获
(兰州交通大学 机电技术研究所,甘肃 兰州730070)
0 引 言
生产过程自动化、企业和行业管理信息化是工业化和信息化融合的两个切入点。在制造业和物流仓储等行业的生产底层控制环节,常使用PLC作为控制器实现生产过程自动化。在制造生产车间,常使用计算机监控系统对生产过程进行监控、管理或调度[1],监控系统直接管控的对象一般是PLC。计算机监控系统与PLC的通信技术是实现车间管控一体化即车间级两化融合的一项关键技术。
近年来,车间管控一体化中越来越多地使用以太网为网络架构[1-3]。一调查表明工业用户中有78%的用户在使用Ethernet TCP/IP协议网络[10]。以太网工业协议 Ethernet/IP(Ethernet/Industrial protocol)协议是一整套基于以太网的工业通信协议,Ethernet/IP是控制及信息协议CIP(control and information protocol)在以太网上的实现,它将对等和企业管理连接的概念带进了工厂,提供面向实时控制、设备组态和数据采集的完整的制造业以太网解决方案,是一种可用于控制系统信息化的低成本高性能的方案[3]。两台设备使用工业以太网协议,在100M的全双工以太网交换机的网络中,其点对点通信的数据更新间隔为8ms,可满足大多数实时控制通信需求[4]。文献 [9]介绍了使用开发的网关实现控制网络和信息网络的集成,但还未使用标准协议,通用性不强。
目前支持以太网环境的CIP通信软件产品数量很少,大多为国外公司开发。这些软件基于COM技术开发,存在系统较庞大、跨进程效率较低等问题。很少有文献介绍监控系统中CIP通信软件的实现,或开发的系统尚未达到实际应用水平。开发基于以太网和CIP的计算机监控PLC通信软件对我国企业控制信息安全和实现两化融合有重要意义。
1 CIP协议分析与选择
1.1 监控系统通信方式选择
CIP是一个对等的和面向对象的协议,它提供工业装置和高层设备之间的 “连接”,并独立于物理层和数据链路层[5]。“连接”分为I/O连接和显式消息连接。I/O连接提供产生信息的应用程序和一个或多个消费信息的应用程序间的专用通信路径,一般用于实时性要求更高的底层输入输出信息通信。显式消息连接提供2个设备之间普通的、多用途通信路径。显式消息通过显式消息连接传输。显式消息可被用于指挥一个独特的任务的执行和报告任务执行的结果。显式消息传递机制提供了一种手段,使得典型的面向请求/响应的函数可以借助此手段来执行[5]。由上述分析可见,显式消息传递通信方式适合用于监控计算机和PLC间的通信。
1.2 CIP在 EtherNet/IP中的适配
开发基于以太网和TCP/IP的CIP通信软件首先需要了解CIP在Ethernet/IP中的适配。为了在TCP/IP上使用CIP协议,Ethernet/IP协议在适配和数据链路层中的TCP/IP协议之上用封装协议来适配CIP[6]。以太网帧包含封装消息包的格式如图1所示。超过长度的封装消息包由底层的TCP负责分割和合并。监控计算机软件开发环境中一般都包含了TCP/IP网络操作接口函数,它负责填充TCP/IP头和尾数据,CIP通信软件需要编程填充封装消息包的封装头部和其后封装数据。
图1 包含封装消息包的以太网帧
图2 封装消息包结构
封装消息包的结构如图2所示,内容依次是命令代码、数据长度、会话句柄、响应状态、发送端事件环境、可选项、封装数据。需要注意的是其中的多字节数据 (如,数据长度)采用小权字节在后的顺序格式,这种格式与互联网协议的规定相反。监控系统通信中常用的命令代码有“0x0065:注册会话、0x0066:注销会话、0x006F:发送请求/回应数据”。“发送请求/回应数据”命令用于在通信的发起者和接收者之间传输封装的请求/回应包。本文介绍的监控计算机通信软件使用该命令读/写PLC内存数据。封装数据需遵循通用包格式CPF(common packet format)规范,数据长度在0~65511字节范围可变。封装数据内容依次为接口句柄、超时值和CPF格式数据[6]。
2 监控计算机与PLC的交互机制设计
监控系统由监控计算机、PLC和通信设备组成。为了提高可靠性和可用性,PLC和传感器以及致动器一般应该设计成一个自治的控制系统,不管监控计算机是否可用。换句话说,PLC对物理系统的实时控制不应依赖于监控计算机和通信。监控计算机只在需要改变过程控制的设定点、配置新参数、发送新任务命令或获取任务的执行结果等情况下与PLC通信。当监控计算机需要向PLC发送新任务命令时由监控计算机主动发起通信,监控计算机通过写PLC指定存储区向PLC发送任务。当PLC需要向监控计算机报告任务执行情况时,似乎应由PLC主动发起通信。然而,为了简化系统设计,本系统PLC软件中仅把报告数据放入指定的存储区,监控计算机通过读PLC指定存储区数据获得任务的执行结果。PLC作为服务器,对外提供对其内部数据区的读写服务。这样构成一个单向的服务器/客户端通信模式。PLC不依赖于监控软件实现细节,就可实现互发信息功能。本系统设计在PLC数据存储区开辟2块数据区“窗口”,作为通信数据区。一块数据区用于监控计算机发送指令即PC写区,专门由监控计算机写入发给PLC的指令。另一块用于PLC报告状态即PLC写区,由PLC写、监控计算机读。同时在通信数据区设置一些标志位以便于同步和应答,如发指令请求标志、发报告请求标志[7]。
上述内容构成了用户层通信协议。监控计算机与PLC的通信软件首先需要根据CIP通信协议,实现对PLC存储区数据的读写,然后在此基础上实现用户层应答协议。
3 通信软件设计与实现
监控通信软件在Microsoft Visual Studio 2005开发环境中使用C#语言实现,监控对象PLC为Logix5000系列。根据上文的分析,通信软件按层次划分为2层,底层为基于以太网的CIP通信类,高层为基于CIP通信类的监控通信类。监控通信类实现用户层通信应答协议,为应用软件对象提供通信服务。图3为CIP通信类图,图4为监控通信类图。
3.1 CIP通信类设计
CIP通信类基于TCP/IP实现封装协议和CIP协议。底层开发首先需要选择TCP/IP协议栈。文献 [8]详细说明了对TCP/IP栈的要求,Microsoft Visual Studio 2005提供的协议栈符合要求。Microsoft Visual Studio 2005中对协议栈进一步做了面向对象的封装,提供了协议栈的多种使用模式。在C#语言的System.Net.Sockets命名空间中提供的Socket、TcpClient、TcpListener等类均实现了TCP/IP底层通信协议。在监控系统与PLC的通信中,监控计算机为通信主动发起者,PLC提供数据服务,因而使用Tcp-Client类收发网络数据较其它类最简单方便。如前所述,监控计算机对PLC发送命令或读取报告使用CIP显式消息传输,这要求上层的读写操作都首先从调用底层TcpClient对象的 “写网络”操作开始发起通信。尽管以太网操作是全双工的,但封装协议中的 “发送请求/回应数据”命令要求通信发起者遵循 “请求/回应”的周期顺序,而不可以按照“请求/请求/回应/回应”的顺序操作。为了避免多线程监控软件中可能引发的错误顺序操作,在一个CIP通信对象的读写函数设计中使用了互锁机制,即在读写函数进入网络操作的临界代码段前锁定网络操作权,操作完成后释放网络操作权。不同的CIP通信对象之间因为TcpClient本地端口和封装协议的会话句柄不相同,不存在网络资源共享和竞争。
对PLC数据的读写之前需要发送注册会话命令,获得PLC回应的会话句柄,此后可在读写PLC数据命令中多次使用此句柄。当结束对PLC的数据的读写操作后需要发送注销会话命令,当TCP连接断开时,PLC也会自动废弃此连接上的句柄。
在封装数据的通用包格式数据中需要填充16字节包装命令特定数据 (command specific data)头部。数据具体依次是接口句柄 (CIP通信时取00 00 00 00H)、超时值 (00 00H)、包含项数 (02 00H)、地址项标识 (00 00H)、地址项数据 (00 00H)、数据项标示 (B20 00H)、数据项长度(2字节)。其后为6字节CIP数据头部和4字节服务。通信软件使用CIP读数据服务、写数据服务以及多请求服务。具体数据填充顺序和格式详见文献 [12]。
由于每次网络操作涉及的底层传输、打包、解包等,这些操作会消耗额外时间,且网络操作相对时间较长。为此CIP通信类设计提供了读/写多变量函数,以减少网络操作次数。读/写多变量函数通过一次网络操作可读取或写入2~6个PLC内存变量 (数组按一个变量对待),提高了通信效率。读写多变量函数使用CIP多请求服务 (Multi-Request Service)包实现。
3.2 监控通信类设计
监控通信对象包含一个CIP通信对象。为了防止监控通信对象发给PLC的多个命令发生重叠,造成命令丢失,在PLC内存中定义了命令缓冲区标志来说明命令缓冲区的状态。PLC取走命令后复位相应命令缓冲区标志,指示通信对象可以写入下一条命令。通信对象写入新命令后置位命令缓冲区标志。具体流程如图5所示。监控通信对象处理PLC发给监控计算机的报告时也使用缓冲区标志来做同步应答。需要说明的是,PLC向监控通信对象发送报告操作实际上只是把报告内容写入PLC内存中的报告缓冲区,并置位报告缓冲区标志。监控通信对象处理报告流程如图6所示。上述用户层应答协议也可在一定程度上避免非法的操作,从而增强网络的安全性。
图5 发送监控命令流程
图6 读取PLC报告流程
由于PLC发送报告的时间具有随机性,监控软件反复查询PLC报告不是一个高效率的方法。本系统采用的方法是,监控通信对象读到有效报告后使用事件处理机制主动把PLC报告发给监控软件。监控通信对象设计采用了观察者设计模式,定义并开放了一个事件。通信软件自动 “拉入”PLC报告,然后主动 “推”给观察者——监控软件。为避免单个通信缓冲区的通信瓶颈,把命令缓冲区和报告缓冲区分别扩展为4个数组,设计的缓冲区标志为2个4元素的数组。同时,为了减少网络操作次数,图5和图6中的“通信对象读PLC报告缓冲区标志”和 “通信对象读PLC命令缓冲区标志”2个模块的读PLC操作是在一次通信中完成的,编程使用了CIP通信对象的 “读多变量函数”。
4 试验与结果分析
试验环境中使用了商用8口10M/100M自适应以太网交换机 (交换式集线器),运行通信软件的监控计算机配置Pentium 4 3.0GHz双核CPU和1GB内存,通过100Mbps网卡 与 交 换 机 连 接。PLC 型 号 为1756-L62Control-Logix5562Controller 并 配 型 号 为 1756-ENBT/A 10/100Mbps网卡,该网卡与监控计算机连接在同一个交换机上,交换机上不连接其它设备。
测试软件中采用本文开发的通信软件,每隔2s连续100次使用CIP多请求服务读取PLC中的6个整数型数组(共420字节),连续测试1小时,共测得1800组数据。使用Ethereal监测捕获的发出的包大小为256字节,收到的包大小为586字节。读取操作全部成功。没读取100次,进行1次注册会话和注销会话操作。测得的连续读100次的总时间在1562~1609ms之间单次读取时间最短15ms,最长31ms。读取最长时间 (31ms)发生在注册会话后的第一次读取。第二次及以后的读取时间在15ms~16ms之间。
通过本机OPC Server,采用同步读取设备方式,读100次总读取时间在4968ms~5500ms之间。通过本机OPC Server,采用同步读取缓存方式,读100次总读取时间在3421ms~3593ms之间。在上述测试情况下,本文开发的通信软件在通信速度方面有明显优势。原因在于,OPC Server增加了数据交换的中间环节,从而加长了通信延迟。也说明,在单客户端情况下OPC通信不具有速度优势。文献[11]的测试结果是OPC通信方式数据更新间隔大于25ms,本文测试条件下OPC通信周期在35ms左右,本文开发的通信软件通信周期在16ms左右,可用于中等实时要求的系统中。本文开发的通信软件不支持多客户端通信方式。相对OPC Server通信方式而言,本通信软件是一种轻量级实现。测得的单次读取通信延迟时间为16ms左右,该延迟时间包含了收、发2个环节,与文献 [4]测得的8ms时延是相符的。
从Windows任务管理器看,集成监控通信软件的测试软件运行中占用内存9768K左右,测试用的OPC Server软件占用内存18692K左右。
5 结束语
应用面向对象的系统分析与设计方法开发了实时监控系统通信软件。CIP通信底层采用加锁设计,保证了多线程环境应用安全。通信软件采用分层设计,具有低耦合、可重用优点。该通信软件已在某大型机场货运中心多工位多路径货物处理线和某自动化流水线的2个监控系统中应用,满足了监控系统实时性和可靠性要求。替代了国外公司产品。
[1]MA Yinyuan,JIANG Zhaoyuan.Design and realization of management and control system integration of AS/RS [J].Computer Engineering,2007,33 (19):233-255 (in Chinese).[马殷元,蒋兆远.自动化仓库管理与控制系统集成设计与实现 [J].计算机工程,2007,33 (19):233-255.]
[2]CHEN Lina,LI Chengtie,LI Qiuming,et al.Expectation of Ethernet/IP control system in E-enterprise [J].Chinese Journal of Scientific Instrument,2006,27 (6):600-602 (in Chinese).[陈丽娜,李成铁,李秋明,等.基于Ethernet/IP信息化控制系统展望 [J].仪器仪表学报,2006,27 (6):600-602.]
[3]LIU Jian,ZHAO Fang.CIP Network-a future-proof industrial network architecture [J].Low Voltage Apparatus,2007,49(11):32-41 (in Chinese). [刘健,赵芳.CIP Networks——前景可靠的工业网络架构 [J].低压电器,2007,49 (11):32-41.]
[4]Naveen Kalappa,Kristen Acton,Marco Antolovic,et al.Experimental determination of real time peer to peer communication characteristics of EtherNet/IP [C].IEEE Conference on Emerging Technologies and Factory Automation,2007:1061-1064.
[5]Open DeviceNet Vendor Association.CIP Networks Library,Volume 1,Common Industrial Protocol,Edition 3.3 [Z].2007.
[6]Open DeviceNet Vendor Association.CIP Networks Library,Volume 2,EtherNet/IP Adaptation of CIP,Edition 1.4 [Z].2007.
[7] MA Yinyuan,DU Yajiang.Communication protocol based on Ethernet for supervisory control system of AS/RS [J].Hoisting and Conveying Machinery,2007,47 (1):22-25 (in Chinese).[马殷元,杜亚江.基于以太网的自动化仓库设备监控协议的设计及实现 [J].起重运输机械,2007,47 (1):22-25.]
[8]Open DeviceNet Vendor Association,Control Net International,Industrial Ethernet Association.General Recommendations for Ethernetnet/IP Developers V2.0 [Z].2005.
[9]QIAO Yi,ZHANG Tao,TANG Mingxin,et al.Realization of integrating control and information network based on embedded gateway [J].Chinese Journal of Scientific Instrument,2005,26 (12):1229-1232 (in Chinese). [乔毅,张涛,唐明,等.由嵌入式网关实现控制网络与信息网络的集成 [J].仪器仪表学报,2005,26 (12):1229-1232.]
[10]Moyne J R,Tilbury D M.The emergence of industrial control networks for manufacturing control diagnostics and safety data[C].Proceedings of the IEEE,2007:29-47.
[11]Parrott J T,Moyne J R,Tilbury D M.Experimental determination of network quality of service in Ethernet UDP OPC and VPN [C].Minneapolis,MN:Proceedings of the American Control Conference,2006:4864-4869.
[12]Rockwell Automation,Inc Logix5000data access programming manual[Z].2009.