一般来说,PLC扫描周期是可重复的可执行任务列表,列表的大小可以变化,任务的性质可以变化,并且周期时间根据性能和配置而变化。
这实际上取决于您使用的PLC。它们的操作略有不同,了解其中的差别很重要。
在大多数PLC中,扫描周期是PLC收集输入、运行PLC程序然后更新输出的周期。
这将花费一些时间,通常以毫秒或微秒来衡量。
西门子PLC的扫描周期众所周知,任何电气面板的控制系统都由以下基本组件组成:
电源模块
CPU模块
输入/输出卡
接口模块..等等
所有这些PLC组件的操作和任务都由CPU模块处理和组织,并且CPU模块肯定具有特定的步骤/程序来控制该系统。
图1:扫描周期
西门子PLC内部CPU模块下面显示了CPU执行扫描周期的过程:
启动CPU从停止模式进入运行模式时执行的第一个操作是STARTUP例程,此例程执行以下任务:
过程映像(I存储器)的输入区域被清除。
输出用最后一个值初始化。
任何中断事件都会在运行模式下排队等待处理。
执行启动组织块(OB100)如图(2)所示,启动后,CPU将执行启动OB(OB100)。
OB100将在OB1启动之前执行一次,因此它是在程序启动之前初始化寄存器和DB、设置控制位、重置过去的警报等的最佳位置。
笔记:
OB100将在PLC启动时运行一次,之后将不会再运行,直到下次启动为止。
图2:PLC扫描周期
读取物理输入的状态该程序并不扫描输入信号模块上的信号状态,而是访问CPU和分布式I/O系统内存中的内存区域。该内存区域称为“过程映像”。
因此,在系统运行主程序之前,它会读取物理输入的状态并将其传输到过程映像(稍后我们会明白为什么CPU不直接从输入模块读取输入状态。)
执行主程序(OB1)现在CPU已准备好执行主程序(梯形逻辑),该主程序通过主OB(OB1)执行。
在主OB中,可以调用功能(FC)和功能块(FB),也可以使用内存标志、计时器和计数器处理系统内存。
笔记:
在扫描周期结束主OB之后,扫描周期会去把更新的输出状态复制到过程映像(输出映像)中,为下一步做准备
更新物理输出的状态在用户程序执行完其中调用的所有块后,循环结束,将过程映像内存(输出映像)写入输出物理模块。
笔记:
您可能会好奇“为什么CPU不直接访问物理I/O模块的状态?”
访问过程映像的主要优点是CPU将在一个程序周期内拥有过程信号的一致映像。
如果在程序执行过程中输入模块的信号状态发生变化,则过程映像中的信号状态将保留,直到下一个周期中过程映像再次更新。
这样,你就可以注意到你的代码将通过更有条理的方法执行。
执行系统中断在扫描周期的任意时刻发生中断,CPU此时就会让操作系统调用相关的OB中断(OB121,OB80,OB86,……),如图(3)所示。
如果相关OB已下载到CPU,则CPU将不会进入停止模式。
笔记:
中断在扫描周期中没有特定的位置,一旦初始化就会执行。
图3
所有这些步骤完成后,操作系统准备让CPU以高达10:15ms/扫描周期的高速重复所有这些过程。