Heim > Artikel > Backend-Entwicklung > PHP und Modbus TCP: Diskussion über Methoden zur verteilten Gerätesteuerung
PHP und Modbus TCP: Diskussion über Methoden zur verteilten Gerätesteuerung
Übersicht:
Mit der rasanten Entwicklung des Internets der Dinge ist die verteilte Gerätesteuerung zu einer wichtigen Herausforderung geworden. In diesem Artikel wird untersucht, wie Sie PHP und das Modbus TCP-Protokoll verwenden, um eine verteilte Gerätesteuerung zu implementieren, und wie Sie Codebeispiele schreiben, um den Lesern ein besseres Verständnis der Methode zu ermöglichen.
Vorbereitung:
Bevor wir mit dem Schreiben des Codes beginnen, müssen wir sicherstellen, dass die Modbus TCP-Bibliothek installiert ist. Es kann mit dem folgenden Befehl in einem Linux-System installiert werden:
sudo apt-get install php7.4-mbstring
function connectModbusDevice($ip, $port) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { die("无法创建套接字"); } $result = socket_connect($socket, $ip, $port); if ($result === false) { die("无法连接到Modbus设备"); } return $socket; }
Bitte stellen Sie sicher, dass die Parameter $ip
und $port
auf die richtige IP von eingestellt sind die Modbus-Geräteadresse und den Port. $ip
和$port
参数设置为正确的Modbus设备的IP地址和端口。
function readModbusRegister($socket, $registerAddress) { $request = "" . pack('n', $registerAddress) . ""; socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,获取寄存器的值 $registerValue = unpack('n', substr($response, 9, 2))[1]; return $registerValue; }
请确保将$registerAddress
参数设置为要读取的寄存器的地址。
function writeModbusRegister($socket, $registerAddress, $registerValue) { $request = "" . pack('n', $registerAddress) . pack('n', $registerValue); socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,检查写入操作是否成功 $statusCode = unpack('n', substr($response, 7, 2))[1]; if ($statusCode != 6) { die("写入寄存器失败"); } }
请确保将$registerAddress
参数设置为要写入的寄存器的地址,将$registerValue
function disconnectModbusDevice($socket) { socket_close($socket); }
$registerAddress
auf die Adresse des Registers setzen, das Sie lesen möchten. Schreiben Sie den Wert des Registers:
Zusätzlich zum Lesen des Werts des Registers können wir auch das Modbus TCP-Protokoll verwenden, um Daten in das Register des Geräts zu schreiben. Hier ist eine Beispielfunktion zum Schreiben des Werts eines Registers:$modbusIp = "192.168.1.100"; $modbusPort = 502; $modbusDevice = connectModbusDevice($modbusIp, $modbusPort); $registerAddress = 100; $registerValue = readModbusRegister($modbusDevice, $registerAddress); echo "寄存器 $registerAddress 的值为: $registerValue" . PHP_EOL; $registerAddress = 200; $registerValue = 500; writeModbusRegister($modbusDevice, $registerAddress, $registerValue); echo "成功将值 $registerValue 写入寄存器 $registerAddress" . PHP_EOL; disconnectModbusDevice($modbusDevice);Bitte stellen Sie sicher, dass Sie den Parameter
$registerAddress
auf die Adresse des Registers, in das Sie schreiben möchten, und auf $registerValue setzen Der Parameter code> wird auf den zu schreibenden Wert gesetzt. 🎜🎜🎜Schließen Sie die Verbindung mit dem Modbus-Gerät: 🎜Nach Abschluss der Kommunikation mit dem Modbus-Gerät sollten wir die bestehende Verbindung schließen. Hier ist eine Beispielfunktion zum Schließen der Verbindung: 🎜🎜rrreee🎜Der vollständige Beispielcode lautet wie folgt: 🎜rrreee🎜Zusammenfassung: 🎜In diesem Artikel wird erläutert, wie Sie PHP und das Modbus TCP-Protokoll verwenden, um eine verteilte Gerätesteuerung zu implementieren. Wir bieten Codebeispiele für Schlüsselfunktionen wie das Herstellen einer Verbindung zu einem Modbus-Gerät, das Lesen von Registerwerten, das Schreiben von Registerwerten und das Schließen der Verbindung. Mithilfe dieser Beispiele können Leser PHP und Modbus TCP besser verstehen und nutzen, um eine verteilte Gerätesteuerung zu implementieren. 🎜
Das obige ist der detaillierte Inhalt vonPHP und Modbus TCP: Diskussion über Methoden zur verteilten Gerätesteuerung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!