You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.0 KiB

4 months ago
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;
elsif REAL_IN2<>REAL_TEMP2 then
REAL_OUT1:=REAL_IN2;
REAL_OUT2:=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