Autor Thema: Berechnung der Kalenderwoche  (Gelesen 25446 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Bernd

  • Gast
Berechnung der Kalenderwoche
« am: 05. Mai 2007, 23:03:34 »
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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #1 am: 05. Mai 2007, 23:56:07 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #2 am: 06. Mai 2007, 20:08:15 »
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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #3 am: 06. Mai 2007, 22:22:25 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #4 am: 07. Mai 2007, 00:47:11 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #5 am: 07. Mai 2007, 01:35:27 »
Hallo Hugo,

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

mfg
Daniel

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #6 am: 07. Mai 2007, 12:12:03 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #7 am: 07. Mai 2007, 12:47:33 »
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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #8 am: 07. Mai 2007, 13:01:26 »
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?

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #9 am: 07. Mai 2007, 13:04:49 »
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?

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #10 am: 07. Mai 2007, 13:06:17 »
ist das siemens datum dann überhaupt 32 bius oder nur 16 bit?
ist es signed oder unsigned?

dalbi

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #11 am: 07. Mai 2007, 14:19:11 »
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


Offline gravieren

  • Entwickler
  • *****
  • Beiträge: 578
    • Profil anzeigen
Re: Berechnung der Kalenderwoche
« Antwort #12 am: 07. Mai 2007, 20:53:07 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #13 am: 08. Mai 2007, 00:26:12 »
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

  • Gast
Re: Berechnung der Kalenderwoche
« Antwort #14 am: 08. Mai 2007, 18:44:02 »
Hallo Forum

Besten Dank nochmal für die schnelle Hilfe

Gruß Bernd