Ich habe für die Ansteuerung von 3er Gruppen PWM-LED für Pokey56E, sprich ein RGB-Lichtband, in der Webfront eine Integervariable mit Profil ~RGB genommen.
Mit diesen Werten und eingestellten 100kHz in der Pokeys56 PWM-Einheit funktioniert ein RGB-Lichband.
Es kommt als Hex-Wert für jede Farbe ein 00-FF-Wert, um folgendes Script zu triggern.
Um die einzelnen Werte für Rot, Blau und Grün zu bekommen, wird UND-Verknüpft und die Bit’s verschoben, sodass die Werte einzeln zur Verfügung stehen.
Edit:
Zusätzlich ein Ereigniss (bei Variablenänderung der Webfront Integervariable) eingefügt.
<?
IF ($_IPS['SENDER'] == "WebFront")
{
$Blau = 0x0000FF; // 255; // ist gleich Hex 0xFF
$Gruen =0x00FF00; // 65280; // ist gleich Hex 0xFF00
$Rot = 0xFF0000; // 16711680;// ist gleich Hex 0xFF0000
SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]); // Variable aktualisieren
$ErgebnissRot= (($_IPS["VALUE"] & $Rot)>>16);
$ErgebnissGruen= (($_IPS["VALUE"] & $Gruen)>>8);
$ErgebnissBlau= ($_IPS["VALUE"] & $Blau);
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
}
?>
Und noch ein Flash-Program für Pokeys56E und 3 LED- oder 1 RGB-Stripe:
<?
$i = 1;
Start:
$ErgebnissRot= 250 ;
$ErgebnissGruen= 250 ;
$ErgebnissBlau= 250 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 2 ;
$ErgebnissGruen= 2 ;
$ErgebnissBlau= 2 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 50 ;
$ErgebnissGruen= 50 ;
$ErgebnissBlau= 50 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 250 ;
$ErgebnissGruen= 250 ;
$ErgebnissBlau= 250 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 2 ;
$ErgebnissGruen= 2 ;
$ErgebnissBlau= 2 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 50 ;
$ErgebnissGruen= 50 ;
$ErgebnissBlau= 50 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 200 ;
$ErgebnissGruen= 200 ;
$ErgebnissBlau= 200 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 20 ;
$ErgebnissGruen= 20 ;
$ErgebnissBlau= 20 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 100 ;
$ErgebnissGruen= 100 ;
$ErgebnissBlau= 100 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 2 ;
$ErgebnissGruen= 2 ;
$ErgebnissBlau= 2 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 170 ;
$ErgebnissGruen= 17 ;
$ErgebnissBlau= 50 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$ErgebnissRot= 1 ;
$ErgebnissGruen= 1 ;
$ErgebnissBlau= 1 ;
// Die ersten drei Pokey56E PWM Pins
ModBus_WriteRegisterWord(46985 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 1 ModBus Gerät]*/,$ErgebnissRot);
ModBus_WriteRegisterWord(51424 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 2 ModBus Gerät]*/,$ErgebnissGruen);
ModBus_WriteRegisterWord(36547 /*[ModBus Pokey\Pokey56E 6 mal PWM\PWM 3 ModBus Gerät]*/,$ErgebnissBlau);
$i = $i+1;
//echo $i;
if ($i >9){
goto Stop;
} else {
Goto Start;
}
Stop:
?>
Gruß Helmut