22-4. PLC的程序控制指令(循环指令)
一、 循环指令的基本概念
- 作用:
主要用于优化程序结构。当程序中需要重复执行某一段相同逻辑(如批量数据处理、计算、重复动作控制)时,使用循环指令可以避免代码的冗长重复,使程序更简洁、高效。
- 指令构成:
- FOR:循环开始指令,用于定义一个循环体的起点,并设置循环参数。
- NEXT:循环结束指令,用于标记循环体的终点。它没有操作数。
两者必须成对使用,FOR和NEXT之间的所有程序构成了一个循环体。
二、 指令格式与参数说明
如图所示,循环指令有两种表示形式:梯形图(LAD)和语句表(STL)。
1. 梯形图(LAD)形式:
- FOR指令:以一个“指令盒”形式出现。
- 输入端:
- EN:使能输入端。当此端信号为“1”时,启动循环。
- INDX:当前循环计数器。用于存储当前是第几次循环。必须是整数型(INT)变量(如VW100)。
- INIT:循环初值。通常设为1。
- FINAL:循环终值。即希望循环执行的总次数。
- 输入端:
- NEXT指令:通常用一个简单的矩形框表示。
2. 语句表(STL)形式:
对应梯形图,其基本结构为:
LD I0.0 // 使能条件 FOR VW100, 1, 100 // FOR 循环计数器, 初值, 终值 ... (循环体内的指令) ... NEXT // 循环结束
3. 核心参数详解:
- INDX (INDEX):关键变量。PLC在每次循环体执行完毕后,会自动将INDX的值加1,然后与FINAL(终值)比较。
- 若INDX<=FINAL:返回循环体开始处,继续执行下一次循环。
- 若INDX>FINAL:跳出循环,执行NEXT之后的程序。
- 初值INIT与终值FINAL:决定了循环次数。有效循环次数 = FINAL - INIT + 1。例如INIT=1, FINAL=100,则循环体将正好执行100次。
三、 关键特性与使用要点
如图是一个非常重要的嵌套循环示例,清晰地展示了实际用法。
- 工作流程:
- 当I1.0接通时,外层循环A开始执行。
- 在循环A的每一次执行过程中,如果I1.1接通,则会启动一个完整的内层循环B。
- 程序执行顺序为:A循环第1次 -> B循环执行2次 -> A循环第2次 -> B循环再执行2次 -> ... 直到A循环满100次。
- 嵌套循环:
- 如示例所示,循环内可以再包含循环,这称为嵌套。
- 重要规则:嵌套必须“完全包含”,即内层循环必须完全在外层循环的循环体内部,绝对不允许交叉。图中网络结构清晰地展示了这种层次关系。
- 通常PLC对嵌套层数有限制(例如最多8层)。
- 必须注意的规则:
- 成对使用:每一个FOR都必须有一个对应的NEXT闭合。
- 自动复位:每当FOR指令的EN端从“0”变为“1”(重新使能)时,PLC会自动将INDX复位为INIT(初值),开始新一轮计数。
- 循环条件:若INIT(初值)大于FINAL(终值),则循环体一次也不会执行。
- 避免在循环体内修改INDX:在循环体中人为修改计数器INDX的值可能导致循环失控,这是编程时需要特别注意的。
四、 简单总结
可以将PLC的FOR-NEXT循环理解为让PLC“重复干活”的指令。
- FOR是喊“开始重复!从第[INIT]遍做到第[FINAL]遍,用[INDX]这个本子记当前遍数”。
- 中间的程序是“要重复干的活”。
- NEXT是喊“这一遍干完了!翻一页(INDX+1),如果没超过终值就回去接着干下一遍”。
应用场景:适用于任何需要重复操作的场景,例如计算一组数据的累加和、控制一台设备重复动作10次、批量初始化一个数据块等。