POU FUP mit unterschiedlichen Inputs und Outpus verwenden

Ulf S.

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und guten Abend,
mit eine Wago/e!Cockpit PFC200 möchte ich meine Hausautomation realisieren. Was SPS und Codesys angeht bin ich Einsteiger, ebenso was Programmierung angeht. Ein erster Schritt war die Steuerung der Raffstores über eine WebVisu. Das Ergebnis der FUP für einen Raum habe ich als Screenshot angehängt, die anderen Räume sind mit den entsprechenden Eingangs und Ausgangsvariablen identischen angehängt, was ziemlich viele Netzwerke untereinander in eine POU zur Folge hat.
Gesteuert wird das komplett Hochfahren, Runterfahren, eine Position mit halb geöffneten Lamellen und ein Stop.
Die nächste Aufgabe ist das Schalten der Lichter, die sämtlich über bistaile Relais verdrahtet sind (Schaltausgang und Status sind bereits als din und dOut zum Schalten und Statuserfassung angeschlossen).
Wie könnte ich diese "Funktionalität" ein mal definieren und dann nur noch auf die entsprechenden Ziele anwenden (Einzelner Raum, Stockwerk, alle Raffstores/Lichter)?
Oder bin ich komplett auf dem Holzweg?
Vielen dank schon mal und schönen Gruß
Ulf
 

Anhänge

  • 2022-01-16 22_10_35-_Wago win10_ auf _HP805G6_ - Verbindung mit virtuellen Computern.png
    2022-01-16 22_10_35-_Wago win10_ auf _HP805G6_ - Verbindung mit virtuellen Computern.png
    296,6 KB · Aufrufe: 23
Ich gehe jetzt mal auf den folgenden Absatz in deinem Beitrag ein, den ich hoffentlich richtig verstanden habe,. und der wohl die Frage war!? ;)
Wie könnte ich diese "Funktionalität" ein mal definieren und dann nur noch auf die entsprechenden Ziele anwenden (Einzelner Raum, Stockwerk, alle Raffstores/Lichter)? Oder bin ich komplett auf dem Holzweg?

Ich glaube der Begriff den du suchst ist Funktionsbaustein (FB)

Das ist einer der Arten (neben Programm und Funktionen) von POUs. Bei einem FB lassen sich beliebig viele Eingangssignale verarbeiten und mit Ausgangssignal verknüpfen. Der Aufruf bzw. die Verwendung erfolgt über Instanzen von eigentlichen FB. Jede Instanz von gleichen FB verhält sich von der Logik gleich. Falls du eine Fehler findest und diesen korrigierts, ist dies dann auch gleich für alle Instanz korrigiert. :)

Wichtig bei der Verwendung von FBs ist das du im FB NUR mit den Eingängen und Ausgängen des FB selbst arbeitest. Sonst macht das erstellen eines FBs keinen Sinn mehr, da sich den Instanzen dann zwar Eingänge und Ausgänge zuweisen lassen, aber im FB nicht verwendet und die Ausgänge nicht oder falsch beschrieben werden.

Hier noch der Link zur Codesys Help betreffend Funktionsbausteinen FBs : Objekt ‚Funktionsbaustein‘
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Brro87,
zum Thema FBs hatte ich schon mal gelesen, konnte es aber nicht umsetzten. Wovon ich noch keine Vorstellung habe (wie von vielen anderen Dingen leider auch....), ist wie ich das am sinnvollsten umsetzte, dass der FB abhängig vom Auslöser die entsprechenden Outputs schaltet, z.b. eine Variable "xRaum1auf" aus der Visualisierung schaltet den Raffstore Raum1 und "xRaum2auf" den Raffstore Raum2,
Wie realisiert man elegant, übersichtlich, pflegbar und erweiterbar ähnlich einer tabellarischen Zuordnung dass mit einer Schaltvariablen1 der Output1 und nach Schaltvariblen2 der Output2 von dem gleichen FB gesteuert werden? Das kann man bestimmt in ST über IF/THEN schreiben für jede einzelne Zuordnung schreiben, aber gibt es da etwas eleganteres? Ähnlich einer tabellarischen Zuordnung? Array/Struct o.ä.?
 
Was ist den jetzt an der Darstellung in ST (nicht FUP, KOP,..), nicht elegant, pflegbar und übersichtlich?

Dein Beispiel dass mit einer Schaltvariablen1 der Output1 und nach Schaltvariblen2 der Output2 gesteuert wird sehe wohl so aus,..
Code:
Output1 := Schaltvariablen1;
Output2 := Schaltvariablen2;
Output3 := Schaltvariablen3;
Output4 := Schaltvariablen4;
..
Output99 := Schaltvariablen99;

Da ich aber mal davon ausgehe das die Bedingung für Output 1 nicht so einfach ist und eventuell noch ein 2. Output pro Storen (da Auf/Zu) gebraucht wird. Bietet sich dann ein FB an bei dem man Intern die Logik programmiert und der mit den SPS-Inputs gefüttert und dessen Ausgänge auf die SPS-Ouputs geschrieben werden.

Angenommen der FB heisst "FB_Storen", mit 2 EIngängen (Taster_Auf, Taster_Ab) und den Ausgängen (Ausgang_Auf, Ausgang_Ab) den du bei dir mit folgender Zeile ind er Deklaration instanziert hast,..
Code:
fbStoren1 : FB_Storen();

wäre der Aufruf dann so,..
Code:
fbStoren1(Taster_Auf:= HardwareInput1, Taster_Ab:= HardwareInput1, Ausgang_Auf=> HardwareOutput1, Ausgang_Ab=> HardwareOutput2);

Ich denke es macht SInn wenn du dir mal die Doku anschaust,.. z.B zu POUs (Programme, FBs, Funktionen,..), ST-Ausdrücke (:=, <>, MOD,..), Anweisungen (IF, While,..), usw.
 
das mit den FB werde ich unbedingt testen! Gerade das Instanzieren hört sich sehr interessant an, gerade weil im Augenblick mein FUP-Programm zyklisch läuft. Das fühlt sich für mich als blutiger Anfänger ziemlich falsch an, auch wenn es aktuell fehlerfrei läuft. Die Codesyse-Hilfe lese ich, dauert nur ein wenig bis ich das immer verstehe! Danke für die Hilfe, jetzt muss ich erst mal eine wenig rumprobieren. Auf jeden Fall alles sehr interessant...
 
Zurück
Oben