TIA Zeit in Tagen als Input eingeben

kuti

Level-1
Beiträge
354
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

in einer Funktion habe ich eine TON (Einschaltverzögerung), deren Zeitdauer variabel sein soll bzw. vom Touchpanel aus einstellbar ist. Wenn ich Sekunden haben möchte, wird der Integer in ein DINT umgewandelt und dann mit 1000 multipliziert.

Was aber, wenn ich Tage oder Stunden haben möchte? Z.B ich gebe im TP 15 ein. Woher soll das Programm wissen, ob ich 15 sek, 15 Stunden oder 15 Tage haben möchte? Momentan benötige ich es für Tage.

Hoffe jemand kann mir weiterhelfen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das muss man dem Programm schon mitteilen.

Alles andere kann man umrechnen:
1s = 1.000ms
1min = 60s = 60.000ms
1h = 60min = 3.600s = 3.600.000ms
1d = 24h = 1.440min = 86.400s = 86.400.000ms

Schon mal gehört, oder?
;)
 
Auch ein Tag oder eine Stunde ist nur eine gewisse Anzahl Sekunden oder auch msec.

Gesendet von meinem GT-I9505 mit Tapatalk 4
 
Das muss man dem Programm schon mitteilen.

Alles andere kann man umrechnen:
1s = 1.000ms
1min = 60s = 60.000ms
1h = 60min = 3.600s = 3.600.000ms
1d = 24h = 1.440min = 86.400s = 86.400.000ms

Schon mal gehört, oder?
;)

D.h man gibt 10 an, was 10d sind. Dann wird dieses mal 24 genommen, dann habe ich Tage in Stunden. Das reicht doch, oder?
 
Das war auch meine Frage :-o
Ne, du hast gefragt woher das Programm das wissen soll ;-)

Du musst die Information in einer weiteren Variable speichern. Dann hättest du eine Variable für die Anzahl und eine Variable für den Typ.

Den Typ könntest du im Panel als symbolisches EA-Feld anlegen.
0 = Millisekunden
1 = Sekunden
2 = Minuten
3 = Stunden
4 = Tage

Der Bediener muss beides einstellen.
Im Programm wertest du dann die Anzahl und den Typ aus, und rechnest dir damit wie von hucki beschrieben deine Zeit für den TON aus.
Du musst nur beachten, dass die Anzahl an Tagen nach oben hin beschränkt ist (24 Tage).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
D.h man gibt 10 an, was 10d sind. Dann wird dieses mal 24 genommen, dann habe ich Tage in Stunden. Das reicht doch, oder?
Stellst du dich jetzt eigentlich dämlicher als du bist?

Wenn du 1 Sekunde * 1000 rechnest erhältst du Millisekunden, also liegt die Vermutung doch nahe, das das was der Timer erwartet "msec" ist (für die nicht so investigativ begabten, steht das ganze auch in der Online-Hilfe)

10Tage * ( 24 h/d * 60 m/h * 60 s/m * 1000 ms/s )
=
10 * 86400000
 
Stellst du dich jetzt eigentlich dämlicher als du bist?

Wenn du 1 Sekunde * 1000 rechnest erhältst du Millisekunden, also liegt die Vermutung doch nahe, das das was der Timer erwartet "msec" ist (für die nicht so investigativ begabten, steht das ganze auch in der Online-Hilfe)

10Tage * ( 24 h/d * 60 m/h * 60 s/m * 1000 ms/s )


=
10 * 86400000

Ganz ehrlich, wenn du so unverschämt bist und mich so beleidigen willst, kann ich auf deine Hilfe verzichten. Unglaublich!!!!!!! Wo sind wir denn hier? Ich such hier Rat und nicht jemanden der mich provoziert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ganz ehrlich, wenn du so unverschämt bist und mich so beleidigen willst, kann ich auf deine Hilfe verzichten. Unglaublich!!!!!!! Wo sind wir denn hier? Ich such hier Rat und nicht jemanden der mich provoziert
Provozieren: Höchstens zum Denken
Von einem durchschnittlich begabten, das Schulsystem überstanden habenden, sollte man schon erwarten, das er in der Lage ist, Zeiten umzrechnen, von Minuten auf Stunden usw. und sofort.
 
Ich habe doch gesagt, dass 10 Tage 240 Stunden sind und gefragt, ob man diese 240 Stunden als TW für den TON eingibt.
 
Ich habe doch gesagt, dass 10 Tage 240 Stunden sind und gefragt, ob man diese 240 Stunden als TW für den TON eingibt.
Wenn du das ganze in Step7 oder auch TIA machst, dann kannst du auch einfach T#10d eingeben, ich meine sogar das wenn du T#240h eingibst, das ganze zu T#10d umgeformt wird.
Vom Panel aus, bzw. der Variable ansich ist die Basis eben immer msec, auf die musst du entweder im Panel skalieren "Lineare Skalierung", oder in der Steuerung entsprechend multiplizieren, statt "L 1000" eben irgendwas anderes.
 
Alles was über HMI-Eingaben, Berechnungen ... an Einstellungen zum Timer kommt, muss immer in Millisekunden sein. Das hab' ich Dir doch schon mal bei früherer Gelegenheit mitgeteilt.
;)

Nur bei der Programmierung mit TIA kannst Du, wie z.B. von MSB genannt, T#10d angeben, denn dann macht TIA Dir die Millisekundenumrechnung.
Kein TIA während der Laufzeit - keine autom. Umrechnung!
 
Ich bin gerade daran, was Thomas mir sagte. Testliste erstellen. Ich habe ein Byte erstellt, wo ich für jedes Bit einen anderen Datentyp zuordne.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Halte ich nur bedingt für geeignet, weil die meisten CPUen sich einfach schwer mit der Byteverarbeitung tuen. Es gibt dort keine Vergleicher, Berechnungen ... auf Byteebene, wie es z.B. die S7-200 bietet. Deshalb würde ich einen INT-Wert vorziehen, auch wenn man nur einen kleinen Teil davon nutzt.
 
Ok, also ich nehme für die Textliste eine Integervariable. Ich habe jetzt daran gedacht, die Bits dieser Variablen mit den Integern (0...4) zu vergleichen. Z.B habe ich im Bit 1 die Information, das das Datentyp Sekunden ist. Jetzt wird die Variable mit 1 verglichen. In diesem Fall, wird die Zahl, die man im TP eingibt mit 1000 multipliziert, so dass man sekunden hat. Wie kann ich aber eine Integervariable mit einem Integer vergleichen?
 
Zurück
Oben