设备通讯协议分析
设备通讯协议书

设备通讯协议书甲方(提供方):_____________________乙方(接收方):_____________________鉴于甲方拥有先进的设备通讯技术,乙方需要此类技术以提升其业务运作效率,双方本着互惠互利的原则,经友好协商,就设备通讯技术的使用达成如下协议:第一条定义1.1 设备通讯技术:指甲方拥有的,能够实现设备间数据交换和通信的技术。
1.2 通讯设备:指乙方使用甲方提供的通讯技术所涉及的硬件设备。
1.3 技术维护:指甲方为确保通讯设备正常运作所提供的技术支持和维护服务。
第二条协议期限2.1 本协议自双方签字盖章之日起生效,有效期为________年。
2.2 协议期满前________个月,双方应就是否续签进行协商。
第三条技术提供与使用3.1 甲方同意向乙方提供所需的设备通讯技术,并确保该技术符合乙方的业务需求。
3.2 乙方应按照甲方提供的技术规范和操作手册使用通讯设备。
第四条技术维护与支持4.1 甲方负责对通讯设备进行定期的技术维护,确保设备的正常运行。
4.2 乙方在遇到技术问题时,应及时通知甲方,甲方应在接到通知后________小时内提供技术支持。
第五条费用及支付5.1 乙方应按照本协议附件一《费用及支付条款》向甲方支付相应的技术使用费。
5.2 乙方应于每个计费周期开始前支付该周期的技术使用费。
第六条保密条款6.1 双方应对在本协议履行过程中获知的对方商业秘密和技术秘密负有保密义务。
6.2 未经对方书面同意,任何一方不得向第三方泄露、提供或允许第三方使用上述保密信息。
第七条违约责任7.1 如一方违反本协议的任何条款,应承担违约责任,并赔偿对方因此遭受的一切损失。
7.2 因不可抗力导致任何一方不能履行或完全履行本协议的,该方应及时通知对方,并提供相应证明,双方应协商解决。
第八条争议解决8.1 本协议的解释、适用及争议解决均适用中华人民共和国法律。
8.2 双方因履行本协议所发生的任何争议,应首先通过友好协商解决;协商不成时,可提交甲方所在地人民法院通过诉讼方式解决。
modbus 通讯协议解析

modbus 通讯协议解析Modbus通讯协议解析1. 引言(100字左右)在工业控制系统中,通讯协议扮演着关键角色,以确保设备之间的有效通信。
其中,Modbus通讯协议成为了最常用和广泛应用的协议之一。
本文将逐步解析Modbus通讯协议从起源到应用的全过程,旨在帮助读者更好地理解和应用该协议。
2. Modbus的历史(200字左右)Modbus协议于1979年由Modicon公司(现为施耐德电气旗下品牌)开发,旨在连接可编程逻辑控制器(PLC)与其他电子设备,以实现数据交换。
Modbus通讯协议于2004年成为开放标准,并由Modbus-IDA (Modbus-IDA:现在是Modbus-IDA和Modbus-IDA用户组合并成的Modbus委员会)进行维护。
3. Modbus通讯协议概述(400字左右)Modbus协议采用了一种基于串行通信的主从机结构,支持大量不同设备之间的通信。
Modbus通讯协议使用了简化的应用层协议数据单元(ADU),其中包含了功能代码、数据和错误检查等信息。
Modbus协议支持不同的物理层和传输层,包括串行通信(如RS-232、RS-485等)和以太网通信(如TCP/IP)。
在串行通信中,Modbus协议基于传统的ASCII或RTU格式进行数据的传输,而在以太网通信中,Modbus协议使用TCP/IP协议进行数据的传输。
Modbus协议提供了多种不同类型的功能码,包括读取和写入数据寄存器、读取和写入线圈等操作。
通过这些功能码,设备可以实现数据的读取和写入以及对设备进行控制。
4. Modbus协议的应用范围(300字左右)Modbus通讯协议广泛应用于工业自动化系统中,特别是在控制系统和传感器/执行器之间的通信中。
例如,Modbus协议可用于读取和写入传感器的数据,控制执行器的操作,以及与其他控制设备进行通信。
Modbus协议作为一种开放的通讯协议,使得不同供应商的设备之间能够实现互操作性。
wifi协议智能家居|无线智能家居通讯协议分析

