-> Hier kostenlos registrieren
Hallo,
ich habe SIMATIC WinCC flexible 2008 SP2, STEP7 V5.5 und ein OP 177B 6 mono DP.
WinCC kann von Natur aus kein Time richtig anzeigen und die Skalierung ist ja auch mehr ein behelf.
Um Power Tags zu sparen hätte ich gern ein Skribt was die umwandlung von Time in String quasi direkt in WinCC durchfürt und das Ergebniss anzeigt.
Ich habe zwar ein bischen erfahrung in C und C# aber nicht in VB und WinCC Skribts.
Zum Testen (für die umrechnung) habe ich in SCL erstmal ein Test programm geschrieben wobei die umwandlung zum string allerdings nicht klappt:
Danach habe ich das versucht auf WinCC zu übertragen da kam dann das heraus:
aber der code hat erstmal irgentein Fehler und zweitens weiss ich gar nicht wie man die Skribts nacher anwendet.
Kann mir jemand helfen??
MfG
Carsten
ich habe SIMATIC WinCC flexible 2008 SP2, STEP7 V5.5 und ein OP 177B 6 mono DP.
WinCC kann von Natur aus kein Time richtig anzeigen und die Skalierung ist ja auch mehr ein behelf.
Um Power Tags zu sparen hätte ich gern ein Skribt was die umwandlung von Time in String quasi direkt in WinCC durchfürt und das Ergebniss anzeigt.
Ich habe zwar ein bischen erfahrung in C und C# aber nicht in VB und WinCC Skribts.
Zum Testen (für die umrechnung) habe ich in SCL erstmal ein Test programm geschrieben wobei die umwandlung zum string allerdings nicht klappt:
Code:
FUNCTION FC1 : VOID
VAR_INPUT
Zeit : TIME;
END_VAR
VAR_OUTPUT
ms : INT;
s : INT;
m : INT;
h : INT;
d : INT;
Zeit_St : STRING;
END_VAR
VAR_TEMP
Zeitt : DINT;
mst : DINT;
st : DINT;
mt : DINT;
ht : DINT;
dtt : DINT;
Zeit_t : STRING;
END_VAR
Zeitt:=TIME_TO_DINT(Zeit);
mst:= Zeitt MOD 1000;
Zeitt:= (Zeitt - mst)/1000;
ms:= DINT_TO_INT(mst);
st:= Zeitt MOD 60;
Zeitt:= (Zeitt - st);
s:= DINT_TO_INT(st);
dtt:= Zeitt / 86400;
Zeitt:= Zeitt-(dtt*86400);
d:= DINT_TO_INT(dtt);
ht:= Zeitt / 3600;
Zeitt:= Zeitt-(ht * 3600);
h:=DINT_TO_INT(ht);
mt:= Zeitt / 60;
Zeitt:= Zeitt-(mt*60);
m:=DINT_TO_INT(mt);
IF dtt > dint#0 THEN
Zeit_t:= CONCAT( in1 := DINT_TO_STRING(dtt), in2 := 'D');
END_IF;
IF ht > dint#0 THEN
Zeit_t:= CONCAT( in1 :=CONCAT( in1 := Zeit_t, in2 := DINT_TO_STRING(ht)), in2 := 'H');
END_IF;
IF mt > dint#0 THEN
Zeit_t:= CONCAT( in1 :=CONCAT( in1 := Zeit_t, in2 := DINT_TO_STRING(mt)), in2 := 'M');
END_IF;
IF st > dint#0 THEN
Zeit_t:= CONCAT( in1 :=CONCAT( in1 := Zeit_t, in2 := DINT_TO_STRING(st)), in2 := 'S');
END_IF;
Zeit_St:=Zeit_t;
END_FUNCTION
Danach habe ich das versucht auf WinCC zu übertragen da kam dann das heraus:
Code:
Function Time_To_String(Zeit New Int)
Dim ms_ New Int
Dim s_ New Int
Dim m_ New Int
Dim h_ New Int
Dim d_ New Int
Dim Zeit_ New String
ms_= Zeit Mod 1000
Zeit = (Zeit - ms_)/1000
s_ = Zeit Mod 60
Zeit = (Zeit - s_)
d_ = Zeit / 86400
Zeit = Zeit -(d_ * 86400)
h_= Zeit / 3600
Zeit = Zeit -(h_ * 3600)
m_ = Zeit / 60
Zeit = Zeit -(m_*60)
'-----------------------------------------------------------------------------------------------------------------------------------
If d_ > 0 Then
Zeit_ = CStr(d_) + "D"
End If
If h_ > 0 Then
Zeit_ = Zeit_ + CStr(h_) + "H"
End If
If m_ > 0 Then
Zeit_ = Zeit_ + CStr(m_) + "M"
End If
If s_ > 0 Then
Zeit_ = Zeit_ + CStr(s_) + "S"
End If
Time_To_String = Zeit_
End Function
aber der code hat erstmal irgentein Fehler und zweitens weiss ich gar nicht wie man die Skribts nacher anwendet.
Kann mir jemand helfen??
MfG
Carsten