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 

Zeitgesteuert eine Queue triggern?



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!

16.10.2010, 12:10 (Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2010 11:05 von jg.)
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Zeitgesteuert eine Queue triggern?
' schrieb:Wir haben festgestellt, dass unser Geraet besser arbeitet, wenn ich es ueber eine Producer-Consumer-Schleife steuere.
Das liegt aber an sich nicht an der Producer-Consumer-Schleife - sondern daran, dass durch das Programmierkonzept "Producer-Consumer" eine Modularisierung entsteht. Diese Modularisierung ist der Grund, warum es besser geht. Ein Modul kann man übersichtlich(er) programmieren. Ein Modul alleine arbeitet wie in einer selbständigen Task. Da wird nur das abgearbeitet, was auch tatsächlich für das Modul (respektive in deinem Falle das Endgerät) notwendig ist. Ein Modul ist immer ein SubVI.
Ein solches Modul entspricht einer Klasse im OOP-Sinne.
Ein Modul sorgt intern dafür, dass das Endgerät optimal angesteuert wird. Das geht soweit, dass selbst eine Falschbedienung durch den Anwender ganz leicht ignorierbar ist.

Macht man alles in einer Schleife (in einem BD), kommen so viele Seiteneffekte zusammen - dass man sich irgendwann selbst nicht mehr auskennt.

Zitat:Interessanterweise kann der Motor ohne Probleme seine Richtung schnell aendern, wenn der User abwechselnd "Infuse" and "Withdraw" drueckt.
Das ist leicht erklärt: Bei anwendergesteuert vergeht zwischen den einzelnen Buttonklicks immer viel Zeit - das kommt dem Endgerät zugute. Außerdem entsteht bei diesem Verfahren nur minimaler Code. Du weist ja: Kein Code, kein Fehler. Wenig Code, wenig Fehler ...

Zitat:Falls das gesamte Programm so moeglich ist, wuerde ich versuchen, es als SubVi im Hautprogramm abzuspeichern.
Dieses Vorgehen ist richtig.
Bei mir gibt es immer ein Haupt-VI mit Benutzeroberfläche. Dieses Haupt-VI hat eine Event-Struktur in einer While-Schleife. Hier werden lediglich Events (also einmalige Ereignisse) abgearbeitet, wie z.B. Buttonclicks. Neben dieser While-Schleife kann eine zweite While-Schleife mit einer Statemachine stehen. Diese Statemachine kann genau den automatischen Ablauf enthalten, den du haben willst. Diese zweite While-Schleife befindet sich deswegen in diesem Haupt-VI, weil Anzeigeelemente beschrieben werden sollen. Diese Statemachine kommuniziert mit dem Modul über Queues und Melder. Wäre keine Anzeige notwendig, würde man diese Statemachine auch in ein SubVI (also ein eigenständiges Modul) auslagern oder gar in das Endgeräte-Modul integrieren.
Die Gerätesteuerung selbst (also das ganz oben erwähnte Modul) liegt mit Queue/Melder/Ereignis-Referenzen am Eingang auf dem BD des MainVI. Dieses Modul läuft im Hintergrund parallel zum Haupt-VI.

Ich hab mal ein kleines Muster angehängt. Die untere While-Schleife ist das Endgeräte-Modul und sollte in einem SubVI ausgelagert werden. Benutzerereignisse sind in dieser Ausbaustufe noch nicht erforderlich.

Zitat:Geht es eventuell auch einfacher zu realisieren?
Einfach an sich ist Sache des Standpunktes.
Was für mich "einfach" ist - modulare, also gekapselte, klassenorientierte SubVI-Programmierung mit Queues/Melder und FGVs - erscheint dem einen oder anderen doch recht verwirrend. "Einfach" ist ein Programm dann, wenn es gut auf einen Bildschirm passt. Unabhängig vom Algorithmus ist es wichtig, dass das Programm funktioniert, debugbar, wartungsfreundlich und nach Möglichkeit erweiterbar ist.
Was du als "einfach zu realisieren" suchst, ist der für deine Belange richtige Algorithmus und das richtige Programmierkonzept - und da bist du mit Modularisierung (also SubVI, SubVI, SubVI ...) und Queue/Melder-Steuerung schon mal auf dem richtigen Weg ...
Lv09_img2


Angehängte Datei(en)
Sonstige .vi  Event_timed_test.vi (Größe: 24,96 KB / Downloads: 258)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Zeitgesteuert eine Queue triggern? - IchSelbst - 16.10.2010 12:10

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Event Triggern über boolean Anzeige simcum 6 3.569 25.02.2023 14:57
Letzter Beitrag: simcum
  Phasen zeitgesteuert wechseln -cosmo- 7 6.379 08.06.2018 12:18
Letzter Beitrag: jg
  Wie auf abgearbeitete Queue warten mez15 11 8.075 28.09.2017 13:02
Letzter Beitrag: TR61
  Datum Uhrzeit Queue DeleteAll 8 5.678 24.03.2017 15:47
Letzter Beitrag: GerdW
  Grab-Botton Zeitgesteuert BeutelSeb 11 8.359 01.06.2016 16:56
Letzter Beitrag: jg
  TDMS in Queue laden gifo 8 5.464 07.01.2016 16:41
Letzter Beitrag: GerdW

Gehe zu: