MODBUS学习

MODBUS详细技术详见原文链接:https://blog.csdn.net/weixin_39793752/article/details/81456488

MODBUS示例:
通信协议:
波特率:9600 数据位:8 校验位:无 停止位:1

上位机(计算机):
字节号 1 2 3 4 5 6 7 8
意义 ID Command 数据地址 Value CRC
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,读:3或4,写:6
3 数据地址:2个字节,寄存器地址,读从100开始,写从200开始
4 Value:2个字节,读:个数(以整型为单位),写:命令 / 数据(以整型为单位)
5 CRC:计算出CRC
下位机(PC39A):
读数据,若正确
字节号 1 2 3 3+N (N=个数*2) 3+N+1 3+N+2
意义 ID Command=3 / 4 数据个数 数据 CRC
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,收到的上位机命令
3数据个数: 1个字节,返回数据个数(以字节为单位)
4 Value:N个字节,是返回上位机的数据
5 CRC:计算出CRC
写命令,若正确
返回收到的数据:
若错误
字节号 1 2 3 4 5
意义 ID Command 数据 CRC
注:1 ID:1个字节,由单机来定(0~255)
2 Command:1个字节,收到的上位机命令或上0x80,
如收到3,返回0x83
3数据: 1个字节,错误的指令
错误指令
1:表示command不存在
2:表示数据地址超限

4 CRC:计算出CRC

例如读PC39A电流数据:
机器地址为12,电流的数据地址100,数据为15.45(A) (一个整型数据)
主机:
ID Command 数据地址 Value CRC
16进制 0x0c 0x03 0x0064 0x0001 CRC_H CRC_L
10进制 12 3 100 1 CRC_H CRC_L

从机返回
如正确:
ID Command 数据个数(以字节为单位) Value CRC
16进制 0x0c 0x03 0x002 0x0609 CRC_H CRC_L
10进制 12 3 2 1545 CRC_H CRC_L

如错误:
ID Command 数据 CRC
16进制 0x0c 0x83 0x02 CRC_H CRC_L
10进制 12 131 2 CRC_H CRC_L

例如发PC39A启动命令:
机器地址为12,命令的地址200,数据为25000(25000表示启动)
主机:
ID Command 数据地址 Value CRC
16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L
10进制 12 6 200 25000 CRC_H CRC_L

从机返回
如正确:
ID Command 数据地址 Value CRC
16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L
10进制 12 6 200 25000 CRC_H CRC_L

如错误:
ID Command 数据 CRC
16进制 0x0c 0x86 0x02 CRC_H CRC_L
10进制 12 134 2 CRC_H CRC_L

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值