基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识

通讯协议

硬件层协议:解决0和1的可靠传输,常有RS232、RS485、CAN、IIC、SPI …

软件层协议:解决传输目的,常有Modbus、TCP/IP、CANopen …

基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识_第1张图片

主从模式

   01系统中只有一个设备是主机。

   02系统中所有的从机不可以主动向主机发数据。

   03系统中的主机和所有从机上电后处于接受状态(监听状态)。

   04任何一次数据交换有主机发起。

基于485总线的Modbus

基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识_第2张图片

主从模式:整个系统只有一个主机,每个从机必须有一个唯一的地址(0-247)

0地址是广播地址,主机保留,即主机向0地址发送数据包时,发送所有从设备,所有的从设备都不相应。

Modbus主机寻址格式(两种传输方式)

  01 Rtu方式,也是十六进制方式,该方式执行效率高。比如发送0x03: 总线上传输数据形式为: 0000 0011

 02 ASC方式,该方式便于调试,比如发送0x03:将数据0和3转为’0’和’3’ 即是0x30 和0x33 总线上传输数据形式为: 0011 0000 0011 0011

Rtu方式:

基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识_第3张图片

Rtu帧结束方式:

从机以接受数据停止时间到达3.5字符以上,认为主机的寻址帧完成,并开始处理。例如:波特率9600bit/s 每位数据传输时间:100000 us/9600 = 104us ,一个字符(10位)传输时间:104us*10 =1040us, 3.5个字符传输时间:1040*3.5 = 3645us  4ms

ASC方式:

基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识_第4张图片

 LCR校验:

地址码+功能码+数据1+数据2+…+数据n。  相加

01.(地址码+功能码+数据1+数据2+…+数据n)%256  取余

02.~((地址码+功能码+数据1+数据2+…+数据n)%256) 取反

03.~((地址码+功能码+数据1+数据2+…+数据n)%256)+1  加1

Modbus从设备回应数据包格式

01.回应数据与主机查询数据包格式一致

02.正常回应:功能码与主机发送的功能码一致(1-127)

03.异常回应:功能码要在收到的功能码+128.

modbus从机协议实现

01.硬件上具备串口或485接口。

02.硬件上需要一个定时器,精确到ms级别。

03.Modbus硬件接口电路如下:

基于STM32 Modbus rtu 从机代码 开源 (附上测试工程)-------------------------1理论知识_第5张图片

你可能感兴趣的:(STM32)