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!
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
In theory, there is no difference between theory and practice; In practice, there is.
diese hier fehlten glaub ich noch.
FlowDDE.zip (Größe: 144,96 KB / Downloads: 153)
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.
' 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...
In theory, there is no difference between theory and practice; In practice, there is.
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....
In theory, there is no difference between theory and practice; In practice, there is.
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.
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...
In theory, there is no difference between theory and practice; In practice, there is.
Chuck Reid
11.08.2010, 14:05 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2010 14:17 von jg.)
Jetzt hast du eine Datenfluss-Abhängigkeit in deine Producer-Consumer-Struktur reingebaut!
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.
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!