结构化文本ST 编程,西门子PLC 编程语言中叫SCL ,其它任何PLC 控制器编程语言还是叫结构化编程ST。 西门子SCL 语言 第一章IF:条件执行 IF 分支 IF <条件> THEN <指令> END_IF; 如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则程序将从 END_IF 后的下一条指令开始继续执行。 IF 和 ELSE 分支 IF <条件> THEN <指令 1> ELSE <指令 0>; END_IF; 如果满足该条件,则将执行 THEN 后编写的指令。 如果不满足该条件,则将执行 ELSE 后编写的指令。 程序将从 END_IF 后的下一条指令开始继续执行。 IF、ELSIF 和 ELSE 分支 IF <条件 1> THEN <指令 1> ELSIF <条件 2> THEN <指令 2> ELSE <指令 0>; END_IF; 如果满足第一个条件(<条件 1>),则将执行 THEN 后的指令(<指令1>)。 执行这些指令后,程序将从 END_IF 后继续执行。 如果不满足第一个条件,则将检查第二个条件(<条件 2>)。如果满足第二个条件(<条件 2>),则将执行 THEN 后的指令(<指令2>)。 执行这些指令后,程序将从 END_IF 后继续执行。 如果不满足任何条件,则先执行 ELSE 后的指令(<指令 0>),再执行 END_IF 后的程序部分。 在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。 可以选择对 ELSE 分支进行编程。 IF "Tag_1" = 1 THEN "Tag_Valu e" := 10; ELSIF "Tag_2" = 1 THEN "Tag_Valu e" := 20; ELSIF "Tag_3" = 1 THEN "Tag_Valu e" := 30; ELSE "Tag_Valu e" := 0; END_IF; IF 案例如下: FUNCTION_BLOCK "IF" TITLE = 'IF Statement' //IF ... THEN ... ELSE ... END_IF VAR_INPUT Start : BOOL; Manual : BOOL; ActVal : INT; END_VAR VAR Manual_FM : BOOL; over : BOOL; under : BOOL; equal_to : BOOL; Setpoint_man : INT := 1000; Setpoint : INT; Deviation : INT; y_index : INT := 12; Total : INT; END_VAR VAR_TEMP i : INT; END_VAR BEGIN //Simple IF branch IF Start THEN Setpoint := 1200; END_IF; IF Manual THEN Setpoint := Setpoint_man; Q4.0 := TRUE; END_IF; //Branch with THEN...ELSE IF ActVal > Setpoint THEN Deviation := ActVal - Setpoint; ELSE Deviation := Setpoint -...