DATE Variable einzeln auslesen

Bambam

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

ich möchte gern aus meiner DATE-Variable das Jahr, den Monat und den Tag extrahieren. Bei meiner Suche im Forum habe ich ein paar gute Ansätze gefunden. Jedoch weiß ich nicht wie ich das in ST programmieren kann. Ich habe zum Beispiel gelesen, dass man eine DATE-Variable in eine DATE_AND_TIME-Variable konvertieren muss und man diese anschließend Bitweise auslesen kann.

http://www.spsforum.de/showthread.php?t=26933&highlight=DATE

Wenn das so in TwinCat ST geht, würde ich mich freuen, wenn mir da jemand auf die Sprünge Helfen kann bzw. mir erklären kann, wie man eine Variable Bitweise ausliest.

Der Sinn des ganzen ist es das Jahr, den Monat und den Tag einzeln anderen Variablen zu zuordnen mit denen ich dann den Wochentag bestimme (hierfür habe ich mir einen Kalender programmiert).

Vielen Dank im Voraus für eure Hilfe.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie bekommst du deine Zeit? In was für einem Datentyp bekommst du die? Hintergrund ist folgender: Es gibt den Datentyp "TimeStruct" in diesem sind Zeit, Datum, Wochentag, etc. bereits enthalten. Wenn du diesen nutzen könntest, könntest du dir die ganze Umrechnerei sparen.
 
Meine Zeite bekomme ich von dem FB RTC. Mit ihm habe ich sozusagen eine Software-Uhr implementiert (die Uhrzeit wird mir später noch ein DCF77 Empfänger liefern).
Der Ausgang dieses FBs liefert mir eine Variable vom Typ DATE_AND_TIME . Aus dieser habe ich mir dann mein Date gefischt.

Code:
dAktuellDatum := DT_TO_DATE (dtAktuellDatumUhrzeit);

Der Datentyp von DATE wird intern wie ein DWORD behandelt.
 
Zuletzt bearbeitet:
Es gibt die Funktion DT_TO_SYSTEMTIME. Diese konvertiert deine Variable in ein TimeStruct. Aus dieser neuen Variablen kannst du dann auf die verschiedenen Sachen zugreifen.

Kannst ja im Infosys von Beckhoff mal nach "DT_TO_SYSTEMTIME" und "TIMESTRUCT" suchen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm ... dann hatte ich die Lösung schon und war auf dem richtigen Weg. Ich hatte mich irritieren lassen, weil sich bei der Eingabe das "DT_TO_TIMESTRUCT" nicht in blaugefärbt hatte und war der Meinung, dass diese Konvertierung nicht geht, weil mir evtl. eine Bibliothek fehlt.
Hätte ich mal etwas mehr darüber nachgedacht wäre mir schon viel ehr aufgefallen, dass es sich nicht blau färbt, weil es eine Struktur ist. Hab ich mich mal wieder ganz schön dusselig angestellt.
icon11.gif


So na dann weiß ich ja jetzt wie ich es anstellen muss. Vielen Dank für deine schnelle Hilfe.
 
VORSICHT: Die Funktion heißt "DT_TO_SYSTEMTIME".

Diese muss blau eingefärbt werden. Um diese nutzen zu können musst du die Lib TcUtilities.lib einbinden.
 
Gott ich bin schon völlig fertig mit den Nerven ...

Code:
varTest := DT_TO_SYSTEMTIME (dtAktuellDatumUhrzeit);
varTest2 :=varTest.wYear;

So funktioniert es wenn ich es Simuliere, lade ich es auf die SPS funktioniert es nicht. Und "DT_TO_SYSTEMTIME" färbt sich auch nicht blau.
Ursache: Die Bibliothek wird nicht unterstützt. -.- Es gehen nur *.lb6.

Ist doch zum Mäuse melken. Immer wieder habe ich das Problem, dass ich durch so etwas eingeschränkt werde.

Gibt es noch andere Möglichkeiten?

Ich brauch wohl ne Pause. Es geht doch ... hab es eben noch einmal auf die SPS geladen und siehe da es funktioniert. Obwohl "DT_TO_SYSTEMTIME" sich nicht blau gefärbt hat.
 
Zuletzt bearbeitet:
Gut Ok dann hab ich es ja jetzt. "TcPlcUtilitiesBC.lb6" habe ich schon zu Beginn des Projekts geladen gehabt, deswegen hat es auch funktioniert.

Besten Dank für deine Hilfe.
 
Zurück
Oben