TIA CPU-Zeit auslesen und an Panel übergeben

Manuel123

Level-2
Beiträge
33
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich habe leider kein passendes Thema zu meinem Problem gefunden.

Zu meiner Herausforderung:
Ich habe eine VIPA 015PN und ein Siemens KP400 Basic Color.
Die Programmierung erfolgt über TIA 13.

Ich möchte nur über ein Datum/Uhrzeit-Feld die aktuelle Uhrzeit auf meinem Panal wiedergeben.
Da ich kein LAN-Zugriff habe fällt NTP flach.

Alles in allem eigentlich nichts Großes dachte ich jedenfalls.

Mein Problem ist das ich den Baustein RD_LOC_T nicht finde. Ich gehe davon aus das er aufgrund der konfigurierten VIPA 015 bzw. Siemens 315-2 PN/DP nicht existiert. Oder hat sonst jemand eine Idee warum ich den Baustein nirgends finde oder weiß jemand wie ich die Zeit gelesen bekomme?

Die Baugruppenzeit stimmt mit meiner PG/PC Zeit überein?!

Vielen Dank vorab!
 
meinst du nicht ehr rd_sys_t?
der sollte sich unter erweiterte Anweisungen/Datum Uhrzeit befinden.
Code:
      CALL  RD_SYS_T
         date_type:=Date_And_Time
         RET_VAL :=#retval
         OUT     :="System_OP1".AG.datetime

dt hast du aber auch schon im ob1 in der Deklaration. dort kannst du das ja mit blkmove umkopieren.
zum synchrronisieren cpu-zeit kp400 kannst der den bereichszeiger Datum_uhrzeit_steuerrung verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
RD_LOC_T gibt es nur für S7-1200/1500

Bei S7-300/400 bzw. Deiner VIPA, die sich als eine S7-300 ausgibt, müsstest Du RD_SYS_T verwenden oder #OB1_DATE_TIME lesen. Und anschließend mit LOC_TIME oder BT_LT die Lokalzeit errechnen, falls Deine CPU-Uhr in einer anderen Zeit läuft als Du anzeigen willst.

Empfehlung: laß die CPU-Uhr in Winterzeit laufen und gib die ggf. zu Sommerzeit korrigierte Lokalzeit zum Panel mit diesem Baustein BT_LT_3
Der Baustein BT_LT_3 ruft den FC AD_DT_TM auf - bei TIA ersetze den durch T_ADD.

Ein typischer Aufruf des FC BT_LT_3 im OB1:
Code:
//copy current local date and time to OP-areapointer
      CALL  "BT_LT_3"
       BT    :=#OB1_DATE_TIME
       LT    :="PLC->OP".AreaPointerDtPLC.DateTimePLC //P#DB102.DBX0.0 BYTE 8
       SUMMER:="Summertime"                           //M1.7

Harald
 
@Volker vielen Dank für deine Antwort jedoch kenne ich mich mit den Bereichszeiger nicht wirklich aus.
Ich habe den DT vom OB1 per move-Befehl in eine Variable in einen DB geschoben und habe diese Variable in WinCC als Variale für die Zeit eingestellt.
Raus kommt der 01.01.2014 19:09:00. Meine Baugruppenzeit zeigt mir aber die tatsächliche Zeit an?!

Warum kann man nicht einfach die CPU-Zeit über das PG einstellen, an eine HMI-Variable mit dem Datentyp DT übergeben und gut ist?

*** Warum einfach wenn man auch Siemens nehmen kann*** :sad:
 
das sollte funktionieren.
beobachte mal die Bytes einzeln in einer variablentabelle. die werte sind in hex.

Reihenfolge
jahr
Monat
tag
stunde
Minute
sekunde
MS
MS,wochentag

wenn du den bereichszeiger aktivierst synchchronisiert sich die hmi-zeit im eingestellten Intervall mit der cpu-zeit
bei Adresse nimmst du die startadresse die du auch am blkmove verwendet hast.
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    45,9 KB · Aufrufe: 64
@ Volker, danke hat funkioniert!
Erst habe ich falsche Werte pro Byte raus bekommen. Nach erneutem laden hat es das gepasst.
Problem wird aber vermutlich sein das nach einem Not-Aus der Anlage die Zeit wieder neu geladen werden muss da diese im Moment vom PG gezogen wird.
Oder wird diese bei einem Stromausfall gepuffert?
 
Die Uhr der CPU sollte mind. 30 Tage ohne Spannungsversorgung gepuffert werden - sprich: weiterlaufen.
Das KP400 verliert bei Spannungsausfall die Uhrzeit. Doch diese Uhrzeit wolltest Du ja gar nicht anzeigen, bzw. sie kann äußerst einfach mittels Bereichszeiger mit der Uhr der CPU synchronisiert werden.

Ein Not-Aus Deiner Anlage schaltet die SPS komplett aus? :confused:

Harald
 
Zurück
Oben