REAL in TIME wandeln in SCL

Es gibt keine Systemfunktion die dir einen REAL-Wert nach TIME castet.
Wenn du soetwas vorhast, musst du dir selbst eine Funktion schreiben.
Was soll der REAL-Wert enthalten? Sekunden, Nachkomma-Stellen Millisekunden? Minuten, Nachkomma-Stellen die Sekunden? Nur Sekunden, Millisekunden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ist es möglch eine Zahl von Typ: REAL in TIME zu wandeln?
Wenn ja wie??
Eingabewert von OP in s.
Wenn du die Zahl am OP als Int mit Nachkommastellen definierst, dann hast du es fertig als INT.
Willst du mit den Werten Timer laden?
Da helfen dir dann IEC Timer.
Sonst schreib uns was genau du machen willst/musst.


bike
 
E
Was soll der REAL-Wert enthalten? Sekunden, Nachkomma-Stellen Millisekunden? Minuten, Nachkomma-Stellen die Sekunden? Nur Sekunden, Millisekunden?

Sekunden, Nachkomma-Stellen Millisekunden


Ich möchte von OP aus Zeiten vorgeben. Benutze SFB4 TON (IEC Timer).
die Zeiten sollen immer in sec angeben werden.
z.B. 5.0s, 0.5s,...
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das kannst du doch als Int mit Nachkommastrellen auch machen, warum den Umweg über real?


bike


Wie funktioniert das?
Wie weise ich z.B. mit WinCC Flex einer Eingabe Variable vom Typ. INT eine nachkomma stelle zu?
Der PT eingang des SFB4 nimmt INT nicht an??

oder verstehe etwas falsch??
 
Hallo,
ich würde es wie folgt machen (weil ich Skalierungen an der Eingabe/Ausgabe nicht mag) :

Du gibst den Wert als Realzahl ein (z.B. in Sekunden).
In der Steuerung (SPS) rechnest du die Real-Eingabe in Millisekunden um um machst einen DINT daraus und für den DINT gibt es m.E. einen Typecast um daraus wieder Time zu machen (wobei das ohnehin nur eine andere Sichtweise der gleichen Variablen und des gleichen Wertes ist ...

Gruß
Larry
 
Wie funktioniert das?
Wie weise ich z.B. mit WinCC Flex einer Eingabe Variable vom Typ. INT eine nachkomma stelle zu?
Der PT eingang des SFB4 nimmt INT nicht an??

oder verstehe etwas falsch??

Nicht ganz.

Definiere eine Variable für die Eingabe als Dword.
Dieses DWORD definierst du in der Symbolik als time.
Dann kannst du den Wer an den SFB anbinden.
Bei dem Format der Variable im OP gibt es, wenn ich mich recht erinnere, die Möglichkeit die Anzeige zu formatieren.

Habe kein WinFlex zur Zeit hier, doch es müsste so gehen.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
VAR
  rTsec : REAL ; Zeit in Sekunden.
  tTmsec : TIME ; Zeit in Milli-Sekunden.
END_VAR 
 
tTmsec := DINT_TO_TIME(REAL_TO_DINT(rTsec * 1000.0)) ;

Aber selber verwende ich die Variabel-Skalierung ich in WinCC Flex um ein DINT Wert in ein TIME zu wandeln.
 
Zuletzt bearbeitet:
Ich möchte von OP aus Zeiten vorgeben. Benutze SFB4 TON (IEC Timer).
die Zeiten sollen immer in sec angeben werden.
z.B. 5.0s, 0.5s,...

Siehe das folgende Programmbeispiel in STEP 7 und WinCC flexible:

1. In STEP 7 einen IEC Timer (SFB4 TON) mit dem zugehörigen Instanz-DB (DB10) anlegen:

SIMATIC_Manager.jpg

Gruß Kai
 

Anhänge

  • OB1.pdf
    5,6 KB · Aufrufe: 155
  • DB10.pdf
    4,9 KB · Aufrufe: 113
2. In WinCC flexible für den Eingang und Ausgang des SFB4 TON jeweils eine Variable DI_TON.PT (Zeitdauer) und eine
Variable DI_TON.ET (abgelaufene Zeit) vom Datentyp Time anlegen.

Die Variablen DI_TON.PT und DI_TON.ET greifen direkt auf den Instanz-DB (DB10) des SFB4 TON zu.

TP270_Variablen_1.jpg TP270_Variablen_2.jpg

3. Für die Variablen DI_TON.PT und DI_TON.ET jeweils die folgende lineare Skalierung festlegen:

Lineare Skalierung

Steuerung Endwert = 1000

Bediengerät Endwert = 10

TP270_Variablen_3.jpg

4. Für die Variablen DI_TON.PT und DI_TON.ET jeweils die folgenden Eigenschaften festlegen:

Darstellung = Dezimal

Darstellungsformat = 9999

Nachkomma verschieben = 1

TP270_Bilder_1.jpg TP270_Bilder_2.jpg

Gruß Kai
 
Zurück
Oben