基于modbus协议的动态解析方法、装置、服务器及存储介质与流程

文档序号:16463568发布日期:2019-01-02 22:40阅读:240来源:国知局
基于modbus协议的动态解析方法、装置、服务器及存储介质与流程

本发明涉及modbus领域,尤其涉及一种基于modbus协议的动态解析方法、装置、服务器及存储介质。



背景技术:

modbus是由modicon(现为施耐德电气公司的一个品牌)在1979年制定的全球第一个真正用于工业现场的总线协议。modbus协议现已经成为一种通用的工业标准,其广泛用于控制器之间的通信互联。当在一modbus网络上通信时,每个控制器需要知道该网络中与其通信的所有控制器的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用modbus协议发出。

随着智能时代的步伐加快,为传统modbus设备上云也变得必须。modbus虽然为标准协议,但由于其良好的可拓展性,可能每个厂家的每个产品在协议中都有不同的内容体现,故在云端解析时,需要根据不同的内容做多套协议的解析,每次新增产品都需要有一定量的开发任务,从而增加了开发难度和开发成本。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于modbus协议的动态解析方法、装置、服务器及存储介质,实现在服务端对协议进行灵活的解析,降低开发成本。

本发明实施例提供了一种基于modbus协议的动态解析方法,包括:

获取由设备上传的原始modbus数据;

根据所述原始modbus数据查找与所述设备对应的协议映射表;其中,所述协议映射表包括预先配置的modbus地址、与所述modbus地址对应的编码以及与所述编码对应的编码含义;

获取所述原始modbus数据中的功能码,并采用与所述功能码对应的功能码指令解析所述原始modbus数据,以获得所述原始modbus数据的modbus地址以及对应的地址值;

将解析获得的modbus地址与所述协议映射表中的预先配置的modbus地址进行匹配;

当在所述协议映射表中存在与解析获得的modbus地址对应的预先配置的modbus地址时,将解析获得的地址值赋值给与所述预先配置的modbus地址对应的编码,以供上层端通过所述编码进行取值。

优选地,在获取由设备上传的原始modbus数据之前,还包括:

获取基于设备制定的modbus协议内容;

根据用户基于所述modbus协议内容定义的modbus地址、编码以及与所述编码对应的编码含义生成协议映射表;其中,所述编码含义与所述编码唯一对应。

优选地,所述根据所述原始modbus数据查找与所述设备对应的协议映射表,具体为:

根据所述原始modbus数据的数据头部的前n位获取与所述设备对应的条码信息,并根据所述条码信息查询与所述设备对应的协议映射表。

优选地,还包括:

当根据所述条码信息查询不到与所述设备对应的协议映射表时,生成无法解析指示,并将所述无法解析指示发送给相关的管理终端。

优选地,还包括:

当在所述协议映射表中不存在与解析获得的modbus地址对应的预先配置的modbus地址时,丢弃所述地址值。

本发明实施例还提供了一种基于modbus协议的动态解析装置,包括:

数据获取单元,用于获取由设备上传的原始modbus数据;

查找单元,用于根据所述原始modbus数据查找与所述设备对应的协议映射表;其中,所述协议映射表包括预先配置的modbus地址、与所述modbus地址对应的编码以及与所述编码对应的编码含义;

解析单元,用于获取所述原始modbus数据中的功能码,并采用与所述功能码对应的功能码指令解析所述原始modbus数据,以获得所述原始modbus数据的modbus地址以及对应的地址值;

地址匹配单元,用于将解析获得的modbus地址与所述协议映射表中的预先配置的modbus地址进行匹配;

赋值单元,用于当在所述协议映射表中存在与解析获得的modbus地址对应的预先配置的modbus地址时,将解析获得的地址值赋值给与所述预先配置的modbus地址对应的编码,以供上层端通过所述编码进行取值。

优选地,所述查找单元具体用于,根据所述原始modbus数据的数据头部的前n位获取与所述设备对应的条码信息,并根据所述条码信息查询与所述设备对应的协议映射表。

优选地,还包括:

地址值丢弃单元,用于当在所述协议映射表中不存在与解析获得的modbus地址对应的预先配置的modbus地址时,丢弃所述地址值。

本发明实施例还提供了一种基于modbus协议的动态解析服务器,包括处理器以及存储器,所述存储器内存储有计算机程序,所述计算机程序配置为被所述处理器执行时,能够实现如上述的基于modbus协议的动态解析方法

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于modbus协议的动态解析方法。

上述一个实施例中,在服务器创建的协议映射表对设备而言,其唯一对应的标识为modbus地址;而对于上层端(如web前端、微信端、app端)而言,其唯一对应标识为编码;在进行协议解析时,服务器根据modbus地址进行解析,再根据modbus地址与协议映射表预先配置的modbus地址,把地址值赋值到相应的编码上;上层端根据编码进行取值,当底层协议发生改变,只需对协议映射表中的modbus地址进行更新即可。基于这样的构造,对上层端来说,大大降低了开发难度,不需要每个上层端都做对应的modbus协议解析,且上层端只需要按统一的编码取值,不用担心modbus地址发生改变;对于服务器而言,数据解析变得灵活,不需要代码更改,降低了开发成本。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明第一实施例提供的基于modbus协议的动态解析方法的流程示意图。

图2是本发明第一实施例提供的协议映射表的一种编辑示意图。

图3是本发明第二实施例提供的基于modbus协议的动态解析装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明第一实施例提供了一种基于modbus协议的动态解析方法,其可由基于modbus协议的动态解析服务器(以下简称服务器)来执行,并至少包括如下步骤:

s101,获取由设备上传的原始modbus数据。

在本实施例中,所述设备可为基于modbusrtu协议的设备。其中,所述设备上传的原始modbus数据至少包括从站地址、功能码、modbus地址以及相应的设备数据。

s102,根据所述原始modbus数据查找与所述设备对应的协议映射表;其中,所述协议映射表包括预先配置的modbus地址、与所述modbus地址对应的编码以及与所述编码对应的编码含义。

在本实施例中,对于不同的设备或者产品,在设备开发时,可针对该设备制定相应的modbus协议内容,例如,可以定义modbus地址对应的功能点位。同时,在服务器,用户根据所制定的协议内容,可以配置生成一套对应的协议映射表。其中,所述协议映射表包括预先配置的modbus地址、与所述modbus地址对应的编码以及与所述编码对应的编码含义(可以是中文含义或者英文含义,本发明不做具体限定)。

s103,获取所述原始modbus数据中的功能码,并采用与所述功能码对应的功能码指令解析所述原始modbus数据,以获得所述原始modbus数据的modbus地址以及对应的地址值。

s104,将解析获得的modbus地址与所述协议映射表中的预先配置的modbus地址进行匹配。

s105,当在所述协议映射表中存在与解析获得的modbus地址对应的预先配置的modbus地址时,将解析获得的地址值赋值给与所述预先配置的modbus地址对应的编码,以供上层端通过所述编码进行取值。

为了便于对本发明实施例的理解,下面以一个实际的例子为例来描述本发明实施例的应用。

假设对于某个设备,在服务器上存在与该设备对应的协议映射表,其中,如图2所示,所述协议映射表中,一个预先配置的modbus地址为1001,对应的编码为p,编码对应的含义为开关机。

当然,需要说明的是,一个协议映射表可以预先配置有多个modbus地址,且每个modbus地址均对应有编码,每个编码均对应有相关编码含义,本发明在此不做赘述。

假设设备上报的原始modbus数据为:

631010010001020001xxxx

其中,63表示从站地址,第一个10表示功能码,功能码10后的1001表示modbus地址,后面的是具体的数据。这里,功能码可以采用modbus协议采用的标准功能码,也可以是自定义的。

在本实施例中,所述服务器在接收到所述原始modbus数据,首先获取与该设备对应的协议映射表,然后读取其功能码(即10),并采用与所述功能码对应的功能码指令去解析所述原始modbus数据。

在本实施例中,在解析后,所述服务器可以获得与该原始modbus数据对应的modbus地址为1001,地址值为0001(例如表示开机)。

接着,所述服务器在所述协议映射表中查找是否存在为1001的预先配置的modbus地址。若存在,则所述服务器将地址值(0001)赋值给对应的编码。根据图2可以看出,所述协议映射表中存在预先配置的modbus地址1001,且其对应的编码为p,则所述服务器将地址值(0001)赋值给编码p。

在本实施例中,上层端(如web前端、微信端、app端)可通过编码进行取值,例如,上层端对p取值时,取到的值为0001,其表示开机。

在本实施例中,若后续对设备做改进,例如,在后续的机型中,定义modbus地址1002对应的功能点位为开关机,则只需要在协议映射表中将1001更新为1002,其对应的编码p不变。由于上层端是对p进行取值的,因此,无需对上层端做任何改进,即不需要对上层端做相应的更新或者开发,如此,大大减少了开发的工作量和开发难度。

