《电能量终端与主站交互MQTT协议分析.docx》由会员分享,可在线阅读,更多相关《电能量终端与主站交互MQTT协议分析.docx(58页珍藏版)》请在第一文库网上搜索。
1、电能量终端与电能量主站MQTT交互协议版本日期改动v.52023-07-161根据模型文档增加部分设备参数,增加了终端对于不支持的参数应当作出的处理逻辑2细化了报文头、设备配置、设备状态、数据上送、数据召唤部分的报文参数描述,主要是报文参数类型和取值的部分3增加了升级功能关于code的描述4修正了样例报文中的诸多错误,增加了具体要求的备注v.62023-08-161增加了终端参数中新的终端厂家参数2电表参数增加了数据上报功能的上报数据类型的参数3数据上报和数据召唤内容细化v.72023-08-211数据上报和数据召唤增加数据类型,修改原先数据类型的名称以便可以直观看出数据分类2数据上报和数据召
2、唤的应答报文增加分帧相关属性注:每个版本的新增内容会用红色标识出来一、范围本部分规定了电能量终端与电能量主站之间的交互协议,包含电能量主站对电能量终端的设备管理、应用管理以及相互之间的数据交互、控制命令交互等。二、规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。 MQTTV31MQTTV3.1协议规范(MQTTV3.1Protoco1Specification) RFC793传输控制协议(TranSmiSSionContro1Protoco1.STD7,IETFRFC79
3、3) IEEE802.1ARIEEE本地和城域网标准-安全设备标识(IEEEStandardfor1oca1andmetropo1itanareanetworks-SecureDeviceIdentity) RFC3629TF-8,ISO10646的转换格式(UTF-8zatransformationformatofISO10646) RFC6455WebSocket协议(TheWebSocketProtoco1) RFC7252约束应用协议(TheConstrainedApp1icationProtoco1(CoAP) RFC6101安全套接字层(SS1)协议版本3.0(TheSecureS
4、ockets1ayer(SS1)Protoco1Version3.0) RFC8446传输层安全性(T1S)协议版本1.3(TheTransport1ayerSecurity(T1S)Protoco1) IEEE1588-2008用于网络测量与控制系统的精确时钟同步协议(StandardforaPrecisionC1ockSynchronizationProtoco1forNetworkedMeasurementandContro1Systems)三、术语和定义下列术语和定义适用于本文件。应用消息Service1icationmessage通过网络传输应用数据,应用消息通过协议传输时,它们有关
5、联的服务质量和主题。订阅subscription订阅包含一个主题过滤器(topicFi1ter)和一个最大的服务质量(QoS)等级。订阅与单个会话(Session)关联。会话可以包含多于一个的订阅。会话的每个订阅都有一个不同的主题过滤器,每个主题过滤器需设置对应的QoS值。会话session客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样,另一些可以在客户端和服务端的多个连续网络连接间扩展。主题topic连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。主题过滤器topicfi1ter主题名通配符筛选器,在订阅表达式中使用,表
6、示订阅所匹配到的多个主题。发布pub1ish是指从客户端与服务端之间传输一个应用消息。四、缩略语下列缩略语适用于本文件。MQTT:消息队列遥测传输(MessageQueuingTe1emetryTransport)JSON:JS对象描述(JavaScriptObjectNotation)IP:互联网协议(InternetProtoco1)QoS:服务质量(Qua1ityofService)SS1:安全套接字层协议(SecureSockets1ayerProtoco1)CoAP:约束应用协议(ConstrainedService1icationProtoco1)T1S:传输层安全性(Transp
7、ort1ayerSecurityProtoco1)五、报文格式5.1.概述电能量终端与电能量主站交互协议运行在TCP/IP之上,保留原有的通过IECIO2协议族交互的方式,增加MQTT协议满足设备管理、业务交互、应用管理等需求,基于发布/订阅消息模式,提供一对多的消息发布。系统架构如图1耐。IEC102数据采集MQTT设备詈理应用管理业务交互图1系统架构图52交互方式5.3. 交互流程中的约束1 .终端id指终端在档案中对应的11位数字id。此id作为终端的唯一标识,在交互过程中起到识别每个终端的作用,将在MQTT主题名称中体现。终端可通过手动设置的方式设置终端id,也可以先接入MQTT服务器
8、,然后通过终端id请求流程获取,终端id一经设置不可以再通过请求流程获取2 .终端id请求流程如下:终端接入MQTT服务器并监听终端自身ip地址对应的终端id设置主题,例如v1ertu192.168.34.53:2345/Setid向指定钿,例如v1ertu192.16834.532345getid,写入终端id请求报文如果超过一定时间没有收到终端id设置报文,需要重复步骤直到获取到终端id设置报文当获取到终端id设置报文时,1钺取到的id设置到终端中存储并持久化,根据获得的终端id监听对应主题的报文以及上送数据到对应主题,终止对终端id设置主题的监听3 .终端连接的电表的序号必须与主站档案一
9、致,电表序号作为电表的唯一标识在主站与某个终端的交互过程中起到识别每个电表的作用4 .已设置id的终端连接MQTT服务器后,立即订阅相关主题,然后进入接收命令/主动上送的状态,无需额外的确认或获取id流程5.4. 主站请求报文格式本协议规定MQTT报文均以JSON格式表述,如果从未接触过json需先自行了解json相关内容,报文通用头部包含字段如下表所示。表1请求报文通用报头说明名称类型是否必选描述midstring是报文的唯一id,字符串,长度为32,生成方式为先生成一个UUid然后后去除中间的例如uuid为cb334f8e-99d-418b-aeab-67e0f5c6fc85时,mid应为
10、cb334f8e99d0418baeab67e0f5c6fc85当终端回复主站报文时,回复报文的mid应与主站下发请求报文的id一致,终端主动请求id或主动上报时由终端自行生成ertu1dint是终端的唯一id,整型数值,长度固定为11,终端请求id流程中部分报文不包含此字段,以样例报文为准methodstring是请求的类型,字符串,取值参见样例报文timestamp1ong是报文发送的时间戳,长整型数值,UTC时间(距离1970年1月1日。时0分0秒0毫秒这个时间点的毫秒数),单位毫秒,例如2023-07-1610:01:31.256对应1594864891256expireint否主站请
11、求报文过期的相对时间(相对上一个字段timestamp所对应的时间点),整型数值,单位秒,不包含该字段,或者该字段为-1时表示永不过期,如果请求报文已过期应当忽视此次请求bodyJSON对象否报文内容,是对象类型,注意与数组类型的格式区分,具体可以自行从网络上获取相关信息,本文不再赘述,当然也可以严格按照示例报文格式处理,内容详见各报文定义5.5. 终端应答报文格式表2应答报文通用报头说明名称类型是否必选描述midstring是报文的唯一id,字符串,长度为32,生成方式为先生成Tuuid然后后去除中间的例如uuid为cb334f8e-99d-418b-aeab-67e0f5c6fc85时,m
12、id应为cb334f8e99d0418baeab67e0f5c6fc85当终端回复主站报文时,回复报文的mid应与主站下发请求报文的id一致,终端主动请求id或主动上报时由终端自行生成ertu1dint是终端的唯一id,整型数值,长度固定为11,终端请求id流程中部分报文不包含此字段,以样例报文为准methodstring是请求的类型,字符串,取值参见样例报文timestamp1ong是报文发送的时间戳,长整型数值,UTC时间(距离1970年1月1日0时0分0秒0毫秒这个时间点的毫秒数),单位毫秒,例如2023-07-1610:01:31.256对应1594864891256bodyJSON对
13、象否报文内容,是对象类型,注意与数组类型的格式区分,具体可以自行从网络上获取相关信息,本文不再赘述,当然也可以严格按照示例报文格式处理,内容详见各报文定义codeint是返回码,整型数值,长度为3,取值和含义见表4,当终端上送应答报文时字段必需填写,主动上送和主动请求id则没有要求msgstring否返回信息,字符串,上送应答报文时,如果标识码不是300/500,该字段必需填写,内容为对错误或异常的简略描述表3设备标识属性说明名称类型是否必选描述Snint是整型数值,用于表示当前操作对应的是终端中的哪个设备,0表示终端自己,1-n表示对应序号的电表。例如读取参数时请求的Sn为0,表示读取终端的
14、参数;设置参数时请求的Sn为2,表示设置电表序号为2的电表的参数,以此类推表4返回码说明状态标识含义说明100已发送起始态200终端已接收中间态300已处理中间态400已超时未执行可为中间态也可为最终态500执行成功最终态600执行失败最终态601未识别的请求最终态602消息格式错误最终态603消息签名验证不通过最终态700设备故障最终态56报文字段规定 报文采用JSON格式描述本文中对于JSON字段命名方式约束如下: 设备名称采用首字母大写; 变量名、属性名第一个单词首字母4肖,剩余单词首字母大写; method字段约束如下:为全大写单词,单词中间用下划线分隔开;所有下发命令以wCMD/开头;所有上报事件均以EVENT/开头;所有应答报文与请求报文字段相同,使用topic区分。 全部使用英文单词,禁止使用拼音;每个单词长度尽量不要超过10个字符,否则尽量使用简写;单词简写时应尽可能望文知意,以满足易读性为首要选择,其次尽量缩短长度。六、报文交互流程及示例1 .终端id请求如果终端没有设置终端id且希望通过系统获取终端id时,接入服务器后向指定主题写入终端id请求报文,如果一段时间后没有收到终端id设置报文,则需要重新发送请求直至获取到。当获取到终端id后,不可以再通过此流程