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
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
|