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

Ergebnis 1 bis 8 von 8

Thema: Uhrzeit und Datum in Char Variable speichern

  1. #1
    Registriert seit
    14.07.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich brauche ja Hilfe von C Profis. Ich würde gerne in WinCC das aktuelle Datum und die Uhrzeit in einer Char Varibale schreiben. Das Skript sollte mit einem Trigger ausgelöst werden. Diese gewonnenen Char Variable mit Datum und Uhrzeit benötige ich im Report Designet am online Trend Control für die Anfangs und Endzeit.

    ich hoffe mir kann jemand weiterhelfen. Mit C Programmierung tue ich mir doch etwas schwer.

    danke
    Kutschi
    Zitieren Zitieren Uhrzeit und Datum in Char Variable speichern  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.330
    Danke
    448
    Erhielt 687 Danke für 512 Beiträge

    Standard

    https://support.automation.siemens.c...ard&viewreg=WW

    Hier steht alles!

    Ist in vbs ebenfalls einfach: SmartTags("MeinString") = CStr(Now)
    Geändert von RONIN (31.07.2013 um 18:55 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    Kutschi (31.07.2013)

  4. #3
    Kutschi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.07.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    das sieht ja schon ma sehr gut aus. Aber meine C oder VbS Kenntnisse sind doch sehr eingeschränkt. Wie bekomme ich die Daten die ja laut Siemens Support dann im Word Format vorliegen in die Char Variable.
    Diese sollte folgender Massen aussehen "20.07.2013 15:30:30".
    Geändert von Kutschi (31.07.2013 um 20:39 Uhr)

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Code:
    'VBS: Datum-String formatieren "31.12.2008 01:59:59" unabhängig von den regionalen Einstellungen
    
    Dim ts, sts
    
    ts = Now   'oder: ts = SmartTags("MeinString")
    sts = Right("0" & DatePart("d", ts), 2) & "." & Right("0" & DatePart("m", ts), 2) & "." & DatePart("yyyy", ts) & " " _
          & Right("0" & DatePart("h", ts), 2) & ":" & Right("0" & DatePart("n", ts), 2) & ":" & Right("0" & DatePart("s", ts), 2)
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    Kutschi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.07.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Harald,

    Könntest Du die Zeilen etwas erklären. Von VBS habe ich noch ar keine Ahnung. Ist da schon eine Char Variable dabei die ich dann verwenden kann? Muss ich eine noch als interne Variable im WinCC anlegen?

    Markus

  7. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Code:
    'VBS: Systemzeit zu Datum-String formatieren "31.12.2008 01:59:59" unabhängig von den regionalen Einstellungen
    
    Dim ts, sts
    
    ts = Now
    sts = Right("0" & DatePart("d", ts), 2) & "." & Right("0" & DatePart("m", ts), 2) & "." & DatePart("yyyy", ts) & " " & _
          Right("0" & DatePart("h", ts), 2) & ":" & Right("0" & DatePart("n", ts), 2) & ":" & Right("0" & DatePart("s", ts), 2)
    SmartTags("MeinString") = sts
    Der VBS-Code erzeugt aus der aktuellen Systemzeit des Computers einen String in der Form "31.12.2008 01:59:59".
    Dazu wird mit der Now-Funktion die Systemzeit in die temporäre Variable ts geschrieben und dann mit Hilfe der DatePart-Funktion die einzelnen Datumsteile aus ts zum String zusammengesetzt sowie die Trennzeichen eingefügt.
    Am Ende liegt der String in der temporären Variable sts und kann weiterverarbeitet werden oder auch einer WinCC-Variablen zugewiesen werden ( SmartTags("MeinString") = sts ).
    Right("0" & DatePart(...), 2) hängt eine Vor-Null vor das Datumsteil und schneidet dann die letzten 2 Zeichen heraus, damit die Datums- und Zeitangaben immer mit 2 Ziffern in den String kommen (0 bis 9 --> "00" .. "09", 10 bis 59 --> "10" .. "59").

    Genaueres siehe die Hilfe zu den VBS-Funktionen: Now, DatePart, Right

    So sollte es auch in C-Script funktionieren (nicht getestet):
    Code:
    //C: Systemzeit zu Datum-String formatieren "31.12.2008 01:59:59" unabhängig von den regionalen Einstellungen
    
    #pragma code("kernel32.dll")
    VOID GetLocalTime(SYSTEMTIME *lpst);
    #pragma code();
    SYSTEMTIME ts;
    char sts[20];
    
    GetLocalTime(&ts);
    sprintf(sts, "%02d.%02d.%04d %02d:%02d:%02d", ts.wDay, ts.wMonth, ts.wYear, ts.wHour, ts.wMinute, ts.wSecond);
    SetTagChar("MeinString", sts);
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren Systemzeit zu Datum-String formatieren "31.12.2008 01:59:59"  

  8. #7
    Kutschi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.07.2010
    Beiträge
    17
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Danke für die Hilfe bis jetzt. Das klappt ja schon ganz gut was ich da jetzt gebaut habe. Wofür ist denn die Zeile #pragma code() ? Besteht die Möglichkeit von ts.whour eine Stunde abzuziehen?

    Gruß
    Markus

  9. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Kutschi Beitrag anzeigen
    Wofür ist denn die Zeile #pragma code() ?
    #pragma code() beendet den Deklarationsblock für Funktionen aus externen DLL.
    siehe WinCC Hilfe oder Systemhandbuch WinCC V7.2 Scripting: VBS, ANSI-C, VBA


    Besteht die Möglichkeit von ts.whour eine Stunde abzuziehen?
    Wozu soll das gut sein? Willst Du die Sommerzeit aus der PC-Zeit 'rausrechnen - dazu müßtest Du wissen, ob Sommerzeit ist ... besser wäre vielleicht, GetSystemTime() statt GetLocalTime() zu nutzen.

    In VBS würde ich versuchen (ungetestet)
    Code:
    ts = DateAdd("h", -1, Now)
    Wie man das im WinCC-C rechnen kann weiß ich nicht.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Datum bzw Uhrzeit in String bzw CHAR
    Von olddragon im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.03.2012, 13:48
  2. Datum und Uhrzeit
    Von HDF im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.12.2009, 09:08
  3. Meldungen mit Datum&Uhrzeit speichern
    Von Alexus85 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.11.2009, 09:41
  4. Antworten: 4
    Letzter Beitrag: 22.10.2005, 11:07
  5. Uhrzeit und Datum als CHAR
    Von MFe im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.07.2004, 20:01

Stichworte

Lesezeichen

Berechtigungen

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