FreeModbus RTU slave & Modbus RTU master

一、FreeModbus RTU 协议数据格式

FreeModbus RTU是开源的一个协议,并且使用FreeModbus RTU 只能当做从机Slave,RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成,其中数据又由数据长度(两个字节,表示的是寄存器个数,假定内容为M)和数据正文(M乘以2个字节)组成,而RTU协议是采用3.5个字节的空闲时间作为指令的起始和结束。

Modbus 数据的请求及应答

其中3.5个字节的空闲时间是指从接收到第一个字节数据到最后一个字节数据所有的时间,如下所示程序中是50us的定时时基,

那么3.5个字节的空闲时间 = 50us * usTimerT35_50us

 /* If baudrate > 19200 then we should use the fixed timer values
         * t35 = 1750us. Otherwise t35 must be 3.5 times the character time.
         */
        if( ulBaudRate > 19200 )
        {
            usTimerT35_50us = 35;       /* 1800us. */
        }
        else
        {
            /* The timer reload value for a character is given by:
             *
             * ChTimeValue = Ticks_per_1s / ( Baudrate / 11 )
             *             = 11 * Ticks_per_1s / Baudrate
             *             = 220000 / Baudrate
             * The reload for t3.5 is 1.5 times this value and similary
             * for t3.5.
             */
            usTimerT35_50us = ( 7UL * 220000UL ) / ( 2UL * ulBaudRate );
        }

调试modbus 工具

Modbus 调试精灵或者Modbus Poll模拟当做 主机
Modbus Slave 模拟当做 从机

http://www.modbustools.com/download.html//工具下载

二、参考文档

Modbus 协议文档

http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf

http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf

FreeModbus Slave

//FreeModbus 源代码:

https://sourceforge.net/projects/freemodbus.berlios/files/

//FreeModbus 移植参考:

https://www.dhlx.wang/STM32F411VET6/Porting_FreeModbus_to_STM32F411VET6_based_on_STM32CubeF4.html

http://blog.csdn.net/dldw8816/article/details/44563749

http://blog.csdn.net/liu236141068/article/details/51841245

Modbus RTU Master

//移植源代码

https://github.com/LittleBigQi/ModBus-Master

https://github.com/4-20ma/ModbusMaster

by 羊羊得亿
2018-01-30 ShenZhen

原文地址:https://www.cnblogs.com/yangxuli/p/8384028.html