Wago <-> Ip-Symcon Übertragungsproblem

Hallo Mitstreiter,
ich habe in einem größeren Projekt insgesamt 5*Wago, davon 3 an IPS angeklemmt, die Beleuchtung ist nahezu ausschließlich Dali, Taster, Raumcontroller, Heizungs- und Jalousiesteuerung erfolgt über EIB mit enprechenden Klemmen.
Problem 1:
Bei einem Stromausfall des Switch haben sich die 3 Wagos mit Socket Error aus dem Staub gemacht, und nicht wieder Anschluss gefunden. Bei einer Fehlkonfiguration mit dem selben Switch passierte es ebenfalls mal.

Abhilfe zu 1: Ich habe jetzt alle 10 Minuten ein Script mit
IPS_ApplyChanges(16104 /[Client Socket]/ );
IPS_ApplyChanges(22587 /[Client Socket]/ );
IPS_ApplyChanges(56102 /[Client Socket]/ );
laufen.
Ist das vernünftig, oder können da Daten verloren gehen, die während der Zeit ankommen?

Problem 2 ist nämlich:
bei einem Script zur Voreinstellung von Leuchtszenarien gehen immer wieder ein paar Lampen am Ende des Scripts ‚case 9:‘ nicht aus. Das Script ist hässlich, hat aber bei weniger Leuchtengruppen noch problemlos funktioniert. In die Wago wird dabei nur der entsprechende Wert in die zugehörigen Register geschrieben. Der Dimmvorgang läuft in der Wago ab, naja, oder halt nicht. Hat wer eine Idee, wo ich da ansetzen könnte?

<?
SetValue($_IPS[‚VARIABLE‘], $_IPS[‚VALUE‘]);
switch ($_IPS[‚VALUE‘])
{
case 1:
//ph
ModBus_WriteRegisterByte(59454 /[Modbusvariable\VT05\R04 Küche\r04bel]/ , 3);
ModBus_WriteRegisterByte(13283 /[Modbusvariable\VT05\R05 Flur\r05bel]/ , 5);
ModBus_WriteRegisterByte(35816 /[Modbusvariable\VT05\Terrasse\r01belaussen]/ , 1);
ModBus_WriteRegisterByte(51789 /[Modbusvariable\VT05\R03 Essen\r03beltisch]/ , 30);
ModBus_WriteRegisterByte(15567 /[Modbusvariable\VT05\R03 Essen\r03beltreppe]/ , 3);
ModBus_WriteCoil(50729 /[Modbusvariable\VT05\R01 Wohnen\RGB_Schalten]/ ,true);
ModBus_WriteCoil(24375 /[Modbusvariable\VT05\R04 Küche\RGB_Schalten]/ ,true);
ModBus_WriteRegisterByte(46197 /[Modbusvariable\VT05\R01 Wohnen\Steh_l]/ , 12);
ModBus_WriteRegisterByte(34721 /[Modbusvariable\VT05\R01 Wohnen\steh_r]/ , 22);
//1og
ModBus_WriteRegisterByte(47346 /[Modbusvariable\VT04\Freisitz\ModBus Gerät]/ , 1);
ModBus_WriteRegisterByte(20264 /[Modbusvariable\VT04\R21-23 Flurbereich\ModBus Gerät]/ , 5);
break;
case 2:
break;
case 9:
// ph
ModBus_WriteRegisterByte(39818 /[Modbusvariable\VT05\R01 Wohnen\r01bel]/ , 0);
ModBus_WriteRegisterByte(48310 /[Modbusvariable\VT05\R03 Essen\r03bel]/ , 0);
ModBus_WriteRegisterByte(59454 /[Modbusvariable\VT05\R04 Küche\r04bel]/ , 0);
ModBus_WriteRegisterByte(13283 /[Modbusvariable\VT05\R05 Flur\r05bel]/ , 0);
ModBus_WriteRegisterByte(56314 /[Modbusvariable\VT05\R06 Toilette\r06bel]/ , 0);
ModBus_WriteRegisterByte(28635 /[Modbusvariable\VT05\R07 Vorrat\r07bel]/ , 0);
ModBus_WriteRegisterByte(54280 /[Modbusvariable\VT05\R08 Technik\r08bel]/ , 0);
ModBus_WriteRegisterByte(51789 /[Modbusvariable\VT05\R03 Essen\r03beltisch]/ , 0);
ModBus_WriteRegisterByte(15567 /[Modbusvariable\VT05\R03 Essen\r03beltreppe]/ , 0);
ModBus_WriteRegisterByte(46197 /[Modbusvariable\VT05\R01 Wohnen\Steh_l]/ , 0);
ModBus_WriteRegisterByte(34721 /[Modbusvariable\VT05\R01 Wohnen\steh_r]/ , 0);
ModBus_WriteCoil(50729 /[Modbusvariable\VT05\R01 Wohnen\RGB_Schalten]/ ,false);
ModBus_WriteCoil(24375 /[Modbusvariable\VT05\R04 Küche\RGB_Schalten]/ ,false);
ModBus_WriteRegisterByte(35816 /[Modbusvariable\VT05\Terrasse\r01belaussen]/ , 0);
// 1og
ModBus_WriteRegisterByte(47346 /[Modbusvariable\VT04\Freisitz\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(10457 /[Modbusvariable\VT04\R09 Schlafen\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(19654 /[Modbusvariable\VT04\R10 Ankleiden\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(20868 /[Modbusvariable\VT04\R11 Badbereich\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(57066 /[Modbusvariable\VT04\R13 Arbeit\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(38544 /[Modbusvariable\VT04\R15 Fitness\li15]/ , 0);
ModBus_WriteRegisterByte(17177 /[Modbusvariable\VT04\R16 Gästezimmer\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(31613 /[Modbusvariable\VT04\R17 Gästebad\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(27636 /[Modbusvariable\VT04\R19 Gästetoilette\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(57855 /[Modbusvariable\VT04\R20 Hauswirtschaftsraum\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(20264 /[Modbusvariable\VT04\R21-23 Flurbereich\ModBus Gerät]/ , 0);
ModBus_WriteRegisterByte(17939 /[Modbusvariable\VT04\R24\bel24]/, 0);
break;
case 10:
// ph
ModBus_WriteRegisterByte(39818 /[Modbusvariable\VT05\R01 Wohnen\r01bel]/ , 100);
ModBus_WriteRegisterByte(48310 /[Modbusvariable\VT05\R03 Essen\r03bel]/ , 100);
ModBus_WriteRegisterByte(59454 /[Modbusvariable\VT05\R04 Küche\r04bel]/ , 100);
ModBus_WriteRegisterByte(39837 /[Modbusvariable\VT05\R04 Küche\r04belLED]/ , 100);
ModBus_WriteRegisterByte(13283 /[Modbusvariable\VT05\R05 Flur\r05bel]/ , 100);
ModBus_WriteRegisterByte(56314 /[Modbusvariable\VT05\R06 Toilette\r06bel]/ , 100);
ModBus_WriteRegisterByte(28635 /[Modbusvariable\VT05\R07 Vorrat\r07bel]/ , 100);
ModBus_WriteRegisterByte(54280 /[Modbusvariable\VT05\R08 Technik\r08bel]/ , 100);
ModBus_WriteRegisterByte(46197 /[Modbusvariable\VT05\R01 Wohnen\Steh_l]/ , 100);
ModBus_WriteRegisterByte(34721 /[Modbusvariable\VT05\R01 Wohnen\steh_r]/ , 100);
ModBus_WriteRegisterByte(35816 /[Modbusvariable\VT05\Terrasse\r01belaussen]/ , 100);
ModBus_WriteRegisterByte(51789 /[Modbusvariable\VT05\R03 Essen\r03beltisch]/ , 100);
ModBus_WriteRegisterByte(15567 /[Modbusvariable\VT05\R03 Essen\r03beltreppe]/ , 100);
ModBus_WriteCoil(50729 /[Modbusvariable\VT05\R01 Wohnen\RGB_Schalten]/ ,true);
ModBus_WriteCoil(24375 /[Modbusvariable\VT05\R04 Küche\RGB_Schalten]/ ,true);

// 1.OG
		ModBus_WriteRegisterByte(47346 /*[Modbusvariable\VT04\Freisitz\ModBus Gerät]*/ , 100);
     ModBus_WriteRegisterByte(10457 /*[Modbusvariable\VT04\R09 Schlafen\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(19654 /*[Modbusvariable\VT04\R10 Ankleiden\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(20868 /*[Modbusvariable\VT04\R11 Badbereich\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(57066 /*[Modbusvariable\VT04\R13 Arbeit\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(38544 /*[Modbusvariable\VT04\R15 Fitness\li15]*/ , 100);
      ModBus_WriteRegisterByte(17177 /*[Modbusvariable\VT04\R16 Gästezimmer\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(31613 /*[Modbusvariable\VT04\R17 Gästebad\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(27636 /*[Modbusvariable\VT04\R19 Gästetoilette\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(57855 /*[Modbusvariable\VT04\R20 Hauswirtschaftsraum\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(20264 /*[Modbusvariable\VT04\R21-23 Flurbereich\ModBus Gerät]*/ , 100);
      ModBus_WriteRegisterByte(17939 /*[Modbusvariable\VT04\R24\bel24]*/, 100);
	break;
default:

}
ips_sleep(100);
SetValue($_IPS[‚VARIABLE‘], 0);
?>

Hallo.

Problem 1 müsstest du dir noch einmal genauer ansehen und sagen, warum die Sockets nicht neu verbunden werden.

Wird der Fehlerzustand nicht erkannt?
Wird ein mit „rot“ markierter Socket nicht korrekt neu verbunden?
Liest du mindestens 1 Adresse alle z.B. 10 Sekunden (das ist nötig damit der Fehlerzustand sauber erkannt wird)

Zu Problem 2 würde ich dich bitte mal beim Fehlerfall direkt in der SPS zu schauen was im Merker steht. Wir haben in einem größeren Projekt das Problem schon gesehen, dass IP-Symcon alles korrekt in die Merker geschrieben hast, jedoch die SPS sich einfach bei einige Adressen verschluckt.

paresy

Hallo Paresy,

das Problem, das IPS sich nicht mit einer SPS nach einer Netzwerkunterbrechnung neu verbindet habe ich mit meinen 2 S7 ebenfalls. Hier kommt es zu den seltsamsten Meldungen. Z.B. Tempertatur = 2E8…
Oder es wird angezeigt, dass alle Lampen an sind, die Türen offen etc.
IPS beenden, Neustarten, alles gut

GRuß
bastelfrosch

Ich werde das nächste Woche nochmal testen, der Hausbesitzer ist nächste Woche nicht da, da kann ich nach Herzenslust die Anlage lahmlegen :slight_smile:

Hallo lo1504,

ich hatte dieses Problem auch mit meinen WAGO’s 750-841.

Ich frage den Status des Sockets über Value ab, bei einem Wert von 102 ist die Verbindung o.K…

Bei einem Kommunikationsproblem ist der Wert >102. Das erste Ereignis, meldet mit bei Grenzwertüberschreitung per Mail einen Ausfall, das zweite Ereignis, bei Normalzustand ebenfalls per Mail.

Über das Script „Socket überwachen“ wird nur bei Socketausfall der Socket zurückgesetzt und neu gestartet, bis er wieder läuft.

Skript: Socket überwachen

<?
CSCK_SetOpen(36900 /[Client Socket W_Dornloh]/ , false);
IPS_ApplyChanges(36900 /[Client Socket W_Dornloh]/);
ips_sleep(50);
echo CSCK_SetOpen(36900 /[Client Socket W_Dornloh]/ , true);
IPS_ApplyChanges(36900 /[Client Socket W_Dornloh]/ );
?>

Ich hoffe damit löst sich auch Dein Problem

Regeltechniker

LexmarkScan2013-01-20-212828.pdf (450 KB)

… Ich werde das mal einpflegen und den Stecker des Switch ziehen.