基于RT-Thread操作系统的Modbus网关设计
3.山西天地煤机装备有限公司,太原030006)
摘要:利用RT-Thread操作系统,设计了一种Modbus网关,实现了CAN协议、ModBus RTU协议与ModBus TCP协议数据的转换。该网关采用STM32F103VET6作为主芯片,采用TJA1042T/3和GM485E作为CAN通讯和Modbus RTU通讯芯片,实现对现场传感器数据的采集;采用W5500芯片作为从站,以ModBus TCP协议向上位机发送数据。经过测试表明,该网关通讯稳定可靠,具有实时性好、可扩展性高、抗干扰能力强的特点,能够满足工业现场通信需求。
关键词:RT-Thread操作系统;Modbus网关;CAN通讯;Modbus RTU通讯
Modbus协议是施耐德电气公司为实现可编程逻辑控制器(PLC)的通信设计的一种通信协议,目前已成为工业领域的标准通信协议之一。其采用master/slave主从轮询应答的方式通信,可采用RS232、RS422/485和RJ45物理接口,在应用层可支持ASCII、RTU和TCP三种报文形式传输[1]。CAN协议是由博世公司设计的一种串行通信协议,其CAN2.0 A/B协议得
到了广泛的应用,是汽车电子和工业网络的标准总线协议,具有传输速度快、传输距离远、可实现多主控制等优点[2]
目前的工业网络已经开始采用以太网通信的形式替代传统的总线通信的形式,从而获得更好的传输速度和可靠性。因此,本文采用国产操作系统RT-Thread,设计一种打通总线通信和太网通信的Modbus网关,实现CAN协议、ModBus RTU协议与ModBus TCP协议数据的转换,提高工业网络的实时性和可靠性。
1 Modbus网关硬件设计
嵌入式多线程编程网关硬件结构如图1所示,主要由STM32主控模块、电源模块、RS485模块、CAN模块和TCP以太网模块5部分组成。通过采用模块化设计,使得各模块既是独立的接口,又可构成统一的整体,提高了系统的可扩展性和可维护性。
图1Modbus网关硬件结构图
1.1电源模块
网关模块供电电源为交流220V,系统电源模块采用两级变压模式为硬件供电,如图2所示。首先采用AC-DC整流模块将交流电整流为15V直流电,再经过DC-DC直流降压模块输出3.3V直流电和5V直流电,从而分别驱动主控模块、RS485模块、CAN模块和TCP以太网工作。
图2电源模块图
1.2主控模块
主控模块是网关系统的核心,负责整个系统控制和调度,各个子模块通过其发出的指令来执行相应的操作。设计采用意法半导体公司的32位内核高密度高性能STM32F103VET6处理器,具有512kB高速flash存储器,支持5路USART串口、1路CAN接口和3路SPI接口,最大时钟频率可达到72MHz,完全能够满足本设计要求。该芯片的USART1接口,用于实现
程序的调试工作,波特率为115200bit/s。
1.3RS485模块
RS485模块采用捷茂微电子GM485E半双工高速收发器芯片,其采用标准的8引脚SOP封装,可实现500kbps的无差错数据传输,并具有失效保护电路。在GM485E芯片与主控模块之间增加ADUM1201ARZ-RL7双通道数字隔离器,进一步增强RS485通讯的抗干扰能力。
1.4CAN模块
主控芯片STM32F103VET6集成了1个CAN控制器,设计采用恩智浦TJA1042T/3第三代高速CAN收发器,其具有更好的电磁兼容性和静电放电性能,并采用ADUM1201ARZ-RL7数字隔离器增强抗干扰能力。
1.5TCP以太网模块
TCP以太网模块采用微知纳特W5500嵌入式以太网控制器,其支持高速标准4线SPI接口,
通讯速率可达80MHz。W5500芯片与主控芯片STM32的SPI1接口实现全双工通信,通过RJ45接口与上位机设备实现Modbus TCP通讯。
2Modbus网关软件设计
2.1RT-Thread操作系统
Modbus网关主要功能是实现Modbus RTU协议和CAN总线协议向Modbus TCP协议转换的转换,数据转换的实时性是系统性能的重要指标。因此,设计采用国产RT-Thread嵌入式操作系统来协调任务调度,保障数据更新的实时性。
RT-Thread的全称是Real Time-Thread,即嵌入式实时多线程操作系统,完全遵循Apache License 2.0开源许可协议,其通过任务调度器按照优先级顺序,实现任务与任务之间的快速切换,达到支持多任务同时运行的目的[3]。RT-Thread不但与其他的操作系统一样,内核层支持了线程调度、内存管理、信号量、邮箱、消息队列等功能[4];而且还提供了丰富的中间层组件,为开发者提供了众多可重用的软件包,在提高了系统的模块化程度的同时也缩短了项目开发周期。
2.2网关程序设计
采用RT-Thread Studio软件进行Modbus网关系统程序设计。网关系统多任务线程工作流程。芯片开始工作后首先启动操作系统内核,对硬件和内核对象进行初始化。除了主线程main外,网关程序还主要创建了三个核心线程[5],分别是接收CAN通讯数据的can_app任务线程、接收Modbus RTU通讯数据的rs485_maste_app任务线程[6],以及向上位机发送数据的tcp_slave_app任务线程。线程创建完毕后,系统启动线程调度器,按照各线程优先级进行调度运行。can_app、rs485_slave_app与tcp_master_app线程间的数据交互采用消息队列的形式进行,确保了数据的实时性[7]
3结语
本文设计了一种基于RT-Thread实时操作系统的Modbus网关,可用于存在多总线协议的工业环境中。该网关可以作为Modbus主站和CAN主站,读取工业现场传感器数据,并作为ModbusTCP从站将数据上报上位机系统,从而实现CAN总线、485总线与以太网数据的交互,统一了总线协议。经过测试验证,该网关通讯稳定可靠,具有实时性好、可扩展性高、抗干扰能力强的特点,能够满足工业现场通信需求。
参考文献:
[1]郭翠娟,李中原,荣锋.PROFINET-Modbus通信网关的设计[J].仪表技术与传感器,2020(09):121-126.
[2]邵椿与,李晓娟,史涤霏,张笑搏,王瑞,关永.CAN网络层次化动态调度策略设计与实现[J].小型微型计算机系统,2022,43(06):1141-1146.
[3]赵剑川,赵静,欧启标,张宇,张检保.实时操作系统RT-Thread启动流程剖析[J].单片机与嵌入式系统应用,2022,22(06):22-25.
[4]谷秀明;李博.自动化中以太网的应用研究.电脑知识与技术,2011
[5]邓诚;陈小平.嵌入式电梯控系统设计.微型机与应用,2010
[6]黄俊杰;王建新;张静.网络协议分析器设计与实现.企业技术开发,2010
[7]王黎明;王明哲;陈双桥.PROFIBUS-DP现场总线协议优化.计算机应用,2008
作者简介:
刘国鹏(1983-),男,山西朔州人,副研究员,硕士,主要从事掘进机及成套装备自动化、智能化控制相关技术及产品开发工作。
*山西省重点研发计划(煤矿智能化掘进状态感知及监测系统202202020101005)
*山西天地煤机装备有限公司面上项目(掘进机自主规划作业关键技术研究M2022-MS02)
*山西天地煤机装备有限公司科技重大项目(掘进机截割路径自主规划与动态调整关键技术研究M2023-ZD12)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。