-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - Marvelous

#1
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
16. August 2018, 18:43:42
Vielen Dank jetzt läuft es korrekt habe DATE_ADD angepasst.
Zitat von: mattsches in 15. August 2018, 20:04:56
Logisch, das kann nicht gehen, wenn bei SET_DATE der Monat schon passt aber dann der Tag bezogen auf das Jahr noch draufaddiert wird. Offenbar ist der Code von DATE_ADD in der Lib für CODESYS V3.5 ein anderer als in der für V2.3.  Steht am Ende des Bausteins eine Versions- und Datumsangabe? Bei der Version für 2.3 ist das 1.8/22.03.2011.

Am besten änderst du mal in der Lib den DATE_ADD wie folgt:


DATE_ADD := UDINT_TO_DATE(DATE_TO_UDINT(IDATE) + INT_TO_UDINT(D + W * 7) * UDINT#86400);
yr := Y + YEAR_OF_DATE(DATE_ADD);
mo := M + MONTH_OF_DATE(DATE_ADD);
dm := DAY_OF_MONTH(DATE_ADD);
WHILE mo > 12 DO
mo := mo - 12;
yr := yr + 1;
END_WHILE;
WHILE mo < 1 DO
mo := mo + 12;
yr := yr - 1;
END_WHILE;
DATE_ADD := SET_DATE(yr, mo, dm);



Das ist die Version, wie sie in der Lib für V2.3 enthalten ist und bei mir problemlos funktioniert. Wenn das dann tut, sollten wir peewit Bescheid geben, damit die Bibliothek korriert wird.
#2
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
15. August 2018, 18:06:06
Bei
dResult := DATE_ADD(d#2018-04-01, 0, 0, 0, 0);
kommt als Ergebnis
dResult := D#2018-6-30

Bis Zeile 61 in meinem Screenshot müsste alles passen.

DAY_OF_YEAR in Zeile 62 gibt 91 aus.
Sodass bei SET_DATE(2018,4,91) gegeben ist...

[gelöscht durch Administrator]
#3
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
13. August 2018, 17:59:59
Ich finde es auch sehr merkwürdig.

bResult ist True.

Und bei d#2018-04-01 wird mir kein Feiertag mehr angezeigt.
last_activ und ostern wird in dem Holiday Baustein aber mit D#2018-04-01 beschrieben.

#4
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
12. August 2018, 13:24:51
Ich habe eine Bedingung beim Holiday_Data  damit nicht in jeden Zyklus beschrieben wird.

Habe nun mal test weise Holiday aufgerufen und mit dem fix Datum 30.06.18 beschrieben ansonsten wie in CALENDAR_CALC.
Da kann man auch ganz gut sehen, dass "last_active" und "ostern" verschieden Daten haben..



[gelöscht durch Administrator]
#5
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
11. August 2018, 10:02:51
Danke erstmal für deine Mühen.
Ich habe Holidays Global Deklariert und aus Übersichtsgründen im Laufzeitprogramm beschrieben.
Sollte grundsätzlich jedoch keine Rolle spielen oder?


VAR_GLOBAL
DateTime: stDateTime;
PULS : stZeit;
TAKT : stZeit;
Kalendar: OSCAT_BASIC.CALENDAR;
Calc_Kalender : OSCAT_BASIC.CALENDAR_CALC;
plrNight : R_TRIG;
plfNight : F_TRIG;
Holidays : ARRAY[0..29] OF OSCAT_BASIC.HOLIDAY_DATA;

END_VAR


FOR iDay := 0 TO 29 DO
Holidays[iDay].name := '';
Holidays[iDay].DAY := 0;
Holidays[iDay].month := 0;
Holidays[iDay].use := 0;
END_FOR


iDay := 0;
Holidays[iDay].name := 'Neujahr';
Holidays[iDay].DAY := 1;
Holidays[iDay].month := 1;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Heilig Drei Könige';
Holidays[iDay].day := 6;
Holidays[iDay].month := 1;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Karfreitag';
Holidays[iDay].day := -2;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Ostersonntag';
Holidays[iDay].day := 0;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Ostermontag';
Holidays[iDay].day := 1;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Tag der Arbeit';
Holidays[iDay].day := 1;
Holidays[iDay].month := 5;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Christi Himmelfahrt';
Holidays[iDay].day := 39;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Pfingstsonntag';
Holidays[iDay].day := 49;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Pfingstmontag';
Holidays[iDay].day := 50;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Fronleichnam';
Holidays[iDay].day := 60;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Maria Himmelfahrt';
Holidays[iDay].day := 15;
Holidays[iDay].month := 8;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Tag der Deutschen Einheit';
Holidays[iDay].day := 3;
Holidays[iDay].month := 10;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Reformationstag';
Holidays[iDay].day := 31;
Holidays[iDay].month := 10;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Allerheiligen';
Holidays[iDay].day := 1;
Holidays[iDay].month := 11;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Heiligabend';
Holidays[iDay].day := 24;
Holidays[iDay].month := 12;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := '1. Weihnachtstag';
Holidays[iDay].day := 25;
Holidays[iDay].month := 12;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := '2. Weihnachtstag';
Holidays[iDay].day := 26;
Holidays[iDay].month := 12;
Holidays[iDay].use := 1;


[gelöscht durch Administrator]
#6
oscat.lib fuer CoDeSys 3 / Re: Holiday Array
09. August 2018, 18:32:29
Mahlzeit zusammen,

ich schreibe mal hier in diesem Thema in der Hoffnung, dass mir jemand weiter helfen kann.

Ich habe folgendes Problem, gestern am 08.08.2018 wurde mir der Feiertag Christi Himmelfahrt an meine Steuerung angezeigt.
Da Christi Himmelfahrt 39 Tage nach Ostersonntag ist habe ich test weise den 30.06.18 mal als fixes Datum eingegeben.
Und siehe da... es wird mir der Ostersonntag angezeigt.

Die Funktion Easter zeigt mir jedoch den 1.4.18 an.

Kann mir jemand weiter helfen?

Vielen Dank im Voraus

iDay := 0;
Holidays[iDay].name := 'Neujahr';
Holidays[iDay].DAY := 1;
Holidays[iDay].month := 1;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Heilig Drei Könige';
Holidays[iDay].day := 6;
Holidays[iDay].month := 1;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Karfreitag';
Holidays[iDay].day := -2;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;
iDay := iDay + 1;
Holidays[iDay].name := 'Ostersonntag';
Holidays[iDay].day := 0;
Holidays[iDay].month := 0;
Holidays[iDay].use := 1;

 

[gelöscht durch Administrator]