TIA Bereichszeiger TIA V13.1

Superb

Level-1
Beiträge
28
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag an alle,
irgendwie verstehe ich mein folgendes Problem nicht :
Vorhanden sind ein TP_700 Basic Color, TIA 13.1, S7 312 und Step7 V5.5. TIA für die S7 kann ich aus verschiedenen Gründen nicht verwenden.
Ich möchte die Systemzeit aus dem TP_700 in der S7 312 auswerten. Dafür habe ich im TIA Portal den Bereichszeiger aktiv, Datum/Uhrzeit, die Adresse %DB200.DBW100 und zyklisch lesen.
Alle anderen Schreib- Lesebefehle funktionieren (Variablen etc.) . Jetzt war ich der Meinung, ich könnte die sechs Wörter aus dem TP in der S7 einlesen und weiterverarbeiten. Aber es kommt nichts an.
Was mache ich falsch ???:twisted:
Ich hoffe es kann mir hier jemand helfen ....

mit bestem Dank im voraus und

Gruß aus Koblenz
 
Hallo,

nach meinem Verständnis ist es so: dass die Uhrzeit am Panel mit dem Bereichszeiger Synchronisiert wird. d.h. das Panel hat die gleiche Uhrzeit wie die CPU und nicht anders rum. Natürlich kannst du aber auch über das Panel deine CPUZeit ändern. Da gibt es z.B. die Möglichkeit über ein entsprechendes selbst erstelltes Bild über das Display Uhrzeit und Datum einzugeben und diese in der CPU über diverse Systembausteinen auszuwerten. Dazu findest du hier im Forum viel unter der Suchfunktion.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das TP schreibt seine Systemzeit nur dann einmalig in den Bereichszeiger "Datum/Uhrzeit", wenn es per Steuerungsauftrag 40 oder 41 dazu aufgefordert wird.

Du könntest in einem Skript die Systemzeit des TP in eine DATE_AND_TIME-Variable in der S7-312 schreiben:
Code:
SmartTags("DateTimeVariable") = Now

Willst Du nur bei bestimmten Ereignissen die Uhrzeit zu einer Variable in der S7-312 übertragen oder willst Du die Uhr der S7-312 stellen oder fortlaufend synchronisieren?

Hier eine ganz einfache Variante zum Übertragen der Uhrzeit und Stellen der Uhr einer S7-300 von einem HMI. Ein periodisches Senden der Uhrzeit in die S7-300 kann im Aufgabenplaner des TP organisiert werden.

Beispiele von Siemens
Linksammlung: Uhrzeitsynchronisation - Zeitsynchronisation im Automatisierungsumfeld
Beispielprojekte: Uhrzeitsynchronisation zwischen einem HMI Bediengerät und einer SIMATIC SPS
Beispielprojekte: Wie werden Datum und Uhrzeit zwischen einem Bediengerät und einer S7-300 bzw. S7-400 Steuerung mit WinCC flexible synchronisiert?


@Junge
Die Uhr der S7-312 ist nicht gepuffert und bleibt bei Spannungsausfall stehen. Das TP700 kann Uhrzeitsynchronisation per NTP. Die Synchronisation TP700 zu S7-312 macht Sinn.

Harald
 
Oh, in dem Fall auf jedefall. Ich hatte bisher immer den Fall, dass die Synchronisation über CPU lief. Aber gut zu wissen, dass es auch anders möglich ist :)
 
Guten morgen,
Danke für die Antworten, ich hatte eigentlich gehofft, daß die Zeit ohne Aufwand zyklisch bzw. in einer eingestellten Zeit in die S7 übertragen wird.
Zum Steuerungsauftrag 40 oder 41 habe ich irgendwo etwas gelesen [FB110 o.ä. ]. Auf jeden Fall werde ich es mal weiter probieren.
Das bei Spannungsausfall die Zeit nicht gepuffert wird ist mir bekannt, ist aber nicht weiter schlimm.

Danke und Gruss aus Koblenz :p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

wenn Du Dich ein ganz klein wenig mehr darüber auslassen könntest, was Du eigentlich vorhast, dann könnten wir Dir vielleicht einen Tip geben, wie Du das einfach hinkriegen kannst. Mit Steuerungsaufträgen fachgerecht umgehen ist nicht ganz trivial.

Wie häufig meinst Du mit "zyklisch"?
Wie bereits angedeutet könntest Du einfach im TP700 im Aufgabenplaner einstellen, daß jede Minute oder jede Stunde das simple Skript zum Übertragen der Systemzeit in eine DATE_AND_TIME-Variable der S7-312 aufgerufen wird. In dem Skript könntest Du auch leicht eine weitere Untersetzung (z.B. nur bei jedem 10. Aufruf) programmieren.
Das Skript könntest Du auch bei anderen Ereignissen aufrufen, z.B. bei Wertänderung einer Variable, welche in der S7-312 verändert wird (also quasi auf "Anforderung" durch die S7-312).

Harald
 
Wie bereits angedeutet könntest Du einfach im TP700 im Aufgabenplaner einstellen, daß jede Minute oder jede Stunde das simple Skript zum Übertragen der Systemzeit in eine DATE_AND_TIME-Variable der S7-312 aufgerufen wird. In dem Skript könntest Du auch leicht eine weitere Untersetzung (z.B. nur bei jedem 10. Aufruf) programmieren.
Das Skript könntest Du auch bei anderen Ereignissen aufrufen, z.B. bei Wertänderung einer Variable, welche in der S7-312 verändert wird (also quasi auf "Anforderung" durch die S7-312).

Harald

Sein Basic-Panel wird keine Scripte können :???:
Ich mache das eigentlich immer so, dass die CPU zwar Master ist, die Uhrzeit der CPU aber über ein E/A-Feld in der Visu gestellt wird.
Wusste nicht das es bei der 312 eine Besonderheit bei der Uhrzeit hat, die benutze ich eigentlich nie.
 
Guten morgen,
im Prinzip möchte ich es so erledigen wie @ASTRALAVISTA es ausgeführt hat : Im TP_700 die Systemuhr unter dem Bereichszeiger konfigurieren und als E/A-Feld visualisieren. Kein Problem, dann die Uhrzeit via TP ändern. Jetzt, so meine Gedanken und Hoffnungen, pollt die S7_312 die aktuelle Uhrzeit [und Datum] im konfigurierten %DB200.DBW100. Das wäre es gewesen, ist es aber nicht.
Bin z. Zt. noch am probieren, schaun wir mal.

Danke und

Gruss aus Koblenz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sein Basic-Panel wird keine Scripte können :???:
Vorhanden sind ein TP_700 Basic Color, TIA 13.1, S7 312 und Step7 V5.5.
Oh sh*?x#§!, habe das Wort "Basic" übersehen, habe nur TP700 gelesen. :oops:
Was für ein Basic Panel ist es - KTP700 ? - es gibt meines Wissens gar kein "TP700 Basic"...

Andererseits drückt sich Superb vor jeder konkreten Beantwortung konkreter Nachfragen...
Tu' ich jetzt mal so, als ob er die Uhr der S7-312 synchronisieren will. :cool:


Hmm, bei Basic Panels bekommt man die Panel-Systemzeit nur per Steuerungsauftrag (40) in eine Variable geschrieben.

Dafür gibt es bei Siemens Beispielprojekte mit Programmcode für die S7-300 (die HMI-Panel-Projektierung braucht man nicht außer dem Einrichten der Bereichszeiger):
  • TimeSyn_Project_04 der "FB110_TimeSyn_HMI_to_PLC"
    Das ist ein TIA-Projekt, ich weiß nicht ob man da problemlos den AWL(SCL?)-Quellcode in Step7 V5.5 kopieren/exportieren kann und wie gut der Baustein programmiert ist.
    (In den Siemens-Beispielen sind viele Fehler drin. U.A. merkt bei Siemens anscheinend niemand (noch nichtmal bei "kompletter Überarbeitung"), daß seit Jahren die Beschreibung des Bereichszeigers "Datum/Uhrzeit" Kapitel 3.2.2 falsch ist.)
  • Time_WinCE_flexible_A2 der FB102 "** SYS_CLK_WinCE_V1" ist für Step7 V5.x
    In der 2007er-Version war der Baustein ziemlich unsauber programmiert und hatte glaub ich auch kleine Bugs. In der jetzigen Version von 2008 sieht der Baustein immer noch sehr unsauber aus, Bugs weiß ich jetzt nicht.

Ich hatte mir 2007 für so ein Uhrzeit-stellen HMI-->PLC einen eigenen kurzen Programmcode programmiert.
Den könntest Du nehmen und zusätzlich im ersten OB1-Zyklus und dann z.B. jede Stunde den Wert 40 ins erste Word des Bereichszeigers "Steuerungsauftrag" schreiben - fertig ist die simple Uhrzeit-Synchronisation, die nicht schlechter funktioniert als die Siemens-Beispiele (vorausgesetzt, Du nutzt nicht noch weitere Steuerungsaufträge).

Ich habe meine simple Uhrzeit-Sync mal um den Steuerungsauftrag 40 erweitert und hier angehängt. So funktioniert es dann auch mit Basic Panels.

Bereichszeiger in WinCC flexible/TIA WinCC Basic/Comfort/Adv einrichten:
Code:
Datum/Uhrzeit     | DB 101 DBW 0  | 6 Worte
Steuerungsauftrag | DB 102 DBW 12 | 4 Worte | Zyklisch fortlaufend | 1s
In der SPS:
Code:
//Network*** Get a Date_and_Time from HMI and set PLC-clock
      U     "CYCLE1"                    //M0.2 first cycle of OB1
      SPB   ISCL                        //initialize receive-date/time!

      L     DW#16#90010100              //DT#90-1-1-0(:0:0.000)
      L     DB101.DBD    0              //"OP->PLC".AreaPointerDT.DateTimeSET Byte 0-3
      ==D   
      SPB   ESCL                        //no date received
      L     0
      ==D   
      SPB   ISCL                        //date not valid!
      L     DB101.DBD    4              //"OP->PLC".AreaPointerDT.DateTimeSET Byte 4-7
      ==D   
      SPB   ISCL                        //time not valid!
      L     B#16#2                      // :0:0.000 + Monday
      ==D   
      SPB   ESCL                        //no time received

//a date and time is received from HMI, use it for something
//("OP->PLC".AreaPointerDT.DateTimeSET is available/valid for 1 cycle)

//e.g. set the PLC-clock
      CALL  "SET_CLK"                   //SFC0
       PDT    :="OP->PLC".AreaPointerDT.DateTimeSET
       RET_VAL:=#tmpINT                 //TEMP: INT

//initialize receive-date/time with DT#90-1-1-0:0:0.000
ISCL: L     DW#16#90010100              //DT#90-1-1-0(:0:0.000)
      T     DB101.DBD    0              //"OP->PLC".AreaPointerDT.DateTimeSET Byte 0-3
      L     B#16#2                      // :0:0.000 + Monday
      T     DB101.DBD    4              //"OP->PLC".AreaPointerDT.DateTimeSET Byte 4-7
ESCL: SET   

//Network*** request the system time of the HMI by controller job 40
//generate the sync interval
      UN    M      1.0
      L     S5T#1H                      //every 1 hour
      SE    T      1
      U     T      1
      =     M      1.0

//start the controller job 40 - request system date/time from HMI
//(the HMI write 0 in JobMailbox.Job_No when it recognizes the job)
      O     M      1.0
      O     "CYCLE1"
      SPBN  EJ40

      L     0
      T     "PLC->OP".AreaPointerJobMailbox.Parameter_1
      T     "PLC->OP".AreaPointerJobMailbox.Parameter_2
      T     "PLC->OP".AreaPointerJobMailbox.Parameter_3
      L     40                          //Job_No controller job 40
      T     "PLC->OP".AreaPointerJobMailbox.Job_No

EJ40: SET
Im Anhang der OB1, DB101 und DB102 als Step7-V5.x-Projekt.

Achtung: Es dürfen nicht mehrere HMI die Bereichszeiger "Steuerungsauftrag" und "Datum/Uhrzeit" auf den selben PLC-Adressen haben (also 2 Panele mit identischer Projektierung darf nicht). Sonst wird es lustig.

Harald
 

Anhänge

  • TimeSync_HMI2PLC_Job40_simple.zip
    35,1 KB · Aufrufe: 21
Guten morgen an alle,
Na ja, ich drück mich ja nicht unbedingt vor einer konkreten Beantwortung. Habe allerdings einen Fehler begangen : korrekt muß es heißen KTP 700 Basic-DP 6AV2 123-2GA03-0AX0.
Da ich eigentlich aus der Rockwell-Welt komme und die S7 mittelmässig beherrsche habe ich mir etwas falsche Vorstellungen gemacht, denke ich. Wie dem auch sei, ich werde morgen das Problem noch einmal angehen und ich denke, dank Euerer Hilfe, auch irgendwie gelöst bekommen.
Halte Euch auf dem Laufenden.

Danke und Gruß aus Koblenz
 
Zurück
Oben