- Beiträge
- 27.274
- Reaktionspunkte
- 10.570
-> Hier kostenlos registrieren
Das ist wohl jedem klar. Daher auch ein paar "Schubse" in die richtige Richtung.Hier möchte jemand, dass man ihm seine Hausaufgaben macht und das unter minimalstem Input.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Das ist wohl jedem klar. Daher auch ein paar "Schubse" in die richtige Richtung.Hier möchte jemand, dass man ihm seine Hausaufgaben macht und das unter minimalstem Input.
Hier möchte jemand, dass man ihm seine Hausaufgaben macht und das unter minimalstem Input.
// -------------------------
// Ablaufsteuerung
// -------------------------
begin
// Start-Taster setzt Anlage in Betrieb
IF "StartTaster" AND NOT #Daten.PruefungAktiv THEN
#Daten.PruefungAktiv := TRUE;
#Daten.Stufe := 0; // mit Stufe 0 beginnen
END_IF;
// Stop-Taster beendet sofort
IF "StopTaster" THEN
#Daten.PruefungAktiv := FALSE;
#Daten.Stufe := 0;
Timer(IN := FALSE);
END_IF;
// Ablauf nur wenn aktiv
IF #Daten.PruefungAktiv THEN
CASE #Daten.Stufe OF
// ---------------- STUFE 0 ----------------
0:
"Q0_0" := TRUE; // Spule laut Tabelle
IF "DruckIst" >= #Daten.DruckSoll[0] THEN
#Timer0Start(IN := TRUE,
PT := T#10S);
IF #Timer THEN
"Q0_0" := FALSE;
#Timer_0(IN := FALSE);
#Daten.Stufe := 1;
END_IF;
END_IF;
// ---------------- STUFE 1 ----------------
1:
"Q0_1" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[1] THEN
#Timer_0(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_1" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 2;
END_IF;
END_IF;
// ---------------- STUFE 2 ----------------
2:
"Q0_2" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[2] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_2" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 3;
END_IF;
END_IF;
// ---------------- STUFE 3 ----------------
3:
"Q0_3" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[3] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_3" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 4;
END_IF;
END_IF;
// ---------------- STUFE 4 ----------------
4:
"Q0_4" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[4] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_4" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 5;
END_IF;
END_IF;
// ---------------- STUFE 5 ----------------
5:
"Q0_5" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[5] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_5" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 6;
END_IF;
END_IF;
// ---------------- STUFE 6 ----------------
6:
"Q0_6" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[6] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_6" := FALSE;
Timer(IN := FALSE);
#Daten.Stufe := 7;
END_IF;
END_IF;
// ---------------- STUFE 7 (letzte) ----------------
7:
"Q0_7" := TRUE;
IF "DruckIst" >= #Daten.DruckSoll[7] THEN
Timer(IN := TRUE,
PT := T#10S);
IF Timer.Q THEN
"Q0_7" := FALSE;
Timer(IN := FALSE);
#Daten.PruefungAktiv := FALSE; // Ablauf fertig
#Daten.Stufe := 0; // zurück auf 0
END_IF;
END_IF;
END_CASE;
END_IF;
END_FUNCTION_BLOCK
Kann mir jemand sagen wiso das es nicht geht ich bin da am studieren, habe alles deklariert in einem UDT
Wo ich nicht weiter komme ist, bei dem Timer setzen und Reset es soll die Zeit starten und nach 10 Sekunden reset machen und zu nächste stufe gehen. Zweiter Punkt ist wieso es bei mir Fehler anzeigt bei Begin und am Schluss end _Function_block"Geht nicht" ist keine Fehlerbeschreibung. Was genau geht denn nicht?
Was schon einmal auffällt ist, dass Du Zeiten nicht zyklisch aufrufst und auch die Bearbeitung der Ausgänge nicht zyklisch erfolgt.
Zeiten sollten nach Möglichkeit außerhalb von Bedingungen aufgerufen werden.
Wenn Du in einem Schritt einen Ausgang auf "TRUE" setzt und dann im nächsten Schritt nicht mehr bearbeitest, wird er immer TRUE bleiben.
VG
MFreiberger
#Timer
vor. Soweit ich weiß, funktioniert das nicht.#Timer.Q
auswerten und nicht #Timer
.// timer_enable_0 Bool
// timer_enable_1 Bool
// timer_enable_2 Bool
// Timer_0 TON
// Timer_1 TON
// Timer_2 TON
// Timer immer außerhalb von Bedingungen abrufen
Timer_0(IN := timer_enable_0, PT := T#10s);
Timer_1(IN := timer_enable_1, PT := T#10s);
Timer_2(IN := timer_enable_2, PT := T#10s);
// in den Bedingungen timer_enable_0 - timer_enable_2 setzen
timer_enable_0 := True
// Abfrage des Ausgangs eines Timers
IF Timer_0.Q THEN
// code:
END_IF;
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen