本发明涉及互联网通信技术领域,尤其涉及一种传递信息模型的方法、装置、系统和介质。
背景技术:
opcua是一种符合工业4.0要求的c/s架构的互联互通协议,它的地址空间和信息模型是支撑cps信息物理系统和数字双胞胎的重要技术。opcua服务器为客户端提供的对象和相关信息都是与服务器的地址空间有关的,地址空间的基本单位是节点。节点主要由节点的属性和引用组成。属性用于描述节点,它决定了节点的特性。opcua的8种节点分别是对象、对象类型、变量、变量类型、方法、引用类型、视图、数据类型。属性是对节点本身的描述,引用定义了与其他节点的关系。其中对象节点是地址空间的骨架,它的数据结构比其他节点更复杂,所有节点的根节点都一定是某个对象节点。
目前国际opcua基金会发布的opcua众多服务,并没有提供从opcua客户端远程直接导出服务器中信息模型的方法,客户端只能通过浏览服务器的地址空间,浏览某个对象的结构,再手动地在应用程序中创建其类型并实例化,需要耗费大量人力和时间。因此需要提供一种客户端和服务器之间传递opcua信息模型的方案,以保证该信息模型的高效传递。
技术实现要素:
为了克服现有技术存在的缺点与不足,本申请提供了一种传递信息模型的方法、装置、系统和介质,可以有效传递opcua的信息模型,提升opcua的使用便捷性和效率。
为了达到上述申请的目的,本申请提供了一种传递信息模型的方法,该方法包括:
接收客户端发送的对象的节点标识数据;
查询地址空间所述对象的节点标识数据对应的对象数据;
基于所述对象数据构建信息模型;
对所述信息模型进行封装得到第一封装包;
向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令。
进一步的,所述方法还包括:
接收客户端发送的赋值请求指令;
响应于所述赋值请求指令,向客户端发送第二解析指令,以使所述客户端解析第二封装包后对所述客户端信息模型赋值,所述第二解析指令包括第二封装包和对所述第二封装包进行解析的指令,所述第二封装包包括所述服务器响应于所述赋值请求指令将所述对象属性和对象各节点的值封装成的数据包。
进一步的,所述方法还包括:
接收客户端发送的第三封装包,所述第三封装包包括在赋值后的客户端信息模型进行更新后,将更新后的客户端信息模型以及对应的值封装成的封装包;
对所述第三封装包进行解析处理得到解析数据,所述解析数据包括映射于所述更新后的客户端信息模型以及对应的值的数据;
将所述解析数据写入地址空间,得到赋值更新的服务器信息模型。
另一方面,所述方法还包括:
向服务器发送对象的节点标识数据;
接收所述服务器发送的第一解析指令,所述第一解析指令包括第一封装包和对所述第一封装包进行解析的指令,所述第一封装包包括所述服务器根据所述对象的节点标识数据查询地址空间构建对应的信息模型,并对所述信息模型进行封装得到的封装包;
响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型,所述信息模型包括对象、对象属性和各节点之间的关系。
具体的,响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型之后,所述方法还包括:
向服务器发送赋值请求指令;
接收服务器发送的第二解析指令,所述第二解析指令包括第二封装包和对所述第二封装包进行解析的指令,所述第二封装包包括所述服务器响应于所述赋值请求指令将所述对象属性和对象各节点的值封装成的封装包;
响应于所述第二解析指令,对所述第二封装包进行解析,并将解析结果代入客户端信息模型,对所述客户端信息模型的所述对象、对象属性以及对象的各节点进行赋值。
具体的,在赋值后的客户端信息模型进行更新后,所述方法包括:
对更新后的客户端信息模型以及对应的值进行封装得到第三封装包;
向服务器发送第三封装包,以使所述服务器将所述第三封装包进行解析得到的解析数据写入地址空间,对服务器信息模型以及对应的值进行更新。
另一方面,本申请还提供一种传递信息模型的装置,所述装置包括:
第一数据接收模块,用于接收客户端发送的对象的节点标识数据;
信息模型查询模块,用于根据所述对象的节点标识数据查询地址空间构建对应的信息模型;
第一封装模块,用于对所述信息模型进行封装得到第一封装包;
第一数据发送模块,用于向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令。
具体的,所述装置还包括:
第二数据发送模块,用于向服务器发送对象的节点标识数据;
第二数据接收模块,用于接收所述服务器发送的第一解析指令,所述第一解析指令包括第一封装包和对所述第一封装包进行映射解析的指令,所述第一封装包包括所述服务器根据所述对象的节点标识数据查询地址空间构建对应的信息模型,并对所述信息模型进行封装得到的封装包;
信息模型解析模块,用于响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型,所述信息模型包括对象、对象属性和各节点之间的关系。
另一方面,本申请还提供一种传递信息模型的系统,所述系统包括:服务器和客户端;
所述服务器用于根据客户端发送的对象的节点标识数据查询地址空间构建对应的信息模型;以及,对所述信息模型进行封装得到第一封装包;以及,向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令;
所述客户端用于向服务器发送对象的节点标识数据;以及,接收所述服务器发送的第一解析指令,所述第一解析指令包括第一封装包和对所述第一封装包进行解析的指令,所述第一封装包包括所述服务器根据所述对象的节点标识数据查询地址空间构建对应的信息模型,并对所述信息模型进行封装得到的封装包;以及,响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型。
另一方面,本申请还提供一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现传递信息模型的方法。
实施本申请,具有如下有益效果:
本申请通过接收客户端发送的对象的节点标识数据,根据所述对象的节点标识数据查询地址空间构建对应的信息模型,对所述信息模型进行封装得到第一封装包,向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令,解决了客户端和服务器间信息模型交互困难,传递低效的问题。
附图说明
为了更清楚地说明本申请所述的一种传递信息模型的方法、装置、系统和介质,下面将对实施例所需要的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种应用环境的示意图;
图2是本申请提供的服务器中地址空间的位置示意图;
图3是本申请实施例提供的一种传递信息模型方法的流程示意图;
图4是本申请提供的节点的基本组成示意图;
图3是本申请实施例提供的一种传递信息模型方法的流程示意图;
图5是本申请实施例提供的opcua的节点模型示意图;
图6是本申请提供的一个具体的实例化显示cpu压力和温度的示意图;
图7是本申请实施例提供的另一种传递信息模型方法的流程示意图;
图8是本申请实施例提供的另一种传递信息模型方法的流程示意图;
图9是本申请实施例提供的一种传递信息模型装置的结构示意图;
图10是本申请实施例提供的一种传递信息模型装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了实现本申请的技术方案,让更多的工程技术工作者容易了解和应用本申请,将结合具体的实施例,进一步阐述本申请的工作原理。
本申请可以应用于互联网通信技术领域,例如远程抄水表或者远程采集供电数据等。
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图,如图1所示,该应用环境可以至少包括客户端01和服务器02。
本说明书实施例中,客户端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、智能可穿戴设备等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。本申请实施例中客户端01上opcua可以嵌入的操作系统可以包括但不限于vxworks、qnx、linux、windows、rtos等,服务器02中opcua可以嵌入的操作系统可以包括但不限于unix、solaris、hpux、aix、linux、erp、mes、scada等。具体的,客户端01可以用于调用服务器02的opcua服务,获取服务器02提供的信息模型。服务器02可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。服务器02可以包括有网络通信单元、处理器和存储器等等。具体的,所述服务器02可以用于进行信息模型的构建和opcua服务的调用。
本申请中,过程控制工业标准(opc,objectlinkingandembedding(ole)forprocesscontrol)是一个国际通用的工业标准,包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统,为便于本申请的阅读,以下均简称opc。opcua指opc统一体系架构,是一种唯一符合工业4.0要求的c/s架构的互联互通协议,opcua定义了统一数据和服务模型,其中包括代表结构、行为和语义的信息模型、使应用程序相互作用的消息模型、在传输数据的通信模型和保证系统之间实现互操作性的一致性模型,这些统一的模型使数据组织更为灵活,可以实现报警与事件、数据存取、历史数据存取、控制命令、复杂数据的交互通信。其地址空间和信息模型是支撑信息物理系统和数字双胞胎的重要技术。
opcua服务器为客户提供的对象和对象的相关信息均基于服务器的地址空间和数据存储模块进行存储,图2中显示的是地址空间在服务器中的位置,其中,服务器包括但不限于具体硬件设备、硬件驱动程序、地址空间及数据存储模块、数据处理模块、网络通信及数据编码模块和网络,具体的,数据处理模块又包括数据管理及订阅模块、事件管理及订阅模块、历史管理模块和安全及配置模块,地址空间及数据存储模块是硬件驱动程序和数据处理模块之间的桥梁,用于服务器与外界进行数据交互和数据存储,最典型的获取数据的方式是从具体设备的硬件驱动程序中获得数据,将获得的数据作为其他模块的数据源。对于地址空间中要被访问的对象,opcua也允许服务器给客户端提供类型定义,这使得信息模型可以被用来描述地址空间的内容。opcua服务器为客户端提供的数据都是与服务器的地址空间有关的。
基于以上介绍,在本申请一种传递信息模型方法的实施例中,如图3,该方法包括:
s101:客户端向服务器发送对象的节点标识数据。
opcua地址空间是以一组用引用形式连接起来的节点来描绘其内容的。图4显示的是节点的基本组成和节点之间的关系,节点由属性和引用组成。表1列出了节点的七种属性,其中标识为“x”的是必须实现的属性,标识为“y”的是可选实现的属性。不同类型的节点对应不同的节点属性,且一个节点对应一个或多个节点属性,不同类型的节点之间可以有相同的某些节点属性。
表1节点属性
上表中的nodeid是节点的标识数据,在服务器中唯一标识了一个节点,用于节点的访问定位。浏览或查询地址空间时服务器返回节点标识数据,在调用服务中客户端使用节点标识数据来定位节点。如图5所示,节点的类型有八种,分别是对象、对象类型、变量、变量类型、视域、数据类型、引用类型和方法。具体的,对象,用于构成地址空间结构;变量,代表一个值;方法,代表服务器中一个由客户端调用并返回结果的方法;对象类型,是为对象的类型提供定义;变量类型,是对变量的类型提供定义;视域,定义地址空间里的节点的子集,即地址空间的摘要;数据类型是用于定义对象和变量的类型时,提供具体的类型值的。节点之间存在一定引用关系,被引用的为目标节点,引用目标节点的为基节点。
s103:服务器查询地址空间中对象的节点标识数据对应的对象数据,并基于对象数据构建信息模型。
其中,信息模型是面向对象分析的基础,使用地址空间的概念来定义其特定域的类型,以及定义明确的实例;最后,服务器的数据基于信息模型创建。信息模型的实现是通过将某种机制加载到服务器的地址空间中,服务器接收到对象的节点标识数据,通过查询地址空间得到节点标识数据对应的节点属性和节点引用关系数据,利用这些数据构建信息模型。在一个具体的实施例中,假设对象为cpu(中央处理器,centralprocessingunit),如图6所示,在某次实施过程中,要对模拟测量值创建cpu面板,并进行实例化运用,将服务器cpu的压力和温度显示到客户端面板上。具体的,左边方框中包括cpu的多个节点,包括cpu的温度、压力、测量值、对象类型、模拟测量等节点,右边方框为显示面板,对象cpu的属性可以包括cpu的节点标识、节点类、浏览名称、本地名称等,cpu的压力节点可以引用测量值节点,在这一引用中,压力节点是基节点,测量值节点是引用节点。首先,客户端请求该任务对象cpu的标识数据,根据该对象cpu的节点标识数据查询地址空间得到对应的对象数据,这里的对象数据包括cpu下的节点引用关系和这些节点的属性,根据对象数据构建信息模型。
s105:服务器对得到的信息模型进行封装得到第一封装包。
具体的,服务器可以将信息模型封装成json或者xml格式的第一封装包。接着s103步骤中的例子,服务器可以将获取到的cpu的信息模型封装成json或者xml格式的封装包。
s107:服务器将第一解析指令发送给客户端。
具体的,第一解析指令包括第一封装包和对第一封装包进行解析的指令。
s109:客户端响应于第一解析指令对第一封装包进行解析处理,重构信息模型。
客户端在接收到第一解析指令后,响应于该指令对第一封装包进行解析处理,基于解析后的数据重构信息模型,最后得到的信息模型与服务器中的信息模型呈映射关系。
目前,opcua规范传递数据信息采用ua二进制,opcua服务器只能发布数据和时间通知,客户端也只能通过订阅的方式来浏览信息,极为不便。而将服务器信息模型封装成json(js对象简谱,javascriptobjectnotation)或者xml(extensiblemarkuplanguage,可扩展标记语言)格式的第一封装包,再通过tcp(transmissioncontrolprotocol,传输控制协议)或者http(hypertexttransferprotocol,超文本传输协议)协议传输给客户端,客户端解析该封装包得到信息模型,能够使信息模型具有可编辑的属性,便于工程人员直接调用所需信息。
在另一实施例中,如图7,该传递opcua信息模型的方法,在客户端得到信息模型之后还包括:
s201:客户端向服务器发送赋值请求指令。
该赋值请求指令的发送是在客户端重构信息模型之后操作,以使服务器将信息模型中的值发给客户端,客户端对重构的信息模型进行赋值。
s203:服务器响应于接收到的赋值请求指令,对信息模型的值进行封装得到第二封装包。
具体的,服务器接收到赋值请求指令,将服务器信息模型中的值封装成json或者xml格式的第二封装包,
s205:服务器向客户端发送第二解析指令。
具体的,得到第二封装包后,服务器可以利用tcp或者http协议向客户端发送第二解析指令,其中,第二解析指令包括第二封装包和对第二封装包进行解析的指令。
s207:客户端接收第二解析指令后,对第二封装包进行解析,将解析结果代入客户端信息模型,对客户端的信息模型进行赋值。
具体的,接s103中的例子所述,在客户端得到对象cpu的信息模型后,基于模拟测量节点可以创建出面板类型,向服务器发送赋值请求指令,服务器将对象cpu信息模型的值封装成json或者xml格式的第二封装包,其中,对象cpu信息模型的值包括cpu温度值、压力值等相关节点的值。得到第二封装包后,服务器将包括第二封装包的第二解析指令发送至客户端,客户端侧对第二封装包进行解析并对对象cpu信息模型进行赋值,由此可得到cpu压力和温度值,并在cpu面板上显示。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中,通过客户端向服务器发送赋值请求指令,服务器响应于赋值请求指令,向客户端发送第二解析指令,客户端根据第二解析指令将第二封装包进行解析得到信息模型的值,最后对客户端内的信息模型进行赋值。利用本说明书实施例提供的技术方案可以实现服务器向客户端传输信息模型后,客户端信息模型的赋值,能够得到完整的客户端信息模型,实现动态获取和导出信息模型及信息模型值的过程。
以下介绍本申请另一中传递opcua信息模型方法的具体实施例,图6是本申请实施例提供的另一种传递信息模型方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的,如图8所示,所述方法可以包括:
s301:服务器接收客户端发送的第三封装包。
本说明书实施例中,客户端向服务器发送第三封装包之前,先发送信息模型更新请求,得到服务器反馈的指令后,调用服务器的服务将客户端中的信息模型和对应的值进行json或者xml格式的封装,得到第三封装包。客户端向服务器发送该第三封装包。
s303:服务器对接收到的第三封装包进行解析得到更新后的客户端信息模型以及对应的值的解析数据。
s305:将得到的解析数据写入地址空间,得到赋值更新后的服务器信息模型。
本说明书实施例中,通过对服务器信息模型进行赋值更新,实现将客户端更新的信息模型的值同步至服务器中的信息模型,以便服务器中的信息模型可以在编码时进行调用。
由以上本说明书实施例提供的技术方案可见,本说明书实施例中,通过服务器接收客户端发送的第三封装包,并对该第三封装包进行解析得到更新后的客户端信息模型以及对应的值的解析数据,将该解析数据写入地址空间,以更新服务器的信息模型,能够实现客户端向服务器的信息模型的传输。
本申请实施例还提供一种传递信息模型的装置,如图9所示,所示装置包括:
第一数据接收模块401,用于接收客户端发送的对象的节点标识数据;
信息模型查询模块403,用于根据所述对象的节点标识数据查询地址空间构建对应的信息模型;
第一封装模块405,用于对所述信息模型进行封装得到第一封装包;
第一数据发送模块407,用于向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令。
本申请实施例还提供一种传递信息模型的装置,如图10所示,所示装置包括:
第二数据发送模块501,用于向服务器发送对象的节点标识数据;
第二数据接收模块503,用于接收所述服务器发送的第一解析指令,所述第一解析指令包括第一封装包和对所述第一封装包进行映射解析的指令,所述第一封装包包括所述服务器根据所述对象的节点标识数据查询地址空间构建对应的信息模型,并对所述信息模型进行封装得到的封装包;
信息模型解析模块505,用于响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型,所述信息模型包括对象、对象属性和各节点之间的关系。
本申请实施例还提供一种传递信息模型的系统,所述系统包括:
服务器和客户端;
所述服务器用于根据客户端发送的对象的节点标识数据查询地址空间构建对应的信息模型;以及,对所述信息模型进行封装得到第一封装包;以及,向所述客户端发送第一解析指令,以使所述客户端响应于所述第一解析指令执行解析操作,以及基于所述解析操作对所述第一封装包进行解析处理,以及基于解析后的数据重构所述信息模型,所述第一解析指令包括所述第一封装包和对所述第一封装包进行解析的指令;
所述客户端用于向服务器发送对象的节点标识数据;以及,接收所述服务器发送的第一解析指令,所述第一解析指令包括第一封装包和对所述第一封装包进行解析的指令,所述第一封装包包括所述服务器根据所述对象的节点标识数据查询地址空间构建对应的信息模型,并对所述信息模型进行封装得到的封装包;以及,响应于所述第一解析指令,对所述第一封装包进行解析得到映射于服务器信息模型的客户端信息模型。
由上述本申请提供的传递opcua信息模型的方法、装置、系统和介质的实施例可见,本申请能够实现服务器和客户端间opcua信息模型的传递,能够直接导出信息模型进行编辑修改,方便程序员直接引用,节约了大量的人力和时间。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、服务器、客户端和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。