TIA Variablenwert im Abschnitt von 1s miteinander vergleichen

Elektriktrik

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe mir bereits einen fb gebaut, der einen Sensorwert (Druck) in real ausgibt. Diesen real Wert möchte ich gern speichern und mit dem Wert der gleichen Variable 1 Sekunde später vergleichen. Es soll einen Abriss einer Rohrleitung simulieren. Sobald also der Druck innerhalb 1 Sekunde um 20 bar sinkt, soll die Anlage abschalten.

Ich habe die Grundidee dies mit einem Impuls zu realisieren. Aber so richtig einen Plan habe ich noch nicht.
Hättet ihr da ne Beschreibung wie ich das programmieren könnte?

Vielen Dank schonmal!
 
z.B. so (je nach Sprache anpassen)

Aufruf jede 1 Sekunde einer Routine

Innerhalb der Routine:
Code:
IF Druck < (Druck_alt + 20) 
Then abschalten
END_IF

Druck_alt := Druck
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja das mit dem Vergleichen bekomme ich hin, aber das mit dem Impuls nicht so richtig. Ich muss ja quasie eine real Variable speichern, dann den Wert 1 Sekunde später mit der gleichen Variable vergleichen, danach dann den gespeicherten Wert löschen und wieder von vorne usw.
Aber wie sieht das als Code aus?
 
habe ich doch geschrieben

jede Sekunde eine Routine aufrufen (z.B. eigener Baustein)

innerhalb der Routine den aktuellen Wert mit dem alten (gespeicherten) Wert + 20 vergleichen
noch innerhalb, aber am Ende der Routine den aktuellen Wert abspeichern (Druck_alt := Druck)

für den Aufruf der Routine nimmst Du eine Flanke von einem 1Hz Taktgeber

d.h. Du brauchst für die Flanke eine statischen oder globale Variable (bool) und für den alten Druckwert eine statische oder globale Variable (REAL)

wieso willst Du den gespeicherten Wert löschen?

welche Steuerung? welche Programmiersprache? welches Programmiersystem?
 
Ok habe ich soweit verstanden. Danke schonmal! Ok, das mit dem gespeicherten Wert löschen war quatsch:D.
Wie speicher ich denn überhaupt einen Wert? Bin leider blutiger Anfänger:confused:

S7-1200, SCL, TIA Portal
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nachdem ich das ja erst 2mal geschrieben habe (alle guten Dinge sind ja bekanntlich 3 ;))

// in scl Wert speichern
Druck_alt := Druck;

und wie auch schon geschrieben:
Du brauchst für den alten Druckwert eine statische oder globale Variable (REAL), (3 Zeilen höher mit "Druck_alt" bezeichnet)

statische Variable: im FB-Kopf die Variable unter static eintragen

globale Variable: in einem globalen DB die Variable eintragen
 
Wie speicher ich denn überhaupt einen Wert? Bin leider blutiger Anfänger:confused:
indem Du den Wert einer (statischen oder globalen) Variable zuweist. Der Wert bleibt dann so lange in der Variable gespeichert, bis der Variable ein anderer Wert zugewiesen wird.
Code:
variable := wert;  //wert in variable speichern

Temporäre Variablen (VAR_TEMP) können zwar auch Werte speichern, aber nicht länger als der Baustein läuft, in dessen Speicherbereich die temporäre Variable liegt. Beim nächsten Durchlauf des Bausteins ist wieder irgendein (quasi zufälliger) Wert drin und man muß vor Verwendung der Variable erst wieder kontrolliert einen Wert reinschreiben.

Harald
 
Zurück
Oben