현재 위치: > 최신 기사 목록> 산업 제어 시스템 커뮤니케이션을위한 PHP 및 Modbus TCP 프로토콜 사용 방법

산업 제어 시스템 커뮤니케이션을위한 PHP 및 Modbus TCP 프로토콜 사용 방법

M66 2025-06-06

MODBUS TCP 프로토콜 개요

MODBUS TCP는 TCP/IP 기반 산업 통신 프로토콜로 PLC, 원격 I/O, 센서 및 기타 자동화 장치 간의 통신에 일반적으로 사용됩니다. 이 프로토콜은 이더넷을 기반으로하며 데이터 읽기, 레지스터 쓰기 및 장치 제어를 포함한 기능을 지원합니다.

커뮤니케이션 아키텍처에서 Modbus TCP는 일반적으로 마스터에 의해 시작되며 슬레이브의 명령에 응답합니다. 이 구조를 통해 마스터 스테이션은 여러 산업 장비의 제어를 효율적으로 중앙 집중화하여 중앙 집중식 데이터 수집 및 원격 제어를 실현할 수 있습니다.

PHP를 사용하여 Modbus TCP 통신 모듈을 구축하십시오

웹 개발에 널리 사용되지만 PHP는 특정 산업 통신 작업, 특히 Edge Computing 또는 중간 계층 시스템에 유능합니다. 다음은 PHP를 사용하여 Modbus TCP 커뮤니케이션을 구현하기위한 예제 코드입니다.
<?php
class ModbusTCP {
    private $socket;

    public function __construct($ip, $port) {
        $this-> socket = socket_create (af_inet, sock_stream, sol_tcp);
        socket_connect ($ this-> socket, $ ip, $ port);
    }

    공개 함수 readRegisters ($ slaveId, $ registerAddress, $ registerCount) {
        $ buffer = pack ( "nnnn", $ slaveId, 0x03, $ registerAddress, $ RegisterCount);
        socket_send ($ this-> 소켓, $ 버퍼, strlen ($ buffer), 0);

        $ response = &#39;&#39;;
        $ bytes = socket_recv ($ this-> socket, $ response, 2048, msg_waitall);

        $ registers = 풀 ( "n*", substr ($ response, 9));
        반환 $ 레지스터;
    }

    Public Function WriteRegister ($ slaveId, $ registerAddress, $ registerValue) {
        $ buffer = pack ( "nnn", $ slaveId, 0x06, $ registerAddress, $ registerValue);
        socket_send ($ this-> 소켓, $ 버퍼, strlen ($ buffer), 0);
    }

    공개 함수 __destruct () {
        socket_close ($ this-> socket);
    }
}

// 예제 $ modbus = new modbustcp ( &#39;192.168.0.1&#39;, 502);
$ registers = $ modbus-> readRegisters (1, 0, 10);

foreach ($ registers as $ asddress => $ value) {
    Echo "Register $ 주소 : $ value \ n";
}

$ modbus-> WriteRegister (1, 0, 100);

이 코드는 기본 ModBustCP 클래스를 보여줍니다.이 클래스는 노예와의 연결을 구현하고 PHP 소켓 기능을 통해 레지스터를 읽고 쓰십시오. 실제로 사용하면 개발자는 클래스 인스턴스를 초기화하고 장치 IP 및 포트를 전달하여 산업 장비의 데이터 상호 작용을 실현하면됩니다.

응용 프로그램 예제 분석

위의 예에서, 시스템은`192.168.0.1 '의 IP 주소와`502`의 포트가있는 modbus 슬레이브에 연결됩니다. `readregisters '메소드를 통해 처음 10 개의 레지스터의 값을 읽고 하나씩 출력하십시오. 마지막으로,`writeergister '메소드는``100'값을 첫 번째 레지스터에 씁니다. 이 프로세스는 Modbus TCP의 가장 일반적으로 사용되는 두 가지 기능, 즉 데이터 읽기 및 제어 지침 발행을 반영합니다.

결론

이 기사는 PHP 및 Modbus TCP 프로토콜을 사용하여 산업 제어 시스템의 데이터 통신을 실현하는 방법을 자세히 소개합니다. 프로토콜 구조에서 PHP 구현에 이르기까지 개발자는 자체 통신 모듈을 신속하게 구축하여 산업 자동화 프로젝트에 안정적인 데이터 상호 작용 기능을 제공 할 수 있습니다. PHP는 전통적인 산업 제어 언어는 아니지만 소켓 프로그래밍을 통해 일부 산업 제어 시스템 통합 작업에 여전히 유능할 수 있습니다.

참조 :
[1] Modbus 응용 프로그램 프로토콜 사양 v1.1b3 - https://modbus.org/docs/modbus_application_protocol_v1_1b3.pdf