首页 > 基础资料 博客日记
Modbus 常用功能码(01/02 03/04 05/06 10)用法 及常见数据类型
2025-01-09 09:00:07基础资料围观76次
本篇文章分享Modbus 常用功能码(01/02 03/04 05/06 10)用法 及常见数据类型,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
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(两个字节)
文章来源:https://blog.csdn.net/qq_48080772/article/details/140274088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: