Sonstiges HMI Uhrzeit in Runtime ändern

hans_meier

Level-1
Beiträge
41
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

kann mir jemand sagen, wie man die Uhrzeit eines HMI ändern kann, ohne die Runtime zu beenden oder per Zeitserver?
Zu dem Thema habe ich auf die schnelle jetzt nichts gefunden.
Wollte es in der Art machen:
1bnVfru5IS0AAAAASUVORK5CYII=

Und es dann auch gleich auf die PLC synchronisieren (was ja bei der 1500er über die Uhrzeitsynchro geht).
 
Was für eine HMI hast Du?

- Bei einem Panel nimmt man üblicherweise die PLC als Uhrzeit-Master, weil die Uhr der PLC viel zuverlässiger und genauer ist als die Panel-Uhr.
- Bei einer PC-Runtime braucht man die Uhr des PC nicht zu verstellen bzw. sollte man nicht an der Uhr spielen bzw. kann man die Uhr über die Systemsteuerung ändern.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein TP900 Comfort.
Mein Versuch die Uhrzeit der SPS zu ändern scheitert momentan an irgendeinem dämlichen Fehler, den ich einfach nicht finde ...
SPS ist die CPU 1510SP F-1 PN, PROFINET-Schnittstelle (R0/S1).

Die Felder bei "neue Zeit" setzen sich ständig zurück.

Auch die Querverweise scheinen sauber zu sein.

Bx3wcoCYNJFvTXs7S0BAAAAAAAYPKACgIqBCgAAAAAAAAAAtQUqAKgYqAAAAAAAAAAAUFuIBqBSRkdH 10EAAAAAAAAAABuSL9lCDDVQCwAAAAAAAAAANQWqACgYqACAAAAAAAAAEBt f931H0quyRvaAAAAABJRU5ErkJggg==


(Bilder im Anhang)

Siemens.Automation.Portal_2017-07-27_08-50-13.pngSiemens.Automation.Portal_2017-07-27_08-51-13.pngSiemens.Automation.Portal_2017-07-27_08-51-37.jpg
 
Zuletzt bearbeitet:
Wo/wodurch wird denn die "neue Zeit" beschrieben?

Du solltest nur beim Ereignis "Bild aufgebaut" die Systemzeit des Panels (oder die aktuelle Zeit von der SPS) einmalig in "neue Zeit" kopieren. Dann hat der Bediener Zeit die "neue Zeit"-EA-Felder zu editieren und "Uhrzeit von Panel übernehmen" zu drücken.
Denkbar wäre auch, bei "Bild aufgebaut" ein Bit in der SPS zu setzen, und beim "Aktivieren" eines "neue Zeit"-EA-Feldes das Bit wieder rückzusetzen, und die SPS kopiert die "aktuelle Zeit" in "neue Zeit" wenn das Bit gesetzt ist. Dann läuft "neue Zeit" zunächst mit "aktuelle Zeit" mit bis ein EA-Feld aktiviert wird.

Harald
 
Zuletzt bearbeitet:
Kann es sein dass du temporäre Variablen verwendest ? Oder schreibst du vom Panel direkt in einen Instanz-DB ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann man in TIA-WinCC überhaupt PLC-Variablen aus TEMP adressieren? Eigentlich sollte das TIA-WinCC wissen, daß Verbindungen zu temporären Variablen keinen Sinn machen. (oder doch??)

Wie sind die HMI- und PLC-Variablen (z.B. FA.neueZeit...) zwischen HMI und PLC projektiert? Wie ist der Zusammenhang zu #neueZeit und #aktuelleZeit, wie werden die Werte übergeben/kopiert? Sind #neueZeit und #aktuelleZeit INPUT- bzw. OUTPUT-Variablen eines FC?


PS: Ich kenne mich mit der S7-1500 nicht aus, doch ich glaube, anstatt RD_SYS_T und WR_SYS_T sollte besser RD_LOC_T und WR_LOC_T verwendet werden.

Harald
 
Kann es sein dass du temporäre Variablen verwendest ? Oder schreibst du vom Panel direkt in einen Instanz-DB ?

Der erste Teil ist nicht möglich, der zweite sollte auch keine Probleme machen, man kann Daten aus IDB#s nutzen.


@TE: Kann es vielleicht sein, dass du diese Zeiten in der CPU schreibst? Dann ist klar, dass die sich wieder zurücksetzen. Klammer deinen Code mal komplett aus und schau dann, ob du immer noch nicht schreiben kannst.

Wenn das dann immernoch so sein sollte liegt es an der Projektion im WINCC. Vielleicht hilft es dir ja schon mal deine ganze Visu neu zu übersetzen und reinzuladen, evtl. hat sich da was verschoben und das könnte dir schon helfen.

P.S. Vielleicht kannst du uns mal die Querverweisinformationen aus der PLC auf die Variablen zeigen, manchmal ist das schon aufschlussreich.
 
Zuletzt bearbeitet:
Guten Morgen, war Freitag im Urlaub, daher erst die späte Antwort.

Mein DTL liegt im Static-Bereich des Instanzdatenbaustein "FA" (DB8) in der obersten Ebene und ist momentan mit dem Namen "neueZeit" benannt.
Auch andere Werte im IDB lassen sich ohne Probleme über das HMI steuern.
Habe mal eine kurze Aufnahme (https://puu.sh/wXDTO/527e7cc732.gif) gemacht (aktuelle Zeit ist noch nicht projektiert).

2017-07-31_08-30-08.jpg2017-07-31_08-30-52.jpg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Uhr stellen ist eigentlich ganz simpel.
im Beispiel auf dem bild ist Datum und Uhrzeit in 2 variablen. kann man aber auch direkt in ein dt packen.
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    232,4 KB · Aufrufe: 117
Hallo,

die Uhrzeit kann man doch mit Steuerungsaufträgen und Bereichszeigern vom Panel oder einer Runtime Advanced zur Steuerung senden (Runtime Professional geht nicht mit Bereichszeigern.)
Ich mache es immer über die Bereichszeiger und den Steuerungsauftrag. Wenn ich zudem eine Runtime habe auf Windows 7 und dort soll die PC-Zeit verstellt werden, ist noch die Berechtigung von Windows zu beachten: https://support.industry.siemens.com/cs/ww/de/view/59203176
 
Die PLC-Uhr stellen über Steuerungsaufträge und Bereichszeiger wird haarig, wenn man mehrere HMI an der Anlage hat - dann müssen nämlich alle HMI verschiedene Bereichszeiger haben. Die Datum/Uhrzeit direkt in eine DTL-PLC-Variable schreiben (oder in mehrere Variablen schreiben und dann in der CPU zusammensetzen) und danach ein Übernahme-Bit setzen ist da einfacher und zuverlässiger.

@hans_meier
Bei Dir sieht das so aus, als ob die für die Eingabefelder gewählten HMI-Variablen immer gleich wieder überschrieben werden. Wo setzt Du denn Deine Einzel-Variablen FA.neueZeit.DAY ... zum DTL zusammen? Passieren da vielleicht Fehler (z.B. Wochentag passt nicht zum Datum)? Und wo und wann werden Werte in die Einzel-Variablen geschrieben? Wird da vielleicht auch (dauernd?) ein DTL aufgesplittet auf die Einzel-Variablen? Kommt der Eingabewert überhaupt in der CPU an?
Warum sind die Einzel-Variablen mal als UInt (FA.neueZeit.MONTH) und mal als USInt (FA.neueZeit.DAY, FA.neueZeit.HOUR ...) deklariert?
Ist das richtig, daß Du einen Aktualisierungszyklus von 100 ms eingestellt hast? Das ist so schnell nicht nötig, Standard 1s oder 500ms reicht vollkommen aus.
Hast Du mal in WinCC das Panel "Software komplett" übersetzt?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@PN/DP: Genau das ist das Problem, welches ich habe.
die DTL habe ich beim Setzen des WR-SYS_T erstellt (Name geschrieben, Rechtsklick drauf und "Variable definieren"), die einzelnen Variablen sind daher automatisch erstellt und formatiert worden.
Die einzelnen Teile des DTL werden ausschließlich durch die Eingabefelder in der HMI beschrieben / gesetzt.
Den Aktualisierungszyklus habe ich probehalber mal auf 100ms gesetzt.
Das Panel ist auch mehrfach komplett übersetzt worden.

@Volker: in Post #3 habe ich das Netzwerk in dem die Zeitensetzung stattfindet gescreent.
Der Unterschied ist eigentlich nur, dass du die Sachen zusammenfügst, nicht DTL nutzt und die Local- statt Systemzeit beschreibst.
 
Das ist im TIA Portal recht einfach möglich.


  1. In der HMI unter Verbindungen ein Panel auf Master einstellen unter dem Parameter "Modus der HMI-Zeitsynchronisation".
  2. Ein Bild in Anlegen zum einstellen der Uhrzeit.
  3. Auf dem Bild ein Objekt vom Typ Datum/Uhrzeit-Feld projektieren und unter den Eigeschaften/Allgemein den Typ auf Eingabe/Ausgabe setzen. Man kann auch jeweils ein Feld für Datum und Uhrzeit projektieren.
  4. Auf dem Bild einen Button projektieren und unter Ereignisse das Ereignis SetzePLCDatumUhrzeit einrichten. Hier kann gewählt werden wer synchronisiert werden soll.

Wird nun zur Laufzeit eine neue Uhrzeit oder ein Datum eingegeben, kann dieses per Buttonklick an die Steuerung übertragen werden. Ein Baustein auf der SPS ist nicht mehr nötig.
Hat man mehrere HMIs, kann man dies einfach auf Slave stellen und diese werden dann wie die Steuerung auch synchronisiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vermutlich wird es schon helfen, wenn die für die Eingabe benutzte DTL-Variable eine Panel-interne Variable ist (keine Verbindung zur PLC!).
Dann beim Ereignis "Bild aufgebaut" als Ausfüllhilfe für den Bediener die "AktuelleZeit" in die Editier-Variable kopieren und dann bei Drücken SetzePLCDatumUhrzeit aufrufen oder die Editiervariable in die "neueZeit"-Variable kopieren. Ob in dem Bild nun ein Datum/Uhrzeit-Feld projektiert ist oder mehrere Felder für die einzel-Bestandteile sollte egal sein.

PS: zu lange getippt...

Harald
 
Anscheinend kann man bei dem "SetzePLCDatumUhrzeit" gar keine eigene Zeitvariable angeben sondern die Funktion nimmt immer die Systemuhr des Panels. Dann muß man zunächst die Uhr des Panels verstellen und danach schnell SetzePLCDatumUhrzeit aufrufen, bevor die Uhrzeitsynchronisation wieder die Uhr des Panels verstellt.

Hoffentlich nutzt SetzePLCDatumUhrzeit nicht intern sowas wie den altbekannten Steuerungsauftrags-Mechanismus, denn dann wird es bei Anlagen mit mehreren HMI ein Glücksspiel auf welche Uhrzeit von welchem HMI die PLC-Uhr gestellt wird (jedenfalls funktionierten ältere Siemens-Funktionen zum Uhrzeit-stellen so undurchdacht)

Nachtrag/Korrektur:
Hab's gerade gefunden, im Gegensatz zur Beschreibung in der TIA-Hilfe kann man mit umständlich klicken doch eine DateTime-Variable an SetzePLCDatumUhrzeit übergeben und wird dadurch unabhängig von der Uhrzeit des Panels.

Eine Frage: Welche Uhrzeit muß an SetzePLCDatumUhrzeit übergeben werden - UTC? oder die für die CPU eingestellte Ortszeit/Zeitzone oder die für das Panel eingestellte Ortszeit/Zeitzone, oder verrechnet SetzePLCDatumUhrzeit gar beide Zeitzonen?

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
  1. In der HMI unter Verbindungen ein Panel auf Master einstellen unter dem Parameter "Modus der HMI-Zeitsynchronisation".
  2. .
  3. .
  4. Auf dem Bild einen Button projektieren und unter Ereignisse das Ereignis SetzePLCDatumUhrzeit einrichten. Hier kann gewählt werden wer synchronisiert werden soll.

Wird nun zur Laufzeit eine neue Uhrzeit oder ein Datum eingegeben, kann dieses per Buttonklick an die Steuerung übertragen werden.
Welchen Sinn macht so ein SetzePLCDatumUhrzeit, wenn die PLC-Uhr eh' schon Slave der HMI-Zeitsynchronisation ist?
Zum Uhr stellen müsste dann doch die Uhr des Panels (Master) verstellt werden und die Uhr der PLC (Slave) wird automatisch nachgezogen.

Harald
 
Welchen Sinn macht so ein SetzePLCDatumUhrzeit, wenn die PLC-Uhr eh' schon Slave der HMI-Zeitsynchronisation ist?
Zum Uhr stellen müsste dann doch die Uhr des Panels (Master) verstellt werden und die Uhr der PLC (Slave) wird automatisch nachgezogen.

Harald

Mit dem Objekt Datum/Uhrzeit-Feld kann die Systemzeit verstellt werden ohne das die Runtime von Panel beendet werden muss. Das ist der Sinn.
 
Und genau das war, warum ich das überhaupt brauchte.
Wobei das ganze so oder so vrstl. in einem halben Jahr überflüssig ist, da dann alle Anlagen in's Netz kommen und daher auf unseren AD-Zeitserver syncen.

Und wie hast Du Dein eigentliches Problem gelöst, daß Du kein Datum/Uhrzeit eingeben konntest? Du hast eine neue DateTime-Variable angelegt oder nimmst die Panel-Zeit?
Ich nehme jetzt die Panel-Zeit
 
Zuletzt bearbeitet:
Zurück
Oben