-> Hier kostenlos registrieren
Hallo gleich vor weg ein paar Infos:
Steuerung: Horner APG.
Programmiersprache: Strukturierter Text (nach Norm EN 61131-3.)
Programmiererfahrung: (Berufsschule:Siemens S7 300 FUB.....oder gleich null).
Ich wollte folgende Funktion schreiben:
Eine Filteranlage soll 48 Stunden durchgehend im Reinigungsbetrieb sein, wenn die Zeit abgelaufen ist
dann wird ein anderer Programmabschnitt gestartet.
Leider kann ich nicht einfach einen Timer nehmen weil ich ihm Maximal 8 Stunden zuweisen kann.
Ich habe relativ erfolgreich ein Programm geschrieben wo ich das Problem mit zwei Timern die sich gegenseitig
neustarten und einen Counter mitzählen lassen gelöst habe. Allerdings kommt mir dieser Ansatz sehr fehleranfällig vor.
Also der Neue Ansatz.
Mit einer Variable starte ich das ganze, dadurch wird eine for Schleife aktiviert die dann 48 mal einen Timer startet der auf
eine Stunde eingestellt ist. Wenn der Timer 48 mal durchgelaufen ist Wird eine Variable gesetzt.
Also das ist meine überlegung, der Code ist sicher fehlerhaft denn ich habe keine Ahnung wie eine For Schleife bzw das Inkrementieren funktioniert.
Seid bitte Nachsichtig mit mir, bin noch ziemlich unerfahren im Programmieren.
Steuerung: Horner APG.
Programmiersprache: Strukturierter Text (nach Norm EN 61131-3.)
Programmiererfahrung: (Berufsschule:Siemens S7 300 FUB.....oder gleich null).
Ich wollte folgende Funktion schreiben:
Eine Filteranlage soll 48 Stunden durchgehend im Reinigungsbetrieb sein, wenn die Zeit abgelaufen ist
dann wird ein anderer Programmabschnitt gestartet.
Leider kann ich nicht einfach einen Timer nehmen weil ich ihm Maximal 8 Stunden zuweisen kann.
Ich habe relativ erfolgreich ein Programm geschrieben wo ich das Problem mit zwei Timern die sich gegenseitig
neustarten und einen Counter mitzählen lassen gelöst habe. Allerdings kommt mir dieser Ansatz sehr fehleranfällig vor.
Also der Neue Ansatz.
Mit einer Variable starte ich das ganze, dadurch wird eine for Schleife aktiviert die dann 48 mal einen Timer startet der auf
eine Stunde eingestellt ist. Wenn der Timer 48 mal durchgelaufen ist Wird eine Variable gesetzt.
Code:
if Reinigung_laeuft then //Start Variable
ink := 0; //ink für Inkremente
for ink := 0 to 48 by 1 do
TON31 (Reinigung_laeuft, 3600);//3600 Sekunden = 1 Stunde
if TON31.Q then
ink := ink + 1;//Wert von ink um 1 erhöhen
end_if;
end_for;
end_if;
//Wenn das ganzue 48 mal durchgelaufen ist soll die Variable High werden
//aber so funktioniert das nicht.
if ink := 48 then
Rueckspuelanforderung :=1;
end_if;
Also das ist meine überlegung, der Code ist sicher fehlerhaft denn ich habe keine Ahnung wie eine For Schleife bzw das Inkrementieren funktioniert.
Seid bitte Nachsichtig mit mir, bin noch ziemlich unerfahren im Programmieren.

Zuletzt bearbeitet: