TIA Zeitwert für Einschaltverzögerung berechnen

PLC_Freak

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

ich benötige mal wieder eure Hilfe.
Ich möchte in einer S7-1214C eine Einschaltverzögerung TON verwenden.
Die Schaltdauer soll aber Variabel sein und wird berechnet.

Wie kann ich es anstellen, das ich nach einer Berechnung den Datentyp TIME erhalte, welchen ich dann als Zeitvorgabe PT nutzen kann?

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

Vielen Dank!


EDIT: Habe es soeben gefunden, wie ich das Format REAL oder INT in das TIME Format umwandle (siehe Bild im Anhang)
 

Anhänge

  • TIME.jpg
    TIME.jpg
    62 KB · Aufrufe: 81
Zuletzt bearbeitet:
Hallo Lobbe1,

hier mal ein Baustein der den Wert (z.B. Analogwert) in das Datenformat TIME umwandelt.

Hierbei ist zu beachten das am Anfang der Berechnung der Wert in Millisekunden angegeben ist und dann in Sekunden bzw. Minute. usw. umgerechnet werden muss.

Mfg Matze

INT-TIME.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Matze,

das ist natürlich auch eine Möglichkeit.
Ich möchte eine Pulsgesteuerte Dosierpumpe ansteuern. Somit möchte ich einen Wert x in einem Panel in ml/h vorgeben. Ich möchte also einen Puls erzeugen, welcher, abhängig von einer bestimmten Durchflussmenge, variabel ist. Somit gebe ich in einem Panel z.B. 200ml/h vor. Über eine Berechnung wird die Impuslpause berechnet. Diesen berechnenten Wert benötige ich dann als TIME Datentyp. Hatte es erstmal so gemacht, wie ich es oben geschrieben hatte. Allerdings bekomme ich ja immer nur Millisekunden raus. Wenn ich das auf dein Beispiel anwenden würde, wäre #In_Int mein berechneter Wert in ms.
Aber ich dachte bei T_CONV ist das Ergebnis IMMER in ms???

MfG Norman
 
Nein, man bekommt nur ms raus wenn man den Wert so belässt. Sobald du den Wert umrechnest kommt am ende vov T_CONV auch ein anderer wert raus.

Sozusagen das was du in den Baustein rein gibst kommt auch wieder raus nur das Format ist anders.
Mfg Matze

Sony Z3 über TapaTalk
 
Das schon, aber woher "weiß" T_CONV das ich Sekunden hineingebe? Ich gebe doch nur eine Ganzzahl rein, welche errechnet wurde.
Irgendwo hängt es gerade bei mir :confused::confused::confused:
 
Vielleicht um die Erklärung von Smarty noch ein wenig zu vereinfachen:

Das Format TIME kennt keine andere Einheit als ms, auch wenn man T#15s angezeigt bekommt steht in der Variable der Dezimalwert 15000.
T#15s = 15000ms
T#3h5m3s500ms = 11103500ms

Es ist nur die Anzeige der TIME-Variable die andere Einheiten darstellt, der Wert selber ist immer in ms.
Lies dir dazu mal die F1-Hilfe zu TIME durch.

Will man irgendeinen Wert in TIME umrechnen, muss man ihn einen ms-Wert herausbringen.
So wie Smarty das mit der Sekunden-Vorgabe * 1000 macht.
Man kann zwar schon ein T#15s mit 60 multiplizieren um auf T#15m zu kommen (smartys Beispiel), im Endeffekt ist das aber nichts anderes als den
tatsächlichen Wert von T#15s (15000ms) mit "mal 60" auf 900000ms zu bringen, was wiederum den 15 Minuten entspricht.

Zum Konvertieren eines DINT in TIME braucht man streng genommen auch gar keinen T_CONV. Beide sind 32-Bit ganzzahlen, ein einfacher MOVE würde es auch tun.
Der einzige Unterschied zwischen TIME und DINT ist eigentlich nur zur Erkennung dass es sich um einen ZEIT-Datentypen handelt und damit TIA/Step7 weiß dass es den Wert als T#+/-__d__h__m__s___ms darstellen kann. Abgesehen davon gibt es zwischen DINT/TIME keinen wirklichen Unterschied, es gibt auch negative TIME-Werte.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie ich das Bild von dem Smarty verstehe, lässt sich damit nur ganze Minuten erzeugen. Was machst du denn wenn du z.B. 40 sekunden haben willst?

@Junge: Du verwechselst gerade Äpfel mit Birnen.
Dein Link verweist auf der Format S5-TIME während hier vom Format TIME geschrieben wird.

Smartys Code rechnet nur einen Integer * 1000, was dann Millisekunden ergibt.
Wenn der INT-Wert 40 ist bekommt er 40000ms raus was im TIME-Format die 40s sind.
Danach zeigt er nur noch wie man von Sekunden auf Minuten (*60) kommt.

S5-TIME ist das Dinosaurier-Format das die Hardware-Timer der SPSn verwenden, also S_EVERZ und Konsorten.
Dieses Format hat 16Bit => 3 BCD-Kodierte Stellen und eine Einheit (10ms, 100ms, s, 10s).
Stammt noch aus der S5-Uhrzeit und kann nicht mal Werte wie 33ms oder 2h1s darstellen.
Hat auch einen max-Wert von 999*10s.
Für Variable Berechnungen ist das Format in meinen Augen ziemlich ungeeignet.

TIME hingegen ist ein 32-BIT-Format das wie ich oben beschrieben habe in Millisekunden angegeben ist.
Daher kann es bis ca.24 Tage jeden Wert in ms-Auslösung darstellen. Es ist auch leichter damit zu rechnen da man sich keine
Gedanken um BCD und einen Faktor machen muss.
Allein schon das Rechnen ist leichter da man z.B. problemlos T#12d4h54m23s310ms mit T#5h#1s#123ms addieren/subtrahieren/multiplizieren/etc. kann.

Das Format TIME wird von den Software-Timern (IEC-Timer) TON,TOF,TP etc. verwendet, wobei es z.B. auf der 1200 nur diese gibt.
 
Zuletzt bearbeitet:
Oh, ich nehme alles zurück! Hab das viel zu schnell und auch noch schlecht überflogen. Einfach meinen Beitrag ignorieren!
 
Ich danke euch. Dann hab ich ja alles richtig gemacht. Also berechne ich meine Werte in ms (z.b. 1h --> 3600000ms) und dann übergebe ich sie per T_CONV ins TIME Format. Ich wusste nur nicht, ob ich nach oben eine Begrenzung habe. Somit ist es scheinbar kein Problem auch 10h (bzw. 36000000ms) zu übergeben.
 
Ich danke euch. Dann hab ich ja alles richtig gemacht. Also berechne ich meine Werte in ms (z.b. 1h --> 3600000ms) und dann übergebe ich sie per T_CONV ins TIME Format. Ich wusste nur nicht, ob ich nach oben eine Begrenzung habe. Somit ist es scheinbar kein Problem auch 10h (bzw. 36000000ms) zu übergeben.
Um die TIA-F1-Hilfe zu bemühen...
TIA-F1-Hilfe - TIME (IEC-Zeit) schrieb:
TIME (IEC-Zeit)


Der Inhalt eines Operanden vom Datentyp TIME wird als Millisekunden interpretiert. Die Darstellung enthält Angaben für Tage (d), Stunden (h), Minuten (m), Sekunden (s) und Millisekunden (ms).

Die folgende Tabelle zeigt die Eigenschaften des Datentyps TIME:
Länge (Bit): 32
Format/Wertebereich
Zeitdauer mit Vorzeichen: T#-24d20h31m23s648ms bis T#+24d20h31m23s647ms​
Hexadezimalzahlen: 16#00000000 bis 16#7FFFFFFF


Es ist nicht erforderlich, alle Zeiteinheiten anzugeben. So ist z. B. T#5h10s gültig.
Wenn nur eine Einheit angegeben wird, darf der absolute Wert an Tagen, Stunden und Minuten die oberen oder unteren Grenzwerte nicht überschreiten.
Wenn mehr als eine Zeiteinheit angegeben wird, darf der Wert die Einheit 24 Tage, 23 Stunden, 59 Minuten, 59 Sekunden oder 999 Millisekunden nicht überschreiten.
 
Zurück
Oben