シームレスなgRPC統合:PythonスクリプトをPLCnext Engineerプロジェクトに接続
以下の情報は、2022年の投稿に対する更新および拡張です。
このアプローチはAXC F 2152とAXC F 3152で同じように機能します。違いは、必要なライブラリのインストール方法にあります。
重要: このアプローチはFW 2024.xおよび2025.0でテスト済みであり、動作確認されています。
AXC F 2152の場合:
ライブラリgrpcioとgrpcio-toolsをデバイス外でクロスコンパイルし、手動でインストールする必要があります。QEMUを使用したクロスコンパイルのアプローチの概要は、このフォーラム エントリで確認できます。
Python 3.11用のクロスコンパイル済みライブラリは、この投稿をフォローするためのその他のファイルとともに、このリンクで入手可能です。
以下の手順で、Python 3.11を搭載したコンテナを作成し、gRPCを利用するスクリプトを実行できます。
- WinSCP(またはコントローラのファイルシステムにアクセスできるその他のソフトウェア)を使用して、/opt/plcnextにgRPC通信用のフォルダを作成します。この例ではそのフォルダに「grpc2152」という名前を割り当てます。grpc2152内に以下のフォルダ構造を作成します。
grpc2152/
├── include/
│ └── google/
│ └── protobuf/
│ └── (PLCnext GitHubリポジトリからprotobufフォルダの内容)
│ ├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│ ├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- リポジトリ「https://github.com/PLCnext/gRPC」をダウンロードし、そこから「protobuf」フォルダを取り出し、先ほど作成したgoogleフォルダ内に配置します。結果として以下のフォルダ構造になります:
grpc2152/
├── include/
│ └── google/
│ └── protobuf/
│ └── (PLCnext GitHubリポジトリからprotobufフォルダの内容)
│ ├── whl_files311/
│ ├── grpcio-1.71.0-cp311-cp311-linux_armv7l.whl
│ └── grpcio_tools-1.71.0-cp311-cp311-linux_armv7l.whl
│ ├── generate_googlegrpc.py
├── grpc_test.py
└── Readme.txt
- PLCへのSSHセッションを作成し、rootユーザー(su)でログインして、Python 3.11のスリム版を取得します(この時点でインターネット接続が必要です):
$ podman pull docker.io/library/python:3.11.10-slim-bookworm
- コンテナを実行してアタッチします(grpc2152フォルダをボリュームとしてリンクし、grpcソケットへの接続に必要な2つ目のボリュームrunもリンク):
$ podman run -it -v /opt/plcnext/grpc2152:/grpc2152 -v /run:/run --restart=always --name grpctester python:3.11.10-slim-bookworm /bin/bash
- コンテナのコンソールにアタッチしたら、whl_files311フォルダに移動し、grpcioライブラリをインストールします(依存関係のためインターネット接続が必要です):
$ cd /grpc2152/whl_files311/
$ pip install *.whl
- コンテナ内で親フォルダgrpc2152に戻り、Pythonスクリプト「generate_googlegrpc.py」を実行します(いくつかのメッセージが表示されます -working!-):
$ cd /grpc2152
$ python3 generate_googlegrpc.py
- スクリプトが正常に完了すると、新しいフォルダ(pxc_grpc)が作成されます。grpc2152内に、gRPC用のPythonスニペットが配置されます。これで、サンプル プロジェクトとスクリプトでgRPC機能をテストできます。
- PLCnext Engineerプロジェクト「TestingGRPC.pcwex」をコントローラにダウンロードして開始します。
- コンテナのコンソールから「grpc_test.py」スクリプトを実行してgRPC機能をテストします。PLCnext Engineerプロジェクトでデバッグモードで変数にアクセスすると、変数の内容がスクリプトからの値で設定されているはずです。
AXC F 3152の場合:
上記の2152の手順と同じ手順に従いますが、ステップ5でpypi.orgから直接ライブラリをインストールします:
$ pip install grpcio==1.71.0
$ pip install grpcio-tools==1.71.0
データ型とコード スニペットの活用。
これで、変数にアクセスするためにgRPCを使用したいときはいつでも、コード スニペットが生成されたフォルダをスクリプトで使用するPythonパスに含め、必要なクラスをインポートします(grpc_test.pyファイルの6行目から14行目)。
この記事の冒頭で言及した古い投稿で概説されているデータ型を考慮してください。
注記:
Makers Blogは、Phoenix Contactによってテストまたはレビューされていないコミュニティ メンバーのアプリケーションとユーザー ストーリーを紹介しています。自己責任でご利用ください。
産業技術
- 成果を出す製造業セールストレーニング:信頼できる実践ノウハウ
- 加工プロジェクトを前進させるエンジニアリング専門知識
- Brown & Sharpe CMM:CAMとCNCレトロフィットにおける部品検査の向上
- 初回ロボット導入を成功させるための実践ガイド
- 公差積み上げのマスター:実践ガイド
- 電気接地(アース)完全ガイド: 方式、種類、設置基準、部品解説
- 産業用流体システム部品の寿命延長:コスト削減につながる実証済み戦略
- レギュレーターフローカーブの習得:ドループを最小限に抑え安定圧力を確保する技術
- コンデンサバンク容量(µF・kVAR)の正確な計算法:力率改善のための3つの手法
- 処方薬配送サービスの拡大:あなたの薬局は準備できていますか?
- あなたの購買が語る物語:ブランドが購買習慣をターゲットマーケティングに活用する仕組み(インフォグラフィック)