ホームページ  >  記事  >  バックエンド開発  >  PHP 開発実践: 柔軟で信頼性の高い Modbus TCP 通信アプリケーションの構築

PHP 開発実践: 柔軟で信頼性の高い Modbus TCP 通信アプリケーションの構築

王林
王林オリジナル
2023-07-17 21:09:081988ブラウズ

PHP 開発実践: 柔軟で信頼性の高い Modbus TCP 通信アプリケーションの構築

Modbus TCP は、一般的な通信プロトコルとして産業用制御システムで広く使用されており、イーサネット インタラクションを通じてデバイス間の通信とデータを実現します。強力なサーバー側プログラミング言語として、PHP を使用して、柔軟で信頼性の高い Modbus TCP 通信アプリケーションを構築できます。この記事では、PHP を使用して Modbus TCP 通信アプリケーションを開発する方法と、対応するコード例を紹介します。

1. Modbus TCP プロトコルの概要
Modbus TCP は、Modbus プロトコルのアプリケーション形式であり、TCP/IP プロトコル スタックに基づいており、ネットワーク内のデバイス間の通信とデータ交換に使用されます。 Modbus TCP は、標準 Modbus プロトコル形式を使用して Modbus RTU/ASCII データを TCP/IP メッセージにカプセル化し、ネットワーク経由で送信します。 Modbus TCP はコネクション指向の通信方式を採用しており、シンプル、効率的、信頼性が高いです。

2. PHP と Modbus TCP 間の通信方法
PHP は、Socket 拡張モジュールを介して Modbus TCP と通信できます。まず、socket_create() 関数を使用して Socket ソケットを作成し、次に、socket_connect() 関数を使用して Modbus TCP デバイスとの接続を確立する必要があります。接続が確立された後、socket_write() 関数を使用してリクエスト メッセージを Modbus TCP デバイスに送信し、socket_read() 関数を使用してデバイスから返された応答メッセージを受信できます。最後に、socket_close() 関数を使用して接続を閉じます。

3. PHP コード例
以下は、Modbus TCP デバイスから保持レジスタ データを読み取る機能を実装する簡単な PHP コード例です。

<?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);
?>

上記のコードでは、最初にsocket_create()関数を使用してSocketソケットが作成され、次にsocket_connect()関数を使用してModbus TCPデバイスとの接続が確立されます。次に、hex2bin() 関数を使用して、送信するリクエスト メッセージをバイナリ形式に変換し、socket_write() 関数を使用してリクエスト メッセージをデバイスに送信します。

デバイスから返された応答メッセージを受信した後、socket_read() 関数を使用して応答メッセージを読み取り、保持しているレジスタ データを解析します。最後に、socket_close() 関数を使用してデバイスへの接続を閉じます。

4. 概要
この記事では、PHP を使用して Modbus TCP 通信アプリケーションを開発する方法を紹介し、対応するコード例を示します。 PHPとModbus TCP間の通信により、機器間のデータ交換や制御を実現します。開発者は、実際のニーズに応じてコードを変更および拡張し、独自のアプリケーション要件を満たすことができます。この記事が、読者が Modbus TCP 通信の原理を理解し、それを実際のプロジェクトにうまく適用するのに役立つことを願っています。

以上がPHP 開発実践: 柔軟で信頼性の高い Modbus TCP 通信アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。