Temperaturregelfunktion in CODESYS

Hohe

Level-1
Beiträge
24
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forumgemeinde,
wollte Fragen wie ich am einfachsten eine kleine Regelfunktion erstellen kann. Es handelt sich um diese Situation:

Steuerung BX9000:

Ich möchte wenn mein PT100 <25°C anzeigt auf TRUE schalten und dann so lange auf TRUE bleibt bis die Temperatur >28°C ist und dann wieder auf FALSE geht.
Falls die Temperatur wieder sinkt sollte er aber nicht gleich wieder bei <28°C auf TRUE schalten sondern erst bei <25°C und dann wieder auf 28°C auf TRUE bleiben?

Mein Ziel ist es damit das es wenn es genau auf 25°C steht das er nicht immer ein/ausschaltet?

Finde leider auch bei OSCAR.lib nichts...


Würde mich auf einen Vorschlag eurer Seite freuen!

LG Thomas
 
Das ist ein Hysteresschalter, den kann man rel. leicht selbst bauen, da braucht man Oscat nicht.

Ein Vergleicher 1, der bei Temp > 28 Grad einen Merker M0 setzt.
Ein Vergleicher 2, der bei Temp < 25 Grad den Merker M0 zurücksetzt.

Wenn der Ausgang dann angesteuert wird, hat er immer den Merker M0 als "Und Nicht" im Zweig.

U Mx
UN M0
= Ay

Bsp.:
Es geht bei 0 grad los, M0 ist False, bzw. wird vom Vergleicher 2 zurückgesetzt.
Die Temp. steigt auf über 28 Grad, M0 wird vom Vergleicher 1 True gesetzt, der Ausgang wird False.
Die Temp. sinkt unter 28 Grad, M0 ist immer noch gesetzt, der Ausgang bleibt False.
Die Temp. sinkt unter 25 grad, M0 wird vom Vergleicher 2 False gesetzt, der Ausgang wird wieder True.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die schnelle und tolle Antwort! ;)

Hier kurz wie ich es umgesetzt hab:

Funktionsblock (MERKER):
VAR: M1:BOOL:=TRUE;
IF temp1 > 285 THEN
m1:=FALSE;
END_IF

IF temp1 < 255 THEN
m1:=TRUE;
END_IF

Funktionsblock (Regler):
(*Tempschaltung SOMMER=TRUE (STEUERUNG LINKE SEITE)*)(MSTAT ist nur ein Signalgeber einer Manuel- Steuerung)
IF MSTAT=TRUE THEN
outl2:=FALSE;
ELSIF summer=TRUE AND M1=TRUE THEN
outl2:=TRUE; ELSE
outl2:=FALSE;
END_IF


So nun habe ich aber noch eine kurze Frage, möchte einen Ausgang zu einer gewissen Zeit für 10SEC auf True haben, soll ich das mit der realtime regeln?

LG Thomas
 
Zuletzt bearbeitet:
So nun habe ich aber noch eine kurze Frage, möchte einen Ausgang zu einer gewissen Zeit für 10SEC auf True haben, soll ich das mit der realtime regeln?

Ja, ich würde das mit der Uhrzeit machen, denn die kann man direkt in Vergleichern nutzen, wenn ich das richtig in Erinnerung habe. Dazu würde ich mit die gewünschte Startzeit speichern, und dann wieder zwei Vergleicher, wie schon gehabt.

Vergleicher 1: Istzeit > Startzeit
Vergleicher 2: Istzeit < Startzeit + 10 Sekunden

Wenn beide Vergleicher True, dann Ausgang auf True, sonst Ausgang auf False.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jup so hat ich es mir auch gedacht, ansonsten gibt es ja keine Möglichkeit mit einen Offset oder so etwas?

LG

Na ja, du könntest bei erreichen der Zeit einen ganz normalen Timer starten, der dann 10 Sekunden läuft. Abe eine Zeit auf = zu vergleichen ist nicht so sicher, denn es ist immer die Frage, ob bei einer evtl. möglichem langsamen Zykluszeit die Zeit genau getroffen wird. U.U. schaltet die Zeit dann gar nicht. Also muß man sich ohnehin zur Sicherheit ein Schaltfenster bauen und dann kann man auch gleich ein 10 Sekunden-Fenster nehmen und dieses direkt einsetzen.
 
Wie würde den so ein Timer aussehen wenn ich möchte z.B.: das er 10sec runterläuft und der Ausgang auf TRUE ist?

LG Thomas
 
Zurück
Oben