Strukturierter Programmaufbau COEDESYS 2

@blockmove

ich habe mir über deinen Ratschlag nochmal Gedanken gemacht.
Du treibst zuviel Aufwand.
Bei einer so geringen Anzahl von E/A und Funktionalitäten reicht ein Anwender-PLC_PRG.
Anstelle von Unterprogrammen nimmt man FBs.
Eine mögliche Gliederung ist z.B.


  • PLC_PRG
    • FB Global
      • FB Kalender (Feiertage, Urlaub)
      • FB Präsenz
    • FB Keller
      • FB Raum A
        • FB Licht
        • FB Heizung
        • FB ...
      • FB Raum B
        • ...
    • FB Erdgeschoß
      • ...

Meinst du das jetzt so: Das ich für Raum A einen FB schreibe mit Var In Var Out usw. und den dann wie bei Siemens als parametrierten FB verwende und ihn dann mehrmals verwende?
Eher nicht oder?

Oder meinst du es so:
Das ich z.B. den FB übers PLC_PRG aufrufe und da die ganze Logik die ich in dem Raum benötige programmiere inkl. der FB,s von Wago und Oscat.
FB,s haben ja Var_IN Var_Out und Var. Ich brauche ja nur die Var im FB Header.???
Var_In und Var_Out sind dann quasi für mich da nutzlos.
Parametrierte FB,s werde ich natürlich erstellen, wo ich öfters die gleiche Funktion habe, um mir Spaghetticode zu ersparen. Diese parametrierten FB,s füge ich dann einfach in z.B. den FB_Raum_A ein.

Die Globalen Daten z.B. vom Dali Task (xG_Präsenz Flur) verarbeite ich dann im FB (Flur) nicht über die Bausteinschnittstelle (Var_IN) sondern z.B. füge sie direkt als Eingang an ein Und Gatter.

Verstehe ich das richtig, oder ist das der falsche Programmieransatz.
Ich sehe die Var_Global in codesys wie die Merker bei Siemens und die Merkerbits und Bytes.
Lokale Variablen sind bei Siemens für mich die Daten im Header eines FB.s

Würde mich um ein kurzes Feedback freuen, nicht das ich das ganze falsch verstanden habe.

Danke an dich und alle anderen.
 
Zuletzt bearbeitet:
Habs nur kurz überflogen aber:

Die Globalen Daten z.B. vom Dali Task (xG_Präsenz Flur) verarbeite ich dann im FB (Flur) nicht über die Bausteinschnittstelle (Var_IN) sondern z.B. füge sie direkt als Eingang an ein Und Gatter.

Würde ich nicht machen.
Wenn ich ein PLC_PRG und sonst kein PRG verwende und alle mit FBs erschlagen will, dann weise ich alle globalen Variablen im PLC_PRG an die Eingänge VAR_IN und VAR_OUT oder VAR_IN_OUT der verschiedenen FBs zu. Wenn du die globalen Variablen erst innerhalb eines FBs verwendest, läufst du Gefahr Variablen mehrfach zu beschreiben und hast einfach weniger Übersicht.

CaptureDALI.JPG

So z.B. mache ich das.
 
Hi Flo,

ja dann habe ich das von Blockmove falsch verstanden.
So wie auf deinem Bild kenne ich das auch.

Nur überlege ich ob es bei mir überhaupt Sinn macht alles in FB,s zu lösen weil ich an jeden Raum andere Anforderungen habe, das mit den Abhängigkeiten in einem Raum spricht natürlich schon dafür.

Dali einen eigenen Task und das ganze in PLC_PRG wieder eigener Task unterteilen für EG_Beleuchtung und Steckdosen_ EG BEschattung_ EG_Rolläden, die Variablen von Kalender und Dali dann Global in die PRG_s zu übertragen.

DALI (eigener Task)

PLC_PRG (eigener Task)
*PRG_EG_Beleuchtung und Steckdosen
*PRG_usw

Bei ähnlichen Räumen wäre ich mit FB,s im Vorteil.


Wei würdest du es machen??


GRUß
 
Zurück
Oben