首頁  >  文章  >  後端開發  >  如何透過PHP實現Modbus TCP的批次讀取和寫入

如何透過PHP實現Modbus TCP的批次讀取和寫入

王林
王林原創
2023-07-17 15:54:121851瀏覽

如何透過PHP實現Modbus TCP的批次讀取與寫入

一、Modbus TCP簡介
Modbus TCP是一種基於TCP/IP協定的工業通訊協議,常用於工控領域中的設備通訊。透過使用Modbus TCP協議,可以實現設備之間的資料讀取和寫入操作。本文將針對使用PHP語言實作Modbus TCP的批次讀取和寫入進行介紹,並附上對應的程式碼範例。

二、環境準備
在開始編寫PHP程式碼之前,需要先安裝對應的PHP擴充功能和環境。確保伺服器上已經安裝了PHP和Modbus TCP相關擴充。安裝完成後,可以透過phpinfo()函數查看PHP是否運作正常以及是否載入了Modbus TCP擴充。

三、Modbus TCP連線與通訊
在PHP中,可以使用modbus_new_tcp()函數來建立一個Modbus TCP連線。此函數接受兩個參數,第一個參數是Modbus TCP伺服器的IP位址,第二個參數是Modbus TCP伺服器的連接埠號碼。以下是一個範例程式碼:

$modbus = modbus_new_tcp("192.168.1.10", 502);
if (!$modbus) {
    die('Failed to create Modbus TCP connection');
}

建立成功後,可以使用modbus_read_input_registers()函數進行資料的讀取操作,該函數接受四個參數,分別是Modbus TCP連線、從機位址、暫存器位址以及讀取的數量。以下是讀取輸入暫存器的範例程式碼:

$data = modbus_read_input_registers($modbus, 1, 0, 10);
if ($data === false) {
    die('Failed to read input registers');
}
print_r($data);

透過上述程式碼,可以讀取從機位址為1的裝置的0號暫存器開始的10個暫存器的數據,並將結果輸出。

如果需要對裝置進行寫入操作,可以使用modbus_write_single_register()函數,該函數接受四個參數,分別是Modbus TCP連線、從機位址、暫存器位址以及要寫入的資料。以下是寫入單一暫存器的範例程式碼:

$success = modbus_write_single_register($modbus, 1, 0, 100);
if (!$success) {
    die('Failed to write single register');
}

透過上述程式碼,可以將資料100寫入從機位址為1的裝置的0號暫存器。

四、批次讀取和寫入
在實際專案中,可能需要同時對多個裝置進行資料的讀取和寫入操作。可以使用modbus_read_input_registers_batch()函數和modbus_write_single_register_batch()函數來實作批次操作。

modbus_read_input_registers_batch()函數接受三個參數,分別是Modbus TCP連線、裝置位址和一組暫存器位址的陣列。以下是一個批次讀取輸入暫存器的範例程式碼:

$addresses = [0, 1, 2, 3, 4];
$data = modbus_read_input_registers_batch($modbus, 1, $addresses);
if (!$data) {
    die('Failed to read input registers batch');
}
print_r($data);

modbus_write_single_register_batch()函數接受三個參數,分別是Modbus TCP連線、裝置位址和一組暫存器和資料的陣列。下面是一個批次寫入單一暫存器的範例程式碼:

$registersAndData = [
    [0, 100],
    [1, 200],
    [2, 300],
    [3, 400],
];
$success = modbus_write_single_register_batch($modbus, 1, $registersAndData);
if (!$success) {
    die('Failed to write single register batch');
}

透過上述程式碼,可以同時對一組裝置的暫存器進行讀取和寫入操作。

五、總結
透過以上的介紹和範例程式碼,我們可以看到,透過PHP語言實作Modbus TCP的批次讀取和寫入是相對簡單的。只需準備好對應的環境,並使用Modbus TCP相關的PHP擴充函數,即可輕鬆實現裝置之間的通訊和資料操作。

以上是如何透過PHP實現Modbus TCP的批次讀取和寫入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn