Systemuhrzeit ausgeben in ms

emsbootsmann

Level-1
Beiträge
25
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
1.
ich muss für einen Datenlogger Daten in einem Array schreiben und jeden Datensatz mit einer exakten Uhrzeit mit ms angegeben.
Ich schreibe ca. alle 2ms einen Datensatz mit der 750-880.Laut Standard Lib wird die Zeit nur in DT#2011-11-08 12:29:00 ausgegeben.
Kennt jemand eine Lösung?
2.
ich schreibe die Daten in eine CSV Datei.Jedoch kann ich nur 32765 Byte groß die Datei erstellen,da er mir das sonst anmeckert.
Was muss ich einstellen?

Dank im vorraus
 
Ich Habe eine DCF77 Uhr an meiner SPS und nutze den DCF Programmbaustein aus der Oscar lib ( um das dcf Signal auszuwerten.)
dieser gibt mir uA auch die zeit in ms aus.
Es giebt die Möglichkeit den Baustein mit der normalen CPU Zeit zu füttern (falls die DCF Uhr keinen empfang hat würde darauf zurückgegriffen werden)
daher würde ich sagen ist der Betrieb auch komplett ohne DCF Empfänger möglich.
...wäre jetzt die Möglichkeit die mir einfällt....
 
Bin eigentlich nur mit S7 unterwegs,aber zu
1. Kannst du dein DT#2011-11-08 12:29:00 trennen zu einmal Date und einmal Time?
Dann müsste in Time die ms enthalten sein.
2. kann ich leider nicht helfen.
 
1. Kannst du dein DT#2011-11-08 12:29:00 trennen zu einmal Date und einmal Time?
Dann müsste in Time die ms enthalten sein.

Dies stimmt nicht ganz. Gemäss dem Buch "SPS-Programmierung mit IEC 61131-3" wird die dt mit hundertstel-Sekunden aufgelöst...
Bei Beckhoff steht da: "Datum und Tageszeit. Die kleinste Zeiteinheit ist eine Sekunde. Der Datentyp wird intern wie DWORD behandelt.

"
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
gloeru schrieb:
Dies stimmt nicht ganz. Gemäss dem Buch "SPS-Programmierung mit IEC 61131-3" wird die dt mit hundertstel-Sekunden aufgelöst...
Stimmt immer noch nicht ganz;)
DATE_AND_TIME (DT) is ja nur ein DWORD da kommen stattliche 49 Tage zusammen - bissel wenig. DT = Sekunden seit 1.1.1970 (IEC61131-3 :confused:)
Wobei der Datentype TIME ein DWORD mit der Auflösung millisekunden bedeutet. Bzw. TOD (Time of day) die Tageszeit in Millisekunden seit 00:00:00:000 angibt. (x*86 400 000 = 00:00:00:000 Uhr)

Zu deinem Problem, manche Zielsysteme unterstützen einen Datentype z.Bsp. Systime der die RTC in Ms ausgibt das wäre dann aber ein ULINT (LWORD - 64 bit). Müsstest du mal prüfen ob dein System dies unterstüzt. Dann wird es auch min. eine Lib geben mit der die auslesen kannst. (z.Bsp. bei CoDeSysV3 - SysTimeRtc.SysTimeRtcHighResGet) Ansonsten musst du dich mit DT begnügen, und die ms selbst dazu tun. Ich frage mich nur was du in deinen Datenlogger schreiben möchtest bzw. wie lange. Alleine der Zeitstempel (STRING mit 23 Bytes ohne ms) würde pro Sekunde (alle 2ms) schon mal 11500 Bytes fressen.
 
Zurück
Oben