現在の位置: ホーム> 最新記事一覧> PHPプログラミングスキル:Modbus TCPデータフィルタリングと分析方法の実装

PHPプログラミングスキル:Modbus TCPデータフィルタリングと分析方法の実装

M66 2025-05-31

PHPでModbus TCPデータの読み取りと分析を実装するための実用的な方法

Modbus TCPは、産業自動化の分野で広く使用されている通信プロトコルです。イーサネットを介したデバイス間のデータ相互作用をサポートします。 PHP開発では、Modbus TCP通信を確立し、返されたデータをフィルタリングおよび分析する方法は、多くのエンジニアリングプロジェクトの中心的な要件です。この記事では、接続、リクエスト、データ処理などの重要なリンクをカバーするPHP実装ソリューションの完全なセットをご覧ください。

modbus TCP接続を確立します

phpmodbusライブラリを使用して、ModBus TCPデバイスとの接続をすばやく確立します。まず、Composerを介してインストールする必要があります。

 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();
?>

modbus TCP読み取りリクエストを送信します

接続が成功した後、ライブラリのメソッドを使用して、ホールドレジスタのデータを読み取るなど、リクエストを送信できます。

 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のホールドレジスタを読み取り、返されたバイトデータを解析するように要求します。

Modbus戻りデータをフィルタリングして分析します

実際のアプリケーションでは、特定の条件を持つデータのみに関心があることがよくあります。たとえば、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プロジェクトに簡単に統合できます。特に、産業監視、リモートコントロール、インテリジェントな製造シナリオに適しています。

これらのスキルを習得すると、産業制御Webアプリケーションの開発がより快適になります。