07.01.2010, 13:59
Beitrag #1
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Wertkontrolle und Ereigniss bei Fehler
Hallo,
ich lese dauernd Werte in meiner Applikation ein. Für den Fall, dass eine Pumpe ausfällt, möchte ich darauf reagieren können und diese gleich wieder einschalten oder beliebige andere Aktionen. Die Abfrage der Werte erfolgt über globale Variablen. Ich stelle mir eine Art unterfunktion vor, die in der Haupt-Whileschleife über eine "istgleich" funktion die Boolwerte des Pumpenzustands vergleicht und im Fehlerfall ein Event erzeugt (Wertänderung?).
Liebe Grüße Thomas
P.S.: Frohes neues Jahr an alle hier!
|
|
|
07.01.2010, 15:43
Beitrag #2
|
|
|
11.01.2010, 09:31
Beitrag #3
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Wertkontrolle und Ereigniss bei Fehler
Hallo,
*grins* ja ich weiß, die Frage war nicht wirklich sinnvoll gestellt. Ich plane also für den Fall, dass eine Pumpe ausfällt eine "Notfall"-Routine, die es mir ermöglicht zunächst automatisch, im weiteren Fehlerfall manuell einzugreifen. Bei der Verschachtelung brauche ich Logikhilfe. Mein Grundplan sieht folgendes vor:
1. Ich überprüfe ob die Boolwerte Pumpe 1 und Pumpe 2 voneinander abweichen (fallen Beide Pumpen aus, passiert nicht viel, dann steht halt nur alles, aber es passiert auch nichts schlimmes).
2. Ich überprüfe, ob ich mich im laufenden Betrieb befinde, weil nur hier ist es ein Problem, wenn eine Pumpe nicht läuft. Beim Reinigen oder Anfahren kann es durchaus sein, dass eine Pumpe mal steht.
Ich habe also eine Whileschleife in der ich stehen habe: Ist P1 ungleich P2? Und ist Betriebszustand=1. Wenn Ergebniss von Schritt 1 = Ergebnis Schritt 2, habe ich einen Problemfall identifiziert. Aus dem letzten Gleichheitsoperator bekomme ich ein Boolsches True. Wie erzeuge ich hieraus einen Event, den ich dann abfragen kann? Eine einfache Wertänderung kann es ja nicht sein, weil wenn ich das Problem gleöst habe, müsste ich dann mein Event resetten um auf weitere Fehlerfälle wieder reagieren zu können. Dies wäre eine erneute Wertänderung und ich würde wieder in die Eventstruktur einsteigen.
Soweit zum ersten Teil meines Problems. Später muss ich noch ausklabüstern, wie ich es anstelle, dass genau zweimal versucht wird die Pumpe automatisch neu zu starten. Das werde ich wohl mit einer For-Schleife oder einer Whileschleife mit Zähler realisieren, aber das steht wie gesagt erst mal hinten an.
Gruß Thomas
|
|
|
11.01.2010, 10:03
Beitrag #4
|
|
|
11.01.2010, 12:46
Beitrag #5
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Wertkontrolle und Ereigniss bei Fehler
Hallo!
Genau das was ich brauche, jetzt habe ich die Sache mit den Benutzerevents auch verstanden glaube ich. Da hatte ich bisher noch einen Knoten im Hirn. Wie mache ich das, wenn ich jetzt in der Ereignisstruktur nur 2 oder 3 mal die Pumpen neu starten will. Klar, ich brauche einen Zähler und eine Case-Struktur (Zunächst einmal: gibt es in LabVIEW sowas wie x=x+1?) , aber wenn nach dem zweiten Start die Pumpe wieder läuft muss ich das ja irgendwie resetten können, also den Zähler auf 0 setzen. Das bereitet mir noch Kopfzerbrechen, weil für den Fall, dass die Pumpen laufen komme ich ja nicht mehr in die Ereignisstruktur und somit nicht mehr "in Berührung" mit meinem Zähler...
Gruß Thomas
|
|
|
11.01.2010, 12:57
(Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2010 15:01 von jg.)
Beitrag #6
|
|
|
11.01.2010, 13:24
Beitrag #7
|
tt-web
LVF-Gelegenheitsschreiber
Beiträge: 123
Registriert seit: Jul 2009
8.6
2008
de
64354
Deutschland
|
Wertkontrolle und Ereigniss bei Fehler
Hallo!
Klasse, ich hab's hinbekommen. Ich hab's so gemacht: Globale Variable definiert und auf 0 gesetzt. Wenn ein Fehler auftritt, wird die Variable für jeden Versuch im 1 erhöht, tritt der fehler nicht mehr auf, so löse ich auch kein Benutzerereignis aus und setze in diesem Fall die Variable wieder auf 0. Das funktioniert ganz gut, da das Polling der Daten verzögert abläuft und ich keine Falschpositivmeldung erhalten kann.
Gruß Thomas
|
|
|
| |