Autor Thema: Warnung nach adaptiv verstrichener Zeit  (Gelesen 2563 mal)

Offline Skandal

  • Newbie
  • *
  • Beiträge: 9
Warnung nach adaptiv verstrichener Zeit
« am: Juni 02, 2022, 21:41:18 Nachmittag »
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?

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 709
  • Think easy!
    • mollgruppe
Antw:Warnung nach adaptiv verstrichener Zeit
« Antwort #1 am: Juni 03, 2022, 14:40:58 Nachmittag »
Mit dieser Logik und Reihenfolge klappt das nicht. Kann dir morgen eine Lösung schreiben.
Gruß Thomas
Weil Einfach einfach Einfach ist!

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 709
  • Think easy!
    • mollgruppe
Antw:Warnung nach adaptiv verstrichener Zeit
« Antwort #2 am: Juni 04, 2022, 18:26:00 Nachmittag »
Hallo Skandal,

hier mal mein Vorschlag.
Ich wusste nicht wie die Warnung behandelt werden soll. Bin davon ausgegangen, das es eine 5s Warnung gibt und weiter auf Signale geprüft wird

I01 = Maschiene läuft
I02 = Signal

//Sekundentakt erzeugen (Zeitrelais Ansprechverzögert, Auflösung 5ms)
T01 (
EN := NOT T01Q1,
RE := ,
ST := ,
I1 := T#990ms,
I2 := ,
Q1 => ,
QV => );
(*Ablauf mit Schrittkette*)
CASE MB100 OF
0:  MW60:= 0; //Init
MW61:= 30; //braucht nicht initialisiert werden wenn einmal eingestellt und remanent
MB100:=1;
1:  IF I01 AND T01Q1 THEN //sek hochzählen
    MW60:= MW60+1;
    END_IF;
    IF (MW60 > 5) AND I02 THEN //wenn Signal kommt, Sekunden speichern und resetten
    MW61:= MW60;
    MW60:= 0;
    ELSIF MW60 >= (MW61 + 5) THEN //Wenn Signal nach n+5s nicht kam, Warnung setzen und zu 2 gehen
    Q01:= true;    
    MB100:=2;
    END_IF;
    IF NOT I01 THEN //Maschiene ist aus erkannt, gehe zu 3
    MB100:=3;
    END_IF;    
2:  IF Q01 AND T01Q1 THEN // bei Warnung 5s hochzählen, dann gehe zu 3
MB101:= MB101+1;
END_IF;
IF MB101 >= 5 THEN
MB100:= 3;
END_IF;
3: Q01:= false; //Warnung abschalten und zurück zu 1
MB101:=0;
    MW60:= 0;
MB100:=1;
ELSE
MB100:= 0;
END_CASE;


Ich hoffe das hilft weiter.

Gruß Thomas
« Letzte Änderung: Juni 04, 2022, 18:28:11 Nachmittag von radar17892 »
Weil Einfach einfach Einfach ist!

Offline Skandal

  • Newbie
  • *
  • Beiträge: 9
Antw:Warnung nach adaptiv verstrichener Zeit
« Antwort #3 am: Juni 08, 2022, 22:01:39 Nachmittag »
hmmm das funktioniert grundsätzlich definitiv besser als meine herangehensweise aber auch noch nicht perfekt.
Zumindest habe ich das Gefühl dass der zeitliche Abstand der Eingänge nicht passt bzw. nicht dem Abstand des letzten Intervalls +5s betrifft (aber das meist erst bei längeren Intervallen).
Das Oszilloskop scheint das bis jetzt zu bestätigen, kann ich den Verlauf des Oszilloskops irgendwie als CSV oder so exportieren? Ich verstehe irgendiwe sonst nicht wofür es die Aufnahme funktion in der Simulation gibt weil ich keine Möglichkeit finde die Aufnahme abzurufen ?


Warum hast du eigentlich so ein aufwendiges Konstrukt gewählt mit dem Switch case? Bzw. warum funktioniert mein Ablauf nicht mit den If Szenarien nacheinander und MD3 ist immer 0 bzw. 5?

Offline Skandal

  • Newbie
  • *
  • Beiträge: 9
Antw:Warnung nach adaptiv verstrichener Zeit
« Antwort #4 am: Juni 12, 2022, 17:19:43 Nachmittag »
Falls jemand in Zukunft ein ähnliches Problem hat, ich habe es jetzt folgendermaßen gelöst:

//IA1 = Tolerance (Sec.) to start Warning
//I01 = Input to reset Timer
//Q01 = Output, Active if Warning

//MW2 : Current Cycle Time
//MW3 : Previous Cycle Time
//M1  : "DIODE" to filter out single Button Press
 
IF MW2>IA1 AND I01 = TRUE THEN
M1:=TRUE;
END_IF;

IF M1 = TRUE THEN
MW3:=MW2;
MW2:=0;
END_IF;

T01 (
EN := NOT T01Q1,
RE := ,
ST := ,
I1 := T#1s000ms,
I2 := ,
Q1 => ,
QV =>
);

IF T01Q1=TRUE THEN
MW2:=MW2+1;
END_IF;

IF (MW3+IA1)<MW2 THEN
Q01:=TRUE;
ELSE
Q01:=FALSE;
END_IF;

M1:=FALSE;

Bzw. habe ich das nochmal als Funktionsblock angehängt mit Eingang, Ausgang und Toleranz.
« Letzte Änderung: Juni 14, 2022, 07:13:18 Vormittag von Skandal »