neuen Funktionsbaustein

Begonnen von König777, 22. Oktober 2017, 15:01:27

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

König777

Hallo,

mein Ziel ist es einen neuen Funktionsbausstein (FB) aus mehreren Blind's zu erstellen.

Bitte um Nachhilfe in Bezug auf neu erstellten Funktionsbausstein in CFC. Wenn ich aus mehreren Bausteinen z.B. Blind Bausteine Input, Shade, Night usw. "einen Funktionbaustein" erstellen will, weiß ich im Moment nicht wie ich die Setup Variablen, welche ich mit Doppelclick z.B. auf den Baustein "Shade" parametriere, dann in meinem neuen Baustein genauso einstellen kann. D.h. wenn ich mit Doppelclick auf meinen neuen Baustein gehe, sollten doch alle Setup Variblen der einzelnen Bausteine parametrierbar sein. Wie muss ich das in CFC anstellen? Geht das überhaupt? Wie müssen die Setup Variblen dann deklariert werden.

Bei der selben Konstellation bei Erstellung ders Bausteins in ST hätte ich eine andere Frage. Welche Reihenfolge beim Aufruf ist am sinnvollsten? Blind Input, -Shade, -night und -Control? Beim Input gebe ich ja die POS und ANG als Rückführung vom Control drauf. Ist es dann nicht sinnvoll, den Control als erstes im neuen Funktionsbaustein aufzurufen?

Wie macht der Compiler das bei CFC?

Vielen Dank im Voraus.

Grüße König

mattsches

Hallo König,

die Setup-Variablen bekommst du bei Verwendung von CFC nicht nach außen geführt. Zwar kann es sein, dass du für den neuen FB welche deklarieren kannst (bin mir unsicher), aber es gibt keine Möglichkeit, diese dann im CFC-Plan an die Instanzen der BLIND-Bausteine zu übergeben. Denn für die Setup-Variablen gibt es ja keine Anschlüsse (Beinchen) am Bausteinsymbol, das ist ja gerade das Ziel.

Du könntest

  • die bestehenden Bausteine abwandeln, die benötigten Setup-Variablen in den VAR_INPUT-Block verschieben und in CFC mit dort neu angelegten Variablen verschalten oder
  • wie von dir schon angeschnitten das Ganze in ST machen. Dort kannst du auch den Setup-Variablen Werte übergeben.

Zur Aufrufreihenfolge: Positions- und Winkelsignal werden im Kreis geführt. Wo der aufgetrennt wird, ist prinzipiell egal. Lässt man in CFC die Aufrufreihenfolge nach Datenfluss optimieren, landet der BLIND_INPUT bei mir an erster Stelle. Sichtbar machen kannst du das durch Rechtsklick auf eine leere Fläche im CFC-Plan -> Aufrufreihenfolge -> Anzeigen. Dann erscheinen rechts oben an den Bausteininstanzen Zahlen.

Ich würde die BLIND-Bausteine an deiner Stelle also in ST in der von dir genannten Reihenfolge einbauen, neue Setup-Variablen erzeugen und was du sonst noch so brauchst an der Schnittstelle und das dann an die Instanzen übergeben.

Gruß,
mattsches

König777

Hallo Mattsches,

danke für die Rückmeldung. Wie hast Du das denn bei Dir gelöst. Bei mir kommen mehrere Jalousien und Rollos zum Einsatz. Da wäre ein Baustein "Jalousiecontroller" schön. Was ich wohl machen könnte, wäre alle Setup Varibalen der gewünschten Bausteine als normale Inputs in der Lib zu deklarieren. Dann in CFC meinen gewünschten neuen Baustein (Jalousiecontroller aus mehreren Blind`s) erstellen und die dementsprechenden Variablen als Input Constants deklarieren. Dann müssten doch im neuen Baustein bei Doppelclick diese auftauchen.

Ich habe mir jetzt einen in ST hergestellt. Als Neu-Einsteiger ist CFC für mich besser nachzuvollziehen. Zumal ich keine Routine in ST habe. Den Quellcode zu entschlüsseln ist für mich sehr mühselig oder nicht möglich.

Gruß König

mattsches

Hallo König,

genau wie von dir beschrieben. Bausteine modifizieren, so dass die fraglichen Variablen nicht mehr im "... CONSTANT"-Bereich liegen und in CFC verschaltet werden können. Im CFC-Plan dann neue Variablen anlegen als VAR_INPUT CONSTANT und an die aufgerufenen Bausteine übergeben. Das machst du, indem du, indem du mittels Einfügen/Eingang einen solchen im Plan einfügst, dort den Namen der Variable einträgst und das Ganze mit dem Eingang des aufgerufenen Bausteins verbindest.

Den neuen "Über-"Baustein rufst du dann für jeden Laden einmal auf. Doppelklick auf sein Symbol, Setup-Variablen einstellen, Peripheriesignale (Taster + Ausgänge) verbinden, fertig.

Gruß,
mattsches

Nuttinut

Ich bin wie du Ich habe die neue Funktion ausprobiert. Es ist okay als die alte Version.