【问题标题】:Improving performance with OPC tags使用 OPC 标签提高性能
【发布时间】:2008-09-02 16:42:46
【问题描述】:
我正在使用由Phoenix Contact 创建的名为 Think'n'Do 的基于 PC 的自动化软件包,它可以在最多 50 毫秒内完成实时处理、读取输入/控制逻辑/写入输出。我们有一个 OPC 服务器,它每 10 毫秒从 PLC 读取/写入标签。将标签写入 PLC 并读回写入的值有很长的延迟(Think'n'Do (50ms) > OPC Server (10ms) > PLC (10ms) > OPC Server (10ms) > Think'n'Do (50ms) ) 该过程最多需要 6 秒才能完成,而我的数学应该只需要 130 毫秒。
任何关于在哪里寻找或为什么可能需要这么长时间的想法都会有所帮助。
【问题讨论】:
标签:
performance
automation
opc
【解决方案1】:
这取决于您如何将 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 秒的延迟)。
【解决方案2】:
听起来好像您没有使用 OPC 服务器中的缓存。通常 OPC 服务器有一个缓存,如果您的客户端连接并且没有指定它想要使用缓存,您将无法获得您可能需要的性能。 OPC 服务器负责从设备刷新缓存,但刷新标准可能因 OPC 服务器而异。
【解决方案3】:
如果系统执行同步读取(阻塞 I/O 调用),然后实现应用程序的逻辑,然后执行同步写入(再次阻塞),那么您需要考虑到 PLC 的多次往返。
同步读取涉及 App(request)->OPCServer->PLC->OPCServer->App(result)。这只是对一个项目的阅读(尽管您可以一次要求一组项目)。
那么类似的同步写入也涉及到App(Write)->OPCServer->PLC->OPCServer->App(Done)。
异步读写和组读写可以帮助减少应用程序的阻塞,但请注意您的应用程序可以处理这种异步行为
要查看的另一件事是 PLC 配置,在 Allen-Bradley PLC 上,有一个扫描间延迟设置,用于为外部网络上的 I/O 请求提供服务。如果这段时间很短并且您拥有高带宽的数据,那么这会减慢速度。
【解决方案4】:
这里有几个地方可以查看:OPC 客户端配置、OPC 客户端本身、OPC 服务器或 PLC 本身。
以下是您应该检查的事项:
- OPC 客户端配置 - 已添加 OPC 标签的 OPC 组应具有快速扫描速率(即 100 毫秒到 1 秒,具体取决于您的用途)。通过写入值的行为,您是否注意到值的输入速度更快?如果不是,则可能存在 DCOM 或网络配置问题。
- OPC 客户端 - 下载免费的 OPC 客户端软件(可能来自 OPC 基金会网站或主要的 OPC 服务器软件供应商),看看您是否可以更快地恢复值。如果是这样,您的客户可能有问题。
- OPC 服务器 - 一些 OPC 服务器有诊断工具。打开它们,看看实际发生写入的时间和实际发生读取的时间。如果您能回答这些问题,您可能可以确定延迟的罪魁祸首是来自 PLC 还是来自 OPC Server。还要观察 OPC Server 的 CPU 使用率,如果您发现它使用的 CPU 比平时多,这可能意味着 OPC Server 负载过低,可能会降低性能。
- 其他 - 最后检查 PLC,网络工作正常。