Modbus TCPは、産業自動化の分野で広く使用されている通信プロトコルです。イーサネットを介したデバイス間のデータ相互作用をサポートします。 PHP開発では、Modbus TCP通信を確立し、返されたデータをフィルタリングおよび分析する方法は、多くのエンジニアリングプロジェクトの中心的な要件です。この記事では、接続、リクエスト、データ処理などの重要なリンクをカバーするPHP実装ソリューションの完全なセットをご覧ください。
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();
?>
接続が成功した後、ライブラリのメソッドを使用して、ホールドレジスタのデータを読み取るなど、リクエストを送信できます。
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プロジェクトに簡単に統合できます。特に、産業監視、リモートコントロール、インテリジェントな製造シナリオに適しています。
これらのスキルを習得すると、産業制御Webアプリケーションの開発がより快適になります。