1.一种图形化在线建模的OPC UA网关的设计方法,其特征在于,具体按照以下步骤实施:步骤1、设计OPC UA网关的整体架构,为管理者提供信息建模与设备配置管理;
步骤2、根据网关功能设计需求,基于JSON格式设计配置文件结构规范;
步骤3、设计设备层数据采集模块,模块内置配置文件解析器、集成多种设备层协议、协调管理数据采集任务,获取车间现场设备数据并存储;
所述步骤3具体如下:
步骤3.1、设计设备层数据采集模块的配置文件解析器:
配置文件解析器用于读取和解析配置文件,将配置文件中的数据采集任务字段构造为任务队列:首先,打开并读入配置文件,使用cJSON库作为JSON格式的配置文件的解析引擎进行解析;
扫描配置文件中“AddressSpace”字段下的节点,并根据“ChildNode”字段对子节点递归进行扫描,判断“ChildNode”字段是否为“Variable”类型,忽略非“Variable”类型的对象,读取“BottomProtocolType”字段的值,对任务节点分配不同的总线协议接口函数;最后根据“MB_MachineAddress”、“MB_FunctionCode”和“MB_RegisterAddress”字段值为任务节点对应属性赋值,完成任务队列的创建;
步骤3.2、设计数据采集任务轮询机制:
该步骤使用独立的线程执行,将数据采集任务组织成一个任务队列,设置定时器进行计时,每次定时器触发时对一个任务节点进行扫描,判断扫描任务是否符合数据采集条件,对符合数据采集条件的任务调用数据采集接口进行数据采集;
任务队列节点记录数据采集任务的详细信息,包括数据采集接口函数以及与协议相关的配置信息,令成员ProtocolInterface表示数据采集接口函数指针,当网关解析配置文件并生成任务节点时会根据总线协议类型为ProtocolInterface指针赋予对应的数据采集接口函数地址,令成员protocolInfo表示指向协议配置信息结构体的指针,数据采集接口函数根据指针protocolInfo指向的结构体提供的信息对总线配置,令data表示用于储存采集到的数据;
步骤3.3、设计数据采集接口:
任务队列节点中保存实现上述数据采集任务的数据采集接口函数指针
ProtocolInterface,函数签名为void ProtocolInterface(void*protocolInfo,void**data),统一的接口设计规范方便匹配不同的现场协议接口函数,不同接口函数在实际调用时才将配置信息结构体进行类型强制转换,使得符合这一设计规范的数据采集接口函数均允许通过该指针被统一调用,实现数据采集接口的通用性和可扩展性;
步骤3.4、集成包括Modbus‑RTU在内的工业现场协议:
对于Modbus‑RTU协议,基于串口协议封装对Modbus‑RTU协议的支持,首先对串口进行初始化操作,包括:将波特率设置为115200;将帧数据长度设置为8位;校验位设置为无校验;停止位设置为1停止位,然后封装Modbus‑RTU功能,包括:Modbus数据帧组装功能、Modbus数据帧发送功能、CRC‑16/Modbus校验与校验码生成功能、Modbus数据帧接收和解析功能,最后,按照数据采集接口签名的形式封装Modbus的数据采集接口;
步骤4:设计OPC UA服务器模块,实现数据从设备层数据采集模块到OPC UA地址空间节点的映射,为上层管理系统的查询提供数据服务;
所述步骤4具体如下:
步骤4.1、设计OPC UA服务器模块的配置文件解析器:
配置文件解析器用于读取和解析配置文件,将配置文件中的地址空间字段构造为OPC UA地址空间中的信息模型;
扫描配置文件中“AddressSpace”字段下的节点,并根据“ChildNode”字段对子节点递归进行扫描,读取包括“NodeID_IDType”、“NodeID_ID”、“ReferenceTypeId”、“BrowseName”和“Description”在内的字段的值并转换为OPC UA地址空间中节点对应属性的值,读取“ReferenceTypeId”字段的值并由此建立与父节点的引用关系;
步骤4.2、实现OPC UA地址空间节点与设备层数据采集模块任务队列节点的映射关系:建立一个数据节点的队列用于与设备层数据采集模块任务队列对应来完成节点间的映射关系,在步骤4.1中每个OPC UA地址空间节点被创建后,判断其节点类型是否为“Variable”类型,如果是,那么计算此节点哈希值并入队数据节点队列;
步骤4.3、设计OPC UA服务器:
使用开源的OPC UA协议栈open62541实现一个OPC UA服务器,对功能进行封装,包括:服务器启动功能、服务器关闭功能、从设备层数据采集模块到地址空间节点的数据映射功能、利用客户端数据读取前的回调实现数据更新功能,当对OPC UA进行数据访问时会触发回调函数,利用此回调函数对服务器端的数据进行更新,使得服务器端在不重复刷新数据的前提下让客户端读取到最新数据,提升系统效率;
步骤5:设计web控制台模块,为用户提供图形化在线建模的OPC UA网关;
所述步骤5具体如下:
步骤5.1、使用Nginx搭建WEB服务器;
步骤5.2、搭建web控制台前端网页;
步骤5.3、使用mariaDB数据库存储网关配置信息和网关状态信息;
步骤5.4、使用PHP为服务器端编写应用程序,服务器端应用程序的功能包括:对配置文件的本地管理功能;对数据库中网关配置文件索引记录以及网关状态信息的管理;对OPC UA网关程序的启停控制。
2.根据权利要求1所述的一种图形化在线建模的OPC UA网关的设计方法,其特征在于,所述步骤1中OPC UA网关的整体架构由三个模块组成:分别为OPC UA服务器、设备层数据采集模块和Web控制台;
设备层数据采集模块集成的多种现场协议驱动对不同设备的数据节点进行采集,数据采集任务被该模块组织成一个任务队列统一进行调度管理,并以用户设置好的频率调用现场协议驱动程序采集设备数据,用户通过Web控制台方便地配置设备层数据采集模块的采集任务;
OPC UA服务器在地址空间中建立用户所需的OPC UA信息模型,将接收的设备层数据采集模块采集的数据映射到地址空间对应节点上,响应边缘层的数据请求命令,在合适的时机对地址空间中的数据进行更新以保证客户端读取到最新数据;
设备层数据采集模块将数据采集任务组织为任务队列并进行轮询,当任务节点符合采集要求时将调用现场协议接口对设备数据进行采集,并发送给OPC UA服务器,设备层数据采集模块集成了包括Modbus‑RTU在内的现场协议,支持不同厂商不同协议的设备进行数据交换;
Web控制台用于用户构建OPC UA地址空间中的信息模型、制定数据采集任务以及对网关进行控制,用户构建的信息模型及制定的数据采集任务被转换成JSON格式的网关配置文件,此后网关按照该配置文件进行工作。
3.根据权利要求2所述的一种图形化在线建模的OPC UA网关的设计方法,其特征在于,所述步骤2中配置文件包含从数据采集到地址空间构建的全部信息,设备层数据采集模块根据配置文件生成任务队列,包含底层数据采集的详细配置信息,OPC UA网关将根据配置文件生成OPC UA地址空间中的信息模型,包括拓扑结构和节点数据结构。
4.根据权利要求3所述的一种图形化在线建模的OPC UA网关的设计方法,其特征在于,所述步骤2具体如下:配置文件基于JSON格式,OPC UA信息模型和数据采集的底层设备配置信息记录在“AddressSpace”字段,该字段的类型为列表类型,而成员类型为对象类型,每个成员均表示OPC UA地址空间中object文件夹下的一个模型;
每个成员对象均包含“NodeID_IDType”、“NodeID_ID”、“NodeClass”、“ReferenceTypeId”、“BrowseName”和“Description”字段,上述字段与OPC UA地址空间中节点的属性一一对应,这些字段在OPC UA服务器模块中的配置文件解析器进行解析时会被转换为相应的节点属性;
“NodeClass”字段定义了节点类型,其值包括“object”和“Variable”,“Variable”类型的节点包含采集自底层设备的现场数据,具有此值的节点也包含设备层数据采集模块所需要的现场协议配置信息,这些信息被包含在“BottomProtocolType”、“RefreshFrequency”、“MB_MachineAddress”、“MB_FunctionCode”和“MB_RegisterAddress”字段内;
“BottomProtocolType”字段表示底层协议类型;
“RefreshFrequency”字段表示数据采集频率;
还包括列表类型字段“ChildNode”,“ChildNode”字段的每个成员类型为对象节点,表示此节点的子节点,所有节点通过“ChildNode”字段以递归的形式组织为树形结构。
5.根据权利要求4所述的一种图形化在线建模的OPC UA网关的设计方法,其特征在于,所述步骤3.4具体如下:步骤3.4.1、网关在生成Modbus协议数据采集的任务节点时会为成员指针变量protocolInfo申请内存,强制转换为ModbusInfoStruct类型的指针后为各成员赋值;
步骤3.4.2、Modbus数据采集接口函数为void Modbus_PollFunc(void*protocolInfo,void**data),与ProtocolInterface具有相同函数签名,方便接入设备层数据采集模块;
步骤3.4.3、Modbus数据采集接口函数将配置信息指针protocolInfo强制转换为struct ModbusInfoStruct*类型;
步骤3.4.5、根据配置信息中的从机ID和寄存器地址进行数据采集,采集到的数据通过指针data返回给设备层数据采集模块。