(57)【要約】【課題】ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる制御装置およびその制御装置におけるソフトウェアのデプロイ方法を提供する。【解決手段】制御装置１００は、ユーザプログラムおよびプログラムパッケージ３２Ａ，３２Ｂ，３２Ｃとを不揮発的に格納する主記憶装置１０８と、パッケージ管理モジュール１０６Ａが配置された主メモリ１０６と、プロセッサ１０２とを備える。パッケージ管理モジュール１０６Ａは、ユーザプログラムのバージョンに基づいて、プログラムパッケージ３２Ａ，３２Ｂ，３２Ｃから、デプロイ対象のパッケージを選択して、デプロイ対象のパッケージから、ユーザプログラムのバージョンに適合したバージョンのプログラムを主メモリ（１０６）に配置するためのデプロイ処理を実行する。【選択図】図４
2020144594.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御装置であって、
ユーザプログラムと、前記ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージとを不揮発的に格納する主記憶装置と、
前記ユーザプログラムおよび前記プログラムパッケージの前記プログラムを配置するための主メモリと、
前記プログラムパッケージを管理するパッケージ管理モジュールを含むソフトウェアを実行するためのプロセッサとを備え、
前記パッケージ管理モジュールは、前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択して、前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを前記主メモリに配置するためのデプロイ処理を実行する、制御装置。
【請求項２】
前記１または複数のプログラムパッケージは、
前記パッケージ管理モジュールの前記デプロイ処理に応じて、前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択して、その選択されたプログラムを前記主メモリに配置するチェックモジュールを含む、請求項１に記載の制御装置。
【請求項３】
前記主記憶装置は、
前記制御装置のハードウェアの形式名に関する形式情報を格納し、
前記パッケージ管理モジュールは、前記主記憶装置から前記形式情報を取得して、前記形式情報および前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージから、前記デプロイ対象のパッケージを選択する、請求項２に記載の制御装置。
【請求項４】
前記主記憶装置は、前記形式情報と、前記１または複数のプログラムパッケージにおいて前記形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブルを格納し、
前記チェックモジュールは、前記形式情報および前記パッケージ管理テーブルに記憶された情報に基づいて、前記ユーザプログラムのバージョンに適合した、前記パッケージのプログラムのバージョンについての情報を取得する、請求項３に記載の制御装置。
【請求項５】
前記１または複数のプログラムパッケージは、複数のプログラムパッケージであり、
前記複数のプログラムパッケージは、前記制御装置にアドオンされたアドオンパッケージを含み、
前記主記憶装置は、前記ユーザプログラムのバージョンと、前記複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブルを格納し、
前記パッケージ管理モジュールは、前記テーブルに記憶された情報に基づいて、前記アドオンパッケージを含む複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定して、前記ユーザプログラムのバージョンに適合した組み合わせの場合に、前記ユーザプログラムのバージョンに適合したバージョンを有する前記アドオンパッケージのプログラムを選択する、請求項１から請求項４のいずれか１項に記載の制御装置。
【請求項６】
制御対象を制御する制御装置で利用されるソフトウェアのデプロイ方法であって、前記制御装置は、
ユーザプログラムと、前記ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージとを不揮発的に格納する主記憶装置と、
前記ユーザプログラムおよび前記プログラムパッケージの前記プログラムを配置するための主メモリと、
前記ソフトウェアを実行するためのプロセッサとを備え、
前記デプロイ方法は、
前記ユーザプログラムのバージョンを取得するステップと、
前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択するステップと、
前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップと、
選択されたプログラムを前記主メモリに配置するステップとを備える、ソフトウェアのデプロイ方法。
【請求項７】
前記デプロイ対象のパッケージを選択するステップは、
前記主記憶装置に記憶された、前記制御装置のハードウェアの形式名に関する形式情報を取得するステップと、
前記形式情報および前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージから、前記デプロイ対象のパッケージを選択するステップとを含む、請求項６に記載のソフトウェアのデプロイ方法。
【請求項８】
前記主記憶装置は、前記形式情報と、前記１または複数のプログラムパッケージにおいて前記形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブルを格納し、
前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、
前記形式情報に基づいて、バージョンの情報を取得するステップを含む、請求項７に記載のソフトウェアのデプロイ方法。
【請求項９】
前記１または複数のプログラムパッケージは、複数のプログラムパッケージであり、
前記複数のプログラムパッケージは、前記制御装置にアドオンされたアドオンパッケージを含み、
前記主記憶装置は、前記ユーザプログラムのバージョンと、前記複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブルを格納し、
前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、
前記テーブルに記憶された情報に基づいて、前記アドオンパッケージを含む複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定するステップと、
前記複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせの場合に、前記ユーザプログラムのバージョンに適合したバージョンを有する前記アドオンパッケージのプログラムを選択する、請求項６から請求項８のいずれか１項に記載のソフトウェアのデプロイ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御対象を制御する制御装置およびその制御装置におけるソフトウェアのデプロイ方法に関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムなどのユーザプログラムが実行される。この種のプログラマブルコントローラは、プログラムツールにより作成されたユーザプログラムを記憶するとともに、このユーザプログラムを解釈及び実行してプロセスを制御している。
【０００３】
プログラムツールおよびプログラマブルコントローラのそれぞれがプログラムを管理することにより、ツールとコントローラとの間でプログラムのバージョンが整合しないことが起こりえる。特開平７−２５３８７５号公報（特許文献１）は、ツールバージョンとインタプリタバージョンとが不一致の場合に、該当するユーザプログラムの実行を阻止するプログラム実行阻止手段を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２５３８７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プログラマブルコントローラでは、ユーザプログラムの実行時に呼び出される複数のプログラムを予め格納していることが多い。ユーザプログラムのさまざまなバージョンに対応可能なように、さまざまなバージョンのプログラムをプログラマブルコントローラに格納することが考えられる。したがって、ユーザプログラムを実行させるために、プログラマブルコントローラはユーザプログラムのバージョンに対応した適切なバージョンのパッケージプログラムを選択する必要がある。
【０００６】
本開示の１つの目的は、ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる制御装置およびその制御装置におけるソフトウェアのデプロイ方法を提供することである。
【課題を解決するための手段】
【０００７】
本開示の一例は、制御対象を制御するための制御装置であって、ユーザプログラムと、ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージとを不揮発的に格納する主記憶装置と、ユーザプログラムおよびプログラムパッケージのプログラムを配置するための主メモリと、プログラムパッケージを管理するパッケージ管理モジュールを含むソフトウェアを実行するためのプロセッサとを備え、パッケージ管理モジュールは、ユーザプログラムのバージョンに基づいて、１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択して、デプロイ対象のパッケージから、ユーザプログラムのバージョンに適合したバージョンのプログラムを主メモリに配置するためのデプロイ処理を実行する。
【０００８】
上記によれば、制御装置は、ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる。これにより、たとえばユーザプログラムの後方互換性を確保することができる。
【０００９】
好ましくは、１または複数のプログラムパッケージは、パッケージ管理モジュールのデプロイ処理に応じて、デプロイ対象のパッケージから、ユーザプログラムのバージョンに適合したバージョンのプログラムを選択して、その選択されたプログラムを主メモリに配置するチェックモジュールを含む。
【００１０】
上記によれば、パッケージ管理モジュールは、必要なパッケージを選択するだけでよい。一方、チェックモジュールは、適切なバージョンのプログラムを選択するだけでよい。したがって、パッケージの追加に対して柔軟に対応することができる。
【００１１】
好ましくは、主記憶装置は、制御装置のハードウェアの形式名に関する形式情報を格納し、パッケージ管理モジュールは、主記憶装置から形式情報を取得して、形式情報およびユーザプログラムのバージョンに基づいて、１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択する。
【００１２】
上記によれば、形式情報に基づいて、ユーザプログラムと協働するプログラムを含むパッケージを選択することができる。
【００１３】
好ましくは、主記憶装置は、形式情報と、１または複数のプログラムパッケージにおいて形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブルを格納し、チェックモジュールは、形式情報およびパッケージ管理テーブルに記憶された情報に基づいて、ユーザプログラムのバージョンに適合した、パッケージのプログラムのバージョンについての情報を取得する。
【００１４】
上記によれば、形式情報およびユーザプログラムのバージョンに基づいて、ユーザプログラムに適応するプログラムをパッケージから選択することができる。
【００１５】
好ましくは、１または複数のプログラムパッケージは、複数のプログラムパッケージであり、複数のプログラムパッケージは、制御装置にアドオンされたアドオンパッケージを含み、主記憶装置は、ユーザプログラムのバージョンと、複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブルを格納し、パッケージ管理モジュールは、テーブルに記憶された情報に基づいて、アドオンパッケージを含む複数のプログラムパッケージの組み合わせがユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定して、ユーザプログラムのバージョンに適合した組み合わせの場合に、ユーザプログラムのバージョンに適合したバージョンを有するアドオンパッケージのプログラムを選択する。
【００１６】
上記によれば、アドオンパッケージのプログラムを適切にデプロイすることができる。
本開示の一例は、制御対象を制御する制御装置で利用されるソフトウェアのデプロイ方法であって、制御装置は、ユーザプログラムと、ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージとを不揮発的に格納する主記憶装置と、ユーザプログラムおよびプログラムパッケージのプログラムを配置するための主メモリと、ソフトウェアを実行するためのプロセッサとを備え、デプロイ方法は、ユーザプログラムのバージョンを取得するステップと、ユーザプログラムのバージョンに基づいて、１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択するステップと、デプロイ対象のパッケージから、ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップと、選択されたプログラムを主メモリに配置するステップとを備える。
【００１７】
上記によれば、ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる。これにより、たとえばユーザプログラムの後方互換性を確保することができる。
【００１８】
好ましくは、デプロイ対象のパッケージを選択するステップは、主記憶装置に記憶された、制御装置のハードウェアの形式名に関する形式情報を取得するステップと、形式情報およびユーザプログラムのバージョンに基づいて、１または複数のプログラムパッケージから、デプロイ対象のパッケージを選択するステップとを含む。
【００１９】
上記によれば、形式情報に基づいて、ユーザプログラムと協働するプログラムを含むパッケージを選択することができる。
【００２０】
好ましくは、主記憶装置は、形式情報と、１または複数のプログラムパッケージにおいて形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブルを格納し、ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、形式情報に基づいて、バージョンの情報を取得するステップを含む。
【００２１】
上記によれば、形式情報およびユーザプログラムのバージョンに基づいて、ユーザプログラムに適応するプログラムをパッケージから選択することができる。
【００２２】
好ましくは、１または複数のプログラムパッケージは、複数のプログラムパッケージであり、複数のプログラムパッケージは、制御装置にアドオンされたアドオンパッケージを含み、主記憶装置は、ユーザプログラムのバージョンと、複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブルを格納し、デプロイ対象のパッケージから、ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、テーブルに記憶された情報に基づいて、アドオンパッケージを含む複数のプログラムパッケージの組み合わせがユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定するステップと、複数のプログラムパッケージの組み合わせがユーザプログラムのバージョンに適合した組み合わせの場合に、ユーザプログラムのバージョンに適合したバージョンを有するアドオンパッケージのプログラムを選択する。
【００２３】
上記によれば、アドオンパッケージのプログラムを適切にデプロイすることができる。
【発明の効果】
【００２４】
本開示によれば、制御装置は、ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態に係る制御システムの全体構成例を模式的に示す図である。
【図２】本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に従う制御装置に接続されるサポート装置のハードウェア構成例を示す模式図である。
【図４】本実施の形態に係る制御装置の適用場面の一例を示した図である。
【図５】パッケージ管理テーブルの例を示した模式図である。
【図６】パッケージ整合性テーブル６０の例を示した模式図である。
【図７】本実施の形態に係る制御装置における固定形式情報に基づくデプロイ処理を説明する図である。
【図８】本実施の形態に係る制御装置におけるアドオンパッケージのデプロイ処理を説明する図である。
【図９】パッケージプログラム内のチェックモジュールが実行する処理のフローを示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、図面を参照しつつ、本発明に従う各本実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各本実施の形態および各変形例は、適宜選択的に組み合わされてもよい。
【００２７】
＜Ａ．適用例＞
まず、図１および図２を参照して、本発明が適用される場面の一例について説明する。
【００２８】
図１は、本実施の形態に係る制御システム１の全体構成例を模式的に示す図である。図１には、本実施の形態に係る制御装置１００を中心とした制御システム１を示す。
【００２９】
図１を参照して、制御装置１００は、各種の設備や装置などの制御対象を制御する産業用コントローラに相当する。制御装置１００は、後述するような制御演算を実行する一種のコンピュータであり、典型的には、ＰＬＣ（プログラマブルコントローラ）として具現化されてもよい。
【００３０】
制御装置１００は、フィールドネットワーク２を介して各種のフィールド機器５００と接続されてもよい。制御装置１００は、フィールドネットワーク２などを介して、１または複数のフィールド機器５００との間でデータを遣り取りする。一般的に、「フィールドネットワーク」は、「フィールドバス」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドネットワーク」と総称する。すなわち、本明細書の「フィールドネットワーク」は、狭義の「フィールドネットワーク」に加えて「フィールドバス」を含み得る概念である。
【００３１】
フィールドネットワーク２には、任意のフィールド機器５００を接続することができる。フィールド機器５００は、製造装置や生産ラインなど（以下、「フィールド」とも総称する。）に対して何らかの物理的な作用を与えるアクチュエータ、および、フィールドとの間で情報を遣り取りする入出力装置などを含む。たとえばフィールドネットワーク２として、ＥｔｈｅｒＣＡＴ（登録商標）を採用することができる。
【００３２】
図１に示す例においては、フィールドネットワーク２に接続されるフィールド機器５００は、リモートＩ／Ｏ（Input/Output）装置５１０と、ロボットコントローラ５２２，５２６と、サーボドライバ５４０，５４４とを含む。ロボットコントローラ５２２，５２６およびサーボドライバ５４０，５４４は、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータ（デバイス）に相当する。
【００３３】
図１には、制御装置１００からの制御指令に従って動作する１または複数のアクチュエータについても、フィールドネットワーク２に接続されている例を示すが、これに限らず、制御装置１００からの制御指令を受けることができれば、どのような接続形態であってもよい。例えば、フィールドネットワーク２に接続されたリモートＩ／Ｏ装置５１０から信号線を介して制御指令を与えるようにしてもよい。
【００３４】
図２は、本実施の形態に係る制御装置１００のハードウェア構成例を示すブロック図である。図２を参照して、本実施の形態に係る制御装置１００は、ＣＰＵユニットとも称される演算処理部であり、プロセッサ１０２と、フィールドネットワークコントローラ１３０とを備える。
【００３５】
フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールド機器５００の間のデータの遣り取りを制御する。このようなデータの遣り取りは、制御装置１００からフィールド機器５００に対する制御指令などのデータ（以下、「出力データ」とも称す。）を送信する処理と、フィールド機器５００において収集または生成されたデータ（以下、「入力データ」とも称す。）を制御装置１００が受信する処理とを含む。フィールドネットワークコントローラ１３０は、「通信回路」の一実施例に対応する。
【００３６】
制御装置１００は、予め定められた制御周期毎に、出力データの送信と、入力データの受信と、入力データを使用して出力データを生成する制御プログラムの実行とを順次繰り返すことによって、フィールド機器５００を制御するように構成されている。
【００３７】
制御プログラムは、ユーザにおける制御目的に応じて作成されるユーザプログラムと、ユーザプログラムと協働してユーザにおける制御目的を実現する少なくとも１つのプログラムを含む。後者のプログラムは、たとえばシステムプログラムを含み得る。本実施の形態では、制御装置１００には、少なくとも１つのパッケージが格納され、パッケージは、１または複数のバージョンのプログラムを有する。
【００３８】
制御装置１００は、ユーザプログラムのバージョンなどに応じて、必要なパッケージを選択し、各パッケージにユーザプログラムのバージョン情報を含むデプロイ指示を与える。各パッケージは、そのバージョン情報に応じて、適切なバージョンのプログラムをロードする。したがって制御装置１００では、ユーザプログラムのバージョンに応じて、複数のバージョンから適切なバージョンのパッケージプログラムを選択することができる。さらに制御装置１００においては、パッケージの追加（アドオン）にも柔軟に対応できる。
【００３９】
以下、本発明のより具体的な応用例として、本実施の形態に係る制御システム１のより詳細な構成および処理について説明する。
【００４０】
＜Ｂ．制御システムの全体構成例＞
まず、図１に示す制御システム１の全体構成例についてより詳細に説明する。
【００４１】
図１に示す構成例において、サーボドライバ５４０，５４４は、制御装置１００からの制御指令（例えば、位置指令または速度指令など）に従って、サーボモータ５４２，５４６をそれぞれ駆動する。
【００４２】
ロボットコントローラ５２２はロボット５２０を駆動し、ロボットコントローラ５２６はロボット５２４を駆動する。ロボットコントローラ５２２，５２６は、制御装置１００からの制御指令（位置指令または速度指令など）に従って、軌跡計算および各軸の角度計算などを行なうとともに、計算結果に従って、ロボット５２０，５２４を構成するサーボモータなどを駆動する。
【００４３】
リモートＩ／Ｏ装置５１０は、典型的には、フィールドネットワーク２を介して通信を行なう通信カプラと、入力データの取得および出力データの出力を行なうための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。リモートＩ／Ｏ装置５１０には、入力リレーや各種センサ（例えば、アナログセンサ、温度センサ、振動センサなど）などの入力データを収集する装置、および、出力リレー、コンタクタ、サーボドライバ、および、その他任意のアクチュエータなどのフィールドに対して何らかの作用を与える装置が接続される。
【００４４】
フィールド機器５００としては、これらに限られることなく、入力データを収集する任意のデバイス（例えば、視覚センサなど）、ならびに、出力データに従う何らかの作用を与える任意のデバイス（例えば、インバータ装置など）などを採用することができる。
【００４５】
制御装置１００は、上位ネットワーク６を介して、他の装置に接続されていてもよい。上位ネットワーク６には、一般的なネットワークプロトコルであるイーサネット（登録商標）あるいはＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が採用されていてもよい。より具体的には、１または複数のサーバ装置３００、または１または複数の表示装置４００が上位ネットワーク６に接続されてもよい。
【００４６】
サーバ装置３００としては、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これに限らず、情報系サービスを提供する装置を上位ネットワーク６に接続するようにしてもよい。情報系サービスとしては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行なう処理が想定される。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行なうための機械学習ツールなどが想定される。
【００４７】
表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００４８】
さらに、制御装置１００には、サポート装置２００が接続可能になっている。サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したシーケンスプログラムを制御装置１００へ出力する機能、制御装置１００上で実行されるシーケンスプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００４９】
図１に示す制御システム１においては、制御装置１００、サポート装置２００および表示装置４００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【００５０】
＜Ｃ．制御装置のハードウェア構成例＞
図２は、本実施の形態に係る制御装置１００のハードウェア構成例を示すブロック図である。
【００５１】
図２を参照して、制御装置１００は、ＣＰＵユニットと称される演算処理部であり、プロセッサ１０２と、チップセット１０４と、主メモリ１０６と、ストレージ１０８と、上位ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２０と、フィールドネットワークコントローラ１３０とを含む。
【００５２】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＧＰＵ（Graphics Processing Unit）などにより構成される。プロセッサ１０２としては、複数のコアを有する構成を採用してもよいし、プロセッサ１０２を複数配置してもよい。すなわち、制御装置１００は、１または複数のプロセッサ１０２、および／または、１または複数のコアを有するプロセッサ１０２を有している。チップセット１０４は、プロセッサ１０２および周辺エレメントを制御することで、制御装置１００全体としての処理を実現する。
【００５３】
主メモリ１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１０８は、主記憶装置であり、例えば、ＨＤＤ（Hard Disk Drive）およびＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００５４】
プロセッサ１０２は、ストレージ１０８に格納された各種プログラムを読出して、主メモリ１０６に展開して実行することで、制御対象に応じた制御および各種処理を実現する。ストレージ１０８には、ユーザデータ３０に加えて、１または複数のパッケージプログラム３２、および設定情報４０が格納される。
【００５５】
ユーザデータ３０は、ユーザにおける制御目的に応じてサポート装置２００において作成されて、サポート装置２００から制御装置１００へと送られる。ユーザデータ３０は、制御システム１を用いて制御する対象のライン（プロセス）などに応じて設計されたユーザプログラムを含む。ユーザプログラムは、パッケージプログラム３２と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラムは、パッケージプログラム３２によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラムおよびパッケージプログラムを、「制御プログラム」と総称する場合もある。パッケージプログラム３２は、たとえば制御対象の製造装置あるいは設備等に応じて準備され、ストレージ１０８に格納される。
【００５６】
システムプログラム３４は、プロトコルスタック３６およびデバイスドライバ３８を含むことができる。システムプログラム３４は、制御装置１００としての機能を実現するためのプログラムである。たとえばシステムプログラム３４は、スケジューラプログラムと、入出力処理プログラムと、その他のシステムプログラムとを含むことができる。プロトコルスタック３６は、フィールドネットワーク２における通信の手順や遣り取りを規定する複数のプロトコルの階層からなる。デバイスドライバ３８は、フィールドネットワークコントローラ１３０を制御するためのドライバである。
【００５７】
上位ネットワークコントローラ１１０は、上位ネットワーク６を介して、サーバ装置３００や表示装置４００（図１参照）などとの間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００５８】
メモリカードインターフェイス１１４は、メモリカード１１６が着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（シーケンスプログラム、ユーザプログラムなど）を読出すことが可能になっている。
【００５９】
内部バスコントローラ１２０は、制御装置１００に装着されるＩ／Ｏユニット１２２との間のデータの遣り取りを制御する。具体的には、内部バスコントローラ１２０は、Ｉ／Ｏユニット１２２へ出力されるデータ（出力データ）の送信バッファ、および、Ｉ／Ｏユニット１２２から入力されるデータ（入力データ）の受信バッファとして機能する。なお、プロセッサ１０２による演算処理によって生成された出力データは、原始的にはストレージ１０８に格納される。そして、特定のＩ／Ｏユニット１２２へ転送されるべき出力データは、ストレージ１０８から読み出されて、送信バッファに一時的に保持される。また、Ｉ／Ｏユニット１２２から転送された入力データは、受信バッファに一時的に保持された後、ストレージ１０８に移される。内部バスコントローラ１２０は、さらに、Ｉ／Ｏユニット１２２との間で、送信バッファの出力データを送信する処理、および入力データを受信して受信バッファに格納する処理を行なう。典型的には、内部バスコントローラ１２０は、内部バスにおける物理層およびデータリンク層の機能を提供する。
【００６０】
フィールドネットワークコントローラ１３０は、フィールドネットワーク２を介したフィールド機器５００との間のデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ１３０は、フィールドネットワーク２の規格に従い、出力データの送信および入力データの受信を制御する。具体的には、フィールドネットワークコントローラ１３０は、フィールド機器５００へ出力されるデータ（出力データ）の送信バッファ、および、フィールド機器５００から入力されるデータ（入力データ）の受信バッファとして機能する。なお、プロセッサ１０２による演算処理によって生成された出力データは、原始的にはストレージ１０８に格納される。そして、特定のフィールド機器５００へ転送されるべき出力データは、ストレージ１０８から読み出されて、送信バッファに一時的に保持される。また、フィールド機器５００から転送された入力データは、受信バッファに一時的に保持された後、ストレージ１０８に移される。フィールドネットワークコントローラ１３０は、さらに、フィールド機器５００との間で、送信バッファの出力データを送信する処理、および入力データを受信して受信バッファに格納する処理を行なう。典型的には、フィールドネットワークコントローラ１３０は、フィールドネットワーク２における物理層およびデータリンク層の機能を提供する。
【００６１】
図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００６２】
＜Ｄ．サポート装置の構成例＞
図３は、本実施の形態に従う制御装置１００に接続されるサポート装置２００のハードウェア構成例を示す模式図である。サポート装置２００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【００６３】
図７を参照して、サポート装置２００は、ＣＰＵやＧＰＵなどのプロセッサ２０２と、主記憶装置２０４と、入力部２０６と、出力部２０８と、二次記憶装置５１０と、光学ドライブ２１２と、通信インターフェイス２１８とを含む。これらのコンポーネントは、プロセッサバス２２０を介して接続されている。
【００６４】
プロセッサ２０２は、二次記憶装置２１０に格納されたプログラム（一例として、ＯＳ２１０２およびサポートプログラム２１０４）を読出して、主記憶装置２０４に展開して実行することで、各種処理を実現する。
【００６５】
二次記憶装置２１０には、基本的な機能を実現するためのＯＳ２１０２に加えて、サポート装置２００としての機能を提供するためのサポートプログラム２１０４が格納される。サポートプログラム２１０４は、コンピュータである情報処理装置（実質的にはプロセッサ２０２）により実行されることで、本実施の形態に従うサポート装置２００を実現する。
【００６６】
二次記憶装置２１０には、サポートプログラム２１０４が実行されることで提供される開発環境においてユーザにより作成されるプロジェクト２１０６が格納される。
【００６７】
本実施の形態において、サポート装置２００は、制御装置１００（図３では「ＰＬＣ」と表記する）に含まれる各デバイスに対する設定および各デバイスで実行されるプログラムの作成が統合的に可能な開発環境を提供する。プロジェクト２１０６は、このような統合的な開発環境によって生成されるデータを含む。
【００６８】
典型的には、プロジェクト２１０６は、標準制御ソースプログラム２１０８を含む。標準制御ソースプログラム２１０８は、オブジェクトコードに変換された上で、制御装置１００へ転送され、ユーザプログラムとして格納される。
【００６９】
入力部２０６は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。出力部２０８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ２０２からの処理結果などを出力する。
【００７０】
通信インターフェイス２１８は、ＵＳＢやイーサネットなどの任意の通信媒体を介して、制御システム１との間のデータを遣り取りする。
【００７１】
サポート装置２００は、光学ドライブ２１２を有しており、コンピュータ読取可能な命令を非一過的に格納する記録媒体２１４（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られて二次記憶装置２１０などにインストールされる。
【００７２】
サポート装置２００で実行されるサポートプログラム２１０４などは、コンピュータ読取可能な記録媒体２１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００７３】
図３には、プロセッサ２０２がプログラムを実行することで、サポート装置２００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７４】
＜Ｅ．制御装置の適用場面の例＞
図４は、本実施の形態に係る制御装置１００の適用場面の一例を示した図である。なお、図４に示された構成は、主メモリ１０６にプログラムを展開することによって実現される。
【００７５】
主記憶装置であるストレージ１０８は、ユーザデータ３０と、パッケージ３２Ａ，３２Ｂ，３２Ｃと、形式情報５０と、パッケージ整合性テーブル６０とを格納する。パッケージ３２Ａ，３２Ｂ，３２Ｃは、それぞれ図４において、「パッケージＡ」、「パッケージＢ」、「パッケージＣ」とも表記される。一方、主メモリ１０６にプログラムを展開することにより、パッケージ管理モジュール１０６Ａが主メモリ１０６に配置される。
【００７６】
ユーザデータ３０は、サポート装置２００において作成されて、サポート装置２００から制御装置１００へと転送される。ユーザデータ３０は、ユーザプログラム１０と、ユーザデータバージョン情報１２と、コンフィグレーションデータ１４とを含む。
【００７７】
ユーザプログラム１０は、パッケージ３２Ａ〜３２Ｃのうちの１つまたは複数によって提供される命令、関数、機能モジュールなどを利用して、目的の動作を実現する。ユーザプログラム１０のバージョンは、ユーザデータバージョン情報１２により示される。図３の例では、ユーザデータのバージョンは「１．２」である。ユーザデータ３０は、ユーザデータバージョンの情報に加えて、ユーザデータの属性の情報を含むのでもよい。
【００７８】
コンフィグレーションデータ１４は、制御装置１００を含む制御システム１の構成や設定を定義する情報を含む。たとえばコンフィグレーションデータ１４は、フィールドネットワーク２に接続されているフィールド機器５００に関連付けられた、ユーザプログラムや設定値の情報、および、上位ネットワーク６に接続されている装置に関連付けられた、ユーザプログラムや設定値の情報を含むことができる。
【００７９】
制御装置１００には、パッケージ単位でプログラムが格納される。たとえばパッケージ３２Ａ，３２Ｂ，３２Ｃは、Ｅ−ＣＡＴなどの通信プロトコルに関するものであってもよい。パッケージは予め制御装置１００にインストールされていてもよく、アドオンにより制御装置１００にインストールされてもよい。
【００８０】
パッケージ３２Ａ，３２Ｂ，３２Ｃの各々は、１または複数のバージョンのプログラム（パッケージプログラム）と、チェックモジュールとを含む。パッケージ３２Ａは、バージョン１．０のプログラム２０Ａと、バージョン１．１のプログラム２１Ａと、バージョン１．２のプログラム２２Ａと、チェックモジュール２５Ａとを含む。
【００８１】
パッケージ３２Ｂは、バージョン１．０のプログラム２０Ｂと、バージョン２．０のプログラム２２Ｂと、チェックモジュール２５Ｂとを含む。
【００８２】
パッケージ３２Ｃは、バージョン１．０のプログラム２０Ｃと、チェックモジュール２５Ｃとを含む。
【００８３】
後述するデプロイにおいて、各パッケージのチェックモジュールは、当該パッケージに含まれる１または複数のプログラムのバージョンをチェックして、適切なバージョンのプログラムを選択する。適切なバージョンとは、たとえば、パッケージプログラムのプログラムに対して、ユーザプログラムが後方互換性を有する場合のバージョンである。パッケージプログラムのプログラムに対して、ユーザプログラムが上位互換性を有するバージョンであってもよい。
【００８４】
形式情報５０は、形式名情報５２およびパッケージ管理テーブル５４を含む。形式名情報５２は、ハードウェアの形式名に関する情報、たとえば図２に示すプロセッサ１０２の形式を含む。形式名情報５２は、他のハードウェアの形式名に関する情報を含んでもよい。たとえば形式名情報５２は、フィールドネットワークコントローラ１３０の形式情報を含んでもよい。
【００８５】
パッケージ管理テーブル５４は、形式名情報５２に含まれる形式名と、対応するパッケージプログラムのプログラムバージョンとを関連付けて記憶する。図５は、パッケージ管理テーブル５４の例を示した模式図である。パッケージ管理テーブル５４には、プロセッサ１０２の形式が格納される。プロセッサ１０２の形式と、各パッケージのプログラム（図５には「パッケージＡプログラム」、「パッケージＢプログラム」等と表記）の適応するバージョンとが対応付けられる。たとえばプロセッサ１０２の形式が「ＣＰＵ１０１−１」である場合、パッケージＡプログラムの適応するプログラムのバージョンは１．１以降であり、パッケージＢプログラムの適応するプログラムのバージョンは１．０以降である。
【００８６】
パッケージ整合性テーブル６０は、ユーザデータバージョンと、パッケージプログラムのバージョンとを対応付けて記憶する。図６は、パッケージ整合性テーブル６０の例を示した模式図である。図６に示すように、１つのユーザデータバージョンに対して、各パッケージのプログラムのバージョンが登録される。パッケージ整合性テーブル６０は、あるユーザデータバージョンに対して使用できないパッケージプログラムのバージョンの組み合わせを表す。たとえばユーザデータバージョンが１．０のとき、パッケージＡプログラムＡ（バージョン１．０１）と、パッケージＢプログラム（バージョン１．０１）と、パッケージＣプログラム（バージョン１．０２）との組み合わせは利用できない。
【００８７】
主メモリ１０６には、プロセッサ１０２によって実行されるプログラムが展開される。パッケージ管理モジュール１０６Ａは、主メモリ１０６に展開されたプログラムのモジュールのうちの１つである。プロセッサ１０２がプログラムを実行することにより取得されたデータ、情報等は、主メモリ１０６に一時的に格納される。図６において、ストレージ１０８からパッケージ管理モジュール１０６Ａへの向きの矢印は、ストレージ１０８から取得された情報が主メモリ１０６に格納されることを示す。一方、パッケージ管理モジュール１０６Ａからストレージ１０８への向きの矢印は、パッケージ管理モジュール１０６Ａによる制御を示している。
【００８８】
パッケージ管理モジュール１０６Ａは、ストレージ１０８から形式情報５０を取得して、パッケージ３２Ａ，３２Ｂ，３２Ｃの各々からデプロイ対象のパッケージプログラムを選択する。パッケージ管理モジュール１０６Ａは、ストレージ１０８からユーザデータのバージョンを取得して、そのユーザデータバージョンに基づいて選択したパッケージプログラムをデプロイする。これにより、ユーザデータバージョンに適応したバージョンのパッケージプログラムが主メモリ１０６に展開される。
【００８９】
＜Ｆ．デプロイ処理＞
以下に説明する例では、パッケージ３２Ａ，３２Ｂは制御装置１００に予めインストールされているものとし、パッケージ３２Ｃは制御装置１００にアドオンされたパッケージプログラムであるとする。
【００９０】
図７は、本実施の形態に係る制御装置における固定形式情報に基づくデプロイ処理を説明する図である。図７は、形式情報５０に予め含まれる情報に基づくデプロイのフローを示す。ステップＳ１において、パッケージ管理モジュール１０６Ａは、形式情報５０を参照して、形式情報（たとえばプロセッサ１０２の形式情報）を取得する。
【００９１】
次にステップＳ２において、パッケージ管理モジュール１０６Ａは、パッケージ管理テーブル５４を参照する。パッケージ管理モジュール１０６Ａは、ステップＳ１において取得された形式情報に基づき、デプロイ対象のパッケージ、およびそのパッケージのプログラムの適切なバージョンに関する情報（形式情報）を取得する。
【００９２】
続いてステップＳ３において、パッケージ管理モジュール１０６Ａは、ユーザデータ３０を参照する。具体的には、パッケージ管理モジュール１０６Ａは、ユーザデータバージョン情報１２を参照して、ユーザデータバージョンを取得する。
【００９３】
ステップＳ４Ａにおいて、パッケージ管理モジュール１０６Ａは、ユーザデータバージョンに従って、パッケージ３２Ａのデプロイを実行する。この場合、パッケージ管理モジュール１０６Ａは、パッケージ３２Ａのチェックモジュール２５Ａにデプロイ指示を与える。パッケージ３２Ａでは、チェックモジュール２５Ａが適合可能なパッケージプログラムを選択し（ステップＳ５Ａ）、そのプログラムをデプロイする（ステップＳ６Ａ）。
【００９４】
同様に、ステップＳ４Ｂにおいて、パッケージ管理モジュール１０６Ａは、ユーザデータバージョンに従って、パッケージ３２Ｂをデプロイする。パッケージ管理モジュール１０６Ａは、パッケージ３２Ｂのチェックモジュール２５Ｂにデプロイ指示を与える。パッケージ３２Ｂでは、チェックモジュール２５Ｂが適合可能なパッケージプログラムを選択し（ステップＳ５Ｂ）、そのプログラムをデプロイする（ステップＳ６Ｂ）。
【００９５】
説明の便宜上、ステップＳ４Ａの処理の説明の次にステップＳ４Ｂの処理を説明したが、ステップＳ４Ａ，Ｓ４Ｂの処理はシーケンシャルに実行されてもよく、並行して実行されてもよい。またステップＳ４Ａ，Ｓ４Ｂの処理において、パッケージ整合性テーブル６０が参照されてもよい。
【００９６】
図８は、本実施の形態に係る制御装置におけるアドオンパッケージのデプロイ処理を説明する図である。図８を参照して、ステップＳ１１において、パッケージ管理モジュール１０６Ａは、ユーザデータバージョンに従って、パッケージ３２Ａのデプロイを実行する。ステップＳ１２において、パッケージ管理モジュール１０６Ａは、ユーザデータバージョンに従って、パッケージ３２Ｂのデプロイを実行する。ステップＳ１１，Ｓ１２の処理は、図７に示した対応するステップの処理と基本的に同じであるので以後の説明は繰り返さない。
【００９７】
ステップＳ１３において、パッケージ管理モジュール１０６Ａは、外部から、パッケージ３２Ｃのアドオンの操作を受け付ける。この場合、パッケージ管理モジュール１０６Ａは、パッケージ整合性テーブル６０を参照して、パッケージ３２Ａ，３２Ｂ，３２Ｃのプログラムの組み合わせの中に、適合可能なバージョンの組み合わせが存在するかどうかを判断する。
【００９８】
適合可能な適合可能なバージョンの組み合わせが存在する場合、ステップＳ１５において、パッケージ管理モジュール１０６Ａは、ユーザデータバージョン情報１２を参照して、ユーザデータバージョンを取得する。ステップＳ１６において、パッケージ管理モジュール１０６Ａは、ユーザデータバージョンにしたがって、パッケージ３２Ｃの適合可能なバージョンのプログラムをデプロイするようチェックモジュール２５Ｃに指示する。パッケージ３２Ｃでは、チェックモジュール２５Ｃが適合可能なパッケージプログラムを選択し（ステップＳ１７Ａ）、そのパッケージプログラムをデプロイする（ステップＳ１７Ａ）。
【００９９】
図９は、パッケージプログラム内のチェックモジュールが実行する処理のフローを示すフローチャートである。処理が開始されると、ステップＳ２１において、パッケージ管理モジュール１０６Ａからユーザデータバージョンを受けて、チェックモジュールはデプロイ処理を開始する。ステップＳ２２において、チェックモジュールは、パッケージ管理テーブル５４から各パッケージのデプロイ可能なプログラムのバージョンを取得する。このときに、デプロイ可能なパッケージプログラムがある場合、処理はステップＳ２３に進み、チェックモジュールはデプロイ可能なパッケージプログラムを有効化する。続けて、ステップＳ２４において、チェックモジュールは、有効化したパッケージプログラムバージョンを、パッケージ管理モジュールに伝える。一方、デプロイ可能なパッケージプログラムが無い場合には、チェックモジュールは、デプロイ可能なパッケージプログラムが無いことを、パッケージ管理モジュール１０６Ａに伝える。
【０１００】
本実施の形態によれば、パッケージ管理モジュールは、必要なパッケージを選択するだけでよい。一方、チェックモジュールは、適切なバージョンのプログラムを選択するだけでよい。したがって、パッケージの追加に対して柔軟に対応することができる。
【０１０１】
なお、上述の実施の形態では、チェックモジュールは各パッケージプログラムに含まれる。しかしながら、パッケージ管理モジュール１０６Ａがチェックモジュールを有していてもよい。
【０１０２】
＜Ｇ．付記＞
以上説明したように、本実施形態は以下に列挙する開示を含む。
【０１０３】
１．制御対象を制御するための制御装置（１００）であって、
ユーザプログラムと、前記ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）とを不揮発的に格納する主記憶装置（１０８）と、
前記ユーザプログラムおよび前記プログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）の前記プログラムを配置するための主メモリ（１０６）と、
前記プログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）を管理するパッケージ管理モジュール（１０６Ａ）を含むソフトウェアを実行するためのプロセッサ（１０２）とを備え、
前記パッケージ管理モジュール（１０６Ａ）は、前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）から、デプロイ対象のパッケージを選択して、前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを前記主メモリ（１０６）に配置するためのデプロイ処理を実行する、制御装置（１００）。
【０１０４】
２．前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）は、
前記パッケージ管理モジュール（１０６Ａ）の前記デプロイ処理に応じて、前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択して、その選択されたプログラムを前記主メモリ（１０６）に配置するチェックモジュール（２５Ａ，２５Ｂ，２５Ｃ）を含む、１．に記載の制御装置（１００）。
【０１０５】
３．前記主記憶装置（１０８）は、
前記制御装置（１００）のハードウェアの形式名に関する形式情報を格納し、
前記パッケージ管理モジュール（１０６Ａ）は、前記主記憶装置（１０８）から前記形式情報を取得して、前記形式情報および前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）から、前記デプロイ対象のパッケージを選択する、２．に記載の制御装置（１００）。
【０１０６】
４．前記主記憶装置（１０８）は、前記形式情報と、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）において前記形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブル（５４）を格納し、
前記チェックモジュール（２５Ａ，２５Ｂ，２５Ｃ）は、前記形式情報および前記パッケージ管理テーブル（５４）に記憶された情報に基づいて、前記ユーザプログラムのバージョンに適合した、前記パッケージのプログラムのバージョンについての情報を取得する、３．に記載の制御装置（１００）。
【０１０７】
５．前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）は、複数のプログラムパッケージであり、
前記複数のプログラムパッケージは、前記制御装置（１００）にアドオンされたアドオンパッケージ（３２Ｃ）を含み、
前記主記憶装置（１０８）は、前記ユーザプログラムのバージョンと、前記複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブル（６０）を格納し、
前記パッケージ管理モジュール（１０６Ａ）は、前記テーブル（６０）に記憶された情報に基づいて、前記アドオンパッケージ（３２Ｃ）を含む複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定して、前記ユーザプログラムのバージョンに適合した組み合わせの場合に、前記ユーザプログラムのバージョンに適合したバージョンを有する前記アドオンパッケージ（３２Ｃ）のプログラムを選択する、１．から４．のいずれか１つに記載の制御装置（１００）。
【０１０８】
６．制御対象を制御する制御装置（１００）で利用されるソフトウェアのデプロイ方法であって、前記制御装置（１００）は、
ユーザプログラムと、前記ユーザプログラムと協働して実行される１または複数のバージョンのプログラムを格納する、１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）とを不揮発的に格納する主記憶装置（１０８）と、
前記ユーザプログラムおよび前記プログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）の前記プログラムを配置するための主メモリ（１０６）と、
前記ソフトウェアを実行するためのプロセッサ（１０２）とを備え、
前記デプロイ方法は、
前記ユーザプログラムのバージョンを取得するステップと、
前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）から、デプロイ対象のパッケージを選択するステップと、
前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップと、
選択されたプログラムを前記主メモリ（１０６）に配置するステップとを備える、ソフトウェアのデプロイ方法。
【０１０９】
７．前記デプロイ対象のパッケージを選択するステップは、
前記主記憶装置（１０８）に記憶された、前記制御装置（１００）のハードウェアの形式名に関する形式情報を取得するステップと、
前記形式情報および前記ユーザプログラムのバージョンに基づいて、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）から、前記デプロイ対象のパッケージを選択するステップとを含む、６．に記載のソフトウェアのデプロイ方法。
【０１１０】
８．前記主記憶装置（１０８）は、前記形式情報と、前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）において前記形式情報に対応付けられたプログラムのバージョンとを記憶するパッケージ管理テーブル（５４）を格納し、
前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、
前記形式情報に基づいて、バージョンの情報を取得するステップを含む、７．に記載のソフトウェアのデプロイ方法。
【０１１１】
９．前記１または複数のプログラムパッケージ（３２Ａ，３２Ｂ，３２Ｃ）は、複数のプログラムパッケージであり、
前記複数のプログラムパッケージは、前記制御装置（１００）にアドオンされたアドオンパッケージ（３２Ｃ）を含み、
前記主記憶装置（１０８）は、前記ユーザプログラムのバージョンと、前記複数のプログラムパッケージの各々のプログラムのバージョンとを対応付けて記憶するテーブル（６０）を格納し、
前記デプロイ対象のパッケージから、前記ユーザプログラムのバージョンに適合したバージョンのプログラムを選択するステップは、
前記テーブル（６０）に記憶された情報に基づいて、前記アドオンパッケージ（３２Ｃ）を含む複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせであるかどうかを判定するステップと、
前記複数のプログラムパッケージの組み合わせが前記ユーザプログラムのバージョンに適合した組み合わせの場合に、前記ユーザプログラムのバージョンに適合したバージョンを有する前記アドオンパッケージ（３２Ｃ）のプログラムを選択する、６．から８．のいずれか１項に記載のソフトウェアのデプロイ方法。
【０１１２】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１３】
１  制御システム、２  フィールドネットワーク、６  上位ネットワーク、１０  ユーザプログラム、１２  ユーザデータバージョン情報、１４  コンフィグレーションデータ、２０Ａ，２０Ｂ，２０Ｃ，２１Ａ，２２Ａ，２２Ｂ  プログラム、２５Ａ，２５Ｂ，２５Ｃ  チェックモジュール、３０  ユーザデータ、３２  パッケージプログラム、３２Ａ，３２Ｂ，３２Ｃ  パッケージ、３４  システムプログラム、３６  プロトコルスタック、３８  デバイスドライバ、４０  設定情報、５０  形式情報、５２  形式名情報、５４  パッケージ管理テーブル、６０  パッケージ整合性テーブル、１００  制御装置１０２，２０２  プロセッサ、１０４  チップセット、１０６  主メモリ、１０６Ａ  パッケージ管理モジュール、１０８  ストレージ、１１０  上位ネットワークコントローラ、１１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１２０  内部バスコントローラ、１２２  Ｉ／Ｏユニット、１３０  フィールドネットワークコントローラ、２００  サポート装置、２０４  主記憶装置、２０６  入力部、２０８  出力部、２１０，５１０  二次記憶装置、２１２  光学ドライブ、２１４  記録媒体、２１８  通信インターフェイス、２２０  プロセッサバス、３００  サーバ装置、４００  表示装置、５００  フィールド機器、５２０，５２４  ロボット、５２２，５２６  ロボットコントローラ、５４０，５４４  サーボドライバ、５４２，５４６  サーボモータ、２１０４  サポートプログラム、２１０６  プロジェクト、２１０８  標準制御ソースプログラム、Ｓ１〜Ｓ２４  ステップ。
【図１】
2020144594.tif 000003
【図２】
2020144594.tif 000004
【図３】
2020144594.tif 000005
【図４】
2020144594.tif 000006
【図５】
2020144594.tif 000007
【図６】
2020144594.tif 000008
【図７】
2020144594.tif 000009
【図８】
2020144594.tif 000010
【図９】
2020144594.tif 000011