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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?