新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种嵌入式现场总线通信网关的设计与实现

一种嵌入式现场总线通信网关的设计与实现

作者:时间:2013-06-14来源:网络收藏

3.3 主站、从站的收发程序设计
作为从站时的主要工作是初始化串口,初始化定时器,配置嵌套向量中断控制器(NVIC),分别对串口接收数据中断和定时器中断设置响应优先级和抢占优先级。从数据缓冲区A中获得数据,对获得的数据生成CRC校验码,组成帧从串口按照时序发送这一帧数据。
串口初始化如下:
d.JPG
i.jpg
MODBUS协议规定了2种传输模式:ASCII模式和RTU模式。本文设计的使用RTU模式传输,在此模式下报文中每个8位字节含有2个4位16进制字符它的优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。命令帧由地址码、功能码、数据语和CRC校验码构成。在RTU模式下,帧与帧之间必须由时长至少为3.5个字符时间的空闲间隔区分。整个帧必须以连续的字符流发送,如果两个字符之间的空闲间隔大于1.5个字符时间,则该帧被认为不完整的帧而被丢弃,接收设备假定下一字节是一个新消息的地址域。
MODBUS主站程序需要使用3个定时器,其中TIM2用于控制发送的3.5个字符的帧间隔。TIM3用于控制接收MODBUS从站的回应帧的3.5个字符的帧间隔。TIM4用于接收时确保字符间的间隔小于1.5个字符时间。初始化TIM2与TIM3,定时时间为定时3.645 8 ms(波特率为9 600 b/s时的3.5字符时间):
e.JPG
作MODBUS主站的工作流程如图7所示。

本文引用地址:http://www.eepw.com.cn/article/148017.htm

f.JPG


网关工作在MODBUS主站模式时对从站响应帧的接收使用中断处理的方式。在第一个字节传输结束后启动TIM4定时器,定时时间为1.5个字符时间,在后续的字节传输结束时清零计数器,保证一个帧中的字符间隔不超过1.5个字符时间。接收完成后启动定时器TIM3,定时3.5个字符时间,在此时间内的接收的任何数据都将丢弃。
网关作为MODBUS从站时对化串口和定时器的初始化与MODBUS主站相同,将数据组成CAN的帧,发送该帧,并向MODBUS主站发送响应帧。网关作为MODBUS从站的工作流程如图8所示。

g.JPG


3.4 主程序
主程序中初始化FSMC,初始化LCD,初始化触摸屏,校正触摸屏,显示工作模式选择界面、参数配置界面及当前工作模式界面。根据选择进入相应工作模式。

4 测试结果
在PC机上使用串口助手和USB-CAN软件模拟与MODBUS的收发。MODBUS到的通信模拟:由PC机向网关发送一帧数据00 01 02 03 0405 06 07,网关设置帧ID为0x321并发出数据,通过CANUSB软件接收该数据为00 01 02 03 04 05 06 07。如图9所示。到MODBUS的通信模拟:使用CAN-USB软件发送一帧0f 14 0f 05 00 01 02 03,网关解析其中数据00 01 02 03,并作为MODBUS主站发送数据,将数据输出到串口助手为00 01 02 03。如图10所示。

h.JPG



5 结语
本文设计实现了一种在CANBUS和MODBUS间进行透明的数据传输的嵌入式现场总线通信网关,软硬件设计简单,通信参数可现场配置,能够很好地实现CANBUS与MODBUS间的通信。该网关解决了异类现场总线间通信的问题,使系统的兼容性、互联性、可扩充性都得到了极大的提高,具有良好的应用前景。

通信相关文章:通信原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