05.08.2016, 13:57
Hi,
ich habe eine Software für die Steuerung eines Prüfplatzes programmiert. Dabei habe ich die "queued state machine" Architektur genutzt:
https://decibel.ni.com/content/docs/DOC-32964
Das verlinkte Dokument hat mir sehr geholfen, nur ist mir nicht ganz klar, wie das aussehen sollte, wenn eine zusätzliche Ebene hineinkommt:
So gesehen ist das VI mit den Zustandsautomaten für die Messabläufe sowohl Producer als auch Consumer - je nachdem, ob man in meiner Architektur von oben oder von unten aus darauf schaut.
Das Problem was ich nun habe, betrifft die Implementierung des GUI. Der Nutzer soll natürlich die Möglichkeit haben, einen Messablauf zu wählen. Hier hätte ich in Anlehnung an die gewählte Architektur bei einem Benutzerevent die entsprechende Botschaft in die Befehlswarteschlange geschrieben, worauf der entsprechende Zustandsautomat startet und dann automatisch sein Ding macht, siehe angehängtes Bild.
Nur habe ich dann - wie rot markiert - eine Whileschleife innerhalb einer Whileschleife. Kann das zu Problemen führen? Gibt es ggf. eine bessere Lösung?
[attachment=56419]
Ist auch hier gepostet:
http://forums.ni.com/t5/LabVIEW/Architec...-p/3331462
ich habe eine Software für die Steuerung eines Prüfplatzes programmiert. Dabei habe ich die "queued state machine" Architektur genutzt:
https://decibel.ni.com/content/docs/DOC-32964
Das verlinkte Dokument hat mir sehr geholfen, nur ist mir nicht ganz klar, wie das aussehen sollte, wenn eine zusätzliche Ebene hineinkommt:
- Benutzerinterface (hier wird der Messablauf gewählt)
- Zustandsautomaten für Messablauf 1..m (programmatisch vorgegeben, außer Fehlerquittierung/Pause/Stop) keine Nutzerinteraktion. Die Messabläufe passieren hintereinander, nicht gleichzeitig. Es müssen auch nicht zwangsläufig alle stattfinden. Der Nutzer kann z.B. nur die Hälfte der Messungen auswählen, wenn er Zeit sparen will.
- Messinstrumente 1..n
So gesehen ist das VI mit den Zustandsautomaten für die Messabläufe sowohl Producer als auch Consumer - je nachdem, ob man in meiner Architektur von oben oder von unten aus darauf schaut.
Das Problem was ich nun habe, betrifft die Implementierung des GUI. Der Nutzer soll natürlich die Möglichkeit haben, einen Messablauf zu wählen. Hier hätte ich in Anlehnung an die gewählte Architektur bei einem Benutzerevent die entsprechende Botschaft in die Befehlswarteschlange geschrieben, worauf der entsprechende Zustandsautomat startet und dann automatisch sein Ding macht, siehe angehängtes Bild.
Nur habe ich dann - wie rot markiert - eine Whileschleife innerhalb einer Whileschleife. Kann das zu Problemen führen? Gibt es ggf. eine bessere Lösung?
[attachment=56419]
Ist auch hier gepostet:
http://forums.ni.com/t5/LabVIEW/Architec...-p/3331462