使用OPC标签提高性能

4
我正在使用一个名为Think'n'Do的基于PC的自动化软件包,由Phoenix Contact创建。它进行实时处理、读取输入/控制逻辑/写出输出,最多需要50ms。我们有一个OPC服务器,每10ms读取/写入PLC标记。在将标记写入PLC并读回已写入的值之间存在长时间延迟(Think'n'Do(50ms)> OPC服务器(10ms)> PLC(10ms)> OPC服务器(10ms)> Think'n'Do(50ms))。这个过程需要长达6秒才能完成,但根据我的计算,只需要130ms。

请问有什么建议或原因可以解释为什么会花费如此长的时间吗?

4个回答

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秒延迟)。

3

看起来你没有使用OPC服务器中的缓存。通常,OPC服务器都有一个缓存,如果你的客户端连接并且没有指定要使用缓存,那么你可能无法获得所需的性能。 OPC服务器负责从设备刷新缓存,尽管刷新的条件可能因OPC服务器而异。


1
如果系统执行同步读取(阻塞 I/O 调用),然后实现应用程序逻辑,再进行同步写入(再次阻塞),那么需要考虑到与 PLC 之间存在多次往返。

同步读取涉及应用程序(请求)->OPCServer->PLC->OPCServer->应用程序(结果)。这仅是一个项的读取(尽管可以一次请求一组项目)。

然后类似的同步写入也涉及应用程序(写入)->OPCServer->PLC->OPCServer->应用程序(完成)。

异步读取和写入以及组读取和写入可以帮助减少应用程序的阻塞,但要注意您的应用程序能够处理此异步行为。

另一个要注意的事项是 PLC 配置,在 Allen-Bradley PLC 上有一个交互扫描延迟设置,用于在外部网络上服务 I/O 请求。如果该时间很短且数据带宽高,则会降低速度。


0

以下是一些需要查看的地方:OPC客户端配置、OPC客户端本身、OPC服务器或PLC本身。

以下是您应该检查的事项:

  1. OPC客户端配置 - 您已将OPC标签添加到的OPC组应具有快速扫描速率(即根据用途使用100毫秒至1秒不等)。在写入值时,您是否注意到值是否更快地传输?如果没有,则可能存在DCOM或网络配置问题。
  2. OPC客户端 - 下载免费的OPC客户端软件(可能来自OPC基金会网站或主要的OPC服务器软件供应商),以查看是否可以更快地获取值。如果是这样,那么您的客户端可能存在问题。
  3. OPC服务器 - 一些OPC服务器具有诊断工具。打开它们并查看实际发生写入的时间和实际进行读取的时间。如果您能回答这些问题,您可能可以确定延迟的罪魁祸首是PLC还是OPC服务器。此外,请观察OPC服务器的CPU使用情况,如果您注意到它正在使用比正常更多的CPU,则可能意味着OPC服务器负载过重,这可能会降低性能。
  4. 其他 - 最后,请检查PLC和网络是否正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接