11.08.2010, 11:02
|
oenk
LVF-Stammgast
Beiträge: 361
Registriert seit: May 2005
>= 7.1
2004
EN
3018
Schweiz
|
Programm hängt sich auf
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.
Chuck Reid
|
|
|
11.08.2010, 11:30
|
hmueller
LVF-Grünschnabel
Beiträge: 37
Registriert seit: May 2010
2009
2010
de
Deutschland
|
Programm hängt sich auf
Mahlzeit,
ok, danke mal für die Tipps.
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.
mfg
|
|
|
11.08.2010, 11:48
|
oenk
LVF-Stammgast
Beiträge: 361
Registriert seit: May 2005
>= 7.1
2004
EN
3018
Schweiz
|
Programm hängt sich auf
' 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.
Chuck Reid
|
|
|
11.08.2010, 12:10
|
hmueller
LVF-Grünschnabel
Beiträge: 37
Registriert seit: May 2010
2009
2010
de
Deutschland
|
Programm hängt sich auf
ich kann dir leider nicht folgen, wie stelle ich das an? also mit den consumer und producer loop?
|
|
|
11.08.2010, 13:55
|
hmueller
LVF-Grünschnabel
Beiträge: 37
Registriert seit: May 2010
2009
2010
de
Deutschland
|
Programm hängt sich auf
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.
|
|
|
11.08.2010, 14:04
|
oenk
LVF-Stammgast
Beiträge: 361
Registriert seit: May 2005
>= 7.1
2004
EN
3018
Schweiz
|
Programm hängt sich auf
' 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...
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.)
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Programm hängt sich auf
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!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
| |