Lets say I have multiple distributed complex machines. Each machine contains of multiple cpmplex devices. Each device has its own OPC UA server to monitore the device components. With an OPC UA client I want to read all the data items of the OPC UA servers.
Now I don't know how to build the information model. I design a global information model which contains all machines, their devices and the internal components of the devices. From the global point of view, that makes sense. But do I have to create also a local information model for each server? Or does the local OPC UA server use the global information model, but the server implements only for that server relevant objects (based on the global information model)?
UPDATE:
Here is an example setup:
In the example you can see three layers - machine layer, building layer and factory layer.
Here is my understanding how to model such setups. There is one overall OPC UA information model, which describes all types etc. Each OPC UA server knows that information model and all contained type descriptions.
Now, depending on the real world setup, I can create an object model. An OPC UA server at the machine layer contains all objects from the underlying system, in this example the devices.
With an OPC UA Client at the building layer, I can connect to the OPC UA server from the machines and I can read all data items from the devices inside the machines.
An OPC UA client at the factory layer can connect to the OPC UA servers from the buildings. The OPC UA server at the building level can provide more objects:
And an OPC UA client from outside the factory can see the whole picture of the object model:
But how can I route through the servers to get the device data from outside the factory? Do I have to create the object model from the machine layer again in the building layer? And again in the next higher level layer and so on?
Or does any OPC UA server at each layer know the whole object model like the information model?