現在の位置: ホーム> 最新記事一覧> 産業制御システムのコミュニケーションにPHPおよびModbus TCPプロトコルの使用方法

産業制御システムのコミュニケーションにPHPおよびModbus TCPプロトコルの使用方法

M66 2025-06-06

modbus TCPプロトコルの概要

Modbus TCPは、PLC、リモートI/O、センサー、その他の自動化デバイス間の通信に一般的に使用されるTCP/IPベースの産業通信プロトコルです。このプロトコルはイーサネットに基づいており、データの読み取り、レジスタライティング、デバイス制御などの機能をサポートしています。

通信アーキテクチャでは、Modbus TCPは通常、マスターによって開始され、奴隷による指揮に応答しました。この構造により、マスターステーションは複数の産業機器の制御を効率的に集中化できるため、集中データ収集とリモート制御が実現できます。

PHPを使用してModbus TCP通信モジュールを構築します

Web開発で広く使用されていますが、PHPは特定の産業通信タスク、特にエッジコンピューティングまたは中間層システムでも有能です。 PHPを使用してModBus TCP通信を実装するための例のコードを次に示します。
<?php
class ModbusTCP {
    private $socket;

    public function __construct($ip, $port) {
        $this-> socket = socket_create(af_inet、sock_stream、sol_tcp);
        socket_connect($ this-> socket、$ ip、$ port);
    }

    public function readregisters($ Slaveid、$ RegisterAddress、$ RegisterCount){
        $ buffer = pack( "nnnn"、$ slaveid、0x03、$ regoltAddress、$ registerCount);
        socket_send($ this-> socket、$ buffer、strlen($ buffer)、0);

        $ response = &#39;&#39;;
        $ bytes = socket_recv($ this-> socket、$ response、2048、msg_waitall);

        $ registers = unpack( "n*"、subst($ response、9));
        $ registersを戻るします。
    }

    public function writeregister($ Slaveid、$ RegisterAddress、$ RegisterValue){
        $ buffer = pack( "nnn"、$ slaveid、0x06、$ RegisterAddress、$ RegisterValue);
        socket_send($ this-> socket、$ buffer、strlen($ buffer)、0);
    }

    パブリック関数__destruct(){
        socket_close($ this-> socket);
    }
}

//例$ $ modbus = new modbustcp( &#39;192.168.0.1&#39;、502);
$ registers = $ modbus-> readregisters(1、0、10);

foreach($ registers as $ address => $ value){
    echo "登録$アドレス:$ value \ n";
}

$ modbus-> writeregister(1、0、100);

このコードは、奴隷との接続を実装し、PHPソケット関数を介してレジスタを読み取り、書き込みする基本的なmodbustCPクラスを示しています。実際には、開発者はクラスインスタンスを初期化し、デバイスのIPとポートを渡すだけで、産業機器のデータ相互作用を実現する必要があります。

アプリケーションの例分析

上記の例では、システムは `192.168.0.1`のIPアドレスと「502」のポートを持つModbusスレーブに接続されています。 「ReadRegisters」メソッドを介して最初の10のレジスタの値を読み、それらを1つずつ出力します。最後に、「writeregister」メソッドは、最初のレジスタに値「100」を書き込みます。このプロセスは、ModBus TCPの2つの最も一般的に使用される2つの機能、データの読み取りおよび制御指示の発行を反映しています。

結論

この記事では、PHPおよびModbus TCPプロトコルを使用して、産業制御システムでのデータ通信を実現する方法を詳細に紹介します。プロトコル構造からPHP実装まで、開発者は独自の通信モジュールを迅速に構築して、産業自動化プロジェクトに信頼できるデータ相互作用機能を提供できます。 PHPは従来の産業制御言語ではありませんが、ソケットプログラミングを介した一部の産業制御システム統合タスクにとって依然として能力がある可能性があります。

参考文献:
[1] modbusアプリケーションプロトコル仕様v1.1b3 - https://modbus.org/docs/modbus_application_protocol_v1_1b3.pdf