LabVIEWForum.de
xnet, queued state machine - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: xnet, queued state machine (/Thread-xnet-queued-state-machine)

Seiten: 1 2


xnet, queued state machine - snoopy87 - 03.09.2014 14:15

Hallo,
mein Programm soll Parameter per CAN-Bus(NI 9862, NI cDAQ 9188) übertragen. Das Ganze soll über eine Queued State Machine ablaufen. Man wählt ein Ansteuerverfahren aus(FOC, Sinus, Block), drückt auf den Button Init, dann sollen die Paramter gesendet werden. Falls im Optionsfeld "Parameter-Eingabe über ControlDesk" ausgewählt wird, sollen keine Parameter gesendet werden, sondern später über ControlDesk manuell eingegeben werden. Anfangs habe ich nur das Senden von den FOC-Parametern realisiert. Dabei wird eine xnet Session erstellt, eine Nachricht mit den Parametern in die Session geschrieben und gesendet.
Kann mir jemand sagen, warum LabVIEW in den Case "CAN Frame Auswahl ControlDesk senden" springt und dort bleibt, nachdem ich FOC ausgewählt und den Button Init gedrückt habe, obwohl ich diesen Fall gar nicht angewählt habe? Sobald ich die CAN Übertragung aus dem Programm lösche, funktioniert es wieder Blink

Bahn

lg


RE: xnet, queued state machine - Lucki - 03.09.2014 15:01

Also ich sehe: im Ereigniscase "Init-Schaltfläche" befindet sich eine Casestruktur, und wenn dort "Foc" ausgewählt ist, wird in die Queue "Can Fram FOC senden" geschickt - also genau das, worüber Du dich wunderst.
Und dass nach Ausführung dieses Status-Cases in der unteren Struktur nichts mehr passiert, ist auch klar: Die Funktion "Element aus Queue entfernen" wartet, bis wieder was in der Queue ist - wenn nichts kommt, dann ewig.


RE: xnet, queued state machine - snoopy87 - 05.09.2014 07:58

Also wenn ich das Programm laufen lasse, FOC anwähle und Init drücke, springt es zwar zuerst wie gewünscht in die Struktur "CAN Frame FOC senden", danach aber sofort in die Struktur "CAN Frame Auswahl ControlDesk senden", obowhl ich diese Option gar nicht ausgewählt habe und ohne, dass "CAN Frame Auswahl ControlDesk senden" in die Queue geschrieben wird (diese Option sollte ja nur in die Queue geschrieben werden, wenn ich es auch auswähle).
Und wenn nichts passiert, sollte LabVIEW dann eigentlich in die Struktur "Timeout" springen, aber das Programm verbleibt in der Struktur "CAN Frame Auswahl ControlDesk seden", egal, ob ich nichts mache oder z.b. wieder FOC anwähle und Init drücke.
Die Struktur wird immer wieder aufgerufen und ich weiß nicht warum Huh


RE: xnet, queued state machine - Lucki - 05.09.2014 19:46

Wenn Du diesen Status nicht in die Queue einspeist, dann kann der Status im Case auch nicht ausgeführt werden. Ich teste das immer so: Ich setze in den Case die Funktion "Signalton" rein und teste, ob es bei der Ausführung piepst oder nicht. Mach das doch mal und berichte über das Ergebnis.


RE: xnet, queued state machine - snoopy87 - 08.09.2014 09:07

Ich habe in die Case Struktur "CAN Frame Auswahl ControlDesk senden" einen Piepston implementiert. Wenn ich das Programm laufen lasse, FOC anwähle und den Button Init drücke, springt es wie gewünscht in die Struktur "CAN Frame FOC senden", ein Dialogfeld mit "FOC senden" wird angezeigt und gleich danach piepst es nur noch, dass heißt, LabVIEW springt in die Struktur "CAN Frame Auswahl ControlDesk senden", obwohl es gar nicht aufgerufen wurde und verbleibt dort, anstatt in die Struktur "Timeout" zu springen.


RE: xnet, queued state machine - GerdW - 08.09.2014 09:10

Hallo snoopy,

dann musst du wohl debuggen, warum dieser State aufgerufen wird…


RE: xnet, queued state machine - jg - 08.09.2014 12:47

Offtopic
CROSS-POSTING:
http://labviewportal.eu/viewtopic.php?f=14&t=7433

Du sollst einfach mal debuggen!

Gruß, Jens


RE: xnet, queued state machine - snoopy87 - 08.09.2014 14:12

Das habe ich doch getan. Ich habe mir die Queue, die in die Verbraucherschleife reingeht, auch anzeigen lassen(Probes). Da steht kein einziges mal der Zustand "CAN Frame Auswahl ControlDesk senden" drin, sondern nur die Zustände "Timeout". In der Verbraucherschleife wird mit dem Block "Vorschau für Queue-Element" dann das Element am Anfang der Queue angezeigt und dieses Element heißt "CAN Frame Auswahl ControlDesk senden", obwohl es nicht in der Queue stand.


RE: xnet, queued state machine - GerdW - 08.09.2014 14:24

Hallo snoopy,

Zitat:In der Verbraucherschleife wird mit dem Block "Vorschau für Queue-Element" dann das Element am Anfang der Queue angezeigt
Warum muss der Verbraucher denn mit einer Vorschau arbeiten? Sollte der nicht Befehle per Dequeue empfangen und auswerten?
Hmm


RE: xnet, queued state machine - jg - 08.09.2014 14:54

Also ich kann das nicht nachvollziehen. Dein VI "Unbenannt 5" springt (nach Entfernen der ganzen Xnet-Kommunikation, habe hier kein xnet installiert), egal was ich wann wo klicke, immer wieder in den Timeout-Case.

Arbeiten wir am selben VI?

Gruß, Jens