LBS: Ein Merkerwort wird per Modbus TCP Wago (oder andere Steuerungen) in 16Bits zerlegt für Edomi:
Code:
###[DEF]###
[name =Modbus Word → 16-Bit ]
[e#1 =MW ]
[e#2 =Abfragetimer ]
[a#1 =Bit 0 ]
[a#2 =Bit 1 ]
[a#3 =Bit 2 ]
[a#4 =Bit 3 ]
[a#5 =Bit 4 ]
[a#6 =Bit 5 ]
[a#7 =Bit 6 ]
[a#8 =Bit 7 ]
[a#9 =Bit 8 ]
[a#10 =Bit 9 ]
[a#11 =Bit 10 ]
[a#12 =Bit 11 ]
[a#13 =Bit 12 ]
[a#14 =Bit 13 ]
[a#15 =Bit 14 ]
[a#16 =Bit 15 ]
[v#1 =0]
###[/DEF]###
###[HELP]###
E1: Eingang 1 Byte (0..255)
A1..A8: Bit0..Bit7 (Bit = Wert 0 oder 1)
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
$v1=$E[1]['value'];
setLogicElementVar($id,1,$v1);
}
if ($E[2]['value']=1 && $E[2]['refresh']==1) {
callLogicFunctionExec(LBSID,$id); //EXEC-Script starten
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
require_once(dirname(__FILE__)."/../../../../main/include/php/ModbusMaster.php");
set_time_limit(1);
sql_connect();
$v1 = getLogicElementVar($id,1);
$modbus = new ModbusMaster("192.168.2.45", "TCP");
try {
// FC 3 1x16-bit Integer
$recData = $modbus->readMultipleRegisters(0, $v1, 1);
}
catch (Exception $e) {
exit;
}
setLogicLinkAusgang($id,1,(($recData[1]>> 0) & 1));
setLogicLinkAusgang($id,2,(($recData[1]>> 1) & 1));
setLogicLinkAusgang($id,3,(($recData[1]>> 2) & 1));
setLogicLinkAusgang($id,4,(($recData[1]>> 3) & 1));
setLogicLinkAusgang($id,5,(($recData[1]>> 4) & 1));
setLogicLinkAusgang($id,6,(($recData[1]>> 5) & 1));
setLogicLinkAusgang($id,7,(($recData[1]>> 6) & 1));
setLogicLinkAusgang($id,8,(($recData[1]>> 7) & 1));
setLogicLinkAusgang($id,9,(($recData[0]>> 0) & 1));
setLogicLinkAusgang($id,10,(($recData[0]>> 1) & 1));
setLogicLinkAusgang($id,11,(($recData[0]>> 2) & 1));
setLogicLinkAusgang($id,12,(($recData[0]>> 3) & 1));
setLogicLinkAusgang($id,13,(($recData[0]>> 4) & 1));
setLogicLinkAusgang($id,14,(($recData[0]>> 5) & 1));
setLogicLinkAusgang($id,15,(($recData[0]>> 6) & 1));
setLogicLinkAusgang($id,16,(($recData[0]>> 7) & 1));
?>
###[/EXEC]###


Kommentar