WinCC Unified Anzeige DatumUhrzeit nach UpDate auf V21 geht nicht mehr

schwimmer

Level-3
Beiträge
1.807
Reaktionspunkte
695
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA V21
MTP1000 comfort [Image V21....]

Hallo Forum,
ich habe ein HMI-Projekt von TIA V19 auf TIA V21 hochgezogen und wenn ich das Projekt ins MTP transferiere, werden mit Datum und Uhrzeit nicht mehr angezeigt.
Das EA-Feld ist als Ausgabe im Format {D} {T} eingerichtet und als Prozesswert ist dies Skript hinterlegt:

Javascript:
export function ioDateTime_ProcessValue_Trigger(item) {
    var value;
    value = new Date().toLocaleString('de-DE');  // use format of RT server
     // value = new Date().toLocaleString('en-US');  // use American format
     // value = new Date().toLocaleString('en-US', {hour12: false});  // use American format with 24 hours
let tag1 = Tags("staDate1");
tag1.Write(value); //write value "1234" to tag "MyTag1"


    return value;
}

In meinem Ausgabefeld wird 01.01.1601 00:00:00 angezeigt. Liegt da ein genereller Fehler vor oder muss ich da für V21 etwas umstellen?
 

Anhänge

  • Screenshot DateTime.png
    Screenshot DateTime.png
    76,1 KB · Aufrufe: 5
Pack dein Script Mal in einen try..Catch Block.
Siehe hier unter Debugging.

Der Rückgabewert von new Date().toLocaleString('de-DE') ist ein String.
Dementsprechend musst du das EA-Feld als {S} parametrieren bzw muss "staDate1" ein String sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Rückmeldung.
Leider bin ich was JS betrifft ziemlicher Anfänger und weiß nicht genau was du mit try...Catch meinst, bzw. aus den Links und den dazugehörigen Beschreibungen bin ich nicht schlauer geworden wie ich das umsetzen soll.
Auch wenn ich die Variable zu einem WString mache, ändert sich nichts.
 
Jeder fängt irgendwann mal am Anfang an (⁠◠⁠‿⁠・⁠)⁠—⁠☆
Hast du auch die Ausgabe des EA-Feldes ebenfalls auf String-Ausgabe angepasst?

Im oben verlinkten Beitrag findest du unter "Debugging" eine Kurzbeschreibung wie man Fehler in JS diagnostiziert + einige Links zu weiteren Informationen & wie man den TraceViewer (Debugging Ausgabe) nutzt.
Eine vollständige Anleitung zu try..Catch findest du dort ebenfalls unter dem Link zur Doku der Exception Handling Statements.
Im Try-Teil schreibst du deinen Code.
Wird dabei ein Fehler geworfen bricht das Script nicht ab sondern springt in den Catch-Teil & führt diesen aus.
Trace gibt eine beliebige Nachricht an den TraceViewer aus, die beispielsweise den Ort eines Fehlers, zusätzliche Fehlerinformationen oder zusätzliche (Variablen-)Werte.
Im Prinzip kannst du alles was in einen String gewandelt werden kann dort ausgeben.
Ein Beispiel zur Anwendung findest du in verschiedenen Posts zu Javascripting hier im Forum, beispielsweise siehe Snippets Vorstellung.
Oder in der F1-Hilfe des TIA ¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯
 
Das Feld hatte ich auch auf String-Ausgabe umgestellt, hatte aber keinen Einfluss.
Deinen Tipp mit try..Catch werde ich mir mal in Ruhe durchlesen und damit spielen, habe jetzt das Panel leider nicht mehr zur Hand.
Mein Skript sieht jetzt so aus:

Code:
export function ioDateTime_ProcessValue_Trigger(item) {
   var value;
let myDate = new Date();
let myLocal = myDate.toLocaleString('de-DE', {timeZone: 'Europe/Berlin'});
value = myLocal;

return value;
}
Im Ausgabeformat des Feldes habe ich gar nichts eingetragen, dann wird mir Datum und Uhrzeit richtig angezeigt. Einziger Wehrmutstropfen, Tag und Monat werden nicht mit einer führenden Null angezeigt. Da gibt es doch sicher eine Möglichkeit, Tag und Monat mit einer führenden 0 anzuzeigen. Könnte mir jemand einen kleinen Wink geben wie das geht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deinen Tipp mit try..Catch werde ich mir mal in Ruhe durchlesen und damit spielen, habe jetzt das Panel leider nicht mehr zur Hand.
Funktioniert auch in der Simulation ;)
Einziger Wehrmutstropfen, Tag und Monat werden nicht mit einer führenden Null angezeigt. Da gibt es doch sicher eine Möglichkeit, Tag und Monat mit einer führenden 0 anzuzeigen. Könnte mir jemand einen kleinen Wink geben wie das geht?
Kannst du ebenfalls über den Options-Parameter angeben.
Siehe Doku des betreffenden Konstruktors:
 
Zurück
Oben