# HMI als Uhrzeit-Slave stellt falsche Zeit dar



## Rquadrat

Hallo erstmal, bin der Neue, komm jetzt öfters.

Bin noch recht frisch in der SPS Programmierung mit STEP7. Gerade das TIA-Portal bereitet mir kummer. In der Berufsschule haben wir das Thema STEP 7 angeschnitten und auch Programmiert (AWL war mein Favorit), aber das war wohl eine ältere Version, jedenfalls war die Entwicklungsumgebung da nicht so umständlich aufgebaut. Nun bin ich seit Anfang des Jahres System-Elektroniker und realisiere Steuerungsaufgaben für Maschinen und Anlagen. Zuletzt wurde für die Steuerung eine Logo verwendet, doch die ist langsam ausgereizt. Deshalb wurde ein S7-Starter-Kit angeschafft. (Simatic S7-1200 + KTP400 Basic Color PN + STEP 7 Basic v12 SP1) Als erstes musste ich erschrocken feststellen, das ausgerechnet bei der 1200er Reihe kein programmieren in AWL möglich ist. Doch auch andere Dinge erschweren mir den Einstieg:

Ich möchte die Uhrzeit der SPS an das HMI Panel übertragen. Dazu habe ich den HMI unter "Verbindungen" - "Modus HMI-Zeitsynchronisation" als Slave festgelegt. Eine Zeit wird nun auch übertragen. Nur leider entspricht diese nicht der Systemzeit der CPU. Die Abweichung entspricht in etwa einem Tag. (21,5 Stunden) Auf dem HMI Panel ist es bereits morgen.

Nun habe ich diesbezüglich bereits im Internet recherchiert und Handbücher gewälzt, aber auf die Ursache bzw eine Lösung zu dem Problem bin ich nicht gestoßen.

Ich habe bereits folgende Lektüre durchsucht (STRG+F) und einiges gelesen, aber es hilft mir nicht bei dem Problem:
Handbuch zu STEP 7 Basic v12 SP1
Handbuch zu HMI-Panels
Anleitung "Uhrzeitsynchronisation zwischen einem HMI Bediengerät und einer SIMATIC SPS"
Anleitung "Wie kann ich die Uhrzeit meines HMI Basic Panels mit meiner S7-1200 PLC synchronisieren?"

Dann habe ich versucht die Vorgehensweise aus Anleitungen zu übernehmen. Doch die eine zielt mehr darauf ab, die Uhrzeit am HMI-Panel einzustellen und an die PLC zu übertragen und die andere empfiehlt Schritte, die von der SPS nicht umgesetzt werden wollen.
(DateTime als DTL anlegen und über das Panel mit einem Steuerungsauftrag abrufen: Fehler, Datentyp zu groß. Dieser kann aber nicht geändert werden.) Teilweise hatte ich den "Erfolg" dass ich als Datum 01.01.1970 angezeigt bekommen habe.

Wie man Steuerungsauftrag 14 + 15 benutzt habe ich noch nicht verstanden.

Aber ich habe die Befürchtung, dass selbst das nichts an dem Zustand ändern würde.

Kennt jemand das Problem und weiß wie man das beheben kann?
Ich meine, die Uhrzeit korrekt darzustellen, sollte jetzt nicht zuviel verlangt sein für eine moderne Steuerung oder?

Hoffe die Problematik ist nachvollziehbar 

LG R²


----------



## PN/DP

Als erstes: Stimmt denn die Uhrzeit in der CPU?
Hast Du vielleicht eine falsche Zeitzone in der CPU oder dem HMI eingestellt?
Oder hast Du im KTP im Control panel einen Uhrzeitserver eingestellt und da einen Time shift angegeben?

Harald


----------



## Rquadrat

Hi Harald, danke für deine Antwort.

In der CPU stimmt die Zeit. Deshalb wundern mich die Abweichungen ja so. Die Zeitzone ist UTC+1 also Berlin.
Einen Uhrzeitserver habe ich nicht vergeben, da die SPS nur über einen Switch mit dem PC und dem KTP verbunden ist. Es ist keine Internetverbindung vorhanden und deshalb auch kein Uhrzeitserver erreichbar. Ich hatte auch schon daran gedacht, es mit einem Uhrzeitserver zu versuchen um mir den Aufwand zu ersparen, aber solange die Steuerung nicht läuft und die Sicherheitseinstellungen nach bestem Wissen und Gewissen eingerichtet sind, darf die SPS nicht ins Firmennetzwerk.

LG R²


----------



## Rquadrat

Status Update:
Habe jetzt an den Siemens Support geschrieben und denen das Problem erklärt, da ich nun nicht einmal mehr Software auf das HMI übertragen kann. Jedesmal bricht die Verbindung ab. Wollte dann auf die Werkseinstellungen zurücksetzen und dabei stürzt dann TIA ständig ab -.-
Ich muss sagen, ich bin begeistert von der neuen Technik.

Edit:
Wenn ich ein neues Projekt anlege und alle Einstellungen erneut vornehme, kann ich auch wieder Daten an das HMI übertragen. Aber auf Werkseinstellungen zurück setzen geht immer noch nicht.


----------



## Rquadrat

Hallo

bisher habe ich keine Antwort von Siemens erhalten. Die können sich das wohl auch nicht erklären -.-

Nun habe ich ein anderes Projekt auf dem Tisch, mit dem gleichen Problem.
Es ist eine S7-1212C AC/DC/RLY im Einsatz und ein KTP700 Basic
Programmiert wird nun mit TIA V13 SP1 Update 3.

CPU > Gerätekonfiguration > Eigenschaften > Uhrzeit
Zeitzone (UTC +01:00) Berlin, Bern, Brüssel, Rom, Stockholm, Wien


CPU > Online & Diagnose > Funktionen > Uhrzeit einstellen
Baugruppenzeit von PG/PC übernehmen


HMI > Verbindungen
Modus HMI-Zeitsynchronisation: Slave


Uhrzeit im HMI und auf dem Webserver -2h
Statt 8:37 Uhr wird mir 6:37 Uhr angezeigt. Im HMI und auch auf dem Webserver der CPU. Doch in der CPU steht die richtige Zeit, sie wird richtig übernommen.

Wo liegt das Problem? Stehe echt auf dem Schlauch.

Das einzige was mir einfällt ist, die Zeitzone zu ändern. Aber das kann doch nicht die Lösung sein, einen Fehler zu produzieren um richtige Ergebnisse zu bekommen -.-

Ich hoffe ihr könnt mir helfen


----------



## Rquadrat

Habe nun von Siemens einen Link erhalten:
https://support.industry.siemens.com/cs/ww/de/view/69864408

Dort sind Programmbeispiele und eine Anleitung dazu zu finden.
Jeden Schritt der Anleitung einzeln abgearbeitet, doch trotzdem das gleiche Problem.
(Lösung 1, da S7-1200 im Einsatz)

Daraufhin habe ich verschiedene kreative Versuche unternommen, doch auch das ohne Erfolg.
1. Mit RD_LOC_T Zeit ausgelesen und mit WR_SYS_T geschrieben.
Ergebnis war, dass die SYS_T Tageweise nach vorn gesprungen ist.

2. SET_TIMEZONE Baustein verwendet
So wie ich das sehe, beeinflusst das lediglich die lokale Zeit, welche man auch in TIA einstellen kann.

3. Mutmaßlich eine falsche Zeit eingegeben, statt vom PG/PC zu übernehmen.
Das funktioniert. Nur ist das nicht das, was ich will.

4. Die einzige Lösung, die mich einigermaßen zufrieden stellt ist, die LOC_T zu lesen und dann aus dem HMI die Zeit aus dem DB zu lesen.
Doch habe ich dann trotzdem eine falsche Zeit im Webserver...


----------



## Rquadrat

Update:

Das HMI holt sich die Systemzeit. Diese ignoriert Sommer- und Winterzeit und die Zeitzone in der man sich befindet.
Eine Lösung ist es, mit dem Baustein "RD_LOC_T" die Zeit in der CPU zu lesen, diese in eine Variable zu schreiben und
aus dem HMI eben diese auszulesen. Dazu muss der Haken entfernt werden, dass er die Systemzeit nutzen soll.
Dann ist es auch möglich eine Variable zu hinterlegen.

Ich gehe davon aus, dass das nicht die beste Methode ist, aber wenigstens bekommt der Bediener die richtige Zeit angezeigt.
Freue mich über Tipps und Anregungen

P.S. Der Siemens Support konnte mir da leider auch nicht weiterhelfen. Ich bekam nur Ausschnitte aus dem Handbuch zu S7-1200.
Ferner konnte mir keiner sagen, warum die CPU mit 2 Zeiten arbeitet. Für mich macht das keinen Sinn.
Wenn einer von euch weiß, was die Logik dahinter ist, würde ich mich freuen, wenn er/sie sein/ihr Wissen teilt.


----------



## Juppi

Das ist die beste Lösung. 
So braucht nur ein Mal die Zeit in der SPS geändert zu werden und alle angeschlossenen Panels haben die aktuelle Zeit.
Auch wenn die Zeit von einem übergeordneten System geändert wird, ist keine Änderung mehr nötig.


----------



## PN/DP

Das ist nicht die beste Lösung. Es ist eigentlich überhaupt keine Lösung, weil dabei nur optisch der Wert einer Date_and_Time-Variable der CPU angezeigt wird, aber nicht die Uhr der Panele beeinflußt wird. Alle Zeitstempel im HMI (z.B. Meldungen) bleiben falsch.

Ich habe leider kein TIA V13 um zu testen was bei Rquadrat falsch läuft.

Eigentlich sollte es kein Problem sein die Uhr der S7-1200 und die Zeitzone korrekt einzustellen (und ggf. die Uhr per NTP zu synchronisieren) --> dann sollte schonmal der Webserver der CPU die richtige Zeit anzeigen.
Danach noch die Uhrzeit (LOC_T) in einen Bereichszeiger für das HMI eintragen und am HMI den Bereichszeiger "Datum/Uhrzeit PLC" korrekt einstellen --> die Uhr des HMI sollte nun ebenfalls die korrekte Zeit haben.

Harald


----------



## RONIN

Schon länger her das ich das gemacht habe, aber wie RQuadrat schon schrieb holt sich das Panel mit der "Modus HMI-Zeitsynchronisation: Slave" die UTC-Zeit von der CPU.

Normalerweise muss man dann nur in den Zeiteinstellungen des Panels (Systemsteuerung) noch UTC+1 und DST aktiv einstellen, damit es passt.


----------



## Rquadrat

@ PN/DP
In der CPU kann ich die Zeit mit Zeitzone und Sommer-/Winterzeit korrekt einstellen. NTP geht leider nicht, da die Maschine keine Verbindung zur Außenwelt haben soll. Firmenvorschrift.
Die LOC_T sende ich nun ja ans HMI, und bekomme so die richtige Uhrzeit angezeigt. Über die Zeitstempel in den HMI-Meldungen habe ich mir noch gar keine Gedanken gemacht. Guter Hinweis!

@ RONIN
Ich kann an dem Panel nur einen Time Shift angeben. Keine DST. :S (KTP700 Basic)
Wenn ich immer +2h mache, da wir gerade Sommerzeit haben, bekomme ich bei der Zeitumstellung erneut Probleme...

Irgendwie scheint mir das noch nicht ausgereift zu sein.


----------



## PN/DP

Rquadrat schrieb:


> In der CPU kann ich die Zeit mit Zeitzone und Sommer-/Winterzeit korrekt einstellen.
> [...]
> Die LOC_T sende ich nun ja ans HMI, und bekomme so die richtige Uhrzeit angezeigt.


Wo ist Dein Problem geblieben? Kannst Du nochmal zusammenfassen, was jetzt aktuell Dein Problem ist?




Rquadrat schrieb:


> NTP geht leider nicht, da die Maschine keine Verbindung zur Außenwelt haben soll. Firmenvorschrift.


Die IT'ler könnten im Maschinennetzwerk einen lokalen NTP-Server betreiben. Wenn sie wollen...




Rquadrat schrieb:


> Die LOC_T sende ich nun ja ans HMI, und bekomme so die richtige Uhrzeit angezeigt.
> 
> Ich kann an dem Panel nur einen Time Shift angeben. Keine DST. :S (KTP700 Basic)
> Wenn ich immer +2h mache, da wir gerade Sommerzeit haben, bekomme ich bei der Zeitumstellung erneut Probleme...


Wenn Du für das HMI die LOC_T bereitstellst, dann ist das schon die um Zeitzone und Sommerzeit korrigierte lokale Zeit. Im HMI darf dann kein Versatz mehr angegeben werden.

Harald


----------



## Rquadrat

Nunja, du hattest doch selbst angemerkt, dass die Zeitstempel der Systemmeldungen, bei meiner Art der Problemlösung, falsch sein werden.

Das eigentliche Problem war/ist, dass das Panel die Systemzeit zieht, die immer falsch sein muss, da es kein DST berücksichtigt.


----------



## RONIN

Rquadrat schrieb:


> @ RONIN
> Ich kann an dem Panel nur einen Time Shift angeben. Keine DST. :S (KTP700 Basic)
> Wenn ich immer +2h mache, da wir gerade Sommerzeit haben, bekomme ich bei der Zeitumstellung erneut Probleme...


Ahhh, Danke. Jetzt fällt mir die Problematik wieder ein.



PN/DP schrieb:


> RQuadrat schrieb:
> 
> 
> 
> 
> _In der CPU kann ich die Zeit mit Zeitzone und Sommer-/Winterzeit korrekt einstellen._
> _Die LOC_T sende ich nun ja ans HMI, und bekomme so die richtige Uhrzeit angezeigt._
> 
> 
> 
> Wo ist Dein Problem geblieben? Kannst Du nochmal zusammenfassen, was jetzt aktuell Dein Problem ist?
> Wenn Du für das HMI die LOC_T bereitstellst, dann ist das schon die um Zeitzone und Sommerzeit korrigierte lokale Zeit. Im HMI darf dann kein Versatz mehr angegeben werden.
Zum Vergrößern anklicken....

