LabVIEWForum.de - Dynamische Events in Realtime ohne Pollen möglich?

LabVIEWForum.de

Normale Version: Dynamische Events in Realtime ohne Pollen möglich?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
RT Targets verfügen wahrscheinlich nur über Dynamische Events nach folgendem schema:
http://digital.ni.com/public.nsf/allkb/42B...1D?OpenDocument

"Generate User Event" wird genutzt um ein Event zu starten, wobei eine Schleifenabfrage (Poll)
nach einem Vergleichsoperator dieses Event startet.

Kann man einen RT Event generieren, der z.B. nur durch einen .false. -> .true. wechsel
einer boolschen variabele startet?

Hintergrund: Notaus durch externen taster einer Anlage

danke

tomy
Sorry, aber NOTAUS muss immer in Hardware realisiert werden!

Ich interpretiere die Hilfe so, dass hier kein Polling der Eventstructure erfolgt sondern durch den default Timeout-Wert von -1 auf Events gewartet wird("The Event structure waits until an event happens")
Tritt ein Event auf wird die Structure in der Schleife neu gestartet, was auch notwendig sein dürfte.

Hope it helps
Christian
Hi Christian,

ja, NOTAUS ist in der Hardware realisiert, aber RT muss ja ausserdem darauf reagieren.

Ich habe ein Beispielprogramm (LV 8.61) hinzugefügt.
Die obere While Loop pollt -quasi sinnlos- im 100ms takt bis ein Notaus kommt.
Wie muss ich dieses verändern, damit ein pollen nicht mehr nötig ist und trotzdem
der Notaustaster funktioniert?

Danke !!

tomy

[attachment=22222]
Dein RT Programm muss doch in einer Loop arbeiten sonst passiert alles nur genau einmal. In Deinem Beispiel wäre die "Polling" Schleife Dein Hauptprogramm und das würde komplett beendet werden. Auch das Event wird nur einmal generiert. Du müsstest also den gesamten RT neu starten um wieder (für ein Event) lauffähig zu sein.

Was ich sagen will ist, Du benötigst eine Art Hauptschleife die immer läuft. Und weil es ein RT System ist, bietet sich an das auch determistisch zu machen, z.Bsp. mit einer timed structure. Das Hauptprogramm läuft dann zyklisch wie bei einer SPS ( Input-Processing-Output ).
NotAus muss meiner Meinung nach zyklisch abgefragt werden, und weil es eben Notaus ist eventuell in einer separaten hochpriorisierten Schleife.

Hope it helps
Christian
' schrieb:RT Targets verfügen wahrscheinlich nur über Dynamische Events nach folgendem schema:
http://digital.ni.com/public.nsf/allkb/42B...1D?OpenDocument

"Generate User Event" wird genutzt um ein Event zu starten, wobei eine Schleifenabfrage (Poll)
nach einem Vergleichsoperator dieses Event startet.

Kann man einen RT Event generieren, der z.B. nur durch einen .false. -> .true. wechsel
einer boolschen variabele startet?

Hintergrund: Notaus durch externen taster einer Anlage

Was ist denn an der parallelen Schleife die das pollt so falsch??? Willst Du die CPU sparen, dass sie statt dem Taster pollen, in einer OS Idle-Loop die CPU Zeit verbrät? Ein RT System hat normalerweise keinen Halbschlaf CPU Modus wie bei einem Laptop, wo das System auf halbem Takt oder so läuft wenn die CPU Idle Loop viel Zeit bekommt.

Da wird einfach in einer Loop solange nichts getan, bis das Programm wieder etwas tun möchte. Ob Du da also <1% CPU Zeit "wegwirfst" um den Taster zu pollen, macht da absolut keinen Unterschied.
Offtopic2
@tomy141:
Bitte teile das nächste Mal mit, wenn du deine Frage auch woanders stellst (Stichwort Crosspost, vgl. LVF-Regeln).
http://forums.ni.com/ni/board/message?boar...ssage.id=453253

Danke, Jens
Referenz-URLs