WinCC Unified Unified Uhrzeitsynchronisation und Uhrzeit/Datum ändern.

oliversps

Level-2
Beiträge
118
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA Portal V20 Update 3 (WinCC Unified V20 Update V3)
MTP700 Unified Comfort Panel
CPU 1512C-1PN

Tach zusammen.

Meine Aufgabe:
Ich möchte die Uhrzeit meines Unified Panels mit der meiner CPU synchronisieren und über das Unified Panel über E/A Felder ändern/überschreiben können.

Aktueller Stand:
Ich habe es bereits hinbekommen die CPU Uhrzeit mit der HMI Uhrzeit zu synchronisieren, in dem ich im Aufgabenplaner des HMI ein Ereignis im 10S Takt angelegt habe mit der Systemfunktion „SetzePLCDatumUhrzeit“. Damit synchronisiert sich die CPU Uhrzeit auf die Uhrzeit des HMI‘s. Ich möchte es aber genau anders herum.

Weitere Details:

In der Gerätesicht des HMI habe ich die Uhrzeitsynchronisation über NTP-Server aktiviert.
Über den Baustein RD_LOC_T lese ich die Uhrzeit der CPU aus und visualisiere diese auf dem Unified Panel in jeweils einem E/A Feld für Datum und Uhrzeit (nur lesend).
Des weiteren habe ich jeweils ein E/A Feld für die Eingabe eines neuen Datums und Uhrzeit (schreibend), welche in die CPU geschrieben wird, wenn man auf eine Schaltfläche „neue Uhrzeit setzen“ drückt. Das klappt auch soweit.
Allerdings möchte ich diese neue CPU Uhrzeit dann auch mit der HMI Uhrzeit synchronisieren.
Wenn ich jetzt die Uhr aus der Werkzeugliste (WinCC Unified/TIA) in meiner Visualisierung anzeigen lasse, stellt man fest, dass sich diese beim setzen der neuen Uhrzeit nicht ändert und statt dessen im 10S Takt (wie in den Details beschrieben) Die CPU Uhrzeit den Wert der HMI Uhrzeit übernimmt.

Meine 2 Fragen:
1.
Wie synchronisiere ich die HMI Uhrzeit mit der der CPU?
2. Wie ändere ich die HMI Uhrzeit ohne auf meinem Unified Panel die Runtime verlassen und diese manuell am Panel eingeben zu müssen? (Am liebsten über E/A Felder wie es mir für die CPU Uhrzeit bereits gelungen ist.)


Über Antworten oder Anregungen würde ich mich riesig freuen.

LG Olli
 
Zuletzt bearbeitet:
Wie synchronisiere ich die HMI Uhrzeit mit der der CPU?
Also: CPU gibt die Uhrzeit vor?
Am einfachsten per NTP-Server auf der CPU

Wie ändere ich die HMI Uhrzeit ohne auf meinem Unified Panel die Runtime verlassen und diese manuell am Panel eingeben zu müssen? (Am liebsten über E/A Felder wie es mir für die CPU Uhrzeit bereits gelungen ist.)
Wenn die CPU bereits die HMI-Uhrzeit vorgibt brauchst du das doch gar nicht mehr, oder verstehe ich dich falsch?
Aus der Runtimes heraus die Panel-Zeit zu ändern geht, meines Wissens, immer noch nicht.
Effektiv brauchst du aber zwingend eine Synchronisation per NTP zwischen beiden, ansonsten mault das Panel mit der Meldung "Partner requires Alarm time correction" sobald die Zeitdifferenz größer als 3sek wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also: CPU gibt die Uhrzeit vor?
Am einfachsten per NTP-Server auf der CPU
Genau so hätte ich es eigentlich gerne.
Die Bibliothek samt LSNTP_Server FB habe ich tatsächlich schon aufgespielt. Hatte allerdings auch keinen Effekt. Allerdings würde mich interessieren welchen Wert ich deiner Meinung nach sinnvoller Weise beim Eingang connID und referenceid eintragen sollte? (Wusste da nicht was ich eintragen soll).

