INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Queued State Machine - DAQ in Unterprogramm ständig auswerten und darauf reagiern



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!

22.01.2015, 17:02
Beitrag #1

Aspen Offline
ohne Titel
*


Beiträge: 11
Registriert seit: Dec 2013

2016
2013
DE


Deutschland
Queued State Machine - DAQ in Unterprogramm ständig auswerten und darauf reagiern
Hallo Zusammen,

ich stehe gerade ziemlich auf dem Schlauch und bin um jeden Tipp dankbar!

Beschreibung des Systems:
Es handelt sich um einen Messtisch, dessen Achsen in X, Y und Z verfahren werden können. Die Steuerung und die LabView-Treiber sind von der Firma ISEL. Der Messtaster registriert Berührungen über Dehnmessstreifen. Zum Erfassen und Verstärken der Signale dient das NI Brückenmodul 3236.

Beschreibung der Software:
Ich habe am LabView Core 3 teilgenommen und habe meinen Code dementsprechend aufgebaut (bzw. versucht). In Abbildung 1 ist das Hauptprogramm abgebildet. Zu erkennen sind die vier Programmteile
1. Event Handling Loop (EHL)
2. Message Handling Loop (MHL)
3. ISEL Controller.vi (CTRL) (Detail in Abbildung 3)
4. Antastregistrierung.vi (ARG) (Detail in Abbildung 2)

Zu 4.
Ich habe ein LabView-Beispielprogramm genommen und ein bisschen erweitert, um den Messtaster auszuwerten (Abbildung 2). Bisher erfolgt das Antasten nach dem Schema von Abbildung 4. Der Grund, warum es die Zustände „Taster aktiv“ und „Taster inaktiv“ gibt ist, dass wenn die Maschine im
Eilgang fährt ein Antasten registriert wird, ohne die Probe zu berühren.

Problem:
Bei dem Schema erkennt man, dass die Schleife im Antastregistrierungs.vi nur läuft, wenn ich „Taster aktiv“ oder „Taster inaktiv“ schicke. Somit werden auch nur die in dieser Zeit aufgenommenen Werte in den entsprechenden Graphen dargestellt.

Ziel:
Ich will die Messwerte immer aufzeichnen.
Wenn die While-Schleife aber immer läuft wird ein „Stop durch Antasten“ auch bei starken Beschleunigungen gesendet, was falsch wäre. Deshalb will ich in der Message Handling Loop entscheide, ob auf das gesendete „Stop durch Antasten“ reagiert werden soll, weil gerade Angetastet wird oder ob ich es verwerfe, weil ich mich im Eilgang befinde.
Auf Abbildung 5 ist dargestellt, wie die Schleife ständig läuft und bei einer Schwellwertüberschreitung „Stop durch Antasten“ sendet.
Zum einen weiß ich nicht, wie ich in der Message Handling Loop jetzt entscheiden soll, ob ich auf diese Nachricht eingehe oder nicht.

Darüber hinaus kann ich die Schleife aus dem Hauptprogramm nicht mehr stoppen, weil mir der entsprechende Case fehlt.

Hat irgendjemand eine Idee, wie ich meinem Ziel näher kommen könnte?

Vielen Dank schon mal!


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.01.2015, 11:09
Beitrag #2

Aspen Offline
ohne Titel
*


Beiträge: 11
Registriert seit: Dec 2013

2016
2013
DE


Deutschland
RE: Queued State Machine - DAQ in Unterprogramm ständig auswerten und darauf reagiern
Kurzer Nachtrag

Lösung für ständiges Messen:
- Eine boolsche Anzeige (Taster AKTIV) im Event Handling Loop wird auf TRUE gesetzt, wenn der Button TASTEN gedrückt wird. (Bild 1)
- In der Message Handling Loop wird ein neuer Case eingefügt: ENTSCHEIDUNG und darin eine Lokale Variable der boolschen Anzeige erstellt (Bild 1)
- Wenn das Antastregistrierung.vi ein Antasten registriert sendet es die Nachricht ENTSCHEIDUNG (mit Priorität) an die Message Handling Loop
- ENTSCHEIDUNG sendet ein STOP DURCH ANTASTEN (mit Priorität in der Queue), wenn die boolsche Anzeige auf TRUE steht
ansonsten wird einfach der Fehler druchgeschliffen und es werden die anschließenden Befehle, welche in der Queue stehen abgearbeitet, da ENTSCHEIDUNG
mit Priorität gesendet wurde.
- Im Case STOP DURCH ANTASTEN wird die Lokale Variable der boolschen Anzeige dann wieder auf FALSE gesetzt (Bild 2)

Das Antastregistrierung.vi werde ich über einen Notifier beenden.


Ist das sauber gelöst oder gibt es andere Vorschläge?


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Machine learning Hubert R. 3 1.211 29.08.2023 10:10
Letzter Beitrag: Hubert R.
  Programm beenden State Machine simcum 3 2.614 17.10.2020 20:57
Letzter Beitrag: BNT
  Queued State Machine: IDLE Optimierung ALuehmann 3 4.158 14.02.2017 14:00
Letzter Beitrag: HVo
  State machine und Typdefinition meta_ir 4 3.759 09.01.2017 12:47
Letzter Beitrag: meta_ir
Question Frage zu "queued state machine" Architektur joptimus 4 5.217 05.08.2016 14:34
Letzter Beitrag: joptimus
  Unterprogramm im Hauptprogramm heshamali88 17 10.225 25.07.2016 15:11
Letzter Beitrag: heshamali88

Gehe zu: