Holiday Array

Begonnen von thomas223, 16. November 2011, 15:41:44

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 13 Gäste betrachten dieses Thema.

thomas223

Hallo erstmal!

Ich bin Neeu hier und versuche zurzeit eine Wochenschaltuhr in CoDeSys zu Programmieren!
Dafür ist die Basic Lib sehr hilfreich!
Doch mit der Holliday Funktion habe ich so miene anfänger problemchen, denn ich bekomme es einfach nicht hin den Array zu  Deklarieren!??
Oder ist dieser schon vor deklariert (z.B. als Vareable) zu finden???


Thomas

peewit

das holiday array musst du selber mit daten füllen

schau mal hier !

http://www.oscat.de/community/index.php/topic,1605.msg8386.html#msg8386

beispieldaten findest du in der oscat dokumenation

thomas223

Ich weiß einfach nicht wie ich. Die Daten in das Array bekomme! Es hört sich so an als wurde man einfach eine Tabelle füllen? Oder muss ich jedes Array Fragment einzeln beschreiben?

peewit

ich empfehle dir den link anzuklicken, und dir das sample.png bild anzusehen
dort sieht man ganz klar bei der variablendeklaration wie das geht....

thomas223


Zum einen AHA!!!

Aber zum anderen entteuschung!!!



[gelöscht durch Administrator]

thomas223

Habe noch heraus gefunden das die Deklaration in 3.4 in eckigen klammern geschrieben wird!
nun genen zumindest die festen Tage!
Doch leider funktioniert die Oster fonktion bei mir noch nicht! selbst wenn ich ihn Ostersonntag vorgebe gibt er mir diesen nicht als Feiertag aus!

annD

Hallo thomas223,
hast du inzwischen herausgefunden, was der Fehler war? Ich als Anfänger habe nämlich dieselben Fehlermeldungen und komme nicht so richtig dahinter.
Schöne Grüße,
annD

annD

Hallo zusammen,

bei mir lag es an den Deklarationen, die unter Codesys 3.5 etwas anders lauten müssen als in der Doku. z.B.:

XCAL: OSCAT_BASIC.CALENDAR:=(OFFSET:=60,DST_EN:=TRUE,LANGUAGE:=2,LONGITUDE:=xxx,LATITUDE:=xxx);

und

Feiertage: ARRAY[0..29] OF OSCAT_BASIC.HOLIDAY_DATA :=
      [(name := 'Neujahr', day := 1, month := 1, use := 1)];

Lg annD

multilul

Bei Mir gelingt es nicht dass Holiday Type richtig zu kriegen.
Weiss Jemand was hier Falsch geht?





[gelöscht durch Administrator]

mattsches

Hast Du es schonmal ohne Namensraum probiert? Also

Feiertage: ARRAY [0..29] OF HOLIDAY_DATA (...)

?

Falls das auch nicht geht, wirst Du die Deklaration von XCAL im CALENDAR_CALC ändern müssen auf

XCAL: OSCAT_BASIC.CALENDAR:=(OFFSET:=60,DST_EN:=TRUE,LANGUAGE:=2,LONGITUDE:=xxx,LATITUDE:=xxx);

Siehe Post von annD oben.

multilul

Danke!

XCAL: OSCAT_BASIC.CALENDAR:=(LATITUDE:=52.292809, LONGITUDE:=7.768562, OFFSET:=60);
Andert die Variable Name von "Calendar" in "XCAL"?

Leider hat es noch nicht geklappt  ???


[gelöscht durch Administrator]

mattsches

Sorry, war ein Versehen meinerseits. Ich hatte gedacht, annD hätte den Baustein in der Bibliothek modifiziert. Nach allem, was ich lese, müsste es aber auch so gehen.

Ich habe hier gerade keine V3-Installation greifbar. Mal sehen, vielleicht schaffe ich es morgen tagsüber, das Ganze mal nachzustellen.

mattsches

Da scheint was mit deiner Bibliothek nicht zu stimmen. Wo hast du die denn her? Ich habe die 3.3.1 von der OSCAT-Webseite installiert, damit kann ich deinen ursprünglichen Code (fast) ohne Fehler bauen. Denn der Namespace ist standardmäßig "BASIC", bei dir aber "OSCAT_BASIC" (hast du das bewusst geändert?). Ändere ich ihn im Bibliotheksverwalter, habe ich keine Fehler beim Übersetzen. Auch ohne Namensräume funktioniert alles ohne Probleme.

Vorschlag: Wirf die Bibliothek aus dem Repo, lade sie nochmal von der Webseite herunter und installiere sie bei dir. Die ganzen Deklarationen können dann auch ohne Namensraum erfolgen, solange dein Projekt nicht so groß ist, dass dadurch Konflikte entstehen (zweite Bibliothek im Projekt, die z. B. ebenfalls einen Datentyp "HOLIDAY_DATA" enthält).

multilul

Die *.package Files hatte Ich vom CodeSys website.
Die habe Ich entfernt und danach die oscat_basic_331_codesys3.library vom Oscat website installiert.

Jetzt compiliert es ohne Fehler! Vielen Dank!



[gelöscht durch Administrator]

Marvelous

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]