Maison > développement back-end > tutoriel php > Comment implémenter la lecture et l'écriture par lots de Modbus TCP via PHP

Comment implémenter la lecture et l'écriture par lots de Modbus TCP via PHP

王林
Libérer: 2023-07-17 15:56:01
original
1862 Les gens l'ont consulté

Comment implémenter la lecture et l'écriture par lots de Modbus TCP via PHP

1 Introduction à Modbus TCP
Modbus TCP est un protocole de communication industriel basé sur le protocole TCP/IP, couramment utilisé pour la communication des équipements dans le domaine du contrôle industriel. En utilisant le protocole Modbus TCP, des opérations de lecture et d'écriture de données entre appareils peuvent être réalisées. Cet article présentera l'utilisation du langage PHP pour implémenter la lecture et l'écriture par lots de Modbus TCP, et joindra des exemples de code correspondants.

2. Préparation de l'environnement
Avant de commencer à écrire du code PHP, vous devez installer les extensions et l'environnement PHP correspondants. Assurez-vous que les extensions liées à PHP et Modbus TCP ont été installées sur le serveur. Une fois l'installation terminée, vous pouvez utiliser la fonction phpinfo() pour vérifier si PHP fonctionne normalement et si l'extension Modbus TCP est chargée.

3. Connexion et communication Modbus TCP
En PHP, vous pouvez utiliser la fonction modbus_new_tcp() pour créer une connexion Modbus TCP. Cette fonction accepte deux paramètres, le premier paramètre est l'adresse IP du serveur Modbus TCP et le deuxième paramètre est le numéro de port du serveur Modbus TCP. Voici un exemple de code :

$modbus = modbus_new_tcp("192.168.1.10", 502);
if (!$modbus) {
    die('Failed to create Modbus TCP connection');
}
Copier après la connexion

Après une création réussie, vous pouvez utiliser la fonction modbus_read_input_registers() pour lire les données. Cette fonction accepte quatre paramètres, à savoir la connexion Modbus TCP, l'adresse de l'esclave, l'adresse du registre et le nombre de lectures. Voici un exemple de code pour lire le registre d'entrée :

$data = modbus_read_input_registers($modbus, 1, 0, 10);
if ($data === false) {
    die('Failed to read input registers');
}
print_r($data);
Copier après la connexion

Grâce au code ci-dessus, vous pouvez lire les données de 10 registres à partir du registre 0 de l'appareil avec l'adresse esclave 1 et afficher le résultat.

Si vous avez besoin d'écrire sur l'appareil, vous pouvez utiliser la fonction modbus_write_single_register(). Cette fonction accepte quatre paramètres, à savoir la connexion Modbus TCP, l'adresse de l'esclave, l'adresse du registre et les données à écrire. Voici un exemple de code pour écrire dans un seul registre :

$success = modbus_write_single_register($modbus, 1, 0, 100);
if (!$success) {
    die('Failed to write single register');
}
Copier après la connexion

Avec le code ci-dessus, les données 100 peuvent être écrites dans le registre 0 de l'appareil avec l'adresse esclave 1.

4. Lecture et écriture par lots
Dans les projets réels, il peut être nécessaire de lire et d'écrire des données sur plusieurs appareils en même temps. Vous pouvez utiliser la fonction modbus_read_input_registers_batch() et la fonction modbus_write_single_register_batch() pour implémenter des opérations par lots.

La fonction modbus_read_input_registers_batch() accepte trois paramètres, qui sont la connexion Modbus TCP, l'adresse de l'appareil et un tableau d'adresses de registre. Voici un exemple de code pour la lecture par lots des registres d'entrée :

$addresses = [0, 1, 2, 3, 4];
$data = modbus_read_input_registers_batch($modbus, 1, $addresses);
if (!$data) {
    die('Failed to read input registers batch');
}
print_r($data);
Copier après la connexion

La fonction modbus_write_single_register_batch() accepte trois paramètres, qui sont la connexion Modbus TCP, l'adresse de l'appareil et un tableau de registres et de données. Voici un exemple de code pour l'écriture par lots dans un seul registre :

$registersAndData = [
    [0, 100],
    [1, 200],
    [2, 300],
    [3, 400],
];
$success = modbus_write_single_register_batch($modbus, 1, $registersAndData);
if (!$success) {
    die('Failed to write single register batch');
}
Copier après la connexion

Avec le code ci-dessus, les registres d'un groupe d'appareils peuvent être lus et écrits simultanément.

5. Résumé
Grâce à l'introduction et à l'exemple de code ci-dessus, nous pouvons voir qu'il est relativement simple d'implémenter la lecture et l'écriture par lots de Modbus TCP via le langage PHP. Préparez simplement l'environnement correspondant et utilisez les fonctions d'extension PHP liées à Modbus TCP pour réaliser facilement des opérations de communication et de données entre les 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal