CN112003837B - 基于Modbus协议的设备智能适配方法、装置及存储介质 - Google Patents
基于Modbus协议的设备智能适配方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112003837B CN112003837B CN202010780305.4A CN202010780305A CN112003837B CN 112003837 B CN112003837 B CN 112003837B CN 202010780305 A CN202010780305 A CN 202010780305A CN 112003837 B CN112003837 B CN 112003837B
- Authority
- CN
- China
- Prior art keywords
- protocol
- field
- linked list
- class object
- equipment
- 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.)
- Active
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/03—Protocol definition or specification
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于Modbus协议的设备智能适配方法、装置及存储介质,所述基于Modbus协议的设备智能适配方法包括:读取预设的设备配置文件以获得数据类对象链表;基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备;基于所述设备类对象链表和所述协议类对象链表组成将要访问的所述目标设备的Modbus协议ADU报文;调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。本发明还提供一种基于Modbus协议的设备智能适配装置及存储介质。本发明提供的技术方案,可有效解决基于Modubus协议的设备适配问题,使数据采集具有较高的通用性、健壮性和易维护性。
Description
技术领域
本发明涉及一种物联网数据采集技术领域,尤其是涉及一种基于Modbus 协议的设备智能适配方法、装置及存储介质。
背景技术
Modbus是一种主从式串行总线通信协议,中国国家标准为GB/Z 19582.1-2004。因其协议简单、实施成本低、推广应用较早,目前广泛的应用于仪器仪表、工业控制、物联网数据采集等行业中。在Modbus通讯协议的应用中,一个串行总线下可能有很多不同厂家和不同类型的设备,其设备地址ID、访问功能码和寄存器地址不尽相同。传统的数据采集方法是自行开发一款数据采软件,将设备的访问参数预先写入到应用程序中,此方法有个缺陷,不同的项目或应用场景需要定制单独的应用程序,将给软件项目的开发和维护增加巨大的成本。
发明内容
本发明提供一种基于Modbus协议的设备智能适配方法、装置及存储介质,旨在解决物联网中数据采集基于Modbus协议时的设备适配问题。
为实现上述目的,本发明提供一种基于Modbus协议的设备智能适配方法,包括:
步骤S10:读取预设的设备配置文件以获得数据类对象链表;其中,所述数据类对象链表包括设备类对象链表、协议类对象链表和参数类对象链表;所述数据类对象链表中均包括表指针和MeterTypeID字段,所述表指针用于实现表的链接指向,所述MeterTypeID字段用于标识设备类型;
步骤S20:基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备;
步骤S30:基于所述设备类对象链表和所述协议类对象链表组成将要访问的所述目标设备的Modbus协议ADU报文;
步骤S40:调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;
步骤S50:收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。
进一步地,所述设备配置文件是要访问的目标设备的配置文件,所述设备配置文件包括设备表、协议表和参数表;所述设备表用于描述目标设备的身份;所述协议表用于在访问目标设备时指定Modbus协议报文的内容格式;所述参数表用于描述目标设备中各参数格式,在收到Modbus协议报文时根据所述参数格式解析提取报文中的数据。
进一步地,所述设备表包括MeterID字段、MeterName字段、PortN字段、 ModbusID字段和MeterTypeID字段;其中,所述MeterID字段用于记录目标设备在项目中的代号,在所属项目中具有唯一性;所述MeterName字段用于描述目标设备的名字,注释用途;所述PortN字段用于记录目标设备所属的串口总线端口号;所述ModbusID字段用于记录目标设备在Modbus协议内的设备访问地址;所述MeterTypeID字段用于记录目标设备的类型。
进一步地,所述协议表包括ProtocolID字段、Fun字段、RegAddr字段、 RegCnt字段和MeterTypeID字段;所述ProtocolID字段用于记录Modbus协议报文的代号;所述Fun字段用于记录报文中的功能码代号;所述RegAddr字段用于记录要访问的目标设备寄存器的开始地址;所述RegCnt字段用于记录在单个报文中要连续读/写的寄存器数量;所述MeterTypeID字段用于记录目标设备类型。
进一步地,所述参数表包括ParameterID字段、RegAddr字段、DataType 字段、MeterTypeID字段、DataItemID字段;所述ParameterID字段用于记录检索参数表中的记录;所述RegAddr字段用于记录参数在目标设备中的寄存器地址;所述DataType字段用于记录参数的数据类型;所述MeterTypeID字段用于记录目标设备类型。
进一步地,所述设备配置文件是数据库文件。
进一步地,所述基于Modbus协议的设备智能适配方法还包括:读取所述设备表创建设备类对象链表,读取所述协议表创建协议类对象链表,读取所述参数表创建参数类对象链表,所述设备类对象链表、协议类对象链表和参数类对象链表通过MeterTypeID字段进行关联,通过轮询方式对所有目标设备执行 Modbus协议ADU报文访问。
进一步地,所述设备类对象链表包括设备对象自有的协议链表指针 pProtocol,所述协议链表指针pProtocol指向该设备对应的协议类对象链表。
此外,本发明提供一种基于Modbus协议的设备智能适配装置,所述基于 Modbus协议的设备智能适配装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于Modbus协议的设备智能适配程序,所基于Modbus 协议的设备智能适配程序被所述处理器执行时实现如上述的基于Modbus协议的设备智能适配方法的步骤。
同时,本发明提供一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质上存储有基于Modbus协议的设备智能适配程序,所述基于Modbus 协议的设备智能适配程序可被一个或者多个处理器执行,以实现如上述的基于Modbus协议的设备智能适配方法的步骤。
本发明提供的基于Modbus协议的设备智能适配方法、装置及存储介质,通过读取设备配置文件实现对目标设备的访问,使数据采集独立于具体的设备部署,能够支持不同类型的设备,通过正确的设备配置数据库文件就可以自动的访问相关设备,具有智能适配的特点,使数据采集具有较高的通用性、健壮性和易维护性。
附图说明
图1为本发明一实施例提供的基于Modbus协议的设备智能适配方法的流程示意图;
图2为本发明一实施例提供的设备类对象链表的结构示意图;
图3为本发明一实施例提供的协议类对象链表的结构示意图;
图4为本发明一实施例提供的参数类对象链表的结构示意图;
图5为本发明一实施例提供的设备类对象链表关联协议类对象链表的结构示意图;
图6A为本发明一实施例提供的基于Modbus协议的设备智能适配方法的程序实现流程示意图第一部分;
图6B为本发明一实施例提供的基于Modbus协议的设备智能适配方法的程序实现流程示意图第二部分;
图7为本发明实施例提供了一种基于Modbus协议的设备智能适配装置的内部结构示意图;
图8为本发明基于Modbus协议的设备智能适配装置一实施例中的基于 Modbus协议的设备智能适配程序的程序模块示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参见图1,本发明提供一种基于Modbus协议的设备智能适配方法,所述基于Modbus协议的设备智能适配方法包括:
步骤S10:读取预设的设备配置文件以获得数据类对象链表;其中,所述数据类对象链表包括设备类对象链表、协议类对象链表和参数类对象链表;所述数据类对象链表中均包括表指针和MeterTypeID字段,所述表指针用于实现表的链接指向,所述MeterTypeID字段用于标识设备类型;
步骤S20:基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备;
步骤S30:基于所述设备类对象链表和所述协议类对象链表组成将要访问的所述目标设备的Modbus协议ADU报文;其中,ADU报文是Modubus协议中的应用数据单元(Application Data Unit,ADU);
步骤S40:调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;
步骤S50:收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。
具体地,所述设备配置文件是要访问的目标设备的配置文件,所述设备配置文件包括设备表、协议表和参数表;所述设备表用于描述目标设备的身份;所述协议表用于在访问目标设备时指定Modbus协议报文的内容格式;所述参数表用于描述目标设备中各参数格式,在收到Modbus协议报文时根据所述参数格式解析提取报文中的数据。所述设备配置文件是数据库文件,数据库的类型可以是SQLite、SimpleSQL、MySQL等,其特点是既可在PC中通过其可视化数据库软件进行快速编辑,也可以在数据采集设备中用C/C++或其它编程语言的API 接口进行读写操作。设备配置文件的数据库内建有“设备表”、“协议表”、和“参数表”。
所述设备表包括MeterID字段、MeterName字段、PortN字段、ModbusID 字段和MeterTypeID字段;其中,所述MeterID字段用于记录目标设备在项目中的代号,在所属项目中具有唯一性;所述MeterName字段用于描述目标设备的名字,注释用途;所述PortN字段用于记录目标设备所属的串口总线端口号;所述ModbusID字段用于记录目标设备在Modbus协议内的设备访问地址;所述 MeterTypeID字段用于记录目标设备的类型。在同一串口总线上可能有多个 MeterTypeID相同的设备,此时可用MeterID字段进行区分。
所述协议表包括ProtocolID字段、Fun字段、RegAddr字段、RegCnt字段和MeterTypeID字段;所述ProtocolID字段用于记录Modbus协议报文的代号;所述Fun字段用于记录报文中的功能码代号;所述RegAddr字段用于记录要访问的目标设备寄存器的开始地址;所述RegCnt字段用于记录在单个报文中要连续读/写的寄存器数量;所述MeterTypeID字段用于记录目标设备类型。
所述参数表包括ParameterID字段、RegAddr字段、DataType字段、 MeterTypeID字段、DataItemID字段;所述ParameterID字段用于记录检索参数表中的记录;所述RegAddr字段用于记录参数在目标设备中的寄存器地址;所述DataType字段用于记录参数的数据类型;所述MeterTypeID字段用于记录目标设备类型。
所述基于Modbus协议的设备智能适配方法还包括:读取所述设备表创建设备类对象链表,读取所述协议表创建协议类对象链表,读取所述参数表创建参数类对象链表,所述设备类对象链表、协议类对象链表和参数类对象链表通过 MeterTypeID字段进行关联,通过轮询方式对所有目标设备执行Modbus协议ADU 报文访问。
请一并参阅图2、图3和图4,具体在一实施例中,分别使用Meter_Class 表示设备类对象链表类Protocol_Class表示协议类对象链表、Parameter_Class表示参数类对象链表,并基于C++编程语言对数据类对象链表进行定义,但其实现的方法不局限于C++语言:
设备类:Meter_Class
class Meter_Class{
public:
int MeterID;//设备ID
cstring MeterName;//设备名字
BYTE PortN;//总线端口号
BYTE ModbusID;//Modbus设备访问地址
int MeterTypeID;//设备类型ID
Meter_Class*pNext;//设备对象指针
Protocol_Class*pProtocol;//设备对象自有的协议链表指针
}
应用程序为“设备表”中的每条“记录”创建一个Meter_Class对象,并用pNext对象指针连接成一个Meter_Class对象链,如图2所示。
协议类:Protocol_Class
class Protocol_Class{
public:
int ProtocolID;//协议索引ID
BYTE Fun;//Modbus功能码
short int RegAddr;//Modbus设备访问开始寄存器地址
short int RegCnt;//寄存器数量
short int MeterTypeID;//设备类型ID
Protocol_Class*pNext;//对象指针
}
应用程序为“协议表”中的每条“记录”创建一个Protocol_Class对象,并用pNext对象指针连接成一个Protocol_Class对象链,如图3所示。
参数类:Parameter_Class
class Parameter_Class{
public:
int ParameterID;//参数索引ID
short int RegAddr;//参数在设备中的Modbus寄存器地址
short int DataType;//参数的数据类型
short int MeterTypeID;//设备类型ID
short int DataItemID;//参数类型ID
Parameter_Class*pNext;//对象指针
}
应用程序为“参数表”中的每条“记录”创建一个Parameter_Class对象,并用pNext对象指针连接成一个Parameter_Class对象链表,如图4所示。
请参阅图5,所述设备类对象链表包括设备对象自有的协议链表指针pProtocol,所述协议链表指针pProtocol指向该设备对应的协议类对象链表。通过MeterTypeID字段将“设备表”与“协议表”关联起来,并使每个Meter_Class 对象都拥有一个隶属于自己的Protocol_Class对象链表,Meter_Class对象的 pProtocol指针指向该Protocol_Class对象链表。通常每个Meter_Class对象的自有Protocol_Class对象链表上只有1个Protocol_Class对象,少数 Meter_Class对象的自有Protocol_Class对象链表上有多个Protocol_Class 对象,如图5所示。因此,当数据采集应用程序处理Meter_Class对象的访问报文时,无需轮询整个全局Protocol_Class对象链表,从而提高程序处理效率。
请参阅图6A和图6B,具体在本发明一实施例中,基于Modbus协议的设备智能适配方法的程序实现流程如下:
步骤1:读取设备配置文件,并建立Meter_Class对象链表、Protocol_Class 对象链表和Parameter_Class对象链表,然后执行步骤2;
步骤2:获取Meter_Class对象链表中的首个设备对象为当前对象,然后执行步骤3;
步骤3:新建Protocol_Class类的临时指针变量pProtocolTmp;
步骤4:获取当前Meter_Class对象中的MeterTypeID值,然后执行步骤5;
步骤5:获取Protocol_Class对象链表中的首个协议对象作为当前 Protocol_Class对象,然后执行步骤6;
步骤6:获取当前Protocol_Class对象中的MeterTypeID值,然后执行步骤7;
步骤7:如果当前Meter_Class对象和当前Protocol_Class对象有相同MeterTypeID值,则执行步骤8;否则执行步骤11;
步骤8:复制当前Protocol_Class对象,然后执行步骤9;
步骤9:判断当前Meter_Class对象的pProtocol指针是否为空,如果为空则执行步骤10,否则执行步骤16;
步骤10:将当前Meter_Class对象的pProtocol指针指向步骤8中复制的Protocol_Class对象,然后执行步骤11;
步骤11:从Protocol_Class链表中获取下一个对象,然后执行步骤12;
步骤12:判断当前Protocol_Class对象是否有效,如果有效则返回到步骤6中,否则执行步骤13;
步骤13:当前Protocol_Class对象无效则代表当前Meter_Class对象对Protocol_Class链表检索完毕,清除pProtocolTmp指向对象的pNext指针值为0,然后执行步骤14;
步骤14:获取下一个Meter_Class对象,然后执行步骤15;
步骤15:判断新获取的Meter_Class对象是否有效,如果有效则返回到步骤3,否则意味着Meter_Class链表检索完毕,已完成了“设备表”与“协议表”之间的关联处理,然后开始转向设备访问处理流程步骤18;
步骤16:将pProtocolTmp指针的pNext指向步骤8 中复制的Protocol_Class对象,然后执行步骤17;
步骤17:将更新pProtocolTmp指针,使其指向最新复制的Protocol_Class 对象,然后执行步骤11;
步骤18:开始设备访问处理流程,获取Meter_Class对象链表中的首个对象作为当前对象,然后执行步骤19;
步骤19:从当前Meter_Class对象的pProtocol指针中获取自有 Protocol_Class对象链表中的首个对象作为当前Protocol_Class对象,然后执行步骤20;
步骤20:利用当前Meter_Class对象和当前Protocol_Class对象的成员信息,组合成Modbus协议ADU报文中的必要信息,然后执行步骤21;
步骤21:调用Modbus协议基本接口函数执行Modbus协议报文访问操作,然后执行步骤22;
步骤22:数据采集设备接收设备返回的报文,然后执行步骤23;
步骤23:根据Parameter_Class对象链表解析并处理报文中的数据,然后执行步骤24;
步骤25:判断当前Protocol_Class对象是否有效,如果有效则返回到步骤20中,否则执行步骤26;
步骤26:获取下一个Meter_Class对象,然后执行步骤27;
步骤27:判断当前Meter_Class对象是否有效,如果有效则返回到步骤19 中开始下一个Meter_Class对象过程,否则返回到步骤18中开始新一轮 Meter_Class对象处理。
因此,本发明提供的基于Modbus协议的设备智能适配方法,应用于数据采集设备通过基于Modbus协议实现目标设备的智能适配进行数据采集,具体地,首先读取预设的设备配置文件以获得数据类对象链表;基于表指针依次对数据类对象链表检索以确定要访问的目标设备,通过对Meter_Class中的 MeterTypeID字段与协议链表指针pProtocol指向的Protocol_Class中的MeterTypeID字段进行匹配,并根据Protocol_Class中的pNext表指针的指向直到找到pNext为零时的Protocol_Class对象,确定该Meter_Class对象与对应的Protocol_Class对象,并根据Meter_Class对象和Protocol_Class对象的成员信息,组合成Modbus协议ADU报文,调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;收到所述目标设备返回的报文,并使用对应的所述Parameter_Class对象链表解析并处理报文中的数据。
与现有技术相比,本发明提供的基于Modbus协议的设备智能适配方法、装置及存储介质,通过读取设备配置文件实现对目标设备的访问,使数据采集独立于具体的设备部署,能够支持不同类型的设备,通过正确的设备配置数据库文件就可以自动的访问相关设备,具有智能适配的特点,使数据采集具有较高的通用性、健壮性和易维护性。
由于本发明采用了参数化的设备访问方法,使得应用程序可在此方法的基础上进一步扩展出一些具有独特的功能,例如在一些***改造项目中,部分设备由于各种原因,无法找到原生产厂商或维护厂商提供相关的通讯接口资料(已知该设备支持标准Modbus协议),在此情况下实施智能化改造难度极大,此时可在本发明提供的参数化设备访问方法的基础上添加程序化参数控制功能,在确认安全和给定工作条件下,对此类设备进行各种参数组合的程序化参数控制访问测试,根据访问结果和数据分析后找到正确的设备访问参数组合,从而解决部分老旧设备的智能化改造问题。
为实现上述目的,本发明还提供一种基于Modbus协议的设备智能适配装置,所述基于Modbus协议的设备智能适配装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于Modbus协议的设备智能适配程序,所述基于Modbus协议的设备智能适配程序被所述处理器执行时实现上述的基于 Modbus协议的设备智能适配方法的步骤;具体在本发明一实施例中,所述基于 Modbus协议的设备智能适配装置是基于Modbus协议的数据采集设备。
此外,本发明提供一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质上存储有基于Modbus协议的设备智能适配程序,所述基于Modbus 协议的设备智能适配程序可被一个或者多个处理器执行,以实现上述的基于 Modbus协议的设备智能适配方法的步骤。
请参阅图7,是本发明实施例提供了一种基于Modbus协议的设备智能适配装置的内部结构示意图,所述基于Modbus协议的设备智能适配装置至少包括存储器11、处理器12、通信总线13、以及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是基于Modbus协议的设备智能适配装置的内部存储单元,例如该基于Modbus协议的设备智能适配装置的硬盘。存储器11在另一些实施例中也可以是基于Modbus协议的设备智能适配装置的外部存储设备,例如基于Modbus协议的设备智能适配装置上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括基于 Modbus协议的设备智能适配装置的内部存储单元也包括外部存储设备。存储器 11不仅可以用于存储安装于基于Modbus协议的设备智能适配装置的应用软件及各类数据,例如基于Modbus协议的设备智能适配程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器 11中存储的程序代码或处理数据,例如执行基于Modbus协议的设备智能适配程序等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该基于Modbus协议的设备智能适配装置与其他电子设备之间建立通信连接。
可选地,该基于Modbus协议的设备智能适配装置还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在基于Modbus协议的设备智能适配装置中处理的信息以及用于显示可视化的用户界面。
图7仅示出了具有组件11-14以及基于Modbus协议的设备智能适配程序的基于Modbus协议的设备智能适配装置,本领域技术人员可以理解的是,图7 示出的结构并不构成对基于Modbus协议的设备智能适配装置的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图7所示的基于Modbus协议的设备智能适配装置实施例中,存储器11 中存储有基于Modbus协议的设备智能适配程序;处理器12执行存储器11中存储的基于Modbus协议的设备智能适配程序时实现如下步骤:
步骤S10:读取预设的设备配置文件以获得数据类对象链表;
步骤S20:基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备;
步骤S30:基于所述设备类对象链表和所述协议类对象链表组成将要访问的所述目标设备的Modbus协议ADU报文;
步骤S40:调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;
步骤S50:收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。
参照图8所示,为本发明基于Modbus协议的设备智能适配装置一实施例中的基于Modbus协议的设备智能适配程序的程序模块示意图,该实施例中,基于 Modbus协议的设备智能适配程序可以被分割为设置模块10、计算模块20、采集模块30和解析模块40,示例性地:
设置模块10,用于设置配置文件;
计算模块20,用于对数据类对象链表检索与计算以获得将要访问的所述目标设备的Modbus协议ADU报文;
采集模块30,用于执行对所述目标设备Modbus协议ADU报文访问;
解析模块40,用于对收到的所述目标设备返回的报文进行解析处理。
上述设置模块10、计算模块20、采集模块30和解析模块40等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。
此外,本发明实施例还提出一种存储介质,所述存储介质为计算机可读存储介质,所述存储介质上存储有基于Modbus协议的设备智能适配程序,所述基于Modbus协议的设备智能适配程序可被一个或多个处理器执行,以实现如下操作:
步骤S10:读取预设的设备配置文件以获得数据类对象链表;
步骤S20:基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备;
步骤S30:基于所述设备类对象链表和所述协议类对象链表组成将要访问的所述目标设备的Modbus协议ADU报文;
步骤S40:调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;
步骤S50:收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。
本发明的存储介质具体实施方式与上述基于Modbus协议的设备智能适配方法和装置各实施例基本相同,在此不作累述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘) 中,包括若干指令用以使得一台终端设备(可以是无人机、手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种基于Modbus协议的设备智能适配方法,其特征在于,包括:
步骤S10:读取预设的设备配置文件以获得数据类对象链表;其中,所述数据类对象链表包括设备类对象链表、协议类对象链表和参数类对象链表;所述数据类对象链表中均包括表指针和MeterTypeID字段,所述表指针用于实现表的链接指向,所述MeterTypeID字段用于标识设备类型;所述设备类对象链表包括设备对象自有的协议链表指针pProtocol,所述协议链表指针pProtocol指向该设备对应的协议类对象链表;
步骤S20:基于所述表指针依次对所述数据类对象链表检索以确定要访问的目标设备,通过对设备类对象链表中的MeterTypeID字段与协议链表指针pProtocol指向协议类对象链表中的MeterTypeID字段进行匹配,并根据协议类对象链表中的表指针pNext的指向直接找到pNext为零时的协议类对象链表对象,确定该设备类对象链表对象与对应的协议类对象链表对象;
步骤S30:根据所述设备类对象链表对象和所述协议类对象链表对象的成员信息,组合成将要访问的所述目标设备的Modbus协议ADU报文;
步骤S40:调用Modbus协议基本接口函数执行对所述目标设备Modbus协议ADU报文访问;
步骤S50:收到所述目标设备返回的报文,并使用对应的所述参数类对象链表解析并处理报文中的数据。
2.根据权利要求1所述的基于Modbus协议的设备智能适配方法,其特征在于,所述设备配置文件是要访问的目标设备的配置文件,所述设备配置文件包括设备表、协议表和参数表;所述设备表用于描述目标设备的身份;所述协议表用于在访问目标设备时指定Modbus协议报文的内容格式;所述参数表用于描述目标设备中各参数格式,在收到Modbus协议报文时根据所述参数格式解析提取报文中的数据。
3.根据权利要求2所述的基于Modbus协议的设备智能适配方法,其特征在于,所述设备表包括MeterID字段、MeterName字段、PortN字段、ModbusID字段和MeterTypeID字段;其中,所述MeterID字段用于记录目标设备在项目中的代号,在所属项目中具有唯一性;所述MeterName字段用于描述目标设备的名字,注释用途;所述PortN字段用于记录目标设备所属的串口总线端口号;所述ModbusID字段用于记录目标设备在Modbus协议内的设备访问地址;所述MeterTypeID字段用于记录目标设备的类型。
4.根据权利要求2所述的基于Modbus协议的设备智能适配方法,其特征在于,所述协议表包括ProtocolID字段、Fun字段、RegAddr字段、RegCnt字段和MeterTypeID字段;所述ProtocolID字段用于记录Modbus协议报文的代号;所述Fun字段用于记录报文中的功能码代号;所述RegAddr字段用于记录要访问的目标设备寄存器的开始地址;所述RegCnt字段用于记录在单个报文中要连续读/写的寄存器数量;所述MeterTypeID字段用于记录目标设备类型。
5.根据权利要求2所述的基于Modbus协议的设备智能适配方法,其特征在于,所述参数表包括ParameterID字段、RegAddr字段、DataType字段、MeterTypeID字段、DataItemID字段;所述ParameterID字段用于记录检索参数表中的记录;所述RegAddr字段用于记录参数在目标设备中的寄存器地址;所述DataType字段用于记录参数的数据类型;所述MeterTypeID字段用于记录目标设备类型。
6.根据权利要求2所述的基于Modbus协议的设备智能适配方法,其特征在于,所述设备配置文件是数据库文件。
7.根据权利要求2所述的基于Modbus协议的设备智能适配方法,其特征在于,所述基于Modbus协议的设备智能适配方法还包括:读取所述设备表创建设备类对象链表,读取所述协议表创建协议类对象链表,读取所述参数表创建参数类对象链表,所述设备类对象链表、协议类对象链表和参数类对象链表通过MeterTypeID字段进行关联,通过轮询方式对所有目标设备执行Modbus协议ADU报文访问。
8.一种基于Modbus协议的设备智能适配装置,其特征在于,所述基于Modbus协议的设备智能适配装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基于Modbus协议的设备智能适配程序,所基于Modbus协议的设备智能适配程序被所述处理器执行时实现如权利要求1至7中任一项所述的基于Modbus协议的设备智能适配方法的步骤。
9.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述存储介质上存储有基于Modbus协议的设备智能适配程序,所述基于Modbus协议的设备智能适配程序可被一个或者多个处理器执行,以实现如权利要求1至7中任一项所述的基于Modbus协议的设备智能适配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010780305.4A CN112003837B (zh) | 2020-08-05 | 2020-08-05 | 基于Modbus协议的设备智能适配方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010780305.4A CN112003837B (zh) | 2020-08-05 | 2020-08-05 | 基于Modbus协议的设备智能适配方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112003837A CN112003837A (zh) | 2020-11-27 |
CN112003837B true CN112003837B (zh) | 2023-01-13 |
Family
ID=73463093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010780305.4A Active CN112003837B (zh) | 2020-08-05 | 2020-08-05 | 基于Modbus协议的设备智能适配方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112003837B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113242534B (zh) * | 2021-06-11 | 2022-05-10 | 合肥工业大学 | 一种基于wi-fi的通用型多协议数字仪表物联模块 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050256939A1 (en) * | 2004-05-03 | 2005-11-17 | Schneider Automation Sas | Automatic Configuration of Network Automation Devices |
CN104539502B (zh) * | 2015-01-26 | 2018-02-13 | 北海恒久天成技术开发有限公司 | 一种自定义添加modbus设备的方法 |
CN108540584B (zh) * | 2018-02-10 | 2021-01-15 | 西安融盛智汇电子科技有限公司 | 一种通用的Modbus协议地址配置方法 |
CN108416069A (zh) * | 2018-05-10 | 2018-08-17 | 湖南利能新能源有限公司 | 一种数据采集装置和方法 |
CN109245980B (zh) * | 2018-11-20 | 2021-08-06 | 厦门科灿信息技术有限公司 | Modbus通信协议解析方法、***及设备和存储介质 |
CN110474896B (zh) * | 2019-08-06 | 2022-01-04 | 厦门科灿信息技术有限公司 | 基于Modbus协议标准的数据通信方法及相关设备 |
CN110502461B (zh) * | 2019-08-27 | 2023-03-24 | 深圳市中物互联技术发展有限公司 | 一种基于rs485通讯协议的高效数据采集方法 |
CN111431784A (zh) * | 2020-04-21 | 2020-07-17 | 长念(上海)技术开发有限公司 | 一种通用的modbus协议数据解析方法 |
-
2020
- 2020-08-05 CN CN202010780305.4A patent/CN112003837B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112003837A (zh) | 2020-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427705B (zh) | 电子装置、分布式***日志查询方法及存储介质 | |
CN109902105B (zh) | 用于微服务架构的数据查询***、方法、设备及存储介质 | |
CN105357204B (zh) | 生成终端识别信息的方法及装置 | |
CN108334609B (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN112506910A (zh) | 多源数据采集方法、装置、电子设备及存储介质 | |
CN116644213A (zh) | Xml文件读取方法、装置、设备及存储介质 | |
CN112003837B (zh) | 基于Modbus协议的设备智能适配方法、装置及存储介质 | |
CN108694172B (zh) | 信息输出方法和装置 | |
CN112671878A (zh) | 一种区块链的信息订阅方法、装置、服务器和存储介质 | |
CN111913777A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN116414689A (zh) | 一种基于反射机制的接口参数校验方法及*** | |
CN115129598A (zh) | 一种sql语句的风险检测方法、装置、***及介质 | |
CN115033592A (zh) | 基于数据库的sql语句处理方法、装置、设备及存储介质 | |
CN114625372A (zh) | 组件自动编译方法、装置、计算机设备及存储介质 | |
CN114169318A (zh) | 进程识别方法、装置、设备、介质和程序 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
CN116107971A (zh) | 模型的数据处理方法、装置、电子设备以及存储介质 | |
CN108334621B (zh) | 数据库操作方法、装置、设备及计算机可读存储介质 | |
CN111258628A (zh) | 一种规则文件比对方法、装置、可读存储介质及终端设备 | |
CN117033249B (zh) | 一种测试用例生成方法、装置、计算机设备及存储介质 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CN113885963B (zh) | 一种二次开发文件执行方法、装置及存储介质 | |
CN109144500B (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 | ||
CB02 | Change of applicant information |
Address after: 518000 1603, west block, Tian'an Innovation Technology Plaza (phase II), intersection of Binhe Road and Xiangmihu Road, Tian'an community, Shatou street, Futian District, Shenzhen, Guangdong Province Applicant after: Shenzhen Zhongwu Internet Technology Development Co.,Ltd. Address before: 518000 1905, west block, phase II, Tian'an Innovation Technology Plaza, Tairan 10th Road, Tian'an community, Shatou street, Futian District, Shenzhen, Guangdong Province Applicant before: Shenzhen Zhongwu Internet Technology Development Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |