Wochenzeitschaltuhr in ST

Weiß aber nicht welcher Baustein der richtige Zeitschaltuhrbaustein ist?
Wie sollen wir dir da etwas raten - du hast ja nie geschrieben welche Funktion genau du benötigst.
Ich habe jetzt nicht in die Oscat-Bibliothek hineingeschaut - falls es da mehrere Bausteine zu dem Thema gibt dann könnte man die ja einfach mal ausprobieren ... wenn die Beschreibung der Bausteine noch nicht reicht ...

Unabhängig davon ist es nun auch kein Hexenwerk sich sowas selbst zu erstellen - auch in FUP nicht ...
 
Hallo zusammen,
ich möchte eine Wochenzeitschaltuhr im strukturierten Text in Codesys programmieren.
Kann mir hier jemand beim Code helfen?
Schon mal den Copilot oder ChatGPT gefragt?
Der Copilot gibt da sogar ein tolles Beispiel zur Anregung aus:

Code:
PROGRAM WeeklyTimer
VAR
    CurrentTime : TIME_OF_DAY;    // Aktuelle Uhrzeit
    CurrentDay : INT;            // Aktueller Wochentag (1=Montag, 7=Sonntag)
    Output : BOOL;               // Ausgang, der gesteuert wird
    Schedule : ARRAY[1..7, 1..10] OF TIME_OF_DAY; // Zeitplan für 7 Tage mit max. 5 Ein- und Ausschaltzeiten pro Tag
    i : INT;                     // Schleifenvariable
END_VAR

// Beispiel-Zeitplan initialisieren (Montag: Schaltzeiten)
Schedule[1, 1] := T#08:00:00;  // Montag: 1. EIN
Schedule[1, 2] := T#10:00:00;  // Montag: 1. AUS
Schedule[1, 3] := T#12:00:00;  // Montag: 2. EIN
Schedule[1, 4] := T#14:00:00;  // Montag: 2. AUS
// Wiederhole dies für die restlichen Tage (angepasste Schaltzeiten hinzufügen)

CurrentDay := DAY_OF_WEEK(TODAY); // Bestimmt den aktuellen Wochentag
CurrentTime := TIME_OF_DAY(TIME()); // Bestimmt die aktuelle Zeit des Tages

Output := FALSE; // Standardmäßig AUS

// Überprüfe alle Schaltzeitintervalle des aktuellen Tages
FOR i := 1 TO 10 BY 2 DO // Schleife für Zeitintervalle (EIN/AUS)
    IF (CurrentTime >= Schedule[CurrentDay, i]) AND (CurrentTime < Schedule[CurrentDay, i+1]) THEN
        Output := TRUE; // Schalter EIN, wenn innerhalb eines Intervalls
    END_IF;
END_FOR;
 
Zurück
Oben