grpcurl を使用したリモート gRPC
警告:このブログで説明されている手順は、現在サポートされていない PLCnext ランタイムの機能を使用しています。これらの機能は自己責任で使用し、本番アプリケーションでは絶対に使用しないでください。
gRPCurl github プロジェクトから:
最近のファームウェア バージョンでは、PLCnext Control デバイスの gRPC サーバーにアクセスできましたが、ローカル デバイスで実行されている gRPC クライアントのみを使用していました。以前の Makers ブログの投稿では、C# と Python で記述された gRPC クライアントの例を示しました。
将来のファームウェア バージョンでは、リモートから PLCnext Control デバイスの gRPC サーバーにアクセスすることも可能になります。 デバイス。実際、この機能はファームウェア バージョン 2022.6 に既に含まれていますが、これはまだ開発中であり、現在サポートされていません。この記事では、gRPCurl と呼ばれるオープンソースの gRPC クライアントを使用して、テストおよび開発目的でこの機能を有効にする方法について説明します。
gRPC サーバーはしないべきであることに注意してください 現在、本番アプリケーションでリモート アクセスできます。
手順
PLCnext Control デバイス上 (ファームウェア 2022.6)
- ファイル
/etc/plcnext/Packages.acf.settings
を編集します 環境変数ARP_PACKAGE:Arp.Services.GrpcRemote
の値を変更します"true"
まで
今後、この設定は Web Based Management の「システム サービス」ページで行う予定です。
-
ファイル
/opt/plcnext/config/Services/Grpc/Remote.grpc.config
の内容を確認します ."0.0.0.0:50051"
の値が表示されるはずです リスナーソケットアドレス用。これは、gRPC サーバーがポート 50051 で gRPC クライアントからのメッセージをリッスンすることを意味します。 -
PLCnext ランタイムを再起動してください。
リモート デバイス上
-
Github の手順に従って gRPCurl をインストールします。
-
protobuf
をダウンロード Github の PLCnext/gRPC リポジトリから、gRPC サービス定義ファイルを含むディレクトリ -
コマンドラインで
grpcurl
を発行します PLCnext Control デバイスでボード温度を読み取るコマンド:
grpcurl -insecure -import-path Documents/plcnext-grpc/protobuf -proto Device/Interface/IDeviceStatusService.proto -d '{"identifier":"Status.Board.Temperature.Centigrade"}' 192.168.1.10:50051 Arp.Device.Interface.Services.Grpc.IDeviceStatusService/GetItem
... どこ -import-path
は protobuf ディレクトリへのパスで、IP アドレスは PLCnext Control デバイスのアドレスです。
応答は摂氏でのボード温度を含む JSON オブジェクトである必要があります:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
よくある質問
これは可能かもしれませんが、grpcurl
ターゲット プラットフォームのソースからビルドする必要があり、単純ではない可能性がある依存関係の数が与えられます。
さらにヘルプが必要な場合...
grpcurl -help
を使用 利用可能なオプションの詳細情報を入手してください。
PLCnext ランタイムの gRPC サーバーに関する質問については、PLCnext コミュニティ フォーラムをご利用ください。
産業技術