현재 위치: > 최신 기사 목록> PHP 최적화 기술 : MODBUS TCP 데이터 전송 효율을 향상시킵니다

PHP 최적화 기술 : MODBUS TCP 데이터 전송 효율을 향상시킵니다

M66 2025-06-03

PHP 최적화 기술 : MODBUS TCP 데이터 전송 효율을 향상시킵니다

MODBUS TCP 프로토콜은 산업 자동화 분야에서 널리 사용되며 일반적으로 컴퓨터 네트워크의 장치 간 데이터 교환에 사용됩니다. PHP 프로그래밍에서 Modbus TCP는 장치 데이터를 읽고 쓰는 데 사용됩니다. 그러나 TCP/IP 프로토콜을 기반으로 한 MODBUS TCP는 데이터 전송 중 네트워크 지연 및 통신 품질과 같은 요소에 의해 영향을받을 수 있으며, 이는 전송 효율에 영향을 미칩니다. 이 기사는 MODBUS TCP 데이터 전송의 효율성을 최적화하고 해당 코드 예제를 제공하기 위해 몇 가지 PHP 프로그래밍 기술을 공유합니다.

배치 읽기 및 쓰기 작업을 사용하십시오

여러 레지스터에서 데이터를 배치하거나 쓰면 커뮤니케이션 수가 줄어들어 MODBUS TCP의 전송 효율이 향상됩니다. 일반적으로 사용되는 기능 코드에는 16 (여러 레지스터 쓰기) 및 23 (여러 레지스터 읽기)이 포함됩니다. 다음은 배치 쓰기 작업을 수행하는 방법을 보여주는 PHP 코드 예제입니다.

$ IP = "192.168.1.100"; // modbus tcp 장치의 IP 주소 $ port = 502; // modbus tcp 장치의 포트 번호 // 3 레지스터 데이터의 배치 쓰기 $ data = array (100, 200, 300);
$ 수량 = count ($ data);

$ socket = socket_create (af_inet, sock_stream, sol_tcp);
socket_connect ($ socket, $ ip, $ port);

// 여러 레지스터 명령을 작성하여 MODBUS TCP 장치로 보냅니다. $ request = pack ( "nnncn", 0x0000, 0x0010, $ votenity, $ Quantity * 2, $ Quantity * 2);
foreach ($ data as $ value) {
    $ request. = pack ( "n", $ value);
}

socket_write ($ socket, $ request);
$ response = socket_read ($ socket, 1024); // modbus tcp device socket_close ($ socket)의 응답 데이터를 가져옵니다.

적절한 시간 초과를 설정하십시오

Modbus TCP 통신을 수행 할 때 효율적인 데이터 전송을 보장하는 데 적절한 시간 초과를 설정하는 것이 중요합니다. 합리적인 시간 초과는 과도한 네트워크 지연으로 인해 전반적인 효율성에 영향을 미치지 않을 수 있습니다. 다음은 시간 초과 시간을 설정하는 PHP 코드 예제입니다.

$ IP = "192.168.1.100"; // modbus tcp 장치의 IP 주소 $ port = 502; // modbus tcp 장치의 포트 번호 $ timeout = 2; // 타임 아웃을 2 초로 설정 $ socket = socket_create (af_inet, sock_stream, sol_tcp);
socket_connect ($ socket, $ ip, $ port);
socket_set_option ($ socket, sol_socket, so_rcvtimeo, array ( 'sec'=> $ timeout, 'usec'=> 0)); // 리셉션 타임 아웃 시간 Socket_set_option 설정 ($ socket, sol_socket, so_sndtimeo, array ( 'sec'=> $ timeout, 'usec'=> 0)); // 보내기 시간 보내기 시간 설정 // modbus tcp 명령을 보내고 응답 socket_close ($ socket)을 기다립니다.

동시 요청을 사용하십시오

동시 요청은 여러 요청을 동시에 보내고 응답을 기다리는 것을 말하며, 일반적으로 멀티 스레딩 또는 다중 처리를 통해 구현됩니다. MODBUS TCP 통신에서 동시 요청을 사용하면 데이터 전송 효율이 크게 향상 될 수 있습니다. 다음은 Multithreading을 사용하여 동시 요청을 구현하는 PHP 코드 예입니다.

$ IP = "192.168.1.100"; // modbus tcp 장치의 IP 주소 $ port = 502; // MODBUS TCP 장치의 포트 번호 // MODBUS TCP 명령 $ 스레드를 보내기 위해 여러 스레드를 만듭니다.
for ($ i = 0; $ i <10; $ i ++) {
    $ stread = new Thread (function () 사용 ($ ip, $ port) {
        $ socket = socket_create (af_inet, sock_stream, sol_tcp);
        socket_connect ($ socket, $ ip, $ port);
        // modbus tcp 명령을 보내고 응답 socket_close ($ socket)을 기다립니다.
    });
    $ thread-> start ();
    $ 스레드 [] = $ 스레드;
}

// 모든 스레드가 foreach ($ 스레드 AS $ 스레드)를 끝내기를 기다립니다.
    $ stread-> join ();
}

위의 최적화 기술을 구현하면 Modbus TCP 프로토콜을 사용할 때 PHP의 데이터 전송 효율을 효과적으로 향상시킬 수 있습니다. 그러나 실제 애플리케이션에서는 데이터 전송의 신뢰성과 보안을 보장하기 위해 네트워크 안정성 및 통신 프로토콜의 합리성과 같은 요소를 고려해야합니다.