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!
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
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.
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
05.09.2014, 19:46 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2014 19:46 von Lucki.)
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.
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.
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.
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
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!