Modbusは、産業自動化の分野で広く使用されている通信プロトコルです。 Modbus TCPは、TCP/IPネットワークに基づく実装方法です。 ModBus TCPプロトコルのPHP操作により、デバイスデータと対話して、読み取りや書き込み登録などの関数を実現できます。この記事では、Modbus TCPコマンドと応答のPHPプロセスのプロセスを紹介し、実用的なコードの例を提供します。
PHPでの通信にModbus TCPを使用する基本的なプロセスは次のとおりです。
<?php // Modbus機器情報 $host = '192.168.1.1'; // Modbus装置IP住所 $port = 502; // Modbus装置端口号 // Modbus注文 $readCommand = pack('nnnn', 0x0001, 0x0004, 0x0000, 0x0008); // レジスタを読み取ります0x0000~0x0008 $writeCommand = pack('nnnC*', 0x0001, 0x0006, 0x0000, 0x01, 0x00, 0x0A); // 登録に書き込みます0x0000価値0x0A // 確立するTCP接続する $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $result = socket_connect($socket, $host, $port); if (!$result) { die("接続するModbus装置失败!"); } // 发送读取注文 socket_write($socket, $readCommand, strlen($readCommand)); // 応答データを受信します $response = socket_read($socket, 1024); $registers = unpack('n*', substr($response, 9)); // 解析登録データ // 打印读取到的寄存器価値 echo "读取到的寄存器価値:"; foreach ($registers as $register) { echo $register . " "; } // 发送写入注文 socket_write($socket, $writeCommand, strlen($writeCommand)); // 応答データを受信します $response = socket_read($socket, 1024); // 解決データを解析します // TODO: によるとModbus协议解決データを解析します // 閉鎖TCP接続する socket_close($socket); ?>
サンプルコードでは、最初にModBusデバイスのIPとポートに基づいてTCP接続を確立します。 Pack()関数を使用して、読み取りまたは書き込みにレジスタをバイナリデータに変換し、TCPを介して送信します。デバイスによって返されたデータを受信した後、レジスタ値はuppack()によって解析されます。読み取り値は要件に応じてさらに処理でき、書き込み操作はModbusプロトコルに従って解析する必要もあります。
PHPを通じて、Modbusデバイスとのデータ相互作用を実現できます。この記事では、基本的な通信プロセスとコードの例を提供します。開発者は、この基準で拡張して、より複雑な機能を実装し、産業自動化システムのデータ処理機能を改善できます。