Grundlagen: Arrays - Zeitstempel in Felder zerlegen

ThomasKl

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

mir wurde gesagt, dass ich einen Zeitstempel in Arrays verteilen soll.

Das heißt, dass ich den Zeitstempel "DT" zerlege und für jeden Bereich ein Array (Feld) nutze. Ein Feld ist vom Datentyp WORD. Weiter wurde mir gesagt, dass ich für Minuten und Sekunden zusammen ein WORD brauche, Für Stunden ein WORD, für Tage ein WORD und für die Jahresangabe ein WORD. Für den Datentyp WORD brauche ich 16 Bit.

Und damit bin ich mit meinem Wissen leider schon am Ende. Aus einem Baustein bekomme ich diesen Zeitstempel. Was mache ich wie damit? Bisher habe ich immer mit FUP gearbeitet. Ich denke aber mal, dass ST da besser ist, oder?

Ich hoffe meine Angaben sind ausreichend um die Frage zu verstehen!
 
Zuletzt bearbeitet:
Kann mir keiner helfen oder fehlen irgendwelche Angaben?

Wie kann ich den Zeitstempel auf die Felder aufteilen? Also wie kann ich den Zeitstempel "zerlegen"?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist alles sehr verwirrend was du schreibst.

Ich vermute aber mal, du möchtest gerne aus einer Variable vom Datentyp DATE_AND_TIME oder in Kurzform DT die Einzelelemente, also Jahr, Monat, Tag, Stunde, Minute und Sekunde als Einzelvariablen haben.
Das hat aber weder etwas mit Arrays noch mit Datentyp WORD zu tun.

Oftmals werden solche elementaren Funktionen in einer Bibliothek vom Steuerungshersteller (den du nicht genannt hast) mitgeliefert.
Alternativ hat enthält die Oscat-Bibliothek Funktionen die das machen was du willst. Entweder du übernimmst diese in dein Programm, oder guckst dir ab wie die das dort machen.

http://www.oscat.de
 
Vielen Dank Thomas_v2.1!

Habe bei WAGO nichts dazu gefunden. Du meinst sicher die Oscat_basic_333.lib, oder? Dort gibt es unter anderem die Umwandlung "HOUR_OF_DT". Für Minuten und Sekunden auch. Jahr und Monat habe ich nichts zu DT gefunden. Klingt schon mal sehr gut. Aaaaber...:

Ich möchte die Zeit auf einem Panel mit der Zeit von der SPS abgleichen. Der Support des Panels hat mir gesagt, dass ich die Zeit der SPS wortweise wie oben genannt in Arrays ablegen soll, damit sie dann so aufs Panel übertragen werden kann. Deshalb beschäftige ich mich mit diesem Thema. Außerdem ist die Bibliothek mit 600kb recht groß. Ist es denn so kompliziert das selber zu machen?
 
Darum schrub ich ja, dass du dir auch die Funktion der entsprechenden Bausteine in der Oscat Bibliothek ansehen kannst, und dann daraus deinen eigenen Baustein erstellen kannst der genau das macht was du willst.

Ein DT setzt sich aus einer Variable DATE und einer anderen TIME_OF_DAY zusammen. Das Extrahieren der Elemente aus TIME_OF_DAY ist noch relativ einfach, da dieses die Anzahl der Sekunden seit 0:00:00 Uhr ist. Du kannst in den Oscat Bausteinen auch sehen dass du dort mit Division/Modulo-Rechnungen auskommst.

Beim Datums-Anteil wird es etwas schwieriger. Die Funktionen sind aber alle in der Oscat-Lib vorhanden. Du kannst nach Einbinden der Bibliothek auch unbenutzer Bausteine von der Verwendung ausschließen, dann hast du nur die Bausteine die du benötigst in deiner Steuerung.

Was hast du denn für ein Panel? Das hört sich ja alles sehr seltsam an.
 
Habe das vor Ewigkeiten mal gemacht da ich Zeit und Datum als String brauchte um in eine CSV zu schreiben. Habe also alle Elemente in einen Einzelnen String geschrieben. Der Aufwand waren nur ein paar Zeilen. Wenn du das nutzen kannst stelle ich dir das gerne zur Verfügung. Dann müsstest du das nur ggf etwas anpassen.
 
Zurück
Oben