PHP 및 Modbus TCP: 분산 장치 제어를 달성하는 방법에 대한 논의
개요:
사물 인터넷의 급속한 발전으로 분산 장치 제어가 중요한 과제가 되었습니다. 이 기사에서는 PHP 및 Modbus TCP 프로토콜을 사용하여 분산 장치 제어를 구현하는 방법과 독자가 방법을 더 잘 이해할 수 있도록 코드 예제를 작성하는 방법을 살펴봅니다.
준비:
코드 작성을 시작하기 전에 Modbus TCP 라이브러리가 설치되어 있는지 확인해야 합니다. 다음 명령을 사용하여 Linux 시스템에 설치할 수 있습니다:
sudo apt-get install php7.4-mbstring
function connectModbusDevice($ip, $port) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { die("无法创建套接字"); } $result = socket_connect($socket, $ip, $port); if ($result === false) { die("无法连接到Modbus设备"); } return $socket; }
$ip
및 $port
매개변수를 올바른 IP로 설정했는지 확인하세요. Modbus 장치 주소 및 포트. $ip
和$port
参数设置为正确的Modbus设备的IP地址和端口。
function readModbusRegister($socket, $registerAddress) { $request = "" . pack('n', $registerAddress) . ""; socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,获取寄存器的值 $registerValue = unpack('n', substr($response, 9, 2))[1]; return $registerValue; }
请确保将$registerAddress
参数设置为要读取的寄存器的地址。
function writeModbusRegister($socket, $registerAddress, $registerValue) { $request = "" . pack('n', $registerAddress) . pack('n', $registerValue); socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,检查写入操作是否成功 $statusCode = unpack('n', substr($response, 7, 2))[1]; if ($statusCode != 6) { die("写入寄存器失败"); } }
请确保将$registerAddress
参数设置为要写入的寄存器的地址,将$registerValue
function disconnectModbusDevice($socket) { socket_close($socket); }
$registerAddress
매개변수를 읽으려는 레지스터의 주소로 설정했는지 확인하세요. 레지스터 값 쓰기:
레지스터 값을 읽는 것 외에도 Modbus TCP 프로토콜을 사용하여 장치 레지스터에 데이터를 쓸 수도 있습니다. 다음은 레지스터 값을 쓰는 함수의 예입니다.$modbusIp = "192.168.1.100"; $modbusPort = 502; $modbusDevice = connectModbusDevice($modbusIp, $modbusPort); $registerAddress = 100; $registerValue = readModbusRegister($modbusDevice, $registerAddress); echo "寄存器 $registerAddress 的值为: $registerValue" . PHP_EOL; $registerAddress = 200; $registerValue = 500; writeModbusRegister($modbusDevice, $registerAddress, $registerValue); echo "成功将值 $registerValue 写入寄存器 $registerAddress" . PHP_EOL; disconnectModbusDevice($modbusDevice);
$registerAddress
매개변수를 쓰려는 레지스터의 주소로 설정하고 $registerValue를 설정했는지 확인하세요. code> 매개변수는 작성하려는 값으로 설정됩니다. 🎜🎜🎜Modbus 장치와의 연결 종료: 🎜Modbus 장치와의 통신이 완료되면 설정된 연결을 종료해야 합니다. 연결을 끊는 샘플 함수는 다음과 같습니다. 🎜🎜rrreee🎜전체 샘플 코드는 다음과 같습니다. 🎜rrreee🎜요약: 🎜이 글에서는 PHP와 Modbus TCP 프로토콜을 사용하여 분산 장치 제어를 구현하는 방법을 소개합니다. Modbus 장치 연결, 레지스터 값 읽기, 레지스터 값 쓰기, 연결 닫기 등 주요 기능에 대한 코드 예제를 제공합니다. 이러한 예제를 사용하면 독자는 PHP 및 Modbus TCP를 더 잘 이해하고 활용하여 분산 장치 제어를 구현할 수 있습니다. 🎜
위 내용은 PHP 및 Modbus TCP: 분산 장치 제어를 달성하는 방법에 대한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!