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!
02.07.2008, 11:56 (Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2008 12:04 von Matrim.)
ich habe ein kleines VI (LabVIEW 8.5) entwickelt, dass einfach nur zählt, wie oft ein bestimmtes Ereignis (aktivieren eines Hebels (Boolesch)) vorkommt.
Als Erweiterung wird dieser Zähler jedes Mal wieder auf 0 gesetzt, wenn er größer 5 ist.
Nun meine 1. Frage: Ist diese Umsetzung so in Ordnung? Oder kann man es einfacher erledigen?
2. Das Beenden der Schleife durch den Stopp Knopf funktioniert nur eingeschränkt, nachdem ich Stopp betätigt habe, muss ich erst den Hebel auf Wahr stellen, damit sich das Programm beendet. Wie kann ich erreichen, dass Stop den kompletten Ablauf abbricht?
Danke im Voraus.
Anzeige
02.07.2008, 12:25 (Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2008 12:30 von RoLe.)
' schrieb:Nun meine 1. Frage: Ist diese Umsetzung so in Ordnung? Oder kann man es einfacher erledigen?
Du kannst ein ShiftRegister an der ausseren Whileschleife machen und im Event BoolChange ein +1 machen.
' schrieb:2. Das Beenden der Schleife durch den Stopp Knopf funktioniert nur eingeschränkt, nachdem ich Stopp betätigt habe, muss ich erst den Hebel auf Wahr stellen, damit sich das Programm beendet. Wie kann ich erreichen, dass Stop den kompletten Ablauf abbricht?
Für den Taster Exit auch ein Event machen.
oder den Timeouteingang an der EventStructur anschliessen, ansonnsten warten diese ewig auf einen Event, deshalb geht es auch nach dem Taster betätigen.
EDIT: noch ein Bild dazu
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
' schrieb:Du kannst ein ShiftRegister an der ausseren Whileschleife machen und im Event BoolChange ein +1 machen.
Für den Taster Exit auch ein Event machen.
oder den Timeouteingang an der EventStructur anschliessen, ansonnsten warten diese ewig auf einen Event, deshalb geht es auch nach dem Taster betätigen.
Danke, habe es noch so angepasst, dass nur von False -> True gezählt wird. Somit spare ich mir also 2 komplexere Cases und die Verwendung von lokalen Variablen.
So sollte es nun passen:
' schrieb:Danke, habe es noch so angepasst, dass nur von False -> True gezählt wird. Somit spare ich mir also 2 komplexere Cases und die Verwendung von lokalen Variablen.
So sollte es nun passen:
Also, den Exit Taster würde ich schon als Event machen. So wie du es jetzt hast, macht es alle 1ms den "Timeout Event",wenn schon so dann 100ms.
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
' schrieb:Also, den Exit Taster würde ich schon als Event machen. So wie du es jetzt hast, macht es alle 1ms den "Timeout Event",wenn schon so dann 100ms.
Das wäre eine zu hohe CPU Last, die 1ms?
Leider weiss ich grad keinen Ansatz, den Exit Taster als Event zu machen, dass er dass andere Event abbricht...
' schrieb:Das wäre eine zu hohe CPU Last, die 1ms?
Ja, ob zu hoch, jedenfalls sinnlos. Mach den Taster als Event und nicht den Timeout.
' schrieb:Leider weiss ich grad keinen Ansatz, den Exit Taster als Event zu machen, dass er dass andere Event abbricht...
Hää, machst du genau gleich wie du bereits den Umschalttaster gemacht hast.
Die Eventstruktur wartet (unsichtbar im Hintergrund) auf einen Befehel (Taster) und führt den definierten Event 1x aus inkl. die umgebende While-Schlaufe (Lebensschlaufe)
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Ah, nun habe ich verstanden, wie es gemeint war. Sorry -_-
Nun klappt (fast) alles, wie ich es mir gedacht hab.
Noch eine Frage habe ich, die Ereignisstruktur funktioniert nur mit Frontpanel-Eingabefeldern? Zum Beispiel bei einer LED/Diode, wenn ich da deren Status überwache, tut sich nichts...
' schrieb:Ah, nun habe ich verstanden, wie es gemeint war. Sorry -_-
Nun klappt (fast) alles, wie ich es mir gedacht hab.
Noch eine Frage habe ich, die Ereignisstruktur funktioniert nur mit Frontpanel-Eingabefeldern? Zum Beispiel bei einer LED/Diode, wenn ich da deren Status überwache, tut sich nichts...
Trotzdem Danke,
Mat.
Jein, man kann auch programmatisch Events für die Event-Struktur auslösen:
Dann muss man die Property Node "Value (Signaling)" zum Setzen einen neuen Wertes verwenden, dann bekommt sowas die Event-Struktur mit.
Und dann gibt es noch die Möglichkeit benutzerdefinierter Events, dazu empfehle ich mal die entsprechenden Beispiele im NI-Examplefinder.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Jein, man kann auch programmatisch Events für die Event-Struktur auslösen:
Dann muss man die Property Node "Value (Signaling)" zum Setzen einen neuen Wertes verwenden, dann bekommt sowas die Event-Struktur mit.
Und dann gibt es noch die Möglichkeit benutzerdefinierter Events, dazu empfehle ich mal die entsprechenden Beispiele im NI-Examplefinder.
MfG, Jens
Danke, ich werde mich da mal durchhangeln.
Statt dem Überwachen einer LED wäre es bestimmt besser, direkt den entsprechenden Booleschen Ausgang zu überwachen, und jedes Mal, wenn die Flanke von False auf True wechselt, einen bestimmten Wert zu inkrementieren. Das muss doch irgendwie gehen ...