123 lines
4.5 KiB
Plaintext
123 lines
4.5 KiB
Plaintext
=== FB 100: MImpulsGeber [STL] ===
|
|
INTERFACE:
|
|
Input:
|
|
Ink_DB : Int // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler
|
|
B_Zaehlen : Bool // Sensor zum Zählen
|
|
Antrieb_aktiv : Bool // Antrieb ist aktiv
|
|
Quit : Bool
|
|
Zeit_Signal_zu_lang : Time := T#350ms
|
|
Zeit_Kein_Signal : Time := T#500ms
|
|
Output:
|
|
Signal : Bool // Falls kein InkDB
|
|
InOut:
|
|
Err_Kein_Signal : Bool // Kein_Signal bei laufenden Antrieb
|
|
Err_Signal_zu_lang : Bool // Signal bei laufenden Antrieb zu lang
|
|
Static:
|
|
Sensor_entprellen : Bool
|
|
Timer_1 : TON_TIME
|
|
Timer_2 : TON_TIME
|
|
Timer_3 : TON_TIME
|
|
Temp:
|
|
Constant:
|
|
|
|
--- NW 1: Initialisierung ---
|
|
SET
|
|
R Signal
|
|
|
|
|
|
--- NW 2: Störungen ---
|
|
// Störung quittieren:
|
|
A Quit
|
|
R Err_Signal_zu_lang
|
|
R Err_Kein_Signal
|
|
|
|
// Signal zu lang:
|
|
A B_Zaehlen // Sensor zum Zählen
|
|
A Antrieb_aktiv // Antrieb ist aktiv
|
|
AN Quit
|
|
= "M200.0"
|
|
|
|
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Signal_zu_lang, Q:=?, ET:=?)
|
|
|
|
A Timer_2.Q
|
|
S Err_Signal_zu_lang
|
|
|
|
// Kein Signal:
|
|
AN B_Zaehlen // Sensor zum Zählen
|
|
A Antrieb_aktiv // Antrieb ist aktiv
|
|
AN Quit
|
|
= "M200.0"
|
|
|
|
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Kein_Signal, Q:=?, ET:=?)
|
|
|
|
A Timer_3.Q
|
|
S Err_Kein_Signal
|
|
|
|
|
|
--- NW 3: Zählen über Sensor ---
|
|
AN B_Zaehlen // Sensor zum Zählen
|
|
A Sensor_entprellen // Sperre Auswertung schon erfolgt
|
|
A Antrieb_aktiv // Antrieb ist aktiv
|
|
= "M200.0"
|
|
|
|
CALL SYS "TON" (IN:="M200.0", PT:=t#50ms, Q:=?, ET:=?)
|
|
|
|
A Timer_1.Q
|
|
R Sensor_entprellen // Sperre Auswertung schon erfolgt
|
|
|
|
AN B_Zaehlen // Sensor zum Zählen
|
|
O Sensor_entprellen
|
|
BEC
|
|
|
|
SET
|
|
S Sensor_entprellen // Sperre Auswertung schon erfolgt
|
|
S Signal // Für Signal-Auswertung ohne InkDB
|
|
|
|
|
|
--- NW 4: Übergabe an Inkrement-Baustein / max.Wert erreicht? ---
|
|
L Ink_DB
|
|
T "MW200"
|
|
|
|
L 0 // Sinnvolle Angabe?
|
|
<=I // Nein!
|
|
BEC // Also nur Signal-Auswertung !
|
|
|
|
OPN DB["MW200"] // Zähler-DB öffnen
|
|
|
|
L DBD80
|
|
+ DINT#1 // Aktueller Zählerwert +1
|
|
T DBD80
|
|
|
|
L DBD80 // Aktueller Zählerwert
|
|
L DBD76 // Max. Wert erreicht ?
|
|
<=D // Nein !
|
|
R DBX74.5 // Ohne Flag-Lauf wurde beendet
|
|
R DBX74.4 // Flag-Lauf wurde beendet
|
|
BEC
|
|
|
|
-D // Restwert als Startwert nehmen !
|
|
T DBD80 // Keine Inkrementalgeber verbaut, sondern nur Sensor
|
|
|
|
AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
|
= DBX74.5 // Ohne Flag-Lauf wurde beendet
|
|
A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
|
= DBX74.4 // Flag-Lauf wurde beendet
|
|
|
|
AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag
|
|
= DBX74.3
|
|
|
|
// Zähler auf 000 setzen ?:
|
|
AN DBX74.6 // Zähler Zero-Load
|
|
BEC
|
|
|
|
SET
|
|
R DBX74.6
|
|
|
|
L 0
|
|
T DBD80 // Zählerwert zum Setzen
|
|
|
|
|
|
--- NW 5: Ende ---
|
|
BE
|
|
|