APP下载

基于STM32嵌入式多协议网关设计*

2016-11-09邹晓康张浩然

网络安全与数据管理 2016年16期
关键词:网关以太网报文

邹晓康,刘 帅,张浩然

(浙江师范大学 数理与信息工程学院,浙江 金华321004)



基于STM32嵌入式多协议网关设计*

邹晓康,刘帅,张浩然

(浙江师范大学 数理与信息工程学院,浙江 金华321004)

基于STM32平台,设计一种基于工业现场总线RS485、CAN和有线以太网的嵌入式多协议半双工交叉通信的网关产品,主要采用STM32高性能ARM处理器作为核心控制芯片,实现RJ85、UART、CAN双向透明传输设计、MODbusTCP转MODbus单向半双工传输设计、MODbusTCP转CANopen单向半双工传输设计,在现代工业现场具有很好的推广价值。

嵌入式系统;多协议网关;RJ85;CAN;RS485;STM32

引用格式:邹晓康,刘帅,张浩然. 基于STM32嵌入式多协议网关设计[J].微型机与应用,2016,35(16):38-40,43.

0 引言

随着传感器、无线通信、工业现场总线、嵌入式系统等技术的发展,物联网已经广泛应用于仓储物流、智能电网、公共安防、智能楼宇等领域。物联网的核心思想就是把任何物体都连到互联网中,其中起到重要作用的便是网关。便携式多协议网关现在在电子市场是一个新兴产品[1]。当前市面所能看到的网关都是针对互联网开发的,主要是将不同的局域网(以太网、令牌网等)互联到Internet上。没有特定针对工业现场总线开发的网关产品,购买到的USB转CAN模块、USB转RS232/RS485模块等都是单接口转换[2],简单实现了硬件接口的匹配问题,缺少以太网和CAN、MODbus等多种工业现场总线互转的模块。

1 系统设计

基于STM32嵌入式多协议网关根据市面上在嵌入式工业网关方面的不足、空缺和需求,从工程应用角度研发一种基于工业现场总线CAN、RS485/232和有线以太网的嵌入式多协议半双工交叉通信的网关产品[3]。系统采用高性能32位ARM处理器STM32F407。主要研究内容包括:移植和优化轻量LWip、freeMODbus、CANfestival通信协议,使其高速运行在ARM处理器上,实现嵌入式多协议网关设计。首先,在没有使用应用层协议情况下,实现的通信方式主要为双向透明传输模式:Ethernet与CAN接口互转、Ethernet与RS485/232接口互转、RS485/232与CAN接口互转,CAN、RS485/232接口可设置其传输的数据的波特率、字节大小等。

在添加了应用层协议情况下,实现的通信方式是:MODbusTCP转MODbus单向半双工传输设计,MODbusTCP转CANopen单向半双工传输设计。调度算法的设计,实现多协议半双工交叉通信,解决任务切换、信息缓存、信息阻塞和误码等问题,给出了程序软件设计方案和思路。

2 系统硬件设计

图1 外观结构图

嵌入式多协议网关的外观结构如图1所示,包括以太网接口端子1、液晶显示接口端子2、电源接口端子3、网关主体4、调试接口端子5、模拟信号检测接口端子6、数字信号检测接口端子7、RS232接口端子8、CAN接口端子9、RS485接口端子10。

设计中以太网链路层采用主控芯片STM32F407内部自带的媒体访问控制器MAC实现, MAC与物理层芯片通过RMII接口通信,物理层采用DP83848实现,集成极性检测和校正10/100Base-T端口,内部集成高性能的DMA。

为了有效保护DP83848芯片和系统的安全,其输出端通过变压器隔离模块HR911105A进行隔离保护,输入、输出差分线通过50 nF电容进行滤波处理,屏蔽高频信号的干扰,震荡电路采用集成的50 MHz有源晶振,保证输出的时钟信号饱满、圆滑。网络隔离模块如图2所示。

图2 网络隔离模块

TD301D485H-A是一款集隔离电源和数据收发功能于一体的RS485总线收发隔离模块。该芯片主要功能是将逻辑电平信号转换为RS485接口协议的差分电平信号,实现信号匹配。通信波特率高达115 200 b/s,同一网络可支持32个节点连接。EMC防护电路如图3所示。

图3 RS485的EMC防护电路

TD301D232H是一款集隔离电源和数据收发功能于一体的RS232总线收发隔离模块。其该芯片主要功能是将逻辑电平信号转换为232协议的电平信号,实现信号电平匹配,通信波特率高达115 200 b/s。EMC防护电路如图4所示。

图4 RS232的EMC防护电路

TD301DCANH3是一款集隔离电源和数据收发功能于一体的CAN总线收发隔离模块。主要功能是将逻辑信号电平转换为CAN接口总线的差分信号电平,实现信号匹配;波特率可达1.0 Mb/s,同一网络可支持110个节点连接,电磁抗干扰性高辐射低。EMC防护电路如图5所示。

图5 CAN的EMC防护电路

3 软件设计

3.1透传模式

STM32F407所提供的DMA功能非常强大,支持Ethernet、CAN、RE485/232、IIC、SPI等接口。工作流程如图6所示,分别为以太网、CAN接口分配了数据缓存区,大小1.25 KB,该缓存区是单向传输的,只接收高速接口的有效数据并进行缓存,然后将缓存的数据发送给低速的接口。以太网接口数据缓存区的数据可以发送到CAN接口和RS串口,而CAN接口的数据缓存区的数据只需要发送给RS串口就可以了,通过该缓存区的建立,可以解决高速接口向低速接口传输数据的阻塞现象。

图6 透传数据流

