PHP dan Modbus TCP: Perbincangan tentang kaedah untuk mencapai kawalan peranti teragih

王林
Lepaskan: 2023-07-18 10:26:01
asal
1291 orang telah melayarinya

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.

  1. Pengenalan Modbus TCP:
    Modbus TCP ialah kaedah komunikasi berdasarkan protokol Modbus, yang melaksanakan komunikasi antara peranti pada rangkaian TCP/IP. Modbus TCP menggunakan daftar Modbus standard untuk pertukaran data, menyokong membaca dan menulis data ke peranti.
  2. Pengintegrasian PHP dengan Modbus TCP:
    PHP ialah bahasa skrip sebelah pelayan yang sangat popular dengan sokongan rangkaian dan pangkalan data yang kukuh. Menggunakan PHP untuk berkomunikasi dengan peranti Modbus TCP memberikan fleksibiliti dan kemudahan penggunaan.

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
Salin selepas log masuk
  1. Menyambung ke peranti Modbus:
    Pertama, kita perlu mewujudkan sambungan ke peranti Modbus. Berikut ialah contoh fungsi PHP untuk menyambung ke peranti Modbus:
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;
}
Salin selepas log masuk

Sila pastikan anda menetapkan parameter $ip dan $port kepada IP yang betul alamat dan port peranti Modbus. $ip$port参数设置为正确的Modbus设备的IP地址和端口。

  1. 读取寄存器的值:
    一旦连接到Modbus设备,我们可以使用Modbus TCP协议读取设备上的寄存器值。以下是一个示例函数,用于读取一个寄存器的值:
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;
}
Salin selepas log masuk

请确保将$registerAddress参数设置为要读取的寄存器的地址。

  1. 写入寄存器的值:
    除了读取寄存器的值外,我们还可以使用Modbus TCP协议将数据写入设备的寄存器中。以下是一个示例函数,用于写入一个寄存器的值:
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("写入寄存器失败");
    }
}
Salin selepas log masuk

请确保将$registerAddress参数设置为要写入的寄存器的地址,将$registerValue

    Baca nilai daftar:
      Setelah disambungkan ke peranti Modbus, kita boleh membaca nilai daftar pada peranti menggunakan protokol TCP Modbus. Berikut ialah contoh fungsi untuk membaca nilai daftar:

    1. function disconnectModbusDevice($socket) {
          socket_close($socket);
      }
      Salin selepas log masuk
    2. Sila pastikan anda menetapkan parameter $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);
      Salin selepas log masuk
      Sila pastikan anda menetapkan parameter $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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!