Ich versuche mich an einem LBS mit Exec und brauche Eure Hilfe!
Den Baustein triggere ich in 2 Stufen.
Der Baustein soll nur alle x Minuten laufen wird getriggert über E1
Wenn der LBS über E1 getriggert wird, sollen im Execteil nur die Eingänge ausgewertet werden, welche zuvor refreshed wurden.
Ich speichere die Refresh mit logic_setVar in Variablen
Vor dem Aufruf des Execteils sind die Variablen sauber gesetzt.
Wenn ich diese aber im Execteil abfrage sind diese 0
WAS MACHE ICH FALSCH??
Hier ein Auszug
Den Baustein triggere ich in 2 Stufen.
Der Baustein soll nur alle x Minuten laufen wird getriggert über E1
Wenn der LBS über E1 getriggert wird, sollen im Execteil nur die Eingänge ausgewertet werden, welche zuvor refreshed wurden.
Ich speichere die Refresh mit logic_setVar in Variablen
Vor dem Aufruf des Execteils sind die Variablen sauber gesetzt.
Wenn ich diese aber im Execteil abfrage sind diese 0
WAS MACHE ICH FALSCH??
Hier ein Auszug
PHP-Code:
function LB_LBSID($id) {
if ($E=logic_getInputs($id)) {
logic_setVar($id,106,$E[20]['value']); //loglevel
$version = getLogicElementVar($id, 100);
$lbsNo = getLogicElementVar($id, 101);
$logName = getLogicElementVar($id, 102) . "-LBS$lbsNo";
$logName = preg_replace('/ /', '_', $logName);
logic_setVar($id,107,$logName); // V#107 mit Logname belegen
$logLevelNames = array('none','Info','Info ausf.','Debug' );
logic_setVar($id,108,$logLevelNames);
//refreshes merken bis zum Eintreffen des Verarbeitungstrigger
if ($E[10]['refresh']==1){logic_setVar($id,10,1);}
if ($E[11]['refresh']==1){logic_setVar($id,11,1);}
if ($E[14]['refresh']==1){logic_setVar($id,14,1);}
if ($E[16]['refresh']==1){logic_setVar($id,16,1);}
if ($E[17]['refresh']==1){logic_setVar($id,17,1);}
if (logic_getVar($id,1)==0 && ($E[1]['refresh'] )) {
if (logic_getVar($id, 106) >= 1){
writeToCustomLog($logName,$logLevelNames[logic_getVar($id, 106)], " [v$version]:\t================ LBS gestartet LBS-Instanz ($id) ===============");
$refr_V16=logic_getVar($id,16);
$refr_V17=logic_getVar($id,17);
writeToCustomLog($logName,$logLevelNames[logic_getVar($id, 106)], " V16:$refr_V16 V17:$refr_V17 "); //hier ist V16 und V17 noch 1
}
logic_setVar($id,1,1); //setzt V1=1, um einen mehrfachen Start des EXEC-Scripts zu verhindern
logic_callExec(LBSID,$id); //EXEC-Script starten
//Merker zurücksetzen
logic_setVar($id,10,0);
logic_setVar($id,11,0);
logic_setVar($id,14,0);
logic_setVar($id,16,0);
logic_setVar($id,17,0);
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
require(dirname(__FILE__). "/../../../../main/include/php/ModbusMaster.php");
require(dirname(__FILE__). "/../../../../main/include/php/ModbusRegisterBlock.php");
set_time_limit(29); //Script darf nicht endlos laufen
sql_connect();
$E=logic_getInputs($id);
$V=logic_getVars($id);
$read_counter=0;
$read_aussentemperatur=999;
$ip=$E[2]['value'];
$modbus = new ModbusMaster($ip, "TCP");
writeToCustomLog($V[107],$V[108][$V[106]], "EXEC-Part: V16:$V[16] V17:$V[17] ");
$refr_V16=logic_getVar($id,16);
$refr_V17=logic_getVar($id,17);
writeToCustomLog($V[107],$V[108][$V[106]], "EXEC-Part: V16:$refr_V16 V17:$refr_V17 ");
//hier ist V16 V17 jeweils 0
try {
Kommentar