您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页ModBus协议详细说明

ModBus协议详细说明

来源:华佗健康网
AP存储NP/MP的设备地址和短地址示例图

LBeeMyNPAddr[0]0LBeeMyNPAddr[1]LBeeMyNPAddr[2]1LBeeMyNPAddr[3]短 地 址AC29iDevAddrC9iShortAddrLBeeMyNPAddr[0]29ACLBeeMyNPAddr[1]LBeeMyNPAddr[2]201LBeeMyNPAddr[3]200............设备地址C9uint8 iDevAddr; //设备地址 uint16 iShortAddr; //设备地址对应的模块短地址 将1-247个设备地址分成5组,每50个一组,最后一组48个 根据(1 + iDevAddr/50)来确定当前需要读取的数据组 将每个设备地址对应的短地址存在LBeeMyNPAddr[100]中 数组下标为iDevAddr%50*2和iDevAddr%50*2+1(高低字节) ............LBeeMyNPAddr[96]48LBeeMyNPAddr[97]49LBeeMyNPAddr[98]LBeeMyNPAddr[99]LBeeMyNPAddr[90]比如现在设备地址为201,短地址为29AC,即: iDevAddr=201 iShortAddr=29AC LBeeMyNPAddr[91]由(1 + iDevAddr/50)可知当前需要读取第五个数据组。 需要读取数组下标为iDevAddr%50*2=2和iDevAddr%50*2+1=3 LBeeMyNPAddr[92]取出LBeeMyNPAddr[2]和LBeeMyNPAddr[3]的值与iShortAddr高位比较,如果相同就返回,如果不相同,就将iShortAddr的高字节赋给LBeeMyNPAddr[2]低字节赋给LBeeMyNPAddr[3] LBeeMyNPAddr[93]246247数据组1. . . . . .数据组5

NP/MP向AP进行可靠地址传输过程图

APNP/MP初始化MP、NP:搜网 NP读取设备地址并比较广播短地址发送到簇3MP发到簇5NP发到簇3组网保存NP/MP的短地址和设备地址收到NP/MP发来的设备地址和短地址后,向NP/MP回复确认存储AP短地址检查AP地址应答包状态(默认为false)。如果false就发送设备地址和短地址给AP并设时间中断发送ACK发到簇3中断时间到如果值为true,表示AP已经收到自己发去的设备地址和短地址,此时MP开启自动上报时间中断........ 非标准ModBus协议帧结构: 查询应答帧要求: 设备地址:传感网中每个设备的地址1-247

功能码:1个字节,0x03-设备读数据信息

起始地址:2个字节,数据起始的地址。一组数据有2个数据构成,因此数据组的起始地址为偶数。例如数据组0的起始地址为0,数据组1的起始地址为2,数据组2的起始地址为4,数据组M的起始地址为2M。数据个数:N=2M,其中N为数据个数,M为数据组个数;1组数据=2个数据=4个字节;1个数据=2个字节;CRC1校验:2个字节,校验内容不包括节点地址和CRC2。CRC2校验:2个字节,校验内容包括前面所有的数据

设备地址寄存器地址:0x0000 温度寄存器地址:0x0001 湿度寄存器地址:0x0002 错误代码寄存器地址:0x0003

1、 读寄存器数据帧结构

设备地址 功能码起始地址数据个数CRC1CRC2一个字节一个字节2个字节2个字节2个字节2个字节LHLH03XXXXNXXXXXXXXXX

2、 正确应答

设备地址 功能码字节计数数据组1名称及数据组1数值...数据组M名称及数据组M数值CRC1CRC2一个字节一个字节1个字节格式 2个字节2个字节格式 2个字节2个字节2个字节2个字节名称格式名称格式名称格式名称格式LHLH032*N=4MXX...XXXXXXXXXXXXXXXXXXXXXXXX

3、 错误应答

错误类型: 1、 功能码错误

2、 不满足 起始地址 = OK 并且起始地址 + 数量 = OK 3、 不满足 0x0001 <= 数据个数 <= 0x0010 4、 不满足 读多个寄存器 = OK 5、 通讯中断

设备地址 功能码一个字节一个字节XX83CRC1CRC22个字节2个字节LHLH01/02/03/04/05XXXXXXXX错误类型2个字节

写N个数据命令

状态字0x0010 节点地址:8字节

设备地址传感网中每个设备的地址1-247 功能码:一个字节,0x10 写数据命令 起始地址:2个字节

其他项参见查询应答帧规约 4、 写寄存器正确应答

设备地址 功能码起始地址数据个数字节计数数据组1名称及数据组1数值...数据组M名称及数据组M数值CRC1CRC2一个字节一个字节2个字节2个字节1个字节格式 2个字节2个字节格式 2个字节2个字节2个字节2个字节名称格式名称格式名称格式名称格式LHLHXX10XXXXN=2M2*N=4MXXXXXXXX...XXXXXXXXXXXXXXXX

5、 错误应答

节点地址设备地址 功能码错误类型CRC1CRC28个字节一个字节一个字节2个字节2个字节2个字节LHLHXXXXXXXXXX9001/02/03/04/05XXXXXXXXXXXXXXXX

2106、 格式

位地址Bit7Bit6Bit5Bit43含义0:正数值1:正负数数据类型长整型数四字节数0 - 数值 值标识 字节标识1 -开关量0 双字节0低2字节1 四字节1高2字节保留小数点位置0-70 无小数 1 一位小数2 两位小数.

标准ModBus帧结构

1、 功能码01(0x01):读1路或多路开关量输出状态

起始位: 为0~1;

开关量个数:为1~2; 超过范围命令无效 起始位+开关量个数 :1~2;超过范围命令无效

主机发送:

设备地址 功能码一个字节一个字节XX0x01起始位读开关量个CRC2个字节数 2个字节2个字节HLXXXXXXXXXXXX

从机响应:

设备地址 功能码CRCOUT状态数据长度一个字节一个字节2个字节数据HLXXXXXXXX0x01XXXX

2、 功能码02(0x02):读1路或多路开关量输入状态 DI

起始位: 为0~1; 开关量个数:为1~2; 超过范围命令无效 起始位+开关量个数 :1~2;超过范围命令无效

主机发送:

设备地址 功能码一个字节一个字节XX02 从机响应

起始位读开关量个CRC2个字节数 2个字节2个字节HLXXXXXXXXXXXX

3、 功能码03(0x03): 读多路寄存器

设备地址 功能码CRC数据长度DI状态数据一个字节一个字节2个字节HLXXXXXXXX02XXXX

起始地址: 0000H~04FFH, 超过范围命令无效

数据长度: 0001H~0078H, 最多可一次读取120个连续寄存器 起始地址+数据长度:1~004FFH, 超过范围命令无效

主机发送:

设备地址 功能码起始地址数据长度CRC一个字节一个字节2个字节2个字节2个字节HLXXXXXXXXXX03XXXX 从机响应:

寄存器CRC数据n2个字节HLXXXXXXXX设备地址 功能码返回寄存器寄存器一个字节一个字节字节数数据1数据2XX03XXXXXXXXXX......

4、 功能码05(0x05):写1路开关量输出(遥控)

控制命令为:

\"FF00\"为输出开关量为\"1\",即控制继电器\"合\";\"0000\"为输出开关量为\"0\",即控制继电器\"分\"。

主机发送:

设备地址 功能码输出bit位一个字节一个字节XX05XXXX控制命令XXXX 从机响应

设备地址 功能码输出bit位一个字节一个字节XX05XXXXCRC2个字节HLXXXX

控制命令XXXX

5、 功能码0F(0x0F):写多路开关量输出(遥控)

起始位地址: 0000H~0001H, 超过范围命令无效 输出数量: 0001H~0002H,

起始位地址+输出数量:1~02H, 超过范围命令无效

主机发送:

CRC2个字节HLXXXX

设备地址 功能码起始位一个字节一个字节地址XX

从机响应:

输出数量XXXX字节计数输出数据XXXXXXXX0FXXXXCRC2个字节HLXXXX

设备地址 功能码一个字节一个字节XX起始位地址XXXX输出数量XXXX0F

6、 功能码10(0x10):写多路寄存器

何数据;

CRC2个字节HLXXXX

起始地址: 0000H~00B2H, 超过范围命令无效;请不要向未使用的或保留的寄存器地址写入任寄存器数量:0001~0078H, 最多可一次设置120个连续寄存器; 起始地址+写寄存器数量 :0001H~00B2H,超过范围命令无效; 主机发送:

设备地址 功能码写寄存起始地址字节计数保存数据1一个字节一个字节器数量XX从机响应:

......保存数据nXXXX10XXXXXXXXXXXXXXCRC2个字节HLXXXX

设备地址 功能码起始地址一个字节一个字节XX10XXXX写寄存器数量XXXX

CRC2个字节HLXXXX

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务