非常慢的 PLC 编程和故障查找
Very Slow PLC Programming and Fault Finding
我在一个完整的生产环境中工作,我们的生产工厂周围有一系列 PLC,这些 PLC 中的每一个都通过 'DataHighway +' 网络回传到我们 LAN 网络上称为 MicroLinks 的特殊 PC个人电脑。这上面有 ROCKWELL OPC RSLinx Classic 服务器软件。
所以,最近我用 C# 编写了一个 .NET 软件,使用 OPC .NET API 读取 Microlinks PC 上的 ROCKWELL OPC 服务器并将数据同步回我们的 MYSQL 位于我们 WINDOWS R2 服务器 PC
上的数据库
自从打开 .net 软件后,现场工程师在开发新 PLC 脚本和故障查找方面经历了巨大的缓慢。
有些报告甚至延迟 10 秒。
因此,我们不得不转而使用 .NET 软件来同步数据,以便工程师能够顺利地快速完成工作。
所以我正在寻找一些关于我应该寻找的地方或内容的建议,任何可以阅读此类问题的资源等。由于 PLC 和网络超出了我的理解范围,我只是 .NET 程序员.
这是我们网络的结构:
我在本地 PC 上使用 Rockwell RSLinx 时遇到了很多麻烦,试图找到直接插入以太网端口的 PLC 的 IP 地址。使用 "Autobrowse" 选项,它完全锁定了我的 PC,试图扫描目标的端口和 IP 地址。
这可能只是罗克韦尔软件优化不佳导致的问题。您也可能正在交换大量数据,而您的服务器 PC 正在努力跟上。
我会联系 Rockwell/Allen Bradley 支持寻求帮助。他们可能需要一些现金来帮助您。
我不确定您使用的是哪种类型的罗克韦尔 PLC。我最熟悉 ControlLogix 平台,所以我来谈谈它。
controllogix PLC 中的以太网卡以 100Mb/s 的速度连接,但该卡实际上无法连续处理 100Mb/s。一张 1756-ENBt 卡每秒可以处理大约 5000 个数据包,EN2T 大约是这个的两倍。 rockwell 文档中有公式解释了如何计算每秒的数据包,但是当您拥有 运行 系统时,另一种选择是连接 RS Logix 附带的 'Logix5000 task monitor' 并验证 CPU 用法以太网卡 我认为罗克韦尔建议您将其保持在 60% 以下。如果您请求的数据包过多,那么 CPU 将无法跟上
PLC 本身可能缺乏通信。 Controllogix 有一个 "overhead time slice" 设置,它是 PLC 花费在服务通信任务上的时间百分比,而不是 运行 它自己的逻辑。增加这个百分比可以稍微改善通讯。
听起来你的程序给 PLC 带来了很大的负担。如果您放慢您的应用程序以使其不再那么快地提取那么多数据,它会变得更好吗?
在不降低更新速率的情况下减少检索数据块所需的数据包数量的一种简单方法是将其全部放在一个数组中。然后 RSLinx 将能够优化请求,而不是拉取单个标签
您几乎肯定过度轮询 PLC。尝试越来越少地轮询,直到找到一个不会减慢网络速度的值。例如,如果您现在每 100 毫秒请求一次数据,请每秒更改一次。然后每分钟一次。然后每 15 分钟一次。在每一步检查编程终端的通信速度。
我在一个完整的生产环境中工作,我们的生产工厂周围有一系列 PLC,这些 PLC 中的每一个都通过 'DataHighway +' 网络回传到我们 LAN 网络上称为 MicroLinks 的特殊 PC个人电脑。这上面有 ROCKWELL OPC RSLinx Classic 服务器软件。
所以,最近我用 C# 编写了一个 .NET 软件,使用 OPC .NET API 读取 Microlinks PC 上的 ROCKWELL OPC 服务器并将数据同步回我们的 MYSQL 位于我们 WINDOWS R2 服务器 PC
上的数据库自从打开 .net 软件后,现场工程师在开发新 PLC 脚本和故障查找方面经历了巨大的缓慢。
有些报告甚至延迟 10 秒。
因此,我们不得不转而使用 .NET 软件来同步数据,以便工程师能够顺利地快速完成工作。
所以我正在寻找一些关于我应该寻找的地方或内容的建议,任何可以阅读此类问题的资源等。由于 PLC 和网络超出了我的理解范围,我只是 .NET 程序员.
这是我们网络的结构:
我在本地 PC 上使用 Rockwell RSLinx 时遇到了很多麻烦,试图找到直接插入以太网端口的 PLC 的 IP 地址。使用 "Autobrowse" 选项,它完全锁定了我的 PC,试图扫描目标的端口和 IP 地址。
这可能只是罗克韦尔软件优化不佳导致的问题。您也可能正在交换大量数据,而您的服务器 PC 正在努力跟上。
我会联系 Rockwell/Allen Bradley 支持寻求帮助。他们可能需要一些现金来帮助您。
我不确定您使用的是哪种类型的罗克韦尔 PLC。我最熟悉 ControlLogix 平台,所以我来谈谈它。
controllogix PLC 中的以太网卡以 100Mb/s 的速度连接,但该卡实际上无法连续处理 100Mb/s。一张 1756-ENBt 卡每秒可以处理大约 5000 个数据包,EN2T 大约是这个的两倍。 rockwell 文档中有公式解释了如何计算每秒的数据包,但是当您拥有 运行 系统时,另一种选择是连接 RS Logix 附带的 'Logix5000 task monitor' 并验证 CPU 用法以太网卡 我认为罗克韦尔建议您将其保持在 60% 以下。如果您请求的数据包过多,那么 CPU 将无法跟上
PLC 本身可能缺乏通信。 Controllogix 有一个 "overhead time slice" 设置,它是 PLC 花费在服务通信任务上的时间百分比,而不是 运行 它自己的逻辑。增加这个百分比可以稍微改善通讯。
听起来你的程序给 PLC 带来了很大的负担。如果您放慢您的应用程序以使其不再那么快地提取那么多数据,它会变得更好吗?
在不降低更新速率的情况下减少检索数据块所需的数据包数量的一种简单方法是将其全部放在一个数组中。然后 RSLinx 将能够优化请求,而不是拉取单个标签
您几乎肯定过度轮询 PLC。尝试越来越少地轮询,直到找到一个不会减慢网络速度的值。例如,如果您现在每 100 毫秒请求一次数据,请每秒更改一次。然后每分钟一次。然后每 15 分钟一次。在每一步检查编程终端的通信速度。