Step 7 Unix Timestamp - ich kriegs nicht hin

Lace

Level-1
Beiträge
10
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich versuche gerade mit Hilfe des oscat Bausteins DT_DINT eine Unix Timestamp zu bekommen. Leider geht die CPU immer auf STOP, wenn ich das tue.

Ich habe die notwendigen Bausteine auf die S7-312C geladen: DT_DINT aus oscat, DT_DATE und DT_TOD aus der IEC Baustein-Bibliothek.

Ich habe in STL eine Function mit den beiden temporären Variablen #result (INT) und #dtTemp (DATE_AND_TIME) erstellt.

Der Code in der Funktion sieht so aus:

CALL "READ_CLK"
RET_VAL:=#result
CDT :=#dtTemp

CALL "DT_DINT"
DATI :=#dtTemp
RET_VAL:=DB70.DBD9

Leider geht immer die "SF"-Lampe an der CPU an, wenn der CALL "DT_INT" ausgeführt wird.

Ich stehe im Moment auf dem Schlauch, ich weiss nicht was ich falsch mache.

Für Eure Hilfe wäre ich dankbar,

Carsten
 
Zuletzt bearbeitet:
Am Besten schaust du in den Diagnosepuffer der CPU, was für ein Fehler dort vorliegt.
Wenn du damit selber nicht weiterkommst, dann kannst du den Diagnosepufferinhalt in einer Textdatei speichern. Den Inhalt stellst du dann hier ins Forum und wir gucken dann weiter.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mal vermuten, daß Du in der CPU keinen DB70 hast, oder der ist kürzer als 13 Bytes.

Weiteres: warum gibst Du bei dem "DT_DINT" RET_VAL:=DB70.DBD9 an, also eine ungerade Adresse DBD9? Das ist sehr unüblich, weil auf ungeraden Adressen in DB kann man keine DINT-Variablen deklarieren. Sollte da vielleicht eigentlich ...DBD8 stehen?

Harald
 
Zurück
Oben