LREAL bei eintreffen einer Flanke kopieren

Zuviel Werbung?
-> Hier kostenlos registrieren
So?
Code:
IF steigendeFlanke THEN
  LRealVariable2 := LRealVariable1;
END_IF;

Oder weißt du nicht, wie man erkennt, ob ein Signal eine steigende Flanke hat? Dann z.B. so:
Code:
steigendeFlanke := Signal AND NOT Signal_Vorher;
Signal_Vorher := Signal;

IF steigendeFlanke THEN
  LRealVariable2 := LRealVariable1;
END_IF;
 
ich möchte eine LREAL Variable bei eintreffen einer steigenden Flanke einmalig in eine andere LREAL Variable kopieren. Wie mache ich das?

DeltaMikeAir, wenn muss es nur einmal gemacht werden, dann muss es folgendes aussehen.

Code:
IF flanke AND NOT saved THEN
    LREALVariableB := LREALVariableA;
    saved := TRUE;
END_IF;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem ist, dass der Fragesteller wieder mal zu wenig Informationen gegeben hat, was er hat und was er will. Daher erhält er auch nur die bequemsten Antworten, die allerdings möglicherweise nicht dazu passen, was er sich vorgestellt hat. z.B. Vielleicht will und kann er gar nicht ST und braucht die Lösung in FUP oder KOP?

Damit hier nicht wieder Vorwürfe erhoben werden, dass wir bei unseren Antworten mit unseren Informationen zu geizig sind, hier noch eine Ergänzung zu @DeltaMikeAirs Beitrag.
Flanken werden bei Beckhoff mit dem Baustein R_TRIG oder F_TRIG ausgewertet, zusammen mit @DeltaMikeAirs Antwort, sollte Dich das auf die richtige Spur bringen.
Auch wenn ein Programmiersystem spezielle Anweisungen für Flankenerkennung hat, so muss man die nicht verwenden, sondern kann auch so programmieren, dass es in jedem Programmiersystem funktioniert. Also die grundlegenden Algorithmen verwenden, die keine speziellen Anweisungen erfordern. Und das wäre:
Code:
steigendeFlanke := Signal AND NOT Signal_Vorher;
Signal_Vorher := Signal;
 
IF flanke AND NOT saved THEN
LREALVariableB := LREALVariableA;
saved := TRUE;
END_IF;
Gibt es einen Grund dafür, dass die Variable 'saved' - wenn überhaupt - dann immer nur zu TRUE gemacht wird?
Warum soll nur die allererste Flanke etwas bewirken und keine einzige der vielen evtl. noch folgenden Flanken?

ich möchte eine LREAL Variable bei eintreffen einer steigenden Flanke einmalig in eine andere LREAL Variable kopieren.
Das Kopieren soll doch (vermutlich) bei jeder positiven Flanke einmalig geschehen.
 
Wie würde das in CFC aussehen? Stehe gerade vollständig auf dem Schlauch.
z.B. einen R_TRIG Baustein nehmen und dahinter einen MOVE.
Am Eingang CLK vom R_TRIG die Variable anlegen die das Speichern auslösen soll. Den Ausgang Q von R_TRIG an EN vom MOVE, darunter die Variable die den Wert enthält der gespeichert werden soll anlegen und gegenüber die Zielvariable, fertig.
EN/ENO muss beim MOVE über das Kontextmenü aktiviert/eingeblendet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
z.B. einen R_TRIG Baustein nehmen und dahinter einen MOVE.
Am Eingang CLK vom R_TRIG die Variable anlegen die das Speichern auslösen soll. Den Ausgang Q von R_TRIG an EN vom MOVE, darunter die Variable die den Wert enthält der gespeichert werden soll anlegen und gegenüber die Zielvariable, fertig.
EN/ENO muss beim MOVE über das Kontextmenü aktiviert/eingeblendet werden.
Für mich gilt es als gelöst.
 
Zurück
Oben