*************
RS485通讯
*************
![]() |
RS485用来通讯,相当于网线。
通常来说,通讯数据是十六进制。
数据帧结构为:地址码 + 功能码 + 数据域 + 校验码。
如果你送过快递,那么事情就变得简单了。想象一下你是快递小哥,地址码告诉你是具体的位置,功能码是送快递还是上门取件,数据域就是快递本身,检验码就是验证码,确保流程完整性。
*************简单的主机读取从机请求温度值,假设当前温度13℃*************
主机发送指令:
| 01 | 03 | 00 01 | 00 01 | D5 CA |
|
地址码 目标设备地址 |
功能码 只读 |
起始寄存器地址 起始位置为1 | 寄存器数量 |
检验码 你不用管 |
这个时候,从机会响应指令:
| 01 | 03 | 02 | 00 0D | D5 CA |
|
地址码 从机地址 |
功能码 与请求一致 | 返回数据字节数 |
寄存器数据 转换成十进制就是 13 | 检验码 |
OK,这是基本的,一次只请求一个信息。那么聪明的你又想到了,如果我一次请求多个信息呢?
也是OK的。
主机发送命令:
| 01 | 03 | 00 01 | 00 01 | 00 02 | WW WW |
|
地址码 目标设备地址 |
功能码 只读 |
起始寄存器地址 起始位置为1 | 温度参数地址 | 湿度参数地址 |
检验码 你不用管 |
从机回复命令:
| 01 | 03 | 04 | 00 0D | 00 26 | TT TT |
|
地址码 目标设备地址 |
功能码 只读 | 返回数据字节数 | 温度参数 | 湿度参数 |
检验码 你不用管 |
*************

1937

被折叠的 条评论
为什么被折叠?



