Berechnung der Kalenderwoche

Begonnen von Bernd, 05. Mai 2007, 23:03:34

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Bernd

Hallo Forum,

Benötige eine Funktion zur Berechnung der Kalenderwoche nach Eingabe eines Datums.
Hat jemand so eine Funktion schon mal geschrieben und könnte mir den Quellcode zur Verfügung stellen?

Gruß Bernd

hugo

ja schau dir die funktion workweek in der oscat.lib an die lib ist open source, du kannst sie oeffnen wie ein normales projekt und alles ansehen

Bernd

Hallo Hugo,

besten Dank für Deine schnelle Hilfe.
Leider funktioniert der Baustein "work week" bei mir nicht (S7-300).
Auch die anderen Bausteine wie z.B. "day_of_year" , set_date funktionieren nicht.
Hab die Bausteine soeben mit dem Simulator getestet.
Beim Baustein "set_date" kommt beim Anlegen des heutigen Datums 06.05.2007 am Ausgang 13.06.2026
heraus. Beim Aufruf des Bausteins "day_of_year" geht die CPU sofort in Stop. Das gleiche passiert bei "work week"
Beim Baustein "year" steht am Ausgang immer 1970 an, egal was für ein Datum ich eintrage.

Wurden die Bausteine schon auf Funktion getestet oder mache ich hier grad einen Fehler ?

Gruß Bernd

hugo

die bausteine sind dfefinitv alle auf wago und oder beckhoff systemen getestet.
die üpbersetzung in Step 7 mache ich nicht selber, bin also nicht sicher was dort getestet wurde.
das viele bausteine bei dir nicht funktionieren gehe ich nicht davon aus das es ein fehler ist, es muß also eine andere ursache geben.
vielleicht kann jemand mit siemens erfahrung hier helfen.

dalbi

Hallo Bernd,

die Bausteine habe ich leider noch nicht auf Funktion geprüft,
werde mich Morgen nach der Arbeit aber mal daran machen.

Auf meiner Homepage www.albinus.tk findest Du eine
Liste mit allen zur Zeit getesteten Bausteinen.

mfg
Daniel

dalbi

Hallo Hugo,

kann es sein das bei CoDeSys der Datentyp DATE in Sekunden ist ab welchem Jahr beginnt dieser (1.1.1990?).

mfg
Daniel

hugo

ja der datentyp date ist gemäß iec61131 und auch gemäß unix (die iec verwendet den unix date typ) in sekunden ab dem 1.1.1970


dalbi

Hallo,

aha jetzt ist mir so einiges klar, werde heute nach der Arbeit die Bausteine überarbeiten.

Siemens beginnt ab dem 1.1.1990 die Zählung in Tagen.

mfg
Daniel

hugo

hi dalbi,
das bedeutet das praktisch alle datumsfunktionen nicht unter siemens laufen.
wieso hält sich siemens eigentlich nicht an den standard den sie selber mal mit gemacht haben?

hast du eine lioste was bei siemens alles nicht iec konform ist?

hugo

hi dalbi,
es muessen viele funktionen angepasst werden, sollten wir nicht eine funktionzum umrechnen von sdate (siemens datum) nach idate (iec datum) und umgekehrt machen?
das koennte ich schnell und schmerzlos erledigen.
und eine globale variable s7 enable einbauen die dann entsprechend den code corrigiert.

was denkst du?

hugo

ist das siemens datum dann überhaupt 32 bius oder nur 16 bit?
ist es signed oder unsigned?

dalbi

Hallo Hugo,

das wäre nicht schlecht.

Auszug aus der S7-Hilfe:
DATE (IEC-Datum) | 16 BIT | IEC-Datum in Schritten von 1 Tag
D#1990-1-1 bis D#2168-12-31

soviel zur IEC.

mfg
Daniel


gravieren

Hi Jungs

Anbei zur Info



Der erlaubte Bereich für den Datentyp ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬?DATE_AND_TIMEÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬? ist:


ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã,¢ min.:  DT#1990-1-1-0:0:0.0

ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã,¢ max.: DT#2089-12-31-23:59:59.999



Möglicher Wertebereich BCD-Code
Jahr 1990 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 1999                       -->   90h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 99h     ! ! !
Jahr 2000 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 2089                       -->   00h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 89h     ! ! !


Monat           1 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 12                  -->  01h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 12h
Tag              1 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 31                   -->  01h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 31h
Stunde         00 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 23                  -->  00h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 23h
Minute          00 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 59                  -->  00h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 59h
Sekunde       00 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 59                   -->  00h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 59h
Millisekunde   0 ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 999                  -->  000h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 999h
Wochentag   Sonntag ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" Samstag   -->  1h ÃÆ'ââ,¬Å¡ÃƒÂ¢â,¬Ã¢â,¬Å" 7h


dalbi

Hallo Bernd,

habe die Bausteine jetzt abgeändert und auf Funktion geprüft,

Auf meiner Homepage www.albinus.tk gibt es schon mal vorab die Version mit
den entsprechend angepassten Bausteinen werde diese Woche die Restlichen
Time_Date Bausteine überarbeiten.

Für die Funktion work_week ist zu beachten das die Bausteine day_of_year und year
mit in das Projekt kopiert werden (sonst CPU stop).

mfg
Daniel

Bernd

Hallo Forum

Besten Dank nochmal für die schnelle Hilfe

Gruß Bernd