-> Hier kostenlos registrieren
Hallo,
meine Aufgabenstellung ist es, ein Lauflicht zu programmieren in "structured text", bekomme aber keine Timer, oder Delay-artige Verzögerung hin. Weder mit FOR, noch WHILE. (Frequenz und Duty Cycle einstellbar, aber unrelevant in meiner Frage hier.
SOFTWARE: Automation Studio V4.10
Lerne erst die Sprache, würde mich sehr über Hilfe freuen, das habe ich bis jetzt, vllt kann man mein Problem verstehen.
Liebe Grüße, Kilian
PROGRAM _CYCLIC
// ~~~~~~~~~~~~~~~~~~~~ Start des Programms ~~~~~~~~~~~~~~~~~~~~~~~~~~
IF DI1 THEN // Schalter DI1
DO1 := TRUE; // Lampe DO2 ON
// ~~~~~~~~~~~~~~~~~~~~ Auswahl der Frequenz ~~~~~~~~~~~~~~~~~~~~~~~~~
IF DI2 THEN
f := (10000-490*AI1); // Frequenz veränderung mittels P1
ELSE
f := 500; // f -> fix
END_IF
// ~~~~~~~~~~~~~~~~~~ Einstellung des Duty Cycle ~~~~~~~~~~~~~~~~~~~~~~
Duty_Cycle := AI2*2; // Für den wait (derzeit unbenutzt)
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_1 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
// init
Zaehler := 10000;
TON_01(IN:=NOT DO3ge, PT:=INT_TO_TIME(f)); // DI3 ON mit Zeitverzögerung
DO3ge:=TON_01.Q;
TOF_01(IN:=DO3ge, PT:=INT_TO_TIME(f)); // DI3 OFF mit Zeitverzögerung
DO3ge:=TOF_01.Q;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Var1 := 1;
WHILE Var1 < Zaehler DO
Var1 := Var1 + 1;
END_WHILE
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_2 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
TON_01(IN:=NOT DO4ge, PT:=INT_TO_TIME(f)); // DI4 ON mit Zeitverzögerung
DO4ge:=TON_01.Q;
TOF_01(IN:=DO4ge, PT:=INT_TO_TIME(f)); // DI4 OFF mit Zeitverzögerung
DO4ge:=TOF_01.Q;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Var2 := 1;
WHILE Var1 < Zaehler DO
Var2 := Var2 + 1;
END_WHILE
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_3 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ELSE
DO1 := FALSE; // Lampe DO1 OFF
DO2 := FALSE;
DO3ge := FALSE; // Lampe DO3 OFF
DO4ge := FALSE; // Lampe DO4 OFF
END_IF
AO7 := 1111; // Anzeige P1
END_PROGRAM
meine Aufgabenstellung ist es, ein Lauflicht zu programmieren in "structured text", bekomme aber keine Timer, oder Delay-artige Verzögerung hin. Weder mit FOR, noch WHILE. (Frequenz und Duty Cycle einstellbar, aber unrelevant in meiner Frage hier.
SOFTWARE: Automation Studio V4.10
Lerne erst die Sprache, würde mich sehr über Hilfe freuen, das habe ich bis jetzt, vllt kann man mein Problem verstehen.
Liebe Grüße, Kilian
PROGRAM _CYCLIC
// ~~~~~~~~~~~~~~~~~~~~ Start des Programms ~~~~~~~~~~~~~~~~~~~~~~~~~~
IF DI1 THEN // Schalter DI1
DO1 := TRUE; // Lampe DO2 ON
// ~~~~~~~~~~~~~~~~~~~~ Auswahl der Frequenz ~~~~~~~~~~~~~~~~~~~~~~~~~
IF DI2 THEN
f := (10000-490*AI1); // Frequenz veränderung mittels P1
ELSE
f := 500; // f -> fix
END_IF
// ~~~~~~~~~~~~~~~~~~ Einstellung des Duty Cycle ~~~~~~~~~~~~~~~~~~~~~~
Duty_Cycle := AI2*2; // Für den wait (derzeit unbenutzt)
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_1 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
// init
Zaehler := 10000;
TON_01(IN:=NOT DO3ge, PT:=INT_TO_TIME(f)); // DI3 ON mit Zeitverzögerung
DO3ge:=TON_01.Q;
TOF_01(IN:=DO3ge, PT:=INT_TO_TIME(f)); // DI3 OFF mit Zeitverzögerung
DO3ge:=TOF_01.Q;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Var1 := 1;
WHILE Var1 < Zaehler DO
Var1 := Var1 + 1;
END_WHILE
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_2 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
TON_01(IN:=NOT DO4ge, PT:=INT_TO_TIME(f)); // DI4 ON mit Zeitverzögerung
DO4ge:=TON_01.Q;
TOF_01(IN:=DO4ge, PT:=INT_TO_TIME(f)); // DI4 OFF mit Zeitverzögerung
DO4ge:=TOF_01.Q;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Var2 := 1;
WHILE Var1 < Zaehler DO
Var2 := Var2 + 1;
END_WHILE
// ~~~~~~~~~~~~~~~~~~~~~~~ Funktion_3 blinken ~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WAIT_3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ELSE
DO1 := FALSE; // Lampe DO1 OFF
DO2 := FALSE;
DO3ge := FALSE; // Lampe DO3 OFF
DO4ge := FALSE; // Lampe DO4 OFF
END_IF
AO7 := 1111; // Anzeige P1
END_PROGRAM