>  기사  >  백엔드 개발  >  PHP 개발 실습: 유연하고 안정적인 Modbus TCP 통신 애플리케이션 구축

PHP 개발 실습: 유연하고 안정적인 Modbus TCP 통신 애플리케이션 구축

王林
王林원래의
2023-07-17 21:09:081933검색

PHP 개발 실습: 유연하고 안정적인 Modbus TCP 통신 애플리케이션 구축

널리 사용되는 통신 프로토콜인 Modbus TCP는 산업 제어 시스템에서 널리 사용되며 이더넷을 통해 장치 간 통신 및 데이터 상호 작용을 실현합니다. 강력한 서버 측 프로그래밍 언어인 PHP를 사용하면 유연하고 안정적인 Modbus TCP 통신 애플리케이션을 구축할 수 있습니다. 이 기사에서는 PHP를 사용하여 Modbus TCP 통신 애플리케이션을 개발하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. Modbus TCP 프로토콜 소개
Modbus TCP는 TCP/IP 프로토콜 스택을 기반으로 하는 Modbus 프로토콜의 응용 형태로, 네트워크 내 장치 간 통신 및 데이터 교환에 사용됩니다. Modbus TCP는 표준 Modbus 프로토콜 형식을 사용하여 Modbus RTU/ASCII 데이터를 TCP/IP 메시지에 캡슐화하고 네트워크를 통해 전송합니다. Modbus TCP는 연결 지향 통신 방식을 채택하고 있으며 간단하고 효율적이며 안정적입니다.

2. PHP와 Modbus TCP 간의 통신 방법
PHP는 소켓 확장 모듈을 통해 Modbus TCP와 통신할 수 있습니다. 먼저,socket_create() 함수를 사용하여 소켓 소켓을 생성한 다음,socket_connect() 함수를 사용하여 Modbus TCP 장치와 연결을 설정해야 합니다. 연결이 설정된 후, Modbus TCP 장치에 요청 메시지를 보내기 위해 소켓_write() 함수를 사용하고, 장치가 반환하는 응답 메시지를 받기 위해 소켓_read() 함수를 사용할 수 있습니다. 마지막으로, 소켓_close() 함수를 사용하여 연결을 닫습니다.

3. PHP 코드 예제
다음은 Modbus TCP 장치에서 보유 레지스터 데이터를 읽는 기능을 구현하는 간단한 PHP 코드 예제입니다.

<?php
// Modbus TCP设备地址
$host = "192.168.1.1";
// Modbus TCP端口号
$port = 502;

// 创建Socket套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "创建Socket套接字失败!";
    exit();
}

// 建立与Modbus TCP设备的连接
$result = socket_connect($socket, $host, $port);
if ($result === false) {
    echo "连接Modbus TCP设备失败!";
    exit();
}

// 读取保持寄存器数据的请求报文
$request = hex2bin("0001000000060113000002");

// 发送请求报文到Modbus TCP设备
$result = socket_write($socket, $request, strlen($request));
if ($result === false) {
    echo "发送请求失败!";
    exit();
}

// 接收Modbus TCP设备返回的响应报文
$response = socket_read($socket, 1024);
if ($response === false) {
    echo "接收响应失败!";
    exit();
}

// 处理Modbus TCP设备返回的响应数据
$data = substr($response, 9);
$registers = unpack("n*", $data);
print_r($registers);

// 关闭与Modbus TCP设备的连接
socket_close($socket);
?>

위 코드에서는 먼저 소켓_create() 함수를 사용하여 소켓 소켓을 만든 다음, 소켓_connect() 함수를 사용하여 Modbus TCP 장치와 연결을 설정합니다. 그런 다음 hex2bin() 함수를 사용하여 전송할 요청 메시지를 바이너리 형식으로 변환한 후, 소켓_write() 함수를 사용하여 요청 메시지를 장치로 보냅니다.

장치에서 반환된 응답 메시지를 받은 후, 소켓_read() 함수를 사용하여 응답 메시지를 읽고 보유 레지스터 데이터를 구문 분석합니다. 마지막으로, 소켓_close() 함수를 사용하여 장치에 대한 연결을 닫습니다.

4. 요약
이 글에서는 PHP를 사용하여 Modbus TCP 통신 애플리케이션을 개발하는 방법을 소개하고 해당 코드 예제를 제공합니다. PHP와 Modbus TCP 간의 통신을 통해 장치 간 데이터 교환 및 제어가 가능합니다. 개발자는 자신의 애플리케이션 요구 사항을 충족하기 위해 실제 요구 사항에 따라 코드를 수정하고 확장할 수 있습니다. 이 글을 통해 독자들이 Modbus TCP 통신의 원리를 이해하고 실제 프로젝트에 성공적으로 적용하는 데 도움이 되기를 바랍니다.

위 내용은 PHP 개발 실습: 유연하고 안정적인 Modbus TCP 통신 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.