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
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; } ?>
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; } ?>
上面的示例代码使用了phpmodbus库提供的writeSingleRegister
函数来写入寄存器的值。成功写入后,函数会返回true
,否则返回false
rrreee
Kod sampel di atas menggunakan fungsiwriteSingleRegister
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. 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!