工厂有MES (制造执行系统),我有机器。工厂想用他们的MES来控制我的机器(开始/停止生产等)。并监控实时生产数据(如生产多少产品)。
简而言之,目标是:
MES ---controls--> machine
MES <--reports data--- machine
需要注意的是,我的机器已经有了一个 WinForm应用程序(部署MVP模式),它包含了所有的业务逻辑,并且可以很容易地被脱机工作人员使用。为了满足工厂的需要,我必须对.NET代码进行一些升级/转换。
经过一番调查,我找到了两种可能的方法来实现这个目标:
之间进行通信。
我对上述两种方法都没有任何经验,所以你能告诉我每种方法的优缺点吗?还是有第三种更好的方法?
发布于 2022-04-21 14:57:16
从长远来看,OPC UA是首选的选择。它看起来似乎相当广泛,而且有一点学习曲线,但这是因为它附带了许多内置的特性(安全性、地址空间、读、写、方法调用、数据更改、事件、警报、历史读取等等)。你不会马上就需要所有这些资源,但你也不需要使用超过你所需要的。
对于.NET,您可以使用,它提供了大部分内容的实现。它是免费的(非成员的GPL),但缺乏文档,所以您可能想考虑商业选择。
特别是,如果您希望简单可靠地从MES建立连接,那么定义您自己的套接字协议是没有任何意义的。这将花费您大量的时间,容易出错,最终,您将是唯一一个谁可以调试它的问题。最后,您可能需要弄清楚您的MES如何在实践中使用您的协议。
坚持标准解决方案有明显的好处。
发布于 2022-04-20 08:02:56
如果您的机器有内置的OPC服务器,并且您的MES可以充当OPC客户端,那么点1是一个很好的解决方案。
另一方面,如果您必须在您的机器上编写OPC UA服务器,忘记它,这是一项非常困难的工作,因为OPC UA无疑是所有最常见的工业协议中最复杂的。
如果使用原始套接字编程,那么您必须定义自己的协议,这就像重新发明轮子一样。
也许您可以选择使用更简单的工业协议,例如Modbus TCP。
发布于 2022-05-20 15:57:54
我在OPC UA方面有一些经验,必须承认它有一个非常陡峭的学习曲线。朱尼·阿罗的回答是对的。但第三种选择是另一种现有协议,它可能具有较少的功能,但更易于使用,例如MQTT。几乎每种语言都可以使用大量的开源实现。
https://stackoverflow.com/questions/71933905
复制相似问题