95 lines
2.3 KiB
Plaintext
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
|
|
|