Files
HundM_awl/=A01+UH07-KF00/Programmbausteine/Module/MSensoren.awl
T

95 lines
2.3 KiB
Plaintext

FUNCTION_BLOCK "MSensoren"
TITLE = Ein-/Ausschaltverzögerung für Entprellung der Sensoren
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : EAN
VERSION : 0.1
VAR_INPUT
ESensor { ExternalWritable := 'False'} : Bool; // Eingang des zu überwachenden Sensors
T_Ein { ExternalWritable := 'False'} : Int := 1; // Einschaltzeitverzögerung (*100ms)
T_Aus { ExternalWritable := 'False'} : Int := 5; // Ausschaltzeitverzögerung (*100ms)
tein_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Einschaltzeit aktivieren
taus_aktiv { ExternalWritable := 'False'} : Bool := TRUE; // Ausschaltzeit aktivieren
END_VAR
VAR
Stat { ExternalWritable := 'False'} : "USensor_Ein_Aus"; // Status des Endschalters
END_VAR
BEGIN
NETWORK
TITLE = Zeitwert löschen
U #ESensor;
U #Stat.B_Akt;
O;
UN #ESensor;
UN #Stat.B_Akt;
SPBN Nw02;
tdel: L 0;//Zeitwert löschen
T #Stat.T_Zelle;
BEA;
NETWORK
TITLE = Einschaltzeit abgelaufen ?
Nw02: L #Stat.T_Ein_Akt;//Gewollter Zeitwert
L 9999;//angegeben ?
<>I;//Ja !
SPB w020;
L #T_Ein;//Sollwert übergeben
T #Stat.T_Ein_Akt;//Gewollter Zeitwert
w020: U #Stat.B_Akt;
SPB Nw03;
L #Stat.T_Zelle;//Aktueller Zeitwert
L #Stat.T_Ein_Akt;//Gewollter Zeitwert erreicht ?
>=I;
S #Stat.B_Akt;//Sensor ist nach Einschaltzeit aktiv
SPB tdel;//Zeit löschen
SPA Nw04;
NETWORK
TITLE = Ausschaltzeit abgelaufen ?
Nw03: L #Stat.T_Aus_Akt;//Gewollter Zeitwert
L 9999;//angegeben ?
<>I;//Ja !
SPB w030;
L #T_Aus;//Sollwert übergeben
T #Stat.T_Aus_Akt;//Gewollter Zeitwert
w030: UN #Stat.B_Akt;
SPB Nw04;
L #Stat.T_Zelle;//Aktueller Zeitwert
L #Stat.T_Aus_Akt;//Gewollter Zeitwert erreicht ?
>=I;
R #Stat.B_Akt;//Sensor ist nach Ausschaltzeit nicht mehr aktiv
SPB tdel;//Zeit löschen
NETWORK
TITLE = Zeit läuft
Nw04: UN "100ms-Impuls";//nur als Impuls
O;
UN #Stat.B_Akt;//Einschaltzeit läuft
UN #tein_aktiv;//aber Zeit einfrieren
O;
U #Stat.B_Akt;//Ausschaltzeit läuft
UN #taus_aktiv;//aber Zeit einfrieren
BEB;
L #Stat.T_Zelle;
L "MW2";
+I;
T #Stat.T_Zelle;
NETWORK
TITLE = Ende
BE;
END_FUNCTION_BLOCK