CPU1500之循环的定义
在一个循环中,包含以下几部分内容:
● 自动更新输出的过程映像分区 0 (PIPI 0)
● 自动更新输入的过程映像分区 0 (PIPI 0)
● 循环程序的执行
在该循环中,过程映像分区 0 将自动更新。通过“自动更新” (Automatic update) 设置(默认)组态 I/O 模块时,应将 I/O 地址分配给这些过程映像分区 (PIPI 0/PIPQ 0) 。
下图举例说明一个循环期间发生的各个阶段。在下例中,用户组态了最小循环时间。更新过程映像分区和处理循环程序在组态的最小循环时间结束之前完成。因此,CPU 会等待组态的最小循环时间到期,然后再开始下一次程序循环。
① 操作系统启动循环时间测量的循环控制点。
② CPU 将过程映象输出的状态写入输出模块中。
③ CPU 读取输入模块的输入状态,并将输入数据写入过程映像输入中。
④ CPU 执行用户程序,并执行程序中的指令。
⑤ 等待阶段,直至组态的最小循环时间结束
循环控制点
达到循环控制点后,CPU 已完成循环程序,不再执行 OB。此时,所有用户数据保持一致。要求没有任何修改用户数据的通信(比如 HMI 通信或 PUT/GET 通信)处于活动状态。
循环控制点标记了:
● 循环及其循环时间统计信息结束
● 下一循环及其循环时间统计信息开始
● 重新开始监测组态的最大循环时间
(超时计数器复位)
循环控制点的到达取决于以下哪一事件是最后发生的:
● 结束上一个程序循环 OB
● 最小循环时间到期(若已组态)
已到达循环控制点后,CPU 会执行以下步骤:
1. 将过程映像输出写入输出模块
2. 将输入模块的输入状态读取到过程映像输入中
3. 执行第一个程序循环 OB
循环时间的定义
循环时间是 CPU 执行以下操作需要的时间:
● 更新过程映像输入/ 输出
● 执行循环程序
● 中断此循环的所有程序段和系统活动
● 等待最小循环时间(如果已进行参数设置,且时间长于程序执行时间)
循环时间不同的原因
下图举例说明了这两种不同的循环时间 Tcyc1和 Tcyc2。
本例中,由于循环程序被循环中断 OB(例如:OB 30)中断,因此循环时间 Tcyc2大于 T cyc1。之后,运动控制功能和通信将再次中断该循环中断 OB。
最小循环时间
在 STEP 7 中,可设置 CPU 的最小循环时间。非冗余 CPU 的默认最小循环时间设置为 1 毫秒。在以下情况下,建议增大该值:
● 降低循环时间的波动范围。
● 使用剩余的计算时间执行通信任务。CPU 随后会在最小循环时间到期之前处理这些通信任务。
使剩余计算时间可用于通信任务的优点如下:
– 延长最小循环时间,避免过程映像不必要地频繁更新,从而降低背板总线的负载。
– 延长最小循环时间可提高通信性能。
最大循环时间
最大循环时间是循环程序运行时间的可组态上限。最大循环时间任务将监测相应进程需要的响应时间。
非冗余 CPU 的最大循环时间默认设为 150 ms。为 CPU 分配参数时,可在 1 ms 到 6000 ms 范围内设置该值。如果当前处理的循环时间长于最大循环时间,则会调用时间错误 OB (OB 80)。通过 OB 80 中的用户程序指定 CPU 对时间错误的响应。
首次超出循环时间(不使用 OB 80)⇒ STOP
首次超出循环时间(使用 OB 80)⇒ RUN
第二次超出循环时间(使用 OB 80)⇒ STOP
要直接在 STEP 7 中查看循环时间的统计信息,请按以下步骤操作:
1. 使用 STEP 7 建立与 CPU 的在线连接。
2. 选择“在线工具”(Online tools) 任务卡。
结果:循环时间统计信息图显示在循环时间部分。
下图显示了从 STEP 7 直接读取的循环时间统计信息。在本示例中,循环时间在 7 ms 和 12 ms 间波动。当前的循环时间为 10 ms 。此时,可设置的最长循环时间为 40 ms。
-----------------------------END----------------------------------
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !