Variabele Zeit in einen Timer laden

Willibald

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forenteilnehmer und Spezialisten,

ich bin hier neu im Forum und habe eine Frage, die mir bestimmt jemand beantworten kann.

Ich möchte auf einem TP270 eine variabele Zeit eingeben, mit der dann ein Timer "gefüttert" werden soll. Den Wert vom Panel in einen DB zu laden ist kein Problem, nur wie bekomme ich den Zahlenwert in den Timer und welches Format muss der Zeitwert haben? Ich prog. in AWL und würde mich über einen Tip oder ein Beispiel freuen.

Vielen Dank und freundliche Grüße, Willibald.
 
s5 oder s7?

protool und db
bei s5 gibst du als format für die variable KT an.
bei s7 s5_time.

im prog
in s5
A DB 10
L DW 20 //z.b.
SE T10

in s7
L db10.dbw10
SE T10
 
also zunäscht solltest du immer angeben was für eine steuerung du einsetzt. s5 oder s7
und was heisst hier 160? was für ein format? dez/hex?

s5
die größte zeit ist KT 999.3 also 9990 sek.
s7
die größte zeit ist S5T#2h46m30s

das ist bei beiden in Hex KH3999
die erste trade entspricht der zeitbasis.
3 = 10 sek, 2 = 1 sek, 1 = 0,1 sek, 0 = 0,01 sek.
multipliziert mit den anderen 3 tetraden ergibt deinen zeitwert.

z.b. KH 2543 = KT 543.2 = 543 sekunden = S5T#9m3s0ms

so wenn du nun dezimal 160 einliest sieht das so aus.
DW 90 KF=+160 <=> DW 90 KH=00A0
und diesen zeitwert mag ein timer gar nicht.

das sollte dir ein wenig auf die sprünge helfen. :wink:
 
Time

Ich habe mit den "Normalen" Timern z.B. EVERZ keine Guten erfahrungen gemacht wenn ich die Zeiten Variabel vorgeben musste.

Versuchs mal mit den SFB Timern dort wird als Zeitwert eine Time Variable angelegt die aus einem DW besteht und im Prinzip DINT ist.
Die Basis der Zahl ist ms z.B.
DINT 1000 wären im Zeitglied 1000 ms
DINT 2000 wären im Zeitgleid 2000 ms

Zahlen in diesem Format lassen sich aus in der CPU leicht umrechnen

Die Timer wären TON oder TOFF

Dies kenne ich allerdings nur von der S7 (ich gehe davon aus das du eine solche hast)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Balou schrieb:
Ich habe mit den "Normalen" Timern z.B. EVERZ keine Guten erfahrungen gemacht wenn ich die Zeiten Variabel vorgeben musste.
welche schlechten erfahrungen?
man muss allerdings wissen, dass die timer zyklusunabhängig laufen.

z.b.
Code:
un t1
l s5t#3s
se t1
dies könnte ein problem sein, welches sich aber leicht umgehen lässt.

Code:
un m1.0
l s5t#3s
se t1
u t1
= m1.0
hier ist der merker für einen zyklus high.

Die Timer wären TON oder TOFF
Dies kenne ich allerdings nur von der S7 (ich gehe davon aus das du eine solche hast)
diese timer sind IEC-1131 norm und sollten in jeder sps zur verfügung stehen.
 
Gleitpunktpunktzahl in Timer laden

Hallo,

habe folgendes Problem,

will eine Realzahl z.B 1,862
als Zeitwert in einem Timer laden

Hab schon alles mögliche Probiert, auch mit den SFB Timern von S7

meine 1,862 sind aber dann nicht 1,862 Sekunden

Für eine baldige Antwort wäre ich dankbar
 
timerwert umrechnen:

wie wärs mit:


L 1,862
L 1000
*R
RND
DTB
UW W#16#03FF
//ausmaskieren
T LW0
L W#16#2000
T LW1
L LW0
L LW1
UW
T LW0
//Zeitwert in LW0
LC LW0
SA T1



is natürlich ohne garantie, hab nix probiert nur gegugt![/code]
 
Re: Gleitpunktpunktzahl in Timer laden

AWu schrieb:

ähh, ist das dein ernst?
so hochaulösende zeiten sind mit normalen timer nur shclecht zu machen, ich meine das müsste dann ja auf die ms genau sein. wenn deine sps eine zykluszeit von 10-20ms hat ist das unmöglich.

eventuell noch mit alarm-ob´s, aber wozu braucht man solche zeiten?

hier noch eine andere möglichkeit um zeiten im tp170 einzugeben:

mache ein eingabefeld, schreibe den wert als int direkt zb in db10.dbw10

in die sps kommt folgender code:

Code:
      L     DB10.DBW   10               // Beipiel
      ITB   
      L     W#16#2000                   // 2 Steht für Sekunde (S5 Time)
      OW    
      SE    T     10


wenn du in deinem eingabefeld eine kommastelle einfügst, als zb 1,5s eingeben willst.

dann kannst du statt hex 2000 auch hex 1000 im programm laden, das wäre die basis für 100ms.

wenn du dann in dein eingabefeld zb 1,5 eingibst steht in db10.dbw10 dezimal 15 drin. 15x100ms = 1,5s

aber genauer als bis auf 100ms aufzulösen macht mit einer sps keinen sinn. wenn dann mit alram-ob´s aber das ist wieder ne andere geschichte...
 
Zurück
Oben