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