Hallo,
ich habe etwas Probleme mit zwei Vellman USB-Boards
Vorrangig werden die beiden Board zur Ansteuerung von Rollläden benutzt
jeweils ein Kanal für AUF und ein Kanal für ZU.
Es scheint Probleme zu geben, wenn IPSYMCON mit zwei Board kommunizieren muss.
(Script siehe unten)
Probleme gibt es vor allem beim „Velleman 2“. Channels werden nicht zurückgesetzt oder Channels die gar nicht angesprochen wurden (5,6,7,8) werden wahllos gesetzt bzw. zurückgesetzt.
Das Script dient dazu, dass nach einem Öffnen bzw. Schließen von Rollläden nach ca. 30 Sekunden alle Relais zurückgesetzt werden. Die ist notwendig, da ich noch lokale Taster installiert habe, die an der Software vorbei direkt auf die Relais wirken.
Jedes Board allein (eins abgezogen und Rechner neu gestartet) funktioniert einwandfrei.
Die einzelnen WriteDigitalChannel(ID,Channel,0) durch WriteDigital(ID,0) zu ersetzen zeigt das gleiche Verhalten.
File : Rollladenreset_global_Velleman.ips.php
Trigger : keiner
Interval : 10 sek.
*/
// Zeiteinheit * 10 Sekunden
// „Rollladen_Reset_Timer“ wird bei jeder Betätigung auf 3 gesetzt
// alle Rolllädenrelais ausschalten wenn Timer abgelaufen ist
$TimerReset = GetValueInteger(„Rollladen_Reset_Timer“);
If ($TimerReset <= 0) {
// alle Rolllädenports zurücksezten – Velleman 1 (23729)
VELLEUSB_WriteDigitalChannel(23729,1,False);
VELLEUSB_WriteDigitalChannel(23729,2,False);
VELLEUSB_WriteDigitalChannel(23729,3,False);
VELLEUSB_WriteDigitalChannel(23729,4,False);
VELLEUSB_WriteDigitalChannel(23729,5,False);
VELLEUSB_WriteDigitalChannel(23729,6,False);
VELLEUSB_WriteDigitalChannel(23729,7,False);
VELLEUSB_WriteDigitalChannel(23729,8,False);
// alle Rolllädenports zurücksezten – Velleman 2 (27917)
VELLEUSB_WriteDigitalChannel(27917,1,False);
VELLEUSB_WriteDigitalChannel(27917,2,False);
VELLEUSB_WriteDigitalChannel(27917,3,False);
VELLEUSB_WriteDigitalChannel(27917,4,False);
}
If ($TimerReset < 0) $TimerReset = 0;
If ($TimerReset > 0) $TimerReset–;
SetValueInteger(„Rollladen_Reset_Timer“,$TimerReset);
?>
Da ich mir auf das Verhalten keine Reim machen konnte habe ich durch Zufall noch einen sehr eigenartigen Effekt festgestellt:
Das Script wird ja nach Ablauf des Timervariable (TimerReset = 0) alle 10 Sekunden durchlaufen und alle angesprochenen Channels sollen zurückgesetzt werden.
VELLEUSB_WriteDigitalChannel(23729,1,False);
VELLEUSB_WriteDigitalChannel(23729,2,False);
VELLEUSB_WriteDigitalChannel(23729,3,False);
VELLEUSB_WriteDigitalChannel(23729,4,False);
VELLEUSB_WriteDigitalChannel(23729,5,False);
VELLEUSB_WriteDigitalChannel(23729,6,False);
VELLEUSB_WriteDigitalChannel(23729,7,False);
VELLEUSB_WriteDigitalChannel(23729,8,False);
// alle Rolllädenports zurücksezten – Velleman 2 (27917)
VELLEUSB_WriteDigitalChannel(27917,1,True);
VELLEUSB_WriteDigitalChannel(27917,2,True);
VELLEUSB_WriteDigitalChannel(27917,3,False);
VELLEUSB_WriteDigitalChannel(27917,4,False);
Ich habe in den beiden Zeilen für (27917) Velleman 2 die beiden Channels 1,2 auf TRUE gesetzt. Die Relais ziehen auch an.
Jetzt kommt das merkwürdige. Bei jedem Durchlauf des Scriptes hört man die Relais kurz abfallen und sofort wieder anziehen obwohl sie nie auf FALSE gesetzt waren.
Deaktiviert man die beiden Programmzeilen
// VELLEUSB_WriteDigitalChannel(23729,1,False);
// VELLEUSB_WriteDigitalChannel(23729,2,False);
hört man die Relais nicht abfallen.
Für mich sieht es so auf, dass eine Änderung des Channels von Board 1 (23729) auch Änderungen auf Board 2 (27917) hervorruft.
Hat jemand für diesen Effekt eine Erklärung.
Danke im Voraus
René