Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Time anzeigen in WinCC

  1. #1
    Registriert seit
    15.08.2009
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> 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:

    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
    Zitieren Zitieren Time anzeigen in WinCC  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.860
    Danke
    144
    Erhielt 1.721 Danke für 1.250 Beiträge

    Standard

    Zitat Zitat von Carsten_F Beitrag anzeigen
    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.
    WinCCflexible kann eine date_and_time Variable doch direkt anzeigen. Dafür gibt es in der Werkzeugkiste das "Datum-Uhrzeit-Feld". Du brauchst nur in der SPS die Uhrzeit mit SFC1 auslesen und das Ergebnis z.B. in einem Datenbaustein ablegen.
    Es ist WinCC (ohne flexible) welchses sich mit dem Umgang von date_and_time etwas schwer tut.

  3. #3
    Carsten_F ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.08.2009
    Beiträge
    14
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    ich mein nicht Formate DateAndTime sondern nur Time.

    ich Versuche die abgelaufene Zeit von TON und TOF bausteinen ordendtlich anzuzeigen.

  4. #4
    Registriert seit
    18.11.2008
    Beiträge
    152
    Danke
    34
    Erhielt 17 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    das geht jetzt zwar in eine andere Richtung, aber willst du das nicht lieber in der SPS lösen?
    Das Beispiel 4 im angefügten Link benutze ich immer für IEC Timer bei denen ich die Restlaufzeit ausgeben will, funktioniert soweit sehr gut und ist schnell und einfach parametriert.

    http://support.automation.siemens.co...ew/de/23992560

    Gruß Andy

Ähnliche Themen

  1. Time Synchronisation WinCC 7
    Von kalle_B im Forum HMI
    Antworten: 0
    Letzter Beitrag: 27.09.2011, 12:27
  2. Antworten: 6
    Letzter Beitrag: 19.08.2011, 14:08
  3. Antworten: 13
    Letzter Beitrag: 10.01.2011, 07:42
  4. WinCC Variable TIME
    Von thotrix im Forum HMI
    Antworten: 9
    Letzter Beitrag: 20.04.2009, 17:41
  5. Antworten: 10
    Letzter Beitrag: 21.05.2008, 15:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •