打印
[总线技术]

MODBUS/CANBUS现场通信网关之MODBUS主站、从站的收发程序设计

[复制链接]
636|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

MODBUS/CANBUS现场通信网关作为MODBUS从站时主要工作是初始化串口,初始化定时器,配置中断,分别对串口接收数据中断和定时器中断设置相应优先级。从数据缓冲区中获得数据,对获得的数据生成CRC校验码,组成MODBUS帧从串口按照时序发送这一帧数据。

    串口初始化如下:

        1.波特率9600

        2.数据长度为8位

        3.1位停止位

        4.无奇偶校验

        5.无硬件流控制

        6.使能串口发送和接收模式

    MODBUS协议规定了2种传输模式:ASCII模式和RTU模式。现场中线网关推荐使用RTU模式传输,在此模式下报文中每个8位字节含有2个4位16禁止字符它的优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。命令帧由地址码、功能码、数据域和CRC校验码构成。在RTU模式下,帧与帧之间必须由时长至少3.5个字符时间的空闲间隔区分。整个帧必须以连续的字符流发送,如果两个字符之间的空闲间隔大于1.5个字符时间,则该帧被认为不完整的帧而被丢弃,接收设备嘉定下一个字节时一个新消息的地址域。

    MODBUS主站程序需要使用3个定时器,其中1个用于控制发送的3.5个字符的帧间隔。1个用于控制接收MODBUS从站的回应帧的3.5个字符的帧间隔。最后一个用于接收时确保字符间的间隔小于1.5个字符时间。初始化前两个定时时间为3.645ms(波特率9600b/s时的3.5字符时间):

    操作步骤如下:

        1.设置定时周期

        2.设置预分频值

        3.设置时钟分频

        4.设置计数器增长方式

     MODBUS/CANBUS现场通信网关主站的工作流程如下图所示。

    网关工作在MODBUS主站模式时对从站响应帧的接收使用中断处理的方式。在第一个字节传输结束后启动第3号定时器,定时时间为1.5个字符时间,在后续的字节传输结束时清零计数器,保证一个帧中的字符间隔不超过1.5个字符时间。接收完成后启动第2号定时器,定时3.5个字符时间,在此时间内的接收的任何数据都将丢弃。

    网关作为MODBUS从站时对串口和定时器初始化与MODBUS作主站时相同,将数据组成CAN的帧,发送该帧,并向MODBUS主站发送响应帧。网关作为MODBUS从站的工作流程如下图所示。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

742

主题

11021

帖子

81

粉丝