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.
 
 
 
 
 
 

173 lines
5.1 KiB

FUNCTION_BLOCK BS_DelayGroupVavle
VAR_EXTERNAL
END_VAR
VAR_INPUT
LOCK :INT:=0;
BOOL_GroupSet :BOOL;
INT_GroupSet :INT;
REAL_GroupSet :REAL;
REAL_IN :ARRAY[0..10] OF REAL;
INT_IN :ARRAY[0..10] OF INT;
BOOL_IN :ARRAY[0..10] OF BOOL;
END_VAR
VAR_OUTPUT
REAL_OUT :ARRAY[0..10] OF REAL;
INT_OUT :ARRAY[0..10] OF INT;
BOOL_OUT :ARRAY[0..10] OF BOOL;
END_VAR
VAR
REAL_GroupSetP :REAL;
BOOL_GroupSetP :BOOL;
INT_GroupSetP :INT;
Delay_Ton1 :TON;
Delay_Ton2 :TON;
Delay_Ton3 :TON;
END_VAR
(*
20191008
1.1
1-5s分别赋值1-10变量/1-5s分别赋值11-20变量
LOCK 0均不锁定;1锁定BOOL;2,INT;3,REAL;
10组BOOL,10组REAL,10组INT
*)
(**********REAL50个变量赋值50个变量也可单独赋值*************)
Delay_Ton1(PT :=t#5s );
if REAL_GroupSet<>REAL_GroupSetP and Delay_Ton1.Q=0 then
Delay_Ton1.IN:=1;
end_if;
if Delay_Ton1.Q=1 then
Delay_Ton1.IN:=0;
end_if;
Delay_Ton2(PT :=t#5s );
if BOOL_GroupSet<>BOOL_GroupSetP and Delay_Ton2.Q=0 then
Delay_Ton2.IN:=1;
end_if;
if Delay_Ton2.Q=1 then
Delay_Ton2.IN:=0;
end_if;
Delay_Ton3(PT :=t#5s );
if INT_GroupSet<>INT_GroupSetP and Delay_Ton3.Q=0 then
Delay_Ton3.IN:=1;
end_if;
if Delay_Ton3.Q=1 then
Delay_Ton3.IN:=0;
end_if;
if Delay_Ton1.IN=1 then
if Delay_Ton1.et>t#0.0s then REAL_OUT[01]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#0.5s then REAL_OUT[02]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#1.0s then REAL_OUT[03]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#1.5s then REAL_OUT[04]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#2.0s then REAL_OUT[05]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#2.5s then REAL_OUT[06]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#3.0s then REAL_OUT[07]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#3.5s then REAL_OUT[08]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#4.0s then REAL_OUT[09]:=REAL_GroupSet; end_if;
if Delay_Ton1.et>t#4.5s then REAL_OUT[10]:=REAL_GroupSet; end_if;
elsif REAL_GroupSet=REAL_GroupSetP then
REAL_OUT[01]:=REAL_IN[01];
REAL_OUT[02]:=REAL_IN[02];
REAL_OUT[03]:=REAL_IN[03];
REAL_OUT[04]:=REAL_IN[04];
REAL_OUT[05]:=REAL_IN[05];
REAL_OUT[06]:=REAL_IN[06];
REAL_OUT[07]:=REAL_IN[07];
REAL_OUT[08]:=REAL_IN[08];
REAL_OUT[09]:=REAL_IN[09];
REAL_OUT[10]:=REAL_IN[10];
end_if;
(**********BOOL50个变量赋值50个变量也可单独赋值*************)
if Delay_Ton2.IN=1 then
if Delay_Ton2.et>t#0.0s then BOOL_OUT[01]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#0.5s then BOOL_OUT[02]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#1.0s then BOOL_OUT[03]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#1.5s then BOOL_OUT[04]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#2.0s then BOOL_OUT[05]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#2.5s then BOOL_OUT[06]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#3.0s then BOOL_OUT[07]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#3.5s then BOOL_OUT[08]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#4.0s then BOOL_OUT[09]:=BOOL_GroupSet; end_if;
if Delay_Ton2.et>t#4.5s then BOOL_OUT[10]:=BOOL_GroupSet; end_if;
elsif BOOL_GroupSet=BOOL_GroupSetP then
BOOL_OUT[01]:=BOOL_IN[01];
BOOL_OUT[02]:=BOOL_IN[02];
BOOL_OUT[03]:=BOOL_IN[03];
BOOL_OUT[04]:=BOOL_IN[04];
BOOL_OUT[05]:=BOOL_IN[05];
BOOL_OUT[06]:=BOOL_IN[06];
BOOL_OUT[07]:=BOOL_IN[07];
BOOL_OUT[08]:=BOOL_IN[08];
BOOL_OUT[09]:=BOOL_IN[09];
BOOL_OUT[10]:=BOOL_IN[10];
end_if;
(**********INT50个变量赋值50个变量也可单独赋值*************)
if Delay_Ton3.IN=1 then
if Delay_Ton3.et>t#0.0s then INT_OUT[01]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#0.5s then INT_OUT[02]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#1.0s then INT_OUT[03]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#1.5s then INT_OUT[04]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#2.0s then INT_OUT[05]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#2.5s then INT_OUT[06]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#3.0s then INT_OUT[07]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#3.5s then INT_OUT[08]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#4.0s then INT_OUT[09]:=INT_GroupSet; end_if;
if Delay_Ton3.et>t#4.5s then INT_OUT[10]:=INT_GroupSet; end_if;
elsif INT_GroupSet=INT_GroupSetP then
INT_OUT[01]:=INT_IN[01];
INT_OUT[02]:=INT_IN[02];
INT_OUT[03]:=INT_IN[03];
INT_OUT[04]:=INT_IN[04];
INT_OUT[05]:=INT_IN[05];
INT_OUT[06]:=INT_IN[06];
INT_OUT[07]:=INT_IN[07];
INT_OUT[08]:=INT_IN[08];
INT_OUT[09]:=INT_IN[09];
INT_OUT[10]:=INT_IN[10];
end_if;
case lock of
(*01锁定BOOL;2,INT;3,REAL;*)
0:
BOOL_GroupSetP:=BOOL_GroupSet;
INT_GroupSetP:=INT_GroupSet;
REAL_GroupSetP:=REAL_GroupSet;
1:
INT_GroupSetP:=INT_GroupSet;
REAL_GroupSetP:=REAL_GroupSet;
2:
BOOL_GroupSetP:=BOOL_GroupSet;
REAL_GroupSetP:=REAL_GroupSet;
3:
BOOL_GroupSetP:=BOOL_GroupSet;
INT_GroupSetP:=INT_GroupSet;
end_case;
END_FUNCTION_BLOCK