09.03.2014, 13:53
Beitrag #1
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
Hallo zusammen,
ich bin auf der Suche nach einer Lösung für folgende Problemstellung:
Ich messe mit einer NI PXI 6602, einem 2000 Stiche-Encoder und DAQmx auf einem PXI-System unter LV2011DS1 eine Winkel-Position. Momentan ist der Task so eingestellt, dass der Zähler-Stand der Winkelposition bei jedem Z-Tic ("Null-Spur") zu Null gesetzt wird, d.h. der Winkel zählt (je nach Drehrichtung) immer bis +- 360° und springt dann auf 0° zurück.
Das ist prinzipiell schon mal gut, da ich die Referenzierung über die Null-Spur auch brauche. Was ich aber nicht brauchen kann ist, dass der Winkel bei jedem Z-Zic auf 0 springt, der Zähler soll lediglich EIN MAL beim Eintreffen des ersten Z-Tics auf Null springen und von da an kontinuierlich den Winkel rauf oder runter zählen.
Andersrum ausgedrückt: ich will beim 1. Eintreffen des Z-Tics den physikalischen Winkel des Encoders mit von der 6602 gemessenen Winkel abgleichen, quasi wie so eine Art Referenzfahrt. Da der Task über Stunden laufen soll oder ggf. sogar von Morgens bis Abends und das ganze automatisch "nebenbei" passieren soll ist es keine Lösung den Task zu stoppen, den letzten bekannten Winkel zu übernehmen, den Task neu zu starten und den letzten gemessenen Winkel als Offset zu verrechnen.
Hat dafür jemand einen Tip oder eine Lösung?
Danke & viele Grüße
cb
|
|
|
10.03.2014, 07:58
Beitrag #2
|
|
|
10.03.2014, 08:32
Beitrag #3
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
der Counter Task zählt den Winkel als Double, der läuft so schnell nicht über, ausserdem läuft die Maschine vorwärts und rückwärts, da zählt er dann irgendwann wieder runter.
Nein, ich vermute nicht dass die 6602 falsch zählt, ich will nur dass der Winkel den der DAQmx-Task ausspuckt zu einer bestimmten physikalischen Winkelposition referenziert ist und das bei jedem Einschalten des Geräts. Und da eignet sich der Z-Zic nunmal hervorragend, weil er immer an der gleichen Winkelposition auftritt, so lange der Encoder nicht auf der Achse mechanisch verdreht wird.
Aber ich glaube ich hab schon eine Lösung, die werde ich nachher mal ausprobieren (erstmal muss ich zum Zahnarzt ... ): ich nehme den Z-Tic als Arm-Start-Trigger für den Encoder-Task. Dann sollte der Counter erst mit dem Eintreffen des 1. Z-Tics mit dem Zählen beginnen und ich hätte genau den Effekt den ich haben will. Mal schaun ob's so funktioniert ...
Danke & Grüße
cb
|
|
|
10.03.2014, 09:20
Beitrag #4
|
|
|
10.03.2014, 12:25
Beitrag #5
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
(10.03.2014 09:20 )macmarvin schrieb: Der Counter auf der Karte hat nur 32bit und die können je nach Anwendung auch recht zügig erreicht werden, deshalb mein Hinweis, was DAQmx bei erwartetem aber ausbleibendem Z-Pulse macht.
Wenn's aber eher hin und her geht und nicht zu schnell, reicht es natürlich dicke.
trozdem ein guter Hinweis, Danke! Um auf der sicheren Seite zu sein, werd ich dann den Zählerstand auslesen und den Überlauf selbst behandeln anstatt mich drauf zu verlassen dass die DAQmx-Skalierung das schon alles richtig machen wird ...
So wie ich mir das jetzt vorstelle wird der Z-Puls genau einmal nach dem Start des Tasks verwendet. Danach wird er zwar weiter "eintrudeln" aber nicht weiter beachtet, weil der Trigger für den Task ja schon gekommen ist. Ich werde hoffentlich heut Nachmittag rausfinden was passiert wenn der Task gestartet wurde und die Maschine noch für eine Minute oder länger still steht. Ggf. muss ich halt noch 'ne Fehler-Behandlung einbauen.
Bevor ich jetzt mit 'ner externen Elektronik anfange bestell ich lieber noch 'ne kleine FPGA-Karte, da kann ich das alles in Software abbacken und muss mir nicht einen abbrechen mit 'ner komplizierten API ...
Danke & Grüße
cb
|
|
|
10.03.2014, 14:29
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2014 14:31 von cb.)
Beitrag #6
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
RE: DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
Ok, hab's gelöst:
Ich benutze wie schon weiter oben beschrieben die Z-Spur am PFI38 (der NI PXI 6602, Counter 0) als Arm-Start Trigger:
und beim Warten auf den 1. Z-Tic der das ganze startet fange ich den Fehler "-200284" ab der bedeutet, dass ich mehr Samples abgerufen habe als gesamplet wurden (was für mich übersetzt heisst: sind noch keine Samples da, frag später nochmal ...)
der Task läuft troz der Fehlermeldung weiter, man kann sie behandeln und dann einfach nochmal Daten auslesen, wunderbar
Danke & Grüße
cb
|
|
|
| |