3.2MODbusTCP转MODbus半双工传输

网关采用MODbus TCP Slave与MODbus RTU/ASCII异步通信方式。网关从以太网接口接收到请求报文信息,在发送到RS232/485接口时,要做报文的解析转换工作,MODbus TCP相对串行链路MODbus,去掉了从机地址、校验码,添加从设备的ID号,做好CRC校验,删除MBAP包头,组合成完整的MODbus报文。

MODbus从机接收到相应请求报文,会返回对应的响应报文,该报文是一帧完整的MODbus报文,网关系统将该帧信息通过以太网接口发送出去之前,要进行Transaction ID添加、Protocol ID添加、Length添加、Unit ID添加组成一个MBAP包头,再将相应的CRC校验删除,就构成了一帧完整的MODbus TCP报文。

该网关系统另外一个特点是最多可支持8个MODbus TCP主站连接到网关上,允许8个用户同时访问相同的MODbus从机设备,实现方法如图7所示。

图7 报文解析及逆解析控制算法流程

MODbus TCP主站1~主站8同时与网关设备进行TCP连接,每一个主站都可以访问连接在网关上的32个设备MODbusRTU/ASCII从机1~从机32,并且每个MODbus TCP主站都有一个独立的报文缓存区,作用描述如图7所。当多个主站设备同时访问从机设备时,如果不做相关的处理则会出现信息阻塞现象。为了解决该问题,系统中实现了一个报文解析及逆解析的优先级控制算法,实现过程如下:

(1)将8个报文缓存区构建为一个缓存队列;

(2)每当一个主机设备连接网关时,建立TCP连接时系统会动态地开辟一段报文缓存区,添加到队列中区,TCP连接断开时,该缓存区便会删除回收数据内存;

(3)读取报文时,每从一个缓存区读取一帧有效报文数据,处理结束时,便会读取下一个缓存区的数据,而不会继续读取同一个缓存区的数据,这样可以保证每个主机设备的响应时间均等,提高速度。

(4)当缓存区的数据溢出时,系统不会再接收请求报文,而是丢弃。

3.3MODbusTCP转CANopen半双工传输

MODbusTCP转CANopen可以实现1个MODbus TCP主站与多个CANopen从站设备之间的数据通信。

如图8所示,Data 1表示从MODbus TCP协议总线到CANopen协议总线的数据传输过程;Data 2表示从CANopen协议总线到MODbus TCP协议总线的数据传输过程。

图8 MODbusTCP转CANopen数据流

网关独立运行在CANopen网络协议上,根据对象字典索引号周期性地发出CANopen的SDO读/写命令,通过过程数据对象PDO发送和接收数据。同时MODbus TCP主站发送的命令信息被网关接收,当MODbusTCP发送的I/O数据请求报文被收到时,立即刷新和读取最新CANopen缓存的数据,以此实现网络高低速度的匹配。

4 系统测试

4.1透传测试

实验过程都是在发送间隔为100 ms、传输次数为10 000下测试通过的,测试了不同传输速率情况下的传输误码率。其中,表1中的传输速率主要是针对串口RS485/232进行设置的。

表1 透明传输的误码率 (%)

4.2应用协议转化测试

MODbusTCP转MODbus和MODbusTCP转CANopen,都是通过功能码16,可以连续写入多个数据,以起始地址1000、时间间隔1 000 ms向设备ID为1的MODbus从设备连续写入30个数,1~10、100~1000、1000~10 000,写操作成功,如图9所示。

通过功能码03可以连续读取多个数据,以起始地址1000、时间间隔1 000 ms从设备ID为1的MODbus从设备连续读30个数,成功读取到上次写入的数据。读操作如图10所示。

图9 写数据测试

图10 读数据测试

5 结论

通过上面的测试结果看到,系统运行稳定性很好。但从表1可以发现,在透传的过程中,低速接口的传输速率较慢时,如TCP & RS485/232中RS485/232的速率为4 800 b/s时,便会出现0.31%的误码率,其主要原因是,透传通路两端接口的传输速率相差过大时缓存区溢出,可以通过加大缓存区来解决。

[1] 沈永春,姜宁,张功镀.嵌入式多协议网关的设计与实现[J].自动化仪表,2007,28(3):8-12.

[2] 鲍建行.嵌入式TCP/IP协议栈LWIP的并发性能优化[D].北京:北京交通大学,2011.

[3] 张厚林.CAN open通讯协议设计与实现[D].武汉:华电科技大学,2009.

Design of embedded multi-protocol gateway based on STM32

Zou Xiaokang,Liu Shuai,Zhang Haoran

(School of Mathematics, Physics and Information Engineering, Zhejiang Normal University, Jinhua 321004, China)

Based on STM32 platform, a kind of embedded multi-protocol and half duplex cross communication gateway products is designed, which is based on industrial field bus RS485, CAN and wired Ethernet.This product mainly uses STM32 high-performance ARM processor as the core control chip to realize the RJ85 and UART, CAN transparent two-way transmission , MODbusTCP to MODbus one-way half duplex transmission, and MODbusTCP to CANopen one-way half duplex transmission.This product has a very good value in the modern industrial field.

embedded systems;multi-protocol gateway;RJ85;CAN;RS485;STM32

2015-2016年浙江省新苗项目(2015R404051)

TP336

A

10.19358/j.issn.1674- 7720.2016.16.011

2016-03-30)

邹晓康(1991-),男,硕士研究生,主要研究方向:智能信息处理。

刘帅(1989-),男,硕士研究生,主要研究方向:智能信息处理。

张浩然(1972-),男,硕士生导师,教授,主要研究方向:智能信息处理、嵌入式设计。

猜你喜欢

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