Hallo hier mal ein Beispiel mit 4 Startzeiten:
//Echtzeituhr einmal aufrufen
RC01 (
EN := ,
DT => ,
E1 => ,
YY => ,
MM => ,
DD => ,
WD => ,
HR => ,
MN => ,
SC => );
//Die MB63 und folgende, müssen remanent gemacht werden und dienen als Speicher der Startzeiten
// Erste Startzeit in hh:mm vergleichen und wenn erreicht eine Startflanke erzeugen
M01:= (RC01HR = MB67) and (RC01MN = MB68) and M497; //Startzeit erreicht und aktiv
M02:= M01 and not M03; //Flanke erzeugen
M03:= M01;
// Zweite Startzeit in hh:mm vergleichen und wenn erreicht eine Startflanke erzeugen
M04:= (RC01HR = MB69) and (RC01MN = MB70) and M498; //Startzeit erreicht
M05:= M04 and not M06; //Flanke erzeugen
M06:= M04;
// Dritte Startzeit in hh:mm vergleichen und wenn erreicht eine Startflanke erzeugen
M07:= (RC01HR = MB71) and (RC01MN = MB72) and M499; //Startzeit erreicht
M08:= M07 and not M09; //Flanke erzeugen
M09:= M07;
// Vierte Startzeit in hh:mm vergleichen und wenn erreicht eine Startflanke erzeugen
M10:= (RC01HR = MB73) and (RC01MN = MB74) and M500; //Startzeit erreicht und aktiv
M11:= M10 and not M12; //Flanke erzeugen
M12:= M10;
Die 'aktivmerker' M497 .. werden benötigt um eine freie Schaltzeit mit 00:00 nicht um Mitternacht schalten zu lassen.
Man könnte auch den Vergleich erweitern und eine Schaltzeit 00:00 als deaktiv interpretieren.
Diese Startzeiten sind leicht auf 10 oder auch 20 erweiterbar.
Über die Visu oder Display macht man die Eingaben für die Zeiten, Je 1 Byte Stunde + 1 Byte Minute + Aktivbit
Wenn du die Flanke nicht willst und lieber ein 1s Einsignal verwenden willst dann so:
M01:= (RC01HR = MB67) and (RC01MN = MB68) and (RC01SC = 0) and M497; //Startzeit erreicht und aktiv
Der Merker 01 wird bei erreichen der Startzeit für 1s TRUE.