臧 峰,吴 波,牛洪海,陈 俊
(南京南瑞继保电气有限公司,江苏 南京 211102)
数据采集广泛应用于状态监控、故障诊断、误差补偿等工业过程控制领域的各个阶段。伴随中国制造2025 的提出,工业化和信息化融合进入了全新阶段[1-2]。以太网作为当今局域网通信的通用标准,得到了广泛的应用,并且应用于工业控制领域,形成了工业以太网。实时工业以太网作为工业过程控制通信领域研究的热点[3],具有传输距离长、抗干扰能力强、性价比高等一系列优点,因此广泛应用于工业过程控制领域。文献[4]介绍了几种常用的工业以太网及其协议接口分析。文献[5]提出了工业实时以太网(ethernet powerlink,EPL)协议的分析,设计并实现了三轴电机的通信控制和实时性能测试。文献[6]提出了一种基于ARM 的工业监控系统,并通过无线传输实现温湿度数据的上送。以上文献只考虑了本地数据的采集和控制,没有考虑当现场设备距离控制器较远时,无法实现对现场数据的实时采集和控制指令的输出。因此,本文提出了一种基于工业以太网的远程数据采集和控制的方法,以解决远程设备的监控问题。
随着科学技术的进步和工业控制技术的发展,对现场设备进行远程控制的需求越来越强烈,而现场的控制环境也随之复杂化。输入输出(input output,I/O)模块的应用使得对现场设备的控制得以实现。并行冗余协议(parallet redundancy protocol,PRP)系统结构如图1 所示。
图1 PRP 系统结构图Fig.1 Structure of PRP system
I/O 模块通常包括开关量输入(digital input,DI)、开关量输出(digital output,DO)、模拟量输入(analog input,AI)、模拟量输出(analog output,AO)和串口通信(serial communication,SC)模块,是分布式采集系统中的关键部件。通过I/O 模块可以采集现场设备就地数据,有效提高数据采集的品质;同时,通过指令输出,实现对设备的现场控制。使用I/O 模块对现场设备进行控制和数据采集过程中,存在一定的局限性。高可用性无缝冗余协议(high availability seamless redundancy,HSR)系统结构如图2 所示。
图2 HSR 系统结构图Fig.2 Structure of HSR system
例如,当现场设备距离控制器较远时,无法通过控制器实现对现场设备的数据采集和输出控制。此时需要通过远程采集和控制,以实现对现场设备的监控。因此,本文提出一种用于远程数据采集和控制的方法。该方法通过组态工具,根据现场需求进行I/O 模块配置,能够提供定制化的配置功能,满足不同的现场控制需求。同时,采用冗余以太网进行远程通信,保证控制过程和数据采集过程的高效、可靠。冗余通信可根据组态工具配置实现PRP 或HSR。PRP/HSR 冗余网络协议的特点是网络冗余,但是应用层只收到一份数据,从而降低了嵌入式软件应用层处理报文的压力[7-9]。
PRP 协议的实现依赖于支持PRP 的网络节点。每个网络节点具有2 个独立运行的网络物理端口,并且这2 个端口连接2 个独立的交换机[10]。如图1 所示,网络节点应用层通过用户数据报协议(user datagram protocol,UDP)或传输控制协议(transmission control protocol,TCP),通过2 个物理端口把数据独立发送出去。目的节点把先接收到的数据发送给应用层,后到的数据则丢弃[11]。因此,任何一个网络端口发生故障,都不会导致网络通信中断,且应用层只收到一份数据,也不会增加系统处理报文的负担。
HSR 实现原理与PRP 基本相同,也是依靠2 个独立运行的网络端口实现冗余。只不过这2 个端口是通过环形方式建立连接[12]的。如图2 所示,支持HSR 的网络冗余端口同时向环网发送UDP 或TCP 报文。因此,接收方根据不同情况对报文进行处理。
①判断接收报文是否为广播报文或组播报文,如是,则接收此报文并通过另外一个端口转发。
②如不是广播报文或组播报文,判断目的地址是不是本地地址。如果不是,通过另外一个端口转发。如果目的地址是本地地址,则进一步判断此报文是否是接收到的第一帧报文:如是,则转发给应用层;如不是,则丢弃。
组态工具根据现场需求进行远程I/O 模块的配置,包括I/O 模块的槽位号、I/O 模块的类型、子类型和版本号,并把此配置文件下发给控制器。控制器接收到配置文件后进行在线解析,并与内存中存储的配置文件校验码进行对比。如果校验码一致,说明是组态工具重复下发的配置文件,不进行内存更新;如果不一致,则更新控制器中的内存信息,并把此配置文件通过冗余以太网转发给远程IOLINK 模块。
远程IOLINK 模块接收到控制器通过冗余网络下发的组态文件后,也进行在线解析配置文件,并与本地内存保存的配置文件校验码进行比较。如果校验码一致,说明是控制器重复下发的配置文件,不进行内存更新;如果不一致,则更新远程IOLINK 中的内存信息。远程IOLINK 在数据交互报文中周期性地上传本地存储的配置文件校验码信息,以防止因配置文件丢失而导致的控制器与远程IOLINK 中信息不匹配的问题。
数据交互协议包括两层协议:①控制器与远程IOLINK 模块之间的数据交互;②远程IOLINK 模块与I/O 模块之间的数据交互。
控制器与远程IOLINK 模块之间的数据交互包括周期性数据交互和非周期性数据交互。周期性数据交互是指控制器周期性下发给远程IOLINK 模块的查询数据指令和控制输出指令。远程IOLINK 接收到控制器下发的指令后,进行数据报文的解析,并把控制指令存储在本地内存中;同时,把本地内存中采集的I/O 模块数据组包反馈给控制器。非周期性数据交互是指一些突发性的数据交互。例如:当远程IOLINK 模块采集到DI 的事故序列(sequence of event,SOE)时,远程IOLINK 模块在周期性反馈报文中置标记位通知控制器有SOE 数据。控制器接收到此标志位后会下发一帧非周期性查询报文,以采集远程IOLINK 模块中存储的SOE 信息。
远程IOLINK 模块与I/O 模块之间的数据交互也包括周期性和非周期性数据。远程IOLINK 与I/O 模块之间通信的实时性和可靠性,主要取决于物理层的通信速率和数据链路层的调度策略。应用层实现了I/O 模块实时数据或非实时数据的解析,数据链路层实现了数据的循环冗余校验(cyclic redundant check,CRC),物理层实现了串口数据的编解码功能。远程IOLINK 模块周期性地下发控制指令和查询指令,I/O模块接收到此指令后进行解析并反馈数据。组态工具可以直接与远程IOLINK 模块进行交互,发送查询I/O模块内存、设置I/O 模块变量等非周期性数据。I/O模块包括一个微控制器(micro control unit,MCU),通过DMA 实现了数据的采集和传输。详细设计可参考文献[13]。
控制器和远程IOLINK 模块使用了Xilinx 公司的Zynq 芯片。此芯片具有2 个ARM 芯片和一个现场可编辑逻辑门阵列(field programmable gate array,FPGA)。ARM 芯片运行QNX 实时操作系统,并通过FPGA 扩展6 路冗余I/O 总线。每路总线都实现了5 Mbit/s 的高速串口通信[14]。
为了实现上述功能,需要对各个功能进行详细分析,并进行软件设计。组态工具与控制器时序如图3所示。
图3 组态工具与控制器时序图Fig.3 Time sequence diagram of configuration tool and controller
通过组态工具进行I/O 模块配置,并将配置文件下发给控制器。组态工具是用于可视化生成I/O 模块配置文件的工具。通过组态工具,可以根据现场的实际需求进行I/O 模块的可视化配置,并生成对应的配置文件。控制器对接收的配置文件进行在线解析并生成内存镜像数据。控制器接收到配置文件后,根据自定义格式进行解析,并生成I/O 模块的类型、输入数据和输出数据的内存镜像。控制器还可以将接收的配置文件存储在本地存储器(例如FLASH)中,以便控制器重启后进行重新解析。此外,控制器还可以根据配置文件对本地文件进行更新。当经过CRC 发现接收到的配置文件与本地存储的文件不一致时,对本地配置文件进行更新。控制器在收到远程IOLINK 反馈的采集数据后,将其存储至控制器内存镜像。
控制器与远程IOLINK 时序如图4 所示。
图4 控制器与远程IOLINK 时序图Fig.4 Time sequcnce diagram of controller and remote IOLINK
控制器收到组态工具下发的配置文件后,将接收的配置文件下发给在线的远程IOLINK 模块。控制器首先对远程IOLINK 模块进行在线监测,通过在线监测确定远程IOLINK 模块是否在线。具体方案如下。
控制器定期向远程IOLINK 模块发送数据包进行在线监测。例如,可以间隔1 s 进行一次。控制器收到远程IOLINK 模块的响应报文后,将远程IOLINK 模块标志为在线。远程IOLINK 模块对接收的配置文件进行在线解析并生成远程IOLINK 的内存镜像。当远程IOLINK 模块接收到控制器下发的配置文件后,首先进行在线解析,生成I/O 模块在远程IOLINK 中的内存镜像,包括输入数据、输出数据和参数。与控制器的内存镜像相比,远程IOLINK 内存镜像中多了参数项。其原因是远程IOLINK 模块需要把参数数据下发给I/O 模块,以便I/O 模块根据参数进行配置和运行。远程IOLINK 模块周期性地与其所管辖的I/O 模块进行高速(例如20 ms)串口通信,实时采集I/O 模块的数据,并把控制器下发的控制指令下发给I/O 模块。
针对上述设计的功能,进行在线更新远程I/O 模块、冗余网络、数据传输功能测试。
通过组态工具,对在线修改远程I/O 模块类型、增加I/O 模块、删除I/O 模块的功能进行测试,并通过组态工具实时监测修改功能是否起效。通过测试发现,I/O 模块配置文件的在线更新功能正常。
通过组态工具将系统网络设置为PRP 或HSR 模式,并按照图1 或图2 进行网络架构链接。在远程I/O 模块数据正常采集的情况下,拔掉任一端口的网络,测试发现I/O 模块数据能够正常刷新,表明冗余网络可以在网络单点故障的情况下正常工作。通过网络抓包工具wireshark 抓包分析可知,不管是在PRP 模式还是HSR 模式,发送侧通过2 个端口同时发出数据报文。
通过上述2 个测试,已对周期性数据传输功能进行了测试。因此只需要进行非周期性数据的测试。通过DI 模块进行SOE 功能测试以及wireshark 抓包发现,在DI 进行SOE 功能测试时,远程IOLINK 上传了标志位,并且控制器下发了查询报文。
本文设计并实现了一种基于工业以太网的远程数据采集和控制方法。该方法实现了远程I/O 模块数据的实时采集和控制,扩展了控制器的应用场景。通过对现场数据的实时采集和持久化存储操作,有利于现场设备数据的分析和优化。