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!
ich habe mal wieder eine Prüfstandssoftware gestrikt.
Hier werden einige Messwerte überwacht und bei z.B. Überschreitung eines Wertes ein Benutzerereignis ausgelöst, das wiederum z.B. den Antrieb abschaltet. Das funktioniert alles wunderbar, allerdings habe ich das Problem, dass das jeweilige Ereignis geschätzte 100mal ausgelöst wird weil es einfach einige Zeit dauert um auf die Wertüberschreitung zu reagieren und bis die automatischen Gegenmaßnahmen greifen.
Meine Idee war eigentlich bei der Auslösung des Ereignisses, die nicht abgearbeiteten Ereignisse zu dursuchen und das entsprechende Ereignis nur auszulösen, wenn es nicht bereits in der Warteschleife steckt. Allerdings habe ich bis jetzt nicht gefunden wie ich an die Liste der ausstehenden Ereignisse rann komme. Oder gibt es eine andere Lösung wie ich ein Benutzerereigniss nur ein mal in die Erreignisliste eintragen kann?
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Brauche Liste anstehender Benutzerereignise
Lad' mal Dein VI hoch. Da stimmt doch bestimmt schon was an der Programmstruktur nicht.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
das mit dem Hochladen wird schwierig, es handelt sich hier um ein recht großes Projekt.
Vieleicht zur Beschreibung, ich überwache in einer Parallelschleife die Messwerte und reagiere hier auch gleich mit einem Abschaltbefehl an eine weitere Parallelschleife die wiederum die Kommunikation mit dem Antrieb übernimmt und dem auslösen eines Benutzerereignisses. in einer Weiteren Parallelschleife wird dann das Benutzerereignis genutzt um dem Benutzer eine Meldung auf den Bildschirm zu geben.
Da die Überwachungsschleife recht schnell läuft sieht sie auch bei den Folgedurchläufen nach der ersten Überschreitung noch überhöhte Werte und setzt logischwerweise die Meldung erneut ab. Das geht dann so oft bis der Wert endlich den kritischen Wert unterschritten hat. Ich hätte die Meldung auf dem Bildschirm allerdings gerne nur ein mal.
Gruß Mario
30.10.2013, 08:51 (Dieser Beitrag wurde zuletzt bearbeitet: 30.10.2013 08:56 von GerdW.)
Zitat:auch bei den Folgedurchläufen nach der ersten Überschreitung noch überhöhte Werte und setzt logischwerweise die Meldung erneut ab
Wie wäre es mit einer einfachen Erkennung einer steigenden Flanke eines boolschen Signals? Man muss ja eine solche Meldung nicht in jeder Iteration erneut absetzen...
So z.B.:
Wie schrieb schon Markus: "Da stimmt doch bestimmt schon was an der Programmstruktur nicht."
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Brauche Liste anstehender Benutzerereignise
Vielleicht hilft es, wenn Du überprüfst ob der Wert kleiner wird. Wenn er überschritten wurde und eine Meldung kommt und er danach aber kleiner wird (und in einer bestimmten Zeit) und sein Nomalwert erreicht, dann muss ja auch keine Meldung mehr kommen. Erst wenn er nach der Abnahme wieder ansteigt, bzw. die Grenze wieder übersteigt muss die Meldung kommen.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Wie wäre es, wenn du für jeden "Kanal" den du überwachst, noch parallel ein Flag setzt, sobald du eine Meldung abgesetzt hast...und dann nur noch die Kanäle für neue Meldungen überwachst, bei denen das Flag "false" ist?
Das würde ich jedenfalls machen...weil die Flankenauswertung schwierig werden könnte...
A.
"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)
(30.10.2013 08:04 )Mrindfleisch schrieb: Meine Idee war eigentlich bei der Auslösung des Ereignisses, die nicht abgearbeiteten Ereignisse zu dursuchen und das entsprechende Ereignis nur auszulösen, wenn es nicht bereits in der Warteschleife steckt.
Nur kleiner Hinweis am Rande: Das Problem scheint gelöst - ab LV2013
Zitat: Betrachten des Queue-Inhalts während der VI-Ausführung
In LabVIEW 2013 können Sie sich die Ereignisse in der Queue einer Ereignisstruktur ansehen. Außerdem werden alle VIs angezeigt, die Ereignisstrukturen mit registrierten Ereignissen enthalten, und Sie können die von der Ereignisstruktur verarbeiteten Ereignisse protokollieren. Klicken Sie die Ereignisstruktur mit der rechten Maustaste an und wählen Sie die Option Ereignisprüfungsfenster aus, um zu den Ereignisinformationen zu gelangen.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
RE: Brauche Liste anstehender Benutzerereignise
Ja, das geht (vgl. Screenshot), aber soweit ich weiß kann man die Ereignisse nicht programmatisch über irgendeinen "Node",... auslesen. Das wäre nicht schlecht.
Gruß Markus
(30.10.2013 11:52 )Lucki schrieb:
(30.10.2013 08:04 )Mrindfleisch schrieb: Meine Idee war eigentlich bei der Auslösung des Ereignisses, die nicht abgearbeiteten Ereignisse zu dursuchen und das entsprechende Ereignis nur auszulösen, wenn es nicht bereits in der Warteschleife steckt.
Nur kleiner Hinweis am Rande: Das Problem scheint gelöst - ab LV2013
Zitat: Betrachten des Queue-Inhalts während der VI-Ausführung
In LabVIEW 2013 können Sie sich die Ereignisse in der Queue einer Ereignisstruktur ansehen. Außerdem werden alle VIs angezeigt, die Ereignisstrukturen mit registrierten Ereignissen enthalten, und Sie können die von der Ereignisstruktur verarbeiteten Ereignisse protokollieren. Klicken Sie die Ereignisstruktur mit der rechten Maustaste an und wählen Sie die Option Ereignisprüfungsfenster aus, um zu den Ereignisinformationen zu gelangen.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------