CN115914437A - 用于Modbus协议的数据读取方法、***、电子设备及存储介质 - Google Patents
用于Modbus协议的数据读取方法、***、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115914437A CN115914437A CN202211566970.9A CN202211566970A CN115914437A CN 115914437 A CN115914437 A CN 115914437A CN 202211566970 A CN202211566970 A CN 202211566970A CN 115914437 A CN115914437 A CN 115914437A
- Authority
- CN
- China
- Prior art keywords
- data
- register
- target
- point
- reading
- 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.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据读取技术领域,公开了一种用于Modbus协议的数据读取方法、***、电子设备及存储介质,该方法通过预先从指定Modbus终端中提取各寄存点位对应的原始数据,根据用户配置的目标点位地址从寄存点位中确定目标点位匹配得到,并根据用户配置的目标数据类型将目标点位对应的原始数据转换为目标数据,进而生成数据读取请求对应的读取报文,相较于通过数据读取请求直接从寄存器中读取数据,先从指定Modbus终端中提取所有寄存器对应的寄存器数据,再根据用户配置的数据读取请求从寄存器数据中提取数据,解决了按照单个点位读取数据耗时长、按照批量点位读取存在无效数据的情况,从而提高了数据读取效率。
Description
技术领域
本发明涉及数据读取技术领域,尤其涉及一种用于Modbus协议的数据读取方法、***、电子设备及存储介质。
背景技术
Modbus协议作为一种串行通信协议,最先由Modicon公司与1979年为使用可编程逻辑控制器通信而发布,目前,Modbus协议已经是工业领域应用最广泛的通信协议。由于该协议为公开发表且无版权要求,各个厂家对各个数据节点没有标准的方法去描述数据对象的具体数据,在采集支持Modbus协议的设备数据时需要提前知道各个数据节点的起始地址与数据类型才能正确的解析出数据内容,即先配置点位地址、数据类型等配置信息,根据Modbus点表清单先配置数据点位,然后下发给数采网关进行采集,采集成功后再核对数据正确性。
但是,由于寄存器的点位数据会存在离散型数据点位的情况,如果单个点位进行读取时会存在大量的网络请求,造成采集效率低下,损耗时间大的问题,若批量点位读取,则会出现读取报文存在大量无用数据的情况,浪费贷款资源,使得数据读取效率低。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
鉴于以上所述现有技术的缺点,本发明公开了一种用于Modbus协议的数据读取方法、***、电子设备及存储介质,以提高数据读取效率。
本发明提供了一种用于Modbus协议的数据读取方法,包括:预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,其中,各所述寄存器包括至少一个寄存点位,所述寄存器数据包括各所述寄存点位对应的原始数据;获取用户配置的数据读取请求,其中,所述数据读取请求包括目标点位地址和目标数据类型;根据所述目标点位地址匹配各所述寄存点位对应的点位地址,基于匹配结果从所述寄存点位中确定目标点位;将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据,并将所述目标数据进行编码,得到所述数据读取请求对应的读取报文。
可选地,将所述目标数据进行编码,得到所述数据读取请求对应的读取报文,包括:将所述目标点位对应的寄存器确定为目标寄存器;根据各所述目标寄存器对应的寄存器地址对所述目标点位进行排序,得到点位序列;根据预设的寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组;分别根据各所述点位分组中各目标节点对应的目标数据进行编码,得到各所述点位分组对应的读取报文。
可选地,根据预设的寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组,包括:统计所述目标寄存器的寄存器数量,并根据预设比例系数对所述目标寄存器的寄存器数量进行计算,得到动态读取数量;若所述动态读取数量小于或等于预设的最大数量阈值,则将所述动态读取数量作为寄存器读取数量,并根据所述寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组;若所述动态读取数量大于所述最大数量阈值,则将所述最大数量阈值作为寄存器读取数量,并根据所述寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组。
可选地,获取用户配置的数据读取请求,包括:通过预设的第一展示页面接收用户配置的数据读取请求,其中,所述第一展示页面还用于按照预设的数据进制格式展示各所述寄存点位对应的原始数据。
可选地,将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据之后,所述方法还包括:通过预设的第二展示页面展示所述目标数据;若通过所述第二展示页面接收到用户输入的调整数据类型,则将所述目标点位对应的原始数据转换为所述调整数据类型的数据,得到新的目标数据。
可选地,预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,包括:获取所述指定Modbus终端对应的点位寄存器类型和Modbus协议类型;根据所述点位寄存器类型对应的功能码对所述指定Modbus终端进行扫描,并提取扫描到的Modbus报文;根据所述Modbus协议类型对所述Modbus报文进行解析,得到各所述寄存点位对应的原始数据;利用预设网关缓存所述寄存点位对应的原始数据,得到寄存器数据。
可选地,所述Modbus协议类型包括Modbus TCP、Modbus RTU、Modbus ASII中的至少一种。
本发明提供了一种用于Modbus协议的数据读取***,包括:缓存模块,用于预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,其中,各所述寄存器包括至少一个寄存点位,所述寄存器数据包括各所述寄存点位对应的原始数据;获取模块,用于获取用户配置的数据读取请求,其中,所述数据读取请求包括目标点位地址和目标数据类型;确定模块,用于根据所述目标点位地址匹配各所述寄存点位对应的点位地址,基于匹配结果从所述寄存点位中确定目标点位;读取模块,用于将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据,并将所述目标数据进行编码,得到所述数据读取请求对应的读取报文。
本发明提供了一种电子设备,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的方法。
本发明提供了一种计算机可读存储介质,其上存储有计算机程序:所述计算机程序被处理器执行时实现上述的方法。
本发明的有益效果:
通过预先从指定Modbus终端中提取各寄存点位对应的原始数据,根据用户配置的目标点位地址从寄存点位中确定目标点位匹配得到,并根据用户配置的目标数据类型将目标点位对应的原始数据转换为目标数据,进而生成数据读取请求对应的读取报文。这样,相较于通过数据读取请求直接从寄存器中读取数据,先从指定Modbus终端中提取所有寄存器对应的寄存器数据,再根据用户配置的数据读取请求从寄存器数据中提取数据,解决了按照单个点位读取数据耗时长、按照批量点位读取存在无效数据的情况,从而提高了数据读取效率。
附图说明
图1是本发明实施例中一个用于Modbus协议的数据读取方法的流程示意图;
图2是本发明实施例中一个用于Modbus协议的读取报文生成方法的流程示意图;
图3是本发明实施例中一个ModBus寄存器和ModBus功能码之间的关系示意图;
图4是本发明实施例中一个用于Modbus协议的数据读取***的结构示意图;
图5是本发明实施例中一个电子设备的示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的子样本可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
结合图1所示,本公开实施例提供了一种用于Modbus协议的数据读取方法,包括:
步骤S101,预先从指定Modbus终端中提取所有寄存器对应的寄存器数据;
其中,各寄存器包括至少一个寄存点位,寄存器数据包括各寄存点位对应的原始数据;
步骤S102,获取用户配置的数据读取请求;
其中,数据读取请求包括目标点位地址和目标数据类型;
步骤S103,根据目标点位地址匹配各寄存点位对应的点位地址,基于匹配结果从寄存点位中确定目标点位;
步骤S104,将目标点位对应的原始数据转换为目标数据类型的数据,得到目标数据,并将目标数据进行编码,得到数据读取请求对应的读取报文。
采用本公开实施例提供的用于Modbus协议的数据读取方法,通过预先从指定Modbus终端中提取各寄存点位对应的原始数据,根据用户配置的目标点位地址从寄存点位中确定目标点位匹配得到,并根据用户配置的目标数据类型将目标点位对应的原始数据转换为目标数据,进而生成数据读取请求对应的读取报文。这样,相较于通过数据读取请求直接从寄存器中读取数据,先从指定Modbus终端中提取所有寄存器对应的寄存器数据,再根据用户配置的数据读取请求从寄存器数据中提取数据,解决了按照单个点位读取数据耗时长、按照批量点位读取存在无效数据的情况,从而提高了数据读取效率。
可选地,将目标数据进行编码,得到数据读取请求对应的读取报文,包括:将目标点位对应的寄存器确定为目标寄存器;根据各目标寄存器对应的寄存器地址对目标点位进行排序,得到点位序列;根据预设的寄存器读取数量对点位序列中目标寄存器对应的目标点位进行分组,得到点位分组;分别根据各点位分组中各目标节点对应的目标数据进行编码,得到各点位分组对应的读取报文。
可选地,根据预设的寄存器读取数量对点位序列中目标寄存器对应的目标点位进行分组,得到点位分组,包括:统计目标寄存器的寄存器数量,并根据预设比例系数对目标寄存器的寄存器数量进行计算,得到动态读取数量;若动态读取数量小于或等于预设的最大数量阈值,则将动态读取数量作为寄存器读取数量,并根据寄存器读取数量对点位序列中目标寄存器对应的目标点位进行分组,得到点位分组;若动态读取数量大于最大数量阈值,则将最大数量阈值作为寄存器读取数量,并根据寄存器读取数量对点位序列中目标寄存器对应的目标点位进行分组,得到点位分组。
在一些实施例中,预设比例系数包括60%-80%,例如,预设比例系数为75%。
在一些实施例中,最大数量阈值包括120个。
结合图2所示,本公开实施例提供了一种用于Modbus协议的读取报文生成方法,包括:
步骤S201,加载用户配置的目标点位,并确定目标点位对应的目标寄存器;
步骤S202,根据各目标寄存器对应的寄存器地址对目标点位进行排序,得到点位序列;
其中,将数据点位以寄存器地址进行从大到小排序,然后将分组的起始地址调整为用户配置的最小寄存器地址;
步骤S203,对点位序列中目标寄存器对应的目标点位进行分组,得到点位分组;
其中,默认以单次最多读取120个寄存器(该数量支持配置)的方式将数据点位分组;
步骤S204,计算点位分组的寄存器数量;
其中,保证点位分组的寄存器数量占目标寄存器数量的75%以上;
步骤S205,分别根据各点位分组中各目标节点对应的目标数据进行编码,得到各点位分组对应的读取报文。
这样,用户配置完成后,当用户配置的点位存在地址不连续的情况时,若直接单个点位去读取,效率较低。因此针对配置完成后的离散型数据,网关会动态将用户配置的点位进行安装寄存器类型分组,然后以地址号进行由大到小的排序。然后从已经配置的点位中使用选择适当的寄存器起始地址与寄存器数量来减少与设备的网络通讯次数与单次请求报文大小,提高读取效率。
可选地,获取用户配置的数据读取请求,包括:通过预设的第一展示页面接收用户配置的数据读取请求,其中,第一展示页面还用于按照预设的数据进制格式展示各寄存点位对应的原始数据。
在一些实施例中,预设的数据进制格式为16进制。
在一些实施例中,通过在网关配置数据点位前,将目标从站上全寄存器数据进行扫描访问,将原始数据保存到网关缓存中,做为一个设备数据影子。用户在配置点位时可以做到实时监控各个寄存器各个地址数据,并且可以在监控界面上去查看自己已经采集的数据节点内容。
这样,相对于正常配置流程,用户先配置点位地址,数据类型然后进行数据调试,然后再向设备发送请求后拿到结果后,用户再核对数据如配置有误又要重复之前的操作。我们将配置过程的顺序进行了对调。先由网关去将指定的设备将寄存器全量数据扫描回来。然后用户再进行数据点位的配置,配置完成后无需与设备进行通信就可以核对数据准确性,且当数据类型或起始地址有误时也可以直接修改配置再核对结果,提高配置效率。
可选地,将目标点位对应的原始数据转换为目标数据类型的数据,得到目标数据之后,方法还包括:通过预设的第二展示页面展示目标数据;若通过第二展示页面接收到用户输入的调整数据类型,则将目标点位对应的原始数据转换为调整数据类型的数据,得到新的目标数据。
在一些实施例中,用户根据自己需要配置的点位找到对应的寄存器地址去调整数据类型,配置界面动态根据数据类型进行数据转换,以直观的方式帮助用户更快的进行数据点位配置。
可选地,预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,包括:获取指定Modbus终端对应的点位寄存器类型和Modbus协议类型;根据点位寄存器类型对应的功能码对指定Modbus终端进行扫描,并提取扫描到的Modbus报文;根据Modbus协议类型对Modbus报文进行解析,得到各寄存点位对应的原始数据;利用预设网关缓存寄存点位对应的原始数据,得到寄存器数据。
可选地,Modbus协议类型包括Modbus TCP(Transmission Control Protocol,传输控制协议)、Modbus RTU(Remote Terminal Unit,远程终端单元)、Modbus ASII等。
可选地,点位寄存器类型包括COILS寄存器、DISCRETE寄存器、INPUT寄存器、HOLDING寄存器等;其中,COILS寄存器表示线圈寄存器,表示寄存器的单位是1位(bit)数据,类型为开关量,可进行读写;DISCRETE寄存器表示离散输入寄存器,只能读取开关量;HOLDING寄存器表示保持寄存器,该寄存器的单位是2个byte,可以存放具体的数据量,并且是可读写的,INPUT寄存器表示输入寄存器,只能读取保持寄存器数据。
在一些实施例中,Modbus终端中的寄存器分了4个数据域,这4个数据域分别拥有不同的可操作特性,硬件研发工程师会将它们分别映射到PLC(仪表)中具体的PLC(仪表)寄存器地址上,当从第一个ModBus寄存器地址偏移N个位置也就等同于把第一个与ModBus对应的PLC寄存器地址偏移N个单位。
在一些实施例中,ModBus功能码决定了ModBus报文消息将要进行何种操作,简单的解释就是特定的功能码代表进行某个特定的动作,除了代表不同的操作和数据操作的规模差异之外,还有另外一些异同点,这些功能码操作的ModBus寄存器数据域不同,其中,ModBus寄存器(数据域)和ModBus功能码之间的关系如图3所示。
在一些实施例中,一部分功能码如表1所示。
表1
功能码 | 说明 | ***作寄存器范围 | 数据类型 | 操作能力 |
01 | 读线圈状态 | 00001-09999 | Bool | 一个或多个 |
02 | 读离散输入状态 | 10001-19999 | Bool | 一个或多个 |
03 | 读保持寄存器 | 40001-49999 | Word | 一个或多个 |
04 | 读输入寄存器 | 30001-39999 | Word | 一个或多个 |
05 | 写单个线圈状态 | 00001-09999 | Bool | 单个 |
06 | 写单个保持寄存器 | 40001-49999 | Word | 单个 |
15 | 写多个线圈状态 | 00001-09999 | Bool | 多个 |
16 | 写多个保持寄存器 | 40001-49999 | Word | 多个 |
结合图4所示,本公开实施例提供了一种用于Modbus协议的数据读取***,包括缓存模块401、获取模块402、确定模块403和读取模块404。缓存模块401用于预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,其中,各寄存器包括至少一个寄存点位,寄存器数据包括各寄存点位对应的原始数据;获取模块402用于获取用户配置的数据读取请求,其中,数据读取请求包括目标点位地址和目标数据类型;确定模块403用于根据目标点位地址匹配各寄存点位对应的点位地址,基于匹配结果从寄存点位中确定目标点位;读取模块404用于将目标点位对应的原始数据转换为目标数据类型的数据,得到目标数据,并将目标数据进行编码,得到数据读取请求对应的读取报文。
采用本公开实施例提供的用于Modbus协议的数据读取***,通过预先从指定Modbus终端中提取各寄存点位对应的原始数据,根据用户配置的目标点位地址从寄存点位中确定目标点位匹配得到,并根据用户配置的目标数据类型将目标点位对应的原始数据转换为目标数据,进而生成数据读取请求对应的读取报文。这样,相较于通过数据读取请求直接从寄存器中读取数据,先从指定Modbus终端中提取所有寄存器对应的寄存器数据,再根据用户配置的数据读取请求从寄存器数据中提取数据,解决了按照单个点位读取数据耗时长、按照批量点位读取存在无效数据的情况,从而提高了数据读取效率。
图5示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。需要说明的是,图5示出的电子设备的计算机***500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(Central Processing Unit,CPU)501,其可以根据存储在只读存储器(Read-Only Memory,ROM)502中的程序或者从储存部分508加载到随机访问存储器(Random Access Memory,RAM)503中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 503中,还存储有***操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(Input/Output,I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分507;包括硬盘等的储存部分508;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入储存部分508。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。
本公开实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开的电子设备,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子设备执行如上方法的各个步骤。
在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、图形处理器(Graphics Processing Unit,简称GPU),网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选地,并且操作的顺序可以变化。一些实施例的部分和子样本可以被包括在或替换其他实施例的部分和子样本。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的子样本、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它子样本、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些子样本可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (10)
1.一种用于Modbus协议的数据读取方法,其特征在于,包括:
预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,其中,各所述寄存器包括至少一个寄存点位,所述寄存器数据包括各所述寄存点位对应的原始数据;
获取用户配置的数据读取请求,其中,所述数据读取请求包括目标点位地址和目标数据类型;
根据所述目标点位地址匹配各所述寄存点位对应的点位地址,基于匹配结果从所述寄存点位中确定目标点位;
将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据,并将所述目标数据进行编码,得到所述数据读取请求对应的读取报文。
2.根据权利要求1所述的方法,其特征在于,将所述目标数据进行编码,得到所述数据读取请求对应的读取报文,包括:
将所述目标点位对应的寄存器确定为目标寄存器;
根据各所述目标寄存器对应的寄存器地址对所述目标点位进行排序,得到点位序列;
根据预设的寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组;
分别根据各所述点位分组中各目标节点对应的目标数据进行编码,得到各所述点位分组对应的读取报文。
3.根据权利要求2所述的方法,其特征在于,根据预设的寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组,包括:
统计所述目标寄存器的寄存器数量,并根据预设比例系数对所述目标寄存器的寄存器数量进行计算,得到动态读取数量;
若所述动态读取数量小于或等于预设的最大数量阈值,则将所述动态读取数量作为寄存器读取数量,并根据所述寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组;
若所述动态读取数量大于所述最大数量阈值,则将所述最大数量阈值作为寄存器读取数量,并根据所述寄存器读取数量对所述点位序列中所述目标寄存器对应的目标点位进行分组,得到点位分组。
4.根据权利要求1所述的方法,其特征在于,获取用户配置的数据读取请求,包括:
通过预设的第一展示页面接收用户配置的数据读取请求,其中,所述第一展示页面还用于按照预设的数据进制格式展示各所述寄存点位对应的原始数据。
5.根据权利要求1所述的方法,其特征在于,将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据之后,所述方法还包括:
通过预设的第二展示页面展示所述目标数据;
若通过所述第二展示页面接收到用户输入的调整数据类型,则将所述目标点位对应的原始数据转换为所述调整数据类型的数据,得到新的目标数据。
6.根据权利要求1至5任一项所述的方法,其特征在于,预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,包括:
获取所述指定Modbus终端对应的点位寄存器类型和Modbus协议类型;
根据所述点位寄存器类型对应的功能码对所述指定Modbus终端进行扫描,并提取扫描到的Modbus报文;
根据所述Modbus协议类型对所述Modbus报文进行解析,得到各所述寄存点位对应的原始数据;
利用预设网关缓存所述寄存点位对应的原始数据,得到寄存器数据。
7.根据权利要求6所述的方法,其特征在于,所述Modbus协议类型包括ModbusTCP、ModbusRTU、ModbusASII中的至少一种。
8.一种用于Modbus协议的数据读取***,其特征在于,包括:
缓存模块,用于预先从指定Modbus终端中提取所有寄存器对应的寄存器数据,其中,各所述寄存器包括至少一个寄存点位,所述寄存器数据包括各所述寄存点位对应的原始数据;
获取模块,用于获取用户配置的数据读取请求,其中,所述数据读取请求包括目标点位地址和目标数据类型;
确定模块,用于根据所述目标点位地址匹配各所述寄存点位对应的点位地址,基于匹配结果从所述寄存点位中确定目标点位;
读取模块,用于将所述目标点位对应的原始数据转换为所述目标数据类型的数据,得到目标数据,并将所述目标数据进行编码,得到所述数据读取请求对应的读取报文。
9.一种电子设备,其特征在于,包括:处理器及存储器;
所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:
所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211566970.9A CN115914437A (zh) | 2022-12-07 | 2022-12-07 | 用于Modbus协议的数据读取方法、***、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211566970.9A CN115914437A (zh) | 2022-12-07 | 2022-12-07 | 用于Modbus协议的数据读取方法、***、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115914437A true CN115914437A (zh) | 2023-04-04 |
Family
ID=86476442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211566970.9A Pending CN115914437A (zh) | 2022-12-07 | 2022-12-07 | 用于Modbus协议的数据读取方法、***、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115914437A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116489536A (zh) * | 2023-05-06 | 2023-07-25 | 北京众谊越泰科技有限公司 | 基于modbusRTU协议通信的高效点位采集方法及装置 |
CN117744570A (zh) * | 2023-12-15 | 2024-03-22 | 沐曦集成电路(南京)有限公司 | 一种寄存器的批量配置方法、电子设备及存储介质 |
-
2022
- 2022-12-07 CN CN202211566970.9A patent/CN115914437A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116489536A (zh) * | 2023-05-06 | 2023-07-25 | 北京众谊越泰科技有限公司 | 基于modbusRTU协议通信的高效点位采集方法及装置 |
CN116489536B (zh) * | 2023-05-06 | 2024-02-13 | 北京众谊越泰科技有限公司 | 基于modbusRTU协议通信的高效点位采集方法及装置 |
CN117744570A (zh) * | 2023-12-15 | 2024-03-22 | 沐曦集成电路(南京)有限公司 | 一种寄存器的批量配置方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115914437A (zh) | 用于Modbus协议的数据读取方法、***、电子设备及存储介质 | |
CN109117209B (zh) | 序列化和反序列化方法及装置 | |
CN109886399B (zh) | 一种张量处理装置及方法 | |
CN111208933B (zh) | 数据访问的方法、装置、设备和存储介质 | |
CN113364732B (zh) | 一种车载终端通讯协议解析方法及装置 | |
CN112052010A (zh) | 一种icd字节序自动转换方法 | |
CN117238433B (zh) | 基于LibreOffice进行文档数据自动隔离的方法 | |
CN112039975A (zh) | 一种报文字段的处理方法、装置、设备及存储介质 | |
CN111124541A (zh) | 一种配置文件的生成方法、装置、设备及介质 | |
CN117270867A (zh) | web前端大屏适配方法、装置及其应用 | |
CN111078384A (zh) | 核心数据迁移的方法、装置、计算机设备及存储介质 | |
CN112003837B (zh) | 基于Modbus协议的设备智能适配方法、装置及存储介质 | |
CN115904240A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN109614369A (zh) | 一种测试仪器的文件传输方法 | |
CN111143398B (zh) | 基于扩展sql函数的超大集合查询方法及装置 | |
CN112015425A (zh) | 数据存储方法、读取方法、装置、电子设备及存储介质 | |
CN116610683B (zh) | 数据绑定方法及装置 | |
CN116360858B (zh) | 数据的处理方法、图形处理器、电子设备及存储介质 | |
CN111125147B (zh) | 基于扩展预计算模型和sql函数的超大集合分析方法及装置 | |
CN113010182B (zh) | 升级文件的生成方法、装置和电子设备 | |
CN113067581B (zh) | 解码***、解码方法、电子设备及存储介质 | |
CN115408369A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
CN117251516A (zh) | 一种cad图形数据的批量转换方法、装置及设备 | |
CN116266179A (zh) | 基于标签体系的数据存储方法、装置、终端设备及介质 | |
CN117804504A (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 |