CN114679501A - Modbus转mqtt协议的云网关实现方法和装置 - Google Patents
Modbus转mqtt协议的云网关实现方法和装置 Download PDFInfo
- Publication number
- CN114679501A CN114679501A CN202210228319.4A CN202210228319A CN114679501A CN 114679501 A CN114679501 A CN 114679501A CN 202210228319 A CN202210228319 A CN 202210228319A CN 114679501 A CN114679501 A CN 114679501A
- Authority
- CN
- China
- Prior art keywords
- data
- modbus
- real
- intelligent
- mqtt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40228—Modbus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种MODBUS转MQTT协议的云网关实现方法和装置,涉及物联网技术领域。该方法通过串口基于MODBUS协议从智能设备读取相关的实时数据;将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;将生成的所述打包数据上传至云平台。可以看到,本申请实施例云网关负责MODBUS、MQTT两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于MODBUS协议从传感器等智能设备读取相关实时数据,以及将实时数据以MQTT协议打包上传云平台。
Description
技术领域
本申请涉及物联网技术领域,尤其涉及一种MODBUS转MQTT协议的云网关实现方法和装置。
背景技术
随着物联网技术的发展,大量的现场智能设备(如各类现场控制器、传感器、变送器等)需要接入云平台来实现数据采集与控制。这些现场智能设备大多都支持用串口采用MODBUS协议进行通信。而当前的主流云平台对现场数据采集大多都支持MQTT(MessageQueuing Telemetry Transport,消息队列遥测传输)协议进行数据通信,如何进行数据的转换处理成为亟需解决的技术问题。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的MODBUS转MQTT协议的云网关实现方法和装置。所述技术方案如下:
第一方面,提供了一种MODBUS转MQTT协议的云网关实现方法,包括以下步骤:
通过串口基于MODBUS协议从智能设备读取相关的实时数据;
将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
将生成的所述打包数据上传至云平台。
在一种可能的实现方式中,所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,包括:
获取指定现场的多个智能设备的设备信息;
基于所述多个智能设备的设备信息,通过串口基于MODBUS协议从所述多个智能设备读取相关的实时数据。
在一种可能的实现方式中,所述MODBUS转MQTT协议的云网关实现方法应用于云网关,所述云网关包括接入层、处理层和应用层;
所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,包括:所述接入层将智能设备采集的实时数据通过MODBUS串行链路上传;
所述将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,包括:所述处理层将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
所述将生成的所述打包数据上传至云平台,包括:所述应用层将生成的所述打包数据上传至云平台。
在一种可能的实现方式中,所述应用层将生成的所述打包数据上传至云平台,包括:
所述应用层对生成的所述打包数据进行加密,得到加密后的数据;
所述应用层通过无线通信模块将所述加密后的数据上传至云平台。
在一种可能的实现方式中,将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,包括:
对MODBUS协议格式的所述实时数据进行解析,得到寄存器地址;
将所述寄存器地址和所述寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到MQTT协议格式的打包数据。
在一种可能的实现方式中,所述方法还包括:
接收来自所述云平台的以MQTT协议格式封装的MQTT待处理数据;
对所述MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,并将所述MODBUS封装数据发送给对应的智能设备。
在一种可能的实现方式中,对所述MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,包括:解析所述MQTT待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成MODBUS协议包以得到MODBUS封装数据;
将所述MODBUS封装数据发送给对应的智能设备,包括:根据所述智能设备地址,将所述MODBUS封装数据发送给对应的智能设备。
在一种可能的实现方式中,所述MODBUS转MQTT协议的云网关实现方法通过Golang语言编程实现。
在一种可能的实现方式中,所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,还包括:
所述实时数据为固定频率的数据,所述多个智能设备会依照固定频率发送相关的实时数据,所述云网关通过串口基于MODBUS协议从所述多个智能设备读取相关的实时数据,当所述云网关在一段时间内没有收到所述实时数据时,会首先通过串口基于MODBUS协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过GPRS模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
步骤A1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到所述智能设备的实时数据
其中R(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值; f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i) 表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
若R(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有R(i)=1的智能设备筛选出来继续进行步骤A2的操作;
若R(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
步骤A2:利用公式(2)根据所述云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
其中K(a)表示步骤A1筛选出的第a个多次未收到数据的智能设备的排序值;S(a)表示所述云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若S(a)=-1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若S(a)=0,表示所述云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若S(a)=1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤A1筛选出来的多次未收到数据的智能设备个数;
按照K(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
步骤A3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
其中D(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0D0A表示16进制数(其对应的ASCII值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
将打包后的数据按照步骤A2中得到的顺序通过GPRS模块以短信的形式发送至工作人员的终端上。
第二方面,提供了一种MODBUS转MQTT协议的云网关实现装置,包括:
获取模块,用于通过串口基于MODBUS协议从智能设备读取相关的实时数据;
生成模块,用于将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
上传模块,用于将生成的所述打包数据上传至云平台。
借由上述技术方案,本申请实施例提供的MODBUS转MQTT协议的云网关实现方法和装置,云网关负责MODBUS、MQTT两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于MODBUS协议从传感器等智能设备读取相关实时数据,以及将实时数据以MQTT协议打包上传云平台。
云网关相比于现有物联网网关具备以下技术效果:依托Golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于Linux环境下的Golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1示出了根据本申请实施例的MODBUS转MQTT协议的云网关实现方法的流程图;
图2示出了根据本申请另一实施例的MODBUS转MQTT协议的云网关实现方法的流程图;
图3示出了根据本申请实施例的MODBUS转MQTT协议的云网关实现装置的结构图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。
MODBUS是一种串行通信协议。MODBUS协议已经成为工业领域通信协议的业界标准,也是工业电子设备之间常用的连接方式。MODBUS因其公开发表并且无版权要求、易于部署和维护、修改移动本地的比特或字节没有很多限制等优势,比其他通信协议使用的更广泛。
如前文所述,大量的现场智能设备(如各类现场控制器、传感器、变送器等)需要接入云平台来实现数据采集与控制。这些现场智能设备大多都支持用串口采用MODBUS协议进行通信。而当前的主流云平台对现场数据采集大多都支持MQTT协议进行数据通信,如何进行数据的转换处理成为亟需解决的技术问题。
为解决上述技术问题,本申请实施例提供了一种MODBUS转MQTT协议的云网关实现方法。如图1所示,该MODBUS转MQTT协议的云网关实现方法可以包括以下步骤S101至S103:
步骤S101,通过串口基于MODBUS协议从智能设备读取相关的实时数据;
步骤S102,将实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
步骤S103,将生成的打包数据上传至云平台。
本申请实施例提供的MODBUS转MQTT协议的云网关实现方法和装置,云网关负责MODBUS、MQTT两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于MODBUS协议从传感器等智能设备读取相关实时数据,以及将实时数据以MQTT协议打包上传云平台。
本申请实施例中提供了一种可能的实现方式,本申请实施例提供的 MODBUS转MQTT协议的云网关实现方法可以通过Golang语言编程实现,相比于现有物联网网关,云网关依托Golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于Linux环境下的Golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
本申请实施例中提供了一种可能的实现方式,上文步骤S101通过串口基于MODBUS协议从智能设备读取相关的实时数据,具体可以是获取指定现场的多个智能设备的设备信息,进而基于多个智能设备的设备信息,通过串口基于MODBUS协议从多个智能设备读取相关的实时数据。可以看到,本申请实施例能够实现同时采集多路现场设备的实时数据,提高数据采集的效率。
本申请实施例中提供了一种可能的实现方式,本申请实施例提供的 MODBUS转MQTT协议的云网关实现方法可以应用于云网关,该云网关可以包括接入层、处理层和应用层;
步骤S101通过串口基于MODBUS协议从智能设备读取相关的实时数据,可以是接入层将智能设备采集的实时数据通过MODBUS串行链路上传;
步骤S102将实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,可以是处理层将实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
步骤S103将生成的打包数据上传至云平台,可以是应用层将生成的打包数据上传至云平台。
本申请实施例可以通过接入层、处理层和应用层分别进行处理,提高数据格式转换的效率,进一步提高云平台对现场智能设备的控制效率。
本申请实施例中提供了一种可能的实现方式,为了提高数据的安全性,应用层将生成的打包数据上传至云平台,具体可以是应用层对生成的打包数据进行加密,得到加密后的数据;进而应用层通过无线通信模块将加密后的数据上传至云平台。这里的无线通信模块可以是WiFi(Wireless Fidelity,蓝牙)模块、UWB(Ultra Wideband,超宽带)模块、NFC(Near Field Communication,近场通信)模块、4G或5G通信模块等,本申请实施例对此不做限制。
本申请实施例中提供了一种可能的实现方式,上文步骤S102将实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,具体可以包括以下步骤a1至a2:
步骤a1,对MODBUS协议格式的实时数据进行解析,得到寄存器地址;
步骤a2,将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到MQTT协议格式的打包数据。
举例来说,云网关对MODBUS协议格式的实时数据进行解析得到寄存器地址,然后在解析出接收到的寄存器数据后,将寄存器地址和对应的数据转换成字符串,以“&”号作为分割符,拼接到一起。如“512&12”,表示地址为512的寄存器的数据内容为12。连续多个寄存器的数据之间用逗号分割,如“512&12,514&18,520&22”表示寄存器地址为512、514和520的数据内容分别为12、18和22。字符串拼接完成后,放到MQTT协议的数据区,然后通过消息发布机制,把数据发送给云平台或者MQTT代理服务器。
本申请实施例中提供了一种可能的实现方式,对于云平台的控制数据还可以及时转发给现场的智能设备,具体可以包括以下步骤b1和b2:
步骤b1,接收来自云平台的以MQTT协议格式封装的MQTT待处理数据;
步骤b2,对MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,并将MODBUS封装数据发送给对应的智能设备。
本申请实施例接收来自云平台的以MQTT协议格式封装的MQTT待处理数据,进而对MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,并将MODBUS封装数据发送给对应的智能设备,对于云平台的控制数据可以及时转发给现场的智能设备,提高云平台的控制效率。
本申请实施例中提供了一种可能的实现方式,对MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,可以是解析MQTT待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成MODBUS协议包以得到MODBUS封装数据;
将MODBUS封装数据发送给对应的智能设备,可以是根据智能设备地址,将MODBUS封装数据发送给对应的智能设备。
本申请实施例解析MQTT待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成MODBUS协议包以得到MODBUS封装数据,进而根据智能设备地址,将MODBUS封装数据发送给对应的智能设备,可以将云平台的控制数据及时转发给现场的智能设备,提高云平台的控制效率。
本申请实施例中提供了一种可能的实现方式,上文步骤S101通过串口基于MODBUS协议从智能设备读取相关的实时数据,还包括实时数据为固定频率的数据,多个智能设备会依照固定频率发送相关的实时数据,云网关通过串口基于MODBUS协议从多个智能设备读取相关的实时数据,当云网关在一段时间内没有收到实时数据时,会首先通过串口基于MODBUS协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过GPRS(General Packet RadioService,通用分组无线服务技术)模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
步骤A1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据
其中R(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值; f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i)表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
若R(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有R(i)=1的智能设备筛选出来继续进行步骤A2的操作;
若R(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
步骤A2:利用公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
其中K(a)表示步骤A1筛选出的第a个多次未收到数据的智能设备的排序值;S(a)表示云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若S(a)=-1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若S(a)=0,表示云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若S(a)=1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤A1筛选出来的多次未收到数据的智能设备个数;
按照K(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
步骤A3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
其中D(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0D0A表示16进制数(其对应的ASCII值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
将打包后的数据按照步骤A2中得到的顺序通过GPRS模块以短信的形式发送至工作人员的终端上。
上述技术方案的有益效果为:首先利用步骤A1中的公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据,进而初步筛选出存在问题的设备;然后利用步骤A2中的公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序进而让工作人员知晓哪些设备是故障问题较小的可以提前进行修复然后让设备继续工作以提高设备整体的工作效率;最后利用步骤A3中的公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包,从而在打包数据中加入换行,以确保工作人员可以更加方便直观的观看数据,并且尽快的修复故障数据。
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍MODBUS转MQTT协议的云网关实现方法。
本申请另一实施例提供了一种MODBUS转MQTT协议的云网关实现方法,该方法可以通过Golang语言编程实现。如图2所示,该MODBUS转 MQTT协议的云网关实现方法可以包括以下步骤S201至S206。
步骤S201,获取指定现场的多个智能设备的设备信息,进而基于多个智能设备的设备信息,通过串口基于MODBUS协议从多个智能设备读取相关的实时数据。
该步骤中,可以是接入层将多个智能设备采集的实时数据通过MODBUS 串行链路上传。
步骤S202,对MODBUS协议格式的实时数据进行解析,得到寄存器地址和寄存器地址对应的寄存器数据。
步骤S203,将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到MQTT协议格式的打包数据。
步骤S204,将MQTT协议格式的打包数据上传至云平台。
步骤S205,接收来自云平台的以MQTT协议格式封装的MQTT待处理数据。
步骤S206,对MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,并将MODBUS封装数据发送给对应的智能设备。
本申请实施例可以不断循环执行通过串口基于MODBUS协议从传感器等智能设备读取相关实时数据,以及将实时数据以MQTT协议打包上传云平台。并且,可以将云平台的控制数据及时转发给现场的智能设备,提高云平台的控制效率。
需要说明的是,实际应用中,上述所有可能的实施方式可以采用结合的方式任意组合,形成本申请的可能的实施例,在此不再一一赘述。
基于上文各个实施例提供的MODBUS转MQTT协议的云网关实现方法,基于同一发明构思,本申请实施例还提供了一种MODBUS转MQTT协议的云网关实现装置。
图3示出了根据本申请实施例的MODBUS转MQTT协议的云网关实现装置的结构图。如图3所示,该MODBUS转MQTT协议的云网关实现装置可以包括获取模块310、生成模块320以及上传模块330。
获取模块310,用于通过串口基于MODBUS协议从智能设备读取相关的实时数据;
生成模块320,用于将实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
上传模块330,用于将生成的打包数据上传至云平台。
本申请实施例中提供了一种可能的实现方式,上文图3展示的获取模块 310还用于:
获取指定现场的多个智能设备的设备信息;
基于多个智能设备的设备信息,通过串口基于MODBUS协议从多个智能设备读取相关的实时数据。
本申请实施例中提供了一种可能的实现方式,上文图3展示的装置可以应用于云网关,云网关包括接入层、处理层和应用层;
获取模块310还用于:接入层将智能设备采集的实时数据通过MODBUS 串行链路上传;
生成模块320还用于:处理层将实时数据从MODBUS协议格式转换成 MQTT协议格式进行打包,生成打包数据;
上传模块330还用于:应用层将生成的打包数据上传至云平台。
本申请实施例中提供了一种可能的实现方式,上文图3展示的上传模块 330还用于:
应用层对生成的打包数据进行加密,得到加密后的数据;
应用层通过无线通信模块将加密后的数据上传至云平台。
本申请实施例中提供了一种可能的实现方式,上文图3展示的生成模块 320还用于:
对MODBUS协议格式的实时数据进行解析,得到寄存器地址;
将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到MQTT协议格式的打包数据。
本申请实施例中提供了一种可能的实现方式,上文图3展示的装置还可以包括接收模块、封装模块和发送模块(附图3中未示出)。
接收模块,用于接收来自云平台的以MQTT协议格式封装的MQTT待处理数据;
封装模块,用于对MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据;
发送模块,用于将MODBUS封装数据发送给对应的智能设备。
本申请实施例中提供了一种可能的实现方式,封装模块还用于:解析 MQTT待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成 MODBUS协议包以得到MODBUS封装数据;
发送模块还用于:根据智能设备地址,将MODBUS封装数据发送给对应的智能设备。
本申请实施例中提供了一种可能的实现方式,MODBUS转MQTT协议的云网关实现装置通过Golang语言编程实现。
本申请实施例中提供了一种可能的实现方式,上文图3展示的获取模块 310还用于:实时数据为固定频率的数据,多个智能设备会依照固定频率发送相关的实时数据,云网关通过串口基于MODBUS协议从多个智能设备读取相关的实时数据,当云网关在一段时间内没有收到实时数据时,会首先通过串口基于MODBUS协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过GPRS(General Packet Radio Service,通用分组无线服务技术)模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
步骤A1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据
其中R(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值; f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i)表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
若R(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有R(i)=1的智能设备筛选出来继续进行步骤A2的操作;
若R(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
步骤A2:利用公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
其中K(a)表示步骤A1筛选出的第a个多次未收到数据的智能设备的排序值;S(a)表示云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若S(a)=-1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若S(a)=0,表示云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若S(a)=1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤A1筛选出来的多次未收到数据的智能设备个数;
按照K(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
步骤A3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
其中D(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0D0A表示16进制数(其对应的ASCII值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
将打包后的数据按照步骤A2中得到的顺序通过GPRS模块以短信的形式发送至工作人员的终端上。
本申请实施例提供的MODBUS转MQTT协议的云网关实现装置,云网关负责MODBUS、MQTT两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于MODBUS协议从传感器等智能设备读取相关实时数据,以及将实时数据以MQTT协议打包上传云平台。
相比于现有物联网网关,云网关依托Golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于Linux环境下的Golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
本领域普通技术人员可以理解:本申请的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干程序指令,用以使得一电子设备(例如个人计算机,服务器,或者网络设备等)在运行所述程序指令时执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的电子设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被电子设备的处理器执行时,所述电子设备执行本申请各实施例所述方法的全部或部分步骤。
以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:在本申请的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本申请的保护范围。
Claims (10)
1.一种MODBUS转MQTT协议的云网关实现方法,其特征在于,包括以下步骤:
通过串口基于MODBUS协议从智能设备读取相关的实时数据;
将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
将生成的所述打包数据上传至云平台。
2.根据权利要求1所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,包括:
获取指定现场的多个智能设备的设备信息;
基于所述多个智能设备的设备信息,通过串口基于MODBUS协议从所述多个智能设备读取相关的实时数据。
3.根据权利要求1所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,所述MODBUS转MQTT协议的云网关实现方法应用于云网关,所述云网关包括接入层、处理层和应用层;
所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,包括:所述接入层将智能设备采集的实时数据通过MODBUS串行链路上传;
所述将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,包括:所述处理层将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
所述将生成的所述打包数据上传至云平台,包括:所述应用层将生成的所述打包数据上传至云平台。
4.根据权利要求3所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,所述应用层将生成的所述打包数据上传至云平台,包括:
所述应用层对生成的所述打包数据进行加密,得到加密后的数据;
所述应用层通过无线通信模块将所述加密后的数据上传至云平台。
5.根据权利要求1所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据,包括:
对MODBUS协议格式的所述实时数据进行解析,得到寄存器地址;
将所述寄存器地址和所述寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到MQTT协议格式的打包数据。
6.根据权利要求1所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,还包括:
接收来自所述云平台的以MQTT协议格式封装的MQTT待处理数据;
对所述MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,并将所述MODBUS封装数据发送给对应的智能设备。
7.根据权利要求6所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,对所述MQTT待处理数据进行解析,并按照MODBUS协议格式封装解析后的数据,以得到MODBUS封装数据,包括:解析所述MQTT待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成MODBUS协议包以得到MODBUS封装数据;
将所述MODBUS封装数据发送给对应的智能设备,包括:根据所述智能设备地址,将所述MODBUS封装数据发送给对应的智能设备。
8.根据权利要求1至7中任一项所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,所述MODBUS转MQTT协议的云网关实现方法通过Golang语言编程实现。
9.根据权利要求1所述的MODBUS转MQTT协议的云网关实现方法,其特征在于,所述通过串口基于MODBUS协议从智能设备读取相关的实时数据,还包括:
所述实时数据为固定频率的数据,所述多个智能设备会依照固定频率发送相关的实时数据,所述云网关通过串口基于MODBUS协议从所述多个智能设备读取相关的实时数据,当所述云网关在一段时间内没有收到所述实时数据时,会首先通过串口基于MODBUS协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过GPRS模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
步骤A1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到所述智能设备的实时数据
其中R(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值;f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i)表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
若R(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有R(i)=1的智能设备筛选出来继续进行步骤A2的操作;
若R(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
步骤A2:利用公式(2)根据所述云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
其中K(a)表示步骤A1筛选出的第a个多次未收到数据的智能设备的排序值;S(a)表示所述云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若S(a)=-1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若S(a)=0,表示所述云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若S(a)=1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤A1筛选出来的多次未收到数据的智能设备个数;
按照K(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
步骤A3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
其中D(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0D0A表示16进制数(其对应的ASCII值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
将打包后的数据按照步骤A2中得到的顺序通过GPRS模块以短信的形式发送至工作人员的终端上。
10.一种MODBUS转MQTT协议的云网关实现装置,其特征在于,包括:
获取模块,用于通过串口基于MODBUS协议从智能设备读取相关的实时数据;
生成模块,用于将所述实时数据从MODBUS协议格式转换成MQTT协议格式进行打包,生成打包数据;
上传模块,用于将生成的所述打包数据上传至云平台。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210228319.4A CN114679501B (zh) | 2022-03-10 | 2022-03-10 | Modbus转mqtt协议的云网关实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210228319.4A CN114679501B (zh) | 2022-03-10 | 2022-03-10 | Modbus转mqtt协议的云网关实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114679501A true CN114679501A (zh) | 2022-06-28 |
CN114679501B CN114679501B (zh) | 2023-01-10 |
Family
ID=82071884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210228319.4A Active CN114679501B (zh) | 2022-03-10 | 2022-03-10 | Modbus转mqtt协议的云网关实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114679501B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981435A (zh) * | 2019-04-02 | 2019-07-05 | 中安智联未来有限公司 | 基于CAN-ModBus转MQTT网关及通讯系统 |
CN111092812A (zh) * | 2019-11-21 | 2020-05-01 | 广东技术师范大学 | 一种基于MODBUS转Mqtt协议的高可靠性网关装置 |
-
2022
- 2022-03-10 CN CN202210228319.4A patent/CN114679501B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981435A (zh) * | 2019-04-02 | 2019-07-05 | 中安智联未来有限公司 | 基于CAN-ModBus转MQTT网关及通讯系统 |
CN111092812A (zh) * | 2019-11-21 | 2020-05-01 | 广东技术师范大学 | 一种基于MODBUS转Mqtt协议的高可靠性网关装置 |
Non-Patent Citations (1)
Title |
---|
李睿: "面向智能楼宇设备的物联网网关的设计与实现", 《CNKI优秀硕士学位论文全文库》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114679501B (zh) | 2023-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107992026B (zh) | 一种基于labveiw的解析dbc分析报文的方法 | |
CN108989358B (zh) | 一种基于tcp/ip协议纺机运行数据获取方法 | |
CN111294235B (zh) | 数据处理方法、装置、网关及可读存储介质 | |
CN104468938A (zh) | 一种信息采集处理方法以及相关装置、移动终端和服务器 | |
CN112187922A (zh) | 一种基于mqtt通信协议的智能物联网关机 | |
CN102624685A (zh) | 一种可编码的智能设备协议处理方法 | |
CN109150605A (zh) | 智能网关、监控系统及数据处理方法 | |
CN103973421A (zh) | 文件传送方法及装置 | |
CN110769002A (zh) | 基于LabVIEW的报文解析方法、系统、电子设备和介质 | |
CN112311664A (zh) | 一种工业互联网数据交互方法、系统及工业网关 | |
CN110463138B (zh) | 网络结构信息生成方法 | |
RU2016109615A (ru) | Способ и устройство для использования данных тегов | |
CN114362885A (zh) | 物联网数据传输方法、装置、设备和介质 | |
CN114979296A (zh) | 物联网通信方法及相关终端、存储介质 | |
CN114679501B (zh) | Modbus转mqtt协议的云网关实现方法和装置 | |
CN111831540A (zh) | 一种调试信息的处理方法、处理装置和存储介质 | |
CN112202798B (zh) | 数据的协议转化方法、系统、电子设备及存储介质 | |
CN109542419A (zh) | 一种can信息处理软件开发的方法、系统及设备 | |
CN101105747A (zh) | 一种电站通信系统及其规约库实现方法 | |
CN112399446A (zh) | 边缘网关通信方法、装置、计算机设备和存储介质 | |
CN107864199A (zh) | 物联网通信方法、装置及物联网通信的实现装置 | |
CN115543755B (zh) | 一种性能监管方法、装置、系统、设备和介质 | |
CN113746850A (zh) | 一种物联网多通道数据采集方法 | |
CN105793842A (zh) | 序列化消息之间的转换方法和装置 | |
CN110247666B (zh) | 一种硬件并行压缩的系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |