현재 위치: > 최신 기사 목록> MODBUS TCP 명령 분석 및 응답 처리를 구현하기위한 PHP 튜토리얼

MODBUS TCP 명령 분석 및 응답 처리를 구현하기위한 PHP 튜토리얼

M66 2025-09-11

개요

Modbus는 산업 자동화 분야에서 널리 사용되는 통신 프로토콜입니다. Modbus TCP는 TCP/IP 네트워크를 기반으로 한 구현 방법입니다. Modbus TCP 프로토콜의 PHP 작동을 통해 장치 데이터와 상호 작용하여 레지스터 읽기 및 쓰기와 같은 기능을 실현할 수 있습니다. 이 기사에서는 PHP Parsing Modbus TCP 명령 및 응답 프로세스를 소개하고 실용적인 코드 예제를 제공합니다.

MODBUS TCP 통신 프로세스

PHP에서 통신에 Modbus TCP를 사용하는 기본 프로세스는 다음과 같습니다.

  • TCP 연결 설정 : PHP 소켓 기능을 사용하여 MODBUS 장치에 연결하십시오.
  • 어셈블리 modbus 명령 : 프로토콜 형식으로 레지스터를 읽거나 쓰는 이진 명령을 생성합니다.
  • 보내기 명령 : TCP 연결을 통해 장치로 명령을 보냅니다.
  • 응답 수신 : PHP를 사용하여 장치가 반환 한 데이터를받습니다.
  • 분석 응답 : 이진 데이터를 처리하기 위해 읽을 수있는 형식으로 구문 분석합니다.

PHP 샘플 코드

<?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 장치와의 데이터 상호 작용을 달성 할 수 있습니다. 이 기사는 기본 커뮤니케이션 프로세스 및 코드 예제를 제공하며, 개발자는보다 복잡한 기능을 구현하고 산업 자동화 시스템의 데이터 처리 기능을 개선하기 위해이 기반으로 확장 할 수 있습니다.