综上所述,本发明第一实施例提供的基于modbus协议的动态解析方法,在服务器创建的协议映射表对设备而言,其唯一对应的标识为modbus地址;而对与上层端(如web前端、微信端、app端)而言,其唯一对应标识为编码;在进行协议解析时,服务器根据modbus地址进行解析,再根据modbus地址与协议映射表预先配置的modbus地址,把地址值赋值到相应的编码上;上层端根据编码进行取值,当底层协议发生改变,只需对协议映射表中的modbus地址进行更新即可。基于这样的构造,对上层端来说,大大降低了开发难度,不需要每个上层端都做对应的modbus协议解析,且上层端只需要按统一的编码取值,不用担心modbus地址发生改变;对于服务器而言,数据解析变得灵活,不需要代码更改,降低了开发成本。

优选地,所述根据所述原始modbus数据查找与所述设备对应的协议映射表,具体为:

根据所述原始modbus数据的数据头部的前n位获取与所述设备对应的条码信息,并根据所述条码信息查询与所述设备对应的协议映射表。

在本实施例中,在所述原始modbus数据数据头部的前n位(例如前12位)表示条码信息,所述条码信息与设备以及协议映射表一一对应,如此,可以通过条码信息获取与设备对应的协议映射表,保证可以准确获取与设备对应的协议映射表。

优选地,还包括:

当根据所述条码信息查询不到与所述设备对应的协议映射表时,生成无法解析指示,并将所述无法解析指示发送给相关的管理终端。

在本实施例中,如果根据所述条码信息查询不到与所述设备对应的协议映射表,则可能在服务器上不存在与该设备对应的协议映射表或者解析发生了错误,此时服务器生成无法解析指示,并将所述无法解析指示发送给相关的管理终端,以通知相关管理人员。

优选地,还包括:

当在所述协议映射表中不存在与解析获得的modbus地址对应的预先配置的modbus地址时,丢弃所述地址值。

请参阅图3,本发明第二实施例还提供了一种基于modbus协议的动态解析装置,包括:

数据获取单元10,用于获取由设备上传的原始modbus数据;

查找单元20,用于根据所述原始modbus数据查找与所述设备对应的协议映射表;其中,所述协议映射表包括预先配置的modbus地址、与所述modbus地址对应的编码以及与所述编码对应的编码含义;

解析单元30,用于获取所述原始modbus数据中的功能码,并采用与所述功能码对应的功能码指令解析所述原始modbus数据,以获得所述原始modbus数据的modbus地址以及对应的地址值;

地址匹配单元40,用于将解析获得的modbus地址与所述协议映射表中的预先配置的modbus地址进行匹配;

赋值单元50,用于当在所述协议映射表中存在与解析获得的modbus地址对应的预先配置的modbus地址时,将解析获得的地址值赋值给与所述预先配置的modbus地址对应的编码,以供上层端通过所述编码进行取值。

优选地,还包括:

协议内容获取单元,用于获取基于设备制定的modbus协议内容;

协议映射表生成单元,用于根据用户基于所述modbus协议内容定义的modbus地址、编码以及与所述编码对应的编码含义生成协议映射表;其中,所述编码含义与所述编码唯一对应。

优选地,所述查找单元20具体用于,根据所述原始modbus数据的数据头部的前n位获取与所述设备对应的条码信息,并根据所述条码信息查询与所述设备对应的协议映射表。

优选地,还包括:

指令发送单元,用于当根据所述条码信息查询不到与所述设备对应的协议映射表时,生成无法解析指示,并将所述无法解析指示发送给相关的管理终端。

优选地,还包括:

地址值丢弃单元,用于当在所述协议映射表中不存在与解析获得的modbus地址对应的预先配置的modbus地址时,丢弃所述地址值。

本发明第三实施例还提供了一种基于modbus协议的动态解析服务器,包括处理器以及存储器,所述存储器内存储有计算机程序,所述计算机程序配置为被所述处理器执行时,能够实现如上述的基于modbus协议的动态解析方法。

本发明第四实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于modbus协议的动态解析方法。

示例性的,所述计算机程序可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序服务器中的执行过程。

所述基于modbus协议的动态解析服务器可包括但不仅限于处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是基于modbus协议的动态解析服务器的示例,并不构成对基于modbus协议的动态解析服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于modbus协议的动态解析服务器还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述基于modbus协议的动态解析服务器的控制中心,利用各种接口和线路连接整个基于modbus协议的动态解析服务器的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于modbus协议的动态解析服务器的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述基于modbus协议的动态解析服务器集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过执行计算机程序来控制相关的硬件完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1