IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シーメンス アクチエンゲゼルシヤフトの特許一覧

特許7467660産業用オートメーションプラットフォームのオートメーションプログラムを管理する方法および装置
<>
  • 特許-産業用オートメーションプラットフォームのオートメーションプログラムを管理する方法および装置 図1
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-05
(45)【発行日】2024-04-15
(54)【発明の名称】産業用オートメーションプラットフォームのオートメーションプログラムを管理する方法および装置
(51)【国際特許分類】
   G06F 8/60 20180101AFI20240408BHJP
【FI】
G06F8/60
【請求項の数】 10
(21)【出願番号】P 2022555049
(86)(22)【出願日】2021-02-25
(65)【公表番号】
(43)【公表日】2023-04-28
(86)【国際出願番号】 EP2021054633
(87)【国際公開番号】W WO2021185547
(87)【国際公開日】2021-09-23
【審査請求日】2022-11-28
(31)【優先権主張番号】20164384.8
(32)【優先日】2020-03-20
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】390039413
【氏名又は名称】シーメンス アクチエンゲゼルシヤフト
【氏名又は名称原語表記】Siemens Aktiengesellschaft
(74)【代理人】
【識別番号】110003317
【氏名又は名称】弁理士法人山口・竹本知的財産事務所
(74)【代理人】
【識別番号】100075166
【弁理士】
【氏名又は名称】山口 巖
(74)【代理人】
【識別番号】100133167
【弁理士】
【氏名又は名称】山本 浩
(74)【代理人】
【識別番号】100169627
【弁理士】
【氏名又は名称】竹本 美奈
(72)【発明者】
【氏名】ゲッツ,ヤン
(72)【発明者】
【氏名】ミッターマイアー,ルートヴィヒ アンドレアス
(72)【発明者】
【氏名】ミュラー,ハラルド
(72)【発明者】
【氏名】プレムナド,スリーナス
【審査官】渡辺 順哉
(56)【参考文献】
【文献】米国特許出願公開第2018/0365039(US,A1)
【文献】再公表特許第2016/189689(JP,A1)
【文献】欧州特許出願公開第03564764(EP,A1)
【文献】特開2004-280305(JP,A)
【文献】特開2019-159532(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
G06F 9/44-9/445
(57)【特許請求の範囲】
【請求項1】
プログラマブルロジックコントローラのオートメーションプログラムを管理する方法であって、
前記オートメーションプログラムは、前記プログラマブルロジックコントローラに送信され、前記オートメーションプログラムの実行は、前記プログラマブルロジックコントローラ上で制御される方法において、
第1ステップにて、前記オートメーションプログラムまたは前記オートメーションプログラムへのリファレンスが、Kubernetes(登録商標)マスタから仮想kubeletへ、送信され、
第2ステップにて、リファレンスを送信する場合、前記仮想kubeletのプロバイダインタフェースによって、参照される前記オートメーションプログラムは、前記プログラマブルロジックコントローラに送信され、
第3ステップにて、送信された前記オートメーションプログラムの実行は、前記プログラマブルロジックコントローラで制御され、前記プロバイダインタフェースによって、制御命令が前記プログラマブルロジックコントローラに送信され、前記プログラマブルロジックコントローラの肯定応答メッセージが受信され、そして処理されるか、または、制御インスタンスへ、転送される、
ことを特徴とする方法。
【請求項2】
請求項1に記載の方法において、
前記第1ステップにて、前記オートメーションプログラムへの前記リファレンスとして、メモリアドレス、メモリパス情報、アプリストアのコンテンツに関する仕様、インターネットアドレス、またはFTPアドレス、が使用されること、
を特徴とする方法。
【請求項3】
請求項1または2に記載の方法において、
前記第2ステップにて、前記仮想kubeletへ送信されるかまたはそれに前記リファレンスとして指定される前記オートメーションプログラムは、前記プログラマブルロジックコントローラへの送信前に、前処理されること、
を特徴とする方法。
【請求項4】
請求項3に記載の方法において、
前記第2ステップにて、前記オートメーションプログラムは、前記送信前に、コンパイルされること、を特徴とする方法。
【請求項5】
請求項3または4に記載の方法において、
前記第2ステップにて、送信される前記オートメーションプログラムは、参照される複数のソースから、および/または、前記Kubernetesマスタによって送信されるプログラムの一部から、作成されること、
を特徴とする方法。
【請求項6】
請求項1~5の何れか1項に記載の方法において、
複数の前記プログラマブルロジックコントローラを備える装置で、個別の前記プログラマブルロジックコントローラの各々に対して、または、同じタイプまたは同様の前記プログラマブルロジックコントローラのグループに対して、それぞれ固有の前記プロバイダインタフェースが使用され、使用される前記プロバイダインタフェースの各々は、それぞれの前記プログラマブルロジックコントローラへ送信される前記オートメーションプログラムを、それぞれのターゲットプログラマブルロジックコントローラのタイプおよび特別なプロパティへの適合のために、実行すること、
を特徴とする方法。
【請求項7】
請求項1~6の何れか1項に記載の方法において、
前記仮想kubeletによって、産業用のエンジニアリングシステムまたはその一部が、前記プロバイダインタフェースとして使用され、前記エンジニアリングシステムまたは前記その一部は、前記Kubernetesマスタから前記仮想kubeletへ送信される命令を用いて、制御されること、
を特徴とする方法。
【請求項8】
請求項1~7の何れか1項に記載の方法において、
前記プログラマブルロジックコントローラのリソースを管理するために、および/または、前記オートメーションプログラムを複数の前記プログラマブルロジックコントローラのうちの1つに割り当てるために、Kubernetesのカスタムリソース定義(CRD)が使用されること、
を特徴とする方法。
【請求項9】
請求項1~8の何れか1項に記載の方法において、
前記プログラマブルロジックコントローラの使用に適合されたスケジューラ(Kubernetes Custom Scheduler)が、前記プログラマブルロジックコントローラへの前記オートメーションプログラムへの展開に使用されること、
を特徴とする方法。
【請求項10】
プログラマブルロジックコントローラのオートメーションプログラムを管理する装置であって、
前記オートメーションプログラムまたは前記オートメーションプログラムへのリファレンスを仮想Kubeletへ送信するKubernetesマスタを備え、
前記オートメーションプログラムまたは前記オートメーションプログラムへの前記リファレンスを受信するための、前記プログラマブルロジックコントローラでの前記オートメーションプログラムのインストールのための命令を受信するための、及び、前記プログラマブルロジックコントローラでの前記オートメーションプログラムのプロセスを制御するための、前記仮想Kubeletを備え、
前記オートメーションプログラムを前記プログラマブルロジックコントローラへ送信するための、前記オートメーションプログラムのプログラムプロセスを制御するための、及び、前記オートメーションプログラムのプロセスの実行中に、前記プログラマブルロジックコントローラの肯定応答メッセージを受信及び転送するための、前記仮想Kubeletのプロバイダインタフェースを備える、
装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1の前提部分に係る産業用オートメーションプラットフォームのオートメーションアプリケーションを管理する方法、および、請求項10の前提部分に係る産業用オートメーションプラットフォームのオートメーションアプリケーションを管理する装置、に関する。
【背景技術】
【0002】
オートメーションシステムのオートメーションアプリケーションは、1つまたは複数の、例えばIEC 61131規格に準拠しているオートメーションプログラムであって、産業用オートメーションプラットフォームで実行されるオートメーションプログラム、からなる。そのような産業用オートメーションプラットフォームは、例えば、プログラマブルロジックコントローラ(英:Programmable Logic Controller(略してPLC)、独:Speicherprogrammierbare Steuerungen)であってよい。このオートメーションプログラムの作成および管理、例えば、個別のコントローラへのプログラムの割り当て、プログラムのロード/起動/停止、プログラムのアップデート等は、一般に、いわゆるエンジニアリングシステムにおいて、例えばシーメンス株式会社(Siemens AG)のTIAポータルにおいて、行われる。これらアクティビティは、一般的にエンジニアリングと称され、通常、手動制御で行われる、すなわち、低い自動化レベルで、そして対応的に長い変更時間と高い変更コストで行われる。また、エンジニアリングシステムは、通常、産業用オートメーションプラットフォームにローカル接続する必要もあり、エンジニアリングシステムのバージョンは、使用されるオートメーションプラットフォーム(コントローラ)のそれぞれのバージョンおよびタイプと一致すること等、が必要とされる。
【0003】
以下、少なくとも、既に作成されたオートメーションプログラムを目的地又は「ターゲット」へ、つまり産業用オートメーションプラットフォーム(SPS、PLC等)へ、送信するプロセス、オートメーションプログラムのプロセスを開始および終了(スタート/ストップ)するステップ、制御エンティティ(英:control entity、独:Kontrollinstanz)(例えば、HMIデバイス(HMI:Human Machine Interface))に対するオートメーションプログラムを処理するプロセスの間の産業用オートメーションプラットフォームの肯定応答メッセージ(独:Quittierungsmeldungen、英:acknowledgment messages)を受信及び転送するステップを、まとめて、オートメーションプログラムの「管理」および「制御」と称する。
【0004】
ITベースのモジュラーシステムに対しては、つまり従来のコンピュータ技術によるシステムに対しては、既にしばらく前から、ソフトウェアコンテナ技術が導入されている。特に、複数のコンピューティングノードを備える分散システムにおいては、コンテナベースのプログラムは、いわゆるコンテナオーケストレーション技術(独:Container-Orchestration-Techniken、英:container orchestration technologies)、例えばKubernetes(登録商標)(https://kubernetes.io/de/)、を用いて、コンピューティングノードに分散され、実行され、監視される。Kubernetesでは、これらは、中央コンポーネント、いわゆるマスタまたはKubernetesマスタ、を介して行われる。これは、実行されるソフトウェアコンポーネントの説明、いわゆるマニフェスト、を取得する。マスタは、適切なノード(独:Knoten、英:Nodes)を選択し、そこにあるソフトウェアコンポーネントを有するコンテナを実行させるが、これは「デプロイメント」と称される。さらに、Kubernetesマスタは、コンポーネントを監視し、必要に応じて、リカバリするためのアクションを実行する。さらに、ランタイムに、コンポーネントの変更を行うことができる、例えば、アップデートされたバージョンの起動、スケーリング(スループットを増減させるためのインスタンスのスタート/ストップ)等を、行うことができる。
【0005】
Kubernetesを使用するために基本的なことは、完全なソフトウェアが1つまたは複数のソフトウェアコンテナ(例えば、Dockerコンテナ(https://www.docker.com/resources/what-container))に統合されており、このコンテナが、ランタイム環境、いわゆるコンテナランタイムに、コンピュータハードウェア(通常の場合「ノード」と称される)で送信されることである。ここで、「ノード」の構成要素は、いわゆるkubeletであり、当該kubeletはローカルで実行されるソフトウェアであり、当該ソフトウェアは管理を行うKubernetesマスタおよびローカルコンテナランタイムと協働し、ソフトウェアを含むコンテナをローカルにダウンロードし、実行し、動作を監視する。
【0006】
上述のように、従来、オートメーションプログラムの管理(作成、ロード、スタート、ストップ)は、産業用オートメーションプラットフォーム(産業用コントローラ、SPS、PLC等)にローカル接続される特別なエンジニアリングシステムを用いて、通常の場合大部分が手動(マニュアル)で、行われる。通常の場合、個別のオートメーションプラットフォーム(例えば、PLC(プログラマブルロジックコントローラ))へのオートメーションプログラムの割り当ては、手動で行われる。
【0007】
また、従来のエンジニアリングシステムを使用することは、多くの場合、このエンジニアリングシステムのインスタンスが産業用ネットワークにローカルで存在することと関連付けられており、「遠隔制御」は、特にはクラウドベースのアプローチにおいては、遠隔作業場からのローカルエンジニアリングシステムへの専用アクセスを必要とし、これは、システム全体の高コストな構成を必要とする。
【0008】
非特許文献1は、「オーケストレーション」のための、つまり、リソースが限られているデバイスでのソフトウェアを有するコンテナの展開および稼働のための、仮想kubeletの使用、を記載している。
【0009】
非特許文献2は、プロプライエタリ制御プログラムを実行するためのコンテナでのプロプライエタリPLCハードウェアのエミュレーション、を開示している。
【先行技術文献】
【非特許文献】
【0010】
【文献】Goethals et al.“FLEDGE: Kubernetes Compatible Container Orchestration on Low-Resource Edge Devices”(ISBN:978-3-642-36741-0)
【文献】Goldschmidt et al. “Container-based architecture for flexible industrial control applications”(Journal of Systems Architecture Bd. 84 (2018),28-36頁)
【発明の概要】
【発明が解決しようとする課題】
【0011】
従って、本発明の課題は、従来のオートメーションプログラムを高い自動化レベルで管理し、制御することであり、その際、可能な限り確立されており、広く普及しており、簡単に学習可能な方法を使用し、管理される産業用オートメーションプラットフォームに対してのエンジニアリングシステムの依存性を低下させ、エンジニアリングシステムへのローカルな依存性を軽減または除去することである。
【課題を解決するための手段】
【0012】
本発明の課題は、原則的に、Kubernetesマスタとkubeletとからなる周知のシステムによって、解決され、そのような周知のシステムは、コンテナベースのプログラムをコンテナランタイム環境において管理および制御するように意図されている。本発明によれば、仮想kubelet(https://github.com/virtual-kubeletを参照)が使用され、当該仮想kubeletは、Kubernetesマスタに対して「本物の」kubeletのように振る舞う一方、特別なプロバイダインタフェース(https://virtual-kubelet.io/docs/providers/#provider-interfaceを参照)を備えており、当該プロバイダインタフェースは、本発明においては、産業用オートメーションプラットフォームの、特にはプログラマブルロジックコントローラの、オートメーションプログラムを管理および制御するように調整されている。1つ以上の仮想kubeletが、原則的に、周知であり、また、ほぼ任意のプラットフォームにソフトウェアコンテナを導入するために、従来使用されている。当該プラットフォームは、コンテナランタイム環境を、特には、クラウド環境において、すなわちAWS(登録商標)(Amazon Web Service(登録商標))等のようなクラウドサービスプロバイダにおいて、エミュレートされたコンテナランタイム環境を、提供することができる。
【0013】
本発明においては、しかしながら、プロバイダインタフェースまたはプロバイダプラグインが仮想kubeletのために提供され、当該プロバイダインタフェースまたはプロバイダプラグインは、コンテナではなくオートメーションプログラムを管理し、オートメーションプログラムは、特別な方法によって、管理されて、産業用オートメーションプラットフォームに送信されて、そこで起動(スタート)、停止(ストップ)等される必要がある。これは、本発明によれば、少なくとも、従来の産業用エンジニアリングシステムの以下のような機能性、すなわち、オートメーションプラットフォームで実行するソフトウェアの「デプロイメント」(ソフトウェア展開)および制御を備えて調整されている機能性、が、プロバイダインタフェースを用いて提供される必要があること、を意味する。この場合、そのように設計された仮想kubeletは、産業用オートメーション装置の領域で実行可能である、つまり、例えば、対応して設けられたプログラマブルロジックコントローラまたは一般にオートメーションプラットフォームそれ自体において実行可能である一方、実用的には、別個のサーバでも、特には産業用エッジデバイスでも、実行可能である。代替的に、産業領域外での実行が可能であり、その場合、プロバイダインタフェースは、例えばVPNアクセスを用いての、オートメーションプラットフォームへのデータアクセスを必要とする。
【0014】
本課題は、特には、請求項1に記載の方法および請求項10に記載の装置によって、解決される。
【0015】
これによると、産業用オートメーションプラットフォーム用のオートメーションプログラムを管理する方法が提供され、オートメーションプログラムは、オートメーションプラットフォームへ送信され、オートメーションプログラムの実行は、オートメーションプラットフォーム上で制御される。その際、第1ステップでは、オートメーションプログラムまたはこのオートメーションプログラムへのリファレンスが、Kubernetesマスタから仮想kubeletへ送信され、第2ステップでは、仮想kubeletのプロバイダインタフェースによって、送信されたまたは参照されたオートメーションプログラムが、産業用オートメーションプラットフォームへ送信され、第3ステップでは、送信されたオートメーションプログラムの実行は、産業用オートメーションプラットフォーム上で制御され、プロバイダインタフェースによって、制御命令が産業用オートメーションプラットフォームへ送信され、産業用オートメーションプラットフォームの肯定応答メッセージが受信され、そして処理されるかまたは制御インスタンスへ、特にはKubernetesマスタまたは制御監視装置(HMI装置)へ、転送される。本方法により、オートメーションプログラムを、コンテナオーケストレーションシステムの手段を用いて管理し、展開し、実行させることができる。
【0016】
また、本課題は、更に、以下のような産業用オートメーションプラットフォームのオートメーションプログラムを管理する装置によって、解決される、すなわち、オートメーションプログラムまたはオートメーションプログラムへのリファレンスを仮想kubeletへ送信するKubernetesマスタを備え、オートメーションプログラムまたはオートメーションプログラムへのリファレンスを受信するための、そして、オートメーションプラットフォームでのオートメーションプログラムのインストールのための命令を受信するための、オートメーションプログラムのプロセスをオートメーションプラットフォーム上での制御のための、仮想Kubeletを備え、オートメーションプログラムのオートメーションプラットフォームへの送信のための、オートメーションプログラムのプログラムプロセスの制御のための、そして、オートメーションプログラムのプロセスの実行中にオートメーションプラットフォームの肯定応答メッセージを受信及び転送するための、仮想Kubeletのプロバイダインタフェースを備える、装置によって、解決される。
【0017】
本発明に係る方法の有利な構成は、従属請求項に記載されている。そこに記載されている特徴およびそれらの有利な点は、本発明に係る装置にも、同様に適用される。有利な構成は、個別にも、そしてまた明白な組み合わせにおいても、実現することができる。
【0018】
適切に設計されたKubernetesマスタ、及びそれに対応して設計されたカウンターパート、つまり仮想kubelet、を用いて、原理的には、オートメーションプログラムまたはそのソースコードを直接的に供給することができるが、実用的には、Kubernetesマスタによって、参照はオートメーションプログラムへ送信される。リファレンスは、記憶場所への任意の適切な参照または「リンク」にして、そこから仮想kubeletまたはそのプロバイダインタフェースがオートメーションプログラムまたはそのソースコードをロードすることができる参照または「リンク」であってよい、特に、URL、メモリパス情報、インターネットアドレス、FTPアドレス等であってよい。
【0019】
有利な構成においては、送信されるまたは参照されるオートメーションプログラムは、オートメーションプラットフォームへの送信前に、前処理される。これは、特には、異なるプロパティを有する異なるオートメーションプラットフォームをアドレス指定することを可能とする。このようにして、例えば、オートメーションプログラムをそれぞれのターゲットハードウェアに関して適切にコンパイルすることができ、また、異なるオートメーションプラットフォームが、異なる方法でアドレス指定されそしてプログラムされることも、考慮に入れることができる。特に、有利な構成においては、プロバイダインタフェースは、最終的なオートメーションプログラムを複数のソースから「アセンブル」すること、つまり、例えば参照されるオブジェクトまたはライブラリを統合すること、プログラムをまとめてコンパイルすること、個別の要素のアップデートをリロードすること等を行うことができる。
【0020】
有利な変形例においては、プロバイダインタフェース、または、統合されたプロバイダインタフェース(プロバイダインタフェースプラグイン)を有する対応して拡張された仮想kubelet、は、異なるタイプの複数のオートメーションプラットフォームに、オートメーションプログラムを供給し、そのプロセスを制御することができる。その一方、他の有利な変形例においては、異なるタイプまたはタイプシリーズのオートメーションプラットフォームに対して、異なる特化したプロバイダインタフェースを提供するとともに、その際、異なる仮想kubeletも設けるか、または代替的に複数の異なる特化したプロバイダインタフェースプラグインを共通の仮想kubeletに統合すること、も可能である。この柔軟性により、対応するシステムは、広範に適用可能であるだけでなく、ほぼ任意にスケーラブルでもある。
【0021】
特化したプロバイダインタフェースは、つまり、仮想kubelet拡張用プラグインは、有利には複数の機能を含んでおり、当該機能は、産業用オートメーションプラットフォーム用の従来のエンジニアリングシステムの機能に対応するか、又は、それどころかそれらから取り出されている。特に有利な変形例においては、プロバイダインタフェースは、実際に利用可能なエンジニアリングシステムの、プログラミングインターフェース、いわゆるAPI(Application Programming Interface)、をアドレス指定して、これにより、その機能性を使用(例えば、ソフトウェアのコンパイル)する、または、オートメーションプログラムをオートメーションネットワークにおいてローカルに展開させそして制御しさえする。
【0022】
有利な変形例においては、プログラマブルロジックコントローラのリソースを管理するためにおよび/またはオートメーションプログラムを複数のオートメーションプラットフォームに割り当てるために、Kubernetesのカスタムリソース定義(CRD:Custom Resource Definitions)(https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/を参照)が使用される。これにより、コンテナベースのプラットフォームの使用との比較において考慮する必要があるオートメーションプラットフォームの特徴を、データ技術的に定義し自動的に考慮に入れることができる。
【0023】
有利には、いわゆるCustom Scheduler(https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/を参照)を、つまり、オートメーションプラットフォームの使用に適合されたスケジューラを、そのターゲットでのオートメーションプログラムのデプロイメント(展開)に使用することも可能である。Kubernetesを用いて「ポッド」ごとにスケジューラを指定することが可能であり、当該スケジューラを用いてこのポッドは処理される。PLCプログラムに対して、固有の、つまりオートメーションプラットフォームの要件に特有の、適合されたスケジューラを使用する場合、次のことを達成できる。一方では、PLCプログラムを他のポッドから容易に区別できる。これにより、PLCプログラムの適切なPLCノードへの割り当てを実行することができる。他方では、カスタムスケジューラでPLCプログラムをスケジューリングする際、特徴を考慮に入れることができ、特に、オートメーションプラットフォームは、コンテナの意味において、多くの場合、パケットの「ダウンロード」によってではなく、複数の段階からなるシーケンスで充填されること、を考慮に入れることができる。
【0024】
実施バリエーションにおいては、サービス品質パラメータ(QoSパラメータ)が、PLCプログラムを適切なPLCノードまたは適したオートメーションプラットフォームに割り当てるために、使用される。QoSパラメータの一例は、コンピューティング容量、遅延時間(英:latency times、独:Latenzzeiten)、サイクル時間、可用性、プライバシー/セキュリティ等である。これにより、独立した、つまり自動的な、とりわけ機能的に信頼性高い、負荷分散が可能である。
【0025】
本発明に係る方法の実施形態例を、以下において図面を用いて説明する。実施例は、同時に、本発明に係る装置の説明にも、適用される。
【図面の簡単な説明】
【0026】
図1図1は、異なるタイプのプログラムを有する3つの異なるノードを備えかつ制御するKubernetesマスタを概略図で示す。
【発明を実施するための形態】
【0027】
図には、3つの異なるコンピューティングノードであるノード1、ノード2、ノード3(ノード(英:Node、独:Knoten);ターゲットハードウェア、「ターゲット」)でのソフトウェアの展開が示されている。このプロセスは、中央管理デバイスであるKubernetesマスタによって、制御される。このアプリケーション(図中「Kubernetes」と記載されている)では、このプロセスのローカル制御は、コンピューティングノードであるノード1、ノード2、ノード3(英:Node、独:Knoten)で、つまり、実行されるプログラムのターゲットハードウェアで、各ノードに存在するエージェント(いわゆるkubelet)によって、行われる。
【0028】
図では、ノード2のローカルで、ソフトウェアコンテナを管理するように設定されている従来のkubeletが実行される。kubeletは、その際、Kubernetesマスタの命令(「マニフェスト」)によって指定されたソフトウェアコンテナを、ローカル実行環境「コンテナランタイム」で実行できる。ソフトウェアコンテナは、kubeletの命令に従って、指定されたソースからロードされる。
【0029】
また、ノードのkubeletは、そのために、マスタから、例えばマニフェストとともにまたは後ほど、ノードで実行中のソフトウェアコンポーネントを起動、停止、変更するための対応する命令を、取得する。これらは、通常の場合、Kubernetesにおいては、ソフトウェアコンテナまたはソフトウェアコンテナのグルーピング(いわゆるポッド)である。Kubernetesマスタとkubelet間のインタフェースは定義されている。kubeletは、ソフトウェアコンテナを起動および操作できるように、ノード(「Node」)での実行環境(「コンテナランタイム」)に対して定義されたインタフェースを備える。
【0030】
Kubernetesを拡張する場合、いわゆる仮想kubeletが導入され、これらは、図中、ノード1、ノード3により示されている。仮想kubeletは、従来、互換性のないコンテナ環境のソフトウェアコンテナ(例えば、オペレーティングシステムMicrosoft Windows(登録商標)を搭載したコンピュータのWindows(登録商標)コンテナ、を管理するために使用される。仮想kubeletの原則は、Kubernetesマスタに対するそのインタフェースが、従来のkubeletのインタフェースのように、設計されていることである。それは、従って、「上位へは」、従来のkubeletと同じインタフェースを有し、そして、マスタは、逆方向に、また従来のKubernetesノードと、つまり、コンテナ(またはポッド)を管理可能なノードと、通信する、ノード2の例を参照。「下位」へは、つまり、「ターゲット」との通信においては、仮想kubeletは、原則的に、任意のインタフェースを有することができる。現行の実装(https://github.com/virtual-kubelet/virtual-kubelet)では、これは、いわゆるプロバイダにより、解決される。従来の方法では、このプロバイダは、より大きなユニット(クラスタまたはFargateのようなサーバレスコンテナ環境)を、単一のノードのように表示させるか、または、(例えば、Microsoft Azureコンテナのために)非互換性を解決するかの、何れかの役割を果たす。
【0031】
ノード1、ノード3の図示された本発明による解決手段では、仮想kubeletは、オートメーションプログラムのまたはオートメーションプログラムの一部の管理のために、使用される。この目的のために、特別なPLCプロバイダが実装されており、当該PLCプロバイダは、オートメーションプログラムを、対応するオートメーションプラットフォーム(以下および図中において「PLCランタイム」と称する)において、起動、停止、監視等をすることができる。プロバイダが満たす必要がある基本機能は、https://github.com/virtual-kubelet/virtual-kubelet、に説明されている。
【0032】
本実施例では、この特別なプロバイダは、それぞれ仮想kubelet用のプラグインとして実装されているが、他の実装においては、このための別個のコンポーネントを設けてもよい。プラグイン、つまりここでは「PLCプロバイダ」、は、それ自体、モジュラで構成されていてもよく、特には、ホストである仮想Kubeletに接続するための汎用コンポーネントを有していてもよく、他方では、それぞれ特別なタイプのオートメーションプラットフォームを管理するための特定のモジュールを有していてもよい。
【0033】
具体的には、プロバイダプラグインであるPLCプロバイダは、ここで、アドレス指定されたオートメーションプラットフォーム、いわゆるPLCランタイム、の、オートメーションプログラムの実行環境と、通信する。ここでノード1を用いて、以下の場合について説明する、すなわち、仮想kubeletがPLCプロバイダと共に、管理されるオートメーションプラットフォーム(ノード1)それ自体にインストールされている場合について、説明する。仮想KubeletとPLCプロバイダは、この場合、ファームウェアの構成部であってよいし、または、別個のプログラムとしてインストールされていてもよい。反対に、ノード3を用いて、以下の場合が与えられている、すなわち、仮想kubeletとPLCプロバイダが、別個のマシン、例えば、産業用エッジデバイス、で実行される場合が与えられており、当該エッジデバイスは、オートメーションプラットフォームであるノード3を含む産業レベルに対するインタフェースと、Kubernetesマスタに対するさらなるインタフェースと、を有し、後者はクラウドプロバイダのサーバ上でも実行可能である。
【0034】
プログラミング準備のため、オートメーションプラットフォーム(PLC)のオートメーションプログラムが、例えば、産業用エンジニアリングシステムのプロジェクト(例えばTIAポータルプロジェクト)内で、生成され、「ポッド」にマッピングされ、参照可能なソースに格納される。オートメーションプラットフォーム(PLCまたは仮想PLC)それ自体は、構成済みであり、使用可能であるようにネットワーク技術的に設定済みである。仮想PLCは、この場合、仮想マシンで実行される純粋にソフトウェアベースのPLCインスタンスである。仮想PLCの機能と論理インタフェースは、実PLCに対応する。オートメーションプラットフォームであるノード1、ノード3を管理するためのPLCプロバイダのいくつかの基本機能のマッピングは、以下のようにして、可能である。
・ CreatePod -> 存在するPLCまたは仮想PLCインスタンスにオートメーションプログラムをロードし、それを起動させる。その際、PLC/PLCインスタンスの対応するリソースが確保され、確保済みとしてマークされる。
・ UpdatePod -> PLC/仮想PLCインスタンスで実行中のオートメーションプログラムを変更する。変更は、ソフトウェアの状態、および/または、オートメーションプログラムの構成または実行パラメータ、に関連し得る。
・ DeletePod -> 実行中のオートメーションプログラムを停止し、PLC/仮想PLCインスタンスにおいて確保されたリソースを解放する。
・ GetContainerLogs -> PLCの診断バッファを転送する、または、それに対応するオートメーションプログラムに関連するPLCの診断バッファの一部分を転送する。
・ GetPodStatus -> 関連するオートメーションプログラムの現在の実行詳細、例えば、サイクルタイム、メモリ要件、診断ステータス、表示コンテンツ、を表示する。
・ NodeConditions -> PLC/仮想PLCインスタンスの抽象化状態(実行可能、停止済み、起動中、メモリ不足)を表示する。
・ OperatingSystem -> PLCのバージョンを表示する。
【0035】
このマッピングでは、存在するエンジニアリングツール(例えばTIAポータル、STEP7)を完全にPLCプロバイダにおいて使用できる。その一方で、モジュールコンポーネントは、PLCプロバイダをスリムに保ち、またコンピューティング容量が小さいノード上で実行可能とするために、有利である。従って、例えば、上記の基本機能は、モジュールまたはプラグインとして、PLCプロバイダに、設けられてよい。また、これらの基本機能を少なくとも部分的に、それに対応するサービスをクラウドまたはその他の稼働中のエンジニアリングシステムで呼び出すことによって、実装することもできる。
【0036】
PLCプロバイダは、従って、ポッドの起動時に、そのために設けられているか参照されるPLCプログラムをロードし、PLCランタイムに転送することができるようにするため、動作プロセスを実装している。これは、参照されるソース(リポジトリ)によって、または、他のソースやディレクトリを介して、行われ得る、代替的に、少なくとも部分的にPLCプログラムそれ自体が動作されるようにKubernetesコンポーネント(Kubernetesマスタ、仮想Kubelet)を変更することもできる。追加的に、PLCプロバイダによって、または、PLCプロバイダによってアドレス指定されたサービスによって、オートメーションプログラムを変更することもでき、特には、PLCランタイムのタイプや現在の状態(ステータス、例えば、空きメモリ容量、ファームウェアのバージョン等)に応じて、つまり実行環境またはオートメーションプラットフォーム自体に応じて、プログラムコードをプラットフォーム固有に適合すること又はコンパイルすることができる。
【0037】
特には、混在システム(異なるPLCタイプ、ソフトウェアコンテナシステムと混在するPLC、標準PC、クラウドでのコンテナランタイム)では、ランタイムの特定のタイプの区別/識別が、可能となる必要がある。これは、例えばKubernetesにおけるラベルを介して、行うことができる。また、PLCプロバイダは、実行環境のタイプと他のパラメータをそれ自体で決定し、オートメーションプログラムおよびアドレス指定または、一般に、実行環境とのデータ交換、を対応的に適合することもできる。
【0038】
PLCプロバイダは、オートメーションプラットフォーム(PLC)に統合可能であり、このことは、特には新しいタイプのオートメーションプラットフォームにおいて、ファームウェアと共にプリインストールすることによって、または、ファームウェアの一部としてプリインストールするによって、納品時に既に容易に実行できる。上述したように、このことは、ノード1の例に見ることができる。既存のシステムの場合、PLCプロバイダは、ネットワークを介してオートメーションプラットフォーム/PLCおよびそこでの実行環境と接続するために、既存のコンピューティングノードで、又は、代替的に追加のノードで、起動され得る。この場合、例えば、エッジデバイス(産業用エッジデバイス)またはクラウドノードを、PLCプロバイダのプラットフォームとして、または、対応して設計された仮想kubeletのプラットフォームとして、使用することができる、これについては図のノード3を参照されたい。
【0039】
ソフトウェア展開のルート、すなわち少なくとも1つのオートメーションプログラムを有するポッドの「デプロイメント」のルートについて上述したが、それとは逆方向のルートで、制御情報、ステータスメッセージ、デバッグ値等を、「ターゲット」から関係する仮想kubeletのPLCプロバイダへと、そしてそこから必要に応じて処理された形でさらにKubernetesマスタまたは代替ターゲットへと、送信することができる。そのような代替ターゲットは、特に、オートメーションネットワークの内部または外部の駆動装置及び監視装置(HMI;SCADA;MES)であってよい。クラウドベースのアプリケーションにも到達され得る。ターゲットは、Kubernetesマスタを用いて、設定可能であり、代替的に、Kubernetesマスタは、このデータを、必要に応じて変更した形で、転送することもできる。
【0040】
本発明によれば、このようにして、PLCプログラムは、コンテナオーケストレーションシステムの手段を用いて、管理されそして動作され得る。その際、PLCプログラムをソフトウェアコンテナと共に混在操作することも可能である。
【0041】
これにより、ノード容量(英:node capacity、独:Knotenkapazitaet)、システムの負荷、可用性等に応じて(つまり、一般に、サービスパラメータの品質に応じて)、ノードへのPLCプログラムの(部分的)自動化割り当てが、可能である。これは、PLCプログラムまたはPLCプログラムの一部の自動化された「デプロイメント」(初期インストール、アップデート、トラブルシューティング、テスト等)により、より迅速なコミッショニング時間とアップデート時間を、を可能とする。さらなる有利な点は、現在可能な代替切り換え手法による、すなわち、PLCプログラムの監視、同じまたは他のノードでの再起動による、可用性の向上である。今や、CI/CDシステムまたはDevOpsへの簡潔な統合、つまり、ソースコード変更、変換、テスト、コミッショニングの自動化チェーンへの簡潔な統合、も可能である。
【0042】
産業用オートメーションプラットフォーム用に設定されたプロバイダプラグインを備える仮想kubeletの使用は、例えば、モニタリング、トレース、ロールアウト戦略、バージョニング、ロールバックのための既に存在するツールを用いた、PLCプログラムの管理のためのKubernetes「エコシステム」を開発するPLCプログラムの管理は、従って、オープンソース環境から、確立された標準ツールを用いて、実行可能であり、当該オープンソース環境では広範な能力基盤(英:competence base、独:Kompetenzbasis)が与えられており、使用されるソフトウェアツールが絶えず開発されている。(コンテナと従来のPLCを備えるITベースの)混在システムでの一元的なソフトウェア管理は、一元的なインフラストラクチャによる、そして、ITシステム専門家の追加的な教育訓練の必要性が低いことによる、利点をもたらす。さらに、現場の既存PLCシステムは、ITメカニズムを用いて、PLCシステムを変更することなく、開発され得る。
図1