随笔 - 733  文章 - 2  评论 - 12  阅读 - 92万

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

posted on   杰瑞鼠  阅读(624)  评论(0编辑  收藏  举报
编辑推荐:
· .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 中如何实现缓存的预热?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示