Rumah >pembangunan bahagian belakang >tutorial php >Cara menghuraikan dan memproses mesej tindak balas Modbus TCP dalam PHP

Cara menghuraikan dan memproses mesej tindak balas Modbus TCP dalam PHP

WBOY
WBOYasal
2023-07-17 19:41:041382semak imbas

Cara menghuraikan dan memproses mesej tindak balas Modbus TCP dalam PHP

Ikhtisar:
Modbus ialah protokol komunikasi yang digunakan untuk menghantar data dalam sistem kawalan industri. Modbus TCP ialah pelaksanaan protokol Modbus, yang menghantar data berdasarkan protokol TCP/IP. Dalam PHP, kami boleh menggunakan beberapa perpustakaan untuk menghuraikan dan memproses maklumat tindak balas Modbus TCP. Artikel ini akan menerangkan cara menggunakan perpustakaan phpmodbus untuk menghurai dan memproses.

Pasang perpustakaan phpmodbus:
Pertama, kita perlu memasang perpustakaan phpmodbus. Ia boleh dipasang melalui Komposer menggunakan arahan berikut dalam projek anda:

composer require php-modbus/php-modbus

Menghuraikan maklumat respons TCP Modbus:
Selepas menghantar permintaan Modbus TCP, kami mendapat respons yang mengandungi data yang diminta. Untuk menghuraikan respons ini kita boleh menggunakan kelas ModbusMaster daripada perpustakaan phpmodbus.

Pertama, kita perlu membuat instantiate kelas ModbusMaster dan nyatakan alamat IP dan nombor port peranti Modbus TCP untuk disambungkan:

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

use PHPModbusModbusMaster;

$modbus = new ModbusMaster("192.168.1.1", "TCP");

Kemudian, kita boleh menggunakan kaedah readMultipleRegisters kelas ModbusMaster untuk membaca data dalam daftar Modbus . Kaedah ini menerima 3 parameter: ID peranti, alamat daftar untuk dibaca dan bilangan daftar untuk dibaca. Respons yang dikembalikan akan mengandungi data yang diminta.

$deviceId = 1;
$startAddress = 0;
$quantity = 10;

$response = $modbus->readMultipleRegisters($deviceId, $startAddress, $quantity);

Memproses mesej respons TCP Modbus:
Sebaik sahaja kami mendapat respons Modbus TCP, kami boleh memprosesnya. Dalam tindak balas, data dikembalikan sebagai integer 16-bit. Data ini boleh dinyahkod menggunakan kaedah decodeRegister perpustakaan phpmodbus.

$data = $response['data'];
$decodedData = $modbus->decodeRegister($data);

Kaedah decodeRegister akan mengembalikan tatasusunan yang mengandungi data yang dinyahkod.

Kami juga boleh menggunakan kaedah lain perpustakaan phpmodbus untuk mengendalikan respons TCP Modbus. Sebagai contoh, jika anda ingin membaca nilai satu daftar, anda boleh menggunakan kaedah readSingleRegister. Begitu juga, kita boleh menggunakan kaedah writeMultipleRegisters untuk menulis nilai berbilang daftar. Kami boleh memanggil kaedah ini dengan sewajarnya dalam kod kami seperti yang diperlukan.

Kod sampel penuh:
Berikut ialah contoh kod lengkap yang menunjukkan cara menghuraikan dan memproses maklumat tindak balas TCP Modbus dalam PHP menggunakan perpustakaan phpmodbus:

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

use PHPModbusModbusMaster;

$modbus = new ModbusMaster("192.168.1.1", "TCP");

$deviceId = 1;
$startAddress = 0;
$quantity = 10;

$response = $modbus->readMultipleRegisters($deviceId, $startAddress, $quantity);

$data = $response['data'];
$decodedData = $modbus->decodeRegister($data);

foreach ($decodedData as $value) {
    echo $value . "
";
}

?>

Ringkasan:
Menghuraikan dan memproses maklumat tindak balas Modbus TCP dalam PHP boleh dilakukan dengan Gunakan perpustakaan phpmodbus untuk mencapai ini. Kita boleh menggunakan kelas ModbusMaster untuk menghuraikan dan memproses respons Modbus TCP. Dengan menggunakan readMultipleRegisters, decodeRegister dan kaedah lain yang berkaitan, kami boleh membaca dan memproses data dalam daftar Modbus. Semoga artikel ini membantu anda memahami cara menghuraikan dan memproses mesej respons Modbus TCP dalam PHP.

Atas ialah kandungan terperinci Cara menghuraikan dan memproses mesej tindak balas Modbus TCP dalam PHP. 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