-> Hier kostenlos registrieren
Hallo und guten Tag
Ich möchte beim fahren eines Zylinders wissen, wann keine Bewegung mehr stattfindet.
Dann soll nach Ablauf einer gewissen Zeit die momentane Position als Nullpunkt übernommen werden.
Meine bisherigen Ergebnisse:
Die Erfassung des Weges klappt wie von mir erwünscht aber:
Die Bearbeitung bleibt bei U #Taktmerker; stehen.
Was mache ich da nicht richtig
der_iwan
Ich möchte beim fahren eines Zylinders wissen, wann keine Bewegung mehr stattfindet.
Dann soll nach Ablauf einer gewissen Zeit die momentane Position als Nullpunkt übernommen werden.
Meine bisherigen Ergebnisse:
Code:
FUNCTION_BLOCK FB 2
TITLE =Nullpunktübernahme
VERSION : 0.1
VAR_INPUT
Taktmerker : BOOL ; //Taktmerker der CPU
Start : BOOL ; //Startbedingung
Wert_Weg : REAL ; //Wegpunkt des FA's
Multiplkator : REAL ; //Wert_Weg mal diesen Wert (besseres Rechnen)
Zeit_OK : INT ; //Nach wieviel Sekunden Nullpunktübernahme
END_VAR
VAR_OUTPUT
Weg_gut : BOOL ; //Weg kann übernommen werden
END_VAR
VAR
Weg_positiv : REAL ; //Wegpunkt bei positiver Flanke
Weg_negativ : REAL ; //Wegpunkt bei negativer Flanke
HM_Flanke_pos : BOOL ; //Hilfsmerker positive Flanke
HM_Flanke_neg : BOOL ; //Hilfsmerker negative Flanke
intern_Zeit : INT ; //interne Zeit abgelaufen
END_VAR
BEGIN
NETWORK
TITLE =
UN #Start; //wenn kein Nullpunkt übernommen werden soll
R #Weg_gut; //Rücksetzte Nullpunkt übernommen Bit
L 0; // L 0
T #intern_Zeit; //setze Zeit auf Null
SPB ende; //Springe zum Ende
U #Taktmerker; //Wenn Taktmerker pos
U #Start; //und Nullpunkt soll übernommen werden
SPBN test; //wenn nicht springe zum negativ
L #Wert_Weg; //lade aktuellen Wegpunkt
T #Weg_positiv; //transfer
SPA gut;
test: UN #Taktmerker;
U #Start;
SPBN ende;
L #Wert_Weg;
T #Weg_negativ;
SPA gut;
gut: L #Weg_positiv;
L #Weg_negativ;
==R ;
SPBN ende;
U #Taktmerker;
FP #HM_Flanke_pos;
U #HM_Flanke_pos;
L #intern_Zeit;
+ 1;
T #intern_Zeit;
L #intern_Zeit;
L #Zeit_OK;
==I ;
SPBN ende;
= #Weg_gut;
ende: NOP 0;
END_FUNCTION_BLOCK
Die Bearbeitung bleibt bei U #Taktmerker; stehen.
Was mache ich da nicht richtig
der_iwan