基于双线以太网技术的Modbus/TCP网关系统研究
2022-11-22戚尔江彭道刚王丹豪王宜雪汪皓然
戚尔江,彭道刚,王丹豪,王宜雪,汪皓然
(上海电力学院自动化工程学院,上海发电过程智能管控工程技术研究中心,上海 200090)
0 引言
智能制造、工业物联网和工业4.0等行业发展需求表明,工业以太网在现场总线基础上已经广泛应用于工业、能源和楼宇自动化等行业。工业以太网是基于IEEE802.3通信协议规范,可以将现场侧传感器数据与互联网相连接,同时也是物联网发展的必然趋势。工业以太网种类较多,行业中较为常用的工业以太网协议主要有Modbus/TCP、HSE、Profinet和Ethernet/IP等。从目前技术发展来看,采用SPE(single pair ethernet,双线以太网)技术实现工业以太网通信更具行业发展趋势。双线以太网是采用一对双绞线替换传统的四对双绞线。目前SPE技术较多应用在汽车行业,主要有IEEE802.3bw,通信带宽为100 Mbit/s,最长通信距离为15 m。另一种为IEEE802.3bp,通信带宽为1 000 Mbit/s,最长通信距离为15 m。近期行业内又推出一种IEEE802.3cg,遵循IEEE802.3cg,10BASE-T1L通信标准,通信带宽为10 Mbit/s,最长通信距离为1 000 m。前两种满足汽车行业需求,而IEEE802.3cg是为工业通信量身定做的一款通信方案[1-2]。
目前双线以太网在汽车工业领域广泛应用,如图1所示,为双线以太网进入市场时间表[1]。从图1可以看出2015年双线以太网技术开始在汽车工业领域应用。2022年开始在流程工业中有所涉及,2025年将在铁道运输行业和机器人、工业自动化领域应用,2028年将在楼宇自动化行业应用。
图1 双线以太网进入市场时间表
根据双线以太网的发展趋势,在将来必然会有大量双线以太网远程I/O设备或者双线以太网传感器等边缘终端设备进入工业领域。而较多办公电脑、交换机、路由器和网关等设备由于成本、性能和时间问题,难以短时间进行更新换代,仍然维持四对双绞线的常规以太网接口设计。所以仅支持双线以太网的边缘终端设备接入网络,需要双线以太网网关进行转换。另一方面,随着大数据和边缘计算的需求,网关系统能同时支持多平台的性能要求尤为重要。不同公司之间需要进行合作,现场侧边缘终端的数据需要实时共享。考虑到不同公司的平台接口差异性,单一接口的网关设备很难满足公司之间的合作需求。如果没有支持多接口转发能力的网关转换设备,则需要合作公司进行平台硬件升级,花费更多的成本。本系统研究的网关设备支持通信协议为Modbus/TCP的边缘终端接入,可以扩展为CAN输出、RS485输出、串口输出、MQTT对接阿里云物联网云平台输出等[3]。网关设备可以将接收的数据针对不同通信接口进行直接转发,有效避免不同平台从数据库共享数据的延迟性和复杂性,提升网络通信的安全性。
因此,本文研究基于双线以太网技术的Modbus/TCP网关系统,具有非常重要的实用价值和研究价值,是未来工业应用的必然趋势。
1 Modbus/TCP双线以太网网关系统架构研究
本文所研究的Modbus/TCP双线以太网网关系统作为Modbus/TCP协议[4]Client客户端,配有传感器的边缘终端设备作为Modbus/TCP协议Server服务器端。Server端可以实时采集传感器数据,网关系统Client端用于建立连接,从Server端读取寄存器数据。网关系统采用Modbus/TCP协议读取边缘终端采集的数据,并对接收的数据进行缓存和转发。
图2为Modbus/TCP网关系统框图。双线以太网网关系统采用Cortext-A7内核芯片作为网关系统核心控制器。Modbus/TCP协议物理层通信PHY采用双线以太网技术,实现单对双绞线传输Modbus/TCP协议帧数据,系统兼容常规以太网PHY。支持双线以太网接口PHY和常规以太网接口PHY无缝切换,PHY芯片与主控制器之间采用通用RMII接口,切换PHY芯片时内核驱动自动切换。可以接收支持双线以太网接口或者常规以太网接口的边缘终端设备传感器数据。
图2 网关系统框图
网关系统可以将接收的传感器数据转发到相应接口的平台,支持转发的平台包括串口接口平台、RS485接口的平台、CAN总线协议接口的管理平台和MQTT协议接口的阿里云物联网云平台[5]。电源模块采用3.3 V电源供电,电路较简单,不作为本文研究重点。CAN总线通信接口芯片采用TJA1050高速CAN总线收发器[6-8]。RS485和串口通信接口采用TTL电平转RS485和TTL转串口方式设计,采用的芯片分别为SP3485和SP3232芯片设计。MQTT协议接口和Modbus/TCP协议接口共用一个PHY网络通信接口,可以选择常规以太网接口PHY芯片或者双线以太网接口PHY芯片所设计的通信模块。常规以太网接口芯片采用LAN8720A PHY芯片设计,双线以太网芯片采用最新研发的SPE PHY芯片设计。
边缘终端将各通道传感器数据采集到边缘终端并存储到寄存器中,初始状态下边缘终端并不主动对外发送数据。由于通信协议采用Modbus/TCP协议,数据提供方一般作为Server端,考虑将提供数据的边缘终端设备作为Modbus/TCP Server端。基于Cortex-A7内核主控芯片所设计的网关数据来源是通过Modbus/TCP协议所读取的边缘终端设备数据,负责从终端设备获取传感器数据,将网关设备设计成Client端。Modbus/TCP具备读线圈、写单个线圈、写多个线圈、读离散量输入、读写单个或者多个输入寄存器和保持寄存器等功能。网关设备作为Modbus/TCP协议Client端,需要根据Server端存储数据的寄存器种类和帧格式读取相应的寄存器数据。Server端将读取的数据转发到串口或者RS485、CAN接口,同时可以打包成MQTT协议传输到阿里云物联网云平台。可以有效解决双线以太网类型边缘终端兼容性问题,增强平台扩展性。
2 Modbus/TCP双线以太网网关系统硬件研究
网关系统硬件主要包括系统电源模块、常规以太网模块、双线以太网模块、串口/RS485模块、CAN通信模块、Boot启动项设置模块和SD卡模块等[9],各通信模块之间根据需求进行Modbus/TCP协议数据转发。SD卡模块配合Boot启动项用于设置不同启动方式,方便系统应用和驱动程序调试。
2.1 网络通信接口设计
图3为网关系统网络通信接口框图。网络通信接口配有双线以太网PHY接口和常规以太网PHY接口,2种网络通信接口根据接入网关设备的边缘终端接口类型进行二选一即可。双线以太网PHY接口采用单对双绞线,用于接收双线以太网接口的边缘终端数据,网关兼容常规以太网接口的以太网边缘终端设备。本文研究的网关设备系统中,常规以太网PHY和双线以太网PHY均采用RMII接口与Cortex-A7内核主控制器MAC相连接。网络通信接口是Modbus/TCP通信协议的物理层载体,是基于TCP/IP通信协议的一种应用层通信方式。实现网络通信需要PHY和MAC 2部分,PHY芯片主要将外部模拟电气信号进行解码,然后通过RMII接口发送至MAC外设。本文所研究的网关设备内部已经集成了MAC外设,无需集成MCA和PHY为一体的网络通信芯片,有效降低网络通信部分电路设计复杂度。
图3 网关系统双网口设计框图
RMII接口主要负责Cortex-A7内核控制与PHY之间数据传输,而PHY芯片在传输数据之前需要对内部寄存器进行相应的配置,还需要MDIO控制接口配合,MIDO控制接口由2根线构成,其中一根用来读取PHY芯片内部寄存器数据的线为MDIO,另一根用来同步PHY芯片寄存器读取时序的时钟线为MDC。通过RMII接口和MIDO接口相互配合实现Modbus/TCP网关和边缘终端设备之间数据传递。
图4为Modbus/TCP双线以太网网关系统双网口设计电路原理图。图4(a)为常规以太网模块设计电路原理图[10],可以看出PHY芯片与MAC直接主要连接的数据线包括TXD0、TXD1、RXD0、RXD1、MDIO和MDC等。图4(b)为双线以太网模块设计电路原理图,与MAC之间的通信连接同样采用RMII接口,和常规以太网的电路连接较相似,主要差异在于PHY芯片的地址线设置。2片PHY芯片时钟均由主控制器提供50 MHz时钟信号,所以在设置接口电路时应将两者均设置为Master模式。
(a)常规以太网设计电路原理图
网络通信接口硬件电路可以用作Modbus/TCP通信和MQTT协议通信,本文研究的网关系统以阿里云物联网云平台为例进行MQTT协议转发研究。
2.2 Modbus/TCP网关系统CAN通信模块研究
CAN(controller area network,控制局域网络)通信已经在汽车行业、新能源充电桩、船舶领域、医疗领域和智能家居等较多领域广泛使用,为使边缘终端接入支持CAN通信接口的平台。本文所研究的网关设备需要支持CAN通信,网关系统控制器已经集成CAN外设。不同CAN网络通信速率可能存在差异,在进行数据传递时需要通过速率转换网关设备进行网络内部速率转换。
图5为网关系统CAN总线转发图。CAN-125 kbps和CAN-150 kbps属于2个不同的CAN网络,2个网路之间交换数据时需要通过网关设备1进行速率转换。同样,CAN-500kbps网络和CAN-125kbps之间有数据交换时也需要通过网关设备2进行速率转换。仅支持双线以太网技术的Modbus/TCP协议边缘终端设备如果需要接入CAN网络系统平台,就需要设计Modbus/TCP协议转CAN网络协议的双线以太网网关转换设备,并且双线以太网网关转换设备需要根据接入的CAN网络速率进行速率匹配设定。
图5 网关系统CAN总线转发图
图6为CAN模块原理图,CAN总线TX和RX引脚分别是CAN接口接收和发送引脚,2个引脚需要和Cortex-A7主控制器对应CAN引脚相连接,实现Modbus/TCP协议转CAN协议接口数据收发。在CAN接口输出端需要接入一个匹配电阻,一般为120 Ω,CAN总线芯片供电电压5 V。
图6 网关系统CAN通信电路原理图
2.3 Modbus/TCP网关系统串口和RS485模块研究
网关系统也可以通过串口模块或者RS485模块,将Modbus/TCP协议帧格式数据转换为串行数据进行传输,对接到支持串口或者RS485通信接口的平台。
图7为网关系统RS485/串口电路原理图。网关系统串口模块和RS485模块数据来源均为Cortex-A7内核主控制器所引出的UART3_TXD和UART3_RXD管脚,通过图中标示为“485_232”的接口跳线帽进行串口或者RS485通信接口选择。由于共用一个串口接口,同一时刻可以选择串口或者RS485中的一种电气接口作为通信接口。
图7 网关系统RS485/串口电路原理图
3 Modbus/TCP网关系统软件研究
3.1 系统软件框架研究
图8为网关系统软件用例图。网关系统软件主要实现网关的各功能:包括接收边缘终端设备数据上传功能、CAN总线接口转发功能、MQTT阿里云平台数据转发功能和RS485/串口接口转发功能等。
图8 网关系统软件用例图
首先边缘终端和网关建立连接,进行数据上传。网关通过Modbus/TCP协议接收边缘终端设备上传的数据,然后通过Modbus/TCP协议接口、CAN总线接口、MQTT协议阿里云物联网接口和RS485/串口接口进行转发,分别接入支持Modbus/TCP协议接口管理平台、CAN总线接口的管理平台、阿里云物联网管理平台和RS485/串口接口管理平台。
3.2 连接建立软件研究
由于网关系统作为Modbus/TCP客户端,边缘终端系统作为Modbus/TCP服务端[11],故由网关系统首先发起连接请求。网关系统采用Linux操作系统,支持多线程任务运行。为充分发挥Linux系统多线程通信的优势,网关系统采用多线程技术实现Modbus/TCP通信、CAN总线通信、RS485/串口通信、MQTT通信等。
网关系统控制器内核程序自带CAN总线驱动,在系统设备树中启用驱动程序即可使用CAN总线通信。RS485/串口共用一个片内外设输出,外部接口采用RS485和SP3232进行电气转换,驱动为内核自带驱动,同一时刻只可二选一进行通信。图9为网关系统软件流程图。网关系统首先手动初始化CAN总线通信频率,通信频率根据需要接入的CAN总线平台进行设定,将网关系统中CAN通信的频率和待接入的CAN总线平台设为相同的通信频率。然后启动网关程序,网关程序属于Modbus/TCP客户端,需要通过IP地址和端口号连接Modbus/TCP服务端。网关程序启动时通过外部参数输入Modbus/TCP服务端IP和端口号,服务端和客户端连接成功之后才可以顺利进行数据读写等操作。
图9 网关系统软件流程图
初始化程序中主要进行Modbus/TCP服务器程序线程和阿里云云平台SDK包接口线程启动。
err=pthread_create(&ntid,NULL,modbusTCPServer_
thread_exe,(void*)pModbusTcpData);
err=pthread_create(&ntid,NULL,
iot_ali_thread_exe,(void *)pModbusTcpData);
ModbusTCPServer_thread_exe和iot_ali_thread_exe为具体的线程初始化程序,主要进行连接初始化和参数初始化等任务。ModbusTCPServer_thread_exe线程中主要实现服务端连接程序初始化、Modbus/TCP线圈和保持寄存器等专有寄存器使用C语言方式实现地址映射。iot_ali_thread_exe初始化线程中主要实现阿里云物联网平台登录SDK包初始化、MQTT客户端初始化、服务器地址和端口初始化和三元组初始化。阿里云物联网平台三元组包括product_key、device_name和device_secret,用于网关设备连接阿里云物联网平台凭证。网关设备配置正确的三元组数据即可正常连接阿里云物联网平台产品对应的device设备,最后进入循环转发数据的流程,数据来源为Modbus/TCP客户端接收到服务端的本地缓存数据。
当网关系统Client端和边缘终端Server端建立Modbus/TCP通信连接之后,网关系统启动读寄存器命令。边缘终端作为Server端,接收到Client读数据请求命令,将传感器数据打包成Modbus/TCP协议,作为响应数据返回给网关Client端。Client端接收到各通道传感器数据,将原始数据缓存到网关本地存储器。为保证数据传输实时性,网关本地接收到的数据立刻通过CAN和RS485/串口进行数据直接转发。考虑到不同网络之间数据帧格式差异性,转发传输的数据格式均采用通道编号和该通道编号数据一一对应的数据帧格式进行数据传输。当其他上位平台接收到CAN或者RS485/串口转发的数据后,可以根据数据帧格式解析通道和对应通道的采样数据。
当网关系统和阿里云物联网平台建立连接之后,直接读取网关接收到的缓存数据。并将缓存数据打包成MQTT协议帧格式,通过阿里云物联网平台建立好产品和设备后下载的SDK包、API接口函数进行云平台数据发送。
4 实验验证
针对本文所研究的网关系统,搭建实物环境验证网关转发数据功能。图10为网关系统验证环境实物图。验证网关Modbus/TCP协议接收数据情况,然后进一步验证网关系统CAN总线转发数据能力、网关系统RS485/串口转发数据能力和MQTT协议转发数据至阿里云物联网平台能力。
图10 网关系统验证环境实物图
4.1 双线以太网网关系统接收数据验证
网关系统可以通过双线以太网接口、Modbus/TCP协议直接接收到边缘终端的采样数据。图11为网关系统接收数据验证框图。为验证网关的接收数据功能是否正常,采用在边缘终端log输出和网关log输出比对数据是否一致的方式进行验证。
图11 网关系统接收数据验证框图
首先启动边缘终端,等待网关系统Modbus/TCP Client端连接。然后启动网关系统,观察Server端串口log数据输出和Client端串口log数据输出是否一致。等待边缘终端发送传感器数据,图12为边缘终端发送的数据串口log。
图12 边缘终端发送的数据串口log
图13为网关侧通过Modbus/TCP接收的数据。对比8个通道的传感器数据均一致,表明网关系统通过双线以太网接口和Modbus/TCP协议接收数据正常。
图13 网关系统接收的数据
4.2 网关数据转发验证
网关系统可以将接收的边缘终端数据进行转发,为验证网关系统转发数据情况,搭建实物验证环境。图14为网关系统数据转发实物搭建架构图,验证CAN总线转发、RS485/串口转发和MQTT阿里云物联网平台数据转发。验证方式同样采用对比方式,对比边缘终端发送的数据和经网关平台转发的平台所接收的数据。
图14 网关系统数据转发验证环境框图
4.2.1 验证CAN系统平台数据转发
CAN总线支持多种通信速率,但是同一个网关下所有CAN节点的通信速率必须保持一致,本次验证采用500 Kbit/s通信速率。首先通过串口设置CAN平台的CAN速率为500 Kbit/s,然后打开CAN网卡,并监听网关转发过来的数据:
ip link set can0 type can bitrate 500000
ifconfig can0 up;candump can0
同样设置网关的CAN通信速率为500 Kbit/s。最后启动边缘终端等待通信连接,启动网关设备连接边缘终端。网关与边缘终端连接成功之后,通过CAN接口向CAN管理平台转发接收的边缘终端数据。
图15(a)和图15(b)分别为边缘终端发送的数据和CAN平台接收到网关系统转发的数据。CAN平台接收的数据中“can0”表示CAN网卡名称;“5A1”表示网关中转发CAN数据包中的标志符ID编号;“[3]”表示接收的数据长度;第4组数据从01~07表示采样的传感器通道编号;最后2组数据表示接收的数据,采用2字节8位数据表示1个16位数据,高字节在前,低字节在后。对比边缘终端发送的数据和网关转发至CAN平台的数据,两者各通道对应的数据完全一致,表示网关系统通过CAN接口转发数据正常。
(a)边缘终端发送的数据(b)CAN平台接收的数据
4.2.2 验证RS485/串口平台数据转发
网关系统通过RS485和串口转发接收的传感器数据均来自主控制器同一组端口,只需验证RS485或者串口数据是否正常即可。
首先启动边缘终端采集数据,并通过Modbus/TCP协议发送给网关系统,网关系统通过双线以太网端口接收边缘终端数据,并打包成通道编号、数据高字节、数据低字节的帧格式通过串口转发出去。采用USB转TTL模块连接到控制器串口TTL电平输出端,并接到计算机串口调试终端接收网关转发的串口数据,验证串口转发是否正常。
图16(a)和图16(b)分别为边缘终端发送的数据和网关系统通过串口或者RS485转发至串口平台的数据。对比边缘终端和RS485/串口平台接收的各通道传感器数据完全一致,表明网关系统通过RS485/串口转发数据正常。
(a)发送数据(b)接收数据
4.2.3 验证MQTT阿里云物联网数据转发
验证网关通过MQTT协议转发数据至阿里云物联网平台,首先在阿里云物联网平台进行产品和设备创建,搭建好阿里云物联网平台数据接收环境。
图17(a)和图17(b)分别为边缘终端向网关系统发送的传感器数据和阿里云物联网平台通过MQTT协议接收到网关系统转发的传感器数据。阿里云物联网平台以float型数据显示,将各通道数据转换成16进制后和边缘终端各通道数据进行对比,数据完全一致,说明双线以太网网关系统通过MQTT协议向阿里云物联网平台转发数据正常。
(a)边缘终端发送的数据(b)物联网平台接收的数据
5 结论
文中首先介绍了双线以太网网关系统的整体框架、网关系统主要硬件设计和软件系统设计,并结合双线以太网技术、Modbus/TCP典型工业以太网通信技术和物联网相关技术,设计了一套兼容多平台的双线以太网网关系统。最后通过实物环境验证双线以太网网关系统转发数据的能力,并给出验证数据,充分验证了方案可行性和实用性。
由于双线以太网网关系统研究重点在于数据转发和接口通信上,目前还缺乏数据交换安全机制和系统远程升级方案。后续研究考虑在网关系统中增加非对称加密和对接加密相结合的安全机制[12-13],并研究经过数字签名的OTA远程升级方案,进一步完善双线以太网网关系统,达到投入市场应用标准。