LabVIEWForum.de - Können mehrere LabVIEWprogramme gleichzeitig auf eine PCI Karte zugreifen

LabVIEWForum.de

Normale Version: Können mehrere LabVIEWprogramme gleichzeitig auf eine PCI Karte zugreifen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich betreue neuerdings einen Prüfstand, der sich in 4 Einheiten unterteilt.
Wir wollen für jede Einheit ein LabVIEW-Programm benutzen. Alles läuft letztendlich in einer NI PCI 6229 Karte zusammen.

Meine Frage: Ist es überhaupt möglich mit 4 LabVIEW-Programmen unabhängig voneinander auf eine PCI 6229 Karte zuzugreifen???

Bisher funktioniert dies scheinbar nicht...(Fehlermeldung 50103, physikalische Ressource ist besetzt)...

Vielleicht kann mir jemand weiterhelfen?

Besten Dank im Voraus!

Grüße

RW
Hallo RW,

wie du schon richtig erkannt hast, wird die Karte von einer Anwendung her "exklusiv" reserviert.
Von daher wirst du aus meiner Sicht nicht ohne weiteres mit allen 4 Programmen "gleichzeitig" auf die Karte zugreifen können.

Ein Möglichkeit wäre z.B. von einer Applikation zuzugreifen und die Daten dann zu verteilen...

Gruß Dennis
Hallo!

Man hat mir empfohlen um mit 4 Labiview-Programmen auf eine NI PCI 6229 Karte zuzugreifen eine sogenannte Application zu benutzen.

Es wäre sehr nett, wenn mir jemand erklären könnte, was das genau ist, wie das funktioniert und ob das ein großer Aufwand ist sowas umzusetzen.

Im Voraus besten Dank!

Grüße

RW
' schrieb:Hallo!

Man hat mir empfohlen um mit 4 Labiview-Programmen auf eine NI PCI 6229 Karte zuzugreifen eine sogenannte Application zu benutzen.

Es wäre sehr nett, wenn mir jemand erklären könnte, was das genau ist, wie das funktioniert und ob das ein großer Aufwand ist sowas umzusetzen.

Im Voraus besten Dank!

Grüße

RW

ägyptn? HÄ? *blond guck*

eine Applikation ist eine Anwendung, also ein "Stück" Software, die irgendetwas macht. Word ist z.B. eine Applikation mit der man Text erstellen kann, Photoshop ist eine Applikation mit der man Bilder bearbeiten kann etc ...

ich find diesen "Tip" saumäßg bescheuert und von mir aus kannst du mich beim Tipgeber gerne zitierenWink. Wenn man jetzt ganz in die Ferne greift könnte man schlußfolgern, dass der Tipgeber gemeint haben könnte, dass du dir selbst eine Anwendung schreibst, die die von der Messkarte erfassten Daten für mehrere Subscriber zur Verfügung stellt. Das ist aber nicht ganz ohne und am besten schaust du dir dazu mal Eugens "Publish-Subscriber-Turorial" an auf http://www.LabVIEW-tutorial.eu an und einen Überblick zu bekommen, was da an Aufwand drin steckt.

Das grundsätzliche Problem bei der Geschichte ist: du kannst über den DAQmx-Treiber halt nur einmal auf die Ressource zugreifen, dann ist sie für den zuerst erfolgten Zugriff belegt (das is quasi wie ein Platz im Kino). Alle weiteren, parallelen Zugriffe stellen dann halt fest, dass die Ressource bereits von einem anderen Task verwendet wird - und daran kannst du nichts ändern, es sei denn du überredest NI dazu parallele Zugriffe in DAQmx zu implementieren (was aber SEEEEEHR unwahrscheinlich ist, dass sie das machenWink)
Hallo,

bei meinem Prüfstand muss ich auch ständig über verschiedene Sub-VI´s auf eine Hardwareresource zugreifen.
Ich habe daher für jede Hardware (PCI-Karte, DAQ-9172, ...) ein eigenes VI geschrieben, welches die Kanäle kontinuierliche
liest oder schreibt.
Zur Kommunikation mit den Unterprogrammen verwende ich globale Variabeln.
Die Refreshrate liegt bei mir im Bereich zwischen 20 und 50Hz, das klappt eigentlich recht gut.
Digitale Kanäle sind überhaupt kein Problem, 16 analoge Kanäle mit 20kHz abzutasten bringt den Rechner aber ab und zu an die Grenze.

Da ich dieses System ohne viel Erfahrung gebastelt habe gehe ich aber davon aus,
dass es noch elegantere und vor allem bzgl. der Systemauslastung bessere Möglichkeiten gibt.

Grüße, Vogster
Bin kein großer Kenner aber eine Vermutung:

Einen und den selben Kanal einer Karte kann man in einem Programm nicht zweimal belegt. Daher würde ich sagen, soweit du die Kanäle zwischen den Programmen gut verteilst, müsste keine Probleme geben. Nur eine logische Schlussfollgerung.

Wie gesagt, ist nur eine Vermutung. Die LabVIEW-Gurus solltens nochmals bestätigen!!

Gruß.
LAByrinth
' schrieb:Einen und den selben Kanal einer Karte kann man in einem Programm nicht zweimal belegt. Daher würde ich sagen, soweit du die Kanäle zwischen den Programmen gut verteilst, müsste keine Probleme geben. Nur eine logische Schlussfollgerung.

...aber falsch! Das gilt für die komplette Karte = Resource. Wenn die durch eine Applikation belegt ist, kann die andere nicht drauf zugreifen! Abwechselnd ist es aber kein Problem! Das muss man aber sicherstellen...
Moin Moin,

ich würde dieses schon etwas ältere Thema gerne nochmal aufgreifen, da ich ähnliches vorhabe und einen Lösungsvorschlag anzubieten habe:
1 Messkarte
2 Prüftstände
Jeder Prüfstand hat sein eigenes LabVIEWprogramm greifen aber auf die gleiche Karte zu.

Dass immer nur ein Programm auf die Messkarte zugreifen kann ist klar, mein Lösungvorschlag sind: Melder

Vorgehen:
1. VI: Main VI
2. VI: Datenerzeuger
3. VI: LabVIEWprogramm für Prüfstand 1
4. VI: LabVIEWprogramm für Prüfstand 2

Das VI Datenerzeuger liest alle Kanäle der Karte kontinuierlich aus, sonst hat es keine Aufgabe. Dieses VI läuft immer
Das Main VI startet alle anderen VIs und beendet Das Erzeuger VI und die Programme für die Prüftstände wenn es selber beendet wird.
Die Programme für die Prüftstände werden mit dem Main VI geladen und können unabhängig voneinander gestartet, gestoppt, neugestartet werden solange das Main VI und damit auch die Datenerzeugung läuft.
Benötigt ein Prüfstandprogramm Daten von der Messkarte, holt es sich diese per Melder

Die 4 VIs habe ich alle in ein LabVIEWProjekt gepackt und eine Application mit dem Main VI erzeugt. Der Build sieht vor dass die drei anderen VIs (Erzeuger, Prüftstand 1+2) automatisch mit geladen werden.

Ergebnis: Separate Programme die auf Daten die aus einer Karte kommen zugreifen können. Zwar nur eine EXE vorhanden, aber die Programme können unabhängig voneinander betrieben werden. Soll mal nur eines gleichzeitig laufen wird das andere einfach weggeklickt.

Bisher habe ich das ganze nur mit dem 4 angehängten einfachen VIs getestet. Wie ist Eure Meinung zu diesem grundsätzlichen Vorgehen?
Wenn ich durch das Forum lese, scheinen sich doch mehrere schon an solchen parallelen Programme mit nur einer Karte versucht zu haben.

Viele Grüße,
Filth Hound

PS: Die VIs hatte ich in einem Forumsbeitrag zu Meldern geklaut und nun ein wenig umgebaut. Weiß leider nicht mehr von wem die waren.
Referenz-URLs