一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

MODBUS转MQTT协议的云网关实现方法和装置与流程

2022-06-30 00:25:36 来源:中国专利 TAG:

modbus转mqtt协议的云网关实现方法和装置
技术领域
1.本技术涉及物联网技术领域,尤其涉及一种modbus转mqtt协议的云网关实现方法和装置。


背景技术:

2.随着物联网技术的发展,大量的现场智能设备(如各类现场控制器、传感器、变送器等)需要接入云平台来实现数据采集与控制。这些现场智能设备大多都支持用串口采用modbus协议进行通信。而当前的主流云平台对现场数据采集大多都支持mqtt(message queuing telemetry transport,消息队列遥测传输)协议进行数据通信,如何进行数据的转换处理成为亟需解决的技术问题。


技术实现要素:

3.鉴于上述问题,提出了本技术以便提供一种克服上述问题或者至少部分地解决上述问题的modbus转mqtt协议的云网关实现方法和装置。所述技术方案如下:
4.第一方面,提供了一种modbus转mqtt协议的云网关实现方法,包括以下步骤:
5.通过串口基于modbus协议从智能设备读取相关的实时数据;
6.将所述实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
7.将生成的所述打包数据上传至云平台。
8.在一种可能的实现方式中,所述通过串口基于modbus协议从智能设备读取相关的实时数据,包括:
9.获取指定现场的多个智能设备的设备信息;
10.基于所述多个智能设备的设备信息,通过串口基于modbus协议从所述多个智能设备读取相关的实时数据。
11.在一种可能的实现方式中,所述modbus转mqtt协议的云网关实现方法应用于云网关,所述云网关包括接入层、处理层和应用层;
12.所述通过串口基于modbus协议从智能设备读取相关的实时数据,包括:所述接入层将智能设备采集的实时数据通过modbus串行链路上传;
13.所述将所述实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据,包括:所述处理层将所述实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
14.所述将生成的所述打包数据上传至云平台,包括:所述应用层将生成的所述打包数据上传至云平台。
15.在一种可能的实现方式中,所述应用层将生成的所述打包数据上传至云平台,包括:
16.所述应用层对生成的所述打包数据进行加密,得到加密后的数据;
17.所述应用层通过无线通信模块将所述加密后的数据上传至云平台。
18.在一种可能的实现方式中,将所述实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据,包括:
19.对modbus协议格式的所述实时数据进行解析,得到寄存器地址;
20.将所述寄存器地址和所述寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到mqtt协议格式的打包数据。
21.在一种可能的实现方式中,所述方法还包括:
22.接收来自所述云平台的以mqtt协议格式封装的mqtt待处理数据;
23.对所述mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,并将所述modbus封装数据发送给对应的智能设备。
24.在一种可能的实现方式中,对所述mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,包括:解析所述mqtt待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成modbus协议包以得到modbus封装数据;
25.将所述modbus封装数据发送给对应的智能设备,包括:根据所述智能设备地址,将所述modbus封装数据发送给对应的智能设备。
26.在一种可能的实现方式中,所述modbus转mqtt协议的云网关实现方法通过golang语言编程实现。
27.在一种可能的实现方式中,所述通过串口基于modbus协议从智能设备读取相关的实时数据,还包括:
28.所述实时数据为固定频率的数据,所述多个智能设备会依照固定频率发送相关的实时数据,所述云网关通过串口基于modbus协议从所述多个智能设备读取相关的实时数据,当所述云网关在一段时间内没有收到所述实时数据时,会首先通过串口基于modbus协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过gprs模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
29.步骤a1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到所述智能设备的实时数据
[0030][0031]
其中r(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值; f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i) 表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
[0032]
若r(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有r(i)=1的智能设备筛选出来继续进行步骤a2的操作;
[0033]
若r(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
[0034]
步骤a2:利用公式(2)根据所述云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
[0035][0036]
其中k(a)表示步骤a1筛选出的第a个多次未收到数据的智能设备的排序值;s(a)表示所述云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若s(a)=-1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若s(a)=0,表示所述云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若s(a)=1,表示所述云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤a1筛选出来的多次未收到数据的智能设备个数;
[0037]
按照k(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
[0038]
步骤a3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
[0039][0040]
其中d(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0d0a表示16进制数(其对应的ascii值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
[0041]
将打包后的数据按照步骤a2中得到的顺序通过gprs模块以短信的形式发送至工作人员的终端上。
[0042]
第二方面,提供了一种modbus转mqtt协议的云网关实现装置,包括:
[0043]
获取模块,用于通过串口基于modbus协议从智能设备读取相关的实时数据;
[0044]
生成模块,用于将所述实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
[0045]
上传模块,用于将生成的所述打包数据上传至云平台。
[0046]
借由上述技术方案,本技术实施例提供的modbus转mqtt协议的云网关实现方法和装置,云网关负责modbus、mqtt两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于modbus协议从传感器等智能设备读取相关实时数据,以及将实时数据以mqtt协议打包上传云平台。
[0047]
云网关相比于现有物联网网关具备以下技术效果:依托golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于linux环境下的golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
附图说明
[0048]
为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
[0049]
图1示出了根据本技术实施例的modbus转mqtt协议的云网关实现方法的流程图;
[0050]
图2示出了根据本技术另一实施例的modbus转mqtt协议的云网关实现方法的流程图;
[0051]
图3示出了根据本技术实施例的modbus转mqtt协议的云网关实现装置的结构图。
具体实施方式
[0052]
下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
[0053]
需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。
[0054]
modbus是一种串行通信协议。modbus协议已经成为工业领域通信协议的业界标准,也是工业电子设备之间常用的连接方式。modbus因其公开发表并且无版权要求、易于部署和维护、修改移动本地的比特或字节没有很多限制等优势,比其他通信协议使用的更广泛。
[0055]
如前文所述,大量的现场智能设备(如各类现场控制器、传感器、变送器等)需要接入云平台来实现数据采集与控制。这些现场智能设备大多都支持用串口采用modbus协议进行通信。而当前的主流云平台对现场数据采集大多都支持mqtt协议进行数据通信,如何进行数据的转换处理成为亟需解决的技术问题。
[0056]
为解决上述技术问题,本技术实施例提供了一种modbus转mqtt协议的云网关实现方法。如图1所示,该modbus转mqtt协议的云网关实现方法可以包括以下步骤s101至s103:
[0057]
步骤s101,通过串口基于modbus协议从智能设备读取相关的实时数据;
[0058]
步骤s102,将实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
[0059]
步骤s103,将生成的打包数据上传至云平台。
[0060]
本技术实施例提供的modbus转mqtt协议的云网关实现方法和装置,云网关负责modbus、mqtt两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于modbus协议从传感器等智能设备读取相关实时数据,以及将实时数据以mqtt协议打包上传云平台。
[0061]
本技术实施例中提供了一种可能的实现方式,本技术实施例提供的 modbus转mqtt协议的云网关实现方法可以通过golang语言编程实现,相比于现有物联网网关,云网关依托golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同
时采集多路现场设备的实时数据,同时基于linux环境下的golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
[0062]
本技术实施例中提供了一种可能的实现方式,上文步骤s101通过串口基于modbus协议从智能设备读取相关的实时数据,具体可以是获取指定现场的多个智能设备的设备信息,进而基于多个智能设备的设备信息,通过串口基于modbus协议从多个智能设备读取相关的实时数据。可以看到,本技术实施例能够实现同时采集多路现场设备的实时数据,提高数据采集的效率。
[0063]
本技术实施例中提供了一种可能的实现方式,本技术实施例提供的 modbus转mqtt协议的云网关实现方法可以应用于云网关,该云网关可以包括接入层、处理层和应用层;
[0064]
步骤s101通过串口基于modbus协议从智能设备读取相关的实时数据,可以是接入层将智能设备采集的实时数据通过modbus串行链路上传;
[0065]
步骤s102将实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据,可以是处理层将实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
[0066]
步骤s103将生成的打包数据上传至云平台,可以是应用层将生成的打包数据上传至云平台。
[0067]
本技术实施例可以通过接入层、处理层和应用层分别进行处理,提高数据格式转换的效率,进一步提高云平台对现场智能设备的控制效率。
[0068]
本技术实施例中提供了一种可能的实现方式,为了提高数据的安全性,应用层将生成的打包数据上传至云平台,具体可以是应用层对生成的打包数据进行加密,得到加密后的数据;进而应用层通过无线通信模块将加密后的数据上传至云平台。这里的无线通信模块可以是wifi(wireless fidelity,蓝牙)模块、uwb(ultra wideband,超宽带)模块、nfc(near fieldcommunication,近场通信)模块、4g或5g通信模块等,本技术实施例对此不做限制。
[0069]
本技术实施例中提供了一种可能的实现方式,上文步骤s102将实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据,具体可以包括以下步骤a1至a2:
[0070]
步骤a1,对modbus协议格式的实时数据进行解析,得到寄存器地址;
[0071]
步骤a2,将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到mqtt协议格式的打包数据。
[0072]
举例来说,云网关对modbus协议格式的实时数据进行解析得到寄存器地址,然后在解析出接收到的寄存器数据后,将寄存器地址和对应的数据转换成字符串,以“&”号作为分割符,拼接到一起。如“512&12”,表示地址为512的寄存器的数据内容为12。连续多个寄存器的数据之间用逗号分割,如“512&12,514&18,520&22”表示寄存器地址为512、514和520的数据内容分别为12、18和22。字符串拼接完成后,放到mqtt协议的数据区,然后通过消息发布机制,把数据发送给云平台或者mqtt代理服务器。
[0073]
本技术实施例中提供了一种可能的实现方式,对于云平台的控制数据还可以及时
转发给现场的智能设备,具体可以包括以下步骤b1和b2:
[0074]
步骤b1,接收来自云平台的以mqtt协议格式封装的mqtt待处理数据;
[0075]
步骤b2,对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,并将modbus封装数据发送给对应的智能设备。
[0076]
本技术实施例接收来自云平台的以mqtt协议格式封装的mqtt待处理数据,进而对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,并将modbus封装数据发送给对应的智能设备,对于云平台的控制数据可以及时转发给现场的智能设备,提高云平台的控制效率。
[0077]
本技术实施例中提供了一种可能的实现方式,对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,可以是解析mqtt待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成modbus协议包以得到modbus封装数据;
[0078]
将modbus封装数据发送给对应的智能设备,可以是根据智能设备地址,将modbus封装数据发送给对应的智能设备。
[0079]
本技术实施例解析mqtt待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成modbus协议包以得到modbus封装数据,进而根据智能设备地址,将modbus封装数据发送给对应的智能设备,可以将云平台的控制数据及时转发给现场的智能设备,提高云平台的控制效率。
[0080]
本技术实施例中提供了一种可能的实现方式,上文步骤s101通过串口基于modbus协议从智能设备读取相关的实时数据,还包括实时数据为固定频率的数据,多个智能设备会依照固定频率发送相关的实时数据,云网关通过串口基于modbus协议从多个智能设备读取相关的实时数据,当云网关在一段时间内没有收到实时数据时,会首先通过串口基于modbus协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过gprs(generalpacketradioservice,通用分组无线服务技术)模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
[0081]
步骤a1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据
[0082][0083]
其中r(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值;f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i)表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
[0084]
若r(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有r(i)=1的智能设备筛选出来继续进行步骤a2的操作;
[0085]
若r(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
[0086]
步骤a2:利用公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
[0087][0088]
其中k(a)表示步骤a1筛选出的第a个多次未收到数据的智能设备的排序值;s(a)表示云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若s(a)=-1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若s(a)=0,表示云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若s(a)=1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤a1筛选出来的多次未收到数据的智能设备个数;
[0089]
按照k(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
[0090]
步骤a3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
[0091][0092]
其中d(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0d0a表示16进制数(其对应的ascii值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
[0093]
将打包后的数据按照步骤a2中得到的顺序通过gprs模块以短信的形式发送至工作人员的终端上。
[0094]
上述技术方案的有益效果为:首先利用步骤a1中的公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据,进而初步筛选出存在问题的设备;然后利用步骤a2中的公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序进而让工作人员知晓哪些设备是故障问题较小的可以提前进行修复然后让设备继续工作以提高设备整体的工作效率;最后利用步骤a3中的公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包,从而在打包数据中加入换行,以确保工作人员可以更加方便直观的观看数据,并且尽快的修复故障数据。
[0095]
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍modbus转mqtt协议的云网关实现方法。
[0096]
本技术另一实施例提供了一种modbus转mqtt协议的云网关实现方法,该方法可以通过golang语言编程实现。如图2所示,该modbus转 mqtt协议的云网关实现方法可以包括以下步骤s201至s206。
[0097]
步骤s201,获取指定现场的多个智能设备的设备信息,进而基于多个智能设备的设备信息,通过串口基于modbus协议从多个智能设备读取相关的实时数据。
[0098]
该步骤中,可以是接入层将多个智能设备采集的实时数据通过modbus 串行链路上传。
[0099]
步骤s202,对modbus协议格式的实时数据进行解析,得到寄存器地址和寄存器地址对应的寄存器数据。
[0100]
步骤s203,将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到mqtt协议格式的打包数据。
[0101]
步骤s204,将mqtt协议格式的打包数据上传至云平台。
[0102]
步骤s205,接收来自云平台的以mqtt协议格式封装的mqtt待处理数据。
[0103]
步骤s206,对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据,并将modbus封装数据发送给对应的智能设备。
[0104]
本技术实施例可以不断循环执行通过串口基于modbus协议从传感器等智能设备读取相关实时数据,以及将实时数据以mqtt协议打包上传云平台。并且,可以将云平台的控制数据及时转发给现场的智能设备,提高云平台的控制效率。
[0105]
需要说明的是,实际应用中,上述所有可能的实施方式可以采用结合的方式任意组合,形成本技术的可能的实施例,在此不再一一赘述。
[0106]
基于上文各个实施例提供的modbus转mqtt协议的云网关实现方法,基于同一发明构思,本技术实施例还提供了一种modbus转mqtt协议的云网关实现装置。
[0107]
图3示出了根据本技术实施例的modbus转mqtt协议的云网关实现装置的结构图。如图3所示,该modbus转mqtt协议的云网关实现装置可以包括获取模块310、生成模块320以及上传模块330。
[0108]
获取模块310,用于通过串口基于modbus协议从智能设备读取相关的实时数据;
[0109]
生成模块320,用于将实时数据从modbus协议格式转换成mqtt协议格式进行打包,生成打包数据;
[0110]
上传模块330,用于将生成的打包数据上传至云平台。
[0111]
本技术实施例中提供了一种可能的实现方式,上文图3展示的获取模块 310还用于:
[0112]
获取指定现场的多个智能设备的设备信息;
[0113]
基于多个智能设备的设备信息,通过串口基于modbus协议从多个智能设备读取相关的实时数据。
[0114]
本技术实施例中提供了一种可能的实现方式,上文图3展示的装置可以应用于云网关,云网关包括接入层、处理层和应用层;
[0115]
获取模块310还用于:接入层将智能设备采集的实时数据通过modbus 串行链路上传;
[0116]
生成模块320还用于:处理层将实时数据从modbus协议格式转换成 mqtt协议格式进行打包,生成打包数据;
[0117]
上传模块330还用于:应用层将生成的打包数据上传至云平台。
[0118]
本技术实施例中提供了一种可能的实现方式,上文图3展示的上传模块 330还用于:
[0119]
应用层对生成的打包数据进行加密,得到加密后的数据;
[0120]
应用层通过无线通信模块将加密后的数据上传至云平台。
[0121]
本技术实施例中提供了一种可能的实现方式,上文图3展示的生成模块 320还用于:
[0122]
对modbus协议格式的实时数据进行解析,得到寄存器地址;
[0123]
将寄存器地址和寄存器地址内存储的数据转换成字符串,以第一指定符号作为分割符进行拼接,各个寄存器地址内存储的数据之间用第二指定符号分割,得到mqtt协议格式的打包数据。
[0124]
本技术实施例中提供了一种可能的实现方式,上文图3展示的装置还可以包括接收模块、封装模块和发送模块(附图3中未示出)。
[0125]
接收模块,用于接收来自云平台的以mqtt协议格式封装的mqtt待处理数据;
[0126]
封装模块,用于对mqtt待处理数据进行解析,并按照modbus协议格式封装解析后的数据,以得到modbus封装数据;
[0127]
发送模块,用于将modbus封装数据发送给对应的智能设备。
[0128]
本技术实施例中提供了一种可能的实现方式,封装模块还用于:解析 mqtt待处理数据中的消息主题名称,得到智能设备地址、寄存器地址和寄存器数量;在解析后的数据中,将同一个寄存器地址和对应的数据封装成 modbus协议包以得到modbus封装数据;
[0129]
发送模块还用于:根据智能设备地址,将modbus封装数据发送给对应的智能设备。
[0130]
本技术实施例中提供了一种可能的实现方式,modbus转mqtt协议的云网关实现装置通过golang语言编程实现。
[0131]
本技术实施例中提供了一种可能的实现方式,上文图3展示的获取模块 310还用于:实时数据为固定频率的数据,多个智能设备会依照固定频率发送相关的实时数据,云网关通过串口基于modbus协议从多个智能设备读取相关的实时数据,当云网关在一段时间内没有收到实时数据时,会首先通过串口基于modbus协议对没有收到实时数据的智能设备进行巡检交互,并对没有收到交互信息或收到设备故障信息的智能设备的设备信息进行打包,并通过gprs(general packet radio service,通用分组无线服务技术)模块以短信的形式发送至工作人员的终端上,其具体步骤包括,
[0132]
步骤a1:利用公式(1)根据预设时间内每个指定现场的智能设备读取的实时数据情况以及每个指定现场的智能设备发送数据固定频率判断是否多次未收到智能设备的实时数据
[0133][0134]
其中r(i)表示多次未收到第i个指定现场的智能设备实时数据的判定值; f(i)表示第i个指定现场的智能设备发送数据固定频率;t表示当前时刻;t0(i)表示最近一次接受到第i个指定现场的智能设备实时数据的时刻;
[0135]
若r(i)=1,表示多次未收到第i个指定现场的智能设备实时数据,则将所有r(i)=1的智能设备筛选出来继续进行步骤a2的操作;
[0136]
若r(i)=0,表示第i个指定现场的智能设备当前处于观察状态,需持续关注此设备;
[0137]
步骤a2:利用公式(2)根据云网关的巡检交互情况筛选出没有收到交互信息或收到设备故障信息的智能设备,并对这些筛选的智能设备进行排序
[0138][0139]
其中k(a)表示步骤a1筛选出的第a个多次未收到数据的智能设备的排序值;s(a)表示云网关对第a个多次未收到数据的智能设备进行巡检交互的巡检结果值(若s(a)=-1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备故障信息,若s(a)=0,表示云网关在巡检交互中未接收到第a个多次未收到数据的智能设备的任何信息,若s(a)=1,表示云网关在巡检交互中接收到第a个多次未收到数据的智能设备的设备正常信息);n表示步骤a1筛选出来的多次未收到数据的智能设备个数;
[0140]
按照k(a)从大到小的顺序对n个多次未收到数据的智能设备进行排序,排序越靠前表示设备需要优先进行修复,并按照排序顺序进行设备的设备信息顺序打包,打包公式如下;
[0141]
步骤a3:利用公式(3)根据筛选的智能设备的排序值以及筛选的智能设备的设备信息进行顺序打包
[0142][0143]
其中d(a)表示对第a个多次未收到数据的智能设备的设备信息进行打包得到打包后的数据;0d0a表示16进制数(其对应的ascii值在字符类型中表示换行);len[]表示求取括号内二进制数据位数;<<表示左移符号;()2表示将括号内的数转换为二进制数;
[0144]
将打包后的数据按照步骤a2中得到的顺序通过gprs模块以短信的形式发送至工作人员的终端上。
[0145]
本技术实施例提供的modbus转mqtt协议的云网关实现装置,云网关负责modbus、mqtt两种通讯协议的转换,由云网关实时完成以上两种数据格式的转换,并实时上传云平台。在软件系统中不断循环执行通过串口基于modbus协议从传感器等智能设备读取相关实时数据,以及将实时数据以mqtt协议打包上传云平台。
[0146]
相比于现有物联网网关,云网关依托golang语言的高可移植性,能较好的保证云网关的硬件稳定与可靠,同时能实现同时采集多路现场设备的实时数据,同时基于linux环境下的golang语言开发具有很高的开发效率,软件系统代码精炼,代码复用与迁移开发都比较容易,非常便于扩展应用到其他类似物联网数据采集项目开发中。
[0147]
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
[0148]
本领域普通技术人员可以理解:本技术的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包
括若干程序指令,用以使得一电子设备(例如个人计算机,服务器,或者网络设备等)在运行所述程序指令时执行本技术各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0149]
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的电子设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被电子设备的处理器执行时,所述电子设备执行本技术各实施例所述方法的全部或部分步骤。
[0150]
以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:在本技术的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献