想学好PLC必须掌握的循环扫描工作过程!
1 CPU自检阶段
CPU自检阶段包括CPU自诊断测试和复位监视定时器。
在自诊断测试阶段,CPU检测PLC各模块的状态,若出现异常立即进行诊断和处理,同时给出故障信号,点亮CPU面板上的LED指示灯。当出现致命错误时,CPU被强制为STOP方式,停止执行程序。CPU的自诊断测试将有助于及时发现或提前预报系统的故障,提高系统的可靠性。
监视定时器又称看门狗定时器WDT,它是CPU内部的一个硬件时钟,是为了监视PLC的每次扫描时间而设置的。CPU运行前设定好规定的扫描时间,每个扫描周期都要监视扫描时间是否超过规定值。这样可以避免由于PLC在执行程序的过程中进入死循环,或者由于PLC执行非预定的程序造成系统故障,从而导致系统瘫痪。如果程序运行正常,则在每次扫描周期的内部处理阶段对WDT进行复位(清零)。如果程序运行失常进入死循环,则WDT得不到按时清零而触发超时溢出,CPU将给出报警信号或停止工作。采用WDT技术也是提高系统可靠性的一个有效措施。
2 通信处理阶段
在通信处理阶段,CPU检查有无通信任务,如果有则调用相应进程,完成与其他设备(例如,带微处理器的智能模块、远程I/O接口、编程器、HMI装置等)的通信处理,并对通信数据做相应处理。
3 读取输入
在读取输入阶段,PLC扫描所有输入端子,并将各输入端的通/断状态存入相对应的输入映像寄存器中,刷新输入映像寄存器的值。此后,输入映像寄存器与外界隔离,无论外设输入情况如何变化,输入映像寄存器的内容也不会改变。输入端状态的变化只能在下一个循环扫描周期的读取输入阶段才被拾取。这样可以保证在一个循环扫描周期内使用相同的输入信号状态。因此,要注意输入信号的宽度要大于一个扫描周期,否则很可能造成信号的丢失。
4 执行程序阶段
可编程控制器的用户程序由若干条指令组成,指令在存储器中按顺序排列。当PLC处于运行模式执行程序时,CPU对用户程序按顺序进行扫描。如果程序用梯形图表示,则按先上后下、从左至右的顺序逐条执行程序指令。每扫描到一条指令,所需要的输入信号的状态均从输入映像寄存器中读取,而不是直接使用现场输入端子的通/断状态。在执行用户程序过程中,根据指令做相应的运算或处理,每一次运算的结果不是直接送到输出端子立即驱动外部负载,而是将结果先写入输出映像寄存器中。输出映像寄存器中的值可以被后面的读指令所使用。
5 刷新输出阶段
执行完用户程序后,进入刷新输出阶段。可编程控制器将输出映像寄存器中的通/断状态送到输出锁存器中,通过输出端子驱动用户输出设备或负载,实现控制功能。输出锁存器的值一直保持到下次刷新输出。
在刷新输出阶段结束后,CPU进入下一个循环扫描周期。
热门PLC案例|如何用PLC控制小车五位自动循环往返运行?
一、任务目标
该任务是定时器指令相关应用案例。西门子S7-1200 PLC定时器种类比较多,在实际的应用中,读者可根据实际的应用场景选择对应的定时器指令。本任务要求读者掌握以下几个内容。
1.定时器指令的分类
2.定时器各管脚的含义
3.定时器配合其他指令的使用方法
二、任务描述
如图所示(2-2-1)用三相异步电机拖动一辆小车在A、B、C、D、E五点之间自动循环往返运行,小车五位行程控制的示意图如图所示。小车初始在A点,按下启动按钮,小车依次前进到B、C、D、E点,并分别停止5S返回到A点停止。
图2-2-1小车延时自动往返示意图
三、相关知识
本案例需要使用的是基本位逻辑和定时器指令。位逻辑指令在其他的章节中已有介绍,此处为读者介绍定时器指令的相关知识。
1、定时器指令
西门子S7-1200PLC有4种常用的定时器:
①TP:脉冲定时器,可生成具有预设宽度时间的脉冲。
②TON:接通延时定时器,输出Q在预设的延时后设置为ON。
③TOF:关断延时定时器,输出Q在预设的言时后重置为OFF。
④TONR:保持型接通延时定时器,输出Q在预设的延时后设置为ON,在使用R输入重置经过的时间之前,会一直累加跨越多个定时时段经过的时间。
2、如图2-2-2所示,在指令窗口中选择“定时器操作中”的TON指令,并将其拖入程序段中(见图2-2-3),这时会跳出一个“调用数据块”窗口,选择自动编号后,会直接生成DB1数据块,也可以选择手动编号,根据用户需要生成DB数据块。
图2-2-2 定时器指令
图2-2-3 TON指令调用数据块
在项目树的“程序块”中可以看到自动生成的IEC_Timer_0_DB[DB1]数据块(见图2-2-4)双击进入,即可读取DB1定时器的各个数据,变量的数据类型为IEC_Timer,见表2-2-5。
图2-2-4 DB1数据块位置
TON指令就是接通延迟定时器,输出Q在预设的延时后设置为ON。TON指令形式如图2-2-6。TON的参数及数据类型见表2-2-7。在2-2-7表中,R参数一般用于TONR等指令。参数IN从0跳为1时将启动定时器TON。
表2-2-5 DB1数据块IEC_Timer_0_DB的内容
图2-2-6 TON指令形式
表2-2-7 TON的参数及数据类型
参数
数据类型
说明
IN
Bool
启用定时器输入
R
Bool
将TONR经过的时间重置为0
PT
Bool
预设的时间值输入
Q
Bool
定时器输出
ET
Time
经过的时间值输出
定时器数据块
DB
指定要使用RT指令复位的定时器
在定时器中PT(预设的时间)和ET(经过的时间)的数据大小以有符号、双精度的32位整数形式表示毫秒时间,见表2-2-8。TIME数据使用T#标识符,以简单时间单元“T#200ms”或者复合时间单元“T#2S_200ms”的形式输入。
表2-2-8 TON的参数及数据类型
数据类型
大小
有效数值范围
TIME
32位存储形式
T#-24d_20h_31m_23s_648ms 到 T#24d_20h_31m_23s_647ms 以 -2,147,483,648 ms 到 +2,147,483,647 ms
TON指令的应用与时序图如图2-2-9和图2-2-10所示。在时序图中PT=5S。
图2-2-9 TON指令的应用
图2-2-10TON指令的时序图
TOF关断延时定时器的指令与TON类似。图2-2-11和图2-2-12为TOF指令的应用和时序图。在时序图中PT=5S。
图2-2-11TOF指令的应用
图2-2-12TOF指令的时序图
TP脉冲定时器指令的应用如图2-2-13,时序图如图2-2-14所示。在时序图中PT=5S。
图2-2-13TP指令的应用
图2-2-14TP指令的时序图
四、任务实施
本任务的实施步骤主要分为PLC接线、IO地址分配以及程序设计思路:
1、PLC接线如图2-2-14
图2-2-14PLC接线图
2、IO地址分配
输入地址
说明
输出地址
说明
I0.0
启动
Q0.0
小车前进
I0.1
A点位置
Q0.1
小车后退
I0.2
B点位置
I0.3
C点位置
I0.4
D点位置
I0.5
E点位置
3、程序设计思路
任务中,小车需要到达5个工位,首先判断小车前进的条件是:按下了启动按钮或者从B、C、D、E点任意一点返回到A点后。
小车停止前进的条件是:小车到达了B、C、D、E点或者触碰到了E点位置。
判断小车后退的条件是:B、C、D、E点位置到达了,然后延时时间到了则小车后退。
4、程序设计
五、经验与总结
1、在这个案例中主要使用的是常开、常闭、线圈、定时器指令。案例中有5个工位,当按下启动按钮后,小车启动。到达B、C、D、E任何一点都需要停止小车前进(使用M0.0标志位断开小车前进),然后再延时,延时时间到达后后退。
2、小车后退到达A点位置后,小车又继续前进。假定前一次到达的位置是B点,则这一次需要到达的是C点位置。到达C点位置就会触碰到B点的限位开关,故使用标志位(M0.1)断开小车在B点前进功能。
(技成培训网原创,作者:郭彪,未经授权不得转载,违者必究)
特别推荐:
① 手机版电工专用计算器,1分钟快速搞定复杂的电工计算
② 13种电气计算EXCEL表格,自动生成!从此计算不求人(超实用)
③ 6款免安装的超实用电气计算软件,值得下载
相关问答
plc如何实现不同程序循环?
要用PLC实现程序的无限循环,我们可以使用时间顺序循环的指令,指令如下:1、用时间继电器T0驱动T1。2、再由T1驱动T2。3、T2驱动T3。4、直到最后一个,用TN...
plc往复循环程序怎么写?
PLC往复循环程序的编写方法如下:PLC往复循环程序可以通过使用计数器和跳转指令来实现。往复循环程序的目的是使PLC在一定条件下反复执行一段程序。为了实现这...
plc怎么循环三次程序?
plc梯形图程序可以实现。plc梯形图程序是顺序循环扫描的读取方式,周期按照你的程序的长短。每次扫描时读取各个端口继电器的状态,并将它输出,每个周期输出一...
PLC里面的FOR循环?
循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。在程序运行时,位于FOR~NEXT间的...PL...
plc如何循环执行?
在PLC的程序中,循环执行可以通过使用循环指令来实现。PLC的循环指令通常分为两种:定长循环和条件循环。1.定长循环定长循环指令是由一个计数器和一个定值组...
plc循环停止怎么设计?
一个工作循环需要一个总的开关控制,如用M0.0这样,按下停止按钮时,这个停止信号保持住,等待工作循环最后一步结束,停止信号才让一个工作循环的总开关M0.0断开...
西门子PLC中如何实现自动循环?
在西门子PLC中实现自动循环通常可以使用计时器和定时器来实现。以下是一种常见的方法:1.使用一个计时器(TON)步来设置循环的时间间隔。该计时器的触发可以通...
怎么让plc程序循环3次后停止?
要让PLC程序循环3次后停止,可以在程序中设置一个计数器,每次循环时计数器加1,当计数器达到3时停止循环。可以使用一个循环结构来实现这个功能,例如使用一个fo...
PLC循环指令有几类?
要用PLC实现程序的无限循环,我们可以使用时间顺序循环的指令,指令如下:1、用时间继电器T0驱动T1。2、再由T1驱动T2。3、T2驱动T3。4、直到最后一个,用TN...
plc自动循环失败?
接地问题PLC系统接地要求比较严格,最好有独立的专用接地系统,还要注意与PLC有关的其他设备也要可靠接地。多个电路接地点连接在一起时,会产生意想不到的电流...