AWL Bausteine aus TIA-Portal Projekt in Workspace
This commit is contained in:
@@ -1,87 +1,94 @@
|
||||
=== FB 91: MSensoren [STL] ===
|
||||
INTERFACE:
|
||||
Input:
|
||||
ESensor : Bool // Eingang des zu überwachenden Sensors
|
||||
T_Ein : Int := 1 // Einschaltzeitverzögerung (*100ms)
|
||||
T_Aus : Int := 5 // Ausschaltzeitverzögerung (*100ms)
|
||||
tein_aktiv : Bool := TRUE // Einschaltzeit aktivieren
|
||||
taus_aktiv : Bool := TRUE // Ausschaltzeit aktivieren
|
||||
Output:
|
||||
InOut:
|
||||
Static:
|
||||
Stat : "USensor_Ein_Aus" // Status des Endschalters
|
||||
Temp:
|
||||
Constant:
|
||||
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
|
||||
|
||||
--- NW 1: Zeitwert löschen ---
|
||||
A ESensor
|
||||
A Stat.B_Akt
|
||||
O
|
||||
AN ESensor
|
||||
AN Stat.B_Akt
|
||||
JCN Nw02
|
||||
VAR
|
||||
Stat { ExternalWritable := 'False'} : "USensor_Ein_Aus"; // Status des Endschalters
|
||||
END_VAR
|
||||
|
||||
|
||||
tdel: L 0 // Zeitwert löschen
|
||||
T Stat.T_Zelle
|
||||
|
||||
BEU
|
||||
|
||||
--- NW 2: Einschaltzeit abgelaufen ? ---
|
||||
Nw02: L Stat.T_Ein_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w020
|
||||
|
||||
L T_Ein // Sollwert übergeben
|
||||
T Stat.T_Ein_Akt // Gewollter Zeitwert
|
||||
|
||||
w020: A Stat.B_Akt
|
||||
JC 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
|
||||
JC tdel // Zeit löschen
|
||||
|
||||
JU Nw04
|
||||
|
||||
--- NW 3: Ausschaltzeit abgelaufen ? ---
|
||||
Nw03: L Stat.T_Aus_Akt // Gewollter Zeitwert
|
||||
L 9999 // angegeben ?
|
||||
<>I // Ja !
|
||||
JC w030
|
||||
|
||||
L T_Aus // Sollwert übergeben
|
||||
T Stat.T_Aus_Akt // Gewollter Zeitwert
|
||||
|
||||
w030: AN Stat.B_Akt
|
||||
JC 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
|
||||
JC tdel // Zeit löschen
|
||||
BEGIN
|
||||
NETWORK
|
||||
TITLE = Zeitwert löschen
|
||||
U #ESensor;
|
||||
U #Stat.B_Akt;
|
||||
O;
|
||||
UN #ESensor;
|
||||
UN #Stat.B_Akt;
|
||||
SPBN Nw02;
|
||||
|
||||
|
||||
--- NW 4: Zeit läuft ---
|
||||
Nw04: AN "100ms-Impuls" // nur als Impuls
|
||||
O
|
||||
AN Stat.B_Akt // Einschaltzeit läuft
|
||||
AN tein_aktiv // aber Zeit einfrieren
|
||||
O
|
||||
A Stat.B_Akt // Ausschaltzeit läuft
|
||||
AN taus_aktiv // aber Zeit einfrieren
|
||||
BEC
|
||||
tdel: L 0;//Zeitwert löschen
|
||||
T #Stat.T_Zelle;
|
||||
|
||||
L Stat.T_Zelle
|
||||
L "MW2"
|
||||
+I
|
||||
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
|
||||
|
||||
--- NW 5: Ende ---
|
||||
BE
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user