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 

Frage zur Queued State Machine / Producer-Consumer-Struktur



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!

19.08.2008, 10:35
Beitrag #1

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Frage zur Queued State Machine / Producer-Consumer-Struktur
Mal ne Frage ans LVF:

Der Vorteil einer Producer-Consumer-Architektur mit "integrierter" State Machine ist ja, dass man die eigentliche Programm-Abarbeitung in der State Machine von den Benutzereingaben (z.B. "Stop-Kommando" über Button) entkoppelt. Somit können z.B. Ressourcen gespart werden, das Programm wird insgesamt "performanter" und beim User ensteht nicht der Eindruck, ein Programm würde irgendwie "hängen", weil es noch irgend ne Aktion durchführt (Button reagiert sofort, weil in separater Schleife!).

Aber...ich hab z.B. das Problem das ich über einen Counter ein TTL-Signal erfasse. Dieses TTL-Signal wird durch ein sich drehendes Rad über einen speziellen Sensor erzeugt. Nun ist es so, dass das Rad sehr schnell drehen kann (3000 U/min, das entspricht dann einer Signalfrequenz von ca. 52 kHz)...aber auch sehr langsam (nahezu Stillstand)...die Frequenz ist dann auch SEHR niedrig. Von einem TTL-Rechteckimpuls zum nächsten kann es dann schon mal 1-2 Sekunden dauern. Die Rechteckpulse sind abhängig von verschiedenen Bedingungen unterschiedlich breit, darum wird hier über den Counter eine Pulsbreitenmessung durchgeführt. Damit ich beim DAQmx-Read des Counters keine Fehlermeldung produziere, muss eine Timeout-Zeit spezifiziert werden (entsprechend der niedrigsten möglichen Drehzahl bzw. Signalfrequenz). Wenn das DAQmx-Read dann in der Consumer-State Machine (State "Read counter") untergebracht ist, wird in diesem State dann halt entsprechend der Timeout-Zeit gewartet, bis ein neuer Puls kommt. Drückt der User in dieser Zeit (über die Producer-Event-Struktur) auf den Abbrechen-Button, wird das Programm aber nicht sofort beendet...eben weil das Read-VI noch nicht fertig ist. Der Abbrechen-Button reagiert zwar sofort und schreibt den neuen State "EXIT" in die Queue, diese wird aber erst nach der Timeout-Zeit des Read-VI im nächsten Schleifendurchlauf abgefragt...

Problem erkannt? Wie könnte man das geschickter lösen? Hmm

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
Frage zur Queued State Machine / Producer-Consumer-Struktur - Achim - 19.08.2008 10:35

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Machine learning Hubert R. 3 2.525 29.08.2023 10:10
Letzter Beitrag: Hubert R.
  Programm beenden State Machine simcum 3 3.433 17.10.2020 20:57
Letzter Beitrag: BNT
  Queue verwendung in komplexer Producer/Consumer Abhängigkeit Ksanto 8 5.761 03.04.2017 20:14
Letzter Beitrag: Ksanto
  Queued State Machine: IDLE Optimierung ALuehmann 3 4.939 14.02.2017 14:00
Letzter Beitrag: HVo
  State machine und Typdefinition meta_ir 4 4.462 09.01.2017 12:47
Letzter Beitrag: meta_ir
Question Frage zu "queued state machine" Architektur joptimus 4 6.012 05.08.2016 14:34
Letzter Beitrag: joptimus

Gehe zu: