AW: Sps
Hallo,
die "normalen" Zähler haben einen Ausgang im Dezimal-Format (16-bit, hexadezimal) Disen Wert des Zählers kann man nehmen und in eine 32-Bit-Ganzzahl umwandeln.
Operationen zuerst BTI und danach ITD
Danach den Wert mit 1000 multiplizieren.
Der Trick der ganzen Sache ist, dass das TIME-Format eine 32-Bit-Ganzzahl mit Vorzeichen ist. Der Zeitwert ist in ms codiert, daher auch der Faktor 1000
Und nun diesen Wert mit der vorhandenen Funktion "FC40 TIM_S5TI" in das Format S5TIME umwandeln.
Diesen Wert nun in die Timer einsetzen.
8O
Ist das nicht ein bißchen umständlich?
Die "normalen" Zähler haben auch noch einen Ausgang im BCD-Format.
S5TIME liegt prinzipiell auch im BCD-Format vor, es fehlt nur die Zeitbasis (das, was bei der S5 bei den Zeiten hinter dem Punkt stand), und die steht in den vier höchsten Bits. Das macht die Sache eigentlich ganz einfach:
Du sorgst erstmal dafür, daß Dein Zähler nicht negativ wird. Dann greifst Du den Wert des Zählers mit einem MW als BCD am Ausgang "DEZ" ab.
Anschließend baust Du das MW wie folgt zu einer Zeit um: Du lädst als hexadezimal die gewünschte Zeitbasis mit 3 nullen hintendran (z.B. "L W#16#2000" für Zeitbasis 2 = Sekunde, 0 wäre 10ms, 1 wäre 100ms, 3 wäre 10s. Als nächstes lädst Du das Merkerwort mit Deinem Zähler darin.
Dann vergleichst Du die beiden auf 'wortweise oder' (AWL-Befehl 'OW'), Dadurch bekommst Du die Zeitbasis und den Zeitwert kombiniert.
Das Ergebnis transferierst Du wieder in das MW. Jetzt kannnst Du es als Zeitwert nach S5TIME-Format an einem der S7-Zeitbausteine verwenden.
Wenn Du Probleme hast, kann ich Dir das ganze als Beispiel per Mail zusenden. Schick mir einfach eine PN!