PHP Modbus TCP连接失败求助:代码调试及端口疑问
PHP无法连接Modbus TCP设备问题排查
问题概述
我无法通过PHP连接Modbus TCP设备,但使用测试软件可正常获取数据,且ping目标设备(192.168.0.1)结果正常。
初始测试代码
require_once dirname(__FILE__) . '/../vendor/adduc/phpmodbus/Phpmodbus/ModbusMaster.php'; // Modbus master UDP $IP = '192.168.0.1' ; $RAM_location = '32769'; $RAM_NUM = '10' ; // Create Modbus object $modbus = new ModbusMaster($IP, "TCP"); // Read multiple registers try { $recData = $modbus->readMultipleRegisters(0, $RAM_location, $RAM_NUM); } catch (Exception $e) { // Print error information if any echo $modbus; echo $e; exit; } // Print data in string format echo PhpType::bytes2string($recData); ?>
测试结果
- 测试软件连接设备正常,可成功读取数据(截图显示读取流程无异常)
- 上述代码执行报错,错误信息显示连接相关异常(截图内容为连接失败提示)
修改站地址后的尝试
将站地址从0改为1,代码如下:
$IP = '192.168.0.1' ; $RAM_location = '32769'; $RAM_NUM = '10' ; // Create Modbus object $modbus = new ModbusMaster($IP, "TCP"); // Read multiple registers try { $recData = $modbus->readMultipleRegisters(1, $RAM_location, $RAM_NUM); } catch (Exception $e) { // Print error information if any echo $modbus; echo $e; exit; } // Print data in string format echo PhpType::bytes2string($recData);
测试结果
问题仍未解决,报错信息仍显示连接失败(截图内容为连接超时或响应异常)
额外疑问
打开Modbus服务器测试软件时提示502端口有问题,但用netstat命令查询该端口未被占用,请问这是否与PHP连接Modbus设备失败有关?
- 软件截图显示502端口异常提示
netstat查询截图显示无502端口占用记录
内容的提问来源于stack exchange,提问作者jacklee
相关产品推荐
相关产品推荐

