TIA Min und Max Wert einer Zeitmessung speichern und wieder überschreiben

Monne

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich habe an einer Druckluft Wartungseinheit 2 Druckschalter. Druckschalter 1, 1 Signal bei 6 bar und druckschalter 2, 1 Signal bei 0,3 bar. Nun soll die Zeit gemessen werden (in ms Bereich) wie lange die Einheit braucht um Drucklos (0,3 bar) zu sein.
Nun habe ich 2 Bausteine um die systemzeit auszulesen. Der 1. wert wird ausgelesen wenn der druckschalter 6 bar 0 Signal hat. Und der zweite wert wird ausgelesen wenn druckschalter 0,3 bar 0 Signal hat. Mit den differenzbaustein zeigt er mir nun die Zeit an die er braucht um drucklos zu sein. Dieses funktioniert einwandfrei.
Nun zu meiner Frage, ich möchte mir einen Max wert und einen min wert speichern. Diese sollen immer wieder überschrieben werden wenn es mal länger oder schneller geht. Wie mache ich das am besten ? Wie könnte ich das mit den min und Max Bausteinen lösen?
Würde mich über Tipps freuen!
 
Na du speicherst doch sicherlich deinen aktuellen Wert auch schon irgendwo hin, in einen DB beispielsweise für den HMI-Zugriff...

Jetzt machst du da noch 2 Speicherstellen, eine für Min und eine für Max. Dann vergleichst du ob dein aktueller Wert größer als Max ist und wenn dann überschreibst du Max mit deinem aktuellen Wert... Gleiches dann bei Min nur eben mit kleiner als.
(Wenn man es dann noch schön machen will, das ganze nur einmal laufen lassen wenn man einen neuen "Aktuell-Wert" generiert und wenn schon größer als Max kann man den Vergleich bei Min auch überspringen)

MfG Fabsi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Okay, vielen Dank für die schnelle Antwort, hab das so ähnlich gemacht. Für maxwert hat es funktioniert nur dann hat er mir eine 0 in den minwert geschrieben tja und die null blieb dann dort immer drin stehen.
Meine Überlegung ist das jetzt mal mit den Max Baustein zu machen, lege an den Eingängen den aktuellen Wert und den maxwert an und am Ausgang nochmal den maxwert.
Das gleiche mache ich mit den min Baustein am Eingang minwert und aktualwert und am Ausgang nochmals min wert. Würde das wohl funktionieren ?
Habe das mit den vergleichen nicht hinbekommen !

Grüße
 
Das klingt ganz einfach.
Du hast den Wert Deiner MaxVariablen mit einem "sinnvollen" Wert vorbesetzt (anscheinend mit 0) ... und ...
Du hast den Wert Deiner MinVariablen mit einen "ungünstigen" Wert vorbesetzt (anscheinend mit 0).
Die 0 ist bei Deinen auftretenden Werten kleiner als der "aktuelle" Messwert und darum funktioniert die Aktualisierung des MaxWertes.
Die 0 ist bei Deinen auftretenden Werten kleiner als der "aktuelle" Messwert und darum funktioniert die Aktualisierung des MinWertes NICHT - er hätte grösser sein müssen.
Die Startwerte müssen so gewählt werden, dass der Startwert der MaxVariablen <= dem Messwert ist und der Startwert der MinVariablen >= dem Messwert.
Am logischsten ist es, Maxwert UND Minwert mit demselben Wert vorzubesetzen, nämlich mit dem allerersten Messwert.
Du hast sicherlich irgend ein Kriterium, mit dem Du die Max- und MinBildung starten willst.
Besetze beim Auftreten dieses Kriteriums die Min- und die MaxVariable (beide!) mit irgendeinem(!), aber demselben(!) Wert vor und dann sieht der eigentliche Vergleich z.B. so aus (Schreibweise an VB/VBA/VBS angelehnt, aber hoffentlich verständlich):

Code:
if xMax <= xMin then
    xMax = xAkt 
    xMin = xAkt
end if 
xMin = Min(xMin, xAkt)
xMax = Max(xMax, xAkt)

... oder so ...
Code:
[LEFT][COLOR=#222222][FONT=Verdana]if xMax <= xMin then
    xMax = xAkt 
    xMin = xAkt 
elseif xMax < xAkt then
    xMax = xAkt 
elseif xMin > xAkt then
    xMin = xAkt 
end if
[/FONT][/COLOR][/LEFT]
... wobei xAkt der aktuelle Messwert sein soll und die MaxFunktion vermutlich Deinem "Max Baustein" entspricht.

Gruss, Heinileini
 
Zuletzt bearbeitet:
Ahso, ich kenne mich nicht so aus in scl, ich erzeuge einen scl Baustein und schreibe das so da rein ? Sorry bin noch Neuling und ich bin mit dem ersten Projekt gestartet.
Oder kann ich im DB unter startwerte einfach etwas rein schreiben?
Vielen Dank für eure Hilfe, habe bestimmt noch mehr fragen demnächst :-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kenne mich auch nicht so aus in SCL. Die, die sich auskennen, könnten Dir jetzt sagen, warum das so wahrscheinlich in SCL nicht funktionieren kann (?).
Ich wollte versuchen, Dir klar zu machen, warum Dein MinWert brav auf 0 stehen bleibt.
Die MinErmittlung kommt nur dann in Gang, wenn der vorbesetzte Wert grösser (oder gleich) ist, als die folgenden Messwerte.
Gilt sinngemäss auch für die MaxErmittlung, aber hier muss der Startwert kleiner (oder gleich) sein.
Bei der MaxErmittlung war dies zufällig erfüllt, aber nicht bei der MinErmittlung.
So, jetzt kann man natürlich für Min und Max krampfhaft überlegen, welche Startwerte mit Sicherheit zum Erfolg führen müssten ... oder man erspart sich diese Mühe und nimmt einfach als Startwert den ersten Messwert! Das ist logisch sauber und erspart einem, sich über Unnötiges den Kopf zu zerbrechen.

Meine beiden Beispiele fangen damit an, zu prüfen, ob Max <= Min ist (wenn ja, dann werden der Max- und der MinWert mit dem aktuellen MessWert vorbesetzt).
Dies wird "normalerweise" nie der Fall sein, ausser, man hat bewusst dafür gesorgt, dass der Fall Max <= Min doch eintritt.
Das tut man dann, wenn man die Periode starten will, über die die Max- und MinWerte ermittelt werden sollen.
Wie und wo und wann Du das in Deiner Software tust, darauf bin ich nicht eingegangen - das bleibt Dir überlassen.
Die beiden Beispiele zeigen nur, wie der eigentliche Vergleich aussieht UND, dass an dieser Stelle noch mehr passiert, nämlich die Vorbesetzung mit dem ersten Messwert der Messperiode.
Gruss & schönes WE, Heinileini
 
Zuletzt bearbeitet:
Zurück
Oben