Wenn die CPU bereits die HMI-Uhrzeit vorgibt brauchst du das doch gar nicht mehr, oder verstehe ich dich falsch?
Aktuell gibt das HMI Panel die Uhrzeit für die CPU vor.

Aus der Runtimes heraus die Panel-Zeit zu ändern geht, meines Wissens, immer noch nicht.
Effektiv brauchst du aber zwingend eine Synchronisation per NTP zwischen beiden, ansonsten mault das Panel mit der Meldung "Partner requires Alarm time correction" sobald die Zeitdifferenz größer als 3sek wird.
Die Meldung kam nicht, aber schon mal gut zu wissen, dass man die HMI Uhrzeit vermutlich nicht direkt ändern kann (ohne Runtime zu verlassen).
 
Siehe Bausteindoku
Der Eingang gibt an, aus welcher Zeitquelle die
Server-CPU die Uhrzeit bezieht:
• 0: unkalibriert ("von Hand" gesetzt)
• 1: primäre Referenz (z. B. DCF 77)
• 2: sekundäre Referenz (z. B. von GPS
Empfänger)
Die Information wird im SNTP-Protokoll an den
NTP-Client weitergegeben.
Wobei es für die Funktion an sich eigentlich irrelevant ist.

Irgendeine freie ConnID, die nicht von was anderem verwendet wird.
Du brauchst dazu keine tatsächliche Verbindung anzulegen.
Leg dir zu den ConnIDs am besten Konstanten an, nicht das du versehentlich was doppelt belegt.

Hatte allerdings auch keinen Effekt
Du kannst mal per cmd-Befehl prüfen ob der NTP-Server läuft.
Dan weißt du auf welcher Seite das Problem liegt.
w32tm /stripchart /computer:IpAdresseDerSps

Die Meldung kam nicht, aber schon mal gut zu wissen
Kann sein, dass diese erst auftaucht sobald du eine PLC-Meldung bekommst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Über den cmd-Befehl habe ich die Fehlermeldung „Fehler: 0x800705B4“ bekommen.
Was sich sicherlich mit der Fehlermeldung 16#8601 am „status“ Ausgang des LSNTP_Server FB begründen lässt.

Allerdings ist es mir nicht gelungen die Fehlermeldung zu beseitigen.
Siehe Anhang.

IMG_1940.jpegIMG_1936.jpeg
 
Was steht im Diagnostics-UDT drin?
Der müsste dich entsprechend Kapitel 2.4 der Doku dann zum problematischen Baustein lotsen.
Beschreibung der Ursache für den Fehler dann in der jeweiligen F1-Hilfe.
 
IMG_4291.jpeg

Das ist die Fehlermeldung.
Ich habe allerdings gar keine TCON Anweisung in mein Programm eingefügt.

Ist das notwendig? Sind sogar noch mehr Anweisungen notwendig um den LSNTP_Server FB zum laufen zu kriegen?

Danke erstmal für deine schnellen Rückmeldungen!
 
Sagt mal, kann es sein, dass der SNTP Server mit PLC SIM einfach nicht simulierbar ist?

Habe noch nicht erwähnt, dass ich sowohl die CPU als auch das Unified Panel nur über die Simulation laufen lasse.
Ich teste ohne Hardware.
 
Welche Version des LSNTP_Server FB verwendest du? V4.0.0 wäre die aktuelle Version

LSNTP_Server status = 16#8601
16#8601 Fehler in unterlagerter Anweisung "TCON"
Der Fehlercode der Anweisung wird an "diagnostics.subfunctionStatus" ausgegeben.
Erhältst du über das "diagnostics.subfunctionStatus" keine weiteren Details?
Oder gibt es im IDB des LSNTP_Server (dein DB4) vielleicht eine Variable ähnlich "...Subfunctionstatus..."? Was für ein Wert steht da drin?

Nicht entscheidend, aber schöner:
Warum verwendest du eine so hohe connID 200 (16#00C8)?
Wenn schon eine hohe Nummer, dann würde ich intuitiv 123 (16#007B) verwenden, weil 123 die übliche TCP Portnummer von NTP-Servern ist.
 
Zurück
Oben