控制器间数据共享方案的设计与实现
2017-02-27徐卫峰牛洪海
臧 峰, 蔡 丹, 徐卫峰, 吴 波, 牛洪海
(南京南瑞继保电气有限公司,江苏 南京 211102)
控制器间数据共享方案的设计与实现
臧 峰, 蔡 丹, 徐卫峰, 吴 波, 牛洪海
(南京南瑞继保电气有限公司,江苏 南京 211102)
针对当前控制器之间数据共享组态复杂、通信不可靠等问题,设计了一种基于UDP协议的数据共享方案。该方案需要组态工具和控制器固件程序相配合,组态工具负责配置控制器之间数据共享的逻辑,控制器固件程序负责解析组态软件下发的组态信息,以实现数据共享。源控制器负责采用UDP广播的方式将共享数据发送到网络上,接收控制器负责接收、解析数据。该方案具有组态简单、程序可实时修改的优势。
控制器; 数据共享; 通信; 可靠性;UDP;OPC;TCP/IP; 组态工具
0 引言
工业过程控制系统通常由工程师站、操作员站、过程控制器(或PLC)和现场生产设备所组成[1]。随着工业自动化控制水平的不断提高,对过程控制器间进行数据交互的需求也越来越大[2]。由于企业扩展生产线或对原有生产线进行升级改造,可能会导致一条生产线上并存西门子、ABB、施耐德和通用等多个厂家的控制系统。这种情况下,通常采用OPC集成技术,实现不同厂家控制器之间的数据共享[3]。一般过程控制器厂家都会提供本品牌控制器间数据共享的解决方案,例如西门子S7-300控制器间采用全局数据包(globaldata,GD)的方式[4]。但是这种方案存在通信速率低、组态繁琐、限制报文长度、明文传输、校验简单、不支持冗余传输等问题[5]。
源控制器采用“源控制器号+组态页号+资源号+数据类型+数据品质”的数据格式,使用高效的用户数据报协议(userdatagramprotocol,UDP)将源数据广播到网络上。接收控制器监听网络广播报文,将接收的广播报文解析,并查看是否有本控制器需要的共享数据。
1 方案设计与实现
1.1 总体设计
基于目前控制器之间数据共享存在的问题,本文提出了一种基于UDP协议的数据共享方案,以实现以下目标:①组态简单,且能实现数据在线解析;②采用较高效率的UDP协议,实现数据的快速传输;③保证数据传输的可靠性和安全性。为了便于理解,定义源控制器通过UDP广播发送共享数据为“上网点数据”,定义接收控制器接收网络广播报文数据为“下网点数据”。
该方案需要组态工具和固件程序的配合,才能实现数据共享的功能。组态工具在源控制器组态中配置上网点数据,接收控制器配置下网点数据,然后把组态在线下载到控制器中。控制器实时解析配置文本,实现数据共享功能。本设计的方案原理如图1所示。处理器采用TI公司的C674X系列双核CPU,ARM运行Linux操作系统,并且提供TCP/IP协议栈,数字信号处理器(digitalsignalprocessor,DSP)负责算法页面的解析和控制算法的执行。源控制器DSP把上网点数据压入循环队列,通过共享内存的方法把数据传输到ARM,然后ARM把上网点数据通过UDP广播到以太网上。接收控制器监听以太网数据,接收网点数据,并解析是否需要存储这些数据。如果需要存储,就把下网点数据压入ARM数据共享循环队列,通过共享内存传输到DSP。
图1 方案设计原理图
1.2 组态软件设计
组态软件定义组态规则并生成上网点和下网点的关系。例如:图1中的源控制器(控制器号=1)设置上网点数据,接收控制器(控制器号=2~n)设置下网点数据。在组态中,控制器既可以作为源控制器为其他控制器提供上网点数据,又可以接收其他控制器广播的下网点数据。
1.3 固件设计
随着计算机技术的不断发展,软件开发成为一项复杂的系统工程[5]。设计复杂软件时,使用递归分解技术将大业务予以分解,提高了程序可修改性以及可扩展性[6]。本文设计的控制器固件程序是一个包含各个子功能的程序集合。采用模块化的设计思想对数据共享功能进行模块化设计与分解,主要包括以下6大模块。
①接收模块,负责接收控制器监听网络广播报文,将广播在以太网上的共享内存数据保存下来,并解析是否为本控制器所需的共享数据。
②发送模块,负责把上网点数据组包,然后进行网络广播。
③冗余模块,负责把数据通过A/B双网发送,接收控制器对A/B双网接收到的冗余数据进行解析,并把重复报文丢弃。
④配置文件解析模块,负责实时解析组态软件下发的组态文本。
⑤安全模块,负责进行数据报文的校验、加密、纠错等。
⑥诊断模块,负责诊断接收到的数据品质,检测源控制器是否掉线。
固件程序模块如图2所示。
图2 固件程序模块示意图
根据共享数据的流向,数据共享功能模块设计可以分为以下4部分:①源控制器DSP侧设计;②源控制器ARM侧设计;③接收控制器ARM侧设计;④接收控制器DSP侧设计。以下对这4部分设计进行介绍。
1.3.1 源控制器DSP侧设计
源控制器DSP侧周期性地执行算法页面,在算法页面开始执行时,设置一个全局变量g_AlgorithmTaskRunFlag为“1”,通知源控制器算法页面正在执行。当算法页面执行时,如果有上网点数据配置,就把数据压入上网点循环队列;当算法页面执行完毕后,设置全局变量为“0”。源控制器DSP侧上网点算法周期性检查全局变量是否为“0”,为“0”就把上网点循环队列中的数据取出,并通过共享内存传输给ARM。由于是使用循环队列的数据结构作为上网点数据的基本结构,因此如算法页在下一个执行周期增加或删除了上网点数据,可以立刻通知ARM侧上网点数据发生了改变。
1.3.2 源控制器ARM侧设计
源控制器ARM侧也使用循环队列作为基本数据结构存储上网点数据。当DSP侧通过共享内存发送上网点数据时,需要把数据压入循环队列;而通过UDP广播上网点时,需要把数据从循环队列中取出。为了避免数据发送不完整,当通过共享内存接收从DSP侧发送的上网点数据时,设置全局变量g_CpuTransOutDataProcessing为“1”,处理完成后设置为“0”。通过UDP广播线程周期性检查变量标志,为“0”时检查上网点循环队列是否有数据需要发送。如果有,则组包通过A/B网广播发送。
1.3.3 接收控制器ARM侧设计
接收控制器ARM侧由于在起始时刻不知道本控制器DSP需要哪些下网点数据,所以考虑通过DSP把本控制器需要的下网点信息在算法页面执行完毕后,形成一份镜像数据,通过共享内存传输到ARM。ARM监听到网络广播报文后,将网络广播数据与DSP传输的镜像数据进行逐个比较判断。如果是本控制器需要的数据,就保存下来,通过共享内存传输到DSP;如果不是,就丢弃。
1.3.4 接收控制器DSP侧设计
接收控制器DSP侧接收ARM通过共享内存传输的下网点数据。如果有接收到数据,就解析这些数据,并把输出存储到相应的内存地址。
2 通信分析
UDP协议是ISO参考模型中一种无连接的传输层协议,提供面向操作的简单非可靠信息传输服务[5]。UDP协议不存在数据分包和组包的管理开销,能够实现数据的高效传输,而且通信带宽利用率比TCP协议高[7]。考虑到控制器使用嵌入式操作系统、系统资源有限等限制,所以使用UDP协议进行数据传输。但是UDP协议没有连接过程,传输过程不可靠,需要增加额外手段来保证数据传输的可靠性和安全性。本文设计的数据共享方案采用了A/B双网冗余方案,可以大大降低丢包概率;使用CRC32算法进行发送数据校验,保证数据的完整性和可靠性。通信可靠性方法如表1所示。
表1 通信可靠性方法
表1中,“√”代表具有此功能。
3 试验验证
3.1 试验环境搭建
试验环境如图3所示。
图3 试验环境示意图
具体配置由以下5个部分组成。
①真实控制器采用由南京南瑞继保电气有限公司研制的PCS-9150过程控制器,此控制器具备上述的数据共享功能。
②采用匹配的虚拟控制器软件,此软件运行在PC机上,具有和真实控制器相同的功能。
③组态软件和HMI站位于同一台PC机上,组态软件能够实时更新控制器中运行的算法页,HMI站可以监视数据变化。
④所有设备都通过A/B双网连接到2台交换机上,实现数据的交互。
⑤组态中上网点和下网点配置如表2所示。
表2 网点配置表
3.2 测试结果分析
通过采用网络抓包工具MMS发现,无论配置多少个上网点,控制器在广播上网点时都是通过一帧报文上送,所以控制器配置的上网点数量不会对网络负荷有太多影响。没有配置上网点的控制器不会发送网络广播报文。主要测试结果如表3所示。
表3 主要测试结果
4 结束语
本文在分析现有控制器数据共享方案优缺点的基础上,提出了基于UDP网络广播报文形式的数据共享方案。利用自主研发的组态工具和控制器固件程序的优势,解决了目前其他品牌控制器组态复杂、可靠性低的缺点。
本文提出的控制器间共享方案中,控制器下网点数据没有保存到存储器中,控制器重启会导致数据清零。如果组态逻辑中根据下网点开关量的状态进行逻辑运算,可能会有跳变现象发生。控制器之间数据传输没有加密功能,容易被非法用户窃取。以上不足可以在后续研发中加以完善。
[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] 赵艳领.PLC之间非实时数据共享设计与实现[J].自动化仪表,2016,37(3):9-12.
[6] 王小峰.试论基于架构的软件设计[J].信息系统工程,2015(3):36.
[7] 赵飞,叶震.UDP协议与TCP协议的对比分析与可靠性改进[J].计算机技术与发展,2006,16(9):219-221.
DesignandImplementationaboutDataSharingamongControllers
ZANGFeng,CAIDan,XUWeifeng,WUBo,NIUHonghai
(Nari-RelaysElectricCo.,Ltd.,Nanjing211102,China)
AdatasharingschemeusingUDPprotocolisdesigned,whichisbasedontheproblemthatthedatasharingconfigurationiscomplexandthecommunicationisnotreliable.Thisschemerequiresthecooperationofconfigurationtoolandcontrollerfirmware.Theconfigurationtoolisresponsiblefordeployingtherelationaboutdatasharinglogic,andthefirmwareprogramisresponsibleforparsingconfigurationsoftwareconfigurationinformationtorealizedatasharing.ThesourcecontrollerisresponsiblefortransmittingtheshareddatatothenetworkbyUDPusingbroadcastmode,andthereceivingcontrollerisresponsibleforreceivingandanalyzingthedata.Theschemehastheadvantagesofsimpleconfiguration,andcanbemodifiedinrealtime.
Controller;Datasharing;Communication;Reliability;UDP;OPC;TCP/IP;Configurationtool
臧峰(1983—),男,硕士,工程师,主要从事电力系统自动化产品的研发工作。E-mail:zangf@nrec.com。
TH7;TP
ADOI: 10686/j.cnki.issn1000-0380.201701012
修改稿收到日期:2016-08-10