>백엔드 개발 >PHP 튜토리얼 >PHP에서 Modbus TCP 응답 메시지를 구문 분석하고 처리하는 방법

PHP에서 Modbus TCP 응답 메시지를 구문 분석하고 처리하는 방법

WBOY
WBOY원래의
2023-07-17 19:41:041387검색

PHP에서 Modbus TCP 응답 메시지를 구문 분석하고 처리하는 방법

개요:
Modbus는 산업 제어 시스템에서 데이터를 전송하는 데 사용되는 통신 프로토콜입니다. Modbus TCP는 TCP/IP 프로토콜을 기반으로 데이터를 전송하는 Modbus 프로토콜을 구현한 것입니다. PHP에서는 일부 라이브러리를 사용하여 Modbus TCP 응답 정보를 구문 분석하고 처리할 수 있습니다. 이 기사에서는 구문 분석 및 처리를 위해 phpmodbus 라이브러리를 사용하는 방법을 설명합니다.

phpmodbus 라이브러리 설치:
먼저 phpmodbus 라이브러리를 설치해야 합니다. 프로젝트에서 다음 명령을 사용하여 Composer를 통해 설치할 수 있습니다.

composer require php-modbus/php-modbus

Modbus TCP 응답 정보 구문 분석:
Modbus TCP 요청을 보낸 후 요청한 데이터가 포함된 응답을 받습니다. 이 응답을 구문 분석하기 위해 phpmodbus 라이브러리의 ModbusMaster 클래스를 사용할 수 있습니다.

먼저 ModbusMaster 클래스를 인스턴스화하고 연결할 Modbus TCP 장치의 IP 주소와 포트 번호를 지정해야 합니다.

<?php
require_once 'vendor/autoload.php';

use PHPModbusModbusMaster;

$modbus = new ModbusMaster("192.168.1.1", "TCP");

그런 다음 ModbusMaster 클래스의 readMultipleRegisters 메서드를 사용하여 Modbus 레지스터의 데이터를 읽을 수 있습니다. . 이 메소드는 장치 ID, 읽을 레지스터 주소, 읽을 레지스터 수 등 3개의 매개변수를 허용합니다. 반환된 응답에는 요청된 데이터가 포함됩니다.

$deviceId = 1;
$startAddress = 0;
$quantity = 10;

$response = $modbus->readMultipleRegisters($deviceId, $startAddress, $quantity);

Modbus TCP 응답 정보 처리:
Modbus TCP 응답을 받으면 처리할 수 있습니다. 응답에서 데이터는 16비트 정수로 반환됩니다. 이 데이터는 phpmodbus 라이브러리의 decodeRegister 메소드를 사용하여 디코딩할 수 있습니다.

$data = $response['data'];
$decodedData = $modbus->decodeRegister($data);

decodeRegister 메소드는 디코딩된 데이터가 포함된 배열을 반환합니다.

또한 phpmodbus 라이브러리의 다른 방법을 사용하여 Modbus TCP 응답을 처리할 수도 있습니다. 예를 들어 단일 레지스터의 값을 읽으려면 readSingleRegister 메서드를 사용할 수 있습니다. 마찬가지로 writeMultipleRegisters 메소드를 사용하여 여러 레지스터의 값을 쓸 수 있습니다. 필요에 따라 코드에서 이러한 메서드를 적절하게 호출할 수 있습니다.

전체 샘플 코드:
다음은 phpmodbus 라이브러리를 사용하여 PHP에서 Modbus TCP 응답 정보를 구문 분석하고 처리하는 방법을 보여주는 전체 샘플 코드입니다.

<?php
require_once 'vendor/autoload.php';

use PHPModbusModbusMaster;

$modbus = new ModbusMaster("192.168.1.1", "TCP");

$deviceId = 1;
$startAddress = 0;
$quantity = 10;

$response = $modbus->readMultipleRegisters($deviceId, $startAddress, $quantity);

$data = $response['data'];
$decodedData = $modbus->decodeRegister($data);

foreach ($decodedData as $value) {
    echo $value . "
";
}

?>

요약:
PHP에서 Modbus TCP 응답 정보를 구문 분석하고 처리할 수 있습니다. 이를 달성하려면 phpmodbus 라이브러리를 사용하십시오. ModbusMaster 클래스를 사용하여 Modbus TCP 응답을 구문 분석하고 처리할 수 있습니다. readMultipleRegisters, decodeRegister 및 기타 관련 메소드를 사용하여 Modbus 레지스터의 데이터를 읽고 처리할 수 있습니다. 이 기사가 PHP에서 Modbus TCP 응답 메시지를 구문 분석하고 처리하는 방법을 이해하는 데 도움이 되기를 바랍니다.

위 내용은 PHP에서 Modbus TCP 응답 메시지를 구문 분석하고 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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