[西门子] 如何查看并合理设置西门子S7-1200/1500 CPU的通讯负载率?

[复制链接]
查看335 | 回复0 | 2024-10-18 08:21:11 | 显示全部楼层 |阅读模式

一、前序


在使用西门子PLC的时候,我们经常忽略一个重要的参数"通信负载"(也是“通讯负荷”)。在PLC与HMI连接 ,PLC与PLC进行 S7 通信等,博途(TIA Portal)软件监控、第三方软件通讯等都需要占用PLC通讯负载。

在进行PLC-Recorder的高速采集测试时发现:如果S7-1200的通讯负载率设置为20%,则没法保证4ms一次的UDP发送,调整到50%后,就正常了

但是,不合理的通讯负载会导致PLC出现各种各样的问题。下面就是通信负载设置不合理导致的问题:

1.打开博图(TIA Portal)的监控程序,看到有PLC报错切换到STOP模式的内容。


2.PLC扫描周期过长,扫描周期过长可能会导致功能异常、?不稳定以及影响程序的正常运行

接下来就让我们了解下PLC通讯负载如何查看,以及如何合理进行设置。

二、PLC配置


1.选择PLC组态  

2.启用WEB服务器

(1)启用上的WEB服务器

(2)启用自动更新 更新间隔时间 1S

3.WEB服务器用户管理设置
(1)勾选如下图

4.下载PLC硬件配置到PLC

三、PLC通讯负载查看


1.查看PLC地址

2.浏览器这里输入https://192.168.0.1


3.选择"诊断"

4.选择"运行系统信息"

3.选择"诊断"

"通信负载"用于设置CPU 总处理能力中可用于通信过程的百分比,如图所示。这部分 CPU 处理能力将始终用于通信,当通信不需要这部分处理能力时,它可用于程序执行。可设置的范围为15~50%,默认值为20%。占用"通信负载"的通信包括:博途软件监控,HMI连接及PLC间的S7 通信等。

CPU通信负载设置


四、设置注意事项


如果通讯负载设置百分比过大,则会延长CPU扫描时间,所以要慎重增加该通信负载百分比。以下是西门子手册里的相关说明:

通过为事件或 OB 分配优先级,可通过通信影响 OB 的可能延迟和中断性能。这也会影响 OB 调用的块。如果为了将周期时间降至最低而采用这种方式将程序段设置为不可中断,则会导致 STEP 7 的在线功能发生延时!

对实际循环时间的影响

“由通信引起的循环负载”(Cycle load due to communication) 参数可用于按某个因子延长循环组织块(如 OB 1)的循环时间,该因子的计算公式如下:

以上公式不考虑异步事件(如硬件中断或循环中断)对循环时间的影响。如果循环时间因通信过程而被延长,则在循环组织块的循环时间内可能会发生更多异步事件。这会进一步地延长周期。延长量取决于所发生的事件数量以及处理这些事件所需的时间。

示例 1 – 无附加异步事件:

如果将“由通信引起的循环负载”(Cycle load due to communication) 参数设置为 50%,则会导致循环组织块的循环时间按因子 2 增加。

示例 2 - 附加异步事件:

纯循环时间为 500 ms 时,假定 CPU 始终有足够的通信作业要处理,则 50% 的通信负载可使实际循环时间高达 1000 ms。

如果在 500 ms 的纯循环时间中,每隔 100 ms 执行一次处理时间为 20 ms 的周期性中断(优先级等级低于 15),则在没有通信负载时该循环时间将使循环延长共 5*20 ms = 100 ms,即实际的循环时间最初为 600 ms。但是,通过在处理的循环中断上延长循环时间,可以执行额外的循环中断,循环中断的处理进一步延长了循环时间。循环内包含两个额外执行的循环中断时,得到的循环时间为 640 ms。

当通信负载为 50% 时,通信将延长循环程序和循环中断的时间,并会基于延长时间执行进一步的循环中断,因此,在纯循环时间为 500 ms 时产生的循环时间为 1680 ms,基于循环中断执行时,为每 100 ms 各增加 20 ms 的纯处理时间。该值的计算方式如下:

  • 通信负载为 50% 时的 OB1 处理时间 (500 ms) = 1000 ms

  • 通信负载为 50% 时的单 OB30 循环中断 (20 ms) = 40 ms

由于每 100 ms 处理一次 40 ms 的 OB30 循环中断(通信负载为 50%),对于 OB1 每 100 ms 的处理时间为 60 ms,但其中 30 ms 用于通信,因此,在 100 ms 的时间片中,只保留 30 ms 用于纯 OB1 处理:

  • 在 100 ms 时间片中,OB1 用于通信部分处理的可用时间 = 60 ms

  • OB1 处理所需的时间片数 = 1000 ms / 60 ms = 16.666

通信负载为 50% 时,处理 OB1 需要 16 个完整的时间片,每个时间片为 100 ms(总时间 1600 ms,其中 16 * 60 ms = 960 ms 用于 OB1 通信处理)。OB1 处理通信时,仍需要其余 40 ms 时间,但新启动的全新时间片以另一 OB30 调用开始(通信共享 = 40 ms)。OB30 总计调用了 17 次 (17 * 40 ms = 680 ms),产生的总循环时间为 1680 ms(包含总 OB1 处理时间)。

此示例说了在用户程序中存在大量异步事件负载的情况下,由于通信负载而导致的循环时间延长值也可能远高于上述公式中指定的值。

提示:

  • 请检查在系统运行期间,更改“由通信引起的循环负载”(Cycle load due to communication) 参数的值所产生的影响。

  • 将周期时间设置为最小值时需考虑通信负载情况,否则会发生时间错误。请仅在 CPU 主要用于通信且用户程序对时间要求不是很严格时,才增加该数值。在所有其它情况下,只应当减小该值。

  • 如果不希望中断 OB 因通信而中断,则必须将这些中断 OB 的优先级设置为高于 15。




延伸小知识:PLC-Recorder专业数据采集与分析软件可以采集字符串变量,和数值变量一样便捷。
 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则