LabVIEWForum.de
Vis unabhängig von einander / parallel - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Vis unabhängig von einander / parallel (/Thread-Vis-unabhaengig-von-einander-parallel)



Vis unabhängig von einander / parallel - Arnold - 21.11.2012 10:14

Hallo zusammen,

da ich ein Einsteiger in LV bin, brauche etwas Unterstützung.
Meine Aufgabe ist, dass ich mehrere IDs vom CAN-BUS lese, diese entsprechend verarbeite und dann eine entsprechende CAN_Massage wieder ausgebe.

Mein Problem ist nun, dass ich 16 unterschiedliche IDs lese und dann auch einige für eine gewisse Zeit antsteuern sollt.

Meine erste Idee war recht simple. Ich habe das entsprechende Netz konfiguriert, mich mit diesem verbunden, die Msg. gelesen, anschließend verarbeitet und eine entsprechende Msg. wieder versendet. Da ich das alles in einer While-Schleife hatte, wurden die Nachrichten erst gelesen wenn die untergeordnete For-Schleife, der While-Schleife abgearbeitet war und von neuem anfangen konnte. Da hier einige Msg. für eine gewisse Zeit anliegen sollen, war jede andere Bedienung während dieser Zeit nicht möglich.

Somit meine Frage wie schaffe ich es, dass zu jeder Zeit eine Bedienung trotzdem möglich ist? Wie schaffe ich es, dass diese Funktionen parralel zu einander ablaufen?
An dieser Stelle habe ich nun an eine Referenz und SubVIs gedacht. Ist es möglich wenn ich meine Nachrichten einfach an die SubVIs sende und diese dann für sich selbst die Nachricht verarbeiten?

Wenn ja, wie ist dies zu realisieren? Nein, wie kann ich sonst vorgehen?

Ich lade euch, das Programm hoch mit dem ich die Nachrichten vom CAN-BUS lese und mit denen ich diese verarbeite und neue ausgebe.
READ_MULTI <-- Liest diese
REC_MSG_DATA_TF_WRITE_12D <-- Verarbeitet und schreibt
REC_MSG_DATA_TF_WRITE_12F <-- Verarbeitet und schreibt


RE: Vis unabhängig von einander / parallel - GerdW - 21.11.2012 11:51

Hallo Arnold,

bitte, bitte die VIs erst einmal aufräumen. Benutze Arrays, um deine Daten zu verwalten! Bitte...

So könnte der Hauptteil der Read-multi-Routine aussehen:
[attachment=42292]

Deine Write-SubVIs schreien auch geradezu nach Verwendung einer Case-Struktur! Die ganzen Vergleiche auf =0 bis =16 erledigt die Case-Struktur, die logischen Verknüpfungen vereinfachen sich dann auch entscheidend. Außerdem: Warum ArrayToCluster und Unbundle, wenn es ein IndexArray auch tut?

Zur Frage:
- VIs laufen parallel, wenn es keine Datenabhängigkeit zwischen ihnen gibt!
- Der CAN-Bus kann Daten periodisch senden, üblicherweise ohne Eingriff eines darübergelagerten Steuerprogramms. Ebenso hat man einen Empfangsbuffer zur Verfügung...
- Ich kenne die PCAN-Treiber nicht, denke aber, dass diese auch parallele Zugriffe auf den CAN-Bus erlauben...


RE: Vis unabhängig von einander / parallel - Arnold - 21.11.2012 12:34

Danke für die Antwort.

Ich werde versuchen dies zu berücksichtigen.
Jedenfalls habe ich das Problem ermittelt. Ich habe im SubVI 12F ein falsches Element benutz. Ich habe dort das Programm zum Stocken gebracht durch das Warten Symbol.
Ich muss da nur die Zeit abfragen und vergleichen wenn dies überschritten wird soll der Ausgang zurückgesetzt werden.

Danke nochmals für die Rückmeldung. Problem gelöst Smile