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 miteinander!
Hab gestern folgendes Problem festgestellt: Hab ein subVI, das mir eine manuelle Steuerung realisieren soll. Dazu müssen mehrere Strings über den COM-Port an den Motor gesendet werden.
den Port hab ich im mainVI konfiguriert und auch sichergestellt, dass das vor dem Aufruf des subVI's erfolgt! Nun hab ich das Problem, dass mein Motor die Signale nicht empfängt und sich dementsprechend nicht rührt! erst wenn ich das subVI wieder schließe und zum mainVI zurückkehre, läuft der Motor mit der letzten Einstellung an!
gibt's da bekannte Probleme mit der Verträglichkeit der VI-ebenen und dem Schreiben auf dem seriellen Port, oder steckt da der Teufel bei mir in der Programmierung? (die String-addition und das Schreiben dieser auf dem Port laufen im mainVI ohne Probleme!)
kann es sein, dass Du ständig den Stop-String rüberschickst?
In der "Sequence 0" schreibst Du in die Variable "what_out" des Clusters ein konstantes "Stop".
Außerdem sieht es für mich so aus als ob Du bei jedem Schleifendurchlauf den String rüberschickst, aber einmal sollte doch reichen.
Ein "Wait" vermisse ich ebenfalls in der Schleife.
Also der Stop-string ("B") wird nur gesendet, wenn vorher ein Wert der Einstellungen geändert wurde... Deswegen dort die Casestruktur! Danach wird in der übergeordneten Sequenz der Befehl freie Bewegung in Richtung +/- gesendet (GF+). Zwischen den einzelnen Steuerbefehlen lasse ich dann immer rund 200ms warten...
Also meiner Meinung nach sollte bzw. müsste das so funktionieren!
Meine Idee vom Wochenende zu dem Thema war, dass ich die entsprechenden manuellen Steuerungen mit ins mainVI integriere und dort erstmal irgendwo in ner Sequenz verstecke und im subVI nur die einfachen Kanal- und Diagrammeinstellungen belasse...
MfG m.
(würde mich aber trotzdem interessieren, woran es gelegen hat...)
Ich sehe das einfach nicht was Du da beschreibst.
In der "Sequence 0" schreibst Du eindeutig in die Variable "what_out" des Clusters ein konstantes "Stop".
An der Stelle vor der Case-Struktur steht niemals etwas anderes als "Stop" in dieser Variablen.
"what_out" wird nur in dem Cluster "data_out" verändert.
Stimmt, da steckt der Fehler!
Ich hätte den oberen Teil der 1er Sequenz (den Schreib-Zyklus) in eine extra Sequenz schreiben müssen, oder zumindest hinter der unteren Auswahl der Bewegungsarten verdrahten müssen!
So gesehen hast Du vollkommen recht! (so'n Mist!)
Hab nun aber mittlerweile das etwas umgeschrieben und ins mainVI integriert und das läuft einwandfrei!
Aber trotzdem nochmal DANKE! Manchmal sieht man halt den Wald vor lauter Drähten nicht mehr...