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