Amalan pembangunan PHP: Bina aplikasi komunikasi Modbus TCP yang fleksibel dan boleh dipercayai
Sebagai protokol komunikasi yang popular, Modbus TCP digunakan secara meluas dalam sistem kawalan industri, merealisasikan komunikasi dan interaksi data antara peranti melalui Ethernet. Sebagai bahasa pengaturcaraan bahagian pelayan yang berkuasa, PHP boleh digunakan untuk membina aplikasi komunikasi Modbus TCP yang fleksibel dan boleh dipercayai. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan aplikasi komunikasi Modbus TCP dan memberikan contoh kod yang sepadan.
1. Pengenalan kepada protokol TCP Modbus
Modbus TCP ialah bentuk aplikasi protokol Modbus, berdasarkan susunan protokol TCP/IP, digunakan untuk komunikasi dan pertukaran data antara peranti dalam rangkaian. Modbus TCP menggunakan format protokol Modbus standard untuk merangkum data Modbus RTU/ASCII dalam mesej TCP/IP dan menghantarnya melalui rangkaian. Modbus TCP menggunakan kaedah komunikasi berorientasikan sambungan dan mudah, cekap dan boleh dipercayai.
2. Kaedah komunikasi antara PHP dan Modbus TCP
PHP boleh berkomunikasi dengan Modbus TCP melalui modul sambungan Soket. Mula-mula, anda perlu menggunakan fungsi socket_create() untuk mencipta soket Socket, dan kemudian gunakan fungsi socket_connect() untuk mewujudkan sambungan dengan peranti Modbus TCP. Selepas sambungan diwujudkan, anda boleh menggunakan fungsi socket_write() untuk menghantar mesej permintaan kepada peranti Modbus TCP, dan kemudian gunakan fungsi socket_read() untuk menerima mesej respons yang dikembalikan oleh peranti. Akhir sekali, gunakan fungsi socket_close() untuk menutup sambungan.
3. Contoh kod PHP
Berikut ialah contoh kod PHP mudah yang melaksanakan fungsi membaca memegang data daftar daripada peranti Modbus TCP.
<?php // Modbus TCP设备地址 $host = "192.168.1.1"; // Modbus TCP端口号 $port = 502; // 创建Socket套接字 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echo "创建Socket套接字失败!"; exit(); } // 建立与Modbus TCP设备的连接 $result = socket_connect($socket, $host, $port); if ($result === false) { echo "连接Modbus TCP设备失败!"; exit(); } // 读取保持寄存器数据的请求报文 $request = hex2bin("0001000000060113000002"); // 发送请求报文到Modbus TCP设备 $result = socket_write($socket, $request, strlen($request)); if ($result === false) { echo "发送请求失败!"; exit(); } // 接收Modbus TCP设备返回的响应报文 $response = socket_read($socket, 1024); if ($response === false) { echo "接收响应失败!"; exit(); } // 处理Modbus TCP设备返回的响应数据 $data = substr($response, 9); $registers = unpack("n*", $data); print_r($registers); // 关闭与Modbus TCP设备的连接 socket_close($socket); ?>
Dalam kod di atas, soket Soket dibuat pertama kali menggunakan fungsi socket_create(), dan kemudian fungsi socket_connect() digunakan untuk mewujudkan sambungan dengan peranti Modbus TCP. Kemudian, gunakan fungsi hex2bin() untuk menukar mesej permintaan untuk dihantar ke dalam format binari, dan kemudian gunakan fungsi socket_write() untuk menghantar mesej permintaan kepada peranti.
Selepas menerima mesej respons yang dikembalikan oleh peranti, gunakan fungsi socket_read() untuk membaca mesej respons dan menghuraikan data daftar pegangan. Akhir sekali, gunakan fungsi socket_close() untuk menutup sambungan ke peranti.
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk membangunkan aplikasi komunikasi Modbus TCP dan memberikan contoh kod yang sepadan. Melalui komunikasi antara PHP dan Modbus TCP, pertukaran data dan kawalan antara peranti dapat direalisasikan. Pembangun boleh mengubah suai dan memanjangkan kod mengikut keperluan sebenar untuk memenuhi keperluan aplikasi mereka sendiri. Saya harap artikel ini dapat membantu pembaca memahami prinsip komunikasi Modbus TCP dan berjaya menerapkannya pada projek sebenar.
Atas ialah kandungan terperinci Amalan pembangunan PHP: membina aplikasi komunikasi Modbus TCP yang fleksibel dan boleh dipercayai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!