Pratique de développement PHP : créer une application de communication Modbus TCP hautement évolutive
Dans le domaine de l'automatisation industrielle, Modbus est un protocole de communication couramment utilisé pour la transmission de données entre appareils. Modbus TCP est une variante Modbus basée sur le protocole TCP/IP, qui réalise une communication à distance entre les appareils via Ethernet. Cet article présentera comment utiliser le langage PHP pour développer une application de communication Modbus TCP hautement évolutive et fournira des exemples de code pertinents.
Tout d'abord, nous devons installer une bibliothèque d'extensions PHP pour communiquer avec les appareils Modbus. Ici, nous utilisons la bibliothèque phpmodbus, qui fournit un ensemble pratique de fonctions pour la communication Modbus TCP. Il peut être installé à l'aide de Composer via la commande suivante :
composer require phpmodbus/phpmodbus
Une fois l'installation terminée, nous pouvons commencer à écrire du code PHP pour implémenter la fonction de communication Modbus TCP. Voici un exemple simple pour lire la valeur d'un registre à partir d'un appareil Modbus :
<?php require_once('vendor/autoload.php'); use PHPModbusModbusMaster; // 设备的IP地址和端口号 $ip = '192.168.0.1'; $port = 502; // 创建一个ModbusMaster对象 $modbus = new ModbusMaster($ip, $port); // 读取保持寄存器的值(寄存器地址为0,数量为10) $result = $modbus->readMultipleRegisters(0, 10); // 输出结果 if (!empty($result)) { echo "读取成功:" . PHP_EOL; foreach ($result as $key => $value) { echo "寄存器" . $key . "的值:" . $value . PHP_EOL; } } else { echo "读取失败。" . PHP_EOL; } ?>
L'exemple de code ci-dessus utilise la classe ModbusMaster
fournie par la bibliothèque phpmodbus pour implémenter la communication Modbus TCP. Plusieurs valeurs peuvent être lues à partir des registres via la fonction readMultipleRegisters
. Le résultat renvoyé est un tableau associatif, la clé est l'adresse du registre et la valeur est la valeur du registre. Nous pouvons traiter et utiliser ces valeurs en fonction des besoins réels. ModbusMaster
类来实现Modbus TCP通信。通过readMultipleRegisters
函数可以从寄存器中读取多个值。返回结果是一个关联数组,键为寄存器地址,值为寄存器的值。我们可以根据实际需求对这些值进行处理和使用。
除了读取寄存器的值,我们还可以通过phpmodbus库进行写操作,例如写入寄存器的值、设置线圈的状态等等。以下是一个写操作的示例代码:
<?php // ... // 写入保持寄存器的值(寄存器地址为0,写入的值为100) $result = $modbus->writeSingleRegister(0, 100); // 输出结果 if ($result) { echo "写入成功。" . PHP_EOL; } else { echo "写入失败。" . PHP_EOL; } ?>
上面的示例代码使用了phpmodbus库提供的writeSingleRegister
函数来写入寄存器的值。成功写入后,函数会返回true
,否则返回false
rrreee
L'exemple de code ci-dessus utilise la fonctionwriteSingleRegister
fournie par la bibliothèque phpmodbus pour écrire la valeur du registre. Après une écriture réussie, la fonction renvoie true
, sinon elle renvoie false
. De cette manière, une communication bidirectionnelle peut être effectuée avec des appareils Modbus pour réaliser la lecture et l'écriture de données. En plus des opérations de lecture et d'écriture de base, la bibliothèque phpmodbus fournit également d'autres fonctions riches, telles que la lecture de l'état de la bobine, l'écriture des valeurs de plusieurs registres, etc. Pour les méthodes et paramètres d'utilisation spécifiques, veuillez vous référer aux documents pertinents et au code source pour répondre aux besoins des projets réels. En résumé, en utilisant le langage PHP et la bibliothèque phpmodbus, nous pouvons facilement implémenter la fonction de communication Modbus TCP. Nous pouvons effectuer des opérations de lecture et d'écriture en fonction des besoins réels pour interagir avec les appareils Modbus. Dans le même temps, la bibliothèque phpmodbus fournit des fonctions riches et des interfaces faciles à utiliser, rendant plus facile et plus pratique le développement d'applications de communication Modbus TCP hautement évolutives. 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!