发布时间:2019-08-24 来源:众智博远
在 RUN 模式下处理扫描周期
在每个扫描周期中,CPU 都会写入输出、读取输入、执行用户程序、更新通信模块以及响应用户中断事件和通信请求。 在扫描期间会定期处理通信请求。
以上操作(用户中断事件除外)按先后顺序定期进行处理。 对于已启用的用户中断事件,将根据优先级按其发生顺序进行处理。 对于中断事件,如果适用的话,CPU 将读取输入、执行 OB,然后使用关联的过程映像分区 (PIP) 写入输出。
系统要保证扫描周期在一定的时间段内(即大循环时间)完成;否则将生成时间错误事件。
在每个扫描周期的开始,从过程映像重新获取数字量及模拟量输出的当前值,然后将其写入到 CPU、SB 和 SM 模块上组态为自动 I/O 更新(默认组态)的物理输出。 通过指令访问物理输出时,输出过程映像和物理输出本身都将被更新。
随后在该扫描周期中,将读取 CPU、SB 和 SM 模块上组态为自动 I/O 更新(默认组态)的数字量及模拟量输入的当前值,然后将这些值写入过程映像。 通过指令访问物理输入时,指令将访问物理输入的值,但输入过程映像不会更新。
读取输入后,系统将从条指令开始执行用户程序,一直执行到后一条指令。 其中包括所有的程序循环 OB 及其所有关联的 FC 和 FB。 程序循环 OB 根据 OB 编号依次执行,OB 编号小的先执行。
在扫描期间会定期处理通信请求,这可能会中断用户程序的执行。
自诊断检查包括定期检查系统和检查 I/O 模块的状态。
中断可能发生在扫描周期的任何阶段,并且由事件驱动。 事件发生时,CPU 将中断扫描循环,并调用被组态用于处理该事件的 OB。 OB 处理完该事件后,CPU 从中断点继续执行用户程序。