# REAL in TIME wandeln in SCL



## zloyduh (17 März 2011)

Hallo,
ist es möglch eine Zahl von Typ: REAL in TIME zu wandeln?
Wenn ja wie??
Eingabewert von OP in s.


----------



## M4RKU5 (17 März 2011)

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?


----------



## bike (17 März 2011)

zloyduh schrieb:


> 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


----------



## zloyduh (17 März 2011)

M4RKU5 schrieb:


> 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,...


----------



## bike (17 März 2011)

zloyduh schrieb:


> Sekunden, Nachkomma-Stellen Millisekunden
> 
> 
> Ich möchte von OP aus Zeiten vorgeben. Benutze SFB4 TON (IEC Timer).
> ...



Das kannst du doch als Int mit Nachkommastrellen auch machen, warum den Umweg über real?


bike


----------



## zloyduh (17 März 2011)

bike schrieb:


> 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??


----------



## Larry Laffer (17 März 2011)

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


----------



## bike (17 März 2011)

zloyduh schrieb:


> 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


----------



## JesperMP (17 März 2011)

```
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.


----------



## Kai (17 März 2011)

zloyduh schrieb:


> 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:




Gruß Kai


----------



## Kai (17 März 2011)

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.





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*




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

*Darstellung = Dezimal*

*Darstellungsformat = 9999*

*Nachkomma verschieben = 1*





Gruß Kai


----------



## Kai (17 März 2011)

5. In der *WinCC flexible Runtime* bekommt man dann die folgenden *Anzeigen*:









Gruß Kai


----------

