Получить ответ от RS485 modbus с помощью PHP

Я пытаюсь получить ответ на команду, которую я отправляю с помощью PHP на устройство RS485, используя приведенный ниже сценарий:

Это было взято из связанного сообщения, которое я сделал здесь: Проблема с адресацией MODBUS через RS485 и PHP в Windows, где мне помогли для отправки команды работает сценарий, предоставленный человеком, который мне помог. Теперь я пытаюсь отправить команду и получить ответ, но это не работает, ответ пустой.

Я также пробовал использовать https://github.com/toggio/PhpSerialModbus, но он говорит мне, что "невозможно открыть устройство".

Я знаю, что может взаимодействовать с устройством, потому что, если я использую какое-либо программное обеспечение Modbus, я могу отправить команду и получить ответ. введите изображение описание здесь

<?php
class rapidserial{
  function _blocking($device,$mode){
      stream_set_blocking($device, $mode);
      return true;
     }
  }
$rapidserial = new rapidserial();
$device = "COM3";
shell_exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=2 xon=off octs=off rts=on");
$comport = fopen($device, "r+b");
if ($comport === false)
    {
    die("Failed opening com port<br/>");
    }
    else
    {
    echo "Com Port Open<br/>"; 
    }
//Set non-blocking mode for writing
$rapidserial->_blocking($comport,0);
$atcmd = "\x0A\x04\x00\x00\x00\x49\x30\x87"; //
fputs($comport, $atcmd);
usleep(2000);
// Set blocking mode for reading
$rapidserial->_blocking($comport,1);
echo 'Response:';
$res = fgets($comport, 4017);
var_dump ($res);
fclose($comport);
?>
Прохор
Вопрос задан30 марта 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.