我正在使用由Phoenix Contact创建的名为Think'n'Do的基于PC的自动化软件包。它实时处理,读取输入/控制逻辑/写入输出全部在最长50ms内完成。我们有一台OPC服务器,每隔10ms从PLC读取/写入标签。将标签写入PLC并读回写入值有很长的延迟(Think'n'Do(50ms)> OPC服务器(10ms)> PLC(10ms)> OPC服务器(10ms)>认为'n'Do(50ms))这个过程需要6秒才能完成,而我的数学运算只需要130ms。
任何关于在哪里寻找或为什么可能花费更长时间的想法都会有所帮助。
答案 0 :(得分:5)
这取决于您如何配置OPC客户端来提取数据。当您在OPC中订阅组时,您可以指定刷新率。这可能默认为1秒甚至5秒,具体取决于OPC客户端。 OPC服务器可能会对更新数据的频率施加限制。这仅适用于您的OPC客户端订阅数据更改事件。
您可以采用的另一种方法是对OPC服务器执行异步或同步读/写操作。有几种阅读模式。由于您使用的是OPC,您可以使用任何OPC兼容的客户端来测试您的服务器,这将告诉您问题是否与Think'n'Do中的设置有关,还是与PLC /服务器有关。
我使用过的最好的通用OPC客户端是OPC Quick Client。您可以在此处使用TOP Server获取它:http://www.toolboxopc.com/Features/Demo/demo.shtml。只需抓住TOP Server演示并安装OPC Quick Client。您可以使用它连接到OPC服务器并浏览标签并查看数据的外观。我使用的第二个最好的OPC客户端来自ICONICS(称为OPC Data Spy),可在此处获取:http://www.iconics.com/support/free_tools.asp。
使用OPC客户端查看读取数据的速度。确保正确设置组刷新率。我认为这些工具也可能为您提供一些计时信息(但您可以很容易地计算出6秒的延迟)。
答案 1 :(得分:3)
听起来好像您没有在OPC服务器中使用缓存。通常OPC服务器有一个缓存,如果您的客户端连接并且没有指定它想要使用缓存,则不会获得您可能需要的性能。 OPC服务器负责从设备刷新缓存,尽管刷新的标准可能因OPC服务器而异。
答案 2 :(得分:1)
如果系统进行同步读取(阻塞I / O调用),则实现应用程序的逻辑然后同步写入(再次阻塞),然后您需要考虑到PLC的多次往返。
同步读取涉及App(请求) - > OPCServer-> PLC-> OPCServer-> App(结果)。这只是一个项目的读取(尽管你可以一次性要求一组项目)。
然后类似的同步写入也涉及App(写入) - > OPCServer-> PLC-> OPCServer-> App(完成)。
Asyncronous read&写和组阅读&写入可以帮助减少应用程序的阻塞,但要小心你的应用程序可以应对这种不一致的行为
要看的另一件事是PLC配置,在Allen-Bradley PLC上有一个间歇延迟设置,用于通过外部网络为I / O请求提供服务。如果时间很短并且您拥有高带宽的数据,那么这将减慢速度。
答案 3 :(得分:0)
以下是一些要查看的地方:OPC客户端配置,OPC客户端本身,OPC服务器或PLC本身。
以下是您应该检查的事项: