通信アーキテクチャでは、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 = ''; $ 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( '192.168.0.1'、502); $ registers = $ modbus-> readregisters(1、0、10); foreach($ registers as $ address => $ value){ echo "登録$アドレス:$ value \ n"; } $ modbus-> writeregister(1、0、100);
このコードは、奴隷との接続を実装し、PHPソケット関数を介してレジスタを読み取り、書き込みする基本的なmodbustCPクラスを示しています。実際には、開発者はクラスインスタンスを初期化し、デバイスのIPとポートを渡すだけで、産業機器のデータ相互作用を実現する必要があります。
参考文献:
[1] modbusアプリケーションプロトコル仕様v1.1b3 - https://modbus.org/docs/modbus_application_protocol_v1_1b3.pdf