In einer Kommunikationsarchitektur wird Modbus TCP normalerweise vom Master initiiert und vom Sklaven auf den Befehl reagiert. Diese Struktur ermöglicht es der Master -Station, die Kontrolle mehrerer industrieller Geräte effizient zu zentralisieren, wodurch die zentralisierte Datenerfassung und die Fernbedienung realisiert werden.
<?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); } öffentliche Funktionsreadegister ($ slaveid, $ registerAddress, $ registerCount) { $ buffer = pack ("nnnn", $ slaveid, 0x03, $ registerAddress, $ registerCount); socket_send ($ this-> socket, $ buffer, strlen ($ buffer), 0); $ response = ''; $ bytes = socket_recv ($ this-> socket, $ response, 2048, msg_waitall); $ registers = pack ("n*", substr ($ response, 9)); Return $ Register; } public function writeeregister ($ slaveid, $ registerAddress, $ registerValue) { $ buffer = pack ("nnn", $ slaveid, 0x06, $ registerAddress, $ registerValue); socket_send ($ this-> socket, $ buffer, strlen ($ buffer), 0); } öffentliche Funktion __Destruct () { Socket_CLOSE ($ this-> Socket); } } // Beispiel $ modbus = new modbustcp ('192.168.0.1', 502); $ registers = $ modbus-> readregister (1, 0, 10); foreach ($ register als $ addres => $ value) { echo "Register $ addres: $ value \ n"; } $ modbus-> writeRegister (1, 0, 100);
Dieser Code zeigt eine grundlegende ModbustCP -Klasse, die die Verbindung mit Sklaven implementiert, Register durch PHP -Socket -Funktion liest und schreibt. Im tatsächlichen Gebrauch müssen Entwickler nur die Klasseninstanz initialisieren und in die Geräte -IP und den Hafen übergeben, um die Dateninteraktion von industriellen Geräten zu realisieren.
Referenzen:
[1] Modbus -Anwendungsprotokollspezifikation v1.1b3 - https://modbus.org/docs/modbus_application_protocol_v1_1b3.pdf