Hallo Freunde,
zweites Thema in kurzer Zeit, Pizzaofen ist noch in Arbeit aber ich habe noch ein Projekt auf Arbeit laufen.
Kurzgesagt:
Ich habe eine Maschine welche in unterschiedlichen Abständen ein Signal schickt. Sollte dies nicht geschehen (+Toleranz) möchte ich den Bediener warnen.
Der Zeitraum sollte sich hier immer dynamisch nach dem letzten Wert richten. Wenn das Signal beim letzten mal also nach 30s erst kam sollte jetzt die Warnung bei 35sek. kommen usw.
Signal = Digitialeingang, Warnung an Bediener = Digitalausgang.
Ich habe mir folgendes überlegt und finde keine Lösung warum es nicht funktioniert:
IF I01 = TRUE THEN
MD3:=MD2+5;
END_IF;
//Das sollte die Zeit speichern (also MD2) als das letzte Mal der Eingang kam.
//Zusätzlich rechne ich noch eine Toleranz von 5Sek. auf meinen letzten Wert.
OT01 (
EN := TRUE,
RE := I01,
D_ := FALSE,
SE := ,
I1 := ,
SV := ,
Q1 => ,
ZE => ,
QV => ,
MN => ,
SC =>
//Das ist einfach der Betriebsstundenzähler mit dem Digitaleingang als reset.
);
MD2:=(OT01MN*60)+OT01SC;
//MD2 = Elapsed Time since last Button Push
//MD3 = Elapsed Time for the last cycle
IF MD3<MD2 THEN
Q01:=TRUE;
ELSE
Q01:=FALSE;
END_IF;
//Das sollte dann den Ausgang setzen, wenn die aktuelle Zeit größer ist als die Zeit beim letzten mal +5sek.
Wieso auch immer wird aber MD3 immer zurückgesetzt bzw. auf 5 gesetzt. MD3 ist nur während dem Knopfdrück eine Zahl + 5sek.
Ich verstehe nicht warum MD3 trotzdem überschrieben wird obwohl ich es nirgends anders beschreibe.
Kennt ihr hier eine Lösung?