Flankenmerker in SCL kriege ich nicht zum Laufen

vollmi

Level-3
Beiträge
5.436
Reaktionspunkte
1.410
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Zusammen ich versuch grad meinen ersten Funktionsblock in SCL zu schreiben. Bis jetzt hab ich nur Funktionen geschrieben.

Leider kriege ich die Flanke nicht zum flanken

Die Funktion ist eigentlich ganz einfach wenn DEC 1 wird soll X um 1 hochgezählt werden.

Wenn ich an INC direkt einen Flankenmerker anschliesse und dann auf IF INC abfrage funktioniert die Zählung. Aber die Abfrage auf IF INC_F nicht.

I starre schon seid ner Stunde auf den Code sehe den Fehler aber nicht.

Code:
VAR_IN_OUT
 X:  REAL; 
 OUT: REAL; 
END_VAR

VAR
 INC_F:   BOOL;
 INC_Imp: BOOL;
 DEC_F:   BOOL;
 DEC_Imp: BOOL;
END_VAR

BEGIN
 
(*Eingang X wird hoch oder runtergezählt*) 
 INC_F := INC AND NOT INC_Imp;
  INC_Imp := INC; 
 
  IF INC_F THEN
     X := X + 1.0;
  END_IF;  
  

  
 DEC_F := DEC AND NOT DEC_Imp;
 DEC_Imp := DEC;
 
  IF INC_F THEN
     X := X - 1.0;
  END_IF;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Zusammen ich versuch grad meinen ersten Funktionsblock in SCL zu schreiben. Bis jetzt hab ich nur Funktionen geschrieben.

Leider kriege ich die Flanke nicht zum flanken

Die Funktion ist eigentlich ganz einfach wenn DEC 1 wird soll X um 1 hochgezählt werden.

Wenn ich an INC direkt einen Flankenmerker anschliesse und dann auf IF INC abfrage funktioniert die Zählung. Aber die Abfrage auf IF INC_F nicht.

I starre schon seid ner Stunde auf den Code sehe den Fehler aber nicht.

Code:
VAR_IN_OUT
 X:  REAL; 
 OUT: REAL; 
END_VAR

VAR
 INC_F:   BOOL;
 INC_Imp: BOOL;
 DEC_F:   BOOL;
 DEC_Imp: BOOL;
END_VAR

BEGIN
 
(*Eingang X wird hoch oder runtergezählt*) 
 INC_F := INC AND NOT INC_Imp;
  INC_Imp := INC; 
 
  IF INC_F THEN
     X := X + 1.0;
  END_IF;  
  

  
 DEC_F := DEC AND NOT DEC_Imp;
 DEC_Imp := DEC;
 
  IF [SIZE=6][COLOR=Red][B]INC_F[/B][/COLOR][/SIZE] THEN
     X := X - 1.0;
  END_IF;

Fehler Markiert ;o) Muss Wohl DEC_F lauten.

Wobei ich da eh:
Code:
  IF INC AND NOT INC_Imp THEN
     X := X + 1.0;
  END_IF;  
  INC_Imp := INC;

  IF DEC AND NOT DEC_Imp THEN
     X := X - 1.0;
   END_IF;  
   DEC_Imp := DEC;

Schreiben würde.
 
Zuletzt bearbeitet:
Fehler Markiert ;o) Muss Wohl DEC_F lauten.

Wobei ich da eh:
Code:
  IF INC AND NOT INC_Imp THEN
     X := X + 1.0;
  END_IF;  
  INC_Imp := INC;

  IF DEC AND NOT DEC_Imp THEN
     X := X - 1.0;
   END_IF;  
   DEC_Imp := DEC;
Schreiben würde.


Oh gott ich versink gleich vor Scham im Boden.
Genau das hab ich nicht gesehen.
Kaum macht mans richtig, schon funktionierts.

Aber danke noch für die Optimierung, Bin halt noch Anfänger in SCL :)

mfG René
 
Oh gott ich versink gleich vor Scham im Boden.
Genau das hab ich nicht gesehen.
Kaum macht mans richtig, schon funktionierts.

Aber danke noch für die Optimierung, Bin halt noch Anfänger in SCL :)

mfG René

Brauchst Dich nicht zu schämen, dass ist doch ein Typischer Copy/Paste Fehler.
Ich habe auch wie Blöd an der ersten und richtigen Codestelle gesucht und nichts gefunden was schief gehen könnte. Erst als ich mit das Dekrementieren angeschaut habe ist es mir aufgefallen. Sowas findet man selbst immer schwer.
 
Zurück
Oben