Countereingang - Flanken zählen: wo Trigger definieren
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Countereingang - Flanken zählen: wo Trigger definieren
Hallo zusammen,
ich habe folgende Situation bzw. folgendes Problem:
Ich erfasse einen Winkel über CI-Winkelaufnehmer und möchte nun durch einen externen Trigger den Winkel mitloggen.
Vom Prinzip her habe ich mir gedacht, bietet sich hierfür CI-Flankenzählen an. Immer wenn dort eine Flanke auftaucht, speichere ich den aktuellen Winkel in einem Array. Soweit die Idee...Allerdings finde ich keine Möglichkeit, bei CI-Flankenzählen ein Eingangssignal zu definieren, sprich dem Programm zu sagen, von welchem externen Trigger er ausgehen soll.
Ich habe schon eine ganze weile gegoogelt und herumgewurschtelt. Leider ohne Erfolg . Ich sollte erwähnen, dass ich nicht mit Labview groß geworden bin und vielleicht auch irgendwo komplett falsche Ansichten habe, jedoch habe ich einige Erfahrungen mit Programmierung, daher würde ich vom Gefühl her sagen, dass dies eigentlich ganz einfach gehen müsste.
Daher habe ich mich nun entschieden hier im Forum um Hilfe zu fragen, vielleicht ist mein Ansatz ja garnicht möglich und ich drehe mich die ganze Zeit unnötigerweise im Kreis.
Ich hoffe, mein Problem einigermaßen beschrieben zu haben, falls nicht bin ich gerne bereit noch weit zu erklären, was ich genau gemacht habe bzw. vorhatte.
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo SeeAdler,
Zitat:Ich erfasse einen Winkel über CI-Winkelaufnehmer und möchte nun durch einen externen Trigger den Winkel mitloggen.
- Was ist ein "CI-Winkelaufnehmer"? Ist das ein Sensor, der Impulse ausgibt?
- Wo bekommst du den externen Trigger her?
- Warum einen Trigger zum Flankenzählen?
Zitat:Vom Prinzip her habe ich mir gedacht, bietet sich hierfür CI-Flankenzählen an. Immer wenn dort eine Flanke auftaucht, speichere ich den aktuellen Winkel in einem Array.
Wo bekommst du den aktuellen Winkel her?
Lösungsvorschläge:
- Öffne den Beispielfinder und stelle dein Board ein, um die gefundenen Beispiele einzugrenzen. Dann wirst du einiges zu CTR etc, finden...
- Wenn ich deine Ausführungen richtig deute, brauchst du einen CTR, um die Impulse des Sensors zu zählen und einen Trigger, der dir angibt, wann du die CTR-Werte lesen willst. Beispielefinder...
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo Gerd,
vielen Dank für deine Antwort.
Also ich bekomme meinen aktuellen Winkel über 2 Inkrementalgeber und einen Phasenindikator, die Erfassung des Winkels klappt auch, momentan wird der aktuelle Winkel kontinuierlich auf dem Bildschirm angezeigt.
Ich habe einen externen Trigger, bzw. vermutlich ist der Begriff 'Trigger' hier auch falsch und ich sollte von einem "Auslöser" sprechen: Es handelt sich um ein externes TTL Signal, welches in unregelmäßigen Abständen kommt. Ich möchte nun jeweils den aktuell vorliegenden Winkel erfassen (in einem Array oder ähnlichem), wenn der externe "Auslöser" ein Signal sendet.
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo SeeAdler,
nein, mit Beispielfinder meinte ich den entsprechenden Eintrag "Beispiele finden..." im Hilfe-Menü von LabVIEW.
CTR ist die LabVIEW-übliche Abkürzung für einen "Counter".
Zitat:Ich habe einen externen Trigger, bzw. vermutlich ist der Begriff 'Trigger' hier auch falsch und ich sollte von einem "Auslöser" sprechen: Es handelt sich um ein externes TTL Signal, welches in unregelmäßigen Abständen kommt. Ich möchte nun jeweils den aktuell vorliegenden Winkel erfassen (in einem Array oder ähnlichem), wenn der externe "Auslöser" ein Signal sendet.
Also doch Trigger! Du brauchst einen CTR-Task, der jeweils dann einen Wert liefert, wenn dein Trigger-Signal eintrifft...
Schau dir die Beispiele zu den CTR und den Trigger-Möglichkeiten an!
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo Gerd,
also genau diesen CTR-Task meinte ich in meinem ersten Post: CI-Flankenzählen: CI = Counter-Input. Ich hatte nur das DAQmx-Timing irgendwie nicht gefunden...
Das Programm schreibt nun die entsprechenden Winkel beim Eingang eines Triggersignals in eine Datei. Soweit funktioniert alles, ich habe jedoch noch eine Frage, bzw. kann ich mir eine Sache nicht erklären. Die brauche ich zwar zur Funktionsfähigkeit nicht, aber ich würde sie dennoch gerne verstehen:
Ich lese mir über einen DAQmx-Read den Wert der Flankenzählung aus und lasse Ihn mir anzeigen. Dieser bleibt jedoch immer gleich dem Anfangswert, welchen ich bei der Erzeugung eingestellt hatte. Das ist für mich nicht weiter wichtig, weil ich selber hochzählen kann und dann weiß, dass der 5. Winkel zur 5. Messung gehört; aber ich glaube, da habe ich vielleicht noch ein Verständnis-problem mit dem "Flankenzählen"...
Ich hätte erwartet, dass nun der Wert jeweils um 1 erhöht wird, wenn ein neuer Trigger-Impuls registriert wird. Das ist schon etwas komisch, da die Trigger Impulse richtig erkannt werden und nur dann wird ein neuer Winkel-Wert(aus dem CI-Winkelaufnehmer Task) ans array angehängt, aber der Anfangswert des zählers im CI-Flankenzählen Task wird nicht erhöht.
Dies passiert ebenfalls in dem Beispiel von Labview, also nehme ich an, dass ich dort nur etwas falsch verstanden/erwartet habe. Kannst du mir da noch etwas auf die Sprünge helfen?
Vielen Dank,
Grüße
SeeAdler
16.01.2013, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 16.01.2013 14:07 von GerdW.)
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo SeeAdler,
du musst zwischen Trigger (=Auslesezeitpunkt) und eigentlichem Zähler (=CTR-Input) unterscheiden!
Deine Winkelpulse musst du schon an die Eingänge des CTR anschließen. Dein Triggersignal kommt an den gewählten Trigger-Input und legt die Zeitpunkte fest, an denen der aktuelle CTR-Stand abgefragt wird...
RE: Countereingang - Flanken zählen: wo Trigger definieren
Hallo Gerd,
ich habe eine ganze Weile drüber nachgedacht und kann dir allerdings nicht so ganz folgen. Bzw. habe ich den Verdacht, dass wir ein bisschen aneinander vorbeireden, weil ich vermutlich nicht alle deine Begriffe richtig zuordnen kann.
Ich habe dir mal ein Screenshot von meinem Blockdiagramm angehängt, vielleicht erklärt sich dann besser, was ich mit CI-Flankenzählen und CI-Winkelaufnehmer meine.
Das einzige, was ich mir noch vorstellen könnte, wäre, dass ich den Sample-Takter in den CI-Winkelaufnehmer integriere? wobei ich nicht sicher bin, ob dann der Winkel noch richtig gemessen wird, wenn die "Taktrate" dann zu gering ist. Oder ist der Sample-Takt nur die Auslese-Rate und intern wird mit "Maschinengeschwindigkeit" weiterhin der Winkel gemessen? Das Winkel messen selber geschieht durch einen WinkelaufnehmerTask über A-B-Z Inkrementalgeber.