PHP dan Modbus TCP: Perbincangan tentang kaedah untuk mencapai kawalan peranti teragih
Gambaran keseluruhan:
Dengan perkembangan pesat Internet Perkara, kawalan peranti teragih telah menjadi cabaran penting. Artikel ini akan meneroka cara menggunakan PHP dan protokol TCP Modbus untuk melaksanakan kawalan peranti teragih dan cara menulis contoh kod untuk membantu pembaca memahami kaedah tersebut dengan lebih baik.
Persediaan:
Sebelum kita mula menulis kod, kita perlu memastikan kita telah memasang pustaka Modbus TCP. Ia boleh dipasang dalam sistem Linux menggunakan arahan berikut:
sudo apt-get install php7.4-mbstring
function connectModbusDevice($ip, $port) { $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { die("无法创建套接字"); } $result = socket_connect($socket, $ip, $port); if ($result === false) { die("无法连接到Modbus设备"); } return $socket; }
Sila pastikan anda menetapkan parameter $ip
dan $port
kepada IP yang betul alamat dan port peranti Modbus. $ip
和$port
参数设置为正确的Modbus设备的IP地址和端口。
function readModbusRegister($socket, $registerAddress) { $request = "" . pack('n', $registerAddress) . ""; socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,获取寄存器的值 $registerValue = unpack('n', substr($response, 9, 2))[1]; return $registerValue; }
请确保将$registerAddress
参数设置为要读取的寄存器的地址。
function writeModbusRegister($socket, $registerAddress, $registerValue) { $request = "" . pack('n', $registerAddress) . pack('n', $registerValue); socket_write($socket, $request, strlen($request)); $response = socket_read($socket, 2048); // 解析响应数据,检查写入操作是否成功 $statusCode = unpack('n', substr($response, 7, 2))[1]; if ($statusCode != 6) { die("写入寄存器失败"); } }
请确保将$registerAddress
参数设置为要写入的寄存器的地址,将$registerValue
function disconnectModbusDevice($socket) { socket_close($socket); }
$registerAddress
ke alamat daftar yang anda ingin baca. Tulis nilai daftar:
Selain membaca nilai daftar, kita juga boleh menggunakan protokol Modbus TCP untuk menulis data ke daftar peranti. Berikut ialah contoh fungsi untuk menulis nilai daftar:$modbusIp = "192.168.1.100"; $modbusPort = 502; $modbusDevice = connectModbusDevice($modbusIp, $modbusPort); $registerAddress = 100; $registerValue = readModbusRegister($modbusDevice, $registerAddress); echo "寄存器 $registerAddress 的值为: $registerValue" . PHP_EOL; $registerAddress = 200; $registerValue = 500; writeModbusRegister($modbusDevice, $registerAddress, $registerValue); echo "成功将值 $registerValue 写入寄存器 $registerAddress" . PHP_EOL; disconnectModbusDevice($modbusDevice);
$registerAddress
ke alamat daftar yang ingin anda tulis dan $registerValue The code> parameter ditetapkan kepada nilai yang akan ditulis. 🎜🎜🎜Tutup sambungan dengan peranti Modbus: 🎜Selepas melengkapkan komunikasi dengan peranti Modbus, kami harus menutup sambungan yang telah ditetapkan. Berikut ialah contoh fungsi untuk menutup sambungan: 🎜🎜rrreee🎜Kod sampel lengkap adalah seperti berikut: 🎜rrreee🎜Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan PHP dan protokol TCP Modbus untuk melaksanakan kawalan peranti teragih. Kami menyediakan contoh kod untuk fungsi utama seperti menyambung ke peranti Modbus, membaca nilai daftar, menulis nilai daftar dan menutup sambungan. Dengan menggunakan contoh ini, pembaca boleh lebih memahami dan menggunakan PHP dan Modbus TCP untuk melaksanakan kawalan peranti teragih. 🎜
Atas ialah kandungan terperinci PHP dan Modbus TCP: Perbincangan tentang kaedah untuk mencapai kawalan peranti teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!