FUNCTION_BLOCK "SSI"
TITLE =Singelturn Geber
VERSION : 0.1
VAR_INPUT
IN_Geber : INT ;
END_VAR
VAR_OUTPUT
OUT_DIR_P : BOOL ; //Positive Drehrichtung
OUT_DIR_N : BOOL ; //Negative Drehrichtung
OUT_UL_P : BOOL ; //Überlauf Positiv
OUT_UL_N : BOOL ; //Überlauf Negativ
END_VAR
VAR
Stillstand : "TON"; //Zeit Stillstand erkennen
Ueberlauf : "TON"; //Zeit Überlauf
HM1_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen
HM2_Stillstand : BOOL ; //Hilfsmerker Stillstand erkennen
Speicher : INT ; //Zwischenspeicher Geber
HM_P_ueberlauf : BOOL ; //Hilfsmerker positiver überlauf
HM_N_ueberlauf : BOOL ; //Hilfsmerker negativer überlauf
HM1_ueberlauf : BOOL ; //Hilfsmerker überlauf
HM2_ueberlauf : BOOL ; //Hilfsmerker überlauf
END_VAR
BEGIN
NETWORK
TITLE =Drehrichtung feststellen
//Positive Drehrichtung
L #IN_Geber;
L #Speicher;
>I ;
S #OUT_DIR_P;
O #OUT_DIR_P;
O #HM2_Stillstand;
R #OUT_DIR_N;
//Negative Drehrichtung
<I ;
S #OUT_DIR_N;
O #OUT_DIR_N;
O #HM2_Stillstand;
R #OUT_DIR_P;
//Stillstand
==I ;
= #HM1_Stillstand;
//Verzögerung Stillstand erfassen
CALL #Stillstand (
IN := #HM1_Stillstand,
PT := T#500MS,
Q := #HM2_Stillstand);
//Zählerstand speichern
L #IN_Geber;
T #Speicher;
NETWORK
TITLE =Positiver überlauf erfassen
//Speicherung halber Drehgeberwert
L #IN_Geber;
L 500;
>I ;
U #OUT_DIR_P;
S #HM_P_ueberlauf;
R #HM_N_ueberlauf;
//Positiver üeberlauf
<I ;
U #OUT_DIR_P;
U #HM_P_ueberlauf;
S #OUT_UL_P;
NETWORK
TITLE =Negativer überlauf erfassen
//Speicherung halber Drehgeberwert
L #IN_Geber;
L 500;
<I ;
U #OUT_DIR_N;
S #HM_N_ueberlauf;
R #HM_P_ueberlauf;
//Negativer überlauf
>I ;
U #OUT_DIR_N;
U #HM_N_ueberlauf;
S #OUT_UL_N;
NETWORK
TITLE =Überlauf auswerten
//Verknüpfen
O #OUT_UL_P;
O #OUT_UL_N;
= #HM1_ueberlauf;
//Bausteinaufruf
CALL #Ueberlauf (
IN := #HM1_ueberlauf,
PT := T#500MS);
//Rücksetzen
U #Ueberlauf.Q;
R #OUT_UL_P;
R #OUT_UL_N;
//an dieser stelle kommt später der zähler
//um den Offset auszurechenen
U #HM1_ueberlauf;
FP #HM2_ueberlauf;
SPBN KU;
SET ;
R #HM_N_ueberlauf;
R #HM_P_ueberlauf;
KU: NOP 0;
END_FUNCTION_BLOCK