Maison  >  Article  >  développement back-end  >  PHP et Modbus TCP : création d'applications de transfert de données multithread

PHP et Modbus TCP : création d'applications de transfert de données multithread

PHPz
PHPzoriginal
2023-07-17 15:06:101681parcourir

PHP et Modbus TCP : création d'applications de transfert de données multithread

Modbus TCP est un protocole de communication industriel couramment utilisé pour transférer des données entre différents appareils. En PHP, nous pouvons utiliser ses puissantes capacités de programmation réseau et sa prise en charge multithread pour créer une application de transfert de données multithread efficace.

Avant de commencer à écrire du code, nous devons d'abord nous assurer que les appareils Modbus sur le serveur et le client sont connectés et que les paramètres réseau sont configurés. Ensuite, écrivons une simple application de transmission de données Modbus TCP.

Tout d'abord, nous devons utiliser composer pour installer la bibliothèque modbusphp. Ouvrez le terminal de ligne de commande, basculez vers le répertoire du projet et exécutez la commande suivante :

composer require evilnapsis/modbusphp

Ensuite, introduisez la bibliothèque Modbus dans le code PHP Nous pouvons créer un nouveau fichier modbus.php :

<?php
require 'vendor/autoload.php';

use ModbusModbusTcpClient;

$host = '192.168.1.100'; // Modbus设备的IP地址
$port = 502; // Modbus设备的端口号

$client = new ModbusTcpClient($host, $port);

// 读取寄存器数据
function readRegisters($startAddress, $quantity)
{
  global $client;
  $response = $client->readHoldingRegisters($startAddress, $quantity);
  if ($response->isSuccess()) {
    return $response->getData();
  } else {
    return false;
  }
}

// 写入寄存器数据
function writeRegister($address, $value)
{
  global $client;
  $response = $client->writeSingleRegister($address, $value);
  return $response->isSuccess();
}

Dans le code ci-dessus, nous introduisons la bibliothèque Modbus et créons une instance ModbusTcpClient. Nous avons également défini deux fonctions, readRegisters et writeRegister, pour lire et écrire les données de registre des appareils Modbus.

Ensuite, nous pouvons créer un exemple d'application de transfert de données multithread nommé data_transfer.php dans le même fichier :

<?php
require 'modbus.php';

// 定义多个线程的数据传输任务
$tasks = [
  [
    'startAddress' => 0,
    'quantity' => 10,
    'callback' => function ($data) {
      // 处理读取到的数据
      var_dump($data);
    }
  ],
  [
    'address' => 10,
    'value' => 100,
    'callback' => function ($success) {
      // 处理写入结果
      var_dump($success);
    }
  ]
];

// 创建多个线程并发执行任务
$threads = [];
foreach ($tasks as $task) {
  $thread = new Threaded();
  $thread['task'] = $task;
  $threads[] = $thread;
}

// 执行数据传输任务
foreach ($threads as $thread) {
  $task = $thread['task'];
  if (isset($task['startAddress'])) {
    $data = readRegisters($task['startAddress'], $task['quantity']);
    $task['callback']($data);
  } else if (isset($task['address'])) {
    $success = writeRegister($task['address'], $task['value']);
    $task['callback']($success);
  }
}

// 等待所有线程执行完毕
foreach ($threads as $thread) {
  $thread->join();
}

Dans le code ci-dessus, nous définissons deux tâches de transfert de données, l'une consiste à lire l'adresse 0. Les 10 premiers registres données, l'autre consiste à écrire les données du registre à l'adresse 10 comme 100. Nous utilisons une boucle foreach pour créer plusieurs threads afin d'exécuter des tâches simultanément. Dans chaque thread, nous utilisons une instruction if pour déterminer si la tâche est en train de lire ou d'écrire, et appelons la fonction correspondante pour effectuer la tâche. Enfin, nous utilisons la méthode join pour attendre la fin de l'exécution de tous les threads.

Grâce à l'exemple de code ci-dessus, nous pouvons voir comment utiliser le protocole PHP et Modbus TCP pour créer une application de transmission de données multithread. Cette application peut gérer plusieurs tâches de transmission de données en même temps, améliorant ainsi l'efficacité et la vitesse de réponse de la transmission de données.

Pour résumer, la combinaison de PHP et Modbus TCP peut être utilisée pour créer de puissantes applications industrielles de transmission de données. En tirant parti des capacités de programmation réseau de PHP et de la prise en charge multithread, nous pouvons parvenir à une transmission et un traitement efficaces des données. J'espère que cet article vous sera utile, merci d'avoir lu !

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!

Déclaration:
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