Modubus通讯及基础指令

一、常用功能码
  • 数字量(开关量):0/1 对应名称 线圈, 模拟量:float,对应名称 寄存器
  • DO/DI 是位操作,位操作的最小单位是Bit,一个字节byte代表8个开关量;
  • AO/AI 是字操作,字操作的最小单位是两个字节。
  • DO/AO,可读可写,DI/AI 只可读,且是非保持的,即外部有输入才可以读。
数字量:0/1 对应名称 线圈, 模拟量:float,对应名称 寄存器

01 - 读取线圈状态。备注:读DO,对于SuperIO来说,是输出信号,可以利用万用表测端口通断;

02 - 读离散输入状态。备注:读DI,对SuperIO来说,是输入信号,可以给端口24V的电压;

03 - 读保存寄存器。备注:读AO,可以用万用表在对应端口位置 测出 0~10V电压值;

04 - 读输入寄存器。备注:读AI,可以用万用表  给端口 0~10V电压;

05 - 写单个线圈。备注:写DO;

15(十六进制:0F) - 写多个线圈。 备注:写DO;

06 - 写单个保存寄存器。备注:写AO;

16(十六进制:10) - 写多个寄存器。备注:写AO;
二、Modubus RTU通讯
2.1、读DO
// 读1个位置(低位)
读指令: 01 01 00 00 00 01 FD CA
解释:
01 - 从机地址,比如SuperIO,SlaveID就是从5开始
01 - 功能码,读线圈状态

00 - 线圈起始地址高位 (起始地址 都是H 16进制的,比如0000H,0013H)
00 - 线圈起始地址低位

00 - 线圈结束地址高位
01 - 线圈结束地址低位

FD - CRC校正高位 
CA - CRC校正低位

CRC校正计算网站:http://www.ip33.com/crc.html

响应指令:01 01 01 01 90 48 
解释:
01 - 从机地址
01 - 功能码

01 - 返回的字节数, 一个字节代表8个开关量,(如果返回的字节数 > 1,则后续依次为 数据1,数据2.....)
01 - 返回的 数据1 (数据是16进制,转成二进制,就能代表开关量)

90 48 - CRC校正码

//读取8个位置
读指令:01 01 00 01 00 08 6C 0C
响应指令:01 01 01 3F 11 98 
2.2、读DI
读指令: 01 02 00 00 00 01 B9 CA
响应指令:01 02 01 01 60 48 
2.3、读AO
//AO AI 属于字操作,所以每次返回两个字节;
//读一个AO
读指令:01 03 00 00 00 01 84 0A
响应:01 03 02 00 64 B9 AF   (00 64就是返回的值,10进制就是100)
//读两个AO
读指令:01 03 00 00 00 02 C4 0B
响应:01 03 04 00 64 00 C8 BA 7A (00 64  00 C8是返回值)
2.4、读AI
读指令:01 04 00 00 00 01 31 CA
响应:01 04 02 00 64 B8 DB 
2.5、写DO
//写一组DO
写指令:05 0F 00 00 00 08 01 FF BF 26
解释:
05 - 从机地址
0F - 功能码,一次写多个线圈
00 00 - 起始地址
00 08 - 结束地址
01 - 字节数,如果数量 > 1,则依次排列数字, 高位在左边,低位在右边
FF - 对应的值 ,十六进制,
BF 26 - crc校正码

响应:05 0F 00 00 00 08 01 88 FF

//写多组,设置为DO
写指令:01 0F 00 20 00 80 10 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 5A 82

2.6、写AO
//写一组AO,8个
写指令:05 10 00 00 00 10 20 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 BD E0
三、Modubus TCP通讯
与RTU区别:
  • TCP/IP协议需要消息头;即 消息id + tcp协议代码 + 消息长度
  • TCP/IP协议不需要再后面 + CRC校正码
3.1、读DO
// 读一位DO
读指令:00 01 00 00 00 06 01 01 00 00 00 01
解释:
00 01 - 消息ID
00 00 - 表示当前是 TCP/IP协议
00 06 - 表示后面有多少个字节,比如上面的这,后面就有01 01 00 00 00 01 6个字符,所有这个位置是06

01 - 从机地址
01 - 功能码
00 00 - 起始地址
00 01 - 结束地址

响应:00 01 00 00 00 04 01 01 01 01 
解释:
00 01 - 消息ID,与请求指令一直
00 00 - 表示TCP/IP协议
00 04 - 表示后面字节个数

01 - 从机地址
01 - 功能码
01 - 返回的字节数
01 - 返回的数据1 - 十六进制
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值