一种嵌入式现场总线通信网关的设计与实现
摘要:针对异构总线间不兼容的问题,提出了一种异构现场总线融合通信网关的设计实现方法。网关采用STM32F207作为主控制器,通过协议转换的方式实现了CANBUS与MODBUS两种总线的互连互通,分别给出了软硬件设计方案。该网关的创新点在于定义了CANBUS的应用层协议,使用该嵌入式现场总线通信网关构建的总线融合通信网络能够完全兼容CANBUS和MODBUS的原有功能。实践证明现场总线通信网关能很好地实现2种总线间的数据传输,为异构现场总线设备之间的通信提供了一个实用可行的方法。
关键词:CANBUS;MODBUS;总线互连;网关
现场总线是近年来发展迅速的一种工业数据总线,作为工厂数字通信网络的基础,它是沟通生产过程现场及控制设备之间及其与高控制管理层次的桥梁。现场总线作为一项以智能传感、控制、计算机、数字通信等技术为主要内容的综合技术,已成受到世界范围的关注。很多具有国际影响力的公司都先后进行了现场总线产品的开发,尽管国际电工委员会(IEC)自1984年开始制定现场总线标准,目前仍然是多种现场总线并存。多种标准并存的情况造成了不同总线系统之间的不兼容,大大降低了总线系统间的互联性和互操作性,给系统的升级和扩容造成了很大的困难。CANBUS和MODBUS是2种应用广泛的工业现场总线,在实际应用中随着这2种总线技术的不断发展及应用,2种总线的交集越来越多,因此彼此间的数据共享变得日渐重要。
文中设计的现场总线通信网关提供了对CANBUS和MODBUS的支持,实现了CANBUS与MODBUS数据的透明传输,为2种总线的兼容提供了可行方案。
1 网关模型分析
本文设计的现场总线通信网关具备MODBUS主站及MODBUS从站的功能,以下以两种典型的应用场景为例分析网关的工作方式。图1所示的应用场景网关工作在MODBUS主站模式,图2所示的应用场景网关工作在MODBUS从站模式。
1.1 网关的MODBUS主站模式
网关工作于MODBUS主站模式时,当CANBUS上的监控主机发出一帧数据时,网关作为CANBUS上的设备接收到该数据,根据验收码和屏蔽码判断是否处理该数据。若验证成功,则解析收到的CAN数据帧,得到CAN数据帧中的数据;将数据按照MODBUS协议逐层打包生成MODBUS帧,网关作为MODBUS主站向MODBUS上的从站发送这一帧数据,完成了一次CANBUS到MODBUS的单向数据传输。协议转换示意图如图3所示。
1.2 网关的MODBUS从站模式
网关工作于MODBUS从站模式时,当由MODBUS上的监控主机发出一帧信息时,网关收到该MODBUS帧,检查地址码与功能码,若与自身地址相符且功能码为发送,按MODBUS协议逐层解析,得到其数据;网关将数据按照CANBUS协议打包形成CAN的数据帧,向CANBUS发送该帧,并向MODBUS主站发送回应帧,完成了一次MODBUS到CANBUS的单向数据传输。
2 硬件设计
本文设计的嵌入式现场总线通信网关包括主控制器(STM32F207),CANBUS接口单元,MODBUS接口单元用于接入MODBUS,以及3.2英寸LCD触摸屏模块。硬件系统框图如图4所示。
2.1 STM32F207微控制器
本文选用STM32F207构建整个系统,STM32F207是一款基于ARM Correx—M3内核的32位微处理器,工作频率120 MHz。STM32F207提供了丰富的接口,支持2路CAN 2.0协议的CANBUS接口,3路USART接口,2路UART接口,6路定时器,FSMC+SPI接口(16BITFSMc+SPI)用于接入LCD触摸屏模块,支持2种调试接口:串行接口和JTAG调试接口。
2.2 CANBUS接口单元
由于STM32F207内置有bxCAN控制器,该控制器是一种在标准CAN总线基础上扩展的总线接口,支持CAN总线协议2.0 A和2.0 B。能以最小的CPU负荷来高效处理收到的大量报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。为了满足CAN总线协议中的标识符硬件过滤需求,bxCAN控制器提供了位宽可变的、可配置的过滤器组,用来完成只接收软件需要的报文功能。CAN接口电路选择SN65HVD230CANBUS收发器。SN65HVD230是一种专用于带CAN控制器设备的CANBUS收发器,可应用于ISO 11898标准的CANBUS串行通信的物理层中。SN65HVD230CAN BUS收发器可以向总线和CAN控制器提供不同的数据传输速度,最高速度为1 Mb/S。
2.3 MODBUS接口单元
MODBUS接口单元使用RS 485串行接口,接口芯片为MAX485。MAX485是用于RS 485与RS 422通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。驱动器具有短路电流限制,并可以通过热关断电路将驱动器输出置为高阻状态,防止过度的功率损耗。接收器输入具有失效保护特性,当输入开路时,可以确保逻辑高电平输出。MAX485的驱动器摆率不受限制,可以实现最高2.5 Mb/s的传输速率。
3 软件设计
3.1 CANBUS的应用层定义
本文设计的现场总线通信网关定义了CANBUS的应用层协议。
(1)规定网关收到的CAN数据帧中的第1个字节为CANBUS的功能码,该功能码为0x0F时,与MODBUS进行通信。
(2)规定CAN数据帧中的第2个字节的高4位为该帧的标号位,低4位为该帧中包含的数据字节数,该字节数为MODBUS协议中数据域的字节数。
(3)规定CAN数据帧中的第3,第4个字节分别为MODBUS的地址码和功能码。
(4)规定从CAN数据帧的第5个字节开始为MODBUS的数据域,由于MODBUS的数据域一般为4个字节,此时CAN数据帧的数据段恰好为8个字节。
(5)当MODBUS数据长度大于4字节时,需要从2个或者多个连续发送的标号相同的CAN数据帧中获得完整的MODBUS数据。当获得的数据位数与帧中给出的位数不同时丢弃该帧。
定义一个数据缓冲区A,一个数据缓冲区B,分别用于临时存放CANBUS到MODBUS的数据和MODBUS到CANBUS的数据。
3.2 CANBUS的收发程序设计
该部分包括CAN初始化,CAN发送程序,CAN接收程序。CAN的初始化包括以下内容:配置嵌套向量中断控制器(NVIC),设置CAN的Rx0和TX中断的响应优先级和抢占优先级,RX0和TX中断使能。根据硬件连接配置GPIO,本文中RX使用GPIOD0,TX使用GPIOD2。设置波特率及过滤器配置。
CANBUS数据的接收是通过接收邮箱(FIFO)中断进行处理的,当FIFO接收到一个新的报文时,过滤器根据预设的值判断报文的标示符是否匹配,若不匹配,直接丢弃该报文;若该报文的标示符与预设值匹配则中断处理程序将接收邮箱中的数据拷贝到数据缓冲区A,该数据将作为MODBUS主站发往MODBUS从站的数据。CANBUS数据接收程序流程如图5所示。
- CAN-bus接口控制实验(12-14)
- 机器人在锂电池生产中的应用(03-14)
- CANBUS总线汽车方向盘控制音响系统解码与解决方案(03-04)
- CANBUS总线在武钢现场中的应用(07-04)
- 基于CanBus的橡胶硫化机组监控系统(07-23)
- 基于DSP和触摸屏的串行通信系统研究(07-05)