JP2022091301A - 制御システムおよび制御方法 - Google Patents
制御システムおよび制御方法 Download PDFInfo
- Publication number
- JP2022091301A JP2022091301A JP2020204061A JP2020204061A JP2022091301A JP 2022091301 A JP2022091301 A JP 2022091301A JP 2020204061 A JP2020204061 A JP 2020204061A JP 2020204061 A JP2020204061 A JP 2020204061A JP 2022091301 A JP2022091301 A JP 2022091301A
- Authority
- JP
- Japan
- Prior art keywords
- container
- plc
- server
- runtime
- control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 57
- 238000012795 verification Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 48
- 230000018109 developmental process Effects 0.000 description 38
- 238000011161 development Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 28
- 238000004088 simulation Methods 0.000 description 21
- 238000012423 maintenance Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- ZYXYTGQFPZEUFX-UHFFFAOYSA-N benzpyrimoxan Chemical compound O1C(OCCC1)C=1C(=NC=NC=1)OCC1=CC=C(C=C1)C(F)(F)F ZYXYTGQFPZEUFX-UHFFFAOYSA-N 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】複数の制御装置および複数の制御装置を組み合わせたシステムについての設計、実装、検証などの一連の作業を容易化するとともに、制御装置のリソースをスケーラブルに利用可能にする構成が要望されている。【解決手段】制御システムは、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムイメージを含むコンテナを生成する生成モジュールと、制御装置およびサーバの一方または両方に対してコンテナをリリースするオーケストレータとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、オーケストレータによりリリースされたコンテナをデプロイすることで、ランタイムイメージのインスタンスを生成して制御演算を実行する。【選択図】図2
Description
本発明は、制御装置およびサーバを含む制御システムおよびその制御システムにおける制御方法に関する。
複数の制御装置(典型的には、PLC(プログラマブルロジックコントローラ))からなる制御システムの運用を開始するには、設計、実装、検証などの一連の作業が必要である。これらの一連の作業では、制御装置単体について設計、実装、検証を行った後に、制御装置およびデバイスを組み合わせる。このようなシステムとして結合するためには、各制御装置についての作業が完了している必要があるが、制御装置毎の複雑さや特性などによって、作業進捗を同じにすることは難しい。そのため、作業進捗のばらつきによって、システムとして結合するまでに待ち時間が発生し得る。
ところで、制御装置の技術分野ではなく、一般的なIT技術の分野では、コンテナおよびオーケストレーションといった技術を利用して、コンピュータリソースの動的に拡張および縮退することで、スケーラブルなソフトウェアサービスの提供が実現されている。例えば、特表2015-512091号公報(特許文献1)は、コンピュータクラウドリソースを管理する方法を開示する。
上述したような複数の制御装置および複数の制御装置を組み合わせたシステムについての設計、実装、検証などの一連の作業を容易化するとともに、制御装置のリソースをスケーラブルに利用可能にする構成が要望されている。
本発明の一つの目的は、このような要望に応える解決手段を提供することである。
本発明の一例に従えば、1または複数の制御装置と1または複数のサーバとを備える制御システムが提供される。制御システムは、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成する生成モジュールと、制御装置およびサーバの一方または両方に対してコンテナをリリースするオーケストレータとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、オーケストレータによりリリースされたコンテナをデプロイすることで、ランタイムのインスタンスを生成して制御演算を実行する。この構成によれば、ランタイムのイメージを含むコンテナを制御装置およびサーバのいずれでもデプロイして実行できるので、制御装置が存在しない状態であっても、制御演算の実行の検証などを容易化できる。また、サーバで実行されている制御演算を制御装置へ容易に移動させることもできる。
サーバのコンテナエンジンは、ランタイムのインスタンスとともに、制御対象とやり取りされる入出力データをエミュレートするエミュレータのインスタンスも生成してもよい。この構成によれば、制御装置に接続されるデバイスが存在しなくても、サーバ上で制御演算の検証などを容易に行うことができる。
サーバのコンテナエンジンがランタイムのインスタンスを生成する場合に、制御装置のコンテナエンジンが制御装置に接続されたデバイスを介してやり取りされる入出力データをサーバに仲介するネットワークサーバのインスタンスを生成してもよい。この構成によれば、制御装置に接続されたデバイスとの間でやり取りされるI/Oデータを利用しつつ、制御演算自体はサーバで実行できるので、サーバが提供するリソースを利用できる。
サーバのコンテナエンジンは、ランタイムのインスタンスを生成する場合に、制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバのインスタンスを生成してもよい。この構成によれば、制御装置上で制御演算を実行するのと実質的に同じ実行環境を提供できるので、制御演算を実現するためのランタイムをサーバにおいても共通に利用できる。
コンテナは、制御装置のコンテナエンジンのみがデプロイするイメージと、サーバのコンテナエンジンのみがデプロイするイメージとのうち、少なくとも一方を含んでいてもよい。この構成によれば、コンテナに冗長にイメージを含ませておくことで、デプロイ先に依存せず制御演算を実現できる。
制御システムは、サーバのコンテナエンジンがランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリをさらに含んでいてもよい。この構成によれば、サーバ上で制御演算を実行する場合に、実行環境に割り当てられるアドレスの違いをリポジトリの参照により吸収できる。
制御システムは、サーバに対してコンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャをさらに含んでいてもよい。この構成によれば、要求に応じて、制御演算を実行するノードを任意に生成できる。
制御システムは、生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブをさらに含んでいてもよい。この構成によれば、一度生成されたコンテナの再利用が容易になる。
オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定してもよい。この構成によれば、ユーザは、制御システムの状況に応じて、必要なコンテナを必要な実行環境にリリースできる。
本発明の別の一例に従えば、1または複数の制御装置と1または複数のサーバとを備える制御システムにおいて実行される制御方法が提供される。制御方法は、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップと、制御装置およびサーバの一方または両方に対してコンテナをリリースするステップとを含む。制御装置およびサーバは、コンテナをデプロイするコンテナエンジンを有しており、リリースされたコンテナをデプロイすることで、ランタイムのインスタンスを生成して制御演算を実行する。
本発明のある局面によれば、複数の制御装置および複数の制御装置を組み合わせたシステムについての設計、実装、検証などの一連の作業を容易化できる。本発明の別の局面によれば、制御装置のリソースをスケーラブルに利用可能にできる。
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
まず、本発明が適用される場面の一例について説明する。
図1は、本実施の形態に係る制御システム1の全体構成例を示す模式図である。図1を参照して、本実施の形態に係る制御システム1は、1または複数のPLCシステム2-1,2-2,2-3(以下、「PLCシステム2」とも総称する。)と、1または複数のサーバ200と、開発保守端末300とを含む。以下の説明において、PLCシステム2-1,2-2,2-3のそれぞれを区別する必要がある場合には、関係する構成要素について、「-1」,「-2」,「-3」といった添え字を付与することもある。
PLCシステム2の各々は、ラインとも称され、工場全体を制御するものであってもよいし、工場に設置された特定の製造設備や製造装置を制御するものであってもよい。PLCシステム2-1,2-2,2-3は、主たる構成要素として、制御対象を制御する制御装置の典型例であるPLC(Programmable Logic Controller)100-1,100-2,100-3(以下、「PLC100」とも総称する。)をそれぞれ主体に構成される。
PLC100は、フィールドデバイス10に接続される。フィールドデバイス10は、制御対象を制御するために必要な任意の装置を包含する。より具体的には、フィールドデバイス10は、制御対象(例えば、製造設備、製造装置、製造設備あるいは製造装置に含まれるセンサおよびアクチュエータなど)との間で情報をやり取りするための装置を含む。図1に示す例では、フィールドデバイス10は、リモートI/O(Input/Output)12と、リレー群14と、サーボドライバ16およびサーボモータ18とを含む。
PLC100は、フィールドデバイス10から情報を取得し、予め作成されたユーザプログラムに従って制御演算を実行することで、フィールドデバイス10へ与えられる情報を生成する。以下では、PLC100がフィールドデバイス10から取得する情報を「入力データ」とも称し、フィールドデバイス10へ与えられる情報を「出力データ」とも称す。また、入力データおよび出力データを「入出力データ」あるいは「I/Oデータ」とも総称する。
図1に示す例では、PLC100とフィールドデバイス10とは、制御系ネットワーク4を介して接続されているが、これに限らず、ハードワイヤーで接続されていてもよい。また、フィールドデバイス10は、図1に示されるデバイスに限らず、任意のデバイスを包含し得る。
制御系ネットワーク4としては、産業用の通信プロトコルを採用することが好ましい。このような通信プロトコルとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
PLCシステム2の各々は、情報系ネットワーク6およびゲートウェイ20を介して、インターネット8上に存在するサーバ200にアクセス可能になっている。情報系ネットワーク6としては、イーサネット(登録商標)などの汎用的な通信プロトコルを採用してもよい。
サーバ200は、コンテナをデプロイして実行可能な環境を提供するとともに、コンテナのリリースを管理する。本明細書において、コンテナの「リリース」は、対象のコンテナを実行先に提供する処理および実行先での実行可能化を指示する処理(例えば、デプロイを指示する処理)を包含する。これらの処理および機能の詳細については、後述する。
サーバ200は、インターネット8を介してクラウド上に配置してもよいし、インターネット8を介することなく、PLCシステム2が存在するローカルネットワーク内に配置してもよい。サーバ200の実装形態としては、要求される性能および機能などに応じて、任意に決定できる。
開発保守端末300は、サーバ200にアクセスして、後述するような各種処理を実現するためのユーザ操作が可能になっている。
図2は、本実施の形態に係る制御システム1におけるコンテナを利用した処理の概要を説明するための図である。
本明細書においては、PLCシステム2のPLC100で制御演算を実行するために必要なプログラムおよびライブラリなどを「PLCランタイム」と称す。なお、「PLCランタイム」との用語は、制御演算の実行に必要なプログラムおよびライブラリなどに加えて、制御演算を実現する実体および実行環境を包含し得る。典型的には、「PLCランタイム」は、PLC100による制御対象に対する制御演算を定義するユーザプログラム(例えば、IEC61131-3に従って任意に作成されるプログラム)と、ユーザプログラムを実行する実行環境であるPLCエンジン(ファームウェア)とを含む。
本実施の形態に従う制御システム1においては、PLCランタイムをPLC100だけではなく、サーバ200が提供する仮想環境においても実現できるようにパッケージ化したものを「PLCランタイムコンテナ」と称す。「PLCランタイムコンテナ」をホストOS(Operating System)にデプロイすることで、論理的に独立したアプリケーションの実行環境を実現できる。なお、「PLCランタイムコンテナ」との用語は、実現されたアプリケーションの実行環境を包含し得る。「PLCランタイムコンテナ」を構成するプログラム(アプリケーション)およびライブラリなどの詳細、ならびに、「PLCランタイムコンテナ」の生成方法の詳細などについては、後述する。
図2を参照して、PLCランタイムコンテナ50は、PLCシステム2のPLC100およびサーバ200のいずれにもリリース可能である。要求される状況に応じて、PLCランタイムコンテナ50のデプロイ先およびデプロイ内容を最適化することで、少なくとも、(1)ローカル実行モード、(2)クラウド実行モード、(3)シミュレーションモードの3つのモードを実現できる。
図3は、本実施の形態に係る制御システム1において提供されるモードを説明するための図である。
図3(A)を参照して、(1)ローカル実行モードは、PLC100がフィールドデバイス10を介してやり取りされるI/Oデータを利用して制御演算を実行する状態に相当する。より具体的には、PLC100にPLCランタイム510および物理I/O160が実現される。物理I/O160は、フィールドデバイス10および制御系ネットワーク4(いずれも図1参照)も含む抽象化されたレイヤである。ローカル実行モードは、いわゆる実運用に相当する。
図3(B)を参照して、(2)クラウド実行モードは、PLC100に接続されたフィールドデバイス10を介してI/Oデータをやり取りする一方で、制御演算自体は、サーバ200で実行する状態に相当する。より具体的には、PLC100に物理I/O160が実現されるとともに、サーバ200にPLCランタイム510が実現される。クラウド実行モードは、実運用として用いることもできるし、ユーザプログラムの開発やチェックなどに用いることもできる。
図3(C)を参照して、(3)シミュレーションモードは、PLC100に接続されたフィールドデバイス10を必要とせず、サーバ200がフィールドデバイス10をエミュレートしつつ、サーバ200が制御演算も実行する状態に相当する。より具体的には、サーバ200にPLCランタイム510および仮想I/Oエミュレータ550が実現される。仮想I/Oエミュレータ550は、物理I/O160の挙動をエミュレートするモジュールである。シミュレーションモードは、ユーザプログラムの開発やチェックに用いることができる。
このように、本実施の形態に従う制御システム1においては、PLCランタイムコンテナ50を利用することで、PLCシステム2の一部または全部が存在しない状態であっても、ユーザプログラムの開発やチェックを容易に行うことができるとともに、シームレスで実運用へ移行することもできる。
<B.ハードウェア構成>
次に、本実施の形態に係る制御システムを構成する装置のハードウェア構成の一例について説明する。
次に、本実施の形態に係る制御システムを構成する装置のハードウェア構成の一例について説明する。
(b1:PLC100)
図4は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示すブロック図である。図4を参照して、PLC100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、ストレージ110と、情報系ネットワークコントローラ120と、制御系ネットワークコントローラ122と、USB(Universal Serial Bus)コントローラ124と、メモリカードインターフェイス126とを含む。
図4は、本実施の形態に係る制御システム1を構成するPLC100のハードウェア構成例を示すブロック図である。図4を参照して、PLC100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主メモリ106と、ストレージ110と、情報系ネットワークコントローラ120と、制御系ネットワークコントローラ122と、USB(Universal Serial Bus)コントローラ124と、メモリカードインターフェイス126とを含む。
プロセッサ102は、ストレージ110に格納された各種プログラムを読み出して、主メモリ106に展開して実行することで、制御対象を制御するための制御演算を実現する。チップセット104は、プロセッサ102と各コンポーネントとのデータ伝送などを制御する。
ストレージ110には、典型的には、基本的な処理を実現するためのOS112と、PLCランタイムコンテナのデプロイなどの処理を行うシステムプログラム114とが格納される。
情報系ネットワークコントローラ120は、情報系ネットワーク6を介した開発保守端末300などとのデータのやり取りを制御する。
制御系ネットワークコントローラ122と、制御系ネットワーク4を介したフィールドデバイス10とのデータのやり取りを制御する。
USBコントローラ124は、USB接続を介した外部装置(例えば、サポート装置)とのデータのやり取りを制御する。
メモリカードインターフェイス126は、メモリカード128を着脱可能に構成されており、メモリカード128に対してデータを書き込み、メモリカード128から各種データ(ユーザプログラムやトレースデータなど)を読み出すことが可能になっている。
図4には、プロセッサ102がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、PLC100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
(b2:サーバ200)
図5は、本実施の形態に係る制御システム1を構成するサーバ200のハードウェア構成例を示すブロック図である。図5を参照して、サーバ200は、CPUやMPUなどの1または複数のプロセッサ202と、主メモリ206と、ストレージ210と、1または複数のネットワークコントローラ220と、入力部226と、表示部228とを含む。これらのコンポーネントは、バス208を介して接続される。
図5は、本実施の形態に係る制御システム1を構成するサーバ200のハードウェア構成例を示すブロック図である。図5を参照して、サーバ200は、CPUやMPUなどの1または複数のプロセッサ202と、主メモリ206と、ストレージ210と、1または複数のネットワークコントローラ220と、入力部226と、表示部228とを含む。これらのコンポーネントは、バス208を介して接続される。
プロセッサ202は、ストレージ210に格納された各種プログラムを読み出して、主メモリ206に展開して実行することで、後述するような各種処理を実現する。
ストレージ210は、例えば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成される。ストレージ210には、典型的には、基本的な処理を実現するためのOS212と、後述するようなサーバ200が提供する各種処理を実現するためのコンテナアプリケーション214とが格納される。
ネットワークコントローラ220は、ネットワークを介した各種装置とのデータのやり取りを制御する。
入力部226は、キーボード、マウスなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイなどで構成され、プロセッサ202からの処理結果などを出力する。
図5には、プロセッサ202がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
(b3:開発保守端末300)
図6は、本実施の形態に係る制御システム1を構成する開発保守端末300のハードウェア構成例を示すブロック図である。図6を参照して、開発保守端末300は、CPUやMPUなどのプロセッサ302と、主メモリ306と、ストレージ310と、ネットワークコントローラ320と、USBコントローラ324と、入力部326と、表示部328とを含む。これらのコンポーネントは、バス308を介して接続される。
図6は、本実施の形態に係る制御システム1を構成する開発保守端末300のハードウェア構成例を示すブロック図である。図6を参照して、開発保守端末300は、CPUやMPUなどのプロセッサ302と、主メモリ306と、ストレージ310と、ネットワークコントローラ320と、USBコントローラ324と、入力部326と、表示部328とを含む。これらのコンポーネントは、バス308を介して接続される。
プロセッサ302は、ストレージ310に格納された各種プログラムを読み出して、主メモリ306に展開して実行することで、開発保守端末300で必要な処理を実現する。
ストレージ310は、例えば、HDDやSSDなどで構成される。ストレージ310には、典型的には、OS312と、後述するような処理を指示などするための開発プログラム314とが格納される。なお、ストレージ310には、図6に示すプログラム以外の必要なプログラムが格納されてもよい。
ネットワークコントローラ320は、任意の制御系ネットワーク4を介したPLC100などとのデータのやり取りを制御する。
USBコントローラ324は、USB接続を介した外部装置とのデータのやり取りを制御する。
入力部326は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部228は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
開発保守端末300は、光学ドライブ304を有していてもよい。光学ドライブ304は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体305(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムを読み取って、ストレージ310などに格納する。
開発保守端末300で実行される各種プログラムは、コンピュータ読取可能な記録媒体305を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
図6には、プロセッサ302がプログラムを実行することで必要な処理が提供される構成例を示したが、これらの提供される処理の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
<C.制御システム1の機能構成>
図7は、本実施の形態に係る制御システム1における機能構成の一例を示す模式図である。図7を参照して、PLC100の各々は、コンテナエンジン150を有している。コンテナエンジン150は、コンテナの実行環境を提供するものであり、PLCランタイムコンテナ50に含まれるマニフェストなどに基づいて、モジュールのイメージをデプロイして、処理を実行するためのモジュール(インスタンス)を生成する。
図7は、本実施の形態に係る制御システム1における機能構成の一例を示す模式図である。図7を参照して、PLC100の各々は、コンテナエンジン150を有している。コンテナエンジン150は、コンテナの実行環境を提供するものであり、PLCランタイムコンテナ50に含まれるマニフェストなどに基づいて、モジュールのイメージをデプロイして、処理を実行するためのモジュール(インスタンス)を生成する。
一方、サーバ200は、コンテナエンジン250と、コンテナ生成モジュール260と、オーケストレータ270とを有している。
コンテナエンジン250は、コンテナエンジン150と同様に、PLCランタイムコンテナ50に含まれるマニフェストなどに基づいて、モジュールのイメージをデプロイして、処理を実行するためのモジュール(インスタンス)を生成する。
コンテナエンジン150,250は、CaaS(Containers as a Service)としての基盤である。PLCランタイムコンテナ50をリリースする文脈においては、コンテナエンジン150,250の各々を「ノード」と称することもある。
コンテナ生成モジュール260は、ユーザ操作に応じて、PLCランタイムコンテナ50を生成する。本実施の形態においては、コンテナ生成モジュール260は、PLC100で実行されるべきユーザプログラムおよび関連する設定情報などから、PLCランタイムのイメージを含むPLCランタイムコンテナ50を生成する。すなわち、コンテナ生成モジュール260は、制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するPLCランタイムのイメージを含むPLCランタイムコンテナ50を生成する。
オーケストレータ270は、PLCランタイムコンテナ50を管理する処理を担当する。オーケストレータ270は、コンテナ生成モジュール260により生成されたPLCランタイムコンテナ50をコンテナハブに登録するなどの処理を行うとともに、ユーザ操作などに応じて、コンテナハブに登録されたPLCランタイムコンテナ50をいずれかのホスト(本実施の形態においては、PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250)で実行するのかを管理する処理などを行う。このように、オーケストレータ270は、PLC100およびサーバ200の一方または両方に対してPLCランタイムコンテナ50をリリースする。
PLC100およびサーバ200は、PLCランタイムコンテナ50をデプロイするコンテナエンジン150および250をそれぞれ有しており、オーケストレータ270によりリリースされたPLCランタイムコンテナ50をデプロイすることで、PLCランタイムのイメージのインスタンスを生成して制御演算を実行することになる。
さらに、オーケストレータ270は、PLCランタイムコンテナ50の起動/停止の管理、ホスト間のネットワーク接続の管理、ストレージの管理、PLCランタイムコンテナ50を実行させるホストのスケジューリング、PLCランタイムコンテナ50のホストでの実行状態の管理などを担当する。
なお、オーケストレータ270によるPLCランタイムコンテナ50のリリースは、予め定められたスケジュールに従って行われてもよいし、ユーザ操作に従って、リリースするPLCランタイムコンテナ50の選択およびリリース先の決定を行ってもよい。
それぞれの構成要素による処理の詳細については、後述する。
<D.PLCランタイムコンテナの利用>
次に、PLCランタイムコンテナ50を利用して、図2および図3に示すようなそれぞれのモードを実現する例を説明する。以下の説明では、主として、PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250により提供される機能および処理について説明する。
<D.PLCランタイムコンテナの利用>
次に、PLCランタイムコンテナ50を利用して、図2および図3に示すようなそれぞれのモードを実現する例を説明する。以下の説明では、主として、PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250により提供される機能および処理について説明する。
図8は、本実施の形態に係る制御システム1において提供されるモードを実現するための機能構成例を示す模式図である。
図8(A)を参照して、PLC100は、ローカルOS140およびコンテナエンジン150を有している。
(1)ローカル実行モードにおいては、コンテナエンジン150上にPLCランタイム510のインスタンスが生成される。また、PLC100には、PLCランタイム510と物理I/O160とのやり取りを実現するための物理I/Oドライバ142も用意される。図8(A)に示すような機能構成によって、PLC100による制御演算が実現される。
図8(B)を参照して、(2)クラウド実行モードでは、PLC100のコンテナエンジン150上には、PLCランタイム510に代えて、仮想I/Oネットワークサーバ540のインスタンスが生成される。仮想I/Oネットワークサーバ540は、サーバ200と物理I/O160のやり取りを仲介する処理を担当する。仮想I/Oネットワークサーバ540は、物理I/O160を含むI/O処理の結果を仮想I/Oネットワーククライアント530との間で同期する。
このように、サーバ200のコンテナエンジン250がPLCランタイム510のイメージのインスタンスを生成する場合に、PLC100のコンテナエンジン150はPLC100に接続されたフィールドデバイス10を介してやり取りされるI/Oデータをサーバ200に仲介する仮想I/Oネットワークサーバ540のインスタンスを生成する。
一方、サーバ200は、サーバOS240およびコンテナエンジン250を有している。(2)クラウド実行モードにおいては、コンテナエンジン250上にPLCランタイム510のインスタンスが生成される。さらに、コンテナエンジン250上には、仮想I/Oドライバ520および仮想I/Oネットワーククライアント530のインスタンスが生成される。
このように、(2)クラウド実行モードにおいては、サーバ200において、PLCランタイム510のインスタンスを生成するとともに、PLC100においても、仮想I/Oネットワークサーバ540のインスタンスを生成する。
仮想I/Oネットワーククライアント530は、仮想I/Oネットワークサーバ540との間で、I/Oデータのやり取りを行う。
仮想I/Oドライバ520は、図8(A)に示すPLC100の物理I/Oドライバ142をエミュレートするものであり、PLCランタイム510からのI/Oデータにアクセスするための内部コマンドに応答して、PLC100の物理I/O160へアクセスするのと同様の処理を行う。このように、サーバ200のコンテナエンジン250がPLCランタイム510のイメージのインスタンスを生成する場合に、PLC100に接続されたフィールドデバイス10へアクセスする処理を担当する物理I/Oドライバ142をエミュレートする仮想I/Oドライバ520のインスタンスを生成する。
仮想I/Oネットワークサーバ540と仮想I/Oネットワーククライアント530との間のやり取りは、PLCランタイム510に関して透過性を有している。すなわち、PLC100で実行されるPLCランタイム510およびサーバ200で実行されるPLCランタイム510において、物理I/O160へのアクセス命令は同一である。仮想I/Oドライバ520、仮想I/Oネットワーククライアント530および仮想I/Oネットワークサーバ540は、当該同一のアクセス命令に応答してPLC100の物理I/Oドライバ142が実行する処理と実質的に同一の処理を実現する。これらの処理の同一性によって、PLCランタイム510を図8(A)~図8(C)のように互いに異なる実行環境上で動作させても、処理内容をそれぞれ異ならせる必要がない。
図8(C)を参照して、(3)シミュレーションモードでは、コンテナエンジン250上に、仮想I/Oエミュレータ550および仮想I/Oネットワークサーバ540のインスタンスが生成される。
仮想I/Oエミュレータ550は、PLC100の物理I/O160を模擬するモジュールであり、PLCランタイム510からの出力データに応答して、入力データを生成するといった処理を実行する。なお、仮想I/Oエミュレータ550は、PLCランタイム510を用いたシミュレーションを実現できればよいので、PLCランタイム510から与えられた出力データをそのまま入力データとして戻す処理(いわゆる、折り返し処理)を実行してもよい。あるいは、仮想I/Oエミュレータ550は、例えば、サーボドライバなどのモデルを有しており、PLCランタイム510から与えられた出力データを当該モデルに入力して得られる結果を入力データとして応答してもよい。
このように、(3)シミュレーションモードでは、制御装置200のコンテナエンジン250は、PLCランタイム510のインスタンスとともに、制御対象とやり取りされるI/Oデータをエミュレートする仮想I/Oエミュレータ550のインスタンスも生成する。
仮想I/Oネットワークサーバ540は、図8(B)に示すPLC100の仮想I/Oネットワークサーバ540と同様の処理を実行する。すなわち、仮想I/Oネットワーククライアント530と仮想I/Oネットワークサーバ540との間でI/Oデータをやり取りするための通信路を仮想的に形成する。仮想I/Oネットワークサーバ540は、仮想I/Oエミュレータ550によるI/O処理の結果を仮想I/Oネットワーククライアント530との間で同期する。
なお、モードに応じて、仮想I/Oネットワーククライアント530の接続先は、PLC100の仮想I/Oネットワークサーバ540またはサーバ200の仮想I/Oネットワークサーバ540に適宜変更される。
図9は、本実施の形態に係る制御システム1において利用されるPLCランタイムコンテナ50の構成例を示す模式図である。図9を参照して、PLCランタイムコンテナ50は、PLCランタイムイメージ51と、仮想I/Oドライバイメージ52と、仮想I/Oネットワーククライアントイメージ53と、仮想I/Oネットワークサーバイメージ54と、仮想I/Oエミュレータイメージ55とを含む。これらのイメージは、デプロイされることで必要な処理を実行可能形式のデータである。
PLCランタイムコンテナ50は、マニフェスト56をさらに含む。マニフェスト56は、各実行環境および各モードにおいて、いずれのイメージを有効化するのか、および、どのようなリソースを利用するのかといった定義を含む。
コンテナエンジン150,250は、マニフェスト56を参照して、PLCランタイムコンテナ50に含まれる各モジュールのイメージのうち、必要なイメージを選択する。典型的には、マニフェスト56は、図8(A)~図8(C)に示されるそれぞれのモードで利用される機能の定義を含む。
図9に示すように、PLCランタイムコンテナ50は、PLC100のコンテナエンジン150のみがデプロイするイメージ(例えば、仮想I/Oネットワークサーバイメージ54)を含んでいてもよい。また、PLCランタイムコンテナ50は、サーバ200のコンテナエンジン250のみがデプロイするイメージ(例えば、仮想I/Oドライバイメージ52、仮想I/Oネットワーククライアントイメージ53、仮想I/Oエミュレータイメージ55など)を含んでいてもよい。
なお、図9には、同一のPLCランタイムコンテナ50を利用する構成例を示すが、リリース先および選択されるモードに応じて、PLCランタイムコンテナ50の構成を異ならせてもよい。すなわち、選択されたモードにおいて必要なイメージおよび対応するマニフェスト56を含むPLCランタイムコンテナ50を生成およびリリースするようにしてもよい。
<E.PLCランタイムコンテナの生成>
次に、PLCランタイムコンテナ50の生成に係る機能および処理について説明する。
次に、PLCランタイムコンテナ50の生成に係る機能および処理について説明する。
図10は、本実施の形態に係る制御システム1におけるPLCランタイムコンテナ50の生成に係る機能構成例を示す模式図である。図10を参照して、サーバ200のコンテナ生成モジュール260(図7)は、開発環境262と、システム構成マネージャ264とを含む。
開発環境262は、ユーザ操作に従って、PLCシステム2で実行されるユーザプログラム266、および、PLCシステム2の構成を定義するPLCシステム構成情報268を生成および出力する。典型的には、開発環境262は、エディタ機能、デバッグ機能、シミュレーション機能、整合性チェック機能などを含む。
開発環境262は、サーバ200上に実現されてもよいし、開発保守端末300が開発プログラムを実行することで実現されてもよい。
ユーザは、開発環境262上で、制御システム1に含まれるPLCシステム2の構成を定義する。定義される内容としては、PLC100の台数およびサーバ200上で利用するリソースなどを含む。また、ユーザは、開発環境262上で、制御対象に応じたユーザプログラム266を作成する。
また、ユーザは、開発環境262を介して、PLCランタイムコンテナ50のリリースやデプロイの指示を行うこともできる。
システム構成マネージャ264は、ユーザ操作に従って、ユーザプログラム266およびPLCシステム構成情報268に基づいて、PLCランタイムコンテナ50を生成する。PLCランタイムコンテナ50は、各モジュールのイメージに加えて、マニフェスト56を含む。
システム構成マネージャ264は、PLCランタイムコンテナ50の生成に加えて、システム構成プロファイル60を生成および出力する。システム構成プロファイル60は、PLCランタイムコンテナ50のリリース先およびPLC100の識別情報などを含む。
また、システム構成プロファイル60は、利用するコンテナハブ276の識別情報、利用するPLCランタイムコンテナ50の識別情報、仮想ノードの使用許否を示す情報、利用する仮想ノードの最大数などを含んでいてもよい。このとき、システム構成プロファイル60は、PLCランタイムコンテナ50に関する情報が登録されるリポジトリの情報も含まれる。
なお、システム構成プロファイル60は、制御システム1毎に生成されてもよいし、制御システム1に含まれるPLCシステム2毎に生成されてもよい。
システム構成プロファイル60は、コンテナ構成プロファイルを含んでいてもよい。コンテナ構成プロファイルは、PLCランタイムコンテナ50を特定するための識別情報と、PLCランタイムコンテナ50が対象とするPLC100および各PLC100に接続されるデバイス(モータやロボットなど)などの情報を含む。また、コンテナ構成プロファイルは、デバイスを制御するにあたって、開発環境上で追加の必要機能(以下、「機能モジュール」とも称す。)の要否などの情報を含んでいてもよい。
<F.PLCランタイムコンテナのリリースおよび実行管理>
次に、PLCランタイムコンテナ50のリリースおよび実行管理に係る機能および処理について説明する。
次に、PLCランタイムコンテナ50のリリースおよび実行管理に係る機能および処理について説明する。
図11は、本実施の形態に係る制御システム1におけるPLCランタイムコンテナ50のリリースおよび実行管理に係る機能構成例を示す模式図である。図11を参照して、サーバ200のオーケストレータ270(図7)は、コンテナマネージャ272と、ノードマネージャ274とを含む。
コンテナマネージャ272は、PLCランタイムコンテナ50のリリース、デプロイ、実行などを管理する。コンテナマネージャ272は、PLCランタイムコンテナ50を登録するコンテナハブ276と、コンテナハブ276に登録されたPLCランタイムコンテナ50の状態を管理するリポジトリ278とを管理する。
コンテナマネージャ272は、コンテナ生成モジュール260(図10参照)からPLCランタイムコンテナ50が提供されると、付随するシステム構成プロファイル60を参照して、PLCランタイムコンテナ50をコンテナハブ276に登録するとともに、リポジトリ278に対応するエントリを追加する。
コンテナハブ276は、コンテナ生成モジュール260により生成されるPLCランタイムコンテナ50をリリース可能なPLC100の識別情報と関連付けて登録する。
リポジトリ278の各エントリは、コンテナハブ276に登録されているPLCランタイムコンテナ50を特定するためのコンテナ名と、ノード名とノードアドレスとを対応付ける名前空間と、PLCランタイムコンテナ50の状態を示すコンテナ状態とを含む。名前空間は、PLCランタイム510からのノード名の指定と、対応するノードアドレスとをマッピングするものである。このように、リポジトリ278は、サーバ200のコンテナエンジン250がPLCランタイム510のインスタンスを生成する場合に、コンテナエンジン250にアクセスするためのアドレスを管理する。
ノードマネージャ274は、コンテナマネージャ272からの要求などに応じて、PLCランタイムコンテナ50のリリース先のノード(PLC100のコンテナエンジン150あるいはサーバ200のコンテナエンジン250)の探索、ノード状態を取得、仮想的なノードの生成などを行う。
仮想的なノードの生成に関して、ノードマネージャ274は、サーバ200に対してPLCランタイムコンテナ50をリリースする場合に、PLCランタイムコンテナ50をデプロイするコンテナエンジン250が存在しなければ、コンテナエンジン250を含むノードを仮想的に生成する。
<G.ユースケース>
次に、いくつかのユースケースについて説明する。
次に、いくつかのユースケースについて説明する。
図12は、本実施の形態に係る制御システム1の典型的なユースケースを示す模式図である。図12に示すユースケースでは、PLC100-1,100-2,100-3が制御対象を制御する場合を想定する。
図12(A)に示すユースケース1では、PLC100-1,100-2,100-3が実行する制御演算のすべてをサーバ200でシミュレーションする例を示す。すなわち、PLC100-1,100-2,100-3のいずれについても、シミュレーションモードが実現される。この場合、PLC100-1,100-2,100-3は必ずしも実在しなくてもよい。
図12(B)に示すユースケース2では、PLC100-1が実行する制御演算を、PLC100-1の物理I/O160-1を利用しつつ、サーバ200上で実行する例を示す。すなわち、PLC100-1については、クラウド実行モードが実現される。なお、PLC100-2,100-3については、図12(A)と同様に、シミュレーションモードが実現される。この場合、PLC100-2,100-3は必ずしも実在しなくてもよい。
図12(C)に示すユースケース3では、PLC100-2が自装置の物理I/O160-2を利用して実行する例を示す。すなわち、PLC100-1については、ローカル実行モードが実現される。なお、PLC100-1については、図12(B)と同様に、クラウド実行モードが実現され、PLC100-3については、図12(A)と同様に、シミュレーションモードが実現される。この場合、PLC100-3は必ずしも実在しなくてもよい。
(g1:ユースケース1)
図13は、図12(A)に示すユースケース1における処理手順の一例を概略する模式図である。図13には、ユーザプログラム266を含むPLCランタイム510(PLCランタイムコンテナ50)を新規作成する場合を示す。また、PLCランタイムコンテナ50は、シミュレーションモードでリリースされる。
図13は、図12(A)に示すユースケース1における処理手順の一例を概略する模式図である。図13には、ユーザプログラム266を含むPLCランタイム510(PLCランタイムコンテナ50)を新規作成する場合を示す。また、PLCランタイムコンテナ50は、シミュレーションモードでリリースされる。
図13を参照して、ユーザは、設計するPLCシステム2の構成の定義を入力する((1)構成定義)。すると、システム構成マネージャ264は、入力されたPLCシステム2に対応するシステム構成プロファイル60を生成する((2)システム構成プロファイル生成)。
続いて、ユーザは、開発環境262を利用してユーザプログラム266を作成する((3)ユーザプログラム作成)。そして、システム構成マネージャ264は、PLCランタイムコンテナ50を生成する((4)PLCランタイムコンテナ生成)。さらに、コンテナマネージャ272は、生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する((5)PLCランタイムコンテナ登録)。以上の処理によって、PLCランタイムコンテナ50の生成および登録が完了する。
ユーザがいずれかのPLCランタイムコンテナ50のリリース(この場合には、シミュレーションモード)を指示すると((6)リリース指示)、ノードマネージャ274は、リリース先となる仮想ノードを生成する((7)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((8)ノード名登録)。そして、選択されたPLCランタイムコンテナ50がリリース先の仮想ノードへ送信される((9)PLCランタイムコンテナリリース)。仮想ノードのコンテナエンジン250-1は、PLCランタイムコンテナ50をデプロイする((10)PLCランタイムコンテナデプロイ)。仮想ノードのコンテナエンジン250-1は、デプロイしたPLCランタイムコンテナ50のコンテナ名をリポジトリ278に登録する((11)コンテナ名登録)。仮想ノードのコンテナエンジン250-1は、リポジトリ278の内容を参照することで、I/Oデータのやり取りにおいて、送信先または受信先のノード名に対応するノードアドレスを解決できる。
また、仮想ノードのコンテナエンジン250-1は、デプロイして生成されたPLCランタイムコンテナ50のインスタンスの内容をコンテナハブ276に反映する((12)デプロイ内容反映)。このように、コンテナハブ276に反映することで、仮想ノードで次回起動する際に再利用が容易になる。
図14は、図12(A)に示すユースケース1における別の処理手順の一例を概略する模式図である。図14には、図13に示すような処理手順で作成したPLCランタイムコンテナ50を再利用する場合を示す。また、PLCランタイムコンテナ50は、シミュレーションモードでリリースされる。
図14を参照して、ユーザは、作成済のPLCシステム2の再利用を指示する((1)再利用指示)。すると、システム構成マネージャ264は、指示されたPLCシステム2に対応するシステム構成プロファイル60をロードする((2)システム構成プロファイルロード)。
続いて、ユーザは、開発環境262を利用してユーザプログラム266を更新する((3)ユーザプログラム更新)。そして、システム構成マネージャ264は、PLCランタイムコンテナ50を更新する((4)PLCランタイムコンテナ更新)。さらに、コンテナマネージャ272は、更新されたPLCランタイムコンテナ50をコンテナハブ276に登録する((5)PLCランタイムコンテナ登録)。以上の処理によって、PLCランタイムコンテナ50の更新(再生成)および登録が完了する。
ユーザがいずれかのPLCランタイムコンテナ50のリリース(この場合には、シミュレーションモード)を指示すると((6)リリース指示)、選択されたPLCランタイムコンテナ50がリリース先の仮想ノードへ送信される((7)PLCランタイムコンテナリリース)。この例では、既に仮想ノードにおいてPLCランタイムが実現されている場合を想定しているため、リリース先となる仮想ノードを新たに生成する必要はない。
仮想ノードのコンテナエンジン250-1は、PLCランタイムコンテナ50をデプロイする((8)PLCランタイムコンテナデプロイ)。これによって、更新後のユーザプログラムに対応するPLCランタイムが実現される。なお、多くの場合において、リポジトリ278の内容を更新する必要はない。
また、仮想ノードのコンテナエンジン250-1は、デプロイして生成されたPLCランタイムコンテナ50のインスタンスの内容をコンテナハブ276に反映する((9)デプロイ内容反映)。
(g2:ユースケース2)
図15は、図12(B)に示すユースケース2における処理手順の一例を概略する模式図である。図15には、ユーザプログラム266を含むPLCランタイム510(PLCランタイムコンテナ50)を新規作成する場合を示す。また、PLCランタイムコンテナ50は、クラウド実行モードでリリースされる。
図15は、図12(B)に示すユースケース2における処理手順の一例を概略する模式図である。図15には、ユーザプログラム266を含むPLCランタイム510(PLCランタイムコンテナ50)を新規作成する場合を示す。また、PLCランタイムコンテナ50は、クラウド実行モードでリリースされる。
図15を参照して、ユーザは、設計するPLCシステム2の構成の定義を入力する((1)構成定義)。すると、システム構成マネージャ264は、入力されたPLCシステム2に対応するシステム構成プロファイル60を生成する((2)システム構成プロファイル生成)。
続いて、ユーザは、開発環境262を利用してユーザプログラム266を作成する((3)ユーザプログラム作成)。そして、システム構成マネージャ264は、PLCランタイムコンテナ50を生成する((4)PLCランタイムコンテナ生成)。さらに、コンテナマネージャ272は、生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する((5)PLCランタイムコンテナ登録)。以上の処理によって、PLCランタイムコンテナ50の生成および登録が完了する。
ユーザがいずれかのPLCランタイムコンテナ50のリリース(この場合には、クラウド実行モード)を指示すると((6)リリース指示)、ノードマネージャ274は、リリース先となる仮想ノードを生成する((7)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((8)ノード名登録)。
そして、選択されたPLCランタイムコンテナ50がリリース先の仮想ノードへ送信される((9)PLCランタイムコンテナリリース)。仮想ノードのコンテナエンジン250-1は、PLCランタイムコンテナ50をデプロイする((10)PLCランタイムコンテナデプロイ)。コンテナエンジン250-1によるデプロイによって、PLCランタイム510、仮想I/Oドライバ520および仮想I/Oネットワーククライアント530のインスタンスが生成される(図8(B)参照)。
また、選択されたPLCランタイムコンテナ50はリリース先のPLC100-1へも送信される((11)PLCランタイムコンテナリリース)。PLC100-1のコンテナエンジン150は、PLCランタイムコンテナ50をデプロイする((12)PLCランタイムコンテナデプロイ)。コンテナエンジン150によるデプロイによって、仮想I/Oネットワークサーバ540のインスタンスが生成される。
仮想ノードのコンテナエンジン250-1は、デプロイしたPLCランタイムコンテナ50のコンテナ名をリポジトリ278に登録する((13)コンテナ名登録)。また、仮想ノードのコンテナエンジン250-1は、デプロイして生成されたPLCランタイムコンテナ50のインスタンスの内容をコンテナハブ276に反映する((14)デプロイ内容反映)。
図16は、図12(B)に示すユースケース2における別の処理手順の一例を概略する模式図である。図16には、PLCランタイム510をローカル実行モードでリリースしたものの、PLC100でのリソース不足により、クラウド実行モードに変更する場合を示す。
図16を参照して、ユーザは、設計するPLCシステム2の構成の定義を入力する((1)構成定義)。すると、システム構成マネージャ264は、入力されたPLCシステム2に対応するシステム構成プロファイル60を生成する((2)システム構成プロファイル生成)。
続いて、ユーザは、開発環境262を利用してユーザプログラム266を作成する((3)ユーザプログラム作成)。そして、システム構成マネージャ264は、PLCランタイムコンテナ50を生成する((4)PLCランタイムコンテナ生成)。さらに、コンテナマネージャ272は、生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する((5)PLCランタイムコンテナ登録)。以上の処理によって、PLCランタイムコンテナ50の生成および登録が完了する。
ユーザがいずれかのPLCランタイムコンテナ50のリリース(この場合には、ローカル実行モード)を指示すると((6)リリース指示)、選択されたPLCランタイムコンテナ50はリリース先のPLC100-1へ送信される((7)PLCランタイムコンテナリリース)。PLC100-1のコンテナエンジン150は、PLCランタイムコンテナ50をデプロイする((8)PLCランタイムコンテナデプロイ)。ここで、PLC100-1の容量オーバにより、PLCランタイムコンテナ50のデプロイに失敗したとする。
ここで、システム構成マネージャ264は、ローカル実行モードからクラウド実行モードに処理を変更したとする。すると、ノードマネージャ274は、リリース先となる仮想ノードを生成する((9)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((10)ノード名登録)。
そして、選択されたPLCランタイムコンテナ50がリリース先の仮想ノードへ送信される((11)PLCランタイムコンテナリリース)。仮想ノードのコンテナエンジン250-1は、PLCランタイムコンテナ50をデプロイする((12)PLCランタイムコンテナデプロイ)。
また、選択されたPLCランタイムコンテナ50はリリース先のPLC100-1へも再度送信される((13)PLCランタイムコンテナリリース)。PLC100-1のコンテナエンジン150は、PLCランタイムコンテナ50をクラウド実行モードでデプロイする((14)PLCランタイムコンテナデプロイ)。コンテナエンジン150によるデプロイによって、仮想I/Oネットワークサーバ540のインスタンスが生成される。
仮想ノードのコンテナエンジン250-1は、デプロイしたPLCランタイムコンテナ50のコンテナ名をリポジトリ278に登録する((15)コンテナ名登録)。また、仮想ノードのコンテナエンジン250-1は、デプロイして生成されたPLCランタイムコンテナ50のインスタンスの内容をコンテナハブ276に反映する((16)デプロイ内容反映)。
(g3:ユースケース3)
図17は、図12(C)に示すユースケース3における処理手順の一例を概略する模式図である。図17には、PLCランタイム510をローカル実行モード、クラウド実行モードおよびシミュレーションモードでそれぞれリリースした場合を示す。
図17は、図12(C)に示すユースケース3における処理手順の一例を概略する模式図である。図17には、PLCランタイム510をローカル実行モード、クラウド実行モードおよびシミュレーションモードでそれぞれリリースした場合を示す。
図17を参照して、ユーザは、設計するPLCシステム2の構成の定義を入力する((1)構成定義)。すると、システム構成マネージャ264は、入力されたPLCシステム2に対応するシステム構成プロファイル60を生成する((2)システム構成プロファイル生成)。
続いて、ユーザは、開発環境262を利用してユーザプログラム266を作成する((3)ユーザプログラム作成)。そして、システム構成マネージャ264は、PLCランタイムコンテナ50を生成する((4)PLCランタイムコンテナ生成)。さらに、コンテナマネージャ272は、生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する((5)PLCランタイムコンテナ登録)。以上の処理によって、PLCランタイムコンテナ50の生成および登録が完了する。
ユーザは、PLC100-1についてローカル実行モードを選択し、PLC100-2についてクラウド実行モードを選択し、PLC100-3についてシミュレーションモードを選択したとする((6)リリース指示)。
ノードマネージャ274は、リリース先となる仮想ノードを生成する((7)仮想ノード生成)とともに、生成した仮想ノードのノードアドレスをノード名と対応付けてリポジトリ278に登録する((8)ノード名登録)。
ローカル実行モードで選択されたPLCランタイムコンテナ50は、リリース先のPLC100-1へ送信され((9)PLCランタイムコンテナリリース)、PLC100-1のコンテナエンジン150がPLCランタイムコンテナ50をデプロイする((10)PLCランタイムコンテナデプロイ)。
クラウド実行モードで選択されたPLCランタイムコンテナ50は、リリース先のPLC100-2へ送信され((11)PLCランタイムコンテナリリース)、PLC100-2のコンテナエンジン150がPLCランタイムコンテナ50をデプロイする((12)PLCランタイムコンテナデプロイ)。また、クラウド実行モードで選択されたPLCランタイムコンテナ50は、リリース先の仮想ノードへも送信され((13)PLCランタイムコンテナリリース)、仮想ノードのコンテナエンジン250-2がPLCランタイムコンテナ50をデプロイする((14)PLCランタイムコンテナデプロイ)。
シミュレーションモードで選択されたPLCランタイムコンテナ50は、リリース先の仮想ノードへも送信され((15)PLCランタイムコンテナリリース)、仮想ノードのコンテナエンジン250-3がPLCランタイムコンテナ50をデプロイする((16)PLCランタイムコンテナデプロイ)。
仮想ノードのコンテナエンジン250-2および250-3は、デプロイしたPLCランタイムコンテナ50のコンテナ名をリポジトリ278に登録する((17)コンテナ名登録)。また、仮想ノードのコンテナエンジン250-2および250-3は、デプロイして生成されたPLCランタイムコンテナ50のインスタンスの内容をコンテナハブ276に反映する((18)デプロイ内容反映)。
<H.処理手順>
次に、本実施の形態に従う制御システム1における処理手順の一例について説明する。
次に、本実施の形態に従う制御システム1における処理手順の一例について説明する。
図18は、本実施の形態に従う制御システム1におけるPLCランタイムコンテナ50の生成に関する処理手順の一例を示すフローチャートである。図19は、本実施の形態に従う制御システム1におけるPLCランタイムコンテナ50のリリースおよび実行管理に関する処理手順の一例を示すフローチャートである。図18および図19に示す各ステップは、典型的には、サーバ200のプロセッサ202がプログラムを実行することで実現される。
図18を参照して、ユーザは、開発環境262にアクセスして、PLCシステム2の構成を定義する。すなわち、サーバ200の開発環境262は、ユーザからPLCシステム2の構成の定義を受け付ける(ステップS100)。より具体的には、ユーザは、対象とするPLC100および各PLC100に接続されるデバイス(モータやロボットなど)などを指定する。
ユーザの定義に応答して、サーバ200の開発環境262は、PLCシステム構成情報268を生成および出力する(ステップS102)。続いて、サーバ200のシステム構成マネージャ264は、指定されたPLC100にそれぞれ対応するシステム構成プロファイル60を生成および出力する(ステップS104)。すなわち、システム構成プロファイル60は、指定されたPLC100の数だけ生成される。また、システム構成プロファイル60の各々は、対応するPLC100に接続されるデバイスの情報を含む。
サーバ200の開発環境262は、IECプログラムを生成するためのエディタ環境を提供し、ユーザにより作成されるユーザプログラム266を受け付ける(ステップS106)。
サーバ200の開発環境262は、システム構成プロファイル60を参照して、PLC100に接続されるいずれかのデバイスに関連付けられた機能モジュールが存在するか否かを判断する(ステップS108)。いずれかのデバイスに関連付けられた機能モジュールが存在すれば(ステップS108においてYES)、サーバ200の開発環境262は、当該関連付けられた機能モジュールに関連するエディタ環境を提供し、ユーザからの各種設定を受け付ける(ステップS110)。
ユーザによる設定操作が完了すると、サーバ200のシステム構成マネージャ264は、PLCランタイムに必要な標準テンプレートをロードする(ステップS112)。サーバ200のシステム構成マネージャ264は、システム構成プロファイル60を参照して、PLC100に接続されるいずれかのデバイスに関連付けられたテンプレートが必要であるか否かを判断する(ステップS114)。いずれかのデバイスに関連付けられたテンプレートが必要であれば(ステップS114においてYES)、サーバ200のシステム構成マネージャ264は、必要なテンプレートをロードする(ステップS116)。
そして、サーバ200のシステム構成マネージャ264は、ユーザが生成したユーザプログラムと、ロードしてテンプレートとに基づいて、PLCランタイムコンテナ50を生成する(ステップS118)。
続いて、サーバ200のコンテナマネージャ272は、コンテナ生成モジュール260により生成されたPLCランタイムコンテナ50をコンテナハブ276に登録する(ステップS120)。
以上の手順により、PLCランタイムコンテナ50の生成に関する処理は完了する。すなわち、サーバ200は、制御対象に対する制御演算を定義するユーザプログラムとユーザプログラムを実行する実行環境とを内包するPLCランタイムのイメージを含むコンテナを生成する。
図19を参照して、サーバ200の開発環境262は、ユーザ操作に応答して、コンテナハブ276およびリポジトリ278を参照して、予め用意されているPLCランタイムコンテナ50の一覧を表示する(ステップS200)。
ユーザがいずれかのPLCランタイムコンテナ50およびモードを選択すると、サーバ200のシステム構成マネージャ264は、いずれのモードが選択されたかを判断する(ステップS202)。
ローカル実行モードが選択されると(ステップS202において「ローカル実行」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となるPLC100が有効に存在しているか否かを判断する(ステップS204)。
リリース先となるPLC100が有効に存在していれば(ステップS204においてYES)、サーバ200のコンテナマネージャ272は、PLCランタイムコンテナ50のリリースに応じて、リポジトリ278の内容を更新する(ステップS206)。続いて、サーバ200のシステム構成マネージャ264は、選択されたPLCランタイムコンテナ50をリリース先のPLC100へ送信する(ステップS208)。送信先のPLC100のコンテナエンジン150は、PLCランタイムコンテナ50に含まれるマニフェスト56を参照して、PLCランタイムコンテナ50をデプロイする(ステップS210)。これにより、リリース先のPLC100では、PLCランタイム510が実現される。そして、処理は終了する。
一方、リリース先となるPLC100が有効に存在していれば(ステップS204においてNO)、サーバ200の開発環境262は、ユーザに対してリソース先のPLC100が有効に存在していない旨を通知する(ステップS212)。そして、処理は終了する。
クラウド実行モードが選択されると(ステップS202において「クラウド実行モード」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となるPLC100が有効に存在しているか否かを判断する(ステップS214)。
リリース先となるPLC100が有効に存在していれば(ステップS214においてYES)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となる仮想ノードがサーバ200上に有効に存在しているか否かを判断する(ステップS216)。
リリース先となる仮想ノードがサーバ200上に有効に存在していなければ(ステップS216においてNO)、サーバ200のノードマネージャ274は、必要な数の仮想ノードを生成する(ステップS218)。仮想ノードは、コンテナエンジン250を含む、PLCランタイムコンテナ50をデプロイ可能な環境を提供するものである。
リリース先となる仮想ノードがサーバ200上に有効に存在していれば(ステップS216においてYES)、ステップS218の処理はスキップされる。
サーバ200のコンテナマネージャ272は、PLCランタイムコンテナ50のリリースに応じて、リポジトリ278の内容を更新する(ステップS220)。そして、サーバ200のシステム構成マネージャ264は、選択されたPLCランタイムコンテナ50をリリース先のPLC100およびサーバ200上の仮想ノードへ送信する(ステップS222)。一方、送信先のサーバ200の仮想ノードに含まれるコンテナエンジン250も、PLCランタイムコンテナ50に含まれるマニフェスト56を参照して、PLCランタイムコンテナ50をデプロイする(ステップS224)。これにより、リリース先のPLC100では、仮想I/Oネットワークサーバ540が実現され、サーバ200上の仮想ノードでは、PLCランタイム510が実現される。
一方、リリース先となるPLC100が有効に存在していなければ(ステップS214においてNO)、サーバ200の開発環境262は、ユーザに対してリソース先のPLC100が有効に存在していない旨を通知する(ステップS226)。そして、処理は終了する。
シミュレーションモードが選択されると(ステップS202において「シミュレーションモード」)、サーバ200のノードマネージャ274は、システム構成プロファイル60を参照して、選択されたPLCランタイムコンテナ50のリリース先となる仮想ノードがサーバ200上に有効に存在しているか否かを判断する(ステップS228)。
リリース先となる仮想ノードがサーバ200上に有効に存在していなければ(ステップS228においてNO)、サーバ200のノードマネージャ274は、必要な数の仮想ノードを生成する(ステップS230)。
リリース先となる仮想ノードがサーバ200上に有効に存在していれば(ステップS228においてYES)、ステップS230の処理はスキップされる。
サーバ200のコンテナマネージャ272は、PLCランタイムコンテナ50のリリースに応じて、リポジトリ278の内容を更新する(ステップS232)。そして、サーバ200のシステム構成マネージャ264は、選択されたPLCランタイムコンテナ50をサーバ200上の仮想ノードへ送信する(ステップS234)。送信先のサーバ200の仮想ノードに含まれるコンテナエンジン250は、PLCランタイムコンテナ50に含まれるマニフェスト56を参照して、PLCランタイムコンテナ50をデプロイする(ステップS236)。これにより、リリース先のサーバ200上の仮想ノードでは、PLCランタイム510および仮想I/Oエミュレータ550を含む、シミュレーションできる環境が実現される。このように、PLC100およびサーバ200の一方または両方に対してPLCランタイムコンテナ50をリリースする処理が実行される。
<I.その他の実施の形態>
説明の便宜上、サーバ200がコンテナエンジン250と、コンテナ生成モジュール260と、オーケストレータ270(図7参照)とを有しているとしてしたが、サーバ200の実体がクラウド化および仮想化されている場合には、同一のハードウェアがこれらのモジュールのすべてを実現する必要はなく、1または複数のプロセッサを適宜用いて実現することができる。
説明の便宜上、サーバ200がコンテナエンジン250と、コンテナ生成モジュール260と、オーケストレータ270(図7参照)とを有しているとしてしたが、サーバ200の実体がクラウド化および仮想化されている場合には、同一のハードウェアがこれらのモジュールのすべてを実現する必要はなく、1または複数のプロセッサを適宜用いて実現することができる。
<J.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
1または複数の制御装置(100)と1または複数のサーバ(200)とを備える制御システム(1)であって、
制御対象に対する制御演算を定義するユーザプログラム(266)と当該ユーザプログラムを実行する実行環境とを内包するランタイム(510)のイメージ(51)を含むコンテナ(50)を生成する生成モジュール(260)と、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするオーケストレータ(270)とを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジン(150,250)を有しており、前記オーケストレータによりリリースされたコンテナをデプロイすることで、前記ランタイム(510)のインスタンスを生成して前記制御演算を実行する、制御システム。
1または複数の制御装置(100)と1または複数のサーバ(200)とを備える制御システム(1)であって、
制御対象に対する制御演算を定義するユーザプログラム(266)と当該ユーザプログラムを実行する実行環境とを内包するランタイム(510)のイメージ(51)を含むコンテナ(50)を生成する生成モジュール(260)と、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするオーケストレータ(270)とを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジン(150,250)を有しており、前記オーケストレータによりリリースされたコンテナをデプロイすることで、前記ランタイム(510)のインスタンスを生成して前記制御演算を実行する、制御システム。
[構成2]
前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスとともに、前記制御対象とやり取りされる入出力データをエミュレートするエミュレータ(550)のインスタンスも生成する、構成1に記載の制御システム。
前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスとともに、前記制御対象とやり取りされる入出力データをエミュレートするエミュレータ(550)のインスタンスも生成する、構成1に記載の制御システム。
[構成3]
前記サーバのコンテナエンジン(250)が前記ランタイムのインスタンスを生成する場合に、前記制御装置のコンテナエンジンが前記制御装置に接続されたデバイス(10)を介してやり取りされる入出力データを前記サーバに仲介するネットワークサーバ(540)のインスタンスを生成する、構成1に記載の制御システム。
前記サーバのコンテナエンジン(250)が前記ランタイムのインスタンスを生成する場合に、前記制御装置のコンテナエンジンが前記制御装置に接続されたデバイス(10)を介してやり取りされる入出力データを前記サーバに仲介するネットワークサーバ(540)のインスタンスを生成する、構成1に記載の制御システム。
[構成4]
前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスを生成する場合に、前記制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバ(520)のインスタンスを生成する、構成1~3のいずれか1項に記載の制御システム。
前記サーバのコンテナエンジン(250)は、前記ランタイムのインスタンスを生成する場合に、前記制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバ(520)のインスタンスを生成する、構成1~3のいずれか1項に記載の制御システム。
[構成5]
前記コンテナは、前記制御装置のコンテナエンジンのみがデプロイするイメージ(54)と、前記サーバのコンテナエンジンのみがデプロイするイメージ(52,53,55)とのうち、少なくとも一方を含む、構成1~4のいずれか1項に記載の制御システム。
前記コンテナは、前記制御装置のコンテナエンジンのみがデプロイするイメージ(54)と、前記サーバのコンテナエンジンのみがデプロイするイメージ(52,53,55)とのうち、少なくとも一方を含む、構成1~4のいずれか1項に記載の制御システム。
[構成6]
前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリ(278)をさらに備える、構成1~5のいずれか1項に記載の制御システム。
前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリ(278)をさらに備える、構成1~5のいずれか1項に記載の制御システム。
[構成7]
前記サーバに対して前記コンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャ(274)をさらに備える、構成1~6のいずれか1項に記載の制御システム。
前記サーバに対して前記コンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャ(274)をさらに備える、構成1~6のいずれか1項に記載の制御システム。
[構成8]
前記生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブ(276)をさらに備える、構成1~7のいずれか1項に記載の制御システム。
前記生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブ(276)をさらに備える、構成1~7のいずれか1項に記載の制御システム。
[構成9]
前記オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定する、構成1~8のいずれか1項に記載の制御システム。
前記オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定する、構成1~8のいずれか1項に記載の制御システム。
[構成10]
1または複数の制御装置(100)と1または複数のサーバ(200)とを備える制御システム(1)において実行される制御方法であって、
制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップ(S100~S120)と、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするステップ(S200~S234)とを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジンを有しており、前記リリースされたコンテナをデプロイすることで、前記ランタイムのインスタンスを生成して前記制御演算を実行する、制御方法。
1または複数の制御装置(100)と1または複数のサーバ(200)とを備える制御システム(1)において実行される制御方法であって、
制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップ(S100~S120)と、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするステップ(S200~S234)とを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジンを有しており、前記リリースされたコンテナをデプロイすることで、前記ランタイムのインスタンスを生成して前記制御演算を実行する、制御方法。
<K.利点>
本実施の形態によれば、コンテナ技術およびオーケストレーション技術を利用可能な制御システムを実現できる。これらの技術を利用することで、例えば、制御演算のシミュレーションなどを行う場合には、サーバ(クラウド)のリソースをスケーラブルに利用できるので、より複雑および大規模なシミュレーションであっても、実時間で行うことができる。
本実施の形態によれば、コンテナ技術およびオーケストレーション技術を利用可能な制御システムを実現できる。これらの技術を利用することで、例えば、制御演算のシミュレーションなどを行う場合には、サーバ(クラウド)のリソースをスケーラブルに利用できるので、より複雑および大規模なシミュレーションであっても、実時間で行うことができる。
本実施の形態によれば、PLCに接続されたデバイスを利用しつつ、制御演算自体はサーバで実行することもできるので、フィールド側に配置されるPLCの小型化および簡素化などを行うこともできる。
本実施の形態によれば、複数のPLCから構成される場合であっても、PLCの各々について、ローカル実行モード、クラウド実行モード、シミュレーションモードの3つのモードで制御演算を実行できるので、複数のPLCを組み合わせて検証する必要がある場合でも、そのときの状況で可能なモードでの組み合わせで検証を行うことができる。このような組み合わせでの検証によって、システム結合時の問題を早期に発見および解決などが可能となり、制御システムの運用開始までの時間を短縮できる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 制御システム、2 PLCシステム、4 制御系ネットワーク、6 情報系ネットワーク、8 インターネット、10 フィールドデバイス、12 リモートI/O、14 リレー群、16 サーボドライバ、18 サーボモータ、20 ゲートウェイ、50 ランタイムコンテナ、51 PLCランタイムイメージ、52 仮想I/Oドライバイメージ、53 仮想I/Oネットワーククライアントイメージ、54 仮想I/Oネットワークサーバイメージ、55 仮想I/Oエミュレータイメージ、56 マニフェスト、60 システム構成プロファイル、100 PLC、102,202,302 プロセッサ、104 チップセット、106,206,306 主メモリ、110,210,310 ストレージ、112,212,312 OS、114 システムプログラム、120 情報系ネットワークコントローラ、122 制御系ネットワークコントローラ、124,324 USBコントローラ、126 メモリカードインターフェイス、128 メモリカード、140 ローカルOS、142 物理I/Oドライバ、150,250 コンテナエンジン、160 物理I/O、200 サーバ、208,308 バス、220,320 ネットワークコントローラ、226,326 入力部、228,328 表示部、240 サーバOS、260 コンテナ生成モジュール、262 開発環境、264 システム構成マネージャ、266 ユーザプログラム、268 システム構成情報、270 オーケストレータ、272 コンテナマネージャ、274 ノードマネージャ、276 コンテナハブ、278 リポジトリ、300 開発保守端末、304 光学ドライブ、305 記録媒体、314 開発プログラム、510 PLCランタイム、520 仮想I/Oドライバ、530 仮想I/Oネットワーククライアント、540 仮想I/Oネットワークサーバ、550 仮想I/Oエミュレータ。
Claims (10)
- 1または複数の制御装置と1または複数のサーバとを備える制御システムであって、
制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成する生成モジュールと、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするオーケストレータとを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジンを有しており、前記オーケストレータによりリリースされたコンテナをデプロイすることで、前記ランタイムのインスタンスを生成して前記制御演算を実行する、制御システム。 - 前記サーバのコンテナエンジンは、前記ランタイムのインスタンスとともに、前記制御対象とやり取りされる入出力データをエミュレートするエミュレータのインスタンスも生成する、請求項1に記載の制御システム。
- 前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、前記制御装置のコンテナエンジンが前記制御装置に接続されたデバイスを介してやり取りされる入出力データを前記サーバに仲介するネットワークサーバのインスタンスを生成する、請求項1に記載の制御システム。
- 前記サーバのコンテナエンジンは、前記ランタイムのインスタンスを生成する場合に、前記制御装置に接続されたデバイスへアクセスする処理を担当するI/Oドライバをエミュレートする仮想I/Oドライバのインスタンスを生成する、請求項1~3のいずれか1項に記載の制御システム。
- 前記コンテナは、前記制御装置のコンテナエンジンのみがデプロイするイメージと、前記サーバのコンテナエンジンのみがデプロイするイメージとのうち、少なくとも一方を含む、請求項1~4のいずれか1項に記載の制御システム。
- 前記サーバのコンテナエンジンが前記ランタイムのインスタンスを生成する場合に、当該コンテナエンジンにアクセスするためのアドレスを管理するリポジトリをさらに備える、請求項1~5のいずれか1項に記載の制御システム。
- 前記サーバに対して前記コンテナをリリースする場合に、当該コンテナをデプロイするコンテナエンジンが存在しなければ、コンテナエンジンを含むノードを仮想的に生成するノードマネージャをさらに備える、請求項1~6のいずれか1項に記載の制御システム。
- 前記生成モジュールにより生成されるコンテナをリリース可能な制御装置の識別情報と関連付けて登録するコンテナハブをさらに備える、請求項1~7のいずれか1項に記載の制御システム。
- 前記オーケストレータは、ユーザ操作に従って、リリースするコンテナを選択するとともに、リリース先を決定する、請求項1~8のいずれか1項に記載の制御システム。
- 1または複数の制御装置と1または複数のサーバとを備える制御システムにおいて実行される制御方法であって、
制御対象に対する制御演算を定義するユーザプログラムと当該ユーザプログラムを実行する実行環境とを内包するランタイムのイメージを含むコンテナを生成するステップと、
前記制御装置および前記サーバの一方または両方に対して前記コンテナをリリースするステップとを備え、
前記制御装置および前記サーバは、前記コンテナをデプロイするコンテナエンジンを有しており、前記リリースされたコンテナをデプロイすることで、前記ランタイムのインスタンスを生成して前記制御演算を実行する、制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020204061A JP2022091301A (ja) | 2020-12-09 | 2020-12-09 | 制御システムおよび制御方法 |
US18/039,653 US20240004688A1 (en) | 2020-12-09 | 2021-03-08 | Control system and control method |
EP21902910.5A EP4261631A1 (en) | 2020-12-09 | 2021-03-08 | Control system and control method |
PCT/JP2021/008916 WO2022123803A1 (ja) | 2020-12-09 | 2021-03-08 | 制御システムおよび制御方法 |
CN202180078958.0A CN116490830A (zh) | 2020-12-09 | 2021-03-08 | 控制系统以及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020204061A JP2022091301A (ja) | 2020-12-09 | 2020-12-09 | 制御システムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022091301A true JP2022091301A (ja) | 2022-06-21 |
Family
ID=81974338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020204061A Pending JP2022091301A (ja) | 2020-12-09 | 2020-12-09 | 制御システムおよび制御方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240004688A1 (ja) |
EP (1) | EP4261631A1 (ja) |
JP (1) | JP2022091301A (ja) |
CN (1) | CN116490830A (ja) |
WO (1) | WO2022123803A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240103455A1 (en) * | 2022-09-22 | 2024-03-28 | Rockwell Automation Technologies, Inc. | Application driven enhancement to industrial automation device via container implementation |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013122815A1 (en) | 2012-02-13 | 2013-08-22 | Nimbula, Inc. | Coordination of processes in cloud computing environments |
DE102011077317B4 (de) * | 2011-06-09 | 2015-10-01 | Siemens Aktiengesellschaft | Simulationssystem, Verfahren zur Durchführung einer Simulation, Leitsystem und Computerprogrammprodukt |
JP7171713B2 (ja) * | 2017-11-16 | 2022-11-15 | インテル・コーポレーション | 分散型のソフトウェア定義型産業システム |
JP6572330B2 (ja) * | 2018-01-26 | 2019-09-04 | 株式会社インテック | ロボットアプリケーション管理装置、システム、方法及びプログラム |
EP3722951A1 (en) * | 2019-04-08 | 2020-10-14 | Schneider Electric Industries SAS | Service deployment in a cluster of i/o devices |
-
2020
- 2020-12-09 JP JP2020204061A patent/JP2022091301A/ja active Pending
-
2021
- 2021-03-08 CN CN202180078958.0A patent/CN116490830A/zh active Pending
- 2021-03-08 EP EP21902910.5A patent/EP4261631A1/en active Pending
- 2021-03-08 US US18/039,653 patent/US20240004688A1/en active Pending
- 2021-03-08 WO PCT/JP2021/008916 patent/WO2022123803A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN116490830A (zh) | 2023-07-25 |
EP4261631A1 (en) | 2023-10-18 |
US20240004688A1 (en) | 2024-01-04 |
WO2022123803A1 (ja) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784152B (zh) | 包括多个模拟器的模拟 | |
US7823023B2 (en) | Test framework for testing an application | |
US8381211B2 (en) | Virtual image overloading for solution deployment | |
JP6753200B2 (ja) | シミュレートされたオペレータ・トレーニング・システムに対するクラウド・ベースのコンピューティング・クラスタのための方法、システムおよびコンピュータ・プログラム | |
JP2007528069A5 (ja) | ||
JP2012256148A (ja) | 運用管理装置、及び方法 | |
EP3647956B1 (en) | Generalized virtualization platform for systems using hardware abstraction software layers | |
WO2019167421A1 (ja) | シミュレーター、シミュレーション装置、および、シミュレーション方法 | |
CN111679889B (zh) | 一种虚拟机的转换迁移方法和系统 | |
JP6283096B2 (ja) | プログラム試験サービス | |
Marshall | Mastering VMware VSphere 6 | |
WO2022123803A1 (ja) | 制御システムおよび制御方法 | |
JP2012093899A (ja) | 計算機システム、シミュレーション方法、及びプログラム | |
CN112764981B (zh) | 一种协同测试系统及方法 | |
Junghanns et al. | Building virtual ECUs quickly and economically | |
KR102054980B1 (ko) | 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템 | |
WO2020179581A1 (ja) | 制御装置およびソフトウェアのデプロイ方法 | |
CN116157774A (zh) | 用于在云计算环境中提供工业设备的工程的方法和系统 | |
Maenhaut et al. | Efficient resource management in the cloud: From simulation to experimental validation using a low‐cost Raspberry Pi testbed | |
US20210141710A1 (en) | Development support device | |
US9424016B2 (en) | Methods, apparatuses, and systems relating to automation in distributed systems | |
JP7441981B2 (ja) | 切り替え可能モデルを有する自律運転シミュレーションアーキテクチャを提供するためのシステムと方法 | |
Priller et al. | Towards perfectly scalable real-time systems | |
JP6920501B1 (ja) | 情報処理システム、プログラム、及び情報処理方法 | |
JP6985685B2 (ja) | 情報環境の管理システム及びその作動方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231010 |