wifi协议智能家居|无线智能家居通讯协议分析随着科技的不断发展,智能家居已经成为了人们生活中不可或缺的一部分。
而在实现智能家居的核心技术中,无线通信协议发挥着关键的作用。
其中,wifi协议作为一种常见的无线通信协议,被广泛应用于智能家居领域。
本文将对wifi协议在智能家居中的应用进行分析。
一、wifi协议概述wifi协议,全称为无线局域网协议(Wireless Fidelity),是一种基于IEEE 802.11标准的无线通信技术。
它使用2.4GHz和5GHz频段进行信号传输,以及采用CSMA/CA(Carrier Sense MultipleAccess/Collision Avoidance)协议进行碰撞检测和冲突避免。
相比其他无线通信技术,wifi协议具有速度快、成本低、易于部署等优势,因此在智能家居中得到了广泛的应用。
二、wifi协议在智能家居中的应用1. 家庭网络覆盖:wifi协议能够实现无线网络的覆盖,使得家庭内的各种智能设备都能够连接到互联网。
通过无线路由器的设置,家庭成员可以使用手机、电脑等终端设备随时随地上网,同时也为智能家居提供了数据传输的基础支撑。
2. 视频监控系统:现代智能家居中的一个重要功能是安防系统,而其中的视频监控就离不开wifi协议的支持。
通过将摄像头连接到无线网络中,用户可以通过手机等终端设备进行实时监控,随时查看家庭的安全状况。
3. 智能家电控制:wifi协议在智能家电控制中发挥着重要的作用。
通过将智能家电连接到无线网络中,用户可以利用手机等终端设备远程控制智能家电的开关、温度调节、定时启动等功能,实现更加便捷的家居管理。
4. 智能音响系统:智能音响系统可以通过wifi协议与互联网进行连接,实现从网络上播放音乐。
用户可以通过手机等终端设备选择喜欢的音乐、音频书籍等,控制音响系统进行播放。
同时,智能音响系统还可以与其他智能家居设备进行联动,实现更加智能化的音乐体验。
自动化控制系统的数据通讯协议分析

自动化控制系统的数据通讯协议分析自动化控制系统中的数据通讯协议在实现设备互联和数据交换方面起着关键作用。
本文将对自动化控制系统的数据通讯协议进行分析,以便更好地理解和应用这些协议。
一、概述自动化控制系统的数据通讯协议是指在工业自动化领域中,设备之间进行数据交换和通信所遵循的一系列规则和标准。
这些协议可以确保设备之间的数据传输准确、高效和可靠。
二、常用数据通讯协议1. Modbus协议Modbus协议是一种应用层通讯协议,广泛用于工业自动化领域。
它是基于主从架构的协议,可以支持多种物理层传输介质,如串口、以太网等。
Modbus协议简单易懂,具有较高的兼容性和可扩展性。
2. Profibus协议Profibus协议是一种用于工业自动化领域的实时通讯协议。
它可以支持多种拓扑结构,并具有较高的通讯速度和强大的数据传输能力。
Profibus协议广泛应用于工业现场总线系统和分布式控制系统中。
3. Ethernet/IP协议Ethernet/IP协议是一种工业以太网通讯协议,用于实现工业控制器、传感器和执行器之间的数据交换。
它采用开放的标准,具有较高的实时性和可靠性,支持TCP/IP和UDP/IP网络协议。
4. CAN协议CAN协议是一种适用于工业自动化和汽车领域的串行通讯协议。
它具有高速传输、抗干扰性能强和可靠性高的特点,常用于控制系统中的设备之间的数据通讯。
三、协议的功能和特点1. 数据传输和通信:数据通讯协议可以实现设备之间的数据传输和通信,确保数据可靠、准确地在系统内部进行交换。
2. 控制和监测:协议可以支持设备之间的控制和监测功能,实现对系统各个节点的远程控制和状态监测。
3. 安全性保障:协议可以加密数据传输,确保数据的机密性和完整性,防止数据被非法窃取或篡改。
4. 兼容性和扩展性:协议设计具有较好的兼容性和可扩展性,可以适应不同设备和系统的需求,并随着技术的发展进行升级和扩展。
四、应用案例1. 工业自动化系统:数据通讯协议在工业自动化系统中广泛应用,实现设备之间的数据交换和远程控制。
DLT645_1997通讯协议数据分析

1、国标表写设备地址:1)串口设置:波特率1200,偶校验,数据位8,停止位1;下发命令时按表的2键。
2)写设备地址请求命令帧:功能:设置某从站的地址码;控制码:C=0AH;地址域:99H 99H 99H 99H 99H 99H(采用广播命令下发);数据长度:L=06H;数据域:A0...A5(设备地址码);4)以下为一个设表值为1例子:5)发:68 99 99 99 99 99 99 68 0A 06 34 33 33 33 33 33 A9 16(前15位和是100011101110)6)从站正常应答帧:功能:正确执行命令的正常应答;控制码:C=8AH;地址域:A0...A5(新设置的设备地址码);数据长度:L=00H;7)答:68 01 00 00 00 00 00 68 8A 00 5B 162、对国标表校时:1)串口设置:波特率1200,偶校验,数据位8,停止位1。
2)校时命令帧:功能:设置从站的时间,控制码:C=08H,地址域:99H 99H 99H 99H 99H 99H(采用广播命令下发);数据长度:L=06H,数据域:秒,分,小时,日,月,年。
3)发:68 99 99 99 99 99 99 68 08 06 34 34 34 34 34 39 B1 164)校时没有应答:功能:修改电能表的时间为要设置的时间:秒,分,小时,日,月,年的值由用户设定注1.广播校时不要求应答。
2.仅当从站的日历和时钟与主站的时差在±5min 以内时执行校时命令,即将从站的日历时钟调整到与命令下达的日历时钟一致。
3.不推荐在午夜0 时校时,以免影响在0 时进行的某些例行操作。
4.每天只允许校对一次。
3、国标表抄收电能数据:1)串口设置:波特率1200,偶校验,数据位8,停止位1。
2)读数据时数据长度小于200,写数据时数据长度小于50。
3)上传的电能数据每个字节减去33H后,为BCD码。
4、抄收正向有功1.抄收正向有功总电能数据项:1)抄收数据帧:68 01 00 00 00 00 00 68 01 02 43 C3 DA 162)接收数据帧:68 01 00 00 00 00 00 68 81 06 43 C3 97 37 33 33 92 162.抄收正向有功总电能数据块:1)抄收数据帧:68 01 00 00 00 00 00 68 01 02 52 C3 E9 162)接收数据帧:68 01 00 00 00 00 00 68 81 1F 52 C3 97 37 33 33 33 33 33 33 33 33 33 33 97 37 33 33 33 33 33 3333 33 33 33 33 33 33 33 DD C7 16数据分析:68 帧起始码01 00 00 00 00 00 地址域68 帧起始码81 控制码1F 数据长度52 C3 命令标识码97 37 33 33 正向总电能总33 33 33 33 (当前)费率1正向有功尖33 33 33 33 (当前)费率2正向有功峰97 37 33 33 (当前)费率3正向有功平33 33 33 33 (当前)费率5正向有功33 33 33 33 (当前)费率6正向有功DD 数据块结束符C7 校验码16 结束码5、抄收反向有功1.抄收反向有功总电能数据项:1)抄收数据帧:68 01 00 00 00 00 00 68 01 02 53 C3 EA 162)接收数据帧:68 01 00 00 00 00 00 68 81 06 53 C3 97 37 33 33 A2 16//反向有功总电能与正向有功总电能相同2.抄收反向有功电能数据块项:1)抄收数据帧:68 01 00 00 00 00 00 68 01 02 62 C3 F9 162)接收数据帧:68 01 00 00 00 00 00 68 81 1F 62 C3 97 37 33 33 33 33 33 33 33 33 33 33 97 37 33 33 3333 33 33 33 33 33 33 33 33 33 33 DD D7 16数据分析:6801 00 00 00 00 0068811F62 C397 37 33 3333 33 33 3333 33 33 3397 37 33 3333 33 33 3333 33 33 3333 33 33 33DDD7166、抄收正向无功68 01 00 00 00 00 00 68 01 02 32 D2 D8 1668 01 00 00 00 00 00 68 01 02 00 D2 A6 1668 01 00 00 00 00 00 68 A1 C8 32 D2 B9 5A 33 33 33 33 33 33 5A 3B 33 33 C6 45 33 33 99 39 33 33 33 33 33 33 33 33 33 33 DD 97 37 33 33 33 33 33 33 33 33 33 33 97 37 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 58 33 33 33 33 33 33 33 37 33 33 33 4A 33 33 33 37 33 33 33 33 33 33 33 33 33 33 33 DD 44 33 33 33 33 33 33 33 33 33 33 33 44 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 CF 1668 01 00 00 00 00 00 68 A1 C8 00 D2 BA 5A 33 33 33 33 33 33 5A 3B 33 33 C6 45 33 33 9A 39 33 33 33 33 33 33 33 33 33 33 DD 97 37 33 33 33 33 33 33 33 33 33 33 97 37 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 58 33 33 33 33 33 33 33 37 33 33 33 4A 33 33 33 37 33 33 33 33 33 33 33 33 33 33 33 DD 44 33 33 33 33 33 33 33 33 33 33 33 44 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 9F 1668 01 00 00 00 00 00 68 01 02 32 E9 EF 1668 01 00 00 00 00 00 68 81 4A 32 E9 63 35 56 35 5C 35 DD 88 34 68 34 7A 34 DD 48 33 34 CA 68 33 5A 63 33 B4 66 33 33 33 33 33 DD 33 33 33 33 33 33 33 33 DD 33 43 33 43 33 43 33 43 DD 3B 83 3B 83 3B 83 33 33 33 47 3B 33 B7 37 33 7C 34 33 6B 37 33 DD 8D 1668 01 00 00 00 00 00 68 81 4A 32 E963 3558 3559 35DD88 346A 3477 34DDA9 CC 33CA 68 33BA 63 33B3 65 3333 3333 33DD 33 33 33 33 33 33 33 33 DD 33 43 33 43 33 43 33 43 DD 36 83 36 83 36 83 33 33 33 55 3B 33 C3 37 33 87 35 33 B4 35 33 DD 40 1668 01 00 00 00 00 00 68 81 1F 52 C3 97 37 33 33 33 33 33 33 33 33 33 33 97 37 33 33 33 33 33 33 33 33 33 33 33 33 33 33 DD C7 1668 01 00 00 00 00 00 68 01 02 F3 53 1A 167.抄收电能表日期:发抄日期及周次:68 01 00 00 00 00 00 68 01 02 43 F3 0A 16应答:68 01 00 00 00 00 00 68 81 06 43 F3 35 3A 34 39 6A 1635 3A 34 3902 07 01 06抄时分秒:68 01 00 00 00 00 00 68 01 02 44 F3 0B 16应答:68 01 00 00 00 00 00 68 81 05 44 F3 85 73 33 B9 1685 73 335240 0068 01 00 00 00 00 00 68 01 02 52 F3 19 16抄收年月日时分秒68 01 00 00 00 00 00 68 81 09 52 F3 39 34 3A 39 49 55 44 62 1639 34 3A 39 49 55 4406 01 07 06 16 22 1168 01 00 00 00 00 00 68 81 0A 52 F335 5C 3B 39 4C 5A 49 DD 72 1602 29 08 06 19 27 AA8.读电能表冻结日:命令:68 01 00 00 00 00 00 68 01 02 4A F4 12 1668 01 00 00 00 00 00 68 81 04 4A F4 33 34 FB 1600 01时日冻结日为01 月00时通过按电能表的按键(编码800008)按出结算日时为01 月00日645规约上的自动抄表日期就是结算日。
通导设备常用的通讯协议

通导设备常用的通讯协议1. 引言通导设备是指能够进行数据传输和通信的设备,如智能手机、电脑、物联网设备等。
为了确保这些设备之间能够相互交流和传输数据,需要使用一种统一的通讯协议。
本文将介绍几种常用的通导设备常用的通讯协议。
2. 蓝牙(Bluetooth)蓝牙是一种无线技术,用于短距离数据传输。
它广泛应用于各类消费电子产品,如智能手机、音频设备等。
蓝牙协议支持点对点连接和广播连接两种模式,可以实现低功耗和高速传输。
蓝牙的特点包括: - 低功耗:蓝牙采用低功耗模式,在保持连接的同时最大限度地节省电量。
- 简单易用:用户只需通过简单操作即可建立蓝牙连接。
- 广泛兼容性:几乎所有现代化设备都支持蓝牙技术。
3. Wi-FiWi-Fi是一种基于无线局域网(WLAN)技术,可以实现高速无线数据传输。
它经常被用于家庭和办公室网络,以及公共场所的无线网络。
Wi-Fi协议使用2.4GHz或5GHz频段进行数据传输。
Wi-Fi的特点包括: - 高速传输:Wi-Fi可以提供高达几百兆比特每秒的传输速度。
- 大范围覆盖:Wi-Fi信号可以在一定范围内实现无线覆盖。
- 多设备连接:一个Wi-Fi网络可以同时连接多个设备。
4. ZigbeeZigbee是一种低功耗、近距离无线通信协议,主要用于物联网设备之间的通信。
它适用于需要长时间运行的低功耗设备,如智能家居、工业自动化等。
Zigbee的特点包括: - 低功耗:Zigbee设备可以长时间运行,并通过休眠模式来节省能量。
- 自组织网络:Zigbee设备可以通过自动路由寻找最佳通信路径。
- 安全性:Zigbee协议提供了数据加密和身份验证等安全机制。
5. LoRaWANLoRaWAN是一种用于远程无线通信的协议,适用于低功耗广域网(LPWAN)应用。
它具有广阔的覆盖范围和低功耗特性,适用于物联网、智能农业等领域。
LoRaWAN的特点包括: - 长距离通信:LoRaWAN可以在数公里甚至数十公里的范围内进行通信。
设备通讯技术协议

设备通讯技术协议1. 引言本文档介绍了设备通讯技术协议的概述、目的和范围。
该协议旨在定义设备之间的通讯规则,以便实现设备之间的数据交换和协同工作。
协议涵盖了通讯协议栈、消息格式、数据传输方式等核心内容。
2. 概述设备通讯技术协议是一种用于设备之间进行数据交换和通信的规约。
它定义了设备之间通讯的基本原则、通讯协议栈、数据格式和传输方式等。
协议的主要目的是确保设备间的数据能够正确、安全地传输,从而实现设备之间的协同工作。
3. 目的设备通讯技术协议的目的是提供一种通用的规范,以便各个设备之间可以进行有效的通讯和数据交换。
通过遵守协议规定的通讯原则和规则,设备可以实现相互之间的数据共享和协同处理,提高整个系统的性能和效率。
4. 范围设备通讯技术协议适用于各种设备之间的通讯,包括但不限于计算机、传感器、控制器等。
协议涵盖了通讯协议栈、数据格式和传输方式等方面的内容。
它可以被应用于各种领域,如工业自动化、物联网、智能家居等。
5. 通讯协议栈设备通讯技术协议定义了一种通讯协议栈,用于组织和管理数据的传输。
该协议栈包括以下几个层次:5.1 物理层物理层是协议栈的最底层,负责实际的信号传输和电气特性。
它定义了数据在物理介质中的传输方式和传输速率等参数。
5.2 数据链路层数据链路层负责将物理层传输的数据划分为帧,并对帧进行组织和管理。
它负责数据的传输可靠性和错误检测、纠正等功能。
5.3 网络层网络层负责对数据进行分组和路由,以确保数据能够正确地传输到目标设备。
它定义了数据的寻址和路径选择等功能。
5.4 传输层传输层负责数据的传输控制和错误恢复。
它提供了可靠的端到端通讯服务,包括错误检测和重传等功能。
5.5 应用层应用层是协议栈的最高层,负责数据的解析和处理。
它定义了数据的格式、结构和语义,并提供相应的通讯接口供应用程序使用。
6. 消息格式设备通讯技术协议规定了一种统一的消息格式,用于设备之间的数据交换。
消息格式包括以下几个字段:•消息头:用于标识消息类型和版本等信息。
霍尼韦尔hf800通讯协议

霍尼韦尔hf800通讯协议霍尼韦尔HF800通讯协议霍尼韦尔HF800通讯协议是一种用于工业自动化领域的通信协议,主要用于设备之间的数据传输和控制。
该协议具有高效稳定的特点,广泛应用于工业控制系统、智能仪表、机器人等领域。
一、协议简介霍尼韦尔HF800通讯协议采用基于RS485总线的半双工通信方式,支持主从模式和多主模式。
协议采用二进制方式进行数据传输,每个数据帧包含起始位、数据位、校验位和停止位。
协议结构清晰简洁,具有较高的数据传输效率和可靠性。
二、协议特点1. 高效稳定:HF800通讯协议采用了高效的数据压缩和纠错机制,能够在复杂的工业环境中保持稳定的通讯连接,确保数据的准确传输。
2. 灵活可扩展:协议支持多主模式,可以连接多个设备进行通讯,同时具备良好的可扩展性,可以根据实际需求进行定制和扩展。
3. 数据安全:协议通过数据加密和身份验证等安全机制,确保通讯数据的机密性和完整性,有效防止数据被非法篡改和窃取。
4. 实时性强:HF800通讯协议具有较低的通讯延迟和高的实时性,能够满足对数据传输速度要求较高的实时控制系统。
5. 易于集成:协议提供了丰富的接口和开发工具,使得设备的集成和开发变得更加简单和方便。
三、应用领域1. 工业控制系统:HF800通讯协议被广泛应用于工业自动化领域,用于工厂生产线上的设备之间的数据交互和控制。
2. 智能仪表:协议可用于智能仪表,实现对仪表的数据采集、监控和远程控制。
3. 机器人:HF800通讯协议可用于机器人系统,实现机器人之间的协同工作和数据共享。
4. 楼宇自动化:协议可用于楼宇自动化系统,实现对楼宇设备的集中监控和控制。
四、示例应用以工业控制系统为例,假设有一个自动化生产线需要对多个设备进行集中控制和监控。
通过HF800通讯协议,我们可以实现以下功能:1. 实时监控:通过与设备建立通讯连接,实时获取设备的运行状态、温度、压力等数据,并进行实时监控和报警处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设备通信协议目录1.适用范围 (3)2.协议框架 (3)3.协议内容 (3)3.1设备内部组网协议(或者MCU透传模式协议) (3)3.1.1 通讯命令格式 (3)3.1.2 配对机制 (3)3.1.3 连接机制 (4)3.1.4 心跳机制 (5)3.2 设备与云端通讯协议 (5)3.2.1 通讯命令格式 (5)3.2.2 连接流程 (5)3.3 数据包格式定义 (6)3.3.1设备间通讯数据格式 (6)3.3.2 设备与云、APP通讯数据格式 (11)4.公共命令定义 (12)5.编码表 (19)5.1节点类型编码表 (19)5.2命令回应编码表 (19)1.适用范围本协议定义WiFi模块与MCU控制单元,WiFi模块与云APP间,以及主从模块之间的通讯协议框架。
2.协议框架协议基于二进制协议框架,完成命令发送接收、命令上报、内部组网等功能。
3.协议内容3.1设备内部组网协议(或者MCU透传模式协议)备内部组网协议包括设备配对、连接、心跳机制等,目的是将一个子设备加入到设备组中,并保持连接。
3.1.1 通讯命令格式采用二进制的通讯协议格式,包格式如下表:详细的包格式在后续章节介绍3.1.2 配对机制配对机制仅适用于设备内组网模式,MCU透传模式不需要组网协议。
进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关的配对命令。
从设备进入配对模式后定时发送配对请求,直到收到请求回应。
主设备收到请求后分配一个设备ID给从设备,标识此ID被占用,并等待采集器的上线通知,一定时间内收到通知之后确认存入设备列表,如果没有上线通知,则认为设备没有配对成功,从子设备中删除。
从设备收到配对回应后存储设备ID,并且发送上线通知,收到上线通知后完成配对。
配对的过程如下图所示:3.1.3 连接机制设备每次上电连接需要发送上线通知以及连接所需要的参数给主设备,如下图所示:3.1.4 心跳机制使用对等的心跳机制,主设备和从设备都可以发现对方的异常状态。
3.2 设备与云端通讯协议设备与云端通讯协议基于MQTT协议,数据包使用MQTT协议传输,数据加密方式采用SSL 加密,命令码采用2进制命令格式同设备间通讯协议。
3.2.1 MQTT通讯框架本协议是针对与设备的数据通信,目前通信节点包括:设备、云端和APP终端三方。
WIFI上的协议采用MQTT协议框架,串口上的通信采用包含包头和校验的二进制协议,通信包采用二进制格式传输,高位在前低位在后。
➢此协议定义的MQTT Topic类型有以下2种:①单播,unicast/u/{TargetType}/{TargetID}②广播,broad cast/b/{SourceType}/{SourceID}注释:TargetType:目标设备类型,TargetID:目标设备编码SourceType:源设备类型,SourceID:源设备编码3.2.2 通讯命令格式设备与云端、APP的通讯命令分为4种:请求与回应、通知命令、广播命令,具体的命令以及格式在后面章节介绍。
3.2.2 连接流程设备连接云端的步骤如下图:3.3 数据包格式定义数据包的格式根据通讯双方的不同、数据链路的差异会有不同的包格式,本协议为尽量保证数据包格式的统一,做了几点规划:1.数据包格式中核心的部分包括CMD ID和CMD Payload,这两部分格式所有的包中保持一致,CMD ID 1个字节,CMD Payload紧跟CMD ID长度N字节。
2.设备间通讯,包括内部命令、外部转发命令等的数据包格式虽然可能不一样,但是都可以通过包头中的Option字节进行区分,可以公用相同的解析函数3.外部串口通讯的命令格式与设备间通讯格式保持一致。
3.3.1设备间通讯数据格式3.3.1.1 Fix header固定帧头,格式如下表:同步头:0x5CFEtypedef enum{OPTIONAL_ENCRYPT_BIT = (1<<0),OPTIONAL_CRC_BIT = (1<<1),OPTIONAL_BROADCAST_DA TALINK_BIT = (1<<2),OPTIONAL_CHECKSUM_BIT = (1<<3),} OptionalBitsT;包长度:长度包括本字节之后的所有数据的长度长度是1~2个字节长度的编码方式参考MQTT:如长度是321=(65 + 2*128) ,那么会被编码为两个字节,低字节为65+128 = 193. 高字节为2。
3.3.1.2 可变包格式异或随机数:如Head Option中的加密选项为0,那么加密随机数这个字节不存在,同时数据不会进行加密源设备信息:用于广播类型的数据链路,需要标识数据的来源。
CRC校验:采用16bit的CRC算法,CRC算法参照附录。
CheckSum:采用8Bit的和校验,用于对数据长度比较敏感,但是又需要进行数据校验的场景设备编码和设备类型:Payload中可能需要用到的内部设备Type和ID的定义:内部设备Type和设备ID在设备配对时由主设备分配给从设备,其中Type由主设备获取到从设备的Device Type之后映射一个数值,并分配给从设备,建立映射关系。
3.3.1.3命令消息体CMD Key:命令标识,主要作用是标识命令的类型以及编号,由主设备生成,发送给从设备,从设备将CMD ID:命令码,1个字节Payload:命令数据, N字节5.4 实例一个所有Option都打开的包结构如下:3.3.1.4 数据组包实例以下是使用CRC校验,并且加密的数据包的组包过程:假设命令包是1 2 3 4,4个字节,现在要组包1:CRC第一步计算这4个字节的crc值,假设算出来是5、6第一步CRC之后的数据包就变成了1、2、3、4、5、6, 6个字节2:加密加密第一步:加入一个随机数,假设这个随机数是0 ,现在包就是7个字节了,0、1、2、3、4、5、6加密第二步:异或,将除加密随机数外的其他数据都和加密随机数进行异或,得到得数据应该是0、1、2、3、4、5、6机密第三步:查表加密,假设表中0对应的是6、1对应的是5依次类推,那么查表之后的数据变为了6、5、4、3、2、1、0加密结束,payload最终就是6、5、4、3、2、1、0了3:加入包头Payload是7个字节,optional是CRC和加密,那么包头为FE 5C 03 07最终包数据为:FE 5C 03 07 06 05 04 03 02 01 00解包的过程与组包相反3.3.2 设备与云、APP通讯数据格式3.3.2Pad串口通讯数据格式下行数据格式,PAD->设备4.公共命令定义下表是公共命令码以及命令数据的定义,此表仅涉及到上文提到的CMD ID和命令信息码5.编码表5.1节点类型编码表5.2命令回应编码表5.3 子设备类型表5.4 设备硬件架构类型编码表6.附录6.1 CRC校验算法static const uint8 c_crc_htalbe[] = // CRC 高8位查表{0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80,0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40};static const uint8 c_crc_ltalbe[] = // CRC校验查表低8位{0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04,0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8,0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC,0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10,0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38,0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C,0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0,0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C,0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54,0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98,0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40};uint16 CalCrc16(uint8* buff, uint16 len){uint8 crc_h = 0xFF; //crc 校验高8位uint8 crc_l = 0xFF; //crc 校验低8位uint16 index; // CRC索引if(len == 0 || buff ==NULL){return 0;}while (len--){index = crc_l ^ *buff++ ;crc_l = crc_h ^ c_crc_htalbe[index];crc_h = c_crc_ltalbe[index] ;}return ((crc_h << 8) | crc_l) ;}6.2 加密算法。