Modbus TCP는 산업 자동화 분야에서 널리 사용되는 통신 프로토콜입니다. 이더넷을 통한 장치 간의 데이터 상호 작용을 지원합니다. PHP 개발에서 Modbus TCP 통신 및 필터를 설정하고 반환 된 데이터를 분석하는 방법은 많은 엔지니어링 프로젝트의 핵심 요구 사항입니다. 이 기사에서는 연결, 요청 및 데이터 처리와 같은 주요 링크를 다루는 전체 PHP 구현 솔루션 세트를 안내합니다.
phpmodbus
라이브러리를 사용하여 Modbus TCP 장치와의 연결을 빠르게 설정하십시오. 먼저 작곡가를 통해 설치해야합니다.
composer require modbus/tcp-php
설치가 완료되면 다음 코드를 통해 장치와의 통신 연결을 설정할 수 있습니다.
<?php
require __DIR__ . '/vendor/autoload.php';
use ModbusTcpClient\Network\BinaryStreamConnection;
$ip = '192.168.1.100';
$port = 502;
$connection = new BinaryStreamConnection($ip, $port);
$connection->connect();
// 여기서 할 수 있습니다Modbus TCP의사소통
$connection->close();
?>
연결이 성공하면 라이브러리의 메소드를 사용하여 Hold Register에서 데이터를 읽는 등 요청을 보낼 수 있습니다.
use ModbusTcpClient\Request\ReadHoldingRegistersRequest;
use ModbusTcpClient\Utils\Types;
$request = new ReadHoldingRegistersRequest(0, 10);
$response = $connection->sendRequest($request);
if ($response->isOk()) {
$data = Types::parseByteArray($response->getData());
print_r($data);
} else {
echo '요청이 실패했습니다:' . $response->getErrorMessage();
}
위의 코드는 시작 주소가 0 인 10 개의 홀드 레지스터를 읽고 반환 된 바이트 데이터를 구문 분석합니다.
실제 응용 분야에서는 종종 특정 조건이있는 데이터에만 관심이 있습니다. 예를 들어, 100보다 큰 값의 등록 데이터 만 분석하고 다음 방법을 사용하여 필터링 할 수 있습니다.
if ($response->isOk()) {
$data = Types::parseByteArray($response->getData());
$filteredData = array_filter($data, function($value) {
return $value > 100;
});
print_r($filteredData);
} else {
echo '요청이 실패했습니다:' . $response->getErrorMessage();
}
array_filter
함수를 통해 필터링 로직을 요구에 따라 사용자 정의 할 수 있으므로 후속 처리 또는 디스플레이에 유용한 데이터를 추출 할 수 있습니다.
이 기사는 장치 연결, 등록 및 데이터 스크리닝 및 분석을 포함하여 Modbus TCP 통신에 PHP를 사용하는 주요 단계를 소개합니다. phpmodbus
라이브러리의 도움으로 개발자는 Modbus 프로토콜을 PHP 프로젝트에 쉽게 통합 할 수 있습니다. 특히 산업 모니터링, 원격 제어 및 지능형 제조 시나리오에 적합합니다.
이러한 기술을 마스터하면 산업 제어 웹 애플리케이션을보다 편안하게 개발할 수 있습니다.