Parallele Ausführung mehrerer Sub-Vis - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Parallele Ausführung mehrerer Sub-Vis (/Thread-Parallele-Ausfuehrung-mehrerer-Sub-Vis) |
Parallele Ausführung mehrerer Sub-Vis - Anna1988 - 16.07.2015 12:54 Hallo, also ich habe 8 Sensoren die mit der DAQ Karte NI-USB 6009 digital ausgelesen werden. Dann habe ich noch eine DAQ-Karte NI-USB 6210 mit der ich einen Quadratur Encoder auslese. Das funktioniert auch soweit. Jetzt muss ich aber für jeden Sensor die Position des Encoders speichern wenn der Sensor 100mal 1 sendet. Das bedeutet ich habe 8 mal das gleiche Sub-VI welches prüft ob 100 x 1 gesendet wurde, und dementsprechend das Signal des Encoders abspeichert. Nun werden die VIs nacheinander ausgeführt was natürlich nicht gewollt ist, eigentlich sollen die VIS alle parallel ausgeführt werden. Habe das VI schon auf Ablaufinvariante Ausführung eingestellt, das ändert aber leider gar nichts. Vielleicht könnt ihr mir ja helfen, und mir sagen wie ich es anders lösen kann, oder wie ich alle 8 VIs gleichzeitig ausführen kann. Vielleicht habe ich ja auch einfach nur ein Brett vorm Kopf... Liebe Grüße Anna RE: Parallele Ausführung mehrerer Sub-Vis - GerdW - 16.07.2015 14:06 Hallo Anna, du hast also einen (1) DAQmx-Task zum Auslesen deiner 8 digitalen Sensoren und einen (1) DAQmx-Task zum Auslesen des Encoders? Einfache Herangehensweise: lese beide mit der gleichen Samplerate aus, dann kannst du jedem Sample deiner Sensoren ein passendes Sample des Encoders zuordnen. Ich sehe momentan noch keinen Grund, irgendein VI 8fach parallel auszuführen… RE: Parallele Ausführung mehrerer Sub-Vis - Anna1988 - 16.07.2015 14:10 Ich habe nicht viel Ahnung von Hardwareprogrammierung deswegen habe ich jetzt 8 Tasks, weil ich dachte ich muss ja jeden Sensor kontrollieren und gucken ob er 100 x 1 war. Dazu speichere ich für jeden Sensor den Wert davor und vergleiche Ihn mit dem aktuellen. Wenn beide Werte 1 sind wird hochgezählt sonst wird der Counter auf 0 gesetzt und das bei jedem Sensor. Ich gucke mal ob ich das mit einem task hinbekomme, weiß nur noch nicht so genau wie das gehen soll. viele Grüße Anna RE: Parallele Ausführung mehrerer Sub-Vis - GerdW - 16.07.2015 14:13 Hallo Anna, wenn die USB6009 das unterstützt, solltest du die 8 DI-Kanäle als "ein Port" einlesen, dann bekommst du ein U8 geliefert. Das kannst du dann direkt auswerten: jedes Bit im U8 gehört zu einem Sensor… RE: Parallele Ausführung mehrerer Sub-Vis - jg - 16.07.2015 14:22 Die DIOs bei der 6009 kannst du eh nur im Software-Takt auslesen. Wenn du jetzt 8 DI-Tasks anlegst, dann wird alles noch langsamer, denn über die USB-Leitung muss ja alles seriell übertragen werden. Gruß, Jens RE: Parallele Ausführung mehrerer Sub-Vis - Anna1988 - 17.07.2015 07:07 Also ich hab das alles soweit verstanden, werde versuchen das mit einem Task laufen zu lassen. Die Sensoren sollen erkennen ob sich noch ein Faden darin befindet oder nicht das bedeutet sobald kein faden mehr vorhanden ist, also 100 x 1 kommt (optional auch 100 x 0 ) soll das Signal des Encoders abgespeichert werden. Dazu muss ich doch immer das Signal jedes Sensors prüfen. Die Sensoren müssen unterschiedlich lange Garne aufnehmen deswegen muss das unabhängig voneinander sein. Also nicht wenn der erste Sensor 100 x 0 hat können ale abgestellt werden. Dazu habe ich nun eine Schleife gemacht, die die Position des Encoders ausliest. Aber nun weiß ich nicht wie ich die 8 Sensoren kontrolliere ohne 8 x das SUBvi welches für jeden Sensor prüft ob es 100 x 0 war auszuführen. Auch wenn ich das jetzt unter einem Task auslese habe muss ich doch für alle Sensoren prüfen oder? Stehe irgendwie auf dem Schlauch glaube ich.... Liebe Grüße Anna RE: Parallele Ausführung mehrerer Sub-Vis - GerdW - 17.07.2015 07:33 Hallo Anna, Zitat:Auch wenn ich das jetzt unter einem Task auslese habe muss ich doch für alle Sensoren prüfen oder?Ja klar musst du das weiterhin… Das DAQmxRead liefert dir entweder "Digital, Mehrere Kanäle, 1 Sample, 1D boolsch" oder "Digital, Mehrere Kanäle, 1 Sample, 1 U8 (Portformat)" und damit für jeden Sensor ein einzelnes Bit. Und das kannst du weiterhin prüfen. Ich würde dir das U8 empfehlen, da es kompakter ist und man dank Polymorphismus trotzdem boolsche Operationen verwenden kann. Wenn es für dich "einsichtiger" ist, kannst du auch das boolsche Array verwenden… RE: Parallele Ausführung mehrerer Sub-Vis - Anna1988 - 17.07.2015 07:35 Ich glaube ich habe das jetzt soweit verstanden... .-) Wie ließt man den 8 Kanäle auf einmal ein? So das ich quasi ein 2 D Array bekomme also alle Samples zu jedem Kanal? Dann kann ich das ja dann nachher mit Software kontrollieren. Liebe grüße Anna RE: Parallele Ausführung mehrerer Sub-Vis - GerdW - 17.07.2015 07:38 Hallo Anna, Zitat:Wie ließt man den 8 Kanäle auf einmal ein?Indem man einen Task mit 8 Kanälen erstellt und dann die Werte für diesen Task einliest. Du hast die ganzen Links in meiner Signatur beachtet und gelesen? Zitat:So das ich quasi ein 2 D Array bekomme also alle Samples zu jedem Kanal?Erstens brauchst du nur ein 1D-Array und zweitens liefert die USB6009 Digitalwerte nur auf Anforderung: einzeln Zitat:Dann kann ich das ja dann nachher mit Software kontrollieren.Ja, das kannst du auch mit einem 1D-Array… RE: Parallele Ausführung mehrerer Sub-Vis - Anna1988 - 17.07.2015 07:43 okay habe verstanden :-) Nein hatte ich nicht gelesen und beachtet Aber ich denke jetzt bekomme ich das bestimmt hin. LG Anna |