Amalan pembangunan PHP: membina aplikasi komunikasi Modbus TCP yang sangat berskala

WBOY
Lepaskan: 2023-07-17 16:38:02
asal
1058 orang telah melayarinya

Amalan pembangunan PHP: Bina aplikasi komunikasi Modbus TCP yang sangat berskala

Dalam bidang automasi industri, Modbus ialah protokol komunikasi yang biasa digunakan untuk penghantaran data antara peranti. Modbus TCP ialah varian Modbus berdasarkan protokol TCP/IP, yang merealisasikan komunikasi jauh antara peranti melalui Ethernet. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk membangunkan aplikasi komunikasi Modbus TCP yang sangat berskala dan menyediakan contoh kod yang berkaitan.

Pertama, kita perlu memasang perpustakaan sambungan PHP untuk berkomunikasi dengan peranti Modbus. Di sini, kami menggunakan perpustakaan phpmodbus, yang menyediakan set fungsi yang mudah untuk komunikasi Modbus TCP. Ia boleh dipasang menggunakan Composer melalui arahan berikut:

composer require phpmodbus/phpmodbus
Salin selepas log masuk

Selepas pemasangan selesai, kita boleh mula menulis kod PHP untuk melaksanakan fungsi komunikasi Modbus TCP. Berikut ialah contoh mudah untuk membaca nilai daftar daripada peranti 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;
}
?>
Salin selepas log masuk

Kod contoh di atas menggunakan kelas ModbusMaster yang disediakan oleh perpustakaan phpmodbus untuk melaksanakan komunikasi Modbus TCP. Berbilang nilai boleh dibaca daripada daftar melalui fungsi readMultipleRegisters. Hasil pulangan ialah tatasusunan bersekutu, kuncinya ialah alamat daftar, dan nilainya ialah nilai daftar. Kita boleh memproses dan menggunakan nilai-nilai ini mengikut keperluan sebenar. ModbusMaster类来实现Modbus TCP通信。通过readMultipleRegisters函数可以从寄存器中读取多个值。返回结果是一个关联数组,键为寄存器地址,值为寄存器的值。我们可以根据实际需求对这些值进行处理和使用。

除了读取寄存器的值,我们还可以通过phpmodbus库进行写操作,例如写入寄存器的值、设置线圈的状态等等。以下是一个写操作的示例代码:

<?php
// ...

// 写入保持寄存器的值(寄存器地址为0,写入的值为100)
$result = $modbus->writeSingleRegister(0, 100);

// 输出结果
if ($result) {
    echo "写入成功。" . PHP_EOL;
} else {
    echo "写入失败。" . PHP_EOL;
}
?>
Salin selepas log masuk

上面的示例代码使用了phpmodbus库提供的writeSingleRegister函数来写入寄存器的值。成功写入后,函数会返回true,否则返回false

Selain membaca nilai daftar, kita juga boleh melakukan operasi tulis melalui perpustakaan phpmodbus, seperti menulis nilai daftar, menetapkan status gegelung, dll. Berikut ialah contoh kod untuk operasi tulis:

rrreee

Kod sampel di atas menggunakan fungsi writeSingleRegister yang disediakan oleh perpustakaan phpmodbus untuk menulis nilai daftar. Selepas menulis berjaya, fungsi mengembalikan true, jika tidak ia mengembalikan false. Dengan cara ini, komunikasi dua hala boleh dijalankan dengan peranti Modbus untuk merealisasikan pembacaan dan penulisan data.

Sebagai tambahan kepada operasi baca dan tulis asas, perpustakaan phpmodbus juga menyediakan fungsi kaya lain, seperti membaca status gegelung, menulis nilai berbilang daftar, dsb. Untuk kaedah dan parameter penggunaan khusus, sila rujuk dokumen dan kod sumber yang berkaitan untuk memenuhi keperluan projek sebenar.

Ringkasnya, dengan menggunakan bahasa PHP dan perpustakaan phpmodbus, kami boleh melaksanakan fungsi komunikasi TCP Modbus dengan mudah. Kami boleh melakukan operasi baca dan tulis mengikut keperluan sebenar untuk berinteraksi dengan peranti Modbus. Pada masa yang sama, perpustakaan phpmodbus menyediakan fungsi yang kaya dan antara muka yang mudah digunakan, menjadikannya lebih mudah dan lebih mudah untuk membangunkan aplikasi komunikasi Modbus TCP yang sangat berskala.
  • Rujukan:
🎜pustaka phpmodbus Alamat GitHub: https://github.com/phpmodbus/phpmodbus🎜🎜

Atas ialah kandungan terperinci Amalan pembangunan PHP: membina aplikasi komunikasi Modbus TCP yang sangat berskala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan