aktuell leide ich unter ner leichten Denkblockade ;-))
Ich habe folgendes Problem:
Meine Lichtsteuerung ist komplett mit Tastern realisiert, welche auf den Digitalen Eingangskarten meiner Wago SPS liegen. Zum schalten eines Lichtes (DO-Karte mit Relays dahinter) und hab das schalten des Lichtes mit folgender kleinen Funktion geregelt:
trigger(CLK := theValue);
flipflop();
IF trigger.Q = 1 AND state = 0 THEN
flipflop.RESET1 := 0;
flipflop.SET := 1;
END_IF;
IF trigger.Q = 1 AND state = 1 THEN
flipflop.SET := 0;
flipflop.RESET1 := 1;
END_IF;
Nun hab ich das Problem, das IPS die Licht- ein ausgänge nur als Schalter bedient.
Ich komm aktuell leider nicht weiter, kann mir evtl. jemand von euch verraten wie Ihr die Einbindung der Wago realisiert habt.
P.S. Am liebsten würde ich die Wago Bibliothek zur Gebäudeautomatisierung hierzu nutzen.
Sehr gut. So habe ich mir das immer vorgestellt. Direktschaltung in IP-Symcon und per Taster innerhalb der SPS bzw. an den Wandtastern. Schön gelöst über die XOR Verknüpfung
Wenn man es nicht direkt versteht… einfach ausprobieren
Werde ich heute Abend mal testen.
Welche Variante ist denn systemtechnisch (IPS) Ressourcensparender? Die Version mit dem Merker, der nur kurz von IPS „getastet“ wird oder diese Variante? Wenn ich diese Variante nehme, habe ich doch im schlechtesten Fall eine ständige Signalübertragung ?? Oder denke ich da jetzt zu kompliziert?
ich bin mir nicht ganz sicher was du mit „Merker tasten“ meinst. Die Modbus Adressen sind ja nichts anderes als Merker. Den Status musst du eh pollen. Solange ich keine Performance Probleme bekomme, werde ich bei dieser Variante bleiben - weil einfach.
Etwas unelegant ist, das IPS jedes Bit einzeln „bearbeitet“ ( 1bit = 1 tcp query/1 tcp reponse ) Eleganter wäre, zumindest was den Traffic angeht, zusammenhängende Adressbereiche in einem Rutsch zu lesen/schreiben. Das könnte man auch mit PHP bytecode erschlagen, sehe ich aber eher als IPS Hintergrund Aufgabe an.
In Industriesystemen definiert man meistens einen Adressbereich und die Visualisierung pickt sich einen boolschen Wert aus dem Pool.
Um das pollen zu verhindern, koennte man von der Wago direkt auf einen IPS Server Socket senden…
Die Frage ist, ob es bei einem Einfamilienhaus überhaupt zu Engpässen kommt…
Das frage ich mich auch … , daher ja meine Frage dazu.
Ich habe bisher extra Merker in der Wago definiert, die parallel mit den Tastereigängen auf einen Stromstoßschalterbaustein gehen. Um das Transparent zu halten, habe ich dann natürlich die Merker auch in IPS sichtbar gemacht und somit einiges mehr an Variablen.
Ich glaube ich werde deine Lösung mal testen und probehalber eine Etage umschreiben.
Was die Abfrage zusammenhängender Adressbereiche an geht, hast du dich schon mal mit der phpmodbus.lib beschäftigt?
Damit dürfte das doch gehen oder? Ich hatte mich auch schon daran versucht, bin aber kläglich gescheitert und den „normalen“ Weg gegangen.
ich glaube ich habe da ein timing problem. Habe die Logik von mibu in einem 100ms Task laufen. Schalten über den SPS DI funktioniert. Aber schalten aus IPS heraus nicht. Habe den Timer in IPS auf 500ms gestellt, bekomme den SPS Ausgang von IPS aus nicht geschaltet. Schaltet nur manchmal ganz kurz.
Was muss ich genau in IPS machen? Mibu, hast du in IPS ein Skript laufen?
ich bin zwar nicht mibu, aber ich betreibe meine Wago genau so, ist für mich de beste und einfachste Lösung. Nein du brauchst keine Scripts für die Steuerung, und die Ausgänge schalten bei mir auch nicht nur mal kurz.
Ich vermuste den Fehler in deinem Codesys Programm. Bist du dir
sicher das due das mit ner XOR Verknüpfung gelöst hast?
Das Timing von 500ms finde ich persönlich sehr kurz gewählt, ist bestimmt ganz schön Traffic wenn viele Ausgänge abgefragt werden.
Kannst du mal ein Bild von der Modbus Adresse in IPS machen und eins von dem Codesys Programmteil?
IPS_LichtschrankeAlarm AT %MX0.0: BOOL;
IPS_L_Nebeneingang AT %MX0.1: BOOL;
IPS_CentOFF AT %MX0.2:BOOL;
IPS_CentON AT %MX0.3:BOOL;
IPS_L_Diele1 AT %MX0.4:BOOL;
IPS_Temp1 AT %MD1: REAL;
IPS_Temp2 AT %MD2: REAL;
ich habe mal das Beispiel von mibu ausprobiert aber scheinbar stelle ich mich ein wenig zu dumm an;
wenn ich den DI taste wird der Ausgang gesetzt und der Merker ebenfalls,
bei nochmaligem tasten wird der Ausgang ausgeschaltet,Merker dito.
Wenn ich den Merker taste wird der Ausgang nur gesetzt solange der Merker True ist.
Wo liegt der Fehler? Möchte ja eine Tastersteuerung mit Rückmeldung Ein/Aus haben.
Der Merker wird nicht getastet. Aus IPS kannst du direkt EIN/Aus über den Merker schalten.
Und bekommst gleichzeitig über den GLEICHEN Merker eine Rückmeldung, ob der Eingang aus/ein ist.