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

Aufruf eines FBs innerhalb eines FBs möglich?

opossum
2007-12-14
2007-12-16
  • opossum - 2007-12-14

    Hallo!

    Ich mache gerade meine ersten Gehversuche mit CoDeSys. In Verbindung mit den OSCAT-Libraries habe ich schon ein paar Sachen ganz gut zum Laufen gebracht.

    Für die Lichtschaltung habe ich mir einen eigenen Funktionsblock gebastelt, der mit Tastern oder Variablen von IP-Symcon beschickt werden kann. Das klappt auch soweit.

    Jetzt wollte ich hergehen und wollte für die Lampensteuerung, Jalousiensteuerung etc. einen eigenen Funktionsblock machen, den ich dann vom Hauptprogramm aufrufe. Quasi einen Block wo alle Lampensteuerungen drinnen sind, einen für die ganzen Jalousien, etc. damit das halbwegs aufgeräumt ist.

    Im Hauptprogramm hätte ich mir dann vorgestellt, dass ich für die Übersichtlichkeit nur die Bausteine "Licht", "Jalousien", etc. habe.

    Das Problem ist allerdings, dass die FBs nun scheinbar nicht mehr funktionieren. Gibt es hier Limitierungen, das man einen FB nicht von einem anderen FB aufrufen darf, oder woran könnte das liegen?

    Danke!

     
  • Rolf-Geisler - 2007-12-15

    Hallo,

    Du musst den FB im aufrufenden Baustein instanziieren, also im VAR Segment einen Bezeichner zuweisen. Ãœber den Bezeichner rufst Du den FB auf.

    Beispiel:

    FUNCTION_BLOCK AlleLichter
    VAR_INPUT
      ...;
    END_VAR
    VAR_OUTPUT
      ...;
    END_VAR
    VAR
      Licht1: FB_Licht;
      Licht2: FB_Licht;
    END_VAR
    Licht1 (...);
    Licht2 (...);
    

    In dieser Form funktionieren auch Aufrufe von FB's in FB's.

    Viel Erfolg

    Rolf

     
  • opossum - 2007-12-16

    Danke Rolf, werde ich gleich mal probieren!

    Herzliche Grüße,

    Opossum

     
  • Oberchefe - 2007-12-16

    Zitat:
    Jetzt wollte ich hergehen und wollte für die Lampensteuerung, Jalousiensteuerung etc. einen eigenen Funktionsblock machen, den ich dann vom Hauptprogramm aufrufe.

    Ich würde da eher ein Programm nehmen, Funktionsbausteine nimmt man eher wenn man mehrmals den gleichen Programmteil braucht. Aufruf sieht im Hauptprogramm dann so aus:

    MeineLichter();
    
     

Log in to post a comment.