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 

Werte innerhalb einer Zeitspanne überprüfen



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!

12.03.2010, 10:28
Beitrag #1

tt-web Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Jul 2009

8.6
2008
de

64354
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Hallo,
ich habe ein eher allgemeines Programmierproblem:
Ich habe eine Statemachine gebaut "Anfang" "Vergleich" "Ende". In "Anfang" wird überprüft, ob zwei Werte gleich sind. Sind diese gleich wechsel ich in den Zustand "Vergleich". Wenn nicht durchlaufe ich wieder "Anfang".
In "Vergleich" soll überprüft werden, ob die Werte für eine Zeitspanne von 5 Minuten gleich bleiben, danach wechsel ich zu Ende und mein Ursprungsprogramm läuft weiter.
Nun mein Problem mit dem Vergleich: Die Bedingung ist, dass die Werte gleich bleiben. Solange soll eine Schleife laufen. Ist das Ende der Zeitspanne erreicht soll der Wert True ausgegeben werden um in den nächsten Modus zu wechseln. Sollte der Wertevergleich eine Abweichung ergeben (False) soll insgesamt ein False ausgegeben werden um in den Modus "Anfang" zu wechseln. Ich habe jetzt mit diversen While- und Case-Konstruktionen rumgebastelt, aber ich bekomme es nicht hin....

Mein Problem bei Case ist, dass Case immer nur einmal am Anfang ausgelesen wird. Ich überlege jetzt ob ich zwei Whileschleifen benutze. In der einen läuft die Zeit und wird beendet wenn die Zeit abgelaufen ist. Ich habe dies mit der Funktion "Zeit in ms" und Schieberegistern gelöst. In der Zweiten Schleife wird Verglichen. Wenn der Vergleich False ist wird False ausgegeben, ist der Vergleich True und die Zeit True wird ein True ausgegeben, ist der Vergleich True und die Zeit ist True läuft die äußere Schleife um die beiden Schleifen weiter...

Geht das so? Geht das einfacher? Irgendwelche ideen? Gibt es ein VI für solche Fälle?

Gruß thomas
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2010, 10:44 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2010 10:45 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Hallo Thomas,

eine while-Schleife sollte reichen. Abbruchbedingung für die Schleife ist halt (Zeit abgelaufen) OR (Werte sind ungleich).
Welchen Wert du aus der Schleife rausgibst, bleibt dir überlassen. In deinem Fall müsste es ausreichen, das Ergebnis von (Zeit abgelaufen) weiterzureichen...

Also kurz zusammengefasst: du verknüpfst 2 Bedingungen, um deine Schleife zu beenden, gibst aber nur eine davon als Ausgabe weiter...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2010, 12:59 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2010 13:08 von tt-web.)
Beitrag #3

tt-web Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Jul 2009

8.6
2008
de

64354
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Danke!
Ich hab mal wieder viel zu kompliziert gedacht....

Gruß Thomas


Kommando zurück... so geht es nicht. Denn wenn ich das so mache wird die Schleife ja sofort beendet, weil die Werte gleich sind. Ich muss nur wissen, ob sie es im Verlauf von 5 Minuten immer noch sind. Ich versuch das Problem mal zu schildern:
Ich frage von einem Messgerät einen Durchfluss ab. Im Anfahrbetrieb nähert er sich immer mehr dem eingestellten Sollwert. In meiner Funktion möchte ich überprüfen, ob dieser Fluss auch innerhalb von 5 Minuten konstant ist. Die Folge ist dann, dass meine Anwendung in den Prozessbetrieb überwechselt. Daher der Aufwand. Ich müsste die Schleife also beenden, wenn die Zeit abgelaufen ist, muss aber erneut in die Schleife einsteigen, wenn der Durchfluss doch nochmal abweichen sollte.

Das war die einfache Version, in Wirklichkeit prüfe ich einen ganzen Bereich +-3% vom Sollwert ab, aber das hat mit dem eigentlichen Problem ja nichts zu tun.

Gruß Thomas
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2010, 13:19 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2010 13:22 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.430
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Hallo Thomas,

also zwei ineinander geschachtelte Schleifen.
Innere Schleife: Abbruch nach Zeit; gibt Flag aus, ob Werte innerhalb Sollbereich oder nicht
Äußere Schleife: Abbruch, falls Werte im Sollbereich

Hab ich auch schon mal gehabt, damals mit einem Ofen, der eine bestimmte Temperatur einstellen sollte. Hatte ich gelöst mit einer allgemeinen Wartezeit vorneweg (der Ofen war etwas träge) und einer Schleife, die eine maximale Zeit aufs Einstellen wartet. Wenn der Ofen nach 1 Stunden immer noch nicht den Zielbereich erreicht hatte, war definitiv was kaputt gegangenSmile

Edit:
Du verwendest doch schon eine State-Machine. Da kannst du doch einfach nach deiner Zeitschleife entscheiden, ob du in den "Ende"-State weitergehst oder nochmal in den "Vergleiche"-State... Brauchst also nur eine Schleife!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2010, 13:50
Beitrag #5

tt-web Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Jul 2009

8.6
2008
de

64354
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Hallo,
also ich nehme eine While-Schleife, die - solange der Vergleich True ergibt - läuft. In der inneren Schleife lasse ich die Zeit laufen. Das Problem was ich jetzt habe ist, dass ich immer erst die Zeit komplett durchlaufen lassen muss, bis ich auf eine Abweichung reagieren kann. Daher würde ich gerne einen Ansatz mit einer äußeren und zwei parallel ablaufenden inneren Whileschleifen ausprobieren. Die innere Vergleichsschleife ist auf "Ausführen, solange True" und die Zeitschleife auf "Abbruch wenn True" gestellt. Wenn die Vergleichschleife abbricht und die Zeitschleife noch läuft muss ich "zurück", also in die äußere Schleife neu einsteigen, damit der Zeitzähler zurückgesetzt wird. Wenn die Zeit abgelaufen ist (True) und an der Vergleichsschleife auch ein True anliegt beende ich die äußere Schleife....

Mal schauen, ob ich das hinbekomme und ob da logische Fehler enthalten sind....

Gruß Thomas
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.03.2010, 14:07
Beitrag #6

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Ich würds so machen, da braucht man nur eine Schleife.

Lv80_img
Sonstige .vi  Wait4SteadyState.vi (Größe: 45,38 KB / Downloads: 306)


   
EDIT: Das lLimit muss natürlich "T-T/100*L" sein.

Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.06.2010, 08:56
Beitrag #7

tt-web Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 123
Registriert seit: Jul 2009

8.6
2008
de

64354
Deutschland
Werte innerhalb einer Zeitspanne überprüfen
Hallo!
Danke für den Beitrag. Jetzt habe ich endlich mal die Zeit gefunden mich mit dem VI auseinanderzusetzen. Früher hätte wenig Sinn gehabt, da mir die Zeit gefehlt hat. . Mir ist noch nicht alles klar aber ich glaube ich könnte es schaffen damit zurecht zu kommen. Vielen Dank auf jeden Fall schon mal vorab.

Liebe Grüße thomas
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  RTF, HTML und PDF innerhalb von VI anzeigen achim @ FZK 5 3.789 17.05.2021 08:36
Letzter Beitrag: Zelos
  mit Ringbuffer Werte einer Minute speichern mikadm 14 5.806 08.09.2020 11:00
Letzter Beitrag: GerdW
  Rechteck innerhalb eines Rechtecks oe-ms1 4 3.490 29.03.2018 11:52
Letzter Beitrag: oe-ms1
  Lesen von Werte in einer Case-Struktur patriote00 5 4.422 08.12.2015 11:33
Letzter Beitrag: patriote00
  Schalter nach Zeitspanne wieder umschalten Uebertreiber 4 5.786 26.04.2015 11:30
Letzter Beitrag: Uebertreiber
  Muster suchen, RegEx Ausdruck String innerhalb Klammern dali4u 2 5.143 23.09.2014 10:30
Letzter Beitrag: dali4u

Gehe zu: