Programm hängt sich auf - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Programm hängt sich auf (/Thread-Programm-haengt-sich-auf) |
Programm hängt sich auf - oenk - 11.08.2010 11:02 Wieso es einfriert kann ich dir leider nicht sagen...mir fehlen immer noch ein paar SubVIs. Aber was ich sagen kann: du hast zwei for-schleifen, die jeweils genau 1x ausgeführt werden. Warum? Lösch sie doch einfach! Das macht mal keinen Sinn. Dann nochwas: verwende NIE die stop-Funktion. Die ist ganz böse! Da wird dein Programm nächlich einfach abgebrochen und nicht definiert heruntergefahren. Dh da kann sich Hardware in einem undefinierten Zustand befinden, was ein blöder aber nicht unbedingt kritischer Zustand sein muss. Und zuletzt: ueberdenke doch nochmal dein Design. Schau dir mal state-machines an oder, was in deinem Fall noch besser wäre: die Consumer/Producer loops. so viel oder so wenig dazu, ich geh in den Mittag en Guetä Christian Programm hängt sich auf - hmueller - 11.08.2010 11:30 Mahlzeit, ok, danke mal für die Tipps. diese hier fehlten glaub ich noch. [attachment=28691] ja ich weiß, aber ich bekomm den stop des Programmes einfach nicht anders hin. Eine State-Machine hatte ich zu beginn, das Problem war jedoch, das ich nicht flexibel genug in Bezug auf die Kennlinien war. mfg Programm hängt sich auf - oenk - 11.08.2010 11:48 ' schrieb:..., das Problem war jedoch, das ich nicht flexibel genug in Bezug auf die Kennlinien war.Das verstehe ich jetzt nicht ganz. Was hat eine state-machine mit der Kennlinie zu tun? Anyways: wenn du das mit dem stop nicht anders hinbekommst, dann liegt das am Design. Ich kann in meinem Programm jederzeit abbrechen und die Hardware wird immer definiert runtergefahren. Dazu sind alle Hardware-Sachen in parallele Tasks ausgelagert (Consumer-loop) und die Nutzereingabe steuert diese (Producer-loop). Somit kannst du immer stoppen und kannst sogar, je nachdem in welchem state gerade gestoppt werden soll, darauf entsprechend reagieren. zB stop während der initialisierung -> Initialisierung abbrechen und Hardware beenden stop während eines Messvorgangs -> Zyklus noch fertig bearbeiten und dann Hardware beenden stop wegen eines Fehlers -> alle Tasks stoppen und Hardware definiert herunterfahren usw usf... Programm hängt sich auf - hmueller - 11.08.2010 12:10 ich kann dir leider nicht folgen, wie stelle ich das an? also mit den consumer und producer loop? Programm hängt sich auf - oenk - 11.08.2010 13:07 Schau dir mal das design-pattern: Producer/Consumer Loop(Events) an. In die Producer loop machst du alles rein, was der User eingibt (in deinem Fall die Start und Stop Eingabe). In die Consumer loop packst du dir eine state-machine rein, die deine Gasflaschen abfüllt, reinigt oder was sie sonst machen soll. In der Consumer loop musst du die state-machine so verdrahten, dass auf ein Stop-Event reagiert werden kann.... Programm hängt sich auf - hmueller - 11.08.2010 13:23 ich hab mich mal daran probiert. immerhin erscheint keine fehlermeldung. Aber, es funktioniert auch nicht. Schade. Die Auswahl mit den Messbereichen für das zugehörige Gas bekomm ich einfach nicht hin. Und das das Programm startet auch nicht so richtig. [attachment=28703] Programm hängt sich auf - oenk - 11.08.2010 13:50 Bist du sicher, dass du das richtige file hochgeladen hast?? Sieht für mich immer noch gleich aus. Sogar die 1x for-Schleife ist noch drin... Programm hängt sich auf - hmueller - 11.08.2010 13:55 ja, die Hauptdatei ist nun das ProducerConsumerEvents_test.vi der rest sind die subvi's. Was mir noch richtig große Probleme bereitet ist die StateMachine. Bis ich das alles umgebaut hab. Die Zeit dafür habe ich leider nicht. Programm hängt sich auf - oenk - 11.08.2010 14:04 ' schrieb:Die Zeit dafür habe ich leider nicht.Dann wird es nicht funktionieren....Design braucht Zeit...Dafür sparst du dann beim Erweitern ernorm. Nochwas: Producer/Consumer Loops "unterhalten" sich nur über Queues/Notifier oä und nicht über "Drähte". Tust du es dennoch, hebelst du die parallele Abarbeitung der Schleifen aus... Programm hängt sich auf - jg - 11.08.2010 14:05 Jetzt hast du eine Datenfluss-Abhängigkeit in deine Producer-Consumer-Struktur reingebaut! [attachment=28706] Der Consumer startet jetzt erst, wenn der Producer komplett abgeschlossen ist. Gruß, Jens EDIT: Könnte es sein, dass sich diese FlowDDE-Aufrufe-Write-Read ins Gehege kommen? Nur so eine Idee. Sequenziere die doch mal, z.B. per Error-Cluster. (Dazu musst du natürlich einen Error-Cluster in die entsprechenden Sub-VIs einbauen). Und nachdem wir quasi immer noch bei derselben Frage sind wie in deinem letzten Thread -> Themen verschmolzen. |