PLCnext REST APIを効率化:リバースプロキシの設定
PLCnext RESTインターフェースは、バックエンドシステムからデータを提示および受信するための優れたツールです。REST(REpresentational State Transfer)は、スケーラブルなWebサービスを作成するためのガイドラインとベストプラクティスで構成されるソフトウェアアーキテクチャスタイルです。PLCnextインフォポータルにはすでに多くの優れた情報がありますので、ぜひチェックしてください!PLCnextファームウェアが提供するURIは、システムをゼロから構築する場合は完璧です。しかし、既存のRESTインターフェースをPLCnextに後付けしたい場合には理想的ではありません。このブログでは、独自のURIを設定し、リバースプロキシを使用して変数と接続する方法を紹介します。小さな例から始めて、そこから構築していきます!
前提条件
AXC F 2152コントローラ(FW2020.6)とPLCnext Engineer 2020.6を使用します。しかし、2020.0以降のバージョンでも同じことが可能です。SSH接続にはPuTTY、HTTPリクエストの処理にはPostmanを使用します。開発目的で「ユーザー管理」を無効にしていますが、本番環境では同じことをしないでください!PLCnext Engineerの手順は非常に高レベルで説明します。何をすべきかわからない場合は、PLCnextインフォポータルやインストラクションビデオを参照するか、サンプルプロジェクトと比較してください!使用するコントローラのIPアドレスは192.168.10.10です。お使いのIPアドレスに変更してください。
例
このブログでは、シンプルなポンプUDTを例として使用します。このGitHubページからサンプルプログラムをダウンロードするか、もちろん独自に作成することもできます。eHMI設定で「ユーザー管理」の使用をオフにし、グローバル変数を作成します。この変数をeHMIページで使用して、APIで利用できるようにします。
最初のAPI呼び出し
まず、これから何を変更するのかを正確に発見しましょう!
最初のポンプの値を取得するためにGETリクエストを送信します。
Postmanを使用して、次のURIにGETリクエストを送信します:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Pump1を独自の変数に変更できます)
結果は:
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
カスタムエンドポイントの設定
シェルセッションを開き、rootパスワードを作成してrootユーザーとしてログインします。
次に、ターミナルで次のコマンドを入力し、ターミナルの「下部」に移動し、その間に何も入力しないように注意してください!
nano /etc/nginx/nginx.conf
次の部分をコピー&ペーストし、Ctrl+Sで保存、Ctrl+Xで終了します。
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
新しいエンドポイントへのリクエスト送信
Postmanで新しいGETリクエストを送信します。今回は次のURI:
GET https://192.168.10.10/Pump1
同じ回答を受け取りましたか?おめでとうございます、プロキシが正常に設定されました!
複数のポンプの設定
では、複数のポンプがある場合はどうでしょうか?一つのアプローチは、ポンプUDTを格納する配列を作成することです。変数を呼び出して配列全体を取得するか、右括弧の間にインデックスを指定して興味のある要素だけを取得できます。たとえば、Pump2[1]は、Pump2という名前の配列のインデックス1の要素を返します。
しかし、それがこのブログの主題です。プロキシを設定して、複数のポンプにアクセスできるようにすることもできます。
前のステップで貼り付けたテキストを次のスキームに合わせて変更します:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
Postmanで最初のURIにGETリクエストを送信すると、以前と同じ結果が得られます。2番目のURIにGETリクエストを送信すると、同じデータ型の配列が得られます。
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
これで、遭遇するあらゆるAPIスキームに合わせて、PLCnextデバイスに統合するためのすべてが揃いました!
参考資料
https://www.howtogeek.com/343877/what-is-an-api/
https://www.w3schools.com/tags/ref_httpmethods.asp
https://medium.com/@TebbaVonMathenstien/what-is-an-api-and-why-should-i-use-one-863c3365726b
https://restfulapi.net/rest-api-design-tutorial-with-example/
産業技術
- CONNEX™を発見:製造業のためのプレミア・サプライチェーン・ネットワーキング・プラットフォーム
- トップチョイスになる:B2B購買成功のための26項目必須チェックリスト
- 防衛産業で顧客を獲得するデジタルマーケティング戦略
- 価値の解放:最適化されたリバースロジスティクスがROIと顧客ロイヤルティを向上
- リバースオークションの再来:価格競争におけるサプライヤーのエンパワーメント
- 倉庫スキャンシステム効率を最大化するエキスパートのヒント
- リードジェネレーション投資のROIを最大化する
- インダストリー4.0導入の現状:スペインと世界の比較
- エッジAI推論をマスター:実用的なインサイトを得るための実践ガイド
- スマートホームの進化:コネクテッドリビングの未来を展望する
- 熱硬化性樹脂 vs 熱可塑性樹脂:主な違いと用途を理解する