Mit Windows 7 Zeitverzögerungen

Hallo,

ich habe vorgestern von V2.7 auf V3.2 umgestellt und habe ein ähnliches Problem.
Verwendet wird Windows 2008r2 64bit mit Realtek RTL8168B/811B-Familie-PCI-E-Gigabit-Ethernet-NIC (NDIS 6.2) als Onboard Karte

Folgender Code

$rollos = array(28839 /[Räume\Wohnzimmer\Rollladen links]/ ,35463 ,
32521 /[Räume\Wohnzimmer\Rolladen Tür rechts]/ ,18310 );
set_rollo(array(0,0,0,0));
function set_rollo($daten){
global $rollos;
for ($i=0;$i<4;$i++){
$time = -microtime(true);
ModBus_WriteRegisterByte($rollos[$i], $daten[$i]);
IPS_Sleep(10);
$time += microtime(true);
echo "Runde $i ".sprintf(’%f’, $time),PHP_EOL;
}
}

sorgt für folgende Ausgabe (mit mehreren Durchgängen immer ähnliche Ausgaben

Runde 0 3.611361
Runde 1 2.904291
Runde 2 1.258126
Runde 3 0.224022

Vorher musste ich mit V2.7 die Sleep auf 200ms setzen, damit die Rolläden (normal noch etwas mehr) nicht absolut gleichzeitig losfahren um Stromspitzen zu vermeiden. Sprich vorher wurde der Befehl absolut synchron ausgeführt.

Hi,

bei mir hab ich den Fehler nur wegbekommen in dem ich eine andere Wago genommen habe. Nach Deiner Signatur hast Du aber nicht die 841er die bei mir die Probleme bereitet hat.
Alles andere, WIN 32 oder 64 bit / Netzwerkartentausch (Onboard, PCI, PCI-E, verschiedene Hersteller) / Netzwerkeinstellungen / Switch, Hub oder Kreutzkabel hat nichts gebracht. Eine Reduzierung der I/O-Bausteine brachte eine „kleine“ Besserung.

Aber es kann doch nicht sein, dass es mit der V2.7 auf dem gleichen Rechner ging. Ich habe dazu folgendes im Internet gefunden:
http://sourceforge.net/projects/delphimodbus/ vielleicht hilft das ja noch weiter.

an paresy: wurde zwischen 2.7 und 3.2 irgendwas am TCP/IP Stack bzw. Modbus Modul in IPS umgebaut?

Es waren nicht die Verschiedenen IPS Versionen sondern WIN7 das die Probleme brachte. Ältere IPS Version mit WIN7 ging auch nicht. Demnach muss es wohl eine Änderung im Windows gewesen sein. Jede Kombination mit XP die ich ausprobiert habe hat funktioniert. Ich hatte auch befürchtet das die WIN7 Updates irgenetwas verändern und hatte alles getestet bevor ich die Updates installiert habe, aber nö.

Dann haben wir wohl nicht die gleichen Probleme, denn bei mir lief es mit Windows 7 lange problemlos. Das Problem ist Wago bekannt und es gibt eine neue DLL, diese müsste nur in IP-Symcon eingebunden werden, ich kann das leider nicht und ging auch davon aus, dass die Modbus Kommunikation weiterhin so läuft wie mit der alten Version.

Ich konnte es in der Zwischenzeit auf einem Windows 7 32bit Rechner mit Intel Netzwerkkarte Testen, gleiches Problem. Jetzt hoffe ich auf den IP-Symcon Support, dass denen noch was einfällt.

Nachtrag vom 09.01.: Ich habe heute Mittag mit einem kleinem Script

$instances = IPS_GetInstanceListByModuleID("{CB197E50-273D-4535-8C91-BB35273E3CA5}");$count=0;foreach($instances as $instance){$count++;	// print "'$instance' => '".IPS_GetProperty($instance,"Poller")."', ";	 //IPS_SetProperty($instance,"Poller", "2000"/*$original[$instance]*/); IPS_ApplyChanges($instance);}print $count;

meine Modbus Geräte alle auf einen Schlag verändert und kann sagen, dass das Schreiben mit 2s Abfrageintervall wieder geht. Grund ist: Die Lese Anfrage blockiert die Kommunikation. Daher kommen die Schreibbefehle nicht mehr durch.