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!
und zwar habe ich hier eine cDAQ 9134 RT Kiste stehen, die noch zwei 9237 Ethernet Module hat. Momentan habe ich das 9134 per Ethernet verbunden und wird im NI-MAX als Objekt unter Netzwerkungembung angezeigt. Da kann ich auch wunderbar das Testpanel starten und den am 9237 Modul verbundenen Kraftmesser auslesen. Tasks kann ich da auch erstellen und funktioniert auch soweit.
Zum Testen hatte ich vorher die selbe Konfiguration als Simulation erstellt, die halt unter dem lokalen "Mein System" aufgeführt werden und die Channel haben dort auch die selben Namen mit "-simu" am Ende um diese mit den realen Channels auseinanderhalten zu können. Hier sieht man ein Bild von der Konfiguration:
Mein Problem ist jezt, dass ich unter Labview nur die simulierten Channel/Tasks angezeigt bekomme und nich die realen, wenn ich hier z.B. "Browse...." anklicke. Wenn ich die simulierten Channel ausmache, dann wird da garnix mehr angezeigt, und das gilt für Channel sowie Tasks. (Das Bild ist aus einem der Beispiel VIs)
Jemand eine Idee woran das liegt?
Und noch eine mehr generelle Frage, wie hängt jetzt der Real-time Betrieb mit diesen physikalischen Channeln/Tasks zusammen bzw wie kommt man unter RT an die Daten. Ich bin noch blutiger Anfänger auf dem RT Gebiet, hab aber schon einiges gelesen, nur das Thema ist ziemlich umfangreich.
Momentan nutzen wir hauptsächlich Labview 2011 aufgrund der Programmauslieferung an Kunden etc..., auf dem 9134 ist aber Real Time 14.0 vorinstalliert gewesen, dass heißt ich komme nicht drum herum, dann zusätzlich noch Labview 2014 mit dem Realtime 14.0 auf meinem Rechner zu installieren, weil so wie ich das verstanden habe, man nicht Realtime 14.0 für Labview 2011 installieren kann sondern nur 11.0 richtig?
In einem Punkt muss ich Gerd widersprechen: Das cDAQ 9134 hat keinen programmieren FPGA, das ist eine reine RT-Kiste bzw. alternativ WES7 (heißt ja auch cDAQ, nicht cRIO). Mit den cModulen kommunizierst du laut NI-Seite per DAQmx.
Um LabVIEW 2014 (inkl. RT) wirst du aber nicht herumkommen, das Teil ist zu neu, als dass es ältere LabVIEW Versionen supporten.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
OK danke schonmal für die Antworten, jemand noch eine Idee warum ich momentan nur die simulierten Channel/Tasks auswählen kann und nicht die physikalischen?
vielleicht, weil dein cDAQ9134 nach LV2011 erschien und damit nicht von LV2011 unterstützt wird?
NI-Politik: Neue Hardware wird immer nur von maximal gleich alten (oder jüngeren) (DAQmx-)Treibern unterstützt. Und der DAQmx-Treiber wiederum kann sich nur in maximal gleich alte LV-Versionen einklinken…
Die Specs deines cDAQ sind von 2014, damit wird wohl mindestens LV2013 nötig sein. Genaueres dazu kann dir der NI-Support (089-7413130) sagen!
Weil du höchstwahrscheinlich dein LabVIEW-Projekt falsch bzw. nicht vollständig angelegt hast.
An die RT-Tasks & Kanäle kommst du nur in einem VI dran, welches unter dem RT Target läuft.
Also:
- In deinem LV-Project zuerst ein neues Target einrichten.
- Dieses Target als cDAQ-9134 definieren.
- Dort die entsprechenden Karten einrichten (Diese 3 Schritte lassen sich auch bei angeschlossenem cDAQ auch automatisch durchführen.
- Dann unter diesem Target ein neues VI erstellen.
- Jetzt kannst du auf die AI-Kanäle des cDAQ zugreifen.
Und verabschiede dich unter RT von Pfaden a la "C:\Users\lokaler Desktop".
Gruß, Jens
P.S.: Niemand zwingt dich dazu, die DAQmx-Task-Refnums beim Erstellen zu verwenden. Die kann man auch als String selber zusammenbauen und am Eingang von "Create Channel" anschließen.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
So ich hab jetzt mein Teil gut am laufen mit auch Kommunikation zwischen Host PC und dem RT und meiner Kraftmessdose, die angeschlossen ist, indem ich mich u.a. an dem "getting started template" langehangelt habe.
Mein Problem jetzt gerade: Ich hab 8 Kraftmessdosen bzw 8 physikalische Channel, die unterschiedliche Skalierungen (max Werte) haben. Ich kann ja in einer Channel-Konstanten mehrere Channel auswählen, wo dann der Task erstellt, dann ausgelesen und in einem Graph mit mehreren Kurven angezeigt wird.
Nur ich bin iwie nicht in der Lage, jedem physikalischem Channel eine eigene Skalierung zuzuweisen, weil es mit der "Multi-Channel-Konstanten" unklar ist wie das gehen soll. Jedoch wenn ich die Channel zusammen in ein Array sortiere und dann durch ne for schleife schieße (ist in dem einen Beispielbild und Vi wieder rausgenommmen), dann gibts Fehler beim Task starten (weil schon vorhanden) bzw. Auslesen. Weil es auch einfach keinen Sinn macht mit dem Indizieren, wenn man sich das genau anguckt, nur ich weis momentan nicht, wie ich das lösen kann und ich es hinbekomme, als ob ich eine Konstante mit allen Channeln verwenden würde.
Ich hoffe Ihr versteht was ich meine. Unten hab ich zwei Bilder und das vi.
13.02.2015, 13:10 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2015 13:11 von GerdW.)
Zitat:Jedoch wenn ich die Channel zusammen in ein Array sortiere und dann durch ne for schleife schieße (ist in dem einen Beispielbild und Vi wieder rausgenommmen), dann gibts Fehler beim Task starten (weil schon vorhanden) bzw. Auslesen. Weil es auch einfach keinen Sinn macht mit dem Indizieren, wenn man sich das genau anguckt, nur ich weis momentan nicht, wie ich das lösen kann und ich es hinbekomme, als ob ich eine Konstante mit allen Channeln verwenden würde.
Das mit der FOR-Loop ist schon korrekt. Was noch falsch ist: du erstellst für jeden Kanal einen neuen Task, willst aber eigentlich einen Task mit mehreren Kanälen haben!
Also: Schieberegister nutzen, um sich den Task zu merken!
Und das DAQmxStart gehört natürlich NICHT in die Schleife!
Zitat:Jedoch wenn ich die Channel zusammen in ein Array sortiere und dann durch ne for schleife schieße (ist in dem einen Beispielbild und Vi wieder rausgenommmen), dann gibts Fehler beim Task starten (weil schon vorhanden) bzw. Auslesen. Weil es auch einfach keinen Sinn macht mit dem Indizieren, wenn man sich das genau anguckt, nur ich weis momentan nicht, wie ich das lösen kann und ich es hinbekomme, als ob ich eine Konstante mit allen Channeln verwenden würde.
Das mit der FOR-Loop ist schon korrekt. Was noch falsch ist: du erstellst für jeden Kanal einen neuen Task, willst aber eigentlich einen Task mit mehreren Kanälen haben!
Also: Schieberegister nutzen, um sich den Task zu merken!
Und das DAQmxStart gehört natürlich NICHT in die Schleife!
Ok danke, funktioniert problemlos, wenn man den shift register an das Create Channel Teil vorne wieder anklemmt. Da war mir eh ein Rätsel, was ich da anschließen soll, da der Task ja erst danach erstellt wird.