# Anfänger braucht Hilfe bei dem Holiday Baustein

**URL:** <https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309>\
**Category:** oscat.lib fuer CoDeSys 3\
**Created:** [22. September 2018 um 22:18 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309 "2018-09-22T22:18:01Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ferdi](https://avatars.discourse-cdn.com/v4/letter/f/e19adc/32.png) [@Ferdi](https://oscat.discourse.group/u/Ferdi)\
**Post date:** [22. September 2018 um 22:18 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/1 "2018-09-22T22:18:01Z")

</div>

Hallo zusammen,

Ich habe letztes Jahr die Steuerung meiner Rolladen mit einer Wago 750-880, den Oscat Bibliotheken erstellt und etwas Hilfe von hier zum laufen bekommen.

Nachdem ich mich mit der WebVisu beschäftigt habe und die bei der 880 mit Java läuft, habe ich mich entschlossen, den Controller zu tauschen damit es dann mit HTML5 geht.

Also Controller ist ein 750-8202, dann hab ich mit Oscat Bibliotheken runtergeladen, muss mich noch an e!Cockpit gewöhnen und habe gedacht wenn ich die Oscat Bibliotheken  
für Codesys 3.5 nehme und dann die globeln Variablen von meiner 750-880 für den Holiday Baustein kopiere wird das schon wieder laufen, leider falsch gedacht.  
Und nun gehen mir die Ideen aus warum das so ist…

Vielleicht kann mir hier jemand helfen?

Vielen Dank

[gelöscht durch Administrator]

---

<div class="post-metadata">

**Author:** ![mattsches](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@mattsches](https://oscat.discourse.group/u/mattsches)\
**Post date:** [25. September 2018 um 13:28 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/2 "2018-09-25T13:28:33Z")

</div>

Probiere es mal mit zusätzlichen eckigen Klammern um die Arrayelemente:

```auto

HOLIDAY_DE ... := [( ...
... )];

```

---

<div class="post-metadata">

**Author:** ![Blauprinz](https://avatars.discourse-cdn.com/v4/letter/b/9de053/32.png) [@Blauprinz](https://oscat.discourse.group/u/Blauprinz)\
**Post date:** [26. September 2018 um 10:29 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/3 "2018-09-26T10:29:35Z")

</div>

Hallo Ferdi,

ich könnte mir bei der Codesys 3.5 noch zwei andere Probleme vorstellen:

- Pragma in der Globalen Variablenliste
- fehlender Namespace im Deklarations-Editor

Gruß

---

<div class="post-metadata">

**Author:** ![annD](https://avatars.discourse-cdn.com/v4/letter/a/47e85d/32.png) [@annD](https://oscat.discourse.group/u/annD)\
**Post date:** [27. September 2018 um 13:09 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/4 "2018-09-27T13:09:47Z")

</div>

Siehe auch hier:

> [@annD post:8](#):
>
> 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)];

---

<div class="post-metadata">

**Author:** ![Blauprinz](https://avatars.discourse-cdn.com/v4/letter/b/9de053/32.png) [@Blauprinz](https://oscat.discourse.group/u/Blauprinz)\
**Post date:** [27. September 2018 um 14:20 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/5 "2018-09-27T14:20:45Z")

</div>

Oh sorry, hab ich nicht gesehen…  
Aber schön wenn das Problem gelöst werden konnte 😃

---

<div class="post-metadata">

**Author:** ![Ferdi](https://avatars.discourse-cdn.com/v4/letter/f/e19adc/32.png) [@Ferdi](https://oscat.discourse.group/u/Ferdi)\
**Post date:** [29. September 2018 um 13:14 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/6 "2018-09-29T13:14:28Z")

</div>

Hey super, das war es mit den eckigen Klammern nun bekomme ich mit dem Holiday Baustein keine Fehlermeldung mehr.

Danke

---

<div class="post-metadata">

**Author:** ![Lugge](https://avatars.discourse-cdn.com/v4/letter/l/43a26b/32.png) [@Lugge](https://oscat.discourse.group/u/Lugge)\
**Post date:** [16. Oktober 2018 um 08:08 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/7 "2018-10-16T08:08:04Z")

</div>

Hallo,  
habe das selbige Problem. Habe das Programm von der Codesys 2.3 genommen und ind eCockpit importiert bzw. gleich erstellt.  
Bibliotheken hab ich vom Store Codesys runter geladen. [https://store.codesys.com/catalogsearch/result/?q=oscat](https://store.codesys.com/catalogsearch/result/?q=oscat)  
DAs mit den Eckigen Klammern habe ich schon gemacht, diese Fehlermeldung ist weg.  
Leider bekomme ich jetzt die Meldung “Datenrekusion HOLIDAY\_DATA → HOLIDAY\_DATA”  
Wenn ich von dem Baustein CALENDAR\_CALC den PIN XCAL beschalte, bekomme ich die Fehlermeldung: ‘CALENDAR’ entrspricht nicht dem TYP con ‘CALENDAR’ von VAR\_IN\_OUT ‘XCAL’  
Kennt jemand das Problem und hat hierfür Abhilfe. Stehe hier gewaltig auf dem Schlauch und komme nicht weiter.

Danke und Gruß  
Lugge

[gelöscht durch Administrator]

---

<div class="post-metadata">

**Author:** ![Ferdi](https://avatars.discourse-cdn.com/v4/letter/f/e19adc/32.png) [@Ferdi](https://oscat.discourse.group/u/Ferdi)\
**Post date:** [16. Oktober 2018 um 16:52 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/8 "2018-10-16T16:52:19Z")

</div>

Hallo, so ein ähnliches Problem hatte ich auch, bis gestern abend.

Ich konnte bei mir nach langen tüfteln feststellen das man in der Bibliothek, wenn man mit rechtsklick auf Eigenschaften von der Oscat Basic klick, die Version ändern kann, dort habe ich  
die Version 3.3.3.0 ausgewählt, damit hatten dann die Blind\_Shade\_s Baustein kein Problem mehr, bei der anderen Version stand, das der Calendar Typ nicht paßt.

Vielleicht hilft dir das ja schon weiter.

---

<div class="post-metadata">

**Author:** ![Lugge](https://avatars.discourse-cdn.com/v4/letter/l/43a26b/32.png) [@Lugge](https://oscat.discourse.group/u/Lugge)\
**Post date:** [17. Oktober 2018 um 10:52 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/9 "2018-10-17T10:52:13Z")

</div>

Hallo,  
das ist es leider auch nicht.  
Habe auch mal alle Oscat Bibliotheken deinstalliert und erneut installiert.  
Bei den Blind Bausteinen habe ich keine Fehler. Nur mit dem CALENDAR\_CALC.  
Die Fehler tauchen erst beim übersetzten auf.  
Darf ich Ihnen das Projekt mal zukommen lassen? Allerdings hat das Projekt wenn ich es in eCockpit exportiere, ca. 32 MB.  
Vielleicht sehen Sie etwas, was ich falsch mache.

Danke und Gruß  
Lugge

---

<div class="post-metadata">

**Author:** ![Ferdi](https://avatars.discourse-cdn.com/v4/letter/f/e19adc/32.png) [@Ferdi](https://oscat.discourse.group/u/Ferdi)\
**Post date:** [17. Oktober 2018 um 15:35 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/10 "2018-10-17T15:35:54Z")

</div>

Hallo, ich bin aber Anfänger und probiere nur zu helfen, da mir hier auch schon ein paar mal geholfen wurde.

Ich hab mir die Bilder angeguckt, was ich da evtl. gesehen habe, das die geschlossene eckige Klammer fehlt bei Holiday\_Data

ich hab mal zwei Bilder von meinem Holiday\_Data eingefügt.

[gelöscht durch Administrator]

---

<div class="post-metadata">

**Author:** ![mattsches](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@mattsches](https://oscat.discourse.group/u/mattsches)\
**Post date:** [17. Oktober 2018 um 18:55 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/11 "2018-10-17T18:55:43Z")

</div>

Hallo Lugge,

uiuiui, da ist aber einiges durcheinander geraten:

[ol]- Du hast einen eigenen Datentyp “HOLIDAY\_DATA” deklariert, in dem du dann wiederum als ein Element ein Array des Typs HOLIDAY\_DATA deklarierst. Daher der Rekursionsfehler (HOLIDAY\_DATA verweist damit auf sich selbst).

- Das Element HOLIDAY innerhalb der Struktur ist das, was du eigentlich als globale Variablen anlegen musst. Allerdings nicht als zwei, sondern als eindimensionales Array. Warum deklarierst du mit [1..3, 0..29] und nicht - wie in der Doku beschrieben - mit [0..29]?
- Der von dir deklarierte Datentyp ist überhaupt nicht erforderlich, die Struktur ist bereits in der OSCAT\_BASIC komplett deklariert. → Löschen
- Dasselbe gilt für alle anderen von dir deklarierten Datentypen (CALENDAR, CONSTANTS\_\*, SDT) → Ebenfalls löschen
- Eine Deklaration von GVL.HOLIDAYS kann ich auf deinen Screenshots nicht finden. Ich vermute, sie verweist auf deinen eigenen Datentyp HOLIDAY\_DATA, und der erste Screenshot ist veraltet?![/ol]

Richtig wäre:

[ol]- Eine Deklaration GVL.HOLIDAY (oder wie auch immer du die Variable nennen willst) als ARRAY [0..29] of HOLIDAY\_DATA. Siehe Beispiel unten für Bayern. Für andere Bundesländer einfach entsprechend anpassen.

- Die übergibst du dann an CALENDAR\_CALC.HOLIDAYS.
- Die Typkonvertierungsfehler (TIME vs. DATE\_AND\_TIME) wirst du auch noch beheben müssen. Irgendwo in den vielen Kopieraktionen werden die beiden Typen vermischt, das bemängelt das eCOCKPIT dann zurecht.
- Parameterdaten wie Länge und Breite würde ich als Initialwerte bei der Deklaration übergeben. Sie ändern sich nie und müssen daher nicht zyklisch auf die Variable geschrieben werden. Wie das geht, siehe ebenfalls unten.[/ol]

Deklaration von GVL.HOLIDAY:

```auto

HOLIDAY : ARRAY[0..29] OF HOLIDAY_DATA := [(name := 'Neujahr', day := 1, month := 1, use := 1),
(name := 'Heilig Drei Könige', day := 6, month := 1, use := 1), 
(name := 'Karfreitag', day := -2, month := 0, use := 1), 
(name := 'Ostersonntag', day := 0, month := 0, use := 1), 
(name := 'Ostermontag', day := 1, month := 0, use := 1), 
(name := 'Tag der Arbeit', day := 1, month := 5, use := 1), 
(name := 'Christi Himmelfahrt', day := 39, month := 0, use := 1), 
(name := 'Pfingstsonntag', day := 49, month := 0, use := 1), 
(name := 'Pfingstmontag', day := 50, month := 0, use := 1), 
(name := 'Fronleichnam', day := 60, month := 0, use := 1), 
(name := 'Augsburger Friedensfest', day := 8, month := 8, use := 0), 
(name := 'Maria Himmelfahrt', day := 15, month := 8, use := 1), 
(name := 'Tag der Deutschen Einheit', day := 3, month := 10, use := 1), 
(name := 'Reformationstag', day := 31, month := 10, use := 0), 
(name := 'Allerheiligen', day := 1, month := 11, use := 1), 
(name := 'Buss und Bettag', day := 23, month := 11, use := 0), 
(name := '1. Weihnachtstag', day := 25, month := 12, use := 1), 
(name := '2. Weihnachtstag', day := 26, month := 12, use := 1)];

```

Iniitalwert bei Deklaration übergeben:

MyNewInt : INT := 123; // Variable wird nach einem Kaltstart der Steuerung mit 123 initialisiert

Gruß,  
mattsches

---

<div class="post-metadata">

**Author:** ![Lugge](https://avatars.discourse-cdn.com/v4/letter/l/43a26b/32.png) [@Lugge](https://oscat.discourse.group/u/Lugge)\
**Post date:** [18. Oktober 2018 um 10:13 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/12 "2018-10-18T10:13:54Z")

</div>

Hallo Mattsches,  
vielen Dank.  
Der CALENDAR\_CALC läuft. :).  
Ja ich hatte keine GVL.HOLIDAY.  
Der Typenkonvertierungsfehler (TIME vs TIME\_AND\_DATE) kam weil ich “wie im alten Programm” 1 Sunde in die Systemzeit “SysSetTime” schieben wollte. Also Plus bzw. minus eine Stunde.  
Hier muss ich noch schauen, das ich die Zeiten noch richtig bekomme. Hab mich damit noch nicht richtig befasst.

Ähm eine Frage noch zum Initalwert. Das hab ich verstanden mit dem 123.  
Blos wie schreibe ich bzw. bekomme ich meinen Längen und Breitengrad darein?

Hab ja z. B:  
LATITUDE: 4.83936E+001  
LONGITUDE: 1.24238E+001  
Das sind zwar jetz Realwerte, kann ich aber auch in INT angeben.  
Blos wie ist hier die Schreibweise, damit beide Werte beim Kaltstart initialisiert werden?

Danke und Gruß  
Lugge

---

<div class="post-metadata">

**Author:** ![mattsches](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@mattsches](https://oscat.discourse.group/u/mattsches)\
**Post date:** [18. Oktober 2018 um 14:21 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/13 "2018-10-18T14:21:00Z")

</div>

Hi Lugge,

in GVL folgende Deklaration:

```auto

	Zeitberechnung	:	CALENDAR := (
		Longitude := 12.4238,
		Latitude := 48.3936);

```

Müsste

Analog geht das für weitere Strukturelemente in der Variable “Zeitberechnung”.

Gruß,  
mattsches

---

<div class="post-metadata">

**Author:** ![Lugge](https://avatars.discourse-cdn.com/v4/letter/l/43a26b/32.png) [@Lugge](https://oscat.discourse.group/u/Lugge)\
**Post date:** [18. Oktober 2018 um 14:39 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/14 "2018-10-18T14:39:47Z")

</div>

Hallo Mattsches,  
passt vielen Dank.  
Ähm was meintest Du gestern die Parameter mit Iniitalwert bei Deklaration übergeben:

MyNewInt : INT := 123; // Variable wird nach einem Kaltstart der Steuerung mit 123 initialisiert.

Das der MyNewInt beim Kaltstart hier den Wert 123 reinschreibt habe ich verstanden.  
Dachte das ich mit diesem Wert die Längen und Breitengrade laden könnte. Irgendwas hab ich hier nicht verstanden.  
Wenn ich in der GVL so eingebe werden diese wieder Zyklisch aufgerufen? Oder irre ich mich da, bzw. check hier was nicht?  
Sorry die dummen fragen.

Danke und Gruß  
Lugge

---

<div class="post-metadata">

**Author:** ![mattsches](https://avatars.discourse-cdn.com/v4/letter/m/d78d45/32.png) [@mattsches](https://oscat.discourse.group/u/mattsches)\
**Post date:** [18. Oktober 2018 um 18:19 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/15 "2018-10-18T18:19:50Z")

</div>

Hi Lugge,

sieh es mir nach, aber in der Tat scheinen hier ein bisschen die Grundlagen der Steuerungsprogrammierung zu fehlen. Die alle zu vermitteln, dürfte für dieses Forum vermutlich zu weit gehen. Insofern sei dir etwas Literatur ans Herz gelegt, irgendein Lehrbuch zu Programmierung nach IEC 61131-1.

Aber kurz zu deiner Frage:

Variablen, die in einer globalen Variablenliste deklariert werden, stehen global zur Verfügung, d. h. man kann von allen Bausteinen aus darauf zugreifen. Im Gegensatz zu Variablen, die im Baustein selbst deklariert werden.

Deklariert man - egal wo - eine Variable nach dem Schema

```auto
Variablenname : Variablentyp := Initialwert

```

,

dann wird diese beim Anlauf nach einem Reset mit diesem Wert beschrieben. Einmal. Wir im Anwenderprogramm nur lesend auf die Variable zugegriffen, ändert sie ihren Wert also nicht mehr. Aber nochmal: Egal ob in GVL oder Baustein deklariert, sie wird durch die obige Deklaration nicht zyklisch beschrieben.

Für Länge und Breite hatte ich das vorgeschlagen, da ich unterstelle, dass sich diese Werte in Deinem Programm nie ändern werden. Daher genügt es, wenn die Variablen einmalig initialisiert werden, das zyklische Beschreiben im Ablaufprogramm ist schlicht nicht erforderlich. Kostet jetzt nicht wirklich Rechenzeit, ist aber unnötig und macht den Code nur unübersichtlicher.

Wie die Syntax zum Initialisieren von Längen- und Breitengrad aussieht, habe ich ja schon geschrieben. Probier’s einfach mal aus.

Gruß,  
mattsches

---

<div class="post-metadata">

**Author:** ![Lugge](https://avatars.discourse-cdn.com/v4/letter/l/43a26b/32.png) [@Lugge](https://oscat.discourse.group/u/Lugge)\
**Post date:** [18. Oktober 2018 um 19:32 UTC](https://oscat.discourse.group/t/anfanger-braucht-hilfe-bei-dem-holiday-baustein/2309/16 "2018-10-18T19:32:18Z")

</div>

Hallo Mattsches,  
jetz hab ich verstanden. Das mit den Variablen (Global oder im Baustein) war mir bekannt. Sorry Stand auf dem Schlauch.  
Vielen Dank für die Erklärung.  
Haut hin. Noch ein bischen schöner Wohnen und so. Aber im großen und ganzen, läuft Programm.

Danke und Gruß  
Lugge
