easy-forum
Deutsch - Software => XSoft-CoDeSys => Thema gestartet von: OK am April 01, 2008, 14:38:54 Nachmittag
-
Hallo,
Vielleicht kann mir jemand bei meinem Problem helfen!?
Ich will ein Signal um eine bestimmte Zeit verzögern.
Dabei soll die Signaldauer nicht beeinträchtigt werden.
INPUT = _____I I_______
OUTPUT= _________I I___
Verzögerung= .......
Danke für eure Hilfe
Gruß Oliver
-
Hallo Oliver,
ein Zeitglied anzugs- und rückfallverzögert mit den gleichen Zeitparametern in I1 und I2 sollte die gewünschte Funktion ausführen.
mfG Jan
-
Servus Oliver,
es wäre noch zu klären, ob das Eingangssignal und das Ausgangssignal gleichzeitig auftreten können (also z.B. daß die Verzögerung so kurz sein kann, daß das Eingangssignal noch anliegt, während der Ausgang bereits schaltet. Oder das Eingangssignal wieder anliegt, während der Ausgang noch schaltet).
Prinzipielle Möglichkeit:
Konstante Zykluszeit verwenden und während das Eingangssignal anliegt einen Zähler inkrementieren.
Bei steigender Flanke des Eingangssignals natürlich einen Timer für die Verzögerung starten.
Entweder (wenn Eingangssignal sicher nicht während der Schaltdauer des Ausgangssignals auftreten kann) diesen Zähler dann beim Einschalten des Ausgangssignals dekrementieren, bis Null erreicht ist.
Oder: Einen zweiten Zähler inkrementieren, bis der Wert des ersten Zählers erreicht ist.
Sofern das Eingangssignal bei noch schaltendem Ausgangssignal auftreten kann, dann muß der Zählerstand für die Dauer des Eingangssignals in einem Merker zwischengespeichert werden, damit der Zähler die Dauer des nächsten Impulses messen kann.
Viel Spaß noch.
Gruß
Boppel
-
Hallo,
Danke für Eure Antworten, ja, des soll eine Verzögerung sein, welche unanbhängig zu dem im Augenblick anliegenden Eingangssignal seinen Ausgang gibt.
INPUT :______I I__I I___________
OUTPUT :__________I I__I I_______
TIMESHIFT : .........
Hatte gehofft, dass es ein Baustein für CFC gibt.
Aber dann bastel ich mir was zusammen.
Danke
Oliver
-
Hallo Oliver,
schau doch mal in der oscat.lib nach (www.oscat.de), vielleicht ist da was dabei.
Edit: der FB TONOF aus der oscat.lib sollte für das Problem funktionieren.
mfG Jan
-
... au ist das peinlich :-\
ich hatte gar nicht bemerkt, daß es hier um CoDeSys geht.
Davon habe ich (noch) keine Ahnung ???
Sorry
Gruß
Boppel
-
Aber dann bastel ich mir was zusammen
Du könntest folgendes Basteln:
- Während der Input anliegt, einen Zähler mittels Zykluszeitmerker hochzählen
- Dann die Verzögerungszeit abwarten
- Dann Ausgang setzen, den Zähler mit Zykluszeitmerker rückzählen und bei Null Ausgang Rücksetzen.
Wäre das die Lösung?
Gruss Hermann
-
Hallo Oliver,
schau doch mal in der oscat.lib nach (www.oscat.de), vielleicht ist da was dabei.
Edit: der FB TONOF aus der oscat.lib sollte für das Problem funktionieren.
mfG Jan
Hört sich sehr gut an! Leider habe ich dadurch zwei Bausteine doppelt eingebunden was zu einem Fehler beim kompilieren führt. >:(
Versuche nun dieses zu umgehen. Habe diesbezüglich auch mal nachgefragt.
Gruß OK 8)
-
Hallo,
Habe jetzt die ASCAT_bib eingebunden davor den doppelt eingebundenen Baustein umbenannt.
Und dann den Baustein TONOF eingebunden.