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!
Ich bin Labview-Anfänger, und meine Aufgabe ist ein eher kleines Programm (Nachdem ein Button gedrückt wurde, sollen ca. 10 Minuten lang alle 10ms Werte an eine Pumpe geschrieben und gleichzeitig gelesen werden).
Ich verwende dazu das Realtime-Modul und ein cRio-Gerät!
Nun meine Frage:
In Labview2010 habe ich die Möglichkeit, ein neues "Echtzeitprojekt" zu erstellen. Das hab ich mal gemacht und da kann ich auch gleich mal mein cRio-Gerät auswählen samt den angeschlossenen Karten. Am Ende ist mir aufgefallen, dass automatisch gleich 2 verschiedene Vi's erstellt werden, und zwar unter dem Gerät, welches ich ausgewählt habe (laufen diese VI's dann direkt auf dem Gerät, und nicht auf meinem PC?).
- Wofür braucht man diese 2 Vi's, bzw. braucht man diese überhaupt
- man kann auswählen, ob eine Host-VI angelegt werden soll? Wofür ist diese (eventuell zur Steuerung des Gerätes direkt vom Notebook?
Eigentlich bräuchte ich am Schluß nur eine exe, welche ich auf meinem Notebook (welches über Ethernet mit dem cRio verbunden ist) starten, und damit die Pumpe steuern, kann. Könnte ich auch einfach ein normales Projekt anlegen, dann mein Gerät hinzufügen, und eine einzige Vi anlegen, oder müssen bei einem Echtzeitprojekt die VI's auf dem cRio direkt laufen?
Ich hoffe ihr verzeiht mir meine Anfängerfragen, und könnt mir helfen!
LabVIEW-Neuling, und dann gleich ein RT-Target, IMHO nicht die idealer Einsteiger-Option. Das ist irgendwie so, als wenn du das Autofahren gleich mit einem Formel-1-Auto lernen sollst.
Zitat:In Labview2010 habe ich die Möglichkeit, ein neues "Echtzeitprojekt" zu erstellen. Das hab ich mal gemacht und da kann ich auch gleich mal mein cRio-Gerät auswählen samt den angeschlossenen Karten. Am Ende ist mir aufgefallen, dass automatisch gleich 2 verschiedene Vi's erstellt werden, und zwar unter dem Gerät, welches ich ausgewählt habe (laufen diese VI's dann direkt auf dem Gerät, und nicht auf meinem PC?).
VIs, die unter dem Real-Time-Target angelegt sind, laufen am Ende auch auf dem RT-Target. Das ist schließlich ein eigener kleiner Computer mit Prozessor, Speicher, Betriebssystem, ...
Zitat:- Wofür braucht man diese 2 Vi's, bzw. braucht man diese überhaupt
Kommt darauf an, was für eine Option du ausgewählt hast. Du kannst die Funktionalität natürlich auch auf nur 1 oder viele VIs verteilen. Das ist nur eine Assistent, der dir den Einstieg erleichtern soll.
Zitat:- man kann auswählen, ob eine Host-VI angelegt werden soll? Wofür ist diese (eventuell zur Steuerung des Gerätes direkt vom Notebook?
Genau, überliches Vorgehen: Steuerung vom PC (=Host) aus, Nachrichten per TCP an das RT-System (Target), damit dieses möglichst wenig mit so zeitraubenden Sachen wie grafischer Darstellung etc. belastet wird. Ziel ist schließlich in der Regel ein echtzeitfähige Anwendung
Zitat:Eigentlich bräuchte ich am Schluß nur eine exe, welche ich auf meinem Notebook (welches über Ethernet mit dem cRio verbunden ist) starten, und damit die Pumpe steuern, kann. Könnte ich auch einfach ein normales Projekt anlegen, dann mein Gerät hinzufügen, und eine einzige Vi anlegen, oder müssen bei einem Echtzeitprojekt die VI's auf dem cRio direkt laufen?
Ja, es muss immer mind. 1 VI/exe auf dem cRIO ausgeführt werden, damit sich da was tut. Du kannst am Ende auch eine Exe spezifisch für das RT-System erstellen. Aber das führt jetzt zu weit.
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!
Würde es auch reichen, wenn ich ein normales Projekt anlege, und da einfach mein Gerät dazufüge, und dann eine VI erstelle, welche ich aber NICHT unter das Gerät gebe (oder MUSS eine VI auf dem Gerät sein?).
Wie gesagt, ich will mein Programm bzw. die Pumpe vom Notebook aus steuern können, würde da auch ein "normales" VI ausreichen, oder wie sollte man das am besten lösen?
Zitat:ich will mein Programm bzw. die Pumpe vom Notebook aus steuern können, würde da auch ein "normales" VI ausreichen, oder wie sollte man das am besten lösen?
Das VI, welches auf die Ein/Ausgabe-Pins an den cRIO-Modulen zugreifen soll (also die Pumpensteuerung), muss auch auf dem cRIO laufen! Das bedeutet, dieses VI muss auf dem cRIO-Target laufen und dementsprechend auch in deinem Projekt dem cRIO zugeordnet sein.
Ob dieses "VI" nun vom Notebook aus der Entwicklungsumgebung heraus aufgerufen wird (und trotzdem auf dem cRIO läuft) oder du eine RTExe erstellst, ist dann erstmal nebensächlich...
Danke für deine Antwort, jetzt versteh ich, wie das gelöst werden soll! Wenn nun die VI auf dem cRio läuft, kann ich doch sicher eine normale exe erstellen, welche ich dann auf meinem Notebook starte?
PS: Nur aus Interesse: Wenn ich ein neues Echtzeitprojekt erstelle, werden zwei VI's automatisch erstellt, und zwar unter dem cRio, namens "target-single rate.vi" und "support-aquire data.vi"! Für was benutzt man diese beiden VI's
Ich hab nun ein wenig rumgetestet und mir ist folgendes aufgefallen: Du hast ja gesagt, dass meine VI, wo ich Werte von dem cRio lese oder schreibe, auf dem cRIO laufen MUSS (bzw. unter dem cRio-Gerät eingetragen sein muss). Ich habs anfänglich so gemacht, und es hat auch alles funktioniert. Ich hab dann einfach mal testweise meine VI vom cRio-Gerät weggezogen und unter "Mein Computer" gegeben, und siehe da: Auch dann funktioniert mein Programm noch? Warum ist das so?
Ich hab nämlich mal versucht, eine *.exe zu erstellen, wenn meine VI unter "Mein Computer" ist, dann kann ich auch eine exe erstellen, ist die VI aber unter dem cRio-Gerät, dann kann ich nur eine *.rtexe erstellen, aber wie kann ich diese unter Windows ausführen?
Ich lade dir mal nen Screenshot hoch, damit du weißt, was ich meine (bzw. auch nen Screenshot von meinem Programm, vl. fällt dir was auf, eventuell könnte ich ja was ändern?)
Eine rtexe kannst du nicht unter Windows ausführen! Die ist - vereinfacht dargestellt - spezifisch für das RealTime-Betriebssystem des cRIO (in deinem Fall VxWorks) kompiliert.
Dass dein VI (inkl. Hardware-Ansteuerung) auch unter Windows funktioniert, hat mit ein paar Spezialitäten zu tun. Du greifst über den sogenannte "Network Shared Variable" (per TCP-IP-Netzwerk) auf die cRIO-Resourcen zu.
VIs, die keinen spezifischen Target-Funktionen beinhalten, lassen sich in der Regel immer austauschen und unter jedem Zielsystem ausführen, das ist das Besondere an LabVIEW und nichts Ungewöhnliches.
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!
Über die Suchfunktion dieses Forums bin ich auf dieses Thema gestoßen. Ich habe ein paar (eher prinzipielle) Fragen passend dazu. Momentan arbeite ich mich in das Thema "Entwicklung eines Echtzeitprojekts" ein. Folgendes habe ich bereits herausgefunden:
Ein Echtzeitprojekt kann aus VIs
- Host-VI
- Target-VI
- FPGA-VI
bestehen und es empfiehlt sich, die zu erstellende Anwendung folgendermaßen zu gliedern:
- Host-VI: Benutzeroberfläche
- Target-VI: Steuerungs- und Regelungsprozesse bzw. alle Prozesse, die in Echtzeit ausgeführt werden müssen
- FPGA-VI: Datenerfassung und Signalerzeugung
Beim Anlegen des Echtzeitprojekts werden standardmäßig drei VIs erstellt. Diese können den drei oben aufgeführten VIs wie folgt zugeordnet werden.
- host - network - RT (separate).vi -----> Host-VI
- target - multi rate - variables.vi -----> Target-VI
- support - acquire - RT (separate).vi -----> FPGA-VI