24V ueberwachung speichern niedrigsten Wert in DB

da glaus

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alles zusammen,

brauche bitte eure Hilfe...komme einfach nicht mehr weiter, habe auch schon 3h im Forum gesucht und versuche schon eine Zeit lang!

Es geht um eine 24V Ueberwachung die zur Zeit so funktioniert, dass wenn mir die Spannung unter 20V einbricht, dann schreibe ich mir eine Meldung ins OP73!

Allerdings weiss ich dann nie wie niedrig die Spannung war!

Habe eine DB50.DBD84 = Aktualwert 24V (REAL)
und einen DB200.DBD4 = Niedrigster Wert (REAL)

Bitte kann mir jemand sagen wie ich das realisieren kann!

Beste Gruesse
glaus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo manfred,

danke fuer die schnelle antwort, habe den code angepasst, aber sorry ich krieg nicht einmal das hin, wenn du mir schon den code vorgibts....hab ich da was vergessen? wenn ich den istwert aendere speichert es leider nicht den max oder min wert...?

U #start
SPBN m001
L #ist_wert24V
T #max_wert24V
T #min_wert24V
m001: L #ist_wert24V
L #max_wert24V
>=R
SPBN m002
L #ist_wert24V
T #max_wert24V
m002: L #ist_wert24V
L #min_wert24V
<=R
SPBN m003
L #ist_wert24V
T #min_wert24V
m003: SET
SAVE

Danke vielmals!
 
deklarierung

hole den start wert ueber einen merker
den ist wert ueber einen db50.DBD84 rein
max wert in db200.DBD4
min wert auch in db200.DBD8
 
Sollte eigentlich funktionieren. Setzt du das Start-Bit nach dem ersten Speicherzyklus zurück? Sind deine Werte REAL-Zahlen?

Gruß Woldo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo woldo,

sorry bin total anfaenger wie setzte ich mein start-bit nach jedem speicherzyklus zurueck..?
ich verwende real zahlen..!

habe ja nur einen analogwert den ich bekomme = mein ist wert.
und der max und der min sollen sich dann ergeben bzw. gespeichert werden.
aber wenn ich das start-bot aktivieren dann haben alle werte und wenn ich das start-bit deaktviere dann bekomme ich nur den may wert, weil er mir dann fuer dann max wert nach m001 0 annimmt...
und gespeichert wird dann leider auch nichts....sorry ich blick da leider nicht durch.!

danke

gruesse
glaus

habe ja nur einen analogwert den ich bekomme = mein ist wert.
und der max und der min sollen sich dann ergeben bzw. gespeichert werden.
 
Zuletzt bearbeitet:
hi,

ich würde das so oder so ähnlich machen:

Code:
l Aktualwert
un ALARM
spb RES
l MIN Wert
>R
beb
tak
RES: t MIN Wert

Dabei bleibt der Minimalwert halt nur gespeichert, bis der Alarm gegangen ist.

Micha
 
Zuletzt bearbeitet:
hallo micha,

das wuerde voellig aureichen, wenn nur der min wert gespeichert wird.
kannst du mir den code bitt genau erklaeren?

l Aktualwert //schreibe ich da einfach dann L DB50.DB84 ??
un ALARM // ist mein M120.1 die meldung was rausgeht wenn <20V
spb RES // springe da wenn VKE1 wohin?was macht man da?
l MIN Wert // woher bekomme ich den min wert??
>R // groesser AKKU1
beb //
RES: t MIN Wert // ist dass dann mein min-wert..aber woher? und wie wird der dann im db gespeichert....!

danke vielmals!

gruesse
glaus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok,

Code:
l DB50.DBD84   //Lade Aktualwert
un M120.1   //binäre Bedingung für Reset des Minwertes (bei dir: Alarm)
spb RES     //Wenn kein Alarm, dann springe nach RES (letzte Zeile)
l DB200.DBD4 //Lade Minwert (Wenn kein Alarm, dann ist er gleich dem Aktualwert)
>R //Wenn der Aktualwert grösser ist als der Minwert
beb //wird der Baustein beendet
tak //Aktualwert aus Akku 2 holen
RES: t DB200.DBD4 //ansonsten der Aktualwert als neuer Minwert geschrieben

Lege eine neue FC an, und kopiere den Code einfach rein.
Aufruf der neuen FC im OB1 nicht vergessen.

Diese FC kannst du dann aber nur einmal im gesammten Programm verwenden.

Hast du mehrere Spannungen zu überwachen, dann musst du die FC parametrierbar machen. Für eine Überwachung ists so OK.

Micha
 
Zuletzt bearbeitet:
so habe nach einigem rumsuchen die herausforderung durch die abfrage von ARRAYS gut loesen koennen (unter der hilfe AWL beschreibt das Programmierbeispiel ARRAY genau das was ich brauche)...bekomme jetzt von allen meinen netzgeraeten die mindest und neben bei noch die hoechstspannung in meinem db gespeichert...trotzdem vielen dank fuer eure hilfe!
 
hallo micha, eine frage bítte noch, warum darf man den FC den du mir geschickt hast nur einmal verwenden.....
wie macht man einen fc parametrierbar?
und benoetige ich immer BEB nach so einer funktion?

danke fuer deine hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo micha, eine frage bítte noch, warum darf man den FC den du mir geschickt hast nur einmal verwenden.....
wie macht man einen fc parametrierbar?
und benoetige ich immer BEB nach so einer funktion?

danke fuer deine hilfe

Der FC darf nur einmal verwendet werden, da darin absolute Variablen benutzt werden.
Wenn du ihn 2 mal aufrufst, dann kommt 2mal das gleiche Ergebnis im Min-Wert raus (Es ist ja nur einer angegeben - DB200.DBD4).
Das ist bei mehren Überwachungen Quatsch.
Deshalb parametrierbar machen.

Parametrierbar machen bedeudet, dass dem Baustein die Variablen von aussen übergeben, und keine Variablen (Datenwörter Meker usw.) im Codeteil des FC benutzt werden.

Dazu benutzt man die IN, OUT, IN/OUT Schnittstellen im oberen Teil eines Bausteines.

Das wäre bei dir z.B.

IN Variablen
"AKTUALWERT" vom Typ REAL
"ALARM" vom Typ BOOL

IN/OUT Variable
"MINWERT" vom Typ REAL

Der Code würde dann so aussehen:

Code:
l AKTUALWERT   //Lade Aktualwert
un ALARM   //binäre Bedingung für Reset des Minwertes (bei dir: Alarm)
spb RES     //Wenn kein Alarm, dann springe nach RES (letzte Zeile)
l MINWERT //Lade Minwert (Wenn kein Alarm, dann ist er gleich dem Aktualwert)
>R //Wenn der Aktualwert grösser ist als der Minwert
beb //wird der Baustein beendet
tak //Aktualwert aus Akku 2 holen
RES: t MINWERT//ansonsten der Aktualwert als neuer Minwert geschrieben

Wenn du das so in einen leeren FC reinkopierst (IN und IN/OUT Variablen anlegen), dann hast du beim Bausteinaufruf im OB1 die Möglichkeit deine Datenwörter und den Alarm für jeden Aufruf des FC1 unterschiedlich zu parametrieren.

Dadurch kannst du den FC x mal aufrufen.

Das BEB könnte hier auch durch einen Sprung hinter die letzte Zeile ersetzt werden.
Das könntest du machen, wenn du nur sehr wenige Spannungen zu überwachen hast, und alles in einem FC hintereinander weg programmierst.
Dadurch nimmst du dir aber die Flexibilität mal schnell ne Überwachung nachzurüsten oder zu löschen, sparst aber Bausteinaufrufe...

Micha
 
Zurück
Oben