技术领域
[0001] 本公开涉专变采集领域,尤其涉及一种基于MQTT消息的专变采集终端系统及通信方法。
相关背景技术
[0002] 专变采集终端是对专变用户用电信息进行采集的设备,可以实现电能表数据的采集、电能计量设备工况和供电电能质量监测,以及客户用电负荷和电能量的监控,并对采集数据进行管理和双向传输。
[0003] 现有的专变采集终端都是单模块方案,整个设备只有一个主应用程序在运行,主应用程序包含液晶线程、显示线程、控制线程和交采线程构成,各线程之前采用消息进行直接通信,如有业务需求的增加,需要改动整个的模块,造成整个项目的维护困难,容易发生问题。
具体实施方式
[0026] 下面结合附图和实施方式对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分。
[0027] 需要说明的是,在不冲突的情况下,本公开中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本公开。
[0028] 参见图1,本实施例公开了一种基于MQTT消息的专变采集终端系统,包括至少两个子程序模块1,每个子程序模块1通过MQTT消息总线与MQTT服务模块2通信连接;子程序模块1用于向MQTT服务模块 2订阅消息或发布消息,以实现子程序模块1之间的信息传输。
[0029] 本实施例公开的一种基于MQTT消息的专变采集终端系统将原有专变采集终端系统拆分为至少两个子程序模块1,子程序模块1通过向 MQTT服务模块2订阅消息或发布消息,以实现子程序模块1之间的信息传输,降低了各子程序模块1之间的耦合程度,使得专变采集终端系统维护不易出错,降低了专变采集终端系统维护难度。
[0030] 具体的,所有子程序模块1之间传输的信息均由MQTT服务模块2 转发。
[0031] MQTT的通信是通过发布/订阅的方式实现,订阅和发布基于主题。发布方和订阅方通过发布/订阅的方式来进行解耦,发布方和订阅方之间没有直接地连接,它们存在一个中间方,即MQTT服务模块,MQTT服务模块在MQTT里面也称之为Broker,用来进行消息的存储和转发。具体的,Broker收到了发布方的消息,发现订阅方订阅了主题,然后将该主题的消息转发给订阅方。
[0032] 参见图1和图2,专变采集终端系统包括四个子程序模块1,四个子程序模块1分别为协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14;
[0033] 协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14通过MQTT消息总线与MQTT服务模块2通信连接。
[0034] 协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14用于向MQTT服务模块2订阅或发布消息,以实现协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14之间的信息传输。
[0035] 此处将原有专变采集终端拆分为协议程序模块11、显示程序模块 12、控制程序模块13和交采程序模块14;协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14与MQTT服务模块2 通信连接,使得协议程序模块11、显示程序模块12、控制程序模块 13和交采程序模块14之间的信息传输通过MQTT服务模块2实现,使得协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14直接无需直接通信,当需要更改显示功能、控制功能、交采功能和协议功能时,一般只涉及相应程序模块的修改,不涉及其他程序模块的修改,使得专变采集终端系统维护更为简单,维护时不易出错。
[0036] 上述协议程序模块用于控制专变采集终端的通信协议,其中,该协议程序模块可以是协议APP,该通信协议可以是用于与主站通信的 698.45通信协议。
[0037] 上述显示程序模块用于控制专变采集终端的显示数据,其中,该显示程序模块可以是协议APP,该显示数据可以包括普通数据和查设参数,具体的,该显示数据可以显示在专变采集终端设备的160x160 显示屏上。
[0038] 上述控制程序模块用于与专变采集终端的控制模块通信,以操作专变采集终端设备,例如控制继电器的跳闸等,其中,该控制程序模块可以是控制APP。
[0039] 上述交采程序模块用于采集专变采集终端的交流数据,其中,该交采程序模块可以是交采APP,该交流数据包括电压、电流和功率等数据,交采程序模块用于实现本地的交流采用功能。
[0040] 在一个实施例方式中,子程序模块1用于向MQTT服务模发送包含主题的订阅数据并接收MQTT服务模块2根据主题反馈的发布数据;子程序模块1用于向MQTT服务模发送包含主题的发布数据。具体的,一个子程序模块1可以只发送订阅数据、只发送发布数据或即发送订阅数据又发送发布数据,但至少存在一个子程序模块1发送订阅数据,至少存在一个子程序模块1发送发布数据。
[0041] 具体的,主题包含发布模块标识(srcAPP)、订阅模块标识 (dstAPP)、操作类型(Operator)和消息类型(Infotype)。
[0042] 发布模块标识用于表示发布本消息的子程序模块;
[0043] 订阅模块标识用于表示订阅本消息的子程序模块;
[0044] 操作类型,表示操作类型,例如:获取操作(get),适用于无输入有输出的场景,设置操作(set),适用于有输入无输出的场景。
[0045] 消息类型包括请求信息类型和响应消息类型;用于表示消息为请求消息(request)还是响应消息(Response)。
[0046] 其中,订阅或发布的消息可以包括消息标识(Token)、消息时间戳(timestamp)和消息体(body)。
[0047] 在一个实施例方式中,专变采集终端采用ubuntu linux操作系统 (一种以桌面应用为主的Linux操作系统),MQTT服务模块2采用 Mosquitto服务模块。
[0048] 在一个实施例方式中,协议程序模块11、显示程序模块12、控制程序模块13和交采程序模块14之间传输的信息均由MQTT服务模块2 转发。
[0049] 本公开的实施例中,把专变采集终端主程序模块拆分为协议程序模块11、显示程序模块12、控制程序模块13、交采程序模块14,每个模块采用MQTT消息跟MQTT服务模块(MQTT Broker)进行通信,每个模块通过订阅不同的消息来进行自身的消息管理,处理自身订阅的消息。
[0050] 一种应用于上述实施例中任一所述的专变采集终端系统的通信方法,包括:
[0051] 第一程序模块向MQTT服务模块发送包含主题的发布消息,第一程序模块为子程序模块;
[0052] 第二程序模块向MQTT服务模块发送包含主题的订阅消息,并接收 MQTT服务模块根据主题反馈的发布消息,第二程序模块为与第一程序模块不同的子程序模块。
[0053] 在本说明书的描述中,参考术语“一个实施例/方式”、“一些实施例 /方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例/方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例/方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例/方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例/方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例/方式或示例以及不同实施例/方式或示例的特征进行结合和组合。
[0054] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0055] 本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本公开,而并非是对本公开的范围进行限定。对于所属领域的技术人员而言,在上述公开的基础上还可以做出其它变化或变型,并且这些变化或变型仍处于本公开的范围内。