Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

STRUCT Datentypen

e-pappy
2006-05-17
2006-09-04
  • e-pappy - 2006-05-17

    Hallo!

    Hab mal wieder ein kleines Problem. Das mit der Bibliothekserstellung klappt ja jetzt ganz gut, aber jetzt möchte ich mir eine Zeitschaltuhr bauen und dabei die Datentypen STRUCT verwenden. Außer es hat natürlich schon jemand eine einfach zubedienene Zeitschaltuhr, die er bereit ist mir zu zu senden

    Nein, nein... Ich versuchs selbst. Also folgendes:

    Ich habe einen Funktionsbaustein, an man die Tage von Montag - Freitag (x_monday_1; x_tuesday_2; x_wednesday_3 ...), die mit einem BOOLschem Wert aktiviert werden müssen. Hier möchte ich jetzt so eine STRUCT Variable vorhängen, wo dann 7 BOOLsche Variablen in einer STRUCT drin hängen.

    Unter Datentypen habe ich schon eine entspechende Variable angelegt, allerdings weiß ich jetzt nicht mehr weiter, da ich nicht weiß, wie ich auf die einzelnen Eingänge des Basteins mit dem STRUCT zugreifen soll.

    Kann jemand helfen?

     
  • Rolf-Geisler - 2006-05-17

    Hallo,

    ich versuch' mich mal an einer Antwort.

    Vermute, die Schnittstelle Deines Bausteins sieht etwa so aus:

    FUNCTION_BLOCK FB_IrgendEtwas
    VAR_INPUT
      x_Montag_1 : BOOL;
      x_Dienstag_2 : BOOL;
      (* usw. *)
    END_VAR
    

    Dein STRUCT könnte so aussehen:

    TYPE TagesAuswahl :
    STRUCT
      Montag : BOOL;
      Dienstag : BOOL;
      (* usw. *)
    END_STRUCT
    END_TYPE
    

    Dann mußt Du im aufrufenden Baustein eine Variable vom Typ dieser Struktur und den aufgerufenen Baustein deklarieren

    VAR
      Wochentage : TagesAuswahl;
      MeinBaustein : FB_IrgendEtwas;
    END_VAR
    

    und am Aufruf die Einzelelemente dieser Struktur den Eingängen des Bausteines zuweisen:

    MeinBaustein (
      x_Montag_1 := Wochentage.Montag,
      x_Dienstag_2 := Wochentage.Dienstag,
      (* usw. *) );
    

    Alles klar?

    Also noch mal in der Kurzfassung: Variable vom Typ der Struktur deklarieren, an die Einzelelemente kommt man dann unter dem Variablennamen, gefolgt von einem Punkt als Ordnungszeichen und dem eigentlichen Elementnamen heran.

    Hoffe, es hat geholfen ...

     
  • e-pappy - 2006-05-17

    Das erklärt so einiges

    Eine Frage aber noch: Wo muss ich das hier denn deklarieren?

    Zitat:
    und am Aufruf die Einzelelemente dieser Struktur den Eingängen des Bausteines zuweisen:
    Code:
    MeinBaustein (
    x_Montag_1 := Wochentage.Montag,
    x_Dienstag_2 := Wochentage.Dienstag,
    ( usw. ) );

    mfG

    Patrick

     
  • Rolf-Geisler - 2006-05-19

    Sorry, war unterwegs und konnte deshalb nicht antworten ...

    Also, die Deklaration erfolgt natürlich da, wo Du sie brauchst, also im aufrufenden Baustein (FUNCTION_BLOCK oder PROGRAM oder was auch immer das ist). Das sind dann rein lokale Variable, die von außen nicht eingesehen oder verändert werden können.

    Alternativ wäre die Auswahlvariable auch global denkbar, aber davon halte ich nicht viel. Man macht zu viel kaputt, wenn man sich mal vertippt ...

    Gruß Rolf

     
  • l.farmer - 2006-09-04

    Bei Datentypen habe ich ein generelles Verständnisproblem. Deshalb meine Bitte, das obere Beispiel von Rolf_Geisler, welches ich für wichtig erachte, so zu erweitern, damit ich den Ablauf für Wahl des Wochentages verstehen kann.

    Vielen Dank!

    L. Farmer

     

Log in to post a comment.