PHP 開発実践: 拡張性の高い Modbus TCP 通信アプリケーションの構築
産業オートメーションの分野では、Modbus はデバイス間のデータ送信に一般的に使用される通信プロトコルです。 Modbus TCP は、TCP/IP プロトコルに基づく Modbus の一種で、イーサネットを介したデバイス間のリモート通信を実現します。この記事では、PHP 言語を使用して拡張性の高い Modbus TCP 通信アプリケーションを開発する方法を紹介し、関連するコード例を示します。
まず、Modbus デバイスと通信するための PHP 拡張ライブラリをインストールする必要があります。ここでは、Modbus TCP 通信に便利な関数セットを提供する phpmodbus ライブラリを使用します。次のコマンドを通じて Composer を使用してインストールできます:
composer require phpmodbus/phpmodbus
インストールが完了したら、Modbus TCP 通信機能を実装するための PHP コードの記述を開始できます。以下は、Modbus デバイスからレジスタの値を読み取る簡単な例です。
<?php require_once('vendor/autoload.php'); use PHPModbusModbusMaster; // 设备的IP地址和端口号 $ip = '192.168.0.1'; $port = 502; // 创建一个ModbusMaster对象 $modbus = new ModbusMaster($ip, $port); // 读取保持寄存器的值(寄存器地址为0,数量为10) $result = $modbus->readMultipleRegisters(0, 10); // 输出结果 if (!empty($result)) { echo "读取成功:" . PHP_EOL; foreach ($result as $key => $value) { echo "寄存器" . $key . "的值:" . $value . PHP_EOL; } } else { echo "读取失败。" . PHP_EOL; } ?>
上記のコード例では、phpmodbus ライブラリによって提供される ModbusMaster
クラスを使用して、Modbus TCP 通信を実装します。 readMultipleRegisters
関数を使用してレジスタから複数の値を読み取ることができます。戻り結果は連想配列で、キーはレジスタアドレス、値はレジスタ値です。実際のニーズに応じてこれらの値を処理して使用できます。
レジスタの値の読み取りに加えて、phpmodbus ライブラリを介して、レジスタの値の書き込み、コイルのステータスの設定などの書き込み操作を実行することもできます。以下は、書き込み操作のサンプル コードです。
<?php // ... // 写入保持寄存器的值(寄存器地址为0,写入的值为100) $result = $modbus->writeSingleRegister(0, 100); // 输出结果 if ($result) { echo "写入成功。" . PHP_EOL; } else { echo "写入失败。" . PHP_EOL; } ?>
上記のサンプル コードでは、phpmodbus ライブラリによって提供される writeSingleRegister
関数を使用して、レジスタの値を書き込みます。書き込みが成功すると、関数は true
を返し、それ以外の場合は false
を返します。これにより、Modbusデバイスと双方向通信を行い、データの読み書きを実現します。
基本的な読み取りおよび書き込み操作に加えて、phpmodbus ライブラリは、コイルステータスの読み取り、複数のレジスタの値の書き込みなど、他の豊富な機能も提供します。具体的な使用方法やパラメータについては、実際のプロジェクトのニーズに合わせて関連ドキュメントやソースコードを参照してください。
まとめると、PHP 言語と phpmodbus ライブラリを使用することで、Modbus TCP 通信機能を簡単に実装できます。 Modbus デバイスと対話するための実際のニーズに応じて読み取りおよび書き込み操作を実行できます。同時に、phpmodbus ライブラリは豊富な機能と使いやすいインターフェイスを提供し、拡張性の高い Modbus TCP 通信アプリケーションの開発をより簡単かつ便利にします。
参考:
以上がPHP 開発実践: 拡張性の高い Modbus TCP 通信アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。