AWL Bausteine aus TIA-Portal Projekt in Workspace
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user