MODBUS-RTU学习

一 RTU比ASCII(传输间隔可达1s不出错)传输密度高。参数格式:起始位+8BITS数据位+校验位+停止位。

16位数据先发送高位再发送低位,DH=Data>>8;DL=(U8)Data;也可以用ARM的汇编高低字节交换操作指令。若0x1234==__REV16(0x3412)

1.1校验默认为偶校验,建议为无校验,测试要多1个停止位(即停止位为2位)

1.2发送顺序为从左到右LSB->MSB

1.3在通讯速率小于等于19200时必须满足:各帧之间间隔不小于3.5个字符时间且各字符之间间隔不大于1.5个字符时间;当大于19200速率时要求t3.5=1750ms,t1.5=750us

1.4CRC16:先给低字节再送高字节,CRC内容不包括起始位、校验位和停止位。

二接口要求及驱动能力:从设备理论上1~247,地址0为广播地址。子节点地址必须唯一。

RS485的2线制+公共地(单点):不加中继时为32个,不加极性偏置时要比偏置时少4个。极性偏置:上下拉电阻为450~650欧姆,上拉到5V,下拉到地,此时采用1nf/10v和120欧姆/0.25w的电阻串联匹配来消除反射;不加极性偏置匹配电阻为150欧姆/0.5W.

RS232:不超过20m远。

三差错码与异常码:

差错码:当出错时将功能码的最高位置1即:差错码=功能码+0x80

异常码:在资料的P42页,主要有01~04(功能出错、地址出错、非法数值、无法响应)

四完善方面:

1设备识别码:

2超时管理:响应时间+转换时间。

3错误及性能管理:功能码+计数器编号

五:注意:

5.1功能码0x10(写多个寄存器):寄存器的数量范围为1~120

原文地址:https://www.cnblogs.com/jieruishu/p/4396209.html