基于基于DeviceNet 的嵌入式的嵌入式I/O模块设计模块设计
摘要:DeviceNet与ModBus协议转换系统由DeviceNet主站,嵌入式I/O模块,ModBus从站三部分组成,实现
DeviceNet与ModBus之间的数据交互。嵌入式I/O模块采用ARM7控制器LPC2129实现DeviceNet与ModBus之间
的通信,同时以软件的形式实现了一个仅限组2的DeviceNet从站和一个ModBus主站。DeviceNet从站用来解码
从DeviceNet主站端接收到的数据,解码后的数据由MCU通过另一个UART接口发送给ModBus从站。UART接
口旨在向ModBus从站发送读/写指令。结果表明,基于DeviceNet总线的嵌入式I/O模块可以很好
摘要:DeviceNet与ModBus协议转换系统由DeviceNet主站,嵌入式I/O模块,ModBus从站三部分组成,实现DeviceNet
与ModBus之间的数据交互。嵌入式I/O模块采用ARM7控制器LPC2129实现DeviceNet与ModBus之间的通信,同时以软件的
形式实现了一个仅限组2的DeviceNet从站和一个ModBus主站。DeviceNet从站用来解码从DeviceNet主站端接收到的数据,
解码后的数据由MCU通过另一个UART接口发送给ModBus从站。UART接口旨在向ModBus从站发送读/写指令。结果表明,
基于DeviceNet总线的嵌入式I/O模块可以很好地与基于ModBus总线的设备进行通信。
0 引言
DeviceNet是一种基于CAN总线技术的符合工业标准的开放型现场总线通信网络,它用于控制,配置和数据采集等方面。
CAN 总线具有布线简单、典型的总线型结构、稳定可靠、实时、抗干扰能力强、传输距离远、布线成本低等特点。由于具备
了这些特点,Devi-ceNet总线被广泛应用于工业自动化控制,它不仅可以接入更多,更复杂的设备,还可以为上层提供更多的
信息和服务。在很多欧美国家,越来越多的系统方案设计采用DeviceNet来实现。
ModBus协议是应用于电子控制器上的一种通用语言,是个真正用于工业现场的总线协议,由于该协议的产生,使控制器
之间、控制器经由网络和其他设备之间实现相互通信。ModBus协议现在已经成为一种通用的工业标准,应用该协议技术可以
使不同厂商生产的控制设备连成一个工业网络,进行集中监控管理。此协议定义了一个控制器能认识使用的消息结构体,从而
使用户不需要关心它们使用哪种网络进行通信。它描述了一个控制器请求访问其他设备的过程,如何回应来自其他设备的请
求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
本文主要解决DeviceNet 与ModBus 之间的协议转换问题。标准的ModBus口是使用RS-232C兼容串行接口,它定义了连
接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem 组网。基于DeviceNet 的嵌入式I/O 模块通
过I/O 口发送和接收数据,ModBus通过串口与嵌入式I/O模块进行通信。通过此过程完成DeviceNet与ModBus之间的协议转换
问题。
1 嵌入式I/O模块的设计与实现
DeviceNet是一种上层的应用层协议,其物理层和数据链路层采用CAN总线技术,ModBus协议只是用于数据链路层上的
协议[1].这两种现场总线是异构的,因此要实现两种协议之间的通信,必须要进行协议转换。协议转换的转换过程是分层次进
行的。首先把总线设备发送过来的设备逐层解包,得到需要的数据,然后再把数据按另一协议所需的方式打包,发送到相应的
设备上。
DeviceNet与ModBus协议都采用主从通信模式,所以它们之间的通信只能是单向的,主站发送命令报文而从站被动接收
命令报文。本设计中的嵌入式I/O模块既是De-viceNet从站,又是ModBus的主站。通过该模块可以实现DeviceNet主站的数据
与ModBus从站的数据进行传输。
嵌入式I/O模块的功能是把DeviceNet格式的报文转换为ModBus的报文命令,再传给底层的ModBus设备,设备在接收到
ModBus命令之后,会向报文转换模块发送ModBus格式的响应报文,经协议转换模块将报文转换为DeviceNet格式的报文传输
给DeviceNet主站。本嵌入式I/O模块既是DeviceNet的从站实现接收主站报文并做出响应的功能,同时又可以作为ModBus的
主站向其他ModBus设备发送报文并接收响应报文。
本设计采用的处理器为LPC2129,硬件结构如图1所示。它是NXP 公司的32 位工业级ARM7 处理器,其内部集成了两个
CAN 控制器,在一片处理器内首先将主站端的DeviceNet协议数据转换成中间协议数据,之后转换成ModBus可以识别的协议
数据。
拨码开关用来设置DeviceNet 端的波特率及MAC地址,其中波特率的开关为3 位,分别代表125 Kb/s,250 Kb/s,500
Kb/s;MAC地址的开关为6位,地址为0~63.
RS 232 既可作为程序接口,也可作为通用的RS 232串口实现与上位机的通信。系统的供电电源采用24 V的直流供电,并
在内部将24 V电源转化为模块需要的5 V,3.3 V及1.8 V电压电源。