我听说过MQTT,但它似乎更像是一个传输协议,仅此而已。它没有像信息建模等高级功能。
OPC是与PLC通信的唯一标准方式。 OPC DA是旧的替代方案。 OPC UA是新的并且现在被推荐使用。 在OPC之前只有专有协议和共享协议,如Modbus,但它们只是像您提到的更低级别的传输协议。
特别是在信息建模方面,OPC UA非常独特。通过该功能,它为更高级别的系统和应用程序提供了新的通信可能性,除了普通的PLC通信外。
请注意,一些PLC也可以本地讲话OPC UA,这使其成为标准。
而且,OPC UA确实作为IEC 62541进行了标准化,确保它是独立的。
更新于17/07/19: 正如我在最近的文章中所写的那样,OPC UA现在也被定义为Industry 4.0 Communication。
更新20/05/05: OPC UA版本1.04定义了Pub/Sub替代方案,在本地网络中使用UDP进行安全数据多播,使用AMQP/MQTT进行安全的基于经纪人的数据和事件传递到云系统。版本1.04还定义了WebSocket/JSON协议替代方案,可在Web应用程序中更轻松地使用。目前还未广泛使用,但希望将在2020-21时间范围内变得流行。
GET /woopsa/read/Temperature
,您可以读取一个值,并以JSON格式回复您:{"Value":24.2,"Type":"Real"}
您也可以使用 meta
关键字获取对象树,例如:GET /woopsa/meta/
,将得到类似以下内容:
{
"Name":"WeatherStation",
"Properties": [
{"Name":"Temperature","Type":"Real"},
...
],
"Methods": { ... }
"Items": [
"Thermostat",
...
]
}
SDK在Github上作为开源代码提供:
https://github.com/eltra-ch/eltra-sdk
目前,该库采用.NET Standard实现,并在Windows、Linux(x64和ARM32)、Android和iPhone上进行了测试。
Nuget包可在以下位置获取:
https://www.nuget.org/packages/Eltra.Connector/
如果OPC UA的复杂性过高,而Woopsa不适合您的设计,则ELTRA可能是一种替代方案。Unserver 是一个旨在解决此问题描述的产品。
它能够与不同的现场设备通信,并在其之上提供统一的HTTP API。 它通过Modbus RTU与设备集成,但将来还会添加其他常见协议。
简而言之,首先您需要像这样配置数据“标签”:
{
"name": "tank1",
"device": "plc1",
"properties": [
{
"name": "level",
"address": "HR0",
"type": "numeric",
"raw": "int16"
}
]
}
然后,您可以使用自动创建的 API 端点与标签进行交互:
GET http://localhost:9000/tags/tank1
{
data:{
level: 1
}
}
查看文档以获取更多信息。 该产品可供评估和非商业使用。
免责声明:我是团队的一员。希望这对您有用。