...
VAR_INPUT
FRG : BOOL ; //Freigabe Bewegung allgemein
FRG_STEP_AUTO : BOOL ; //Freigabe Bewegung für Step und Automatik
SK_EIN : BOOL ; //aus Schrittkette --> Einschalten
SK_AUS : BOOL ; //aus Schrittkette --> Ausschalten
HAND_EIN : BOOL ; //aus Handsteuerung --> Ein
HAND_AUS : BOOL ; //aus Handsteuerung --> Aus
STATUSANZEIGE_AKTIV : BOOL ; //Ausgabe der Statusnzeige Ein --> Aus spart Zykluszeit !!!
GRUNDBEDINGUNG : BOOL ; //Freigabe bei Grundstellungsfahrt
GRUNDFAHRT : BOOL ; //Grundstellungsfahrt ausführen
HARDWARE_o_k : BOOL ; //Anlage ist eingeschaltet und IO
QUITT_ERROR : BOOL ; //Quittierung Fehler
ZEIT_IMPULS_100ms : BOOL ; //Zeitimpuls(100ms)
WERT_LAUFZEIT_100ms : INT ; //Wert Laufzeit (Xx100ms)
ENDLAGEN_WACHE_AKTIV : BOOL ; //Endlagenüberwachung aktiv
ENDLAGE_G : BOOL ; //Endlage in -G-
ENDLAGE_A : BOOL ; //Endlage in -A-
ENDLAGE_G_AUS : BOOL ; //Abschalten bei Endlage Grund
ENDLAGE_A_AUS : BOOL ; //Abschalten bei Endlage AST
END_VAR
VAR_IN_OUT
STATUS : DWORD ; //Status, belegung DWORD siehe Bausteinkommentar
AUSGANG_G : BOOL ; //Ausgang ->G
AUSGANG_A : BOOL ; //Ausgang ->A
AKKU_LAUFZEIT : WORD ; //Laufzeitüberwachung
STOERMELDUNG : BOOL ; //Laufzeitstörung
STOERBIT : BOOL ; //Störbit im Datenbereich des OP
QUITTIERBIT_OP : BOOL ; //Quittierbit OP
QUITTIERBIT_SPS : BOOL ; //Quittierbit SPS
END_VAR
VAR_TEMP
LAUFZEIT_EIN : BOOL ; //Endlage überwachen
ZM_AUSGANG_G : BOOL ; //Zwischenmerker Ausgang Grundstellung
ZM_AUSGANG_A : BOOL ; //Zwischenmerker Ausgang Arbeitsstellung
ERROR_ENDLAGE : BOOL ; //Fehler Endlage
LAUFZEIT_RESET : BOOL ; //Laufzeit rücksetzen
Status_intern : DWORD ; //internes Statuswort
END_VAR
...
NETWORK
TITLE =Logik Laufzeitüberwachung
U( ;
U #AUSGANG_G;
UN #ENDLAGE_G;
O ;
U #AUSGANG_A;
UN #ENDLAGE_A;
O ;
UN #ENDLAGE_G;
UN #ENDLAGE_A;
U #FRG_STEP_AUTO;
) ;
U #HARDWARE_o_k;
= #LAUFZEIT_EIN;
NETWORK
TITLE =Laufzeit löschen
U( ;
U #AUSGANG_G;
UN #ENDLAGE_A;
U #ENDLAGE_G;
O ;
U #AUSGANG_A;
UN #ENDLAGE_G;
U #ENDLAGE_A;
O ;
UN #SK_EIN;
UN #SK_AUS;
UN #HAND_EIN;
UN #HAND_AUS;
UN #GRUNDFAHRT;
U( ;
O #ENDLAGE_G;
O #ENDLAGE_A;
) ;
) ;
UN #STOERMELDUNG;
O ;
U( ;
O #QUITTIERBIT_OP;
O #QUITTIERBIT_SPS;
) ;
U #STOERMELDUNG;
= #LAUFZEIT_RESET;
NETWORK
TITLE =Logik Endlagenüberwachung
U #ENDLAGE_G;
U #ENDLAGE_A;
U #ENDLAGEN_WACHE_AKTIV;
= #ERROR_ENDLAGE;
NETWORK
TITLE =Fehlerüberwachung
//Lösche Laufzeit
UN #LAUFZEIT_RESET;
SPB M001;
CLR ;
= #STOERMELDUNG;
L 0;
T #AKKU_LAUFZEIT;
SET ;
R #STOERMELDUNG;
M001: NOP 0;
//??Einschaltzeit überschritten
L #AKKU_LAUFZEIT;
L #WERT_LAUFZEIT_100ms;
>=I ;
S #STOERMELDUNG;
SPB ENDE;
U #ERROR_ENDLAGE;
S #STOERMELDUNG;
SPB ENDE;
//??Zeitimpuls
ON #ZEIT_IMPULS_100ms;
ON #LAUFZEIT_EIN;
SPB ENDE;
L #AKKU_LAUFZEIT;
L 1;
+I ;
T #AKKU_LAUFZEIT;
SPA ENDE;
ENDE: NOP 0;
...