PHP et Modbus TCP : Discussion sur les méthodes permettant de contrôler les appareils distribués
Vue d'ensemble :
Avec le développement rapide de l'Internet des objets, le contrôle des appareils distribués est devenu un défi important. Cet article explorera comment utiliser PHP et le protocole Modbus TCP pour implémenter le contrôle de périphériques distribués, et comment écrire des exemples de code pour aider les lecteurs à mieux comprendre la méthode.
Préparation :
Avant de commencer à écrire le code, nous devons nous assurer que la bibliothèque Modbus TCP est installée. Il peut être installé sur un système Linux à l'aide de la commande suivante :
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; }
Veuillez vous assurer de définir les paramètres $ip
et $port
sur la bonne adresse IP de l'adresse et le port de l'appareil Modbus. $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
sur l'adresse du registre que vous souhaitez lire. Écrire la valeur du registre :
En plus de lire la valeur du registre, nous pouvons également utiliser le protocole Modbus TCP pour écrire des données dans le registre de l'appareil. Voici un exemple de fonction pour écrire la valeur d'un registre :$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);
$registerAddress
sur l'adresse du registre dans lequel vous souhaitez écrire et $registerValue Le paramètre code> est défini sur la valeur à écrire. 🎜🎜🎜Fermez la connexion avec l'appareil Modbus : 🎜Après avoir terminé la communication avec l'appareil Modbus, nous devons fermer la connexion établie. Voici un exemple de fonction pour fermer la connexion : 🎜🎜rrreee🎜L'exemple de code complet est le suivant : 🎜rrreee🎜Résumé : 🎜Cet article présente comment utiliser le protocole PHP et Modbus TCP pour implémenter le contrôle des appareils distribués. Nous fournissons des exemples de code pour les fonctions clés telles que la connexion à un appareil Modbus, la lecture des valeurs de registre, l'écriture des valeurs de registre et la fermeture de la connexion. En utilisant ces exemples, les lecteurs peuvent mieux comprendre et utiliser PHP et Modbus TCP pour implémenter le contrôle distribué des appareils. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!