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 (* 时 间:20191001 版 本:1.2 作 者:姚立 名 称:三值非锁定互赋值 说 明:用于三个变量的相互赋值,且不锁定对方值 备 注: 依赖块:无 *) (**********REAL两个变量相互赋值*************) if REAL_IN1<>REAL_TEMP1 then REAL_OUT1:=REAL_IN1; REAL_OUT2:=REAL_IN1; REAL_OUT3:=REAL_IN1; elsif REAL_IN2<>REAL_TEMP2 then REAL_OUT1:=REAL_IN2; REAL_OUT2:=REAL_IN2; REAL_OUT3:=REAL_IN2; elsif REAL_IN3<>REAL_TEMP3 then REAL_OUT1:=REAL_IN3; REAL_OUT2:=REAL_IN3; REAL_OUT3:=REAL_IN3; end_if; REAL_TEMP1:=REAL_IN1; REAL_TEMP2:=REAL_IN2; REAL_TEMP3:=REAL_IN3; (**********BOOL两个变量相互赋值*************) if BOOL_IN1<>BOOL_TEMP1 then BOOL_OUT1:=BOOL_IN1; BOOL_OUT2:=BOOL_IN1; BOOL_OUT3:=BOOL_IN1; elsif BOOL_IN2<>BOOL_TEMP2 then BOOL_OUT1:=BOOL_IN2; BOOL_OUT2:=BOOL_IN2; BOOL_OUT3:=BOOL_IN2; elsif BOOL_IN3<>BOOL_TEMP3 then BOOL_OUT1:=BOOL_IN3; BOOL_OUT2:=BOOL_IN3; BOOL_OUT3:=BOOL_IN3; end_if; BOOL_TEMP1:=BOOL_IN1; BOOL_TEMP2:=BOOL_IN2; BOOL_TEMP3:=BOOL_IN3; (**********INT两个变量相互赋值*************) if INT_IN1<>INT_TEMP1 then INT_OUT1:=INT_IN1; INT_OUT2:=INT_IN1; INT_OUT3:=INT_IN1; elsif INT_IN2<>INT_TEMP2 then INT_OUT1:=INT_IN2; INT_OUT2:=INT_IN2; INT_OUT3:=INT_IN2; elsif INT_IN3<>INT_TEMP3 then INT_OUT1:=INT_IN3; INT_OUT2:=INT_IN3; INT_OUT3:=INT_IN3; end_if; INT_TEMP1:=INT_IN1; INT_TEMP2:=INT_IN2; INT_TEMP3:=INT_IN3; END_FUNCTION_BLOCK