Design and Implementation about Non-real-time Data Sharing among PLCs
赵艳领(机械工业仪器仪表综合技术经济研究所网络控制研究中心,北京 100055)
PLC之间非实时数据共享设计与实现
国家863基金资助项目(编号:2013AA040304)。
修改稿收到日期:2015-09-17。
作者赵艳领(1984-),男,2009年毕业于哈尔滨工业大学控制科学与工程专业,获硕士学位,工程师;主要从事工业自动化系统开发、工控系统信息安全、嵌入式软件开发、楼宇自动化等方面的研究。
PLC控制系统通常由工程师站、操作员站、PLC和生产现场设备组成[1]。随着自动化控制水平的不断提高,PLC之间的数据交换要求也越来越高[2]。由于企业升级改造,一条主作业线上可能并存西门子、ABB、GE等多家的PLC系统,对于这种情况,经常使用现场总线或者OPC集成技术进行不同厂家PLC之间数据的交换和共享[3]。
总体而言,一般厂商都提供本品牌PLC之间数据共享解决方案,如西门子S7-300分布式PLC之间的数据共享采用全局数据包(global data,GD)的方式[4]。目前PLC之间的数据共享大多数是类似GD这种方式,存在通信速率低(有的不使用以太网)、组态繁琐(要求接收方和发送方都要组态相同的数据个数、顺序、类型)、限制数据报文长度、明文传输、校验机制简单、不支持网络冗余等问题。
本文利用独立开发组态软件和PLC固件程序的优势,确定PLC之间的数据共享关系,采用数据名称+数据类型的组合作为PLC之间共享数据项的通信唯一标志; PLC之间数据的交换和共享采用高效的用户数据报协议(user datagram protocol,UDP),并采用通信可靠性等技术手段确保数据传输的可靠、机密和稳定。
基于类似GD全局数据包方式,不同PLC之间数据共享与交换的技术原理如图1所示。
图1 类似GD的数据共享方式示意图Fig. 1 The data sharingmethod similar to GD
假设有3台PLC设备,PLC1的IP地址是192. 168. 1. 10,PLC2的IP地址是192. 168. 1. 11,PLC3的IP地址是192. 168. 1. 12。
PLC1与PLC2和PLC3之间的数据共享和交换的步骤如下。
①组态软件组态出PLC1有两组需要供应给PLC2和PLC3的数据组(如果PLC1需要共享PLC2的数据,则称PLC1为消费方,PLC2为供应方),数据组1包含一个Bool类型的A变量和浮点类型的B变量,数据组2包含一个Bool类型的C变量和浮点类型的D变量。
②组态软件组态出PLC2有一组需要从PLC1消费的数据组1(包含一个Bool类型的A变量和浮点类型的B变量)。
③组态软件组态出PLC3有一组从PLC1消费的数据组2(包含一个Bool类型的C变量和浮点类型的D变量)。
④把组态信息下载到PLC之中。
⑤PLC1周期性地向PLC2和PLC3发送数据。
⑥PLC2和PLC3实时地接收数据。
这种方案的优点是传输数据不用包括变量的任何信息,只需要传输数据值,因此通信效率高,但也存在很多缺点。
①组态复杂。如PLC2需要增加一个消费PLC1的数据点项,则PLC1和PLC2都需要重新组态。
②无法发现数据长度一致但类型不一致的问题。如B在PLC1中是Float类型,在PLC2中是int类型(假设用户组态错误),报文无法识别该类错误。
③无法发现顺序颠倒,如PLC1中的A、B的顺序,PLC2中的B、A顺序仍然通信正常。
④无校验或者校验简单;明文传输、难以满足日益严峻的工业信息安全要求。
2. 1总体设计
鉴于目前存在的问题,本方案应当优先实现的目标是:①较高的通信效率保证数据的实时性;②组态简单;③保证通信可靠性和安全性。
该方案的完成同样需要组态软件和固件程序的配合,在组态软件中利用设定的规则配置出PLC之间共享数据的消费和供应关系,然后连同逻辑配置下载到相应PLC设备之中。作为消费方的PLC首先向供应方的PLC发出消费请求,单个点项使用变量名和数据类型的组合来标志消费数据的信息,这就可以保证消费数据信息的唯一性。供应方的PLC查询自己的供应数据库,若消费信息存在,则周期性应答;否则应答错误。消费方在发出请求之后,则周期性接收供应信息,若一定时间收不到信息,则重新发送消费信息,设计原理如图2所示。
图2 方案设计原理图Fig. 2 The design principle of scheme
2. 2组态软件的实现
组态软件主要是定义组态规则和生成PLC之间数据共享的消费和供应关系,规则示例如在PLC1中组态PLC2#Bool#A,其含义是PLC1需要消费PLC2中的变量类型为Bool变量A。在PLC2中需要把变量A加入到共享数据库中,为了方便,可以把经常用到的I/O测点变量增加到共享数据库中。若无别的消费方PLC请求,消费信息对系统没有影响;而当PLC1中需要消费更多变量时,PLC2无需再次下载程序。
对于同一个PLC,可能既是消费方也是供应方,因此最终生成消费信息和共享数据库信息两类组态信息。消费信息的数据结构如图3所示,共享数据库以列表的形式包含所有的共享数据信息。
图3 消费信息结构图Fig. 3 The structure of consumption information
2. 3固件程序的实现
2. 3. 1固件程序模块划分
随着技术的进步,软件的应用日趋广泛,软件开发也成为系统工程,复杂软件的设计应用递归分解技术将大业务加以分解,提高程序可修改性以及可扩展性[5]。PLC固件程序也是一个包含各个子功能的程序集合,数据共享功能使用模块化的设计思想进行功能划分和分解,功能模块划分如图4所示,包含6大模块。
①配置解析模块主要是解析组态软件下发的消费信息和共享数据库信息。
②调度模块主要是控制接收、发送与PLC自身的其他模块的调度关系。
③诊断模块主要是发现请求超时、接收异常等信息。
④发送模块主要是完成消费信息的请求和提供共享数据应答发送的功能。
⑤接收模块主要是控制周期性接收消费请求信息和消费请求应答信息的管理。
⑥安全性模块主要包括数据报文的校验、加密、纠错等方式。
图4 固件程序模块Fig. 4 The module of firmware program
本文不对所有模块进行一一说明,只介绍此方案实现过程中碰到的容易出错的地方,详见2. 3. 2及其以后的章节。
2. 3. 2数据共享功能调度顺序
为便于调试,PLC厂商一般会提供强制功能。强制的含义是指在没有实际设备的情况下可以对输入、输出测点进行数据值的控制。当强制输入点时由于该输入点值为“强制值”,就相当于“真正的输入点”[6]。
PLC基本的运行机制是扫描输入数据、逻辑运算、输出控制。共享数据的消费方实际是从网络上获取供应方PLC采集的数据或者运算的结果,与本身从实际I/O测点获得的数据类似也可以成为网络I/O测点。
结合以上两点,数据共享功能的调度顺序如图5所示,否则可能会出现无法强制和消费方接收的数据更新滞后的情况。
图5 调度顺序示意图Fig. 5 The scheduling sequence
2. 3. 3共享数据变量的保持属性
由于实际运行中的PLC可能会因为掉电或者程序异常而重新启动,重启之后有些数据必须保持在重启之前的状态,否则现场会失去控制。譬如西门子的PLC内部继电器R仅用于内部,不提供外部输出。R可按保持型/非保持型设置,保持与非保持的意义如下。
保持:是指在工作电源掉电或PLC工作方式由RUN转为PROG时,存储区的内容不会丢失或被修改。
非保持:是指在工作电源掉电或PLC的工作方式由RUN转为PROG时,存储区的内容将会丢失或被修改[7]。
我们开发的PLC仍然存在这两类属性,对于组态软件生成的消费信息和共享数据库信息中的变量必须具有保持型属性(无需用户设置系统自动生成),否则极端情况下会出现现场失控现象,如PLC1需要消费PLC2中一个Bool变量A。该变量A在PLC1中参与一个连锁控制重启前为True,若A为False时触发一个事件并进行记录。当PLC1重启之后A如无特殊属性则归零为False,在没有收到PLC2发来的数据之前将利用False参与运算导致错误。有些厂家的PLC需要用户添加,而用户一旦忘记只有重启时才可能发现,平时很难测试出来,为系统埋下较大的隐患。
2. 3. 4通信安全性保障
用户数据报协议(UDP)是ISO参考模型中一种无连接的传输层协议,提供面向操作的简单非可靠信息传送服务。由于不存在数据分片和连接管理,系统开销比较小,通信带宽有效利用率要高于基于连接的通信方式;用户无需从其中接收的通信数据进行组装和判断,内部通信基于消息机制,每次收发的数据报文具有独立意义。相对传输控制协议(transmission control protocol,TCP),采用UDP可以降低用户最终数据的解释带来的额外系统开销[8]。
考虑到PLC系统资源,使用UDP协议进行数据的传输,但是UDP是一种无连接不安全的网络协议,有必要通过增加一些手段来确保数据传输的可靠性和安全性。常见的数据通信错误有损坏、重复、乱序、丢失等,本方案参考IEC 61784-3关于通信错误和对策的建议,取舍之后采用的方法如表1所示。需要说明的是,考虑到系统资源,本加密算法是极其简单的处理,而非常用的AES、DES等加密算法。
表1 通信可靠性方法Tab. 1 The measures of communication reliability
表1中,“!”表示具有该项功能。
3. 1测试环境
测试环境组成如图6所示。
图6 测试验证图Fig. 6 The testingverification
①开发的实际功能安全PLC共5个(沈阳中科博微自动化技术有限公司开发,内部型号Cybersafe)。
②采用匹配的虚拟仿真软件虚拟27个PLC,虚拟仿真软件运行于PC机上,可以实现PLC的逻辑执行、HMI通信等各种功能。
③组态软件和操作员站合为一台PC机,所有的设备采用交换机连接。
④数据共享信息组态。真实PLC1需要共享PLC2、PLC3、PLC4、PLC5以及其他27个虚拟PLC的数据信息,包括50个模拟量和50个数字量。
⑤采用故障注入的方法插入无序、重复报文,查看处理结果。
3. 2测试结果分析
根据实现原理可知,PLC1开始时需要进行数据共享信息的请求,请求成功后,4个真实PLC和27个虚拟PLC周期性向PLC1进行共享信息的发送,因此会影响PLC1的CPU负荷和网络负荷,测试结果如表2所示。
表2 主要测试项结果Tab.2 The main testing results
本文在分析现有技术优缺点基础之上,根据存在的问题,采用网络通信的方式,利用自主开发的优势,通过组态软件和固件程序的上下配合,解决了目前组态复杂、通信可靠性低等缺点,给出了实际开发中的关键问题的解决方法。
由于嵌入式系统资源的有限性,报文的加密算法比较简单。在工业信息安全日益引起重视的今天,在不引入外部防护设备的情况下,作为网络I/O的共享数据的安全性和可靠性依靠PLC自身策略的保障仍是一个尚待解决的问题。
参考文献
[1]郝久清,肖立.PLC控制系统的可靠性设计[J].自动化仪表,2005,26(11):21-24.
[2]程金良.不同PLC之间的通信技术实例[J].宝钢技术,2005(S1):40-42.
[3]曾蓉,冯继勇,丁明亮,等.国产DCS与PLC集成方案的比较及其在电厂的应用[J].自动化仪表,2009,30(12):46-48.
[4]王长栋,左先波,胥小萍.西门子S7系列PLC的MPI网络与全局数据通信[J].机械工人(冷加工),2000(11):29-30.
[5]王小峰.试论基于架构的软件设计[J].信息系统工程,2015(3):36.
[6]姜阳,彭赛.西门子PLC强制及保持功能应用[J].沈阳大学学报,2002,14(4):90-92.
[7]赵静. PLC内部保持/非保持继电器设置的技巧[J].机床电器,2004(4):34-35.
[8]赵飞,叶震. UDP协议与TCP协议的对比分析与可靠性改进[J].计算机技术与发展,2006,16(9):219-221.
Design and Implementation about Non-real-time Data Sharing among PLCs
赵艳领
(机械工业仪器仪表综合技术经济研究所网络控制研究中心,北京100055)
摘要:针对PLC之间非实时数据共享组态复杂、通信不可靠等问题,提出了一种PLC之间非实时数据共享方案。方案的实现需要组态软件和PLC固件程序的配合,组态软件主要负责配置各个PLC之间数据共享的关系,固件程序解析组态软件下发的配置信息,采用主动请求的方式建立PLC与PLC之间的数据共享关系。该方案采用UDP协议,并考虑通信数据的完整性与机密性,同时详细分析了调度、数据属性、数据可靠性保证的实现。测试验证了该方案满足设计目标。
关键词:可编程控制器用户数据报协议数据完整性数据共享可靠性信息源
Abstract:Aiming at the problems of the complexity of software configuration and communication unreliability in non-real-time data sharing,a new policy about non-real-time data sharing among PLCs is proposed. The implementation of the policy needs the cooperation between configuration software and PLC firmware program. The configuration software is responsible for deploying the relation about data sharing among the PLCs; the PLC firmware program issues the configuration information and builds the relation about data sharing by sending request actively. User datagram protocol(UDP)is used in this scheme,and data integrity and data confidentiality are also considered,meanwhile,the details about scheduling,data attributes and the implementation of data reliability insurance are analyzed. The policy is proved to accord with the design target by testing.
Keywords:PLCUDP Data integrity Data sharing Reliability Information sources
中图分类号:TH7; TP319
文献标志码:A
DOI:10.16086/j.cnki.issn1000-0380.201603003