PHP プログラミングのヒント: 高信頼性 Modbus TCP 通信の実装

WBOY
リリース: 2023-07-18 10:16:02
オリジナル
1476 人が閲覧しました

PHP プログラミングのヒント: 高信頼性 Modbus TCP 通信の実装

要約: Modbus TCP は、産業オートメーション システムのデバイス間のデータ対話を実現するために一般的に使用される産業用通信プロトコルです。この記事では、PHP プログラミング言語を使用して、信頼性の高いデータ伝送を実現する Modbus TCP 通信のテクニックをいくつか紹介します。具体的には、PHP Modbus 拡張ライブラリのインストールと使用、TCP 接続の確立、Modbus リクエストの作成、応答の解析に関するコード例が含まれています。

キーワード: PHP プログラミング、Modbus TCP、信頼性、データ送信、コード例

はじめに:

Modbus TCP (TCP/IP に基づく Modbus プロトコル) は、A 通信です。産業オートメーションの分野で広く使用されているプロトコル。 PLC (プログラマブル ロジック コントローラー)、センサー、モーター ドライバー、その他のデバイス間のデータ交換によく使用されます。実際には、特に効率的で安定したデータ伝送を必要とする産業用途では、Modbus TCP 通信の信頼性を確保することが非常に重要です。この記事では、読者が信頼性の高い Modbus TCP 通信を実現するのに役立ついくつかの PHP プログラミング テクニックを紹介します。

  1. PHP Modbus 拡張ライブラリを使用したインストールと使用

まず、PHP Modbus 拡張ライブラリをインストールする必要があります。この拡張ライブラリは、Modbus デバイスとの通信を容易にする一連の関数を提供します。次の手順でインストールできます。

ステップ 1: PHP Modbus 拡張ライブラリのソース コードをダウンロードします。
ステップ 2: ソース コードを解凍し、解凍されたディレクトリに移動します。
ステップ 3: 次のコマンドを実行して拡張ライブラリをコンパイルします:
$ phpize
$ ./configure
$ make
$ make install

インストールが完了したらphp.ini ファイルにインストールして拡張ライブラリを有効にできます:
extension=modbus.so

PHP Modbus 拡張ライブラリの使用方法は次のとおりです:

// 建立TCP连接
$tcp = modbus_tcp_connect('192.168.0.1', 502);

// 编写Modbus请求
$request = modbus_write_multiple_registers(1, 100, array(0x01, 0x02, 0x03));

// 发送请求并接收响应
$response = modbus_send_raw_request($tcp, $request);

// 解析响应
$data = modbus_get_response_data($tcp, $response);
ログイン後にコピー
  1. TCP 接続の確立

Modbus TCP 通信を行う前に、まず Modbus デバイスとの TCP 接続を確立する必要があります。 PHP のソケット関数を使用して接続を確立できます。具体的な例は次のとおりです:

// 建立TCP连接
$ip = '192.168.0.1';
$port = 502;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("Socket创建失败: " . socket_strerror(socket_last_error()));
}

$result = socket_connect($socket, $ip, $port);
if ($result === false) {
    die("Socket连接失败: " . socket_strerror(socket_last_error($socket)));
}

// 连接建立成功,进行后续操作
// ...
ログイン後にコピー
  1. Modbus リクエストの作成と応答の解析のコード例

一般的に言えば、Modbusリクエストは関数によって行われます。これはコード、開始アドレス、データで構成されます。以下は、Modbus 複数レジスタ リクエストを作成し、レスポンスを解析するためのサンプル コードです。

// 编写Modbus请求:写多个寄存器
$slave_address = 1;
$start_address = 100;
$data = array(0x01, 0x02, 0x03);

$request = pack('CCCC', $slave_address, 0x10, ($start_address >> 8) & 0xFF, $start_address & 0xFF);
$request .= pack('n', count($data) * 2);
foreach ($data as $value) {
    $request .= pack('n', $value);
}

// 发送请求并接收响应
socket_write($socket, $request, strlen($request));
$response = socket_read($socket, 1024);

// 解析响应
if (strlen($response) <= 0) {
    die("未接收到响应");
}

$raw_data = substr($response, 6); // 去除响应头部
$data_length = ord($response[4]);

$data = array();
for ($i = 0; $i < $data_length / 2; $i++) {
    $data[] = ord($raw_data[$i * 2]) << 8 | ord($raw_data[$i * 2 + 1]);
}

// 打印解析结果
print_r($data);
ログイン後にコピー

結論:

この記事では、PHP プログラミング言語を使用して信頼性の高い Modbus TCP 通信を実現するテクニックを紹介します。 PHP Modbus 拡張ライブラリのインストールと使用、TCP 接続の確立、Modbus リクエストの作成、応答の解析に関するコード例が含まれています。この記事を学習することで、読者は PHP プログラミングにおける Modbus TCP 通信に関連する知識とスキルをよりよく習得でき、それによって産業オートメーション システムのデータ送信効率と安定性が向上します。

参考:

  1. PHP Modbus 拡張ライブラリ公式ドキュメント
  2. PHP 公式ドキュメント: ソケット関数
  3. Modbus TCP プロトコル仕様

以上がPHP プログラミングのヒント: 高信頼性 Modbus TCP 通信の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート