CASE:创建多路分支 (S7-300, S7-400) 说明 使用“创建多路分支”指令,可以根据表达式的值执行多个指令序列中的一个。 表达式的值必须为整数或位字符串。执行 CASE 指令时,会将表达式(变量)的值与多个常 数的值进行比较。如果表达式(变量)的值等于某个常数的值,则满足条件且将执行紧跟在 该常数后编写的指令。常数可以为不同值:
下表列出了该指令的参数: 参数 数据类型 存储区 说明位字符串、 整数 I、Q、M、D、L 与设定的常数值进行比较的值。 <常数> 局部常量和 全局常量可 进行编程。 位字符串 - 若为位字符串,则常数可以为以下值: • 二进制数(例如,2#10) • 八进制数(例如,8#77) • 十六进制数(例如,16#AD) • 未定型的常数(例如,1000) 如果为典型字节变量,则字节常数(例如, BYTE#2)必须进行编程。 如果为典型 WORD 变量,则字节或 WORD 常 数(例如,BYTE#2、WORD# 2)必须进行编 程。 如果为典型 DWord 变量,则字节、WORD 或 DWord 常数(例如,BYTE#2、WORD#2、 DWORD#2)必须进行编程。 如果为典型 LWord 变量,则字节、WORD、 DWord 或 LWord 常数(例如,BYTE#2、 WORD#2、DWORD#2、LWORD#2)必须进 行编程。 整数 若为整数,则常数可以为以下值: • 整数(例如,5) • 整数范围(例如,15 到 20) • 由整数和范围组成的枚举(例如,10、 11、15 到 20)- - 当表达式的值等于某个常数值时,将执行的 各种指令。如果不满足条件,则执行 ELSE 后 编写的指令。如果两个值不相等,则执行这 些指令。 有关有效数据类型的更多信息,请参见“另请参见”。 如果表达式的值等于第一个常数(<常数 1>)的值,则将执行紧跟在该常数后编写的指令(< 指令 1>)。程序将从 END_CASE 后继续执行。FOR:在计数循环中执行 (S7-300, S7-400) 说明 使用“在计数循环中执行”指令,重复执行程序循环,直至运行变量不在指定的取值范围内。 也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。 通过指令“复查循环条件”(CONTINUE),可以终止当前连续运行的程序循环。通过指令“立 即退出循环”(EXIT) 终止整个循环的执行。有关本主题的更多信息,请参见“另请参见”。 说明 有关运行次数和运行变量的信息 程序运行时无法更改运行次数。 出于性能原因,应在块接口的“Temp”部分中声明运行变量。此外,程序运行时不得更改运行 变量。否则,该指令可能根据实施情况返回未定义结果。
下表列出了该指令的参数: 参数 数据类型 存储区 说明 <执行变量> INT、DINT I、Q、M、D、L 执行循环时会计算其值的操作数。执行变量 的数据类型将确定其它参数的数据类型。 <起始值> INT、DINT I、Q、M、D、L 表达式,在执行变量首次执行循环时,将分 配表达式的值。 <结束值> INT、DINT I、Q、M、D、L 表达式,在运行程序Zui后一次循环时会定义 表达式的值。在每个循环后都会检查运行变 量的值: • 未达到结束值: 执行符合 DO 的指令 • 达到结束值: Zui后执行一次 FOR 循环 • 超出结束值: 完成 FOR 循环 执行该指令期间,不允许更改结束值。INT、DINT I、Q、M、D、L 执行变量在每次循环后都会递增(正增量) 或递减(负增量)其值的表达式。可以选择 指定增量的大小。如果未指定增量,则在每 次循环后执行变量的值加 1。 执行该指令期间,不允许更改增量。 <指令> - 只有运行变量的值在取值范围内,每次循环 都就会执行的指令。取值范围由起始值和结 束值定义。 有关有效数据类型的更多信息,请参见“另请参见”。WHILE:满足条件时执行 (S7-300, S7-400) 描述 使用“满足条件时执行”指令可以重复执行程序循环,直至不满足执行条件为止。该条件是 结果为布尔值(TRUE 或 FALSE)的表达式。可以将逻辑表达式或比较表达式作为条件。 执行该指令时,将对指定的表达式进行运算。如果表达式的值为 TRUE,则表示满足该条件; 如果其值为 FALSE,则表示不满足该条件。 也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。 通过指令“复查循环条件”(CONTINUE),可以终止当前连续运行的程序循环。通过指令“立 即退出循环”(EXIT) 终止整个循环的执行。有关本主题的更多信息,请参见“另请参见”。下表列出了该指令的参数: 参数 数据类型 存储区 描述 <条件> BOOL I、Q、M、D、L 表达式,每次执行循环之前都需要进行求值。 <指令> - 在满足条件时,要执行的指令。如果不满足 条件,则程序将从 END_WHILE 后继续执行。 有关有效数据类型的更多信息,请参见“另请参见”。REPEAT:不满足条件时执行 (S7-300, S7-400) 说明 使用“不满足条件时执行”指令可以重复执行程序循环,直至不满足执行条件为止。该条件 是结果为布尔值(TRUE 或 FALSE)的表达式。可以将逻辑表达式或比较表达式作为条件。 执行该指令时,将对指定的表达式进行运算。如果表达式的值为 TRUE,则表示满足该条件; 如果其值为 FALSE,则表示不满足该条件。即使满足终止条件,此指令也只执行一次。 也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。 通过指令“复查循环条件”(CONTINUE),可以终止当前连续运行的程序循环。通过指令“立 即退出循环”(EXIT) 终止整个循环的执行。有关本主题的更多信息,请参见“另请参见”。 可按如下方式声明此指令: REPEAT; UNTILEND_REPEAT; 参数 下表列出了该指令的参数: 参数 数据类型 存储区 说明 <指令> - 在设定条件的值为 FALSE 时执行的指令。即 使满足终止条件,此指令也只执行一次。 <条件> BOOL I、Q、M、D、L 表达式,每次执行循环之后都需要进行求 值。如果表达式的值为 FALSE,则将再次执 行程序循环。如果表达式的值为 TRUE,则程 序循环将从 END_REPEAT 后继续执行。 有关有效数据类型的更多信息,请参见“另请参见”。CONTINUE:复查循环条件 (S7-300, S7-400) 说明 使用“复查循环条件”指令,可以结束 FOR、WHILE 或 REPEAT 循环的当前程序运行。 执行该指令后,将再次计算继续执行程序循环的条件。该指令将影响其所在的程序循环。 示例 以下示例说明了该指令的工作原理:有关有效数据类型的更多信息,请参见“另请参见”。 如果满足条件 i < 5,则不执行后续值分配 ("DB10".Test[i] := 1)。运行变量 (i) 以增量“2”递增, 然后检查其当前值是否在设定的取值范围内。如果执行变量在取值范围内,则将再次计算 IF 的条件。 如果不满足条件 i < 5,则将执行后续值分配 ("DB10".Test[i] := 1) 并开始一个新循环。在这 种情况下,执行变量也会以增量“2”进行递增并接受检查。EXIT:立即退出循环 (S7-300, S7-400) 说明 使用“立即退出循环”指令,可以随时取消 FOR、WHILE 或 REPEAT 循环的执行,而无需考 虑是否满足条件。在循环结束(END_FOR、END_WHILE 或 END_REPEAT)后继续执行程序。 该指令将影响其所在的程序循环。有关有效数据类型的更多信息,请参见“另请参见”。 如果满足条件 i < 5,则将取消循环执行。程序将从 END_FOR 后继续执行。 如果不满足条件 i < 5,则将执行后续值分配 ("DB10".Test[i] :=1) 并开始一个新循环。将运行 变量 (i) 以 2 进行递减,并进行检查该变量的当前值是否在程序中设定的取值范围之内。如 果执行变量 (i) 在取值范围内,则将再次计算 IF 的条件。GOTO:跳转 (S7-300, S7-400) 说明 使用“跳转”指令,可以从标注为跳转标签的指定点开始继续执行程序。 跳转标签和“跳转”指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。 每个跳转标签可以是多个跳转指令的目标。 不允许从“外部”跳转到程序循环内,但允许从循环内跳转到“外部”。 遵守跳转标签的以下语法规则: • 字母(a 至 z,A 至 Z) • 字母和数字组合;请检查排列顺序是否正确,如首先是字母,然后数字字母(a - z,A - Z, 0 - 9) • 不能使用特殊字符或反向排序字母与数字组合,如首先是数字,然后是字母(0-9,a - z, A - Z) 可按如下方式声明此指令:根据“Tag_Value”操作数的值,程序将从对应的跳转标签标识点开始继续执行。例如,如果 “Tag_Value”操作数的值为 2,则程序将从跳转标签“MyLABEL2”开始继续执行。在这种情况 下,将跳过“MyLABEL1”跳转标签所标识的程序行。