产品描述
6AV2107-0EB00-0BB0 6AV2107-0EB00-0BB0 6AV2107-0EB00-0BB0
SIMATIC WinCC 服务器 针对运行时专业版 针对 WinCC 的选项(TIA 博途) 运行软件,单独许可证 无软件,无文档 U 盘上的许可证密钥, A 级 ******************************* 内容:1x USB
说明:使用"满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。
执行该指令时,将对*的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。
也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。
通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。
可按如下方式声明此指令:
WHILE <条件>
DO <语句>;
END_WHILE;
图12 WHILE语句
参数
下表列出了该指令的参数:
参数 | 数据类型 | 存储区 | 说明 |
---|---|---|---|
<条件> | BOOL | I、Q、M、D、L | 表达式,每次执行循环之前都需要进行求值。 |
<语句> | - | 在满足条件时,要执行的语句。如果不满足条件,则程序将从 END_WHILE 后继续执行。 |
示例
图13 WHILE示例
下表展示了循环初始和循环结束时变量值的变化
初始 | 循环结束 | |
Tag_2 | 5 | |
Tag_1 | 0 | 5 |
说明:使用"不满足条件时执行"指令可以重复执行程序循环,直至不满足执行条件为止。该条件是结果为布尔值(True 或 False)的表达式。可以将逻辑表达式或比较表达式作为条件。
执行该指令时,将对*的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件。
即使满足终止条件,至少也会执行一次循环内的语句。
也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。
通过指令"复查循环条件"(Continue),可以终止当前连续运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。
可按如下方式声明此指令:
REPEAT <语句>;
UNTIL <条件>
END_REPEAT;
图14 REPEAT语句
参数
下表列出了该指令的参数:
参数 | 数据类型 | 存储区 | 说明 |
---|---|---|---|
<语句> | - | 在设定条件的值为 False 时执行的指令。即使满足终止条件,此指令也执行一次。 | |
<条件> | BOOL | I、Q、M、D、L | 表达式,每次执行循环之后都需要进行求值。如果表达式的值为 False,则将再次执行程序循环。如果表达式的值为 True,则程序循环将从 END_REPEAT 后继续执行。 |
示例
图15 REPEAT示例
下表展示了循环初始和循环结束时变量值的变化
初始 | 循环结束 | |
Tag_2 | 5 | |
Tag_1 | 0 | 6 |
说明:使用"复查循环条件"指令,可以结束 FOR、WHILE 或 REPEAT 循环的当前程序运行。
执行该指令后,将再次计算继续执行程序循环的条件。该指令将影响其所在的程序循环。
图16 CONTINUE用在FOR循环
图17 CONTINUE用在WHILE循环
图18 CONTINUE用在REPEAT循环
示例
图19 CONTINUE示例
下表展示了计算结果:
变量 | 计算结果 |
"DB10".Test[0] | - |
"DB10".Test[1] | - |
"DB10".Test[2] | - |
"DB10".Test[3] | - |
"DB10".Test[4] | - |
"DB10".Test[5] | 1 |
"DB10".Test[6] | 1 |
"DB10".Test[7] | 1 |
如果满足条件 i < 5,则不执行后续值分配 ("DB10".Test[i] := 1)。运行变量 (i) 以增量"1"递增,然后检查其当前值是否在设定的循环取值范围内。如果执行变量在循环取值范围内,则将再次计算 IF 的条件。
如果不满足条件 i < 5,则将执行后续值分配 ("DB10".Test[i] := 1) 并开始一个新循环。在这种情况下,执行变量也会以增量"1"进行递增并接受检查。
说明:使用"立即退出循环"指令,可以随时取消 FOR、WHILE 或 REPEAT 循环的执行,而*考虑是否满足条件,并在循环结束(END_FOR、END_WHILE 或 END_REPEAT)后继续执行程序。
该指令将影响其所在的程序循环。
图20 EXIT语句
示例
图21 EXIT示例
下表展示了计算结果:
变量 | 计算结果 |
"DB10".Test[0] | 1 |
"DB10".Test[1] | 1 |
"DB10".Test[2] | 1 |
"DB10".Test[3] | 1 |
"DB10".Test[4] | 1 |
"DB10".Test[5] | 1 |
"DB10".Test[6] | - |
"DB10".Test[7] | - |
如果满足条件 i > 5,则将取消循环执行。程序将从 END_FOR 后继续执行。
如果不满足条件 i <= 5,则将执行后续值分配 ("DB10".Test[i] :=1) 并开始一个新循环。将运行变量 (i) 以 1 进行递增,并进行检查该变量的当前值是否在程序中设定的循环取值范围之内。如果执行变量 (i) 在循环取值范围内,则将再次计算 IF 的条件。
说明:使用"跳转"指令,可以从标注为跳转标签的*点开始继续执行程序。
跳转标签和"跳转"指令必须在同一个块中。在一个块中,跳转标签的名称只能*一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。
注意:
LAD/FBD语言内的SCL段,不能使用GOTO指令。
跳转标签遵循以下语法规则:
字母(a 至 z,A 至 Z)
字母和数字组合;请必须字母为开始
可按如下方式声明此指令:
GOTO <跳转标签>;
...
<跳转标签>: <语句>
示例
图22 GOTO示例
下表展示了每个操作数数值对目标变量的变化影响:
操作数 | 值 | |||||||
Tag_Value | 1 | 2 | 3 | 其他 | ||||
初始值 | 结束值 | 初始值 | 结束值 | 初始值 | 结束值 | 初始值 | 结束值 | |
Tag_1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Tag_2 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
Tag_3 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
Tag_4 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
根据"Tag_Value"操作数的值,程序将从对应的跳转标签标识点开始继续执行。例如,如果"Tag_Value"操作数的值为 2,则程序将从跳转标签"MyLABEL2"开始继续执行。在这种情况下,将跳过"MyLABEL1"跳转标签所标识的程序行。
说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。
如果该指令出现在块结尾处,则可以跳过。
图23 RETURN语句
示例
图24 RETURN示例
如果"Tag_Error"操作数的信号状态不为 0,则将终止当前处理块中的程序执行。
产品推荐