Files
HundM_awl/=A01+UH06-KF00/Programmbausteine/Module/MImpulsGeber.awl
T

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