FUNCTION_BLOCK BS_SyncVavle VAR_EXTERNAL END_VAR VAR_INPUT REAL_IN1 :REAL; REAL_IN2 :REAL; REAL_IN3 :REAL; BOOL_IN1 :BOOL; BOOL_IN2 :BOOL; BOOL_IN3 :BOOL; INT_IN1 :INT; INT_IN2 :INT; INT_IN3 :INT; END_VAR VAR_OUTPUT REAL_OUT1 :REAL; REAL_OUT2 :REAL; REAL_OUT3 :REAL; BOOL_OUT1 :BOOL; BOOL_OUT2 :BOOL; BOOL_OUT3 :BOOL; INT_OUT1 :INT; INT_OUT2 :INT; INT_OUT3 :INT; END_VAR VAR REAL_TEMP1 :REAL; REAL_TEMP2 :REAL; REAL_TEMP3 :REAL; BOOL_TEMP1 :BOOL; BOOL_TEMP2 :BOOL; BOOL_TEMP3 :BOOL; INT_TEMP1 :INT; INT_TEMP2 :INT; INT_TEMP3 :INT; END_VAR (*Automatically declared*) VAR_EXTERNAL END_VAR (** {* **) (** **) (** 时 间:20191001 **) (** 版 本:1.2 **) (** 作 者:姚立 **) (** 名 称:三值非锁定互赋值 **) (** 说 明:用于三个变量的相互赋值,且不锁定对方值 **) (** 备 注: **) (** 依赖块:无 **) (** **) (** *} **) (** **) (** {**********REAL两个变量相互赋值*************} **) (** if REAL_IN1<>REAL_TEMP1 then **) (* if - Cond *) LD REAL_IN1 NE REAL_TEMP1 JMPCN ODK_SKIP_000000000000001_000000000000001 (* then - Stmts *) (** REAL_OUT1:=REAL_IN1; **) (* assign - Stmt *) LD REAL_IN1 ST REAL_OUT1 (** REAL_OUT2:=REAL_IN1; **) (* assign - Stmt *) LD REAL_IN1 ST REAL_OUT2 (** REAL_OUT3:=REAL_IN1; **) (* assign - Stmt *) LD REAL_IN1 ST REAL_OUT3 JMP ODK_END_IF_000000000000001 (** elsif REAL_IN2<>REAL_TEMP2 then **) (* elseif - Cond *) ODK_SKIP_000000000000001_000000000000001: LD REAL_IN2 NE REAL_TEMP2 JMPCN ODK_SKIP_000000000000001_000000000000002 (* elsif - Stmts *) (** REAL_OUT1:=REAL_IN2; **) (* assign - Stmt *) LD REAL_IN2 ST REAL_OUT1 (** REAL_OUT2:=REAL_IN2; **) (* assign - Stmt *) LD REAL_IN2 ST REAL_OUT2 (** REAL_OUT3:=REAL_IN2; **) (* assign - Stmt *) LD REAL_IN2 ST REAL_OUT3 JMP ODK_END_IF_000000000000001 (** elsif REAL_IN3<>REAL_TEMP3 then **) (* elseif - Cond *) ODK_SKIP_000000000000001_000000000000002: LD REAL_IN3 NE REAL_TEMP3 JMPCN ODK_SKIP_000000000000001_000000000000003 (* elsif - Stmts *) (** REAL_OUT1:=REAL_IN3; **) (* assign - Stmt *) LD REAL_IN3 ST REAL_OUT1 (** REAL_OUT2:=REAL_IN3; **) (* assign - Stmt *) LD REAL_IN3 ST REAL_OUT2 (** REAL_OUT3:=REAL_IN3; **) (* assign - Stmt *) LD REAL_IN3 ST REAL_OUT3 JMP ODK_END_IF_000000000000001 (** end_if; **) (* if - End *) ODK_SKIP_000000000000001_000000000000003: ODK_END_IF_000000000000001: (** **) (** REAL_TEMP1:=REAL_IN1; **) (* assign - Stmt *) LD REAL_IN1 ST REAL_TEMP1 (** REAL_TEMP2:=REAL_IN2; **) (* assign - Stmt *) LD REAL_IN2 ST REAL_TEMP2 (** REAL_TEMP3:=REAL_IN3; **) (* assign - Stmt *) LD REAL_IN3 ST REAL_TEMP3 (** **) (** {**********BOOL两个变量相互赋值*************} **) (** if BOOL_IN1<>BOOL_TEMP1 then **) (* if - Cond *) LD BOOL_IN1 NE BOOL_TEMP1 JMPCN ODK_SKIP_000000000000002_000000000000001 (* then - Stmts *) (** BOOL_OUT1:=BOOL_IN1; **) (* assign - Stmt *) LD BOOL_IN1 ST BOOL_OUT1 (** BOOL_OUT2:=BOOL_IN1; **) (* assign - Stmt *) LD BOOL_IN1 ST BOOL_OUT2 (** BOOL_OUT3:=BOOL_IN1; **) (* assign - Stmt *) LD BOOL_IN1 ST BOOL_OUT3 JMP ODK_END_IF_000000000000002 (** elsif BOOL_IN2<>BOOL_TEMP2 then **) (* elseif - Cond *) ODK_SKIP_000000000000002_000000000000001: LD BOOL_IN2 NE BOOL_TEMP2 JMPCN ODK_SKIP_000000000000002_000000000000002 (* elsif - Stmts *) (** BOOL_OUT1:=BOOL_IN2; **) (* assign - Stmt *) LD BOOL_IN2 ST BOOL_OUT1 (** BOOL_OUT2:=BOOL_IN2; **) (* assign - Stmt *) LD BOOL_IN2 ST BOOL_OUT2 (** BOOL_OUT3:=BOOL_IN2; **) (* assign - Stmt *) LD BOOL_IN2 ST BOOL_OUT3 JMP ODK_END_IF_000000000000002 (** elsif BOOL_IN3<>BOOL_TEMP3 then **) (* elseif - Cond *) ODK_SKIP_000000000000002_000000000000002: LD BOOL_IN3 NE BOOL_TEMP3 JMPCN ODK_SKIP_000000000000002_000000000000003 (* elsif - Stmts *) (** BOOL_OUT1:=BOOL_IN3; **) (* assign - Stmt *) LD BOOL_IN3 ST BOOL_OUT1 (** BOOL_OUT2:=BOOL_IN3; **) (* assign - Stmt *) LD BOOL_IN3 ST BOOL_OUT2 (** BOOL_OUT3:=BOOL_IN3; **) (* assign - Stmt *) LD BOOL_IN3 ST BOOL_OUT3 JMP ODK_END_IF_000000000000002 (** end_if; **) (* if - End *) ODK_SKIP_000000000000002_000000000000003: ODK_END_IF_000000000000002: (** **) (** BOOL_TEMP1:=BOOL_IN1; **) (* assign - Stmt *) LD BOOL_IN1 ST BOOL_TEMP1 (** BOOL_TEMP2:=BOOL_IN2; **) (* assign - Stmt *) LD BOOL_IN2 ST BOOL_TEMP2 (** BOOL_TEMP3:=BOOL_IN3; **) (* assign - Stmt *) LD BOOL_IN3 ST BOOL_TEMP3 (** **) (** {**********INT两个变量相互赋值*************} **) (** if INT_IN1<>INT_TEMP1 then **) (* if - Cond *) LD INT_IN1 NE INT_TEMP1 JMPCN ODK_SKIP_000000000000003_000000000000001 (* then - Stmts *) (** INT_OUT1:=INT_IN1; **) (* assign - Stmt *) LD INT_IN1 ST INT_OUT1 (** INT_OUT2:=INT_IN1; **) (* assign - Stmt *) LD INT_IN1 ST INT_OUT2 (** INT_OUT3:=INT_IN1; **) (* assign - Stmt *) LD INT_IN1 ST INT_OUT3 JMP ODK_END_IF_000000000000003 (** elsif INT_IN2<>INT_TEMP2 then **) (* elseif - Cond *) ODK_SKIP_000000000000003_000000000000001: LD INT_IN2 NE INT_TEMP2 JMPCN ODK_SKIP_000000000000003_000000000000002 (* elsif - Stmts *) (** INT_OUT1:=INT_IN2; **) (* assign - Stmt *) LD INT_IN2 ST INT_OUT1 (** INT_OUT2:=INT_IN2; **) (* assign - Stmt *) LD INT_IN2 ST INT_OUT2 (** INT_OUT3:=INT_IN2; **) (* assign - Stmt *) LD INT_IN2 ST INT_OUT3 JMP ODK_END_IF_000000000000003 (** elsif INT_IN3<>INT_TEMP3 then **) (* elseif - Cond *) ODK_SKIP_000000000000003_000000000000002: LD INT_IN3 NE INT_TEMP3 JMPCN ODK_SKIP_000000000000003_000000000000003 (* elsif - Stmts *) (** INT_OUT1:=INT_IN3; **) (* assign - Stmt *) LD INT_IN3 ST INT_OUT1 (** INT_OUT2:=INT_IN3; **) (* assign - Stmt *) LD INT_IN3 ST INT_OUT2 (** INT_OUT3:=INT_IN3; **) (* assign - Stmt *) LD INT_IN3 ST INT_OUT3 JMP ODK_END_IF_000000000000003 (** end_if; **) (* if - End *) ODK_SKIP_000000000000003_000000000000003: ODK_END_IF_000000000000003: (** **) (** INT_TEMP1:=INT_IN1; **) (* assign - Stmt *) LD INT_IN1 ST INT_TEMP1 (** INT_TEMP2:=INT_IN2; **) (* assign - Stmt *) LD INT_IN2 ST INT_TEMP2 (** INT_TEMP3:=INT_IN3; **) (* assign - Stmt *) LD INT_IN3 ST INT_TEMP3 (** **) (** **) (** **) (** **) (** **) (** **) END_FUNCTION_BLOCK