IP-Symcon kompatible Funktionsbausteine (WAGO)

Liebe IP-Symcon Community,

bin gerade dabei meine WAGO 750-881, welche einen Großteil unseres EFH steuert, mit IP-Symcon zu vereinen … :slight_smile:

Auf meiner WAGO hatte ich bisher entweder die Bausteine der WAGO Bibliothek für Gebäudeautomation oder die der OSCAT Bibliothek in Verwendung. Da sich diese in Zusammenarbeit mit IP-Symcon nicht gerade als ideal erwiesen, habe ich mich mal rangemacht und was eigenes auf Grundlage der Bausteine in der OSCAT Bibliothek erstellt.

Aktuell handelt es sich mal um zwei Bausteine welche ich euch gern zur freien Verwendung zur Verfügung stellen möchte. Den Source-Code in ST findet ihr im Anhang dieses Thread!

Der erste Baustein FbImpulseRelay bildet die Funktion eines Stromstoßschalters mit ein paar Extra-Gimmicks ab. Der Baustein reagiert dabei auf steigende Schaltflanken am Eingang IN. Bei jeder positiven Schaltflanke wechselt der Baustein dabei seinen Zustandswert am Ausgang Q. Der Eingang EXT_IN dient als Verbindung zum IP-Symcon und sollten mit einer Merkervariable belegt werden, welche von IP-Symcon gelesen bzw. beschrieben wird und den Zustand (EIN/AUS) des Stromstoßschalter wiedergibt. Die Ausgabevariable EXT_Q sollte ebenfalls mit dieser Merkervariable belegt werden, weil hier dann der aktuelle Zustand des Stromstoßschalters geschrieben wird. Damit bekommt IP-Symcon den Zustandswechsel über einen Taster auch mit. Mit den Eingängen SET und RST kann der Ausgang jederzeit ein oder ausgeschaltet werden, wobei RST hier die höhere Priorität hat. Die Eingänge IN und EXT_IN werden dabei so lange ignoriert, solande einer der beiden Eingänge SET oder RST gesetzt ist. Die Zeit T_DEBOUNCE dient zum Entprellen des Taster über den Eingang IN.

Ein Extra-Gimmick des Bausteins stellt die Möglichkeit dar, eine maximale Einschaltzeit T_ON_MAX zu definieren. Ist diese größer 0, so wird nach Ablauf dieser Zeit der Ausgang Q des Bausteins automatisch auf FALSE gesetzt. Daneben lässt sich aber noch eine Art Vorwarnung einschalten, bei der für eine kurze Zeit das Licht ausgeschalten wird, um zu signalisieren, dass es jetzt gleich zur Abschaltung kommt. Wird während dieser Vorwarnzeit die Taste an IN nochmals betätigt, bleibt der Ausgang auf TRUE und die Zeit beginnt von neuem zu laufen. Aktiviert wird diese Vorwarnung indem man für die Zeit T_PRE_WARN einen Wert größer 0 definiert. Dieser stellt die Zeit bis vor Ablauf der Zeit T_ON_MAX dar, also z.B. T#30s was 30s vor Ablauf der maximalen Einschaltzeit T_ON_MAX ist. Die Zeit T_PRE_WARN_SIGNAL definiert, für wie lange der Ausgang zur Signalisierung deaktiviert werden soll.

Der Eingang IGNORE_EXT dient dazu, wenn man den Eingang EXT_IN und somit die Steuerung über die Merkervariable ignorieren möchte. Dieser ist Standardmäßig auf TRUE um den Baustein auch ohne Merkervariable betreiben zu können und muss bei Belegung des Eingang EXT_IN mit einer Merkervariable auf FALSE gesetzt werden.

Der zweite Baustein stellt einen intelligenten Dimmer dar. Bei mir steuert dieser meine LED-Stripes und Spots, welche über DMX angesteuert werden. Da dieser Baustein etwas komplexer ist folgt die Beschreibung dazu noch in einem Extra-Post, die meisten Eingangs- und Ausgangsvariablen dürften aber selbsterklärend sein.

Hier noch ein paar Screenshots die die Verwendung etwas besser veranschaulichen.

LG Daniel.

FB.TXT (12.8 KB)

Herzlichen Dank für’s teilen.
Hast Du für Rolläden auch schon was in der Planung? Ich bastel gerade an meinen mit den OSCAT Blind Bausteinen, bin aber noch nicht wirklich zufrieden damit…

Grüße
Markus

Leider nein … würd aber auf meiner Todo-Liste stehn :slight_smile:

Bekomme bei dem Dimmer-Baustein leider folgende Fehlermeldung. Jemand eine Idee warum?

Viele Grüße
Stephan

Bei mir gleiches Problem.
Vielleicht ist FRMP_B aus der Oscat Lib identisch? Hat zumindest die gleiche Signatur.

Uups, sorry … da fehlt vermutlich der Funktionsblock FuRampB in dem TXT-File.

Hier ist er:


FUNCTION FuRampB : BYTE

VAR_INPUT
	START : BYTE;
	DIR : BOOL;
	TD : TIME;
	TR : TIME;
END_VAR

IF (TD < TR) THEN
	FuRampB := MIN(DWORD_TO_BYTE(SHL(TIME_TO_DWORD(TD), 8) / TIME_TO_DWORD(TR)), SEL(DIR, START, BYTE#255 - START));
	IF DIR THEN
		FuRampB := START + FuRampB;
	ELSE
		FuRampB := START - FuRampB;
	END_IF;
ELSE
	FuRampB := SEL(DIR, 0, 255);
END_IF;

Hoffe es läuft jetzt so … ansonsten bitte melden!

LG Daniel.

Der Block war vorher auch in der TXT Datei. Allerdings sieht der Code anders aus.
Läuft leider immer noch nicht.

Viele Grüße
Stephan

Du meinst den Funktionsblock FbRampB, der ist drinnen. Aber die Funktion FuRampB fehlt.
Die hab ich der Vollständigkeit halber eh im letzten Post dazugepackt.

LG Daniel.

Ach ich Blindfisch :banghead:

Hast natürlich recht. Jetzt läuft es. Vielen Dank nochmal!

Viele Grüße
Stephan

Gern geschehen! Viel Spaß damit …

Hi,

ich habe doch noch eine kurze Verständnisfrage wie sich das Dimmen verhält.
Wenn ich mit einem Taster durch langes drücken dimme dann dimmt die Lampe hoch und nach dem erreichen des max. Werts wieder runter. Ist das so gewollt? Es ist damit praktisch nicht möglich mit dem Taster auf 100% hoch zu dimmen.

Hab ich was falsch gemacht oder ist das Verhalten so gewollt?

Normal ist ja:
Taster gedrückt halten -> Dimmt bis 100% hoch
Taster loslassen
Taster erneut gedrückt halten -> Dimmt bis 0% (oder eingestelltem min. Wert) runter.

Viele Grüße
Stephan

Habe ich (vermutlich) aus der OSCAT Library so übernommen. K.A. ob das jetzt so richtig oder falsch ist.
Ein richtig oder falsch gibts hier auch vermutlich nicht … bei mir hat sich bis jetzt mal keiner über das
Verhalten beschwert … aber es wird auch nicht viel gedimmt.

Falls es dich stört, einfach folgende Zeilen im Funktionsblock FbDimmI auskommentieren/entfernen:


(* reverse direction when limits are reached *)
IF OUT = 0 THEN DIR := TRUE;
ELSIF OUT = 255 THEN DIR := FALSE;
END_IF;

Hoffe das ist alles, kanns im moment leider nicht testen.

LG Daniel.

Super, funktioniert! :slight_smile:

Viele Grüße
Stephan

Hallo dast,

bist du bei den Blindbausteinen aus der Oscar schon weiter gekommen?

Ich hab noch keine gute Lösung gefunden und schicken aktuell einen Testbefehl für Rauf und Runter aus IPS.
Die Rückmeldung ist auch da, aber fahren auf Position bekomme ich in der Wago nicht ans laufen, sodass die Position auch sicher angefahren wird.

Außerdem habe ich dann im Webfront jeweils einzelne „Zeile“ für jede Variable. Das hätte ich eigentlich schon ganz gerne kompakt im Web angezeigt.

Vielleicht könntest du mal deinen aktuellen Stand posten?!

Gruß
-bem-

Ich hab es bei mir so gelöst:

Du erstellst für jeden Rolladen eine Integer Variable und erstellst ein neues Variablenprofil mit den Zuständen Runter, Hoch, Stop, Schatten usw…

Das Actionscript baust du nach folgendem Beispiel auf:

<?
if ($_IPS['SENDER'] == "WebFront")
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);



    switch($IPS_VALUE)
    {

        case 2:
      		 //Befehl 
        break;
        case 1:
      		 //Befehl 
        break;
        case 0:
		//Befehl 
        break;
    }

}

?>

Jetzt hast du im Webfront nur noch eine Zeile mit deinen Schaltflächen nebeneinander.

Viele Grüße
Stephan

Hallo Stephan,

Danke für den Tipp.
Dass ist genau das was ich haben wollte.

Ich werde damit mal ein wenig herumexperimentieren und mich ggf. nochmal melden.

Gruß
-BEM-

Hallo Stephan,

ich bekomme die Variablen nur wie im Screenshot zu sehen in den Baum eingebaut.

Ist das so richtig oder kann ich die Variablen (Modbus) auch unter eine Instanz bekommen?

-Bem-

Hallo Stephan,

die einzelnen Variablen habe ich mehr oder weniger am Laufen, aber wo muss ich denn jetzt das von dir genannte Aktionsscript einbauen, damit ich im WebFront nur noch eine Zeile habe?

Kannst du mir das noch kurz zeigen?

Gruß
-Bem-

Hallo zusammen,

ich muss mal doof fragen, weil ich Anfänger bin und mich grad erst einarbeite:
ich hab den Inhalt des Textfiles separat in einzelne Bausteine kopiert und dann die Funktionsblöcke per FUP in mein Projekt eingebunden. Allerdings werden beim Übersetzen die ganzen lokalen Variablen angemeckert. Wo liegt denn da mein Fehler?

Gruß & Danke für eure Hilfe,
dfhome