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!
' schrieb:Leider zählt der ctr1 immer doppelt. Also z.B 511 511 801 801 ...
Das glaube ich nicht...der Counter zählt 100%ig einfach...was aber vermutlich passiert ist, dass du doppelt ausliest, d.h. zwei- (oder mehrmals) einfach den gleichen Zählerstand! Das heißt, du zählst zu langsam bzw. die Triggerung passt nicht so richtig...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Wie ich in dem vorigen Thema bereits beschrieben habe, muss ich folgendes Problem mit DAQmx lösen. Ich überarbeite gerade ein Programm, das noch DAQ-trad VIs benutzt. Diese sollen ersetzt werden.
Aufgabe:
Wir fahren mit einem Kraftsensor, der auf einer Spindel sitzt gegen einen Gegenstand (Druckschalter). Die Spindel wird über einen Schrittmotor angesteuert. Am Ende der Spindel sitzt ein Winkelencoder. Somit können wir den zurückgelegten Weg und über einen Sensor die Kraft erfassen. Die Kraft muss über den Kanal ai0 erfasst werden. Die Striche des Encoders müssen über den counter1 gezählt werden. Jetzt möchten wir eine Auflösung einstellen können. Die Frequenz mit der erfasst wird, berechnet sich dann durch die Geschwindigkeit/gewünschte Schrittweite. Das Timing der AD Wandlung von ai0 läuft in meiner neuen Version über den Onboardclock. In einer Schleife lese ich dann einen Sample und gleichzeitig den Zählerstand EINMAL ein.
Die Frequenz mit der erfasst wird, stimmt. Der counter1 zählt leider falsch, wie schon beschrieben (0, 0, 5, 5, ...). Lasse ich beides getrennt laufen, funktioniert alles.
Zudem schaffe ich es nicht, die Funktionalität der alten DAQ-trad VIs nachzubilden. Besonders lässt mich das VI(trad) "Signale erzeugen" mit den Eingängen AI Scan Start und PFI7 ein bisschen stutzen. PFI7 ist ja ctr1out. Triggert dann etwa ctr1 meine AD-Wandlung von ai0?
Ich habe mal beide VIs angehängt. Die VIs, die fehlen sollten, sind nur für die Motorsteuerung notwendig. Ich würde mich wahnsinnig freuen, wenn mir jemand weiterhelfen würde. Bin da jetzt seit einer Woche am rätseln, habe einiges gelesen, aber komme einfach auf keinen grünen Zweig. Das Problem der Doppelzählung halbiert natürlich unsere Auflösung, da das Resultat ja eine Kurve "Kraft über Weg" ist. Zudem ergeben sich durch die Doppelzählung Unstetigkeiten.
Das Projekt ist NICHT kommerziell, sondern wir basteln in unserem Studiengang Elektrotechnik an einem Teststand für Druckschalter. Ich habe die alte Version und die neue mal angehängt.
Über eine Antwort freue ich mich.
Gruß Marcel
Anhang:
Messsequenz_Linear (alt)+Screenshot
Messsequenz_Linear_Neu
+Config von DAQmx-Task (Schalt1-6 sind weitere analog input Kanäle, spielt ja keine weitere Rolle)
Die Verletzung von Regeln bitte ich zu entschuldigen. Problem hat sich gelöst. Benutze jetzt counter1 zum triggern. Trotzdem kommt es mir seltsam vor, das ein counter doppelt zählt, wenn man den onboardclock gleichzeitig zum wandeln über ai0 nimmt. Werde das mal bei NI nachfragen und die Antwort hier posten.
Danke!
Marcel
27.10.2008, 23:10 (Dieser Beitrag wurde zuletzt bearbeitet: 27.10.2008 23:10 von jg.)
Ah, gut, dann schaue ich nicht weiter in dein VI. Berichte über deine Ergebnisse. Mit den E-Serien-Karten kenn ich mich leider nicht so aus. Bei einer M-Serien Karte wäre das ganze viel einfacher. Da wird bei einem internem Hardware-Takt kein externer Pin zur Datenerfassung benötigt.
bauen Sie bitte mal zwei einzelne Vi´s. Eins für Analog und eins für Counter. Kann dann Vi´s parallel laufen lassen. Synchronisation kann man dann über Counter - externer Takt nachträglich machen. Hauptsache es läuft mal einzeln. Dazu das Timeout Problem anpacken indem man einmal ohne Trigger das Ganze laufen lässt und dann wenn es klappt diesen einbaut und mit unterschiedlichen Triggersignalen tested. Bei Ihnen ist gepufferte Analog Erfassung (-> getime-te Schleife mit Counter zusammen -> der will dieses Timing eigentlich nicht -> Counterprobleme wie geschildert)