Я использую ajax для создания соединения Modbus и катушек записи. Моя проблема в том, что я могу установить катушки как истинные, но не ложные.
Сторона для вызова из браузера:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Startseite</title>
<link rel="stylesheet" href="./style.css">
<script src="jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
// Beispiel ähnlich https://www.lima-city.de/thread/jquery-alle-x-sekunden-div-neu-laden-load
var datei2load1 = "raum_1_content.php"; // --- zu ladende PHP Datei
var sek2load = 0.5; // --- alle x Sekunden!
$(document).ready(function() {
$.ajaxSetup ({
cache: false
});
$("#refresh1").load(datei2load1);
setInterval(function() {
$('#refresh1').load(datei2load1);
}, (sek2load * 1000));
});
function swichting(regitser, value) { // Beispiel ähnlich: https://stackoverflow.com/questions/39110915/use-ajax-to-run-php-script-with-button-click
$.ajax({
type: 'POST',
url: 'example_fc16_send.php',
data: "register=" + register + "&value=" + value
});
}
function writecoil(coil, value) { // Beispiel ähnlich: https://stackoverflow.com/questions/39110915/use-ajax-to-run-php-script-with-button-click
$.ajax({
type: 'POST',
url: 'example_fc15_send.php',
data: "coil=" + coil + "&value=" + value
});
}
</script>
</head>
<body >
<?php
echo "<div id='refresh1'></div>";
?>
PHP функция записи
<?php
$register = $_POST[coil];
$value = $_POST[value];
//$value = (isset($_POST[value]);
echo "Coil: " + $coil + "; ";
echo "Value" + $value + ";";
require_once dirname(__FILE__) . '/phpmodbus/ModbusMaster.php';
// Create Modbus object
$modbus = new ModbusMaster("192.168.188.33", "TCP");
// Data to be writen
$data = array($value);
$dataTypes = array("BOOL");
try {
// FC15
$modbus->writeMultipleCoils(1, $register, $data);
}
catch (Exception $e) {
// Print error information if any
echo $modbus;
echo $e;
exit;
}
// Print status information
//echo $modbus;
?>
Сторона для отображения с событием onclick (запись «true» работает ... «false» не работает)
<?php
require_once dirname(__FILE__) . '/phpmodbus/ModbusMaster.php';
// Create Modbus object
$modbus = new ModbusMaster("192.168.188.33", "TCP");
try {
// FC 3
$recDataCmd = $modbus->readMultipleRegisters(1, 12288, 16); // Command Array lesen
$recDataState = $modbus->readMultipleRegisters(1, 12288, 16); // Status Array lesen
}
catch (Exception $e) {
// Print error information if any
echo $modbus;
echo $e;
exit;
}
echo '
<main>
<div id="txt_seitentitel2"><font size = "+3" color="white" face="Arial">STARTSEITE</font></div>
<div id="backgroundstartseite"></div>
<a href="./Beleuchtung.html"><div id="but_bel_beleuchtung"></div></a>
<a href="./Beschattung.html"><div id="but_bel_beschattung"></div></a>
<a href="./Klima.html"><div id="but_bel_klima"></div></a>
<!-- Beleuchtung Szenenauswahl -->
<div id="but_bel_raum_ein" onclick="writecoil(Coil = 3, Value = true)"></div>
<div id="txt_raum_ein"><font size = "+2" color="white" face="Arial">RAUM EIN</p></font></div>
<div id="but_bel_raum_aus" onclick="writecoil(Coil = 3, Value = false)"></div>
<div id="txt_raum_aus"><font size = "+2" color="white" face="Arial">RAUM AUS</p></font></div>
<div id="but_bel_szene_1"></div>
<div id="txt_szene_1"><font size = "+2" color="white" face="Arial">SZENE 1</p></font></div>
<div id="but_bel_szene_2"></div>
<div id="txt_szene_2"><font size = "+2" color="white" face="Arial">SZENE 2</p></font></div>
<div id="fld_status_bel"></div>
<div id="fld_status_szene_1" ></div>
<div id="fld_status_szene_2"></div>
</main>
';
?>
Я проверяю соединение с помощью Modbus Poll .. Я могу установить для каждой катушки значение true, но не к ложному. Если я верну им значение false в опросе Modbus, я могу снова установить их значение true со своей страницы html.