S7 Timer Restzeit gibt es was fertiges ?

Norton

Level-1
Beiträge
109
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,
gibt es für nachfolgendes Problem was fertiges ?

Es läuft ein Timer ab Vorgabewert z.b. s5t#60s
15 sek vor Ablauf der Zeit soll ein Merker gesetzt werden.

eigentlich eine ganz simple Funktion
bei Codesys kein Thema! aber wie funzt das in S7

Danke für die Hilfe
 
Wenn es sich um einen einmaligen Vorgang handelt, könnte man z.B. zwei Zeiten hintereinander schalten.

Zeit 1 = 45s
Zeit 2 = 15s
 
Warum geht das nicht? Dann mußt Du eben beide Zeiten variabel halten. Die Vorgaben 60s und 15s kamen ja schließlich von Dir. ;)
 
Warum geht das nicht? Dann mußt Du eben beide Zeiten variabel halten. Die Vorgaben 60s und 15s kamen ja schließlich von Dir. ;)

Dann habe ich mich etwas unklar ausgedrückt
Beispiel
Zeit 1 = aufheizen x Minuten
Zeit 2 = Lampe einschalten y Sekunden vor Ablauf der Zeit aufheizen
wie soll das mit 2 hintereinander geschjlten timern funzen ?

ich stelle mir folgendes vor
Wenn Restzeit Zeit1 <= Zeit2 dann Lampe ein
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Heizanforderung startet die die erste Zeit und damit die Heizung.
Mit Ablauf der ersten Zeit wird zusätzlich die Lampe eingeschaltet und auch die zweite Zeit.

Die Heizung wird eingeschalten durch:

O #Zeit1 läuft
O #Zeit2 läuft
= #Heizung Ein
 
Zuletzt bearbeitet:
Genau, auch das wäre eine Möglichkeit...

Man könnte auch statt der Timer einen Zähler aufbauen und über Vergleicher arbeiten.
 
Man kann es auch ganz simpel halten und die geschichte ohne wandeln verarbeiten.
Du schreibst den aktuellen bcd wert in einer Merkerwort z.B.
Dann erstellst du einen Vergleicher, der dir deinen Merker bei 15s setzen soll.
Die zu vergleichende Zahl kannst du ja ermitteln durch das umwandeln des BCD in INT Wertes.
Der BCD Wert der S5Time ist bei 15 Sekunden 1150, Gewandelt in INT, 4432 als Ganzzahl.
Da du dies ja nicht ständig verändern musst, ersparst du dir damit ein Netzwerk... oder jenachdem wie kompliziert du es machst ein paar weitere...
 
Hi,

warum nimmt man für so etwas S5 Timer und nicht TON oder TOF aus den Systembausteinen?

Mit den Systemfunktionen ist es einfacher zu rechnen oder zu vergleichen da die Zeit in Millisekunden ausgegeben wird.

Gruss Daniel
 
Ja klar.. das war nur ein Beispiel um die BCD Zahl nutzen zu können und man ja an den Baustein ein Wort hängen muss.
Stattdessen kann man es ja aber auch per Befehl
LC Tx
L 4432
==I
S Mx.x
ausführen..
mir fällt gerade kein schnellerer Weg ein, außer die oben genannten Systembausteine ^^
@ Lipperlandstern
Wieso einen Wolf programmieren.. für diese 4 Zeilen brauchst du auch nur 30 sekunden. Und das wandeln einer BCD Zahl in eine INT zahl kostet dich doch auch nicht viel Zeit Oo
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann es auch ganz simpel halten und die geschichte ohne wandeln verarbeiten.
[...]
Der BCD Wert der S5Time ist bei 15 Sekunden 1150, Gewandelt in INT, 4432 als Ganzzahl.
@ Lipperlandstern
Wieso einen Wolf programmieren.. für diese 4 Zeilen brauchst du auch nur 30 sekunden. Und das wandeln einer BCD Zahl in eine INT zahl kostet dich doch auch nicht viel Zeit Oo
1.) Zu den 30 Sekunden programmieren sollte man aber auch wenigstens 120 Sekunden das Gehirn einschalten, dann würde einem vielleicht einfallen, daß wenn ein S5Timer mit einer Zeit >= 100s gestartet wird, dieser Timer NIEMALS den Wert 1150 hex/BCD (4432 dez) ausgibt, sondern nur Werte zwischen 8192 dez und 10649 dez. S5Timer kennen keine gleitende Zeitbasis.
Es geht also nicht darum, wie viele (oder wie wenige) Sekunden man braucht, um einen dirty Code in die Tasten zu klopfen, sondern wie lange braucht man, um fehlerfrei funktionierenden Code zu schreiben. Die meiste Zeit sollte man vor dem eintippen des Codes investieren, um die geeignetste Methode zur Lösung einer Aufgabe zu finden.
Da die Zeiten vom Themenstarter variabel (eingebbar) sein sollen, ist es sogar eher unwahrscheinlich, daß sein S5Timer mit einer Zeitbasis von 100ms laufen wird. Dein Beispiel bringt ihm nix.

2.) Wozu bei Deiner simplen Geschichte überhaupt BCD zu Dezimal wandeln? Benutze statt "LC Tx" einfach "L Tx", dann gibt es die Timerrestzeit gleich dezimal, sogar ohne die "störende" Zeitbasis.

Harald
 
Es ging mir bei dem beantworten nicht um die Zeit, die man dazu braucht.
Ich wollte nur eine andere möglichkeit aufzeigen wie man das "Problem" lösen kann.
Aber es gerade als dirty Code abzustempeln... naja
 
Es ging mir bei dem beantworten nicht um die Zeit, die man dazu braucht.
Ich wollte nur eine andere möglichkeit aufzeigen wie man das "Problem" lösen kann.
Aber es gerade als dirty Code abzustempeln... naja

DirtyCode hin- und her.... Fakt ist das deine Lösung nur unter bestimmten Vorraussetzungen (Zeitbasis 100ms, siehe Post von PN/DP) funktioniert. Und das ist will ich mal sagen ...... sehr ungünstig.
 
Zurück
Oben