INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen



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!

09.03.2014, 13:53
Beitrag #1

cb Offline
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

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.03.2014, 07:58
Beitrag #2

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
Wenn ich das richtig verstanden habe, willst Du einseits das genaue Rücksetzen des Zählers per HW und danach einen frei laufenden Zähler!?!
Vermutest du denn, das die 6602 die Flanken falsch zählt?
So als erste Idee ins Blaue... nimm einen DO Kanal und nimm den per ext. AND Gatter als Enable für dein Z-Signal(e). Wobei ich keine Ahnung habe, was DAQmx aus einem Winkeltask macht, falls der Counter wegen fehlenden Z überlaufen sollte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2014, 08:32
Beitrag #3

cb Offline
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 ... Wacko): 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

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2014, 09:20
Beitrag #4

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
RE: DAQmx Encoder Task nur einmal bei Z-Tic auf Null setzen
(10.03.2014 08:32 )cb schrieb:  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.

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2014, 12:25
Beitrag #5

cb Offline
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

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.03.2014, 14:29 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2014 14:31 von cb.)
Beitrag #6

cb Offline
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

Akzeptierte Lösung

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 Wink ...)

   

der Task läuft troz der Fehlermeldung weiter, man kann sie behandeln und dann einfach nochmal Daten auslesen, wunderbar Smile

Danke & Grüße
cb

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.03.2014, 14:49
Beitrag #7

cb Offline
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
Nachtrag: ich hab das mit dem Counter-Überlauf nochmal geprüft:

Mein Encoder hat 2048 Striche pro Umdrehung, ich werte mit X4 aus, macht einen Counter-Stand von 4 x 2048 = 8192 Inkrementen pro Umdrehung.

Der Maximal-Wert von U32 = 4294967295
Der Prüfstand dreht mit max. 3000 U/min

das macht 524288 Umdrehungen (mit X4 und 2048 Strichen) in eine Richtung bevor der Counter überläuft oder 2,91 Stunden bei 3000 U/min immer in die selbe Richtung. Da eine Prüfung max. 30 Minuten dauert werde ich wohl den Task bei jedem neuen Prüfling neu starten, dann bin ich auf der sicheren Seite ...

Und in's Handbuch muss rein, dass der Prüfstand nicht dauerlauffähig ist, damit keiner auf blöde Gedanken kommt und das Ding länger als 2,9 Stunden in eine Richtung laufen lässt. Aus dem Blickwinkel betrachtet war der Tip mit dem Überlauf durchaus sinnvoll, vielen Dank!

Grüße
cb

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Synchronisierung von Analogen Signalen mit digitalem Encoder Benj1man 8 6.380 12.05.2020 10:38
Letzter Beitrag: Benj1man
  Encoder - Sinus / Cosinus auswerten nxitimi 17 15.739 25.01.2018 19:26
Letzter Beitrag: Lucki
  Encoder-Signal einlesen creo_123 6 6.578 11.01.2018 15:03
Letzter Beitrag: creo_123
  Frequenz "Null" messen Mila 25 20.046 12.02.2016 14:24
Letzter Beitrag: Reiling
  For-Schleife - Werte bei einen weiteren Start auf null setzt zichte89 6 5.950 24.05.2015 00:25
Letzter Beitrag: zichte89
  Quadratur Encoder: Counter Werte einzeln auslesen? Daniel_S 6 8.113 23.03.2015 10:26
Letzter Beitrag: Daniel_S

Gehe zu: