Modbus 常用功能码(01/02 03/04 05/06 10)用法 及常见数据类型

1.数据类型:

SINT,有符号短整型,1个字节;

USINT,无符号短整型,1个字节;

INT,有符号整型,2个字节;

UINT,无符号整型,2个字节;

DINT,有符号双整型,4个字节;

UDINT,无符号双整型,4个字节;

LINT,有符号长整型,8个字节;

ULINT,无符号长整型,8个字节

2.功能码使用:

(1.)01/02功能码(DI量):

发送命令:  拨码地址  + 功能码  + 寄存器起始地址 + 长度 + 校验码 
读取的响应命令:拨码地址  +  功能码  +  字节数  +  数据  +  校验码
例子:
    读取08 到 17 开关状态
[16:18:07.049]发→◇03 01 00 08 00 0A 3C 2D
 拨码地址:03
 功能码:01
 起始地址:00 08
 长度:00 0A
 校验码:3C 2D   
    
[16:18:07.054]收←◆03 01 02 EF 03 CC 0D
 拨码地址:03
 功能码:01
 字节数:02(响应数据 EF 03 为两个字节)
 数据:EF 03
 校验码:CC 0D   
​
 响应数据解析:
 十六进制:   EF 03
 转为2进制:11101111  00000011  
 例如:11101111  
                   1  1  1  0  1  1  1  1
    对应寄存器地址:15 14 13 12 11 10 09 08(开关状态)
    
 单个字节8位(11101111 从右往左读取)
     08状态:1
     09状态:1
     10状态:1
     11状态:1
     12状态:0
     13状态:1
     14状态:1
     15状态:1
    (00000011 从右往左读  16 17)
     16状态:1
     17状态:1
    
    

(2.)03/04 功能码(AI量):

发送命令:拨码地址  + 功能码 + 寄存器起始地址  + 长度 +校验码
响应命令:拨码地址  + 功能码 + 发送命令的字节数 *2 + 数据  + 校验码 
例子:    
[15:29:38.156]发→◇01 03 02 1A 00 02 E4 74
[15:29:38.161]收←◆01 03 04 4A 16 00 00 0D EF 
响应命令解析:
拨码地址:01
功能码:03
发送命令长度 * 2: 04
寄存器数值:4A 16 00 00
CRC检验码:0D EF

备注:存在高低位反转情况,正常情况默认 高位在前 低位在后
    
[15:29:39.158]发→◇01 04 02 1A 00 02 E4 74
[15:29:40.171]收←◆01 04 04 4A 16 00 00 0D EF

     

(3.)05/06 功能码(控制单个寄存器):

拨码地址 + 功能码 + 寄存器地址 + 寄存器设定数值 + 校验码
例子:
[17:00:43.609]发→◇04 06 00 0B 00 C8 F9 CB
    拨码地址:04
    功能码:06
    寄存器地址:00 0B
    寄存器数值:00 C8
    校验码:F9 CB
 [17:00:43.611]收←◆04 06 00 0B 00 C8 F9 CB    

(4.)10功能码命令(控制多个寄存器):

操作描述:报警温度阀值下限(℃)
​
发送:01 10 72 7B 00 01 02 00 0B BF DB 
   
拨码地址:01(一个字节)
​
功能码:10(一个字节)
​
起始地址:72 7B(两个字节)29307
​
寄存器数目:00 01(两个字节)
​
字节数:02(一个字节)
​
寄存器值:00 0B(N*2字节)
​
CRC校验码:BF DB(两个字节)
​
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值