我的情况如下:
我的树莓派连接到多个传感器(3个温度传感器,1个湿度传感器,2个电流传感器和1个压力传感器)。传感器正在测量来自引擎的值,我目前正在尝试为将在树莓派上运行的OPC UA服务器开发地址空间模型。
到目前为止,太好了。到目前为止,我已经阅读了许多教程,对地址空间进行建模就像开发带有继承的类图一样。这就是为什么我定义了EngineType(<-ObjectType)并从中实例化一个对象(称为“ Engine”)的原因。 EngineType当前为每个传感器值定义变量(如OOP中的成员变量)。
但这是我的问题:
由于每个传感器都有其自己的类型(温度,压力,湿度...),名称和值类型(摄氏度,毫巴,湿度...)和值范围,因此我认为定义SensorType不会很坏(ObjectType节点),因此是每种传感器类型的ObjectType:TempSensorType,HumiditySensorType等等。
因此,根据我的建议,引擎对象最终会带有一堆成员,这些成员都是从对象类型实例化的。
OPC UA中的最佳实践是太复杂了吗?有没有更优雅的方式来解决这个问题?我希望我能清楚地解释我的情况。
我很感谢您可以给我的任何帮助或建议!提前非常感谢您,如果您对我上述的情况有任何疑问,请随时提出!
答案 0 :(得分:1)
设计听起来对我来说合理。
即使客户事先不了解模型,他们仍然应该能够理解和使用数据,我认为这是设计时要牢记的重要素质。
我要避免的是使用自定义 DataType 作为您的值,因为这要求客户端具有足够的高级才能从服务器读取DataTypeDictionary,并能够基于字典动态地解码和编码自定义结构内容。