Uhrzeit und Datum in Char Variable speichern

Kutschi

Level-1
Beiträge
17
Reaktionspunkte
0
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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".
 
Zuletzt bearbeitet:
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Systemzeit zu Datum-String formatieren "31.12.2008 01:59:59"

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
 
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
 
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
 
Zurück
Oben