-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - Duerap

#1
Vielen Dank für deine rasche Antwort:

Anbei der Daten Type Date_And_Time von der Siemens Hilfe:

Datentyp   Länge (Bit)   Format
DATE_AND_TIME   64   Jahr-Monat-Tag-h:min:s:ms
oder       
DT      Beispiel für das Format
DT#1995-02-02-08:30:01.999
Der Datentyp Date_And_Time wird im BCD-Format gespeichert:
Bytes    Inhalt   Bereich
0   Jahr   1990 ... 2089
1   Monat   01 ... 12
2   Tag   1 ... 31
3   Stunde   0 ... 23
4   Minute   0 ... 59
5   Sekunde   0 ... 59
6   2 MSD von ms   00 ... 99
7 (4 MSB)   LSD von ms   0 ... 9
7 (4 LSB)   Wochentag   1 ... 7      (1 = Sonntag)

Darstellung der Bytes 6 und 7:

MSD: Most Significant Decade
LSD: Least Significant Decade

Also Date_and_Time beinhaltet den ms Wert schon (siehe Byte 6 und 7). Habe den FC etwas angepasst und nun funktioniert es soweit, kann mir aber nicht erklären warum dies so ist.
Update: Soweit ich es verstand habe ist es dem Block DT_DINT geschuldet. Dieser rechnet die "Date and Time" in einen Sekundenwert um. Danach kommt die DST und Lokalzeit Offset Manipulation und dann wird zurück gerechnet (Sekunden in Date and Time). Dadurch gehen die Millisekunden verloren.


A7d1: NOP   0
      L     LW     8
      SRW   4
      SLD   16
      L     LW    16
      SLW   12
      OD   
      SRD   12
      T     LW    16

      L     LD    10
      L     P##RET_VAL
      LAR1 
      TAK   
      L     W [AR1,P#0.0]
      T     LW    20
      TAK   
      AUF   DB [LW 20]
      L     D [AR1,P#2.0]
      LAR1 
      TAK   
      T     D [AR1,P#0.0]
      L     LD    14
      T     D [AR1,P#4.0]
      CLR   
      U     L     18.1
      SAVE 
      BE   


Mit der Abänderung in dem kompilierten AWL Code kopiere ich nun den Millisekundenwert von der UTC in die Lokale Zeit dazu. Nun sollte alles funktionieren. Ob dies ebenso in der SCL Quelle möglich ist kann ich nicht sagen.
#2
oscat.lib fuer Step 7 / Bug: UTC_TO_LTIME (FC403)
18. Januar 2017, 11:07:19
Hallo OSCAT Community,

Hab aus der OSCAT 3.32 Bibliothek für STEP 7 den UTC_TO_LTIME Block in Verwendung, dabei hab ich einen Fehler in der Funktion entdeckt.
Der ms- Zeitwert wird in der Lokalzeit verworfen. Somit ist dieser beim RET_VAL Ausgang immer 0.