假设我有多台分布式复杂机器。每台机器都包含多个cpmplex设备。每个设备都有自己的OPC UA服务器,用于监控设备组件。使用OPC UA客户端,我想读取OPC UA服务器的所有数据项。
现在我不知道如何建立信息模型。我设计了一个全局信息模型,其中包含所有机器,设备和设备的内部组件。从全球的角度来看,这是有道理的。但是,我是否还必须为每个服务器创建本地信息模型?或者本地OPC UA服务器是否使用全局信息模型,但服务器仅实现该服务器相关对象(基于全局信息模型)?
更新
以下是一个示例设置:
在示例中,您可以看到三个层 - 机器层,建筑层和工厂层。
以下是我对如何建模此类设置的理解。有一个整体OPC UA信息模型,它描述了所有类型等。每个OPC UA服务器都知道该信息模型和所有包含的类型描述。
现在,根据真实世界的设置,我可以创建一个对象模型。机器层的OPC UA服务器包含底层系统的所有对象,在本例中为设备。
在构建层使用OPC UA Client,我可以从机器连接到OPC UA服务器,我可以从机器内部的设备读取所有数据项。
工厂层的OPC UA客户端可以从建筑物连接到OPC UA服务器。建筑物级别的OPC UA服务器可以提供更多对象:
来自工厂外的OPC UA客户端可以看到对象模型的全貌:
但是如何通过服务器路由以从工厂外获取设备数据?我是否必须在构建层中再次从机器层创建对象模型?又在下一个更高层次的层面等等?
或者每层的任何OPC UA服务器都知道整个对象模型,就像信息模型一样?
答案 0 :(得分:3)
OPC UA服务器包括两大类信息:类型和实例。
当我们谈论信息模型时,我们通常会讨论不同的类型定义。例如,所有设备的通用模型(OPC UA for Device(DI))或某些设备类型的特定模型(分析仪设备的OPC UA(ADI)等)。这些类型定义了对象的常见结构:例如,当遇到类型为“光谱仪”的对象时,您就知道要从中获得什么样的结构。这些类型通常是固定的,当它们标准化时,它们不应该改变。如果您定义自己的类型(可以是标准类型的特化),那么您当然会有更多的灵活性。
现在,如果您希望为完整的生产现场建模,您将创建实际实例的轮廓和排列:“实验室”内的“光谱仪1”和“ProductionHall B”内的“Vessel 13” 。当设施的布局发生变化时,该模型通常更具动态性并且可以更改。
由于上述原因,我们通常不会对标准模型中的实例进行建模,也不会将它们作为信息模型进行讨论。您可以认为它们或多或少是系统的配置。
现在,正如您所知,整个系统实际上可能包含各种OPC UA服务器。每台服务器的功能各不相同,您的选择可能会受到限制。在理想的世界中,所有服务器都将通过适当的信息模型提供数据建模。也就是说,实例将遵循标准类型的结构或使您能够使用自己的类型对它们进行建模。
另一方面,大多数现有的OPC UA服务器只提供“未建模”的数据。这是OPC Classic中唯一的选项,大多数实际的OPC UA服务器仍处于同一级别。希望将来我们会看到更多OPC UA服务器提供在其中采用信息模型的选项。或者我们可能会看到“Aggerating OPC UA Servers”的兴起,它使您能够根据标准或自定义模型重新构建数据。
无论如何,当您创建系统模型时,我建议您专注于类型信息,然后使用这些类型将其应用于系统的实际布局模型。
要真正回答您的问题,我认为只要您在系统中创建所需的模型就足够了,因为您现在无法将其很好地传播到实际的OPC UA服务器上。但是,当然,如果您也可以将模型应用于特定服务器,那就更好了。