RQuadrat meinte damit nur die Anzeige der LOC-Zeit von der CPU mittels Ausgabefeld.
Die Zeitstempel aus den Störmeldungen/Trends sind damit aber immer noch Panel Systemzeit und damit falsch.



Rquadrat schrieb:


> Dazu habe ich den HMI unter "Verbindungen" - "Modus HMI-Zeitsynchronisation" als Slave festgelegt.


Funktioniert leider nur bei den Comfort Panels. 
Basic Panel der *ersten Generation* haben die Funktion nicht - Siehe Timesynch-Doku Seite 50.
	

		
			
		

		
	

Anhang anzeigen 69864408_wincc_timesyn_doku_v13_de.pdf


Beim KTP700 (Basic-Panel *zweite Generation)* kann man zwar die sog. "HMI-Zeitsynchronisation" in TIA wählen, 
jedoch kann man die Sommer/Winterzeit-Umschaltung in den BasicPanels 2ndGen immer noch nicht einstellen. 
Das Ding hat die Option nicht und kann es daher auch nicht. 
	

		
			
		

		
	

Anhang anzeigen hmi_basic_panels_2nd_gen_instructions_s50.pdf


Die "HMI-Zeitsynchronisation" holt sich von der CPU die UTC-Zeit, so wie es bei einem NTP-Server der Fall wäre.
Damit ist das nicht nutzbar, da hat Siemens meiner Meinung wieder mal in die Sch**ße gegriffen.

Wie ein Basic-Panel mit einer NTP-Server funktionieren soll der UTC ausspuckt ist mir absolut schleierhaft. Vielleicht kann mich jemand erleuchten.
Keine Ahnung warum Siemens dass bei seinen Basic-Panels rausstreicht!


Die einzige Option ist mit *Bereichsszeigern* (ist die altmodische Variante) zu arbeiten. 
Im Handbuch "Wie lässt sich die Uhrzeit des HMI Basic Panels mit einer S7-1200 SPS synchronisieren?"   (das du ja schon gefunden hast) ist das schon so gelöst.
 Das Handbuch ist eigentlich für Basic-Panels der ersten Generation, da man es aber bei den 2nd Gen (aus eben angesprochenen Gründen) eigentlich gleich machen muss, kann man es als Basis nehmen.


Sieh der das Beispielprojekt dazu an und tausche das dortige Panel (Rechtlick/Eigenschaften/GerätVersion ändern) gegen ein KTP700.
Dann kannst du den Rest gleich projektieren.


----------



## Rquadrat

Danke RONIN, du hast die Problematik sehr exakt beschrieben und netterweise einen Beweis erbracht, dass ich nicht einfach nur zu blöde bin um so etwas einfaches zu projektieren, wie die Uhrzeit einzustellen.
Ich habe schon angefangen an mir zu zweifeln.
Den Bereichszeiger werde ich einrichten. Ich bin davon ausgegangen, dass man die nicht mehr braucht.
Aber DOS läuft ja auch überall noch im Hintergrund...


----------



## RONIN

Ja hatte die mit der Zeit-Synch die selben Probleme mit dem KTP700... und noch viele andere.
Konnte mich nur nicht mehr gleich erinnern (Im Zorn verdrängt)


----------



## Rquadrat

Vielen Dank!
Das funktioniert wunderbar.
Deine Anleitung ist auch viel verständlicher als die von Siemens.


----------



## Stoky

Moin moin zusammen,

ich weiß der Beitrag hier ist 4-5 Jährchen alt.

Ich bin heute mal wieder über diese Thema gestolpert und habe mir die Mühe gemacht nochmal zu überprüfen, ob es von Siemens da mittlerweile eine sinnvollere Lösung gibt. Leider musste ich feststellen, dass der hier aufgezeigte Weg über den Bereichszeiger nach wie vor die bessere Lösung ist. Immerhin konnte ich eine DTL Variable als Sollwert für den Bereichzeiger verwenden, so konnte ich mir die Umwandlung in BCD-codierte Bytes sparen.

Falls irgendwann wer ne bessere Lösung findet, ich hätte noch Interesse 

Gruß Christian


----------



## Ludewig

Bei mir ging DTL nicht, aber LDT ?! 9"Basic Panel, Et200 1512, TIA 14/1/Upd.9

Deutsche TIA - Französisches Basic Panel ? Weiß jemand wie das geht?


----------



## Stoky

Also ich verwende folgendes:
CPU1512SP F-1
TIA V14 SP1 Upd 6
Comfort Panel TP1x00

Liegt dann vermutlich am Basic Panel, dass bei dir DTL nicht geht. Hier der Beweis:


----------

