Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP dan Modbus TCP: Membina aplikasi pemindahan data berbilang benang

PHP dan Modbus TCP: Membina aplikasi pemindahan data berbilang benang

PHPz
PHPzasal
2023-07-17 15:06:101681semak imbas

PHP dan Modbus TCP: Membina Aplikasi Pemindahan Data Berbilang Benang

Modbus TCP ialah protokol komunikasi industri yang biasa digunakan untuk memindahkan data antara peranti yang berbeza. Dalam PHP, kami boleh menggunakan keupayaan pengaturcaraan rangkaian yang berkuasa dan sokongan berbilang benang untuk membina aplikasi pemindahan data berbilang benang yang cekap.

Sebelum mula menulis kod, mula-mula kita perlu memastikan peranti Modbus pada pelayan dan klien disambungkan dan parameter rangkaian dikonfigurasikan. Seterusnya, mari kita tulis aplikasi penghantaran data Modbus TCP yang mudah.

Pertama, kita perlu menggunakan komposer untuk memasang perpustakaan modbusphp. Buka terminal baris arahan, tukar ke direktori projek, dan laksanakan arahan berikut:

composer require evilnapsis/modbusphp

Seterusnya, masukkan perpustakaan Modbus ke dalam kod PHP Kita boleh mencipta fail baru 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();
}

Dalam kod di atas, kami memperkenalkan perpustakaan Modbus dan mencipta contoh ModbusTcpClient. Kami juga menentukan dua fungsi, readRegisters dan writeRegister, untuk membaca dan menulis data daftar peranti Modbus.

Seterusnya, kita boleh mencipta contoh aplikasi pemindahan data berbilang benang bernama data_transfer.php dalam fail yang sama:

<?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();
}

Dalam kod di atas, kami mentakrifkan dua tugas pemindahan data, satu ialah membaca alamat 0 10 daftar pertama data, satu lagi ialah menulis data daftar di alamat 10 sebagai 100. Kami menggunakan gelung foreach untuk mencipta berbilang benang untuk melaksanakan tugas secara serentak. Dalam setiap urutan, kami menggunakan pernyataan if untuk menentukan sama ada tugas itu membaca atau menulis, dan memanggil fungsi yang sepadan untuk melaksanakan tugas itu. Akhir sekali, kami menggunakan kaedah gabungan untuk menunggu semua utas selesai dilaksanakan.

Melalui contoh kod di atas, kita dapat melihat cara menggunakan protokol PHP dan Modbus TCP untuk membina aplikasi penghantaran data berbilang benang. Aplikasi ini boleh mengendalikan berbilang tugas penghantaran data pada masa yang sama, meningkatkan kecekapan dan kelajuan tindak balas penghantaran data.

Untuk meringkaskan, gabungan PHP dan Modbus TCP boleh digunakan untuk membina aplikasi penghantaran data industri yang berkuasa. Dengan memanfaatkan keupayaan pengaturcaraan rangkaian PHP dan sokongan berbilang benang, kami boleh mencapai penghantaran dan pemprosesan data yang cekap. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca!

Atas ialah kandungan terperinci PHP dan Modbus TCP: Membina aplikasi pemindahan data berbilang benang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn