Modbus는 산업 자동화 분야에서 널리 사용되는 통신 프로토콜입니다. Modbus TCP는 TCP/IP 네트워크를 기반으로 한 구현 방법입니다. Modbus TCP 프로토콜의 PHP 작동을 통해 장치 데이터와 상호 작용하여 레지스터 읽기 및 쓰기와 같은 기능을 실현할 수 있습니다. 이 기사에서는 PHP Parsing Modbus TCP 명령 및 응답 프로세스를 소개하고 실용적인 코드 예제를 제공합니다.
PHP에서 통신에 Modbus TCP를 사용하는 기본 프로세스는 다음과 같습니다.
<?php // Modbus장비 정보 $host = '192.168.1.1'; // Modbus장비IP주소 $port = 502; // Modbus장비端口号 // Modbus주문하다 $readCommand = pack('nnnn', 0x0001, 0x0004, 0x0000, 0x0008); // 레지스터를 읽습니다0x0000~0x0008 $writeCommand = pack('nnnC*', 0x0001, 0x0006, 0x0000, 0x01, 0x00, 0x0A); // 등록하기 위해 작성하십시오0x0000값0x0A // 설립하다TCP연결하다 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $result = socket_connect($socket, $host, $port); if (!$result) { die("연결하다Modbus장비失败!"); } // 发送读取주문하다 socket_write($socket, $readCommand, strlen($readCommand)); // 응답 데이터를받습니다 $response = socket_read($socket, 1024); $registers = unpack('n*', substr($response, 9)); // 등록 데이터를 구문 분석합니다 // 打印读取到的寄存器값 echo "读取到的寄存器값:"; foreach ($registers as $register) { echo $register . " "; } // 发送写入주문하다 socket_write($socket, $writeCommand, strlen($writeCommand)); // 응답 데이터를받습니다 $response = socket_read($socket, 1024); // 응답 데이터를 구문 분석합니다 // TODO: ~에 따르면Modbus协议응답 데이터를 구문 분석합니다 // 폐쇄TCP연결하다 socket_close($socket); ?>
예제 코드에서 먼저 Modbus 장치의 IP 및 포트를 기반으로 TCP 연결을 설정하십시오. Pack () 함수를 사용하여 이진 데이터로 레지스터로 읽거나 쓰는 명령을 변환하고 TCP를 통해 전송합니다. 장치가 반환 한 데이터를 수신 한 후 레지스터 값은 Unpack ()에 의해 구문 분석됩니다. 판독 값은 요구 사항에 따라 추가로 처리 될 수 있으며, Modbus 프로토콜에 따라 쓰기 작업을 구문 분석해야합니다.
PHP를 통해 Modbus 장치와의 데이터 상호 작용을 달성 할 수 있습니다. 이 기사는 기본 커뮤니케이션 프로세스 및 코드 예제를 제공하며, 개발자는보다 복잡한 기능을 구현하고 산업 자동화 시스템의 데이터 처리 기능을 개선하기 위해이 기반으로 확장 할 수 있습니다.