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
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
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
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.
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 (http://www.albinus.tk) findest Du eine
Liste mit allen zur Zeit getesteten Bausteinen.
mfg
Daniel
Hallo Hugo,
kann es sein das bei CoDeSys der Datentyp DATE in Sekunden ist ab welchem Jahr beginnt dieser (1.1.1990?).
mfg
Daniel
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
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
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?
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?
ist das siemens datum dann überhaupt 32 bius oder nur 16 bit?
ist es signed oder unsigned?
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
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
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
Hallo Forum
Besten Dank nochmal für die schnelle Hilfe
Gruß Bernd
Hello forum,
I want to use Your WORK_WEEK Step7 block in my program. I am testing it now in PLCSIM and I thing there is a fault. When I set for example 4.1.2010 block show 53 week, but correctly it is 1 week. And this faut continues whole year 2010 and next years...
under codesys we get the correct work week 1 for 4. jan. 2010
wewill check our step7 implementation for this error
OK Danke sehr ;D
hello Stanley,
sorry there are two errors in the code i hope you have simatic scl.
take a look at the attachment its the new code. It works!
thank you!
regards Daniel
[gelöscht durch Administrator]
Hello dalbi, a have tested your new code and it seems to be good. Thank You.
Regards Stanley