面向工业传感器的多协议数据转换网关设计

2024-02-22 12:48谭诚刚许焕敏
仪表技术与传感器 2024年1期
关键词:网关以太网报文

谭诚刚,许焕敏,傅 强

河海大学机电工程学院

0 引言

利用RS485总线和CAN总线通信的传感器被用于工业领域的各种场合中,这2类传感器的数据一般还需通过另一种协议接口传输到上位机,但目前单一的数据传输方式存在数据传输受环境限制的问题,也无法满足未来工业物联网的数据传输要求,为此传感器引入不同的数据传输方案十分必要。郑美芳等[1]设计了CAN和以太网间网关,通过以太网可管理CAN总线上的传感器。徐尚瑜等[2]研发了一种低功耗数据采集终端,该终端可采集各类RS485传感器信息,通过Lora下发传感器指令。宋志勇[3]设计了基于CAN总线的称重数据采集系统,采集到的质量数据通过WiFi上传到云端。Tranca等[4]将ZigBee技术用于不同总线的数据传输,可实现RS485、RS232、RS422设备与ZigBee的数据交互。曾伟[5]研发了一套针对CAN/RS485传感器的数据采集系统,各基站可将采集到的传感器数据经过以太网汇聚到服务器,实现了对大量传感器的智能化管理。上述文献中的学者已设计出采集不同协议传感器数据的转换网关,但将采集到的传感器数据以不同形式传输给上位机的研究成果较少。

本文设计了一种适用于RS485/CAN传感器的多协议转换网关,该网关能实现CAN、RS485传感器与RS232、以太网、LoRa之间的数据转换,真正实现了传感器的多渠道数据传输,为传感器实现数据远距离无线传输和加入工业物联网提供了一种可行方案。

1 系统方案设计

要求设计的网关能实现RS485、CAN与以太网、RS232串口、LoRa的协议转换功能,根据应用需求确定的多协议转换网关通信总体结构模型如图1所示。网关的一端是CAN接口和RS485接口,连接到RS485或CAN总线上,用于采集传感器数据;另一端有RS232接口、RJ45网口以及LoRa收发器,可实现传感器和管理机之间不同渠道的双向数据通信。由于网关涉及到的通信接口较多,故将CAN、RS485接口统称为数据采集接口,将RS232、RJ45以太网接口和LoRa收发器统称为数据上传接口。

已知CAN报文都由CAN-ID和0~8 Byte的数据组成[6]。则定义上位机每次下发的单个数据包最长为10 Byte,数据包的组成为报文发送设备CAN-ID(2 Byte)加数据(8 Byte)。网关接收到上位机的数据后会识别数据包的ID和内容并通过CAN接口发送。当网关的CAN接口收到报文后,会提取报文的ID和数据,以11位ID加数据的数据包形式通过数据上传接口发送给上位机。为了方便缓存待收发的数据,每种接口都设置了接收数据缓冲区和发送数据缓冲区[7]。

2 系统硬件设计

2.1 总体方案

多协议数据转换网关要能实现CAN传感器、RS485传感器与LoRa、以太网、RS232串口之间的数据转换,则在硬件上要有相应的接口电路。设计硬件时采用4个拨码开关切换不同接口,网关上电时会根据拨码开关的状态开启不同接口,拨码开关不同状态对应的功能如表1所示。

网关主控芯片选用STM32F103RCT6,该型号芯片具有丰富的片上外设,可以拓展多种协议的接口电路。实现TCP/IP协议栈有2种方案[8]:

1)主控芯片+软件协议栈+以太网PHY收发器芯片;

2)主控芯片+硬件协议栈芯片。

第1种方案要实现复杂的硬件电路和软件TCP/IP协议栈的移植,而第2种方案中的硬件协议栈芯片已内置TCP/IP协议栈,故本文选用硬件协议栈芯片实现以太网协议栈的功能。LoRa模块选用E22-400T22D,该模块空中速率最高为62.5 kbit/s,理想情况的最远通信距离可达5 km[9],并通过串口与单片机通信。实际的工业环境中,RS485或CAN总线上可能会存在高的共模电压和其他电磁干扰,可能导致连接网关的上位机工作异常[10],因此RS485接口和CAN接口电路需要进行隔离设计,最终的硬件总体方案如图2所示。

图2 硬件总体方案

2.2 电源电路设计

通过12 V/24 V电源适配器为网关供电,电源电路采用DCDC降压芯片加LDO的组合方式,并将电源适配器的直流电压转换为5 V、3.3 V电压为网关中各芯片供电。DCDC芯片选用TPS5430,该芯片将12 V/24 V的电源电压转换为5 V电压为后续模块供电。LDO选用AMS1117-3.3,将5 V电压转换为3.3 V电压,为后续芯片供电。

2.3 RS485接口电路设计

考虑到RS485接口需要进行隔离设计,故选用ADM2483作为RS485收发器芯片,作为一种基于磁隔离技术的RS485电气隔离收发器,与传统光电型隔离收发器相比具有隔离性能优异、寿命长、可靠性好等特点[11],能够满足在工业环境下的使用需求。ADM2483的VDD2、GND2隔离端需要用隔离电源芯片供电,故选用B0505S-1WR3隔离电源模块,该模块为PCB上需要产生与输入电压隔离的电源场合而设计,并且具有3 000 V的隔离电压保护标准,能输出5 V隔离电压。RS485接口电路如图3所示,其中 ADM2483的RXD、TXD分别与单片机的串口的RX、TX相连,ADM2483的RE#与DE短接到一起后与单片机相连,可单片机控制ADM2483的数据收发状态。

图3 RS485接口电路

2.4 CAN接口电路设计

主控芯片STM32F103RCT6已经内置了CAN2.0A/2.0B控制器,因此在设计CAN接口电路时仅需选择CAN收发器即可。CAN收发器芯片选择ISO1050DUBR,作为一款隔离型收发器,该收发器能有效降低CAN总线对网关的电磁干扰,尤其适合复杂工况[12],选用B0505S-1WR3为其隔离端提供5 V隔离电压。ISO1050组成的CAN接口电路如图4所示,ISO1050的RXD、TXD分别与单片机CAN_RX、CAN_TX相连。

图4 CAN接口电路

2.5 以太网通信电路设计

本文采用硬件协议栈芯片的形式来实现TCP/IP协议栈功能,因此选择W5000以太网控制器作为硬件协议栈芯片,通过以太网连接器HR911105A加W5500组成完整的以太网硬件协议栈。W5500作为一款以太网控制器芯片,将TCP/IP协议栈集成在芯片内部,单片机只需要通过SPI通信接口就可与其通信和配置其相关的寄存器,可方便地进行以太网协议栈的个性化开发[13],同时HR911105A将网络隔离变压器和RJ45网口集成在一起,简化了硬件电路设计。以太网接口电路如图5所示,C8~C11、R8~R9组成的Bob Smith电路可降低接口EMC电磁辐射,磁珠将AVDD和VDD分隔开。W5500的SCLK、MISO、MOSI、CS引脚连接到单片机 SPI引脚,INTN#是W5500的中断引脚。当W5500自身状态发生改变时,会在INTN#引脚输出低电平以告知单片机。

图5 以太网接口电路

2.6 RS232接口电路设计

由于RS232信号的电平与单片机接口信号的电平不一致,故两者之间需要电平转换芯片来实现两者的信号电平转换,因此选用SP3232EEN,它是一款满足TIA/EIA-232标准要求的RS232收发器芯片,RS232接口电路如图6所示。

图6 RS232接口电路

3 系统软件设计

多协议数据转换网关的软件设计采用程序模块化设计,分别编写了CAN、RS485、W5500、RS232串口和LoRa的驱动程序,每个模块的程序中包含了各自的参数配置程序、数据收发程序、中断程序。定义了各自的中断标志位,相应接口在中断函数中接收到数据后,会将标志位置位,并转到主程序中处理数据,在主程序中完成对不同接口协议数据的转换。

3.1 CAN通信程序

在编写CAN驱动程序时,首先会调用STM32库函数对CAN外设初始化,在CAN-InitStructure初始化配置结构体中设置CAN通讯波特率为125 kbit/s。CAN外设的报文过滤器可以过滤指定ID的报文,则在CAN-FilterInitStructure结构体中配置过滤器为16位非必须匹配的掩码模式,配置后CAN外设可接收所有11位ID的报文。编写 CAN报文的收发程序时,定义了Tx-Message、Rx-Message两个结构体分别作为CAN报文的数据接收和数据发送缓冲区。当网关接收到报文后,在CAN中断函数中确认该报文是否为11位ID的数据帧,若是则将CAN报文存入到Rx-Message接收缓冲区中等待后续报文数据处理,若不是则丢弃该报文。

3.2 RS485、RS232、LoRa通信程序

由于网关的RS485、RS232、LoRa模块与单片机的通信方式均为USART,故三者的软件设计框架大致相同,分别是串口参数配置、数据收发与中断程序的编写。调用库函数配置好USART通信参数后,分别为3个串口定义了128 Byte数据接收缓冲区和数据发送缓冲区。为了实现大数据吞吐量要求,将单片机3个串口中断触发方式配置为IDLE串口空闲中断,其优势在于每接收到1帧数据后才会触发1次接收中断,避免单片机频繁进入中断。

3.3 以太网通信程序

以太网通信程序主要分为W5500的通信配置和数据收发程序。定义Gateway-IP、Sub-Mask、IP-Addr、Port这4个数组存放网关地址、子网掩码、IP地址、socket端口号的配置参数。W5500拥有8个同时支持TCP协议通信的socket端口,在传输数据时只选择socket0作为与外界通信的端口。在建立TCP通讯前,需要对W5500进行相关通信参数的配置,配置流程如下:

1)在主程序中调用SetNet()函数将通信参数写入到4个数组中,写入的值分别为192.168.1.1、255.255.255.0、192.168.1.199、5000;

2)调用W5500-Init()函数将设置好的通信参数写入到W5500寄存器中,并设置W5500工作在TCP服务器模式;

3)利用DetectGateway()函数检查通信参数是否合理,使能socket0端口;

4)调用SocketInit()函数指定socket0作为TCP端口,设置分片长度,使能W5500。

在完成参数配置后,W5500将工作在TCP服务器模式,在main主程序的while循环中反复调用Socket-Listen()函数用以等待远程主机的连接。W5500的内部拥有16 KB的发送缓存区和接收缓存区寄存器,定义两个大小为2 048 Byte的数组作为数据接收和数据发送缓存区。调用WriteDa-taBuff()函数将数据发送缓冲区内的数据中写入到W5500发送缓存区寄存器,写入成功后W5500会自动向外发送数据。当 W5500收到外界数据后,单片机则会检测到W5500的INTN#引脚电平拉低,此时W5500_RECEIVE标志位置位,在主程序中调用ReadDataBuff()函数读取W5500接收缓存区寄存器内的数据。

4 网关数据传输实验

为了验证网关的功能,设计了网关采集RS485/CAN传感器数据的实验,实验的统一流程均为:上位机通过网关下发指令给传感器,传感器收到指令后通过网关将数据上传到上位机,在上位机显示接收到的传感器数据。实验所用传感器分别为RS485称重传感器SLP331D、CAN汽车衡PDX,两款传感器均为数字式称重传感器,可将采集到的质量数据直接传输到各自总线上。

4.1 RS485传感器数据采集实验

4.1.1 RS485-RS232传输实验

实验前,将网关的一端连接到RS485称重传感器,另一端用USB转RS232数据线连接到计算机将网关和RS485称重传感器上电。实验步骤为:打开电脑的串口助手软件,设置波特率9 600 bit/s;给RS485传感器加载2 kg砝码;串口助手每隔50 ms通过网关下发获取质量的指令;传感器收到指令后上传当前质量值。串口助手接收到的传感器质量数据如图7所示。

图7 RS485-RS232双向数据传输实验结果

4.1.2 RS485-LoRa传输实验

LoRa数据传输实验中会用到两个多协议转换网关,其中一个网关将接收到的传感器数据通过LoRa模块发送出去,另一个网关接收数据后将数据发送到上位机。网关1仅连接RS485称重传感器,网关2仅用RS232串口线连接到计算机,两个网关间无物理连接,彼此通过LoRa模块传输数据。该实验的实验步骤与RS485-RS232双向数据传输实验一致,串口助手每隔50ms向称重传感器发送获取质量的指令,实验结果与图7相同。

4.1.3 RS485-以太网传输实验

接线检查无误后给网关上电,并设置计算机IP为静态IP,其IP地址设置为192.168.1.190(使计算机与网关的IP地址处于同一网段即可)。在计算机端以太网测试工具中将协议类型设置为TCP Client,服务器IP地址设置为192.168.1.199,端口设置为5000,点击建立与网关服务器的TCP连接。在传感器上加2 kg砝码后,计算机每隔50 ms给RS485称重传感器发送指令,可看到传感器返回的质量结果如图8所示。

图8 RS485-以太网数据双向传输实验结果

4.2 CAN传感器数据采集实验

4.2.1 CAN-RS232、LoRa传输实验

两组实验的实验内容与实验现象均相同,故只对CAN-RS232的双向数据传输实验进行说明。将网关的一端连接到CAN传感器,另一端通过USB转RS232数据线连接到计算机并给两者上电后,加载10 kg负载到传感器上,串口助手每隔50 ms下发指令获取质量,CAN传感器接收到指令后通过网关将质量数据上传到计算机,数据发送和接收均为十六进制的形式,数据包中的字符与HEX对应关系如表2所示。

表2 部分ASCII码对照表

串口助手每次下发数据包的前2字节为CAN报文ID,数据包的第3~5字节是质量指令。根据图9所示实验结果,并将电脑收到的数据与表2对比可看到接收到的数据帧中最后6字节是质量数据,显示的质量在10.0~10.2 kg之间,与加载在传感器上的10 kg负载质量相符。

图9 CAN-RS232数据双向传输实验结果

4.2.2 CAN-以太网传输实验

该实验中,电脑端的以太网测试工具通信参数配置与RS485-以太网双向数据传输实验相同,接线连接好后给传感器和网关上电,并使电脑连接到网关服务器。在传感器上加10 kg负载,每隔50 ms计算机下发指令,从图10可看出网关接收到了质量数据,显示质量数据的范围在10.0~10.2 kg之间,与加载在传感器上的10 kg负载质量相符。

图10 CAN-以太网数据双向传输实验结果

5 结束语

本文针对RS485、CAN工业传感器与上位机间数据通信渠道单一的问题,研发了一种多协议数据转换网关,该网关能实现RS485、CAN传感器和RS232串口、以太网、LoRa之间的双向数据传输。采用隔离型CAN和RS485收发器、远距离传输的LoRa模块和以太网硬件协议栈芯片,降低软硬件设计难度,并使网关更适合在工业环境下工作。RS485、CAN传感器通信测试的结果验证了网关在双向数据传输上的准确性和可靠性。该网关扩展了传感器与管理机的通信渠道,利用数据透传的软件层使网关能与不同种类的RS485、CAN传感器建立通讯。

猜你喜欢
网关以太网报文
基于J1939 协议多包报文的时序研究及应用
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
谈实时以太网EtherCAT技术在变电站自动化中的应用
ATS与列车通信报文分析
LTE Small Cell网关及虚拟网关技术研究
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
应对气候变化需要打通“网关”