UH07 Original .awl Bausteine von Andi importiert

This commit is contained in:
2026-07-08 12:13:12 +02:00
parent 6c1a343fa8
commit 2cf730b338
125 changed files with 49373 additions and 41019 deletions
@@ -1,122 +1,147 @@
=== 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:
FUNCTION_BLOCK "MImpulsGeber"
TITLE = Modul Zähler über Zahnrad-Sensor Wert in Zähler-DB eintragen
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
Ink_DB { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : 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;
END_VAR
--- NW 1: Initialisierung ---
SET
R Signal
VAR_OUTPUT
Signal : Bool; // Falls kein InkDB
END_VAR
VAR_IN_OUT
Err_Kein_Signal : Bool; // Kein_Signal bei laufenden Antrieb
Err_Signal_zu_lang : Bool; // Signal bei laufenden Antrieb zu lang
END_VAR
VAR
Sensor_entprellen : Bool;
Timer_1 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
Timer_2 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
Timer_3 {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
END_VAR
--- NW 2: Störungen ---
// Störung quittieren:
A Quit
R Err_Signal_zu_lang
R Err_Kein_Signal
BEGIN
NETWORK
TITLE = Initialisierung
SET;
R #Signal;
// Signal zu lang:
A B_Zaehlen // Sensor zum Zählen
A Antrieb_aktiv // Antrieb ist aktiv
AN Quit
= "M200.0"
NETWORK
TITLE = Störungen
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Signal_zu_lang, Q:=?, ET:=?)
//Störung quittieren:
U #Quit;
R #Err_Signal_zu_lang;
R #Err_Kein_Signal;
A Timer_2.Q
S Err_Signal_zu_lang
//Signal zu lang:
U #B_Zaehlen ;//Sensor zum Zählen
U #Antrieb_aktiv ;//Antrieb ist aktiv
UN #Quit;
= "M200.0";
// Kein Signal:
AN B_Zaehlen // Sensor zum Zählen
A Antrieb_aktiv // Antrieb ist aktiv
AN Quit
= "M200.0"
CALL #Timer_2
{time_type := 'Time'}
( IN := "M200.0" ,
PT := #Zeit_Signal_zu_lang
);
CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Kein_Signal, Q:=?, ET:=?)
U #Timer_2.Q;
S #Err_Signal_zu_lang;
A Timer_3.Q
S Err_Kein_Signal
//Kein Signal:
UN #B_Zaehlen ;//Sensor zum Zählen
U #Antrieb_aktiv ;//Antrieb ist aktiv
UN #Quit;
= "M200.0";
CALL #Timer_3
{time_type := 'Time'}
( IN := "M200.0" ,
PT := #Zeit_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"
U #Timer_3.Q;
S #Err_Kein_Signal;
CALL SYS "TON" (IN:="M200.0", PT:=t#50ms, Q:=?, ET:=?)
NETWORK
TITLE = Zählen über Sensor
UN #B_Zaehlen ;//Sensor zum Zählen
U #Sensor_entprellen ;//Sperre Auswertung schon erfolgt
U #Antrieb_aktiv ;//Antrieb ist aktiv
= "M200.0";
A Timer_1.Q
R Sensor_entprellen // Sperre Auswertung schon erfolgt
CALL #Timer_1
{time_type := 'Time'}
( IN := "M200.0" ,
PT := t#50ms
);
AN B_Zaehlen // Sensor zum Zählen
O Sensor_entprellen
BEC
U #Timer_1.Q;
R #Sensor_entprellen ;//Sperre Auswertung schon erfolgt
SET
S Sensor_entprellen // Sperre Auswertung schon erfolgt
S Signal // Für Signal-Auswertung ohne InkDB
UN #B_Zaehlen ;//Sensor zum Zählen
O #Sensor_entprellen;
BEB;
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"
NETWORK
TITLE = Übergabe an Inkrement-Baustein / max.Wert erreicht?
L #Ink_DB;
T "MW200";
L 0 // Sinnvolle Angabe?
<=I // Nein!
BEC // Also nur Signal-Auswertung !
L 0;//Sinnvolle Angabe?
<=I;//Nein!
BEB;//Also nur Signal-Auswertung !
OPN DB["MW200"] // Zähler-DB öffnen
AUF DB[ "MW200"] ;//Zähler-DB öffnen
L DBD80
+ DINT#1 // Aktueller Zählerwert +1
T DBD80
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
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
BEB;
-D // Restwert als Startwert nehmen !
T DBD80 // Keine Inkrementalgeber verbaut, sondern nur Sensor
-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
UN %DBX74.3 ;//Umschaltung Zähl-Lauf ohne-mit-ohne Flag
= %DBX74.5 ;//Ohne Flag-Lauf wurde beendet
U %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
UN %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
//Zähler auf 000 setzen ?:
UN %DBX74.6 ;//Zähler Zero-Load
BEB;
SET
R DBX74.6
SET;
R %DBX74.6;
L 0
T DBD80 // Zählerwert zum Setzen
L 0;
T %DBD80 ;//Zählerwert zum Setzen
NETWORK
TITLE = Ende
BE;
--- NW 5: Ende ---
BE
END_FUNCTION_BLOCK