I am involved in the design of the control system for remote handling devices in a fusion-related facility. Today we are considering around 35 devices to be controlled from a single control room, and they must be integrated with a set of common software tools that provide the functionality described in the pink rectangle. The kind of devices that we are considering (heavy duty cranes, robotic arms, AGVs...) are the typical ones that can be expected in the manufacturing industry, but the automation level will be really low because of the complexity of the tasks to be executed and the difficulty to create a structured environment. Instead, the operators will be an active part of the control loop and will be using these devices to maintain, repair or exchange samples in a large hotcell that will be restricted to human access.
Two blocks from the high level are critical and concern me when considering OPC UA: Graphical Interface (graphical panels for device operation) and VR System (virtual simulation of the hotcell). Considering the number of devices and assuming that all could be working in parallel at some point, the network could be saturated and introduce delays on the control commands and the virtual simulation could get out of sync or get jumpy (which is critical, since it is crucial for the operators to get oriented). I think this could be solved by using Pub/Sub, but most part of the controllers that are OPC UA compatible nowadays does not include this feature so I had no chance to make any test or verify this assumption.
I would like to know if anyone knows about any project either in the manufacturing industry or in the fusion/nuclear industry that uses OPC UA in a similar way! I did not find any references but it seems feasible from a technological point of view.
35 devices is a medium size system. You are unlikely to have network issues unless you are sampling a lot of data at high frequency.
If performance is a concern UA PubSub is better some of the data flows.
I would start my estimating the total amount of data (ints/doubles/string/etc) that you need reported each second.
From there you can estimate the total bandwidth needed to maintain updates.