我正在使用基于 PC 的自动化软件包,名为 Think'n'Do,由 菲尼克斯电气 它进行实时处理,读取输入/控制逻辑/写入输出全部在最多 50 毫秒内完成。我们有一个 OPC 服务器,每 10 毫秒从 PLC 读取/写入标签。将标签写入 PLC 并读回写入值时存在较长延迟 (Think'n'Do (50ms) > OPC Server (10ms) > PLC (10ms) > OPC Server (10ms) > Think'n'Do (50ms) ) 该过程最多需要 6 秒才能完成,而根据我的计算,该过程只需要 130 毫秒。

任何关于去哪里寻找或为什么需要花费这么长时间的想法都会有所帮助。

有帮助吗?

解决方案

这取决于您如何配置 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 服务器演示并安装 OPC 快速客户端即可。您可以使用它连接到 OPC 服务器并浏览标签并查看数据。我使用过的第二好的 OPC 客户端来自 ICONICS(称为 OPC Data Spy),可在此处获取: http://www.iconics.com/support/free_tools.asp.

使用 OPC 客户端查看读取数据的速度。确保正确设置组刷新率。我认为这些工具也可能为您提供一些计时信息(但您将能够很容易地算出 6 秒的延迟)。

其他提示

听起来好像您没有使用 OPC 服务器中的缓存。通常OPC服务器有一个缓存,如果您的客户端连接并且没有指定它想要使用缓存,您将无法获得您可能需要的性能。OPC 服务器负责刷新设备中的缓存,尽管刷新标准可能因 OPC 服务器而异。

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

同步读取涉及App(请求)->OPCServer->PLC->OPCServer->App(结果)。这只是一个项目的阅读(尽管您可以一次性请求一组项目)。

那么类似的同步写入也涉及App(Write)->OPCServer->PLC->OPCServer->App(Done)。

异步读取和写入以及组读取和写入可以帮助减少应用程序的阻塞,但请注意您的应用程序可以处理这种异步行为

另一件需要注意的事情是 PLC 配置,在 Allen-Bradley PLC 上有一个扫描间延迟设置,用于通过外部网络处理 I/O 请求。如果时间很短并且数据带宽很高,那么速度就会变慢。

以下是一些值得一看的地方: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、网络是否工作正常。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top