字节的D7表示传输方向:≥8表示上行(从站发出的应答帧)<8表示主站发出的命令帧 字节的D6表示从站的应答标志位 即高四位≥4 <8是从站异常应答
0001 0010 0011 0100 0101 0110 0111 1000 D4~D0 功能码 11H就表示 主站的读数据请求 91H表述从站应答主站的读数据请求 控制字 1X基本都是主站请求帧 13H表示主站请求读电表的通讯地址
表示后面数据域DATA的字节数
数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变。传输时发送方按字节进行加33H 处理,接收方按字节进行减33H 处理。 前面四位是:数据标识
最后一个字节表示报文序列 主从的报文序列的对应的 图中 发起和应答的控制域C、信息域R 控制域高字节小于8表示下行,大于等于8表示上行。
信息域一般后面接着的是十二位的地址域,这取决于信息域最高字节的D2字节通信模块标识位,04都是有地址的。
68 39 00 43 04 00 28 00 00 7A 地址:89 67 45 00 11 11 20 63 99 18 12 17 AFN 13 Fn 01 00 实施数据采集的时候(代理) 路由转发 监控从节点 (一般是召测时:扩展抄读模式(AFN=F1)Fn=1 集中器主动并发) 00 00 00 1A :报文长度1A 报文内容:68 18 00 43 05 20 63 99 18 12 17 02 DF 0F 05 02 02 01 00 00 02 00 00 8B F0 16 7D 16
报文内容是oop协议(路由转发给电表模块) 清除集中器档案(初始化)以后下载 再重新装载更新后
68 0F 00 43 00 00 28 00 00 04 10 01 00 80 16
68 0F 00 43 控制域 下行( 集中器到路由) 信息域R:00 00 28 00 00 04 AFN 10 路由器查询 Fn 01 00 从节点数量 80 16
68 13 00 83 00 00 00 00 00 04 10 01 00 00 00 00 04 9C 16
68 13 00 83 控制域 上行 (路由到集中器) 信息域R:00 00 00 00 00 04 AFN 10 路由器查询 Fn 01 00 从节点数量 数据 00 00 00 04 9C 16
68 25 00 43 00 00 28 00 00 05 11 01 00 03 24 03 00 18 12 17 00 20 63 99 18 12 17 00 48 00 01 06 18 20 02 D3 16
68 25 00 控制域C:43 下行 信息域R:00 00 28 00 00 05 AFN:11 路由设置 Fn:01 00 :F1 添加从节点 03 24 03 00 18 12 17 00 20 63 99 18 12 17 00 48 00 01 06 18 20 02 (从节点数量 3,从节电地址:24 03 00 18 12 17,00透明传输,20 63 99 18 12 17,00透明传输,48 00 01 06 18 20,02 DL/T 645—2007规约) D3 16
68 15 00 83 00 00 00 00 00 05 00 01 00 FF FF FF FF 01 00 86 16
68 15 00 83 上行报文 路由给终端的 信息域R:00 00 00 00 00 05 AFN:00 确定/否认 Fn:01 00 确定 DATA: FF FF FF FF 01 00 86 16
68 0F 00 43 00 00 28 00 00 06 10 01 00 82 16
68 0F 00 43 下行报文 终端给路由 信息域R:00 00 28 00 00 06 AFN:10 路由器查询 Fn:01 00 从节点数 82 16
68 13 00 83 00 00 00 00 00 06 10 01 00 03 00 00 04 A1 16
68 13 00 83 上行报文 信息域 R:00 00 00 00 00 06 AFN:10 路由器查询 Fn:01 00 从节点数 DATA:03 00 00 04 三个 A1 16
68 12 00 43 00 00 28 00 00 07 10 02 00 01 00 01 86 16
68 12 00 43 下行报文 信息域R :00 00 28 00 00 07 AFN :10 路由查询 Fn:02 00 从节点信息 01 00 从节点起始序号 01 从节点数量**(这里有问题)** 86 16
68 1A 00 83 00 00 00 00 00 07 10 02 00 03 00 01 48 00 01 06 18 20 00 10 37 16
68 1A 00 83 上行 信息域R:00 00 00 00 00 07 AFN:10 路由查询 Fn:02 00 :F2 从节点信息 03 00 从节点表总量 01 本次应答从节点数量 从节点1地址:48 00 01 06 18 20 从节点1中继级别:00 10 37 16
流程图
10F1 路由查询 从节点数量11F1 路由设置 添加从节点(个数,地址1)10 F1路由查询 从节点数量10F2路由查询从节点信息10F1 路由答复从节点数量为000F1 确定10F1 路由答复从节点数量为310F2从节点总量3第一节点地址68 0F 00 43 00 00 28 00 00 25 10 01 00 A1 16
68 0F 00 43 00 00 28 00 00 25 AFN:10 路由查询 Fn 01 00 A1 16
68 13 00 83 00 00 00 00 00 25 10 01 00 03 00 00 04 C0 16
68 13 00 控制 83 答复 信息域R:00 00 00 00 00 25 AFN:10 路由查询 Fn :01 00 从节点数目 表数量:03 00 最大挂载数量 00 04 :04 00 :1024 C0 16
68 12 00 43 00 00 28 00 00 26 10 02 00 01 00 03 A7 16
68 12 00 43 下行 信息域 00 00 28 00 00 26 AFN:10 路由查询 Fn:02 00 从节点信息 01 00 从节点起始序号 03 从节点数目 A7 16
68 2A 00 83 00 00 00 00 00 26 10 02 00 03 00 03 48 00 01 06 18 20 01 14 20 63 99 18 12 17 01 04 24 03 00 18 12 17 02 04 2D 16
68 2A 00 83 信息域:00 00 00 00 00 26 AFN:10 查询路由 Fn:02 00 从节点信息 03 00 从节点总数量 03 本次应答的从节点数量n 48 00 01 06 18 20 从节点1地址 01 14从节点1信息 20 63 99 18 12 17 从节点2地址 01 04 从节点2信息 24 03 00 18 12 17 从节点3地址 02 04从节点3信息 2D 16
68 0F 00 43 00 00 28 00 00 27 10 01 00 A3 16
68 0F 00 43 00 00 28 00 00 27 10 查询路由 01 00 从节点数量 A3 16
68 13 00 83 00 00 00 00 00 27 10 01 00 03 00 00 04 C2 16
68 13 00 83 00 00 00 00 00 27 10 01 00 03 00 从节点数量三个 00 04 最大挂在数量1024 C2 16
68 12 00 43 00 00 28 00 00 28 10 02 00 01 00 01 A7 16
68 12 00 43 下行 00 00 28 00 00 28 10 路由查询 02 00 节点信息查询 01 00 从节点起始序号 01 从节点数量 A7 16
68 1A 00 83 00 00 00 00 00 28 10 02 00 03 00 01 48 00 01 06 18 20 01 14 5D 16
68 1A 00 83 00 00 00 00 00 28 10 路由查询 02 00 节点信息查询 03 00 从节点表总量 01 本次应答从节点数量 48 00 01 06 18 20 从节点1地址 01 14 从节点1中继级别 5D 16
68 0F 00 43 00 00 28 00 00 29 10 01 00 A5 16 下:查询路由 从节点数目
68 13 00 83 00 00 00 00 00 29 10 01 00 03 00 00 04 C4 16 上:查询路由 从节点数目3 最大挂载1024
68 12 00 43 00 00 28 00 00 2A 10 02 00 01 00 03 AB 16 下:查询路由 从节点信息
68 2A 00 83 00 00 00 00 00 2A 10 02 00 03 00 03 48 00 01 06 18 20 01 14 20 63 99 18 12 17 01 04 24 03 00 18 12 17 02 04 31 16 上:查询路由 从节点信息 :从节点总量3 从节点1地址 从节点1信息 从节点2地址 从节点2信息 从节点3地址 从节点3信息
68 0F 00 43 00 00 28 00 00 2B 10 01 00 A7 16 下:路由查询 从节点数
68 13 00 83 00 00 00 00 00 2B 10 01 00 03 00 00 04 C6 16 上:查询路由 从节点数目3 最大挂载1024
68 12 00 43 00 00 28 00 00 2C 10 02 00 01 00 01 AB 16 下:查询路由 从节点信息
68 1A 00 83 00 00 00 00 00 2C 10 02 00 03 00 01 48 00 01 06 18 20 01 14 61 16 上:查询路由 从节点信息 :从节点总量3 本次应答从节点数量1 从节点1地址48 00 01 06 18 20 从节点1中继级别01 14
68 39 00 43 04 00 28 00 00 2D 89 67 45 00 11 11 24 03 00 18 12 17 F1 01 00 00 00 1A 00 68 18 00 43 05 24 03 00 18 12 17 02 69 88 05 02 02 01 00 10 02 00 00 2A 33 16 19 16 下:AFN:F1扩展抄读F1 集中器主动并发抄表 规约类型00 从节点附属节点 00 报文长度 1A 00: 26字节 数据域(oop协议):68 18 00 43 05 24 03 00 18 12 17 02 69 88 05 02 02 01 00 10 02 00 00 2A 33 16 (SA 05 ADD 24 03 00 18 12 17 CA 02 HCS 69 88 APDU: 05 02 读取 PIID 02 LEN: 01 OAD: 00 10 02 00 正向有功电能 属性2 时间标签 00 帧尾 00 2A 结束符16 )结束符 16
68 39 00 43 04 01 28 00 00 2E 89 67 45 00 11 11 20 63 99 18 12 17 F1 01 00 00 00 1A 00 68 18 00 43 05 20 63 99 18 12 17 02 DF 0F 05 02 02 01 00 10 02 00 00 2A 33 16 02 16 下:AFN:F1扩展抄读F1 集中器主动并发抄表 规约类型00 从节点附属节点 00 报文长度 1A 00: 26字节 数据域(oop协议):68 18 00 43 05 20 63 99 18 12 17 02 DF 0F 05 02 02 01 00 10 02 00 00 2A 33 16 (SA 05 ADD 20 63 99 18 12 17 CA 02 HCS 69 88 APDU: 05 02 读取 PIID 02 LEN: 01 OAD: 00 10 02 00 正向有功电能 属性2 时间标签 00 帧尾 00 2A 结束符16 )结束符 16
68 2F 00 43 04 02 28 00 00 2F 89 67 45 00 11 11 48 00 01 06 18 20 F1 01 00 02 00 10 00 68 48 00 01 06 18 20 68 11 04 33 32 34 33 38 16 08 16 下:AFN:F1扩展抄读F1 集中器主动并发抄表 规约类型02 从节点附属节点 00 报文长度 10 00: 16字节 数据域(645协议):68 48 00 01 06 18 20 68 11 04 33 32 34 33 38 16 )结束符 16
68 55 00 83 04 03 03 00 00 2E 20 63 99 18 12 17 89 67 45 00 11 11 F1 01 00 00 37 00 68 35 00 C3 05 20 63 99 18 12 17 02 EC 9E 85 02 02 01 00 10 02 00 01 01 05 06 00 00 00 08 06 00 00 00 00 06 00 00 00 08 06 00 00 00 00 06 00 00 00 00 00 00 97 04 16 68 16 上:AFN:F1扩展抄读F1 集中器主动并发抄表 抄读状态成功00 报文长度37 00 数据域(oop协议):68 35 00 C3 05 20 63 99 18 12 17 02 EC 9E 85 02 02 01 00 10 02 00 01 01 05 06 00 00 00 08 06 00 00 00 00 06 00 00 00 08 06 00 00 00 00 06 00 00 00 00 00 00 97 04 16 )结束符 16
68 59 00 83 04 03 03 00 00 2D 24 03 00 18 12 17 89 67 45 00 11 11 F1 01 00 00 3B 00 FE FE FE FE 68 35 00 C3 05 24 03 00 18 12 17 02 5A 19 85 02 02 01 00 10 02 00 01 01 05 06 00 00 00 0A 06 00 00 00 0A 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 00 00 EC 34 16 EB 16 上:AFN:F1扩展抄读F1 集中器主动并发抄表 抄读状态成功00 报文长度3B 00 数据域 68 35 00 C3 05 24 03 00 18 12 17 02 5A 19 85 02 02 01 00 10 02 00 01 01 05 06 00 00 00 0A 06 00 00 00 0A 06 00 00 00 00 06 00 00 00 00 06 00 00 00 00 00 00 EC 34 16
68 42 00 83 04 03 03 00 00 2F 48 00 01 06 18 20 89 67 45 00 11 11 F1 01 00 02 24 00 68 48 00 01 06 18 20 68 91 18 33 32 34 33 36 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 36 33 33 33 CE 16 64 16 上:AFN:F1扩展抄读F1 集中器主动并发抄表 抄读状态成功00 报文长度37 00 数据域 68 48 00 01 06 18 20 68 91 18 33 32 34 33 36 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 36 33 33 33 CE 16
68 0F 00 43 00 00 28 00 00 4B 10 01 00 C7 16 下:查询从节点数 68 13 00 83 00 00 00 00 00 4B 10 01 00 03 00 00 04 E6 16 上:从节点数3 最大挂载1024 68 12 00 43 00 00 28 00 00 4C 10 02 00 01 00 03 CD 16 下:查询从节点信息 68 2A 00 83 00 00 00 00 00 4C 10 02 00 03 00 03 48 00 01 06 18 20 01 14 20 63 99 18 12 17 01 04 24 03 00 18 12 17 01 04 52 16 上:从节点总数3个 本次答复3个 从节点1地址 从节点1信息。。。从节点3信息 68 16 00 43 00 00 28 00 00 4D 11 02 00 01 24 03 00 18 12 17 34 16 下:路由设置 11F2 删除从节点 从节点数量1 地址:24 03 00 18 12 17 68 15 00 83 00 00 00 00 00 4D 00 01 00 FF FF FF FF 01 00 CE 16 上:确定 68 0F 00 43 00 00 28 00 00 4E 10 01 00 CA 16 下:查询从节点数 68 13 00 83 00 00 00 00 00 4E 10 01 00 02 00 00 04 E8 16 上:从节点 数:2 68 12 00 43 00 00 28 00 00 4F 10 02 00 01 00 01 CE 16 下:查询从节点信息 从节点起始序号01 00 从节点数量 01 68 1A 00 83 00 00 00 00 00 4F 10 02 00 02 00 01 48 00 01 06 18 20 01 14 83 16 上:从节点总数 02 00 本次应答 01个 地址为48 00 01 06 18 20 从节点信息 01 14 校验83 结束符16
68 38 00 C3 00 00 00 00 00 00 03 02 01 F2 3B 00 01 00 00 3C 01 00 0F 02 90 01 F0 89 67 45 00 11 11 FE 03 00 00 17 03 08 17 03 08 43 54 35 52 04 04 19 02 02 96 80 BB 16 上:03F10 本地通信模块运行模式信息 主节点地址89 67 45 00 11 11
68 15 00 03 00 00 28 00 00 00 00 01 00 FF FF FF FF 00 00 28 16 下:00 F1 确认
68 10 00 43 00 00 28 00 00 00 03 04 01 F1 64 16 下:03 F11 查询本地主节点通讯模块ID信息
68 30 00 83 00 00 00 00 00 00 03 04 01 F1 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7D 16 上:03 F11 本地主节点通讯模块ID
68 0F 00 43 00 00 28 00 00 01 03 08 00 77 16 下:03F4 查询无线通信参数
68 15 00 83 00 00 00 00 00 01 03 08 00 89 67 45 00 11 11 E6 16 上:03F4 查询无线通信参数
68 0F 00 43 00 00 28 00 00 02 03 80 01 F1 16 下:03F16查询宽带载波通信参数
68 10 00 83 00 00 00 00 00 02 03 80 01 02 0B 16 上:03F16查询宽带载波通信参数
68 0F 00 43 00 00 28 00 00 03 10 01 00 7F 16 下:10F1 查询从节点数目
68 13 00 83 00 00 00 00 00 03 10 01 00 00 00 00 04 9B 16 上: 10F1 从节点数0
68 0F 00 43 ~~00 00 28 00 00 04 10 01 00 80 16 下:查询 从节点
68 13 00 83 00 00 00 00 00 04 10 01 00 00 00 00 04 9C 16 下:从节点数 0
68 25 00 43 00 00 28 00 00 05 11 01 00 03 24 03 00 18 12 17 00 20 63 99 18 12 17 00 48 00 01 06 18 20 02 D3 16 下:路由设置 三个从节点 从节点1地址24 03 00 18 12 17 规约类型00 从节点2地址 20 63 99 18 12 17 规约类型00 从节点3地址 48 00 01 06 18 20 规约类型 02 (645协议)
68 15 00 83 00 00 00 00 00 05 00 01 00 FF FF FF FF 01 00 86 16 上:确定
68 0F 00 43 00 00 28 00 00 06 10 01 00 82 16 下:查询从节点数量
68 13 00 83 00 00 00 00 00 06 10 01 00 03 00 00 04 A1 16 上:从节点数量3
68 12 00 43 00 00 28 00 00 07 10 02 00 01 00 01 86 16 下:查询从节点信息 从节点起始序号01 从节点 数量1
68 1A 00 83 00 00 00 00 00 07 10 02 00 03 00 01 48 00 01 06 18 20 00 10 37 16 上:从节点总数3 本次应答从节点数量01 从节点地址48 00 01 06 18 20 从节点信息 00 10
68 38 00 C3 00 00 00 00 00 00 03 02 01 F2 3B 00 01 00 00 3C 01 00 0F 02 90 01 F0 89 67 45 00 11 11 FE 03 03 00 17 03 08 17 03 08 43 54 35 52 04 04 19 02 02 96 80 BE 16 上:03 F10 本地通信模块运行模式信息
68 0F 00 43 00 00 28 00 00 08 03 02 01 79 16 下: 03 F10 查询本地通信模块运行模式信息
68 38 00 83 00 00 00 00 00 08 03 02 01 F2 3B 00 01 00 00 3C 01 00 0F 02 90 01 F0 89 67 45 00 11 11 FE 03 03 00 17 03 08 17 03 08 43 54 35 52 04 04 19 02 02 96 80 86 16 上:03 F10 本地通信模块运行模式信息
68 10 00 43 00 00 28 00 00 09 03 04 01 F1 6D 16 下:03F11 本地通信模块AFN索引
68 30 00 83 00 00 00 00 00 09 03 04 01 F1 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 16 上:03F11 本地通信模块AFN索引
68 0F 00 43 00 00 28 00 00 0A 03 08 00 80 16 下:03F4 查询无线通信参数
68 15 00 83 00 00 00 00 00 0A 03 08 00 89 67 45 00 11 11 EF 16 上:03F4 查询无线通信参数
68 0F 00 43 00 00 28 00 00 0B 03 80 01 FA 16 下:03F16 查询宽带
68 10 00 83 00 00 00 00 00 0B 03 80 01 02 14 16 上:03F16 查询宽带
68 0F 00 43 00 00 28 00 00 0C 10 01 00 88 16 下:10F1 查询从节点数
68 13 00 83 00 00 00 00 00 0C 10 01 00 03 00 00 04 A7 16 上:10F1 从节点数0300
68 12 00 43 00 00 28 00 00 0D 10 02 00 01 00 03 8E 16 下:10F2 查询从节点信息 从节点开始序号01 从节点数 03
68 2A 00 83 00 00 00 00 00 0D 10 02 00 03 00 03 48 00 01 06 18 20 00 10 20 63 99 18 12 17 00 00 24 03 00 18 12 17 00 00 04 16 上:10F2 查询从节点信息 从节点总数 03 从节点1 地址 从节点1 信息。。。从节点3信息
68 0F 00 43 00 00 28 00 00 0E 10 01 00 8A 16 下:10F1 查询从节点数
68 13 00 83 00 00 00 00 00 0E 10 01 00 03 00 00 04 A9 16 上:10F1 从节点数0300
68 12 00 43 00 00 28 00 00 0F 10 02 00 01 00 01 8E 16 下:10F2 查询从节点信息 从节点开始序号01 从节点数 01
68 1A 00 83 00 00 00 00 00 0F 10 02 00 03 00 01 48 00 01 06 18 20 00 10 3F 16 上:10F2 查询从节点信息 从节点总数 03 从节点1 地址 从节点1 信息
读取一个对象属性GetRequestNormal 读取一个对象属性实例:
读取电能表的通信地址,发送:05 01 01 40 01 02 00 00 05 —— [5] GET-Request 01 —— [1] GetRequestNormal 01 —— PIID 40 01 02 00 —— OAD:通信地址40010200 00 —— 没有时间标签 响应:85 01 01 40 01 02 00 01 09 06 12 34 56 78 90 12 00 00 85 —— [133] GET-Response 01 —— [1] GetResponseNormal 01 —— PIID-ACD 40 01 02 00 —— OAD 01 —— Data 09 —— octet-string 06 —— SIZE(6) 12 34 56 78 90 12 —— 通信地址:123456789012 00 —— FollowReport OPTIONAL=0 表示没有上报信息 00 —— 没有时间标签
读取多个对象属性 GetRequestNormalList 读取多个对象属性实例:
读取三相电压、电流,发送:05 02 02 02 20 00 02 00 20 01 02 00 00 05 —— [5] GET-Request 02 —— [2] GetRequestNormalList 02 —— PIID 02 —— SEQUENCE OF OAD,个数=2 20 00 02 00 —— OAD1:A,B,C相计量电压 20 01 02 00 —— OAD2:A,B,C相计量电流 00 —— 没有时间标签 响应:85 02 02 02 20 00 02 00 01 01 03 12 09 6D 12 09 6D 12 09 6D 20 01 02 00 01 01 03 05 00 00 03 E8 05 00 00 03 E8 05 00 00 03 E8 00 00 85 —— [133] GET-Response 02 —— [2] GetResponseNormalList 02 —— PIID-ACD 02 —— SEQUENCE OF A-ResultNormal,个数=2 20 00 02 00 —— OAD 01 —— Data 01 —— 类型=1,表示数组 03 —— 数组元素个数=3 12 09 6D —— 元素1:类型18:long-unsigned 241.3V A相 12 09 6D —— 元素2:类型18:long-unsigned 241.3V B相 12 09 6D —— 元素3:类型18:long-unsigned 241.3V C相 20 01 02 00 —— OAD 01 —— Data 01 —— 类型=1,表示数组 03 —— 数组元素个数=3 05 00 00 03 E8 —— 元素1:类型:5 double-long 05 00 00 03 E8 —— 元素2:类型:5 double-long 05 00 00 03 E8 —— 元素3:类型:5 double-long 00 —— FollowReport OPTIONAL=0 表示没有上报信息 00 —— 没有时间标签
上图中对象标识 OI 后面接的是 属性标识、特征以及属性内元素索引。 例:
对于下图 属性2(读取多回路 温度)应该是05 01请求读取属性 2E10 0200
case 0x2E100200: // 读取05 01多回路温度属性2 mem_cpy(resp + pos, oad->value, 4); pos += 4; if((temp_smoke_dev_count == 0) && (first_read_AM2320_flag1 == 0)) { resp[pos++] = DT_NULL; resp[pos++] = DAR_OBJECT_UNAVAILABLE; break; } resp[pos++] = 1;// 结果类型是数据 data resp[pos++] = DT_ARRAY; // 数据类型 resp[pos++] = temp_smoke_dev_count+first_read_AM2320_flag1; // len长度 for(idx=0; idx<temp_smoke_dev_count; idx++) { resp[pos++] = DT_STRUCTURE; resp[pos++] = 2;//structure数量 resp[pos++] = DT_OCTETSTRING; resp[pos++] = 6; mem_cpy_reverse(resp+pos,MeterList[MAX_METER_COUNT].elmt.meter_no,6); pos+=6; resp[pos++] = DT_LONG; resp[pos++] = temp_of_temp_smoke_dev>>8; // temp_of_temp_smoke_dev表示实时的温度INT16S resp[pos++] = temp_of_temp_smoke_dev; // 高字节在前,和645不一样 } if(first_read_AM2320_flag1==1) { resp[pos++] = DT_STRUCTURE; resp[pos++] = 2;//structure数量 resp[pos++] = DT_OCTETSTRING; resp[pos++] = 6; mem_cpy_reverse(resp+pos,MeterList[MAX_METER_COUNT].elmt.meter_no,6); pos+=6; resp[pos++] = DT_LONG; bcd_2_int16s(&temp_of_am2301, temphumi1.Temp_BCD);//温湿度传感器AM2301A的温度 resp[pos++] = temp_of_am2301>>8; resp[pos++] = temp_of_am2301;//高字节在前,和645不一样 } } break;方法127 应该是 操作请求 07 请求操作一个对象方法 2E10 7F00
case 0x2E100400: // 读取05 01多回路温度属性4 mem_cpy(resp + pos, oad->value, 4); pos += 4; if((temp_smoke_dev_count == 0) && (first_read_AM2320_flag1 == 0)) { resp[pos++] = DT_NULL; resp[pos++] = DAR_OBJECT_UNAVAILABLE; break; } resp[pos++] = 1;// 结果类型是数据 data resp[pos++] = DT_ARRAY; // 数据类型 resp[pos++] = temp_smoke_dev_count+first_read_AM2320_flag1; // len长度 for(idx=0; idx<temp_smoke_dev_count; idx++) { resp[pos++] = DT_STRUCTURE; resp[pos++] = 3;//structure数量 resp[pos++] = DT_LONGUNSIGNED; resp[pos++] = resp[pos++] = DT_OCTETSTRING; resp[pos++] = 6; mem_cpy_reverse(resp+pos,MeterList[MAX_METER_COUNT].elmt.meter_no,6); pos+=6; resp[pos++] = DT_VISIBLESTRING; resp[pos++] = temp_of_temp_smoke_dev>>8; // temp_of_temp_smoke_dev表示实时的温度INT16S resp[pos++] = temp_of_temp_smoke_dev; // 高字节在前,和645不一样 } if(first_read_AM2320_flag1==1) { resp[pos++] = DT_STRUCTURE; resp[pos++] = 2;//structure数量 resp[pos++] = DT_OCTETSTRING; resp[pos++] = 6; mem_cpy_reverse(resp+pos,MeterList[MAX_METER_COUNT].elmt.meter_no,6); pos+=6; resp[pos++] = DT_LONG; bcd_2_int16s(&temp_of_am2301, temphumi1.Temp_BCD);//温湿度传感器AM2301A的温度 resp[pos++] = temp_of_am2301>>8; resp[pos++] = temp_of_am2301;//高字节在前,和645不一样 } } break;搜索传感器 0x26008000:(下面代码只是搜索分支终端上次轮检完成注册的传感器信息,并不是触发再次轮检检测当前实时挂载的传感器信息,其中新检测到的传感器描述信息为空) 组报文:68 18 00 43 05 01 00 00 00 00 00 02 F9 D9 07 01 02 26 00 80 00 00 00 C6 E0 16
case 0x26008000: // 操作搜索传感器,并更新传感器档案单元 方法128 { if((temp_smoke_dev_count == 0) && (first_read_AM2320_flag1 == 0)&& (smoke_dev_count == 0)&& (if_ds18b20_count_read() == 0)&& (switch_dev_count == 0)) { resp[pos++] = DT_NULL; resp[pos++] = DAR_OBJECT_UNAVAILABLE; break; } sensor_file[0].sensor_num = temp_smoke_dev_count+first_read_AM2320_flag1+switch_dev_count+if_ds18b20_count_read()+smoke_dev_count; ; //需要配置到档案的传感器总数 // rs485_send_frame(PORT_IDX_RS485_1,&sensor_file[0].sensor_num,1,CJQ_G_Var.baudrate); // pos+=4; //数据类型 DT_STRUCTURE 02 长度 03 定值 if (sensor_file[0].sensor_num <= MaxSensorNum) { for(i=0; i<temp_smoke_dev_count; i++) { sensor_file[i].sequence = i; sensor_file[i].add_len =6; mem_cpy_reverse(sensor_file[i].add,MeterList[MAX_METER_COUNT].elmt.meter_no,6); } for(idx1=0; idx1 < first_read_AM2320_flag1; idx1++) { sensor_file[idx1].sequence = temp_smoke_dev_count+idx1; sensor_file[idx1].add_len =6; mem_cpy_reverse(sensor_file[idx1].add,MeterList[MAX_METER_COUNT].elmt.meter_no,6); } for(idx2=0; idx2 < switch_dev_count; idx2++) { sensor_file[idx2].sequence = temp_smoke_dev_count+first_read_AM2320_flag1+idx2; sensor_file[idx2].add_len =6; mem_cpy_reverse(sensor_file[idx2].add,MeterList[MAX_METER_COUNT].elmt.meter_no,6); } for(idx3=0; idx3 < smoke_dev_count; idx3++) { sensor_file[idx3].sequence = temp_smoke_dev_count+first_read_AM2320_flag1+switch_dev_count+idx3; sensor_file[idx3].add_len =6; mem_cpy_reverse(sensor_file[idx3].add,MeterList[MAX_METER_COUNT].elmt.meter_no,6); } for(idx4=0; idx4 < if_ds18b20_count_read(); idx4++) { sensor_file[idx4].sequence = temp_smoke_dev_count+first_read_AM2320_flag1+switch_dev_count+smoke_dev_count+idx4; sensor_file[idx4].add_len =6; mem_cpy_reverse(sensor_file[idx4].add,DS18B20_ID[idx4]+1,6); } resp[pos_resp++] = DAR_SECCESS; //DAR 成功 resp[pos_resp++] = DT_NULL; //操作返回数据 Data OPTIONAL tpos_enterCriticalSection(); app_if_nor_flash_se(PAGE_ID_LORA_DEV_INFO * MAX_PAGE_SIZE); app_if_nor_flash_write(PAGE_ID_LORA_DEV_INFO * MAX_PAGE_SIZE, &sensor_file, sizeof(sensor_file)); //存储 传感器的档案 tpos_leaveCriticalSection(); } else { resp[pos_resp++] = DAR_TYPE_UNMATCHED; //DAR 类型不匹配 resp[pos_resp++] = DT_NULL; //操作返回数据 Data OPTIONAL } } break;[16:50:15.950]发→◇68 18 00 43 05 01 00 00 00 00 00 02 F9 D9 07 01 02 26 00 80 00 00 00 C6 E0 16 [16:50:16.091]收←◆FE FE FE FE 68 1A 00 C3 05 01 00 00 00 00 00 02 0C B6 87 01 02 26 00 80 00 00 00 00 00 28 E4 16 查询传感器 [16:51:56.876]发→◇68 17 00 43 05 01 00 00 00 00 00 02 B5 C5 05 01 02 26 00 04 00 00 F2 5B 16 [16:51:56.964]收←◆FE FE FE FE 68 2A 00 C3 05 01 00 00 00 00 00 02 C3 25 85 01 02 26 00 04 00 01 01 01 02 03 12 00 00 09 06 4C 27 C1 04 00 00 0A 00 00 00 63 33 16 复位在上电 [16:58:11.989]发→◇68 17 00 43 05 01 00 00 00 00 00 02 B5 C5 05 01 02 26 00 04 00 00 F2 5B 16 [16:58:12.059]收←◆FE FE FE FE 68 2A 00 C3 05 01 00 00 00 00 00 02 C3 25 85 01 02 26 00 04 00 01 01 01 02 03 12 00 00 09 06 4C 27 C1 04 00 00 0A 00 00 00 63 33 16