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

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

▶ 株式会社日立産機システムの特許一覧

<>
  • 特許-コントロール装置及びコントロール方法 図1
  • 特許-コントロール装置及びコントロール方法 図2
  • 特許-コントロール装置及びコントロール方法 図3
  • 特許-コントロール装置及びコントロール方法 図4
  • 特許-コントロール装置及びコントロール方法 図5
  • 特許-コントロール装置及びコントロール方法 図6A
  • 特許-コントロール装置及びコントロール方法 図6B
  • 特許-コントロール装置及びコントロール方法 図7
  • 特許-コントロール装置及びコントロール方法 図8A
  • 特許-コントロール装置及びコントロール方法 図8B
  • 特許-コントロール装置及びコントロール方法 図8C
  • 特許-コントロール装置及びコントロール方法 図9
  • 特許-コントロール装置及びコントロール方法 図10
  • 特許-コントロール装置及びコントロール方法 図11
  • 特許-コントロール装置及びコントロール方法 図12
  • 特許-コントロール装置及びコントロール方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-14
(45)【発行日】2022-09-26
(54)【発明の名称】コントロール装置及びコントロール方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20220915BHJP
【FI】
G05B19/05 A
【請求項の数】 14
(21)【出願番号】P 2018193902
(22)【出願日】2018-10-12
(65)【公開番号】P2020061104
(43)【公開日】2020-04-16
【審査請求日】2021-06-17
(73)【特許権者】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】今井 光洋
(72)【発明者】
【氏名】田村 史之
【審査官】影山 直洋
(56)【参考文献】
【文献】国際公開第2018/096717(WO,A1)
【文献】特開平07-230387(JP,A)
【文献】特開2005-309644(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
1以上の制御対象装置の動作を制御するコントロール装置であって、
前記1以上の制御対象装置の動作の制御に関わる複数種類の計算リソースを含む複数の計算リソースを備え、
前記複数の計算リソースは、インターフェース部、記憶部及びプロセッサ部を含み、
前記インターフェース部は、前記1以上の制御対象装置に接続された1以上のI/Oポートと、ネットワークに接続された1以上のネットワークポートとを含み、
前記記憶部は、1以上のメモリを含み、
前記プロセッサ部は、1以上のプロセッサを含み、
プログラム群が、
1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラムである1以上の対象プログラムの少なくとも1つを、プログラム配布装置から前記ネットワーク及び前記1以上のネットワークポート経由でダウンロードし、
当該ダウンロードのタイミングと異なるタイミングで、前記複数の計算リソースに関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更し、
前記プログラム群は、前記1以上の制御プログラム及び前記1以上の情報プログラム以外の1以上のプログラムであり、
前記1以上の制御プログラムの各々は、前記I/Oポートに接続された制御対象装置の制御情報を出力するスキャン動作を行うプログラムであり、
前記1以上の情報プログラムの各々は、前記スキャン動作と異なる情報処理を行うプログラムであ
前記1以上の対象プログラムが制御プログラムと情報プログラムの両方を含み、
前記プログラム群が、当該情報プログラムが必要とするリソースに応じてユーザからの明示無しに当該情報プログラムの実行管理データを決定し、
前記情報プログラムが使用可能なリソースの上限が、当該情報プログラムについて前記決定された実行管理データが示すリソース上限を超えている場合、前記プログラム群が、当該情報プログラムの実行を制限する、
ことを特徴とするコントロール装置。
【請求項2】
1以上の制御対象装置の動作を制御するコントロール装置であって、
前記1以上の制御対象装置の動作の制御に関わる複数種類の計算リソースを含む複数の計算リソースを備え、
前記複数の計算リソースは、インターフェース部、記憶部及びプロセッサ部を含み、
前記インターフェース部は、前記1以上の制御対象装置に接続された1以上のI/Oポートと、ネットワークに接続された1以上のネットワークポートとを含み、
前記記憶部は、1以上のメモリを含み、
前記プロセッサ部は、1以上のプロセッサを含み、
プログラム群が、
1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラムである1以上の対象プログラムの少なくとも1つを、プログラム配布装置から前記ネットワーク及び前記1以上のネットワークポート経由でダウンロードし、
当該ダウンロードのタイミングと異なるタイミングで、前記複数の計算リソースに関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更し、
前記プログラム群は、前記1以上の制御プログラム及び前記1以上の情報プログラム以外の1以上のプログラムであり、
前記1以上の制御プログラムの各々は、前記I/Oポートに接続された制御対象装置の制御情報を出力するスキャン動作を行うプログラムであり、
前記1以上の情報プログラムの各々は、前記スキャン動作と異なる情報処理を行うプログラムであり、
前記1以上の対象プログラムの少なくとも1つが情報プログラムである場合、前記プログラム群が、
当該情報プログラムの実行管理データを変更することの許可の問合せをユーザに出し、
当該問合せに対して許可を受け付けた場合、当該情報プログラムの実行管理データを変更する、
ことを特徴とするコントロール装置。
【請求項3】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムの各々について、前記プログラム群が、当該対象プログラムの実行管理データについてユーザによる明示、入力または設定がなされない場合、デフォルトの実行管理データを決定する、
ことを特徴とするコントロール装置。
【請求項4】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムが制御プログラムと情報プログラムを含み、
前記プログラム群が、当該制御プログラムの動作を継続し、または、停止することなく、当該情報プログラムの実行管理データを変更する、
ことを特徴とするコントロール装置。
【請求項5】
請求項1又は2に記載のコントロール装置であって、
前記1以上のネットワークポート経由でダウンロードされた各対象プログラムについて、前記プログラム群が、当該対象プログラムが使用しているリソースを監視する、
ことを特徴とするコントロール装置。
【請求項6】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムの少なくとも1つが制御プログラムであり、
当該制御プログラム又は前記プログラム群が、当該制御プログラムが使用しているリソースに応じて当該制御プログラムの実行管理データを変更する、
ことを特徴とするコントロール装置。
【請求項7】
請求項に記載のコントロール装置であって、
前記情報プログラムの実行の制限とは、前記情報プログラムのダウンロード又はインストールを拒否することである、
ことを特徴とするコントロール装置。
【請求項8】
請求項に記載のコントロール装置であって、
前記情報プログラムの実行の制限とは、以下の(A)又は(B)がされるまで、前記情報プログラムの実行を禁止することである、
(A)当該情報プログラムについて前記決定された実行管理データが示すリソース上限が、前記情報プログラムが使用可能なリソースの上限を超えること、
(B)(A)が管理者から許可がされること、
ことを特徴とするコントロール装置。
【請求項9】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムの少なくとも1つが情報プログラムであり、
前記プログラム群が、当該情報プログラムが必要とするリソースに応じてユーザからの明示無しに当該情報プログラムの実行管理データを決定する、
ことを特徴とするコントロール装置。
【請求項10】
請求項1に記載のコントロール装置であって、
前記1以上の対象プログラムの少なくとも1つが情報プログラムである場合、前記プログラム群が、
当該情報プログラムの実行管理データを変更することの許可の問合せをユーザに出し、
当該問合せに対して許可を受け付けた場合、当該情報プログラムの実行管理データを変更する、
ことを特徴とするコントロール装置。
【請求項11】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムの各々について、当該対象プログラムの実行管理データは、前記プログラム配布装置にはなく、前記記憶部に格納される、
ことを特徴とするコントロール装置。
【請求項12】
請求項1又は2に記載のコントロール装置であって、
前記1以上の対象プログラムの各々について、前記プログラム群が、当該対象プログラムの実行管理データについて、予め設定された第一の実行管理データを特定し、ユーザによる明示、入力または設定がされる場合には、前記第一の実行管理データとは異なる第二の実行管理データを特定する、
ことを特徴とするコントロール装置。
【請求項13】
1以上の制御対象装置の動作を制御するコントロール方法であって、
プログラム群が、1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラムである1以上の対象プログラムの少なくとも1つを、プログラム配布装置からネットワーク及び前記1以上のネットワークポート経由でダウンロードし、
前記プログラム群が、当該ダウンロードのタイミングと異なるタイミングで、複数の計算リソースに関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更し、
前記複数の計算リソースは、前記1以上の制御対象装置の動作の制御に関わる複数種類の計算リソースを含み、
前記複数の計算リソースは、インターフェース部、記憶部及びプロセッサ部を含み、
前記インターフェース部は、前記1以上の制御対象装置に接続された1以上のI/Oポートと、前記ネットワークに接続された1以上のネットワークポートとを含み、
前記記憶部は、1以上のメモリを含み、
前記プロセッサ部は、1以上のプロセッサを含み、
前記プログラム群は、前記1以上の制御プログラム及び前記1以上の情報プログラム以外の1以上のプログラムであり、
前記1以上の制御プログラムの各々は、前記I/Oポートに接続された制御対象装置の制御情報を出力するスキャン動作を行うプログラムであり、
前記1以上の情報プログラムの各々は、前記スキャン動作と異なる情報処理を行うプログラムであ
前記1以上の対象プログラムが制御プログラムと情報プログラムの両方を含み、
前記プログラム群が、当該情報プログラムが必要とするリソースに応じてユーザからの明示無しに当該情報プログラムの実行管理データを決定し、
前記情報プログラムが使用可能なリソースの上限が、当該情報プログラムについて前記決定された実行管理データが示すリソース上限を超えている場合、前記プログラム群が、当該情報プログラムの実行を制限する、
ことを特徴とするコントロール方法。
【請求項14】
1以上の制御対象装置の動作を制御するコントロール方法であって、
プログラム群が、1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラムである1以上の対象プログラムの少なくとも1つを、プログラム配布装置からネットワーク及び前記1以上のネットワークポート経由でダウンロードし、
前記プログラム群が、当該ダウンロードのタイミングと異なるタイミングで、複数の計算リソースに関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更し、
前記複数の計算リソースは、前記1以上の制御対象装置の動作の制御に関わる複数種類の計算リソースを含み、
前記複数の計算リソースは、インターフェース部、記憶部及びプロセッサ部を含み、
前記インターフェース部は、前記1以上の制御対象装置に接続された1以上のI/Oポートと、前記ネットワークに接続された1以上のネットワークポートとを含み、
前記記憶部は、1以上のメモリを含み、
前記プロセッサ部は、1以上のプロセッサを含み、
前記プログラム群は、前記1以上の制御プログラム及び前記1以上の情報プログラム以外の1以上のプログラムであり、
前記1以上の制御プログラムの各々は、前記I/Oポートに接続された制御対象装置の制御情報を出力するスキャン動作を行うプログラムであり、
前記1以上の情報プログラムの各々は、前記スキャン動作と異なる情報処理を行うプログラムであり、
前記1以上の対象プログラムの少なくとも1つが情報プログラムである場合、前記プログラム群が、
当該情報プログラムの実行管理データを変更することの許可の問合せをユーザに出し、
当該問合せに対して許可を受け付けた場合、当該情報プログラムの実行管理データを変更する、
ことを特徴とするコントロール方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コントロール装置に関する。
【背景技術】
【0002】
特許文献1(特開2004-362327号公報)には、「プラントの監視制御設備における監視用パーソナルコンピュータと制御用プログラマブルロジックコントローラをネットワークで接続した分散型監視制御システムにおいて、監視用汎用パーソナルコンピュータに制御用汎用プログラマブルロジックコントローラの情報管理ファイルを設け、前記制御用汎用プログラマブルロジックコントローラに、この制御用汎用プログラマブルロジックコントローラの情報自動掃出ツールを設けて、前記汎用パーソナルコンピュータに入力された情報と前記汎用制御用プログラマブルロジックコントローラのプロセス情報を汎用ソフトウェアで統合管理することを特徴とする分散型監視制御システム。」が開示されている(請求項1参照)。
【0003】
特許文献2(特開2006-178818号公報)には、「リアルタイムOSと、メモリと、ラダー言語プログラムをモーション制御周期に同期させて実行する実行手段と、前記ラダー言語プログラムとC言語プログラムの両方が動作するマイクロプロセッサとを備えたモーションコントローラにおいて、エンジニアリングツールのプロジェクト設定ファイルに従ってロードされた前記C言語プログラムがタスク型プロジェクトであれば前記リアルタイムOSのタスクとして動作させ、前記C言語プログラムが関数型プロジェクトであれば他のタスクから関数としてコール可能な状態で前記メモリに格納することを特徴とするモーションコントローラ。」が開示されている(請求項1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2004-362327号公報
【文献】特開2006-178818号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1には、「しかしながら、従来の分散型監視制御システム41は、オペレータズテーション50a~50n、ディジタル制御装置60a~60n、伝送路52a~52n、基幹伝送路42、伝送路61a~61n等が分散型監視制御システムメーカ毎の専用機器であり、高価かつ、他メーカー製品と互換性がないため、拡張性が劣り、また、近年のパソコン等汎用機器の性能向上に伴い、能力的にも専用機器を凌ぐものもあるにもかかわらず、汎用機器が使用されていない。」と記載されている(0004段落参照)。
【0006】
分散型監視制御システムメーカ毎の専用機器はプログラマブルロジックコントローラであり、このような装置構成とする背景には、プログラマブルロジックコントローラはI/Oユニット等の制御を行うものであり、工場内の生産や搬送等に用いられる装置に接続されるため、制御に遅延が生じると工場内の装置等の動作が不安定になったり、予期しない動作が生じたりする場合がある。そのため、従来のプログラマブルロジックコントローラは、複雑な処理をさせないようになっていた。特許文献1に開示される発明も同様に複雑な処理をさせないようにし、監視用汎用パーソナルコンピュータに制御用汎用プログラマブルロジックコントローラの情報管理ファイルを設けることで、プログラマブルロジックコントローラの制御に影響を与えないようにすることが開示されている。
【0007】
したがって、特許文献1は、プログラマブルロジックコントローラ内で、情報処理を行うことは考慮されていない。
【0008】
特許文献2の課題の欄には、「ラダー言語アプリケーションプログラムとC言語アプリケーションプログラムが異なるマイクロプロセッサ上で動作するため、ラダー言語アプリケーションからC言語アプリケーションプログラムを関数としてコールすることができないという問題もあった。」と記載されている。
【0009】
すなわち、特許文献2は、同一のマイクロプロセッサ上で、ラダー言語アプリケーションプログラムがC言語アプリケーションプログラムを関数としてコールすることを目的としている。
【0010】
特許文献2には、モーションコントローラとエンジニアリングツールとからなり、モーションコントローラにおいてラダー言語タスクとC言語タスクとが共存して動作し、エンジニアリングツールは、C言語のプログラムと設定ファイルとをモーションコントローラにダウンロードするシステムの発明が記載されている。
【0011】
また、モーションコントローラにラダー言語タスクとC言語タスクが共存し、ラダー言語タスクとC言語プログラムのタスクは、リアルタイムOS(Operating System)上で動作することが記載されている。
【0012】
C言語プログラムがタスク型プロジェクトであれば、リアルタイムOSのタスクとして動作し、関数型プロジェクトであれば他のタスクから関数としてコール可能な状態でモーションコントローラのメモリに格納される。
【0013】
すなわち、関数型プロジェクトであれば、他のタスク、例えばラダー言語タスクは、関数型プロジェクトのプロジェクト名称を引数として入力してC言語関数呼び出し用ファンクション・ブロックを実行する。
【0014】
つまり、ラダー言語タスクがC言語の関数型プロジェクトを呼び出し、モーションコントローラに接続された工作機械等を数値制御することとなる。
【0015】
C言語タスクは、タスク型プロジェクトのプロジェクト名称とタスクの起床や中断など操作の種別を引数として入力してタスク操作用APIをコールする。タスク操作用APIは、プロジェクト名称をタスク名称として扱いタスク操作の種別に対応したリアルタイムOSが提供する機能をコールして他のタスク型プロジェクトのタスク操作を間接的に実現することが記載されている。
【0016】
また、タスク型プロジェクトとしてロードされたC言語プログラムについては、ラダー言語プログラムの実行タイミングで、タスク型プロジェクトとしてロードされたC言語プログラムの実行制御が可能であることが記載されている。
【0017】
すなわち、タスク型プロジェクトとしてロードされたC言語プログラムは、モーション制御に同期した動作を行う用途、高度な数値計算のように処理に時間がかかるような用途に用いることができるとされている。
【0018】
つまり、モーションコントローラに接続された工作機械等を制御するためラダー言語プログラムの実行タイミングで、タスク型プロジェクトとしてロードされたC言語プログラムの実行制御を行うために利用されている。
【0019】
よって、関数型とタスク型のいずれの場合であっても、ラダー言語の一部をC言語として記述あるいはラダー言語プログラムの実行タイミングでC言語プログラムの実行制御をする。つまり、特許文献2に記載のC言語プログラムについては、モーションコントローラに接続された工作機械等を制御するために用いられる技術的思想が開示されている。
【0020】
したがって、特許文献2には、C言語プログラムを装置に接続された工作機械等のハードウェアを制御する以外の目的に利用することは考慮されていない。
【0021】
また、工作機械等を適切に制御することを維持するために、複数の計算リソースに関しプログラムが使用可能なリソースであるリソース上限を示す実行管理データを基にプログラムの実行を制御することが考えられるが、特許文献1及び2のいずれも、そのようなデータ及びそれの変更に関する技術を開示も示唆もしていない。
【0022】
本発明は以上の点を考慮してなされたもので、コントロール装置に搭載されたプログラムが使用可能なリソースであるリソース上限を示す実行管理データを適切に変更することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0023】
かかる課題を解決するため、本発明の一例を挙げるならば、1以上の制御対象装置の動作を制御するコントロール装置は、当該1以上の制御対象装置の動作の制御に関わる複数種類の計算リソースを含む複数の計算リソースを備える。複数の計算リソースは、インターフェース部、記憶部及びプロセッサ部を含む。インターフェース部は、1以上の制御対象装置に接続された1以上のI/Oポートと、ネットワークに接続された1以上のネットワークポートとを含む。記憶部は、1以上のメモリを含む。プロセッサ部は、1以上のプロセッサを含む。プログラム群(1以上の制御プログラム及び1以上の情報プログラム以外の1以上のプログラム)が、1以上の対象プログラム(1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラム)の少なくとも1つを、プログラム配布装置からネットワーク及び1以上のネットワークポート経由でダウンロードする。当該ダウンロードのタイミングと異なるタイミングで、プログラム群が、複数の計算リソースに関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更する。
【0024】
1以上の制御プログラムの各々は、I/Oポートに接続された制御対象装置の制御情報を出力するスキャン動作を行うプログラムである。
【0025】
一方、1以上の情報プログラムの各々は、スキャン動作と異なる情報処理を行うプログラムである。
【発明の効果】
【0026】
本発明によれば、コントロール装置に搭載されたプログラムが使用可能なリソースであるリソース上限を示す実行管理データを適切に変更することが可能である。すなわち、コントロール装置に搭載された複数のプログラムは当該コントロール装置が有するハードウェアリソースを適切に変更することができる。
【図面の簡単な説明】
【0027】
図1】第1の実施の形態に係るコントロール装置を含むシステムのハードウェア構成例を示すブロック図である。
図2】第1の実施の形態に係るコントロール装置を含むシステムの機能的な概略構成を示すブロック図である。
図3】実行管理テーブルのテーブル構成例を示す図である。
図4】プログラムダウンロード処理の流れの一例を示すフローチャートである。
図5】プログラム実行処理の流れの一例を示すフローチャートである。
図6A】実行管理テーブルのテーブル構成例を示す図である。
図6B】実行管理テーブルのテーブル構成例を示す図である。
図7】設定範囲テーブルのテーブル構成例を示す図である。
図8A】リソース境界とその変更の第1の例を模式的に示す図である。
図8B】リソース境界とその変更の第2の例を模式的に示す図である。
図8C】リソース境界とその変更の第3の例を模式的に示す図である。
図9】制御プログラムと情報プログラムが共存するプラットフォームの別の一例を示す。
図10】第3の実施の形態に係るコントロール装置の機能的な概略構成を示すブロック図である。
図11】実行管理データの変更の第1の例を示す図である。
図12】実行管理データの変更の第2の例を示す図である。
図13】制御プログラム及び情報プログラムの各々にとってのリソース上限の意義の一例を示す模式図である。
【発明を実施するための形態】
【0028】
以下、図面について、本発明の実施の形態について説明する。
【0029】
特に必要なとき以外は同一又は同様な部分の説明を原則として繰り返さない。所定の図に記載された符号について他の図で説明をする場合であっても同一又は同様な部分の説明は省略する。
【0030】
以下の実施の形態では便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、詳細、補足説明などの関係にある。
【0031】
以下の実施の形態において、要素の数など(個数、数値、量、範囲などを含む)に言及する場合、特に明示した場合及び原理的に明らかに特定の数に限定される場合などを除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良いものとする。
【0032】
以下の実施の形態において、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェース装置であっても良いし2以上の異種のインターフェース装置であっても良い。
【0033】
以下の実施の形態において、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリで良い。記憶部は、主に、プロセッサ部による処理の際に使用される。記憶部は、メモリの他に、1以上の不揮発性の記憶装置(例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive))を含んでも良い。
【0034】
以下の実施の形態において、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでも良い。1以上のプロセッサの各々は、シングルコアでも良いしマルチコアでも良い。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでも良い。
【0035】
以下の実施の形態において、「kkk部」(インターフェース部、記憶部及びプロセッサ部を除く)の表現にて機能を説明することがあるが、機能は、1以上のコンピュータプログラム(後述の制御プログラム及び情報プログラムを除く)がプロセッサ部によって実行されることで実現されても良いし、1以上のハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))によって実現されても良い。プログラムがプロセッサ部によって実行されることで機能が実現される場合、定められた処理が、適宜に記憶部及び/又はインターフェース部等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされても良い。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としても良い。プログラムは、プログラムソースからインストールされても良い。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であっても良い。各機能の説明は一例であり、複数の機能が1つの機能にまとめられたり、1つの機能が複数の機能に分割されたりしても良い。
【0036】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでも良いし、入力に対する出力を発生するニューラルネットワークのような学習モデルでも良い。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されても良いし、2以上のテーブルの全部又は一部が1つのテーブルであっても良い。
【0037】
以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。
【0038】
コントロール装置は、シーケンス制御装置、モーション制御装置又はプログラマブル・ロジック・コントローラ(PLC)とも呼ばれている。コントロール装置において、ラダー・ロジック(LD言語)、シーケンシャル・ファンクション・チャート(SFC言語)、ファンクション・ブロック(FBD言語)、ストラクチャード・テキスト(ST言語)、インストラクション・リスト(IL言語)のような制御装置特有のプログラミング言語、あるいはC言語のような情報通信分野で使われる汎用的なプログラミング言語を用いて記述され、シーケンス制御やモーション制御に代表される制御処理を実行するプログラムを「制御プログラム」と呼ぶ。制御プログラムは、I/Oモジュール等を介して実際にモータ等を含む周辺機器を操作し、生産システム等を適切に動作させる必要がある。そのため、制御プログラムは、処理を設定された時間内に確実に実行すること(リアルタイム性)が求められる。
【0039】
制御プログラムは、制御内容が記述された命令によって制御対象装置(例えば、装置部品のようなハードウェアモジュール、1以上のハードウェアモジュールを備えた装置、又は、複数の装置を備えたシステム)を制御する。例えば、「I/Oモジュール等を介して実際にモータ等を含む周辺機器を操作し、生産システムを適切に動作させる」といった制御では、「生産システム」、又は、「生産システムを構成する少なくとも1つの装置」が、「制御対象装置」である。制御対象装置は、典型的には、コントロール装置におけるI/O制御装置(インターフェース部の一例)経由で接続された装置である。制御対象装置は、制御プログラムから直接的に(例えば、コントロール装置に接続されたI/Oモジュールや周辺機器を介さずに)制御されても良いし、制御プログラムから間接的に(例えば、コントロール装置に接続されたI/Oモジュールや周辺機器を介して)制御されても良い。
【0040】
制御対象装置を制御する言語は、ラダー言語等の制御特有のプログラミング言語に限らず、C言語等の汎用プログラミング言語で記述される場合もあるため、制御対象装置(典型的にはハードウェア)を制御するプログラムを「制御プログラム」と呼ぶ。
【0041】
ラダー言語等で記述された制御プログラムは、当該ラダー言語等の記述において指定された制御対象装置の状態を読み込み又は書き込み(取得又は更新)をする「スキャン動作」を行う。
【0042】
このスキャン動作は所定間隔で行う必要があり、この所定間隔を「スキャンタイム」と呼ぶ。スキャンタイムは、制御プログラムの演算時間に関するものであり、制御に関する演算周期又は制御に関する演算を繰り返し所定間隔で行うことから「サイクルタイム」とも呼ばれることもある。
【0043】
コントロール装置に接続される制御対象装置は、例えば、工場内の生産や搬送等に用いられる装置に接続されるため、スキャン動作が遅れると、工場内の装置等の動作が不安定になったり、予期しない動作が生じたりする場合がある。このため、所定のスキャンタイム内にスキャン動作を行う必要がある。
【0044】
スキャンタイムはコントロール装置が制御する制御対象装置の数や種類の増加に応じて長くなるが、スキャンタイム内で制御対象装置のスキャン動作をすることが重要である。
【0045】
コントロール装置に、I/O(Input/Output)ポートが内蔵又は接続される。I/Oポートは、I/Oモジュール又はI/Oユニット等が有する場合がある。以下、I/Oポートそれ自体、又は、I/Oポートを有する装置(I/Oモジュール又はI/Oユニット等)を、「I/Oポート」と総称する場合がある。
【0046】
I/Oポートは、制御対象装置、例えば、生産設備におけるベルトコンベア、リミットスイッチ、アクチュエータ(例えばモータ)に接続され、制御対象装置の動作に関する制御に使用されるものである。I/Oポートは、デジタル又はアナログのI/Oポートである。例えば、アナログI/Oポートは、コントロール装置の制御対象装置の電圧、電流、温度等の情報の読み書きに使用される。
【0047】
制御プログラムに基づいてコントロール装置のI/Oポートから送信される制御情報を有線又は無線で受信するインバータユニットやCNC(Computerized Numerical Control)はインバータやCNC自体がアクチュエータのモーション制御を行うため、リアルタイム性が求められる。
【0048】
また、制御対象装置の制御とは、制御対象装置が接続されている状態のI/Oポートの動作を制御することをいう。つまり、制御プログラムとは、制御対象装置が接続されたI/Oポートの制御を行うプログラム、言い換えれば、制御対象装置が接続されたI/Oポートに当該制御対象装置の制御情報を出力する(具体的には、例えば、当該制御情報の出力を含むスキャン動作を行う)プログラムである。
【0049】
このようなコントロール装置において、制御対象装置の制御に加えて、情報処理(例えば、複雑な算術演算やSCADA、MES、クラウドシステムとの情報の送受信のような情報通信処理)を行うことを検討する。このような情報処理は、上述の制御特有の言語でプログラミングすることが困難な場合があり、C言語又はJava(登録商標)言語などの情報処理分野で使われるプログラミング言語を用いて記述することがある。このような情報処理を実行するプログラムを「情報プログラム」と呼ぶ。
【0050】
制御プログラムと情報プログラムの違いの一例について説明する。
【0051】
上記したように制御プログラムは、コントロール装置のI/Oポートの制御に関係したプログラムであり、情報プログラムは、情報処理(例えば、上述のように、算術演算や、クラウドとの通信)を行うプログラムである。
【0052】
制御プログラムは、ラダーやST言語等で記述され、java(登録商標)やpython等に代表される汎用言語に比べてリアルタイム性が高い。情報プログラムは、java(登録商標)やpython等に代表される言語で記述され、ラダー等よりも情報処理に適している。
【0053】
C言語等のリアルタイム性が高く、ハードウェアの制御にも適しており、また、情報処理にも適した言語は制御プログラムと情報プログラムのいずれにも利用可能な場合がある。
【0054】
また、情報プログラムは、先に説明した制御プログラム以外のプログラム(但し、例えば、後述のタスク管理部110、制御プログラム実行部111、情報プログラム実行部112及びI/O制御部117を実現するための1以上のプログラムを除く)である。制御対象装置がI/Oポートを介してコントロール装置に接続されるが、情報プログラムは、制御対象装置に接続されるアナログやデジタルのI/Oポート(但し、情報プログラムとの共有が許容されているI/Oポートを除く)へアクセスしないプログラムである。別の言い方をすれば、制御プログラムは、制御対象装置に接続されるアナログやデジタルのI/Oポートに制御対象装置の制御情報を送信することを含むスキャン動作を行うプログラムであるが。一方、情報プログラムは、スキャン動作を含まない(スキャン動作とは異なる)情報処理を行うプログラム(つまり、スキャン動作を行うことがないプログラム)である。
【0055】
制御プログラムと情報プログラムを搭載する以下の実施の形態に係るコントロール装置は、制御プログラムの他に情報プログラムを実行しても、制御プログラムを停止させることなく、又は、制御プログラムのスキャン動作を遅らせたり、制御プログラムの予期しない動作をさせたりすることなく、情報プログラムの追加、削除、更新(書き換え)又は入れ替えといったプログラム変更を行うことを実現するものである。
[第1の実施の形態]
【0056】
第1の実施の形態について図1等を用いて説明する。
【0057】
図1は、第1の実施の形態に係るコントロール装置を含むシステムのハードウェア構成例を示すブロック図である。
【0058】
プログラム配布装置101、コントロール装置109、1以上の管理ユーザ計算機151M及び1以上の一般ユーザ計算機151Gが情報ネットワーク108に接続されている。また、コントロール装置109及び1以上のI/Oモジュール119(I/Oポートの一例)が制御ネットワーク118に接続されている。情報ネットワーク108は、情報プログラムが行う情報通信処理(つまり、制御情報の送信とは異なる通信処理)の際に使用される通信ネットワークである。制御ネットワーク118は、制御プログラムが行う制御情報送信の際に使用される通信ネットワークである。情報ネットワーク108及び制御ネットワーク118は、異種のネットワークでも良いし、同種のネットワーク(例えばいずれもLAN(Local Area Network))でも良い。また、情報ネットワーク108の少なくとも一部と制御ネットワーク118の少なくとも一部が一体であっても良い。
【0059】
管理ユーザ計算機151Mは、少なくとも管理ユーザが操作する計算機である。一般ユーザ計算機151Gは、少なくとも一般ユーザが操作する計算機である。いずれの計算機も、プログラム配布装置101及びコントロール装置109の少なくとも1つに対する入出力コンソールとして機能する。具体的には、例えば、いずれの計算機も、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとを有する。「管理ユーザ」は、制御プログラムを記述するユーザ(例えば、自動機械や生産設備といった制御対象に関して深い知識を有する技術者)であり、「一般ユーザ」は、情報プログラムを記述するユーザ(例えば、制御対象に関して深い知識を持たない一般的なシステムエンジニア)である。コントロール装置109が、管理ユーザ計算機151M及び一般ユーザ計算機151Gのうちの少なくとも1つから制御プログラム及び情報プログラムの少なくとも1つについての記述(パラメータ群の設定を含む)を受け付けても良いし、コントロール装置109に代えて又は加えて、プログラム配布装置101が、当該記述を受け付けても良い。以下、管理ユーザ及び一般ユーザを「ユーザ」と総称することがある。ユーザは、管理ユーザ及び一般ユーザのいずれかに代えて、システム管理者(例えば、プログラム配布装置101とコントロール装置109で構成されたシステムであるコントロールシステムの管理者)といった別種のユーザであってもよい。
【0060】
1以上のI/Oモジュール119に1以上の周辺機器120が接続されている。周辺機器120は、センサ及びドライブなどの少なくとも1つの機器である。I/Oモジュール119は、周辺機器120が必要に応じて着脱可能に装着されるバススロットとして機能する。制御対象装置は、周辺機器120経由又は非経由でI/Oモジュール119に接続される。制御対象装置とI/Oモジュール119は、1:1、1:多、多:1及び多:多のいずれでも良い。また、一部のI/Oモジュール119は、制御ネットワーク118に加えて情報ネットワーク108に接続されても良い、すなわち、当該一部のI/Oモジュール119は、制御プログラムと情報プログラムに共有のデバイスであっても良い。
【0061】
プログラム配布装置101は、制御プログラム及び情報プログラムを管理している。プログラム配布装置101は、EPROM201、CPU202、メインメモリ203、周辺制御装置205、不揮発性記憶装置206及びネットワークインターフェース(図示のネットワークI/Fに相当)207を備える。プログラム配布装置101は、ネットワークインターフェース207を介して情報ネットワーク108に接続されている。
【0062】
プログラム配布装置101は、周辺制御装置205の制御によって情報ネットワーク108を経由してコントロール装置109に対して制御プログラムを提供したり情報プログラムを提供したりする。このプログラム配布装置101では、CPU202の制御によって、不揮発性記憶装置206に予め格納されている制御プログラム及び情報プログラムを要求に応じて提供する。
【0063】
周辺制御装置205は、バス204を介してEPROM201、CPU202及びメインメモリ203に接続されている。CPU202は、EPROM201に予め格納されている管理プログラムをメインメモリ203上に読み出して実行し、この管理プログラムによって上記制御プログラム及び情報プログラムを管理している。
【0064】
この管理プログラムは、要求に応じて逐次、上述した制御プログラム及び情報プログラムのうち少なくとも一方のプログラムを提供する。この管理プログラムがCPU202によって実行されることにより、後述するプログラム配布部102及び実行管理データ生成部103が実現される。
【0065】
一方、コントロール装置109は、EPROM208、CPU209、メインメモリ210、周辺制御装置212、I/O制御装置214、不揮発性記憶装置215及びネットワークインターフェース(図示のネットワークI/Fに相当)213を備えている。I/O制御装置214及びネットワークI/F213が、インターフェース部の一例である。EPROM208、メインメモリ210及び不揮発性記憶装置215が、記憶部の一例である。CPU209及び周辺制御装置212がプロセッサ部の一例である。コントロール装置109では、プログラム配布装置101から提供される制御プログラム及び情報プログラムが同一のプラットフォーム上で共存しつつ動作する。
【0066】
周辺制御装置212は、ネットワークI/F213、I/O制御装置214、不揮発性記憶装置215及びバス211に接続されている。このバス211には、その他にもEPROM208、CPU209及びメインメモリ210が接続されている。
【0067】
EPROM208には、初期状態で予めコントロール装置109に用意されている制御プログラム及び情報プログラムが格納されている。CPU209は、複数のコアを備えており、各コアを独立させて動作させることができる。
【0068】
コントロール装置109に搭載される制御プログラムと情報プログラムはそれぞれひとつずつだけでなく、コントロール装置109が使用できるリソースをプログラムごとに設定することにより、複数の制御プログラム及び/又は複数の情報プログラムを搭載することができる。
【0069】
CPU209は、EPROM208に予め格納されている制御プログラム及び情報プログラムをメインメモリ210に読み出して実行し、これら制御プログラム及び情報プログラムの動作を制御する。
【0070】
すなわち、これらの制御プログラム及び情報プログラムが読み出されて実行されると、後述する図2の制御プログラム114及び情報プログラム115となる。
【0071】
制御プログラム114と情報プログラム115は異なる役割を有する。
【0072】
制御プログラム114は、コントロール装置109のI/Oモジュール119にアクセスし、制御対象装置を制御する。また、制御プログラム114は、読み込んだ結果を基に演算を行い、制御対象装置の制御のために、当該演算結果に基づくアクセスを、I/O制御装置214に対して行っても良い。制御プログラム114は、制御対象装置の制御のために、当該制御対象装置が接続されたネットワークI/F213に対するアクセスを行っても良い。すなわち、I/Oモジュール119に代えて又は加えて、I/O制御装置214及びネットワークI/F213の少なくとも1つも、「I/Oポート」の一例となり得る。つまり、制御プログラム114は、制御対象装置の制御のために(制御対象装置の制御情報の送信のために)、当該制御対象装置が接続されたI/Oポートに対するアクセスを行う、言い換えると、当該I/Oポートを制御する命令を送信する。
【0073】
一方、情報プログラム115は、I/O制御装置214等の情報を取得し、演算し、演算した結果を、ネットワークI/F213を介して、コントロール装置109に接続されている他の装置又は設備に送信する。この段落で言う「他の装置又は設備」は、コントロール装置109に接続されているが制御プログラム114の制御対象装置とは異なる装置又は設備である。
【0074】
コントロール装置109は、制御プログラム114と情報プログラム115の両者がアクセスできる共有領域(図示しない)を有することができる。この共有領域は、メインメモリ210及び不揮発性記憶装置215に確保されて良い。共有領域は、例えば、共有ディレクトリといった論理的な記憶領域でもよいし、物理アドレス(例えばメモリアドレス)で指定された物理的な記憶領域でもよい。例えば、制御プログラム114が、情報プログラム115に見せてもよいデータの値を共有領域に読み書きするタスクを生成し、当該タスクが実行されることで、情報プログラムから、当該共有領域内のデータの値にアクセス可能になって良い。「見せてもよいデータの値」とは、広義には、1以上の情報プログラム115と共有する情報である共有情報である。共有情報は、例えば、I/Oポートの状態を示す(又は、I/Oポートに関して他種の情報を含んだ)ポート情報や、制御プログラムの内部変数等に関する制御プログラム情報が挙げられる。共有領域は、例えば、後述のタスク管理部110により設けられてもよいし、同一の共有領域にアクセスする制御プログラム114及び情報プログラム115の少なくとも1つにより設けられてもよい。
【0075】
このように、情報プログラム115が、制御プログラム114の制御対象装置が接続されたI/Oポートに直接アクセスすることを防止できるため安全性が向上する。言い換えれば、情報プログラム115が、制御プログラム114の制御対象装置が接続されたI/Oポートに直接アクセスすることに代えて、共有領域内の共有情報を参照することで、I/Oポートの状態、又は、制御プログラム114の状態を知ることができる。
【0076】
また、情報プログラム115は、ネットワークI/F213を介して接続されているが制御プログラム114の制御対象装置ではない設備又は装置から情報を受信しても良い。情報プログラム115は、この受信した情報等を演算し、ネットワークI/F213を介して他の装置又は設備と通信することができる。
【0077】
CPU209は、周辺制御装置212を制御してネットワークI/F213を介してプログラム配布装置101からの制御プログラム及び情報プログラムのダウンロードを制御する。
【0078】
CPU209は、周辺制御装置212を制御してI/O制御装置214及び複数のI/Oモジュール119を介して複数の周辺機器120を制御する。周辺機器120は、I/Oモジュール119に1:1で対応付けられており、CPUは、例えば、I/Oモジュール119と1:1のデジタルI/Oレジスタを管理し、レジスタ操作で逐一I/Oモジュール119の操作が可能となっている。
【0079】
図2は、第1の実施の形態に係るコントロール装置を含むシステムの機能的な概略構成例を示すブロック図である。
【0080】
プログラム配布装置101は、プログラム管理データベース(図示のプログラム管理DBに相当)104、プログラム配布部102及び実行管理生成部103を備えている。プログラム管理DB104は、メインメモリ203及び不揮発性記憶装置206の少なくとも一部に基づく。これらプログラム配布部102及び実行管理生成部103は、既述の管理プログラムがCPU202に実行されることにより実現される。
【0081】
プログラム管理データベース104は、制御プログラム105及び情報プログラム106を管理する。実行管理生成部103は、制御プログラム105及び情報プログラム106のうち少なくとも一方のプログラムがコントロール装置109において実行される際のパラメータを表す実行管理データを生成する。この実行管理データは、例えば、制御プログラム105及び情報プログラム106の各タスクの優先度、及び、制御プログラム105及び情報プログラム106ごとに使用可能な上限記憶容量のような1以上のパラメータである。
【0082】
プログラム配布部102は、要求に応じて上記少なくとも一方のプログラムを提供する際に併せて上記少なくとも一方のプログラムに対応するパラメータ値を示す実行管理データを提供する。
【0083】
コントロール装置109は、シーケンス制御装置、モーション制御装置、又はプログラマブル・ロジック・コントローラ(PLC)とも呼ばれることがある。ラダー・ロジック(LD言語)、シーケンシャル・ファンクション・チャート(SFC言語)、ファンクション・ブロック(FBD言語)、ストラクチャード・テキスト(ST言語)、インストラクション・リスト(IL言語)のような制御特有のプログラミング言語で制御内容が記述される。また、場合により、C言語等の汎用プログラミング言語での記述が、ラダー言語等での記述の一部又は全部に差し替えられても良い。
【0084】
このようなコントロール装置109に接続される制御対象を制御する制御プログラム105(114)は、ラダー言語を代表とする制御特有のプログラミング言語を用いることが有効である。ラダーの表示が可能であり、制御対象の状態の監視等に有効である。
【0085】
一方、情報プログラム106(115)は、このようなコントロール装置109における情報処理(例えば、複雑な算術演算や、SCADA、MES、クラウドシステムとの情報の送受信のような情報通信処理)に有効である。
【0086】
このような情報処理は、制御特有の言語でプログラミングすることが困難な場合があり、いわゆるC言語又はJava(登録商標)言語などの情報通信分野で使われるプログラミング言語を用いて記述する場合がある。
【0087】
プログラム管理データベース104は、上述した制御内容を実行する機能を有する制御プログラム105、及び、上述した情報処理を実行する機能を有する情報プログラム106を管理している。
【0088】
コントロール装置109は、タスク管理部110、制御プログラム実行部111、情報プログラム実行部112、実行管理テーブル113及びI/O制御部117を備えている。
【0089】
制御プログラム実行部111は、例えばランタイムライブラリであり、制御プログラム114からの呼び出しに応じて制御プログラム114とともに動作する。情報プログラム実行部112は、例えばいわゆるライブラリであり、情報プログラム115からの呼び出しに応じて情報プログラム115とともに動作する。
【0090】
なお、制御プログラム114は、プログラム配布装置101からコントロール装置109に配布済みの制御プログラム105(又は当該制御プログラム105の実行に伴い生成された1以上のタスク)に相当し、情報プログラム115は、プログラム配布装置101からコントロール装置109に配布済みの情報プログラム106(又は当該情報プログラム106の実行に伴い生成された1以上のタスク)に相当する。
【0091】
実行管理テーブル113は、プログラム配布装置101から提供された上記少なくとも一方のプログラムとともに受け取った上記実行管理データが保存される。
【0092】
一方、タスク管理部110は、主として2つの機能、具体的には、プログラム受信機能及びプログラム実行管理機能を有する。プログラム受信機能は、要求に応じてプログラム配布装置101から提供される上記少なくとも一方のプログラムを受信する機能である。一方、プログラム実行管理機能は、上記少なくとも一方のプログラムを実行する際に、実行管理テーブル113に保存された実行管理データに基づいて上記少なくとも一方のプログラムの実行を制御する機能である。
【0093】
I/O制御部117は、制御プログラム114からの制御情報を当該制御情報の送信先に転送する。
【0094】
上述したようにコントロール装置109は、制御プログラム114及び情報プログラム115の各タスクが使用する所定の記憶容量の記憶領域を有するメインメモリ210を備える。
【0095】
ここで、プログラム配布装置101では、実行管理生成部103が、実行管理データとして少なくとも、制御プログラム105及び情報プログラム106の各タスクの優先度、及び、制御プログラム105及び情報プログラム106の各タスクによって使用可能なメインメモリ210の上限記憶容量の少なくとも一方のパラメータ値を示す実行管理データを生成する。
【0096】
図3は、図2に示す実行管理テーブル113のテーブル構成例を示す。
【0097】
実行管理テーブル113は、制御プログラム114及び情報プログラム115の各々について、エントリを有する。各エントリは、例えば、プログラム名301、プログラム種別302、タスク優先度303、実行周期304、メモリ上限305、CPUコア番号306、利用デバイス307及び専有デバイス308といった情報を格納する。以下、1つのプログラムを例に取る(図3の説明において「対象プログラム」)。
【0098】
プログラム名301は、対象プログラムの名称を表している。プログラム種別302は、対象プログラムが制御プログラム114であるか情報プログラム115であるかというプログラムの種別を表している。なお、上述したプログラム名301の先頭3文字においても、制御プログラム114であるか情報プログラム115であるかを識別可能である。「CTL」は制御プログラム114を表しており、「ICT」は情報プログラム115を表している。以下、制御プログラム114及び情報プログラム115の各々を、プログラム名で表現することがある。
【0099】
タスク優先度303は、対象プログラムに対応するタスクの優先度を表している。タスク優先度303では、例えば「0(優先度:高)」から「20(優先度:低)」までの間で優先度が設定可能である。つまり、タスク優先度303としての値が小さいほど優先度が高い。
【0100】
実行周期304は、対象プログラムにおける定常処理が実行される周期を表している。「実行周期」とはスキャンタイムである。図示の例によれば、CTL001のスキャンタイムが10msecであり、CTL002のスキャンタイムは1msecでる。スキャン動作は、制御プログラム114及び情報プログラム115のうちの制御プログラム114に特有の動作であるため、実行周期304は、制御プログラム114について有効な値であるが、情報プログラム115については無効な値である。実行周期304(スキャンタイム)は、エンジニアリングツールでシミュレーションによって特定された値、又は、実際にコントロール装置109にて制御プログラム114を実行することにより特定されたスキャンタイムであっても良い。
【0101】
メモリ上限305は、対象プログラムがメインメモリ203の記憶領域において使用可能な記憶容量の上限を表している。
【0102】
CPUコア番号306は、コントロール装置109のCPU209に搭載されている複数のコアのうちの対象プログラムに割り当てるコアの番号を表している。
【0103】
利用デバイス307は、対象プログラムが利用可能なデバイスである利用デバイス、具体的には、対象プログラムが利用可能なI/Oモジュール119(I/Oモジュール119に接続されている利用可能な周辺機器120)を表している。
【0104】
専有デバイス308は、対象プログラムに対応した利用デバイス307が表す1以上の利用デバイス(I/Oモジュール119)のうち対象プログラムに専有されるデバイスである専有デバイス(すなわち、対象プログラムが他の制御プログラム114又は情報プログラム115と共有不可のI/Oモジュール119)を表す。
【0105】
図示の例によれば、例えば、下記のことが言える。
【0106】
CTL001は、制御プログラムである。CTL001について、例えば次の通りである。すなわち、タスク優先度は、CTL002よりも低く設定されている。また、メモリ上限は16MBであり、使用するCPUコアの番号は0である。利用デバイスはDI1とDO1(コントロール装置のデジタル入力1とデジタル出力1)である。
【0107】
DI1とDO1を、他のプログラムが使用しないようにCTL001が専有して利用するように設定されている。コントロール装置において、専有デバイス(専有デバイス308として設定されたデバイス)が複数のプログラム間で共有されないため、専有デバイス(ここではDI1とDO1)に関係する制御が不安定になることを防止することができる。
【0108】
また、CTL002は、利用デバイスがeth1、eth2、シリアル1である制御プログラム、具体的には、Ethernet(登録商標)のポートを2つ、RS-232Cのポートを1つ利用する制御プログラムである。また、CTL001よりもCTL002の方がリアルタイム性が高いため、タスク優先度は、CTL001よりも高い。
【0109】
CTL002は、eth2が例えばモーション制御に利用されるデバイスである場合を示す。モーション制御はリアルタイム性が高く他の処理も優先されるため、4つのプログラムの中で最も優先度が高く設定されている。
【0110】
また、CTL002が使用するCPUコアの番号は1であり、CTL001とICT001とICT006の使用するCPUコアの番号が0であることから、CTL002は、番号が1のCPUコアを専有する。
【0111】
CTL002は、タスク優先度303に規定される優先度のみならず、CPU209が有する複数のコアのうち番号1のコアを専有する観点からも、優先度が高いことがわかる。このような設定を行うことで、CTL002が制御プログラムの中でも優先度を高い状態とすることができる。
【0112】
次に、メモリ上限305について説明する。
【0113】
メモリ上限が設定されない場合には、実際に演算を行う際に各プログラムが際限なくメモリを確保し使用することが可能となる。例えば、情報プログラムが使用できるメモリ上限が設定されない場合には、制御プログラムが使用する可能性があるが確保されていない領域を情報プログラムが確保する場合がある。しかし、例えば、大量にメモリを使用するプログラムを追加した場合、当該プログラムの追加に伴いシステム全体のメモリを使い切ってしまうような場合が起こりうる。このような場合、コントロール装置又はOSがダウンすることで制御プログラムの動作が停止したり、OSによる強制的なメモリ開放機能の発動により制御プログラムの処理が妨げられスキャンタイム内にスキャン動作を完了できなくなったりといったような場合がある。
【0114】
そこで、本実施の形態では、メモリ上限305の合計値をコントロール装置のシステム全体で利用できる値以下とすることでコントロール装置等のダウンを防止することができる。
【0115】
なお、システム全体で利用できる値は、コントロール装置に搭載されたメモリからOS等で使用された部分を除いた値であることが望ましい。OS等の領域に制御又は情報プログラムの処理が影響を与えないようにするためである。
【0116】
また、プログラムごとにメモリ上限305の値を設定することにより、もしあるプログラムに想定以上のメモリを使用してしまう不具合があった場合には、当該プログラムのみが停止し他のプログラムに影響を与える事を防止できる。
【0117】
次に、タスク優先度303について説明する。
【0118】
タスク優先度は、各プログラムが実行させる場合の優先度である。各プログラムにタスク優先度を設定することにより、OSのスケジューラ等にプログラムへのCPU割当ての優先順位を認識させることができる。
【0119】
複数のプログラムを、明示的にタスク優先度を設定せずに実行すると、あらかじめOSのスケジューラが有するルールにしたがってCPU割当てのようなリソース割り当てが行われる。例えば、複数のプログラムに平等にCPUの割当てが行われるようなスケジューリングが行われる。
【0120】
このようなスケジューリングは、制御プログラムのようなスキャンタイム内に確実に処理を終えることが重要であるプログラムの場合、他のプログラムの動作によってスキャンタイム内に処理を終えることができなくなるなど、制御プログラムの動作に影響を及ぼす場合がある。
【0121】
例えば、第1のプログラムの処理実行(CPU割当て)中に、タイマ割込み等により第1のプログラムよりも相対的にタスク優先度の高い第2のタスクの処理開始要求が発行されると、第1のプログラムの処理が中断されて第2のプログラムの処理が開始される。その後第2のプログラムがSleep等によりCPUの割当てを終了すると第1のプログラムの処理が再開される。
【0122】
また、例えば、第1のプログラムの処理実行(CPU割当て)中に、タイマ割込み等により第1のプログラムよりも相対的にタスク優先度の低い第3のタスクの処理開始要求が発行されると、第1のプログラムがSleep等によりCPUの割当てを終了するまで第3のプログラムの処理開始が待たされる。
【0123】
したがって、タスク優先度303を設定することで、より優先度の高いプログラムの処理を優先して行うことができる。
【0124】
これにより、ユーザがより重要性が高いと判断したプログラムを優先して処理させることができる。情報プログラムをコントロール装置で処理し、情報プログラムが複雑な計算を行う場合であっても、制御プログラムに影響を与えないようにすることができる。
【0125】
ICT001とICT002は、実行周期304であるスキャンタイムが設定されていないが、制御プログラムに比べて情報プログラムのタスク優先度が低いため、制御プログラムの計算にCPUコアを利用していない時間(例えば、空いている時間)に情報プログラムの処理を行うことができる。これにより、制御プログラムの処理に影響を与えることなく情報プログラムを処理することができる。
【0126】
ICT001とICT002は、利用デバイスがeth1であり、eth1は専有設定されていない。そのため、eth1のポートについては、ICT001とICT002が共有して利用可能である。
【0127】
ICT001とICT006がeth1を同時に使用しようとした場合には、タスク優先度303が高いICT001が先にeth1を使用する。ICT001がeth1の使用を終了した際に、タスク優先度303が高いICT006がeth1を使用することが可能となる。このように、プログラムそれぞれがタスク優先度に応じた処理が可能となる。
【0128】
図4は、コントロール装置109がプログラム配布装置101から所望のプログラムをダウンロードするプログラムダウンロード処理の一例を示すフローチャートである。
【0129】
まず、プログラム配布装置101では、図示しない操作画面を用いたユーザの操作に応じて、ダウンロードすべきプログラムが選択される(ステップS401)。これにより、プログラム配布部102は、対応する特定のプログラムをプログラム管理データベース104において特定する。
【0130】
次にプログラム配布装置101では、操作画面においてユーザの操作に応じて上記特定のプログラムについて実行管理データが設定される(ステップS402)。この実行管理データには、例えば図3に示すようにタスク優先度303が含められている。
【0131】
これにより、実行管理生成部103は、ユーザの入力内容に応じて上記特定のプログラムの動作態様に関するパラメータとして、例えば、各プログラムの各タスクが実行される際の優先度、及び、各タスクが使用可能なメインメモリ210内の上限記憶容量の少なくとも一方のパラメータを設定することができる。
【0132】
以下、一例として主として優先度を取り上げて説明する。以上までが、プログラム配布装置101における処理を表しており、これ以降はコントロール装置109における処理を表している。
【0133】
プログラム配布装置101は、コントロール装置109の要求に応じて、上記特定のプログラム及びこれに対応付けられた実行管理データをコントロール装置109にダウンロードする(ステップS403)。
【0134】
次にコントロール装置109では、タスク管理部110が、上記ダウンロードされた上記特定のプログラムを受信する(既述のプログラム受信機能に相当)。タスク管理部110は、受信が完了すると、上記特定のプログラムが制御プログラムである場合には制御プログラム114としてメインメモリ210に保存する(ステップS404)。
【0135】
次にコントロール装置109では、タスク管理部110が上記特定のプログラムとともにダウンロードした実行管理データを実行管理テーブル113に追記する(既述のプログラム実行管理機能に相当)(ステップS405)。
【0136】
図5は、プログラム実行処理の一例を示すフローチャートである。このプログラム実行処理は、コントロール装置109において上記特定のプログラムが実行される場合の処理内容を表している。
【0137】
タスク管理部110は、ある所定のプログラムを新たに実行しようとした際、実行管理テーブル113から当該所定のプログラムに対応する実行管理データを読み出す(ステップS501)。
【0138】
当該所定のプログラムに対応する実行管理データとしては、実行管理テーブル113における優先度303において管理している当該所定のプログラムの各タスクが実行される際における優先度を含む。
【0139】
次にタスク管理部110は、当該読み出された実行管理データに基づいて当該所定のプログラムのパラメータとして、例えば、当該所定のプログラム(制御プログラム105及び情報プログラム106の少なくとも一方のプログラム)の各タスクの優先度を設定したり、各タスクが使用可能なメインメモリ210の上限記憶容量を設定又は特定したりする(ステップS502)。
【0140】
タスク管理部110は、このような優先度を所定のコマンドを用いて設定する。一方、タスク管理部110は、上述した上限記憶容量を設定する。
【0141】
以上のような実施の形態によれば、同一プラットフォーム(つまりコントロール装置109)に共存する制御プログラム114及び情報プログラム115が当該プラットフォーム上でそれぞれ対応するパラメータに応じて動作するようになる。タスク管理部110が、制御プログラム114及び情報プログラム115を、当該プログラム114及び115の各々のタスク優先度などのパラメータ値を基に制御プログラム実行部111及び情報プログラム実行部112を制御することで、当該プログラム114及び115の各々の実行を制御する(ステップS503)。
【0142】
この場合は、情報プログラム115であるICT001とICT002が所定のリソースで動作する。また、制御プログラム114であるCTL001とCTL002が所定のリソースでICT001とICT002よりも高い優先度で動作する。
【0143】
実行管理テーブル113を適宜変更することによって、制御プログラム114及び情報プログラム115は、互いに、例えばタスクの追加、更新又は削除のような機能変更に際し、他のプログラムが動作したまま、一部の制御プログラム114又は情報プログラム115を変更することができる。
【0144】
また、情報プログラム115は、所定のリソースが確保された場合であって、他のプログラムとの影響がない場合には再コンパイルや再ダウンロードを必要とせず実行管理テーブル113を変更しても動作させることができる(再コンパイルや再ダウンロードが必要となる一比較例については後述する)。
【0145】
このため、制御プログラム114及び情報プログラム115の各タスクの追加、更新及び削除のいずれの機能的な変更も行い易くなるため、コントロール装置109は柔軟な機能変更を可能とする。
[第2の実施の形態]
【0146】
第2の実施の形態について図3等を用いて説明する。その際、第1の実施の形態と異なる点を中心として説明し、第1の実施の形態と共通する点については説明を省略又は簡略する。
【0147】
第2の実施の形態では、上述した操作画面(図示せず)に、図3に示す実行管理テーブル113に基づいて、上述した各プログラムが使用可能なメインメモリ210の上限記憶容量に応じて導き出される残りリソース、例えば、各プログラムが使用可能なメインメモリ210の残容量が表示される。
【0148】
プログラム配布装置101では、上述した操作画面において所定の操作に応じて、例えば残りリソースなどが選択されると、当該残りリソースを含むパラメータ値を示す実行管理データを、選択されたプログラムとともにコントロール装置109にダウンロードする。
【0149】
コントロール装置109では、タスク管理部110が、当該選択されたプログラムとともに上記実行管理データを受け取り、この実行管理データを実行管理テーブル113に登録する。
【0150】
当該選択されたプログラムが制御プログラム114であれば、制御プログラム実行部111が、上記実行管理データに基づく残りリソースをパラメータ値として、当該選択されたプログラムである制御プログラム114を実行する。
【0151】
一方、当該選択されたプログラムが情報プログラム115であれば、情報プログラム実行部112が、上記実行管理データに基づく残りリソースをパラメータ値として、当該選択されたプログラムである情報プログラム115を実行する。
【0152】
以上のような構成とすると、第1の実施の形態と同様な効果を得ることができるとともに、さらに、そのような各タスクが使用可能なメインメモリ210の残りリソースに接したユーザが適切な情報に基づいてダウンロード設定を行うことができるとともに、上述した選択されたプログラムが既存のプログラムに影響を与えないようにすることができる。
[幾つかの変形例]
【0153】
次に、変型例について説明する。上述した第1及び第2の実施の形態のうちの少なくとも1つでは、次のような変型例のうちの少なくとも1つを採用することができる。
【0154】
第1の変型例としては、例えばハイパバイザ等を利用してOS層から分けるようにしても良い。
【0155】
第2の変形例としては、各種プログラムの処理をシーケンシャルに行うことに代えて、処理結果に矛盾が生じない限り、処理の順序を入れ替え又は並行動作するように構成しても良い。
【0156】
第3の変形例としては、図6A及び図6Bに示す例がある。すなわち、制御プログラムの動作中に情報プログラムが変更される。具体的には、例えば、図6Aが示すように、CTL007とITL008についてCPUコア番号306が共通している。
これは、制御プログラムであるCTL007の動作中に、情報プログラムであるITL008の実行のために同一コアが使用され得ること、つまり、タスク優先度303や利用デバイス307が違うもののCTL007の処理がITL008の影響を受け得ることを示している。
【0157】
ITL008は、情報プログラムであるため、制御プログラムの実行中に変更可能なプログラムである。コントロール装置109が有するITL008を削除した後に、ITL009をコントロール装置109に転送する。転送はプログラム配布装置101等により行われる。これにより、ITL008をITL009に変更することができる。
[上記説明の概念の一例]
【0158】
上記説明の概念の一例を説明するならば、次の通りである。物理的に(直接的だけでなく、ネットワークを通じて間接的に接続される場合も含む。)接続された制御対象装置ハードウェアのI/Oポートにアクセスすることによりハードウェアの動作を制御するコントロール装置であって、I/Oポートの情報を読み込み制御プログラムと情報プログラムがアクセス可能な共有領域に格納する格納手段と、制御プログラムは、I/Oポート又は格納されたI/Oポートの情報を取得し、I/Oポートに当該I/Oポートに接続された装置の制御情報を出力し、情報プログラムは、格納されたI/Oポートの情報を取得し、取得したI/Oポートの情報を演算することによって処理情報を特定することを特徴とするコントロール装置である。
[総括、及び、より具体的な実施の形態の一例]
【0159】
以下の説明は、これまでの説明の総括と、より具体的な実施の形態の一例とを含む。言い換えれば、以下の説明は、これまでの説明の重複部分と、これまでの説明に無い事項とのいずれを含んでもよい。
【0160】
制御対象装置の制御に必要な情報(例えば、センサによる測定値)を取得するための通信を制御プログラムによる制御の一部とすること(すなわち、通信について制御プログラムに記述されていること)が考えられるが、通信のような情報処理は制御プログラムによる制御とは分離しておくことが望ましいと考えられる。そのように考えられる1つの理由は、コントロール装置の制御対象装置は、一般に、工作機械、自動組み立て装置又は自動搬送装置のような自動機械や生産設備であるため、高い安定性、つまりリアルタイム性が求められるためである。
【0161】
そこで、制御プログラムに加えて、通信のような情報処理について記述されたプログラムである情報プログラムを用意しておくことが考えられる。リアルタイム性を維持するために制御プログラムを優先するべく、情報プログラムをコントロール装置とは別の装置で実行することが考えられるが、資源節約の観点から、制御プログラムと情報プログラムの両方をコントロール装置のような同一プラットフォーム上で実行することが考えられる。この場合、制御プログラムと情報プログラムがコントロール装置内に適切に共存することが求められる。
【0162】
しかし、上述した特許文献1及び2は、既に述べた理由から、制御プログラムと情報プログラムの適切な共存のための技術を開示も示唆もしていない。
【0163】
同一のプラットフォーム上で、1以上の制御プログラム114と1以上の情報プログラム115とを含んだ複数のプログラムが実行される。「同一のプラットフォーム」とは、上述の説明によればコントロール装置109である。
【0164】
1以上の制御プログラムの各々は、当該制御プログラムにとっての制御対象装置の制御のためのスキャン動作を行うプログラムである。一方、1以上の情報プログラムの各々は、スキャン動作を含まない情報処理を行うプログラムである。
【0165】
下記に例示する少なくとも1つによって、情報プログラムを柔軟に変更することが可能である。
・複数のプログラム114及び115の各々について、当該プログラムの動作の範囲を規定した複数のパラメータ値が設定される。制御プログラム114の実行と情報プログラム115の実行が、当該制御プログラム114と当該情報プログラム115の各々についての複数のパラメータ値に基づき行われる。情報プログラム115の複数のパラメータ値を、いずれの制御プログラム114の実行に悪影響が出ないよう調整可能である。
・1以上の共有領域が設けられる。1以上の共有領域の各々について、次のことが言える。すなわち、当該共有領域は、1以上の制御プログラム114の少なくとも1つの制御プログラム114と1以上の情報プログラム115の少なくとも1つの情報プログラム115がアクセス可能な記憶領域である。当該記憶領域には、例えば、当該制御プログラム114によりアクセスされるI/Oポートに関する情報と当該制御プログラム114に関する情報(例えば内部変数)とのうちの少なくとも一方を含んだ共有情報が格納される。当該共有領域に格納された共有情報を基に、当該共有領域にアクセス可能な情報プログラム115が、情報処理を行うことができる。言い換えれば、制御プログラム114の実行結果に基づく共有情報を基に情報プログラム115が実行されるため、情報プログラム115の実行が制御プログラム114に悪影響を与えないことが期待される。故に、制御プログラム114に悪影響を与えること無しに情報プログラム115を変更することが期待できる。
【0166】
例えば、複数のプログラム114及び115の各々について動作の範囲を規定した複数のパラメータ値を含む実行管理テーブル113が用意される。これにより、情報プログラム115の実行(動作)により制御プログラム114の実行に悪影響が出ることを防ぐことができる。当該複数のプログラム114及び115の各々について、複数のパラメータ値は、下記、
・タスク優先度303(当該プログラムの優先度の一例)、
・メモリ上限305(1種類以上の計算リソースに対応した1以上のリソース上限の一例)、
・利用デバイス307及び専有デバイス308(当該プログラムが利用可能な1以上のI/OポートのうちのいずれのI/Oポートが当該プログラムに専有のI/OポートでありいずれのI/Oポートが当該プログラムを含む2以上のプログラムで共有可能なI/Oポートであるかを表す専有/共有デバイスの一例)、
のうちの少なくとも1つを含む。
【0167】
タスク優先度303のようなプログラム優先度というパラメータ値があることで、制御プログラム114に求められるリアルタイム性の維持を優先した処理が可能である。例えば、計算リソースの節約の観点から、CPUコア、メモリ領域及びI/Oポートといった少なくとも1つの計算リソースを共有デバイスとすること、具体的には、制御プログラム114と情報プログラム115が共有することが考えられる。タスク優先度303の設定により、制御プログラム114と情報プログラム115が計算リソースを共有しても、制御プログラム114のリアルタイム性を損なわないよう情報プログラム115を実行することができる。
【0168】
メモリ上限305のようなリソース上限があることでも、制御プログラム114に求められるリアルタイム性の維持を優先した処理が可能である。例えば、情報プログラム115が再現なくメモリ量を使用した後で停止した場合にはメモリ量解放の処理が走ることになるが、この処理は、制御プログラム114よりも優先して行われることが考えられる。メモリ量を解放しないことには制御プログラム114が適切な処理を行うことができないことが考えられるためである。しかし、そうなると、制御プログラム114に求められるリアルタイム性が損なわれてしまう。このようなことを回避するために、リソース上限は有用である。
【0169】
制御プログラム114及び情報プログラム115の各々について、専有/共有デバイスという設定は、2以上のパラメータ値の組合せの設定であってよい。専有デバイスが設定されることで、安定した性能、例えば、リアルタイム性の維持が期待できる。共有デバイスが設定されることで、計算リソースを節約しつつ柔軟な処理が期待できる。
【0170】
例えば、図7に例示する設定範囲テーブル700が用意されてよい。図6A図6Bで説明した例とは異なる設定方法を示す。また、図8A図8Bに示されるCPUコア、メモリ上限、LANポートは、それぞれ図7のデフォルト値703と設定値704の値に対応する情報プログラム115が利用できるリソースを示す図である。すなわち、図8Aは制御プログラム114がCPUコア1から4を専有しているが、3から4は未だ利用しておらず、5から8は情報プログラム115が専有する状態を示す。
【0171】
またメモリは、制御プログラム114と情報プログラム115がそれぞれ最大128MB使用できる。次に、制御プログラム114がLAN1と2を情報プログラム115がLAN4を専有し、これらのプログラムがLAN3を共有することを示す。図8Bには、図7に示す設定値704の値に対応するリソースが示される。設定範囲テーブル700は、ユーザが使用する計算機(例えば、管理ユーザ計算機151M)からプログラム配布装置101経由又は非経由でコントロール装置109に格納されてよい。設定範囲テーブル700は、情報プログラム115に関するパラメータ値の範囲を定めたテーブルであり、複数のパラメータ項目(例えば、図3に例示したようなパラメータ項目303~308のうちの少なくとも1つと同じパラメータ項目を含んだ複数のパラメータ項目)の各々について、属性701、設定可能範囲702及びデフォルト値703といった情報を格納する。以下、1つのパラメータ項目を例に取る(図7の説明において「対象パラメータ項目」)。設定値704はデフォルト値703を用いない場合に設定される値である。設定値704の一部が入力または設定された場合に、入力又は設定されていない値はデフォルト値703の値を用いるとよい。これにより、ユーザは情報プログラム115を利用する際に、すべての項目または一部の項目を設定せずとも情報プログラム115を実行させることができる。図7に示すように表示手段に表示し、入力手段によって入力してもよいし、別途設定値704だけを設定してもよい。
【0172】
次に、図8Cについて説明する。図8C図8Aの設定を変更した状態を示す。図8Cには、CPUコア1と2を制御プログラム114が専有し、CPUコア7と8を情報プログラム115が専有し、CPUコア3から5を共有する場合が示されている。共有されるCPUコアは、それぞれのプログラム114と115の計算処理が足りない場合に利用することができる。また、タスク優先度に応じて使用量を変更することもできる。
【0173】
共有されるCPUコアは破線の境界線を用いると図8Bとの違いがユーザに明確に示され便利であるが、当該違いの表現として他の表現が採用されてもよい。例えば、専有、共有それぞれの背景色を変更する、または、それぞれ異なるハッチング処理を施す等が採用されてもよい。メモリの設定は、図8Bと同様のため説明を省略する。LANポートは、LAN1を制御プログラム114が専有し、LAN3を情報プログラム115が専有し、LAN2と4を制御プログラム114と情報プログラム115が共有する。
【0174】
属性701は、いずれかの情報プログラム115について対象パラメータ項目に対応したパラメータ値を変更するといずれかの制御プログラム114の実行(動作)へ悪影響が出る可能性があるか否かを表す。“A:設定注意”が、悪影響が出る可能性があることを意味する。“B:自由に設定可能”が、悪影響が出ないことを意味する。属性701を示すことにより、ユーザは悪影響が出ない項目を容易に知ることができる。
【0175】
設定可能範囲702は、対象パラメータ項目について情報プログラム115に関し設定可能なパラメータ値の範囲を表す。当該範囲内でパラメータ値を調整可能である。少なくとも1つのパラメータ項目について、設定可能範囲702は、個々の情報プログラム115についての値を表していてもよいが、図7の例では、いずれのパラメータ項目についても、全ての情報プログラム115の合計としての値を表す。例えば、パラメータ項目“CPUコア数”は、情報プログラム115がCPUコア2から8のうちどのコアを使用するかを設定できるが、特に設定しない場合には、デフォルト値703に記載されるようにCPUコア4-8を使用する。“メモリ上限”に対応した設定可能範囲702は、全ての情報プログラム115についてのメモリ量合計の上限の範囲である。図8Bに示す例では、情報プログラム115は、16から256MBまで設定可能であるが、設定値704が設定されていない場合はデフォルト値703の値である128MB使用し、設定値704を160MBと設定した場合には160MB使用することができる。これにより、図8Aに示す例では、情報プログラム115はメモリを十分に利用できるため、情報プログラム115の動作をより安定させることができる。
【0176】
なお、少なくとも1つのパラメータ項目について、設定可能範囲702が、自動で設定又は変更されてよい。自動で設定される際には、制御プログラム114がデバイスのリソースや専有または共有する情報を参考に設定することができる。例えば、タスク管理部110が、制御プログラム114の使用リソースを基に、情報プログラム115についての設定可能範囲702を自動で設定又は変更してよい。例えば、制御プログラム114がLANポートのうちLAN1とLAN2を専有し、LAN3を共有する場合には、利用可能LANポートの設定可能範囲702をLAN3,LAN4とし、専有LANの設定可能範囲702をLAN4とするとよい。この場合は、LAN3を情報プログラム115が専有するように設定すると、制御プログラム114が使用できなくなるため、属性701には設定注意と記載される。なお、利用可能LANポートの設定可能範囲702をLAN4のみに設定すると、専有LANポートの設定可能範囲702はLAN4のみとなる。これは、利用できないLANポートを自動的に専有できない設定に変更することを意味する。
【0177】
また、パラメータ項目“ルーティング方式”は、図9に例示するOS共通実装において採用される。例えば、後述の図9を参照していえば、“Masquerade”は、コンテナ953(実行環境の一例)がコントロール装置909の外から通信を受け付けないことを意味する。“Port forward”は、コントロール装置909の外からの通信のうち、あるポートに対する通信のみ受け付けることを意味する。“IP forward”は、物理的なネットワークI/F(例えば図1のネットワークI/F213)に、情報コンテナ953B専用のIPアドレスを追加で付与し、当該IPアドレスを指定した通信を、情報コンテナ953B内の情報プログラム115に転送することを意味する。
【0178】
また、パラメータ項目“利用可能LANポート”が情報プログラム115で利用できるLANポートを、“専有LANポート”が、情報プログラム115が専有するLANポートを示す。すなわち、情報プログラム115はデフォルトでLANポート3と4を制御プログラム114と共有し、LANポート4を専有する設定となる。
【0179】
また、パラメータ値“共有フォルダ”が、共有領域の一例である共有フォルダへのパスを表している。デフォルト値703には、共有なしであるため、特に設定がない限り共有フォルダがない状態となる。
【0180】
デフォルト値703は、対象パラメータ項目に対応したデフォルト値を表す。例えば、パラメータ項目“LANポート”に対応したデフォルト値によれば、情報プログラム115にパラメータ値“LAN3”と“LAN4”が、専有LANポートのパラメータ値に“LAN4”が設定される。つまり、LAN3は、共有デバイスであり、LAN4は情報プログラム115が専有するデバイスである。LANポートは図8Aに示されるように、制御プログラムが1ポート専有し、情報プログラムが1ポート専有し、制御プログラムと情報プログラムが2ポートを共用する状態を示す。ここでの共有とは、制御プログラムであっても必ずしもリアルタイム性が要求されない通信と情報プログラムそれぞれがLANポートを利用する場合である。
【0181】
例えば、一方のプログラムが共有LANポートを使用する際に、他方のプログラムが使用する場合には、一方のプログラムの通信が終わるまで待機し、他方のプログラムが使用する。制御プログラム114がLANポートを専有することで、リアルタイム制御通信を使用する場合に有効である。制御プログラム114と情報プログラム115がLANポートを共有することで、一般のEthernet通信等の非リアルタイム通信を行う場合に有効である。情報プログラム115がコントロール装置109の外部である、例えば工場の外やインターネット等との通信を行う際に、コントロール装置109の外部から制御プログラム114やコントロール装置に109に接続された装置を見せないようにすることができるため、セキュリティの観点から有効である。
【0182】
複数のプログラム114及び115の各々に関し、図8Aに例示するように、1種類以上の計算リソース(例えば、CPUコア、メモリ、LAN(I/Oポートの一例))の各々について、当該種類(それぞれのパラメータ項目)の計算リソースに対応したリソース上限は、当該種類の計算リソースについて定められたリソース境界(図8において太線で示す)に基づいている。LANを共有する場合は、便宜的に中間位置に境界線を設けて表現している。1種類以上の計算リソースの各々について、リソース境界は、下記(x)と(y)で定義される境界である。制御プログラム114は(x)以下のリソースで、情報プログラム115は(y)以下のリソースで実行されることにより、それぞれのプログラムに影響を与えずに実行可能となる。なお、CPUはコア数に限らず、単一コアの場合を含めてスケジューリングの優先度を設定することも可能である。また、CPUコアが複数の場合に、CPUコアの専有の設定を変更せずに制御プログラム115が所定のスキャンタイムで実行されるようにスケジューリングすることも可能であり、この場合は、複数のコアを効率よく使用することができる。
(x)当該種類の計算リソースのリソース上限であって、当該種類の計算リソースを全制御プログラム114が使用可能なリソースの合計。
(y)当該種類の計算リソースのリソース上限であって、当該種類の計算リソースを1以上の情報プログラムが使用可能なリソースの合計。
【0183】
このようなリソース境界により、リアルタイム性の維持が期待できる。なお、図8では、各種計算リソースについて、リソース境界より左側にある灰色帯は、全制御プログラム114が使用しているリソースの合計である総使用リソースを意味し、リソース境界より左側にある白色帯は、制御プログラム114に関しての余裕リソース(リソース境界と総使用リソースとの差分)を表す。つまり、灰色帯は実際の利用状態、白色帯は使用されていないが使用できるリソースを示す。一方、各種計算リソースについて、リソース境界より右側にある灰色帯は、全情報プログラム115が使用しているリソースの合計である総使用リソースを意味し、リソース境界より左側にある白色帯は、情報プログラム115に関しての余裕リソース(リソース境界と総使用リソースとの差分)を表す。これをリアルタイム表示やデバッグ時に表示することにより、リソースの使用量を特定し、設定値704によってより制御プログラム114または情報プログラム115を効率よく実行させることができる。
【0184】
複数のプログラム114及び115の実行を制御するタスク管理部110が、図8に例示するように、当該1種類以上の計算リソースの少なくとも1種類の計算リソースのリソース境界を動的に変更する。当該変更は、例えば、リソース境界変更のための所定のイベントが発生した場合に(例えば、ユーザからリソース境界の変更要求をタスク管理部110が受けた場合に)行われる。これにより、例えば、制御プログラム114に関して余裕リソースが十分ある種類の計算リソースについては、制御プログラム114にとってのリソースが減るリソース境界変更が実行される(例えば、計算リソース種類“メモリ”を参照)。このように、柔軟にリソース境界を変更することで、リアルタイム性を維持しつつ高スループットが期待できる。すなわち、リアルタイム性と高スループットの両立が期待できる。
【0185】
なお、少なくとも1種類の計算リソースについて、当該種類の計算リソースのリソース境界の変更が、制御プログラム114にとってのリソースが減る変更の場合、タスク管理部110が、下記の(A)及び(B)を行ってよい。下記の(A)及び(B)により、制御プログラム114にとってのリソースが減る境界変更、言い換えれば、情報プログラム115を追加したときの前提が変更されても、リアルタイム性の維持が期待できる。
(A)1以上の情報プログラム115の少なくとも1つを停止する。
(B)少なくとも1つの制御プログラム114について、下記(b1)及び(b2)のうちの少なくとも1つを実行する。
(b1)停止した情報プログラム115に割り当てられていた共有デバイス(例えばI/Oポートのうちの少なくとも1つ)を、当該制御プログラム114の専有デバイスに変更する。
(b2)当該制御プログラムのタスク優先度303を相対的に上げる(すなわち、当該制御プログラムのタスク優先度303を上げることと、停止した情報プログラム115のタスク優先度303を下げることの少なくとも1つを行う)。
【0186】
また、上述の説明では、制御プログラム114と情報プログラム115が共存するプラットフォームは、物理的なコンピュータとしてのコントロール装置109であるが、図9に例示するように、別の例として、同一のOS952を採用することができる。つまり、制御プログラム114と情報プログラム115のOSは共通している。ここでも、複数のプログラム114及び115の各々について、当該プログラムの動作の範囲を規定した複数のパラメータ値を含んだ実行管理テーブル113が設定される。
【0187】
制御に関しては、一般に、高いリアルタイム性が求められ、情報処理に関しては、一般に、高いスループットが求められる。そして、OSとしても、一般に、制御向けのOSとしての専用OS(リアルタイムOS)と、情報処理向けのOSとしての汎用OSとがある。
【0188】
一般に、制御プログラムは専用OSが搭載された計算機で実行され、また、専用OSが搭載された計算機から情報系の計算に必要な情報を受信した汎用OSが搭載された計算機が実行されている。ここで、仮に、昨今の汎用計算機分野の技術を考慮すると制御プログラムは専用OS上で実行され、情報プログラムは汎用OS上で実行されることで本願発明と類似する構成とすることができると考えられる。このため、同一の計算機に制御プログラムと情報プログラムを共存させる場合、通常、計算機における計算リソース集合(物理的な計算リソースの集合としてのハードウェア)をエミュレートする仮想マシン技術を採用することになる。具体的には、例えば、ハイパバイザが、制御プログラム用に、ゲストOSとして専用OSを搭載した仮想マシンを生成し、情報プログラム用に、ゲストOSとして汎用OSを搭載した仮想マシンを生成し、制御プログラムと情報プログラムが、OSが異なる別々の仮想マシンで実行されることが考えられる。
【0189】
しかし、仮想マシン技術では、仮想マシンにおけるゲストOSの他に、仮想マシンのベースとなるホストOSが存在する。結果として、管理対象が多く、管理が煩雑となることが考えられる。
【0190】
また、計算機に機器が接続されても、当該計算機における全ての制御プログラムや情報プログラムが容易に当該機器を認識できるわけではない。仮想マシン別に、ゲストOSを介して、当該機器を認識するための処理が必要となる。言い換えれば、制御プログラムと情報プログラムがデバイスを共有することが困難である。
【0191】
本願の発明者の考察によれば、汎用OSの系統ではあるものの必要とされるリアルタイム性を提供できるリアルタイム機能を持ったOS(以下、便宜上、「リアルタイム汎用OS」と呼ぶ)が提供されている。
【0192】
このため、リアルタイム汎用OSを、図9に例示するように、制御プログラム114及び情報プログラム115が共存するOS952として採用することが考えられる。
【0193】
しかし、制御プログラム114及び情報プログラム115がリアルタイム汎用OS上に共存するとなると、制御プログラム114のリアルタイム性の低下が懸念される。具体的には、例えば、リアルタイム汎用OSは、スケジューラを有し、当該スケジューラに割込みが発生するようになっている。スケジューラは、実行すべきリアルタイムタスク(制御プログラム114に対応したタスク)があれば、タスク優先度303に従い当該リアルタイムタスクへ制御を渡し、実行すべきリアルタイムタスクがなければ、通常タスク(例えば情報プログラム115に対応したタスク)へ制御を渡すようになっている。実行すべきリアルタイムタスクがあっても、通常タスクについて所定の処理まで終わらなければ、当該通常タスクは停止されない。このため、リアルタイムタスクの開始が遅れ、結果として、リアルタイム性が損なわれるおそれがある。
【0194】
そこで、制御プログラム114及び情報プログラム115の同一プラットフォームとしてOS952を採用し、且つ、当該環境において、上述した工夫のうちの少なくとも1つ、例えば、下記のうちの少なくとも1つを採用することにより、リアルタイム性が維持される。
・上述した実行管理テーブル113が設定される。すなわち、制御プログラム114及び情報プログラム115の各々についてリアルタイム性の維持を目的に決定されたパラメータ値が設定される。
・デバイスの共有化が容易になる代わりにリアルタイム性が低下することを避けるため、上述したようなリソース境界が設定される。
【0195】
パラメータ値の設置として、具体的には、例えば、図3に例示したパラメータ値303~308の組み合わせにより、制御プログラム114及び情報プログラム115が同一OS952上に共存しても、リアルタイム性の維持が図られる。例えば、通常タスクについて所定の処理まで終わらなければ当該通常タスクは停止されないことを考慮してパラメータ値303~308を決定することが行われる。
【0196】
また、適宜にスループットを考慮して、リソース境界が、例えば、ホストプログラムの一例である実行制御プログラム957により動的に変更されてよい。その際、リソース境界の変更が、制御プログラム114にとってのリソースが減る境界変更の場合、上述の(A)及び(B)が、例えば、実行制御プログラム957により行われてよい。
【0197】
図9のコントロール装置909については、例えば以下の通りである。
【0198】
コントロール装置909の計算リソース集合951上で、OS952が実行される。OS952上でのプログラム実行環境として、コンテナ型仮想化に従うコンテナ953が採用される。すなわち、プログラムが、コンテナ953に設定され、OS952上で、コンテナ953の単位で実行される。コンテナ953としては、例えば、制御コンテナ953Aと情報コンテナ953Bの2種類のコンテナがある。
【0199】
制御コンテナ953Aは、制御プログラム114が格納され実行されるコンテナである。制御プログラム114は、例えば、ソフトウェアPLC系ランタイム961上で実行されて良い。制御プログラム114は、制御系通信を行っても良い。なお、制御系通信はシリアル又はパラレルの有線通信であっても、無線通信であっても良い。
【0200】
情報コンテナ953Bは、情報プログラム115が格納され実行されるコンテナである。少なくとも1つの情報プログラム115は、情報系通信を行うことができる。
【0201】
コントロール装置909で実行されるプログラムとして、上述のプログラム114及び115に加えて、他のプログラム、例えば、Webサーバプログラム956及び実行制御プログラム957がある。Webサーバプログラム956及び実行制御プログラム957は、いずれも、コンテナ953の外で実行されるホストプログラムの一例である。実行制御プログラム957は、コンテナ953の生成又は削除等を行うコンテナエンジンでよい。Webサーバプログラム956及び実行制御プログラム957が実行されることで上述のタスク管理部110が実現されてよい。
【0202】
Webサーバプログラム956は、Webサーバとして機能するためのプログラムである。Webサーバプログラム956が、管理ユーザ計算機151M及び一般ユーザ計算機151Gの各々(クライアント)と通信する。Webサーバプログラム956が、1以上の情報プログラム115のうちの少なくとも1つが格納されるコンテナについて、パラメータ値の設定を受け付けるユーザインターフェースプログラムの一例である。
【0203】
実行制御プログラム957は、コンテナ953におけるプログラムに関して設定されている複数のパラメータ値を基に、コンテナ953(正確には、コンテナ953におけるプログラム)の実行を制御する。
[第3の実施の形態]
【0204】
第3の実施の形態について図10等を用いて説明する。その際、第1の実施の形態と異なる点を中心として説明し、第1の実施の形態と共通する点については説明を省略又は簡略する。また、以下の説明では、「計算リソース」は、物理的なリソースであるのに対し、使用される又は使用可能な「リソース」は、使用される又は使用可能なリソース量(例えば、CPUコア数やメモリ容量)を意味して良い。
【0205】
図10は、第3の実施の形態に係るコントロール装置の機能的な概略構成を示すブロック図である。
【0206】
計算リソース集合951は、図1に示した複数種類の計算リソースを含む複数の計算リソースである。計算リソース集合951は、例えば、1以上の周辺機器120(図1参照)のような1以上の制御対象装置に接続された1以上のI/Oポート(例えばI/O制御装置214やI/Oモジュール119)と、ネットワーク108(図1参照)に接続された1以上のネットワークポート(例えばネットワークI/F213)とを含む。
【0207】
タスク管理部1010及び使用リソース監視部1017は、1以上の制御プログラム114及び1以上の情報プログラム115以外の1以上のプログラムであるプログラム群が実行されることにより実現される機能の一例で良い。
【0208】
タスク管理部1010は、1以上の制御プログラムと1以上の情報プログラムとのうちの1以上のプログラムである1以上の対象プログラムの少なくとも1つを、プログラム配布装置101(図1参照)からネットワーク108及びネットワークI/F213経由でダウンロードするが、当該ダウンロードのタイミングと異なるタイミングで、計算リソース集合951に関し当該対象プログラムが使用可能なリソースであるリソース上限を示す実行管理データを変更する。なお、1以上の制御プログラム114の各々は、I/Oポートに接続された周辺機器120(制御対象装置の一例)の制御情報を出力するスキャン動作を行うプログラムである。1以上の情報プログラム115の各々は、スキャン動作と異なる情報処理を行うプログラムである。
【0209】
制御プログラム114は、上述したように、処理を設定された時間内に確実に実行すること(リアルタイム性)が求められる。このため、制御プログラム114は情報プログラム115に比較的大きなリソース上限を割り当てておくとよい。言い換えれば、情報プログラム115は制御プログラム114に比べて割り当てるリソース上限を比較的小さくしておくことが考えられる。しかし、制御プログラム114がどのような情報プログラム115とコントロール装置1009に共存するかによって、制御プログラム114又は情報プログラム115が使用するリソース上限に過不足が生じ得る。また、リソースの種類によっては、実際にプログラムが動作してみないとどの程度のリソースが使用されるかわからない。また、一般に、少なくともリソースの種類によっては、ユーザは、開発対象のプログラムがどの程度リソースを使用するか或いはどのようにリソースをシェアするかを考慮すること無く当該プログラムの開発を行う場合がある。情報プログラム115を開発する情報系の開発者は、汎用コンピュータ向けの開発において制御対象及び制御するハードウェアのリソースを意識することが少ないため共有するリソースの管理は重要である。
【0210】
そこで、本実施形態では、対象プログラムの実行管理データが当該対象プログラムのダウンロードと異なるタイミングで変更される。このため、当該実行管理データを適切に変更することが可能である。すなわち、コントロール装置に搭載されたプログラムが必要とするリソースに合わせて、プログラムのダウンロードの際に限らずに使用するリソースを適切に変更できる。ひいては、コントロール装置の運用効率を上昇させることに寄与する。
【0211】
使用リソース監視部1017は、ネットワークI/F213で転送された各対象プログラムについて、当該対象プログラムが使用しているリソースを監視し、監視結果(当該プログラムについて特定された使用リソースを示すデータ)を使用リソース管理テーブル1013に格納する。これにより、制御プログラム114や情報プログラム115の実際の使用リソースに応じて実行管理データ(リソース上限)を適切に変更することが可能である。なお、使用リソース管理テーブル1013は、対象プログラム毎に、使用リソースを示すデータを含んで良い。使用リソース管理テーブル1013は、コントロール装置1009の記憶部(例えば、メインメモリ210)に格納される。監視結果のうち、当初使用を予定したリソースよりも少ないリソースで所定のプログラムが動作する場合は、実行管理情報を書き換えることにより使用するリソースを小さくすることで、他のプログラムが使用できるリソースを増加させることができる。これにより、所定のプログラムが使用するリソースを適切に変更でき、コントロール装置がより適切なリソースで動作させることができる。また、所定のプログラムが当初の予定よりも多くのリソースが必要となる場合であっても、当該所定のプログラムの実行後であっても使用するリソースを変更できるため、コントロール装置の柔軟な運用を実現できる。
【0212】
本実施形態において、実行管理データの変更の例として、図11に示す第1の例と、図12に示す第2の例とがある。第1の例は、管理ユーザ(制御プログラム114の開発ユーザ)からの許可無しに実行管理データの変更が行われる例である。第2の例は、管理ユーザからの許可が得られた場合に実行管理データの変更が行われる例である(言い換えれば、管理ユーザからの許可無しに実行管理データの変更が不可能な例である)。第1の例は、制御プログラム114と情報プログラム115に共通の流れである。第2の例は、情報プログラム115に特有の流れである。情報プログラム115について第1の例と第2の例のどちらを採用するかは、予め決められていてもよいし、コントロール装置1009の環境状況(例えば、制御プログラム114の数と情報プログラム115の数)に応じてタスク管理部1010によって決められてもよい。以下、実行管理データの変更の例を説明する。
【0213】
図11は、実行管理データの変更の第1の例を示す図である。以下、図11の説明では、一つの対象プログラムを例に取る。
【0214】
タスク管理部1010が、プログラム配布装置101からコントロール装置1009へ対象プログラムをダウンロードし記憶部に格納する(ステップS1101)。
【0215】
タスク管理部1010が、当該対象プログラムの実行管理データについてユーザによる明示、入力または設定(例えば、GUI(Graphical User Interface)のようなユーザインターフェース経由でリソース上限の設定を受け付けること)が無いため、当該対象プログラムのデフォルトの実行管理データを決定し、当該実行管理データを実行管理テーブル113に格納する(ステップS1102)。このようにダウンロード時は自動で実行管理データが設定される。対象プログラムの実行管理データには、一種類以上のリソースの各々についてリソース上限が設定されて良い。なお、当該対象プログラムの実行管理データについて、タスク管理部1010が、予め設定された第一の実行管理データ(デフォルトの実行管理データの一例)を特定し、ユーザによる明示、入力または設定がされる場合には、当該第一の実行管理データとは異なる第二の実行管理データを特定して良い。
【0216】
タスク管理部1010が、例えばWebサーバとして機能する。具体的には、例えば、タスク管理部1010が、当該対象プログラムの実行管理データを変更する(例えば、リソース上限のようなパラメータを変更する)操作である変更操作をユーザ計算機151から受け付け(ステップS1103)、当該受け付けた変更操作に従い実行管理データを変更する(ステップS1104)。
【0217】
このように、本実施形態では、対象プログラムの実行管理データが当該対象プログラムと共にダウンロードされるわけではない。本実施形態では、対象プログラムについて、当該対象プログラムの実行管理データは、プログラム配布装置101にはなく、コントロール装置1009の記憶部に格納される。つまり、ダウンロードされ得るプログラム毎に実行管理データをプログラム配布装置101に用意しておく必要が無い。プログラム配布装置101は、例えばプログラム開発環境、プログラム書き込み器やプログラム転送装置である。
【0218】
また、情報プログラム115(及び制御プログラム114)の実行管理データを毎回一般ユーザ(及び管理ユーザ)が設定するのは煩雑であるが、ステップS1102によれば、情報プログラム115のような対象プログラムが必要とするリソースに応じて実行管理データが自動で生成され設定される。このため、ユーザにとっての利便性が向上する。なお、少なくとも情報プログラム115については、タスク管理部1010は、ステップS1102で決定した実行管理データ(例えば、2個のネットワークポートの使用、及び、1個のシリアルデバイスの使用)を設定することの許可の問合せを管理ユーザ計算機151M(図12参照)に出し、当該問合せに対する回答が許可の場合に当該実行管理データを設定しても良い。
【0219】
ステップS1102でのデフォルトの実行管理データの決定は、例えば次の少なくとも1つのように行われて良い。なお、対象プログラムが制御プログラム114と情報プログラムのどちらであるかは、プログラムのメタデータ、プログラムの格納元等から判別可能である。
・対象プログラムが制御プログラム114の場合、タスク管理部1010は、当該制御プログラム114のソースデータ又はメタデータに記述されているプログラム特性(例えば、必要とするシリアルデバイスの数)を特定し、当該プログラム特性を基に、当該制御プログラム114の実行管理データ(リソース上限)を決定する。当該制御プログラム114のプログラム特性に関わらず、全ての制御プログラム114に共通のリソース上限が当該制御プログラムの実行管理データに設定されてもよい。
・対象プログラムが情報プログラム115の場合、タスク管理部1010は、当該情報プログラム115のソースデータ又はメタデータに記述されているプログラム特性(例えば、必要とするシリアルデバイスの数)を特定し、当該プログラム特性を基に、当該情報プログラム115の実行管理データ(リソース上限)を決定する。例えば、タスク管理部1010は、ネットワークポートを2つ使用することを特定した場合、実行管理データに、2つのネットワークポートをリソース上限(パラメータ)の一例として設定する。また、例えば、タスク管理部1010は、シリアルデバイスを使用することを特定した場合、少なくとも1つのシリアルデバイスを専有又は共有のデバイスとして実行管理データに設定する。当該情報プログラム115のプログラム特性に関わらず、全ての情報プログラム115に共通のリソース上限(例えば、1つの未使用のCPUコア、及び、全ての情報プログラム115が使用可能なメモリ容量のX%)が当該情報プログラムの実行管理データに設定されてもよい。
【0220】
図12は、実行管理データの変更の第2の例を示す図である。以下、図12の説明では、一つの対象プログラムを例に取る。
【0221】
図11のステップS1101~S1102と同様の処理が行われる(ステップS1201~S1202)。
【0222】
その後、タスク管理部1010が、情報プログラム115の実行管理データの変更操作を一般ユーザ計算機151Gから受け付ける(ステップS1203)。その場合、タスク管理部1010が、当該情報プログラム115の実行管理データを変更することの許可の問合せを管理ユーザ計算機151Mに出す(ステップS1204)。当該問合せに対して許可を管理ユーザ計算機151Mから受け付けた場合(ステップS1205)、タスク管理部1010は、当該情報プログラム115の実行管理データを、ステップS1203で受け付けた変更操作に従い変更する(ステップS1206)。
【0223】
ステップS1204で出る問合せは、例えば、下記の情報を含み、当該問合せを含む情報が、管理ユーザ計算機151Mに表示される。このため、管理ユーザは、ステップS1203で受け付けられた変更操作に従う変更を許可して良いか否かを判断し易い。
・ステップS1203で受け付けた変更操作の内容(いずれのリソース上限をどのようなリソース上限に変更するか)を示す情報。
図7に例示する設定範囲テーブルのうち少なくとも当該変更操作に関わるリソース上限に関する部分を示す情報(例えば、変更対象のリソース上限がパラメータ項目「メモリ上限」であれば、メモリ上限に対応した情報701~704)。
【0224】
一比較例としては、制御プログラム114の制御のリアルタイム性を維持するために、制御プログラム114が使用する可能性が高い全ての計算リソース(例えば、シリアルデバイス)を制御プログラム114の専有デバイスとすべく情報プログラム115に対しては使用不可の設定をしておくこと、言い換えれば、情報プログラム115が使用可能な計算リソースを過剰に制限しておくことが考えられる。そこで、本実施形態では、図12に例示のように、一般ユーザが、情報プログラム115のダウンロード後に適宜に当該情報プログラム115の実行管理データを変更することの意思を示すことができ、管理ユーザの許可が得られた場合(制御のリアルタイム性が維持される場合の一例)、当該情報プログラム115の実行管理データの変更が可能となる。
【0225】
図13は、制御プログラム114及び情報プログラム115の各々にとってのリソース上限の意義の一例を示す模式図である。
【0226】
図13の例によれば、リソース境界が、制御プログラム114にとってのリソース上限の一例でもあり、情報プログラム115にとってのリソース上限の一例でもある。図13の例によれば、制御プログラム114にとってのリソース上限が、情報プログラム115にとってのリソース上限に影響し、情報プログラム115にとってのリソース上限が、制御プログラム114にとってのリソース上限に影響する。しかし、この例に限らず、例えば、制御プログラム114については、リソース境界から一定のマージン分が当該制御プログラム114のリソース上限で良い。同様に、情報プログラム115については、リソース境界から一定のマージン分が当該情報プログラム115のリソース上限で良い。
【0227】
リソース上限の意義は、プログラムが制御プログラム114であるか情報プログラム115であるかによって異なる。具体的には、情報プログラム115にとってのリソース上限は、制御プログラム114にとってのリソース上限よりも厳格である。以下、詳述する。
【0228】
<制御プログラム114にとってのリソース上限について>
【0229】
ある種類のリソース(例えばメモリ使用量)について、制御プログラム114又はタスク管理部1010が、当該制御プログラム114が使用しているリソースに応じて当該制御プログラム114の実行管理データを変更する。具体的には、例えば、当該制御プログラム114の使用リソース(例えばメモリ使用量)がそのリソース上限1303Bを超えた場合(符号1301を参照)、当該制御プログラム114又はタスク管理部1010が、自発的に、矢印1302が示すように、当該制御プログラム114のリソース上限を、リソース上限1303Bからリソース上限1303Aに拡張する。この場合、情報プログラム115にとって当該種類のリソースのリソース上限は縮小する。なお、当該種類の制御プログラム114の使用リソースは、例えば、上述した使用リソース管理テーブル1013から特定可能である。また、当該種類のリソースについて、制御プログラム114のリソース上限を拡張し、結果として、情報プログラム115にとってのリソース上限が縮小される場合、当該制御プログラム114又はタスク管理部1010が、当該縮小後のリソース上限が当該情報プログラム115の使用リソース以上か否かを判断して良い。当該判断の結果が真の場合、当該制御プログラム114又はタスク管理部1010が、当該制御プログラム114にとってのリソース上限の拡張を実行して良い。当該判断の結果が偽の場合、当該制御プログラム114又はタスク管理部1010が、下記のいずれかを行って良い。
・当該判断の結果が真となるまで(当該情報プログラム115の使用リソースが縮小後のリソース上限未満となるまで)待つ。
・当該制御プログラム114の動作を停止し、当該制御プログラム114にとってのリソース上限の拡張を実行する。
【0230】
この例によれば、制御プログラム114の実際の使用リソースに応じて当該制御プログラム114のリソース上限が変更される。つまり、制御プログラム114のリソース上限(結果として、情報プログラム115のリソース上限)が柔軟に変更可能である。このため、一般ユーザ(情報プログラム115の開発ユーザ)の開発自由度が向上する。具体的には、例えば、一般ユーザは、制御プログラム114のリソース上限を厳密に考慮すること無しに情報プログラム115を開発できる。制御プログラム114の使用リソースに応じて適宜に情報プログラム115のリソース上限が制御プログラム114のリソース上限の変更に応じて変更されるためである。
【0231】
なお、図12に例示したように管理ユーザの許可が得られた場合に実行管理データ(リソース上限)の変更が可能なことは、情報プログラム115のリソース上限の変更に代えて制御プログラム114のリソース上限の変更のケースにも適用されて良い。
【0232】
<情報プログラム115にとってのリソース上限について>
【0233】
上述したように、情報プログラム115にとってのリソース上限は、制御プログラム114にとってのリソース上限よりも厳格である。例えば、情報プログラム115の使用リソースがそれのリソース上限を超える場合(符号1311を参照)、当該情報プログラム115の動作が停止する(符号1312)。
【0234】
情報プログラム115が使用可能なリソースの上限(例えば、制御プログラム114の変更後の実行管理データが示すリソース上限に基づき定まる、当該情報プログラム115が使用可能なリソースの上限)、当該情報プログラム115について例えばステップS1102又はS1202で決定された実行管理データが示すリソース上限超えている場合、タスク管理部1010が、当該情報プログラム115の実行を制限する。
【0235】
当該情報プログラム115の実行の制限とは、ダウンロードされた当該情報プログラム115のインストール(又はダウンロードそれ自体)を拒否することである。
【0236】
或いは、当該情報プログラム115の実行の制限とは、以下の(A)又は(B)がされるまで(符号1321を参照)、
(A)当該情報プログラム115について決定された実行管理データが示すリソース上限が、当該情報プログラム115が使用可能なリソースの上限を超えること、
(B)(A)が管理ユーザから許可がされること、
当該情報プログラム115の実行を禁止することである(符号1322を参照)。なお、(A)は、例えば、制御プログラム114の変更後の実行管理データが示すリソース上限に基づき定まる、当該情報プログラム115が使用可能なリソースの上限が、当該情報プログラム115について決定された実行管理データが示すリソース上限以下となることで良い。
【0237】
以上のように、制御プログラム114や情報プログラム115の使用リソースは、動作に伴い変わり得る。制御プログラム114の使用リソースがリソース上限を超えるときは当該リソース上限が拡張され、情報プログラム115の使用リソースがリソース上限を超えるときは当該情報プログラム115の動作が停止する(当該リソース上限の拡張が管理ユーザから許可されるまで当該リソース上限の拡張が不可である)。制御プログラム114のリソース上限が過剰に高ければ(制御プログラム114に過剰にリソースが割り当てられていれば)、制御プログラム114のリソース上限を縮小すること、又は、管理ユーザからの許可に応答して情報プログラム115のリソース上限を拡張することにより、制御プログラム114から過剰に割り当てられていたリソースが解放され、解放されたリソースの少なくとも一部が情報プログラム115に割り当てられる。このため、制御プログラム114や情報プログラム115のダウンロード後に実行管理データ(リソース上限)を変えることの意義は大きい。
【0238】
なお、タスク管理部1010は、情報プログラム115のリソース上限の拡張を、制御プログラム114の動作を停止すること無しに行う。例えば、制御プログラム114及び情報プログラム115のいずれについても、リソース上限は、リソース境界から一定のマージン分の位置にあるとする。そして、制御プログラム114の使用リソースは、そのリソース上限を超えても良いが、リソース境界を超えることは禁止されるものとする。この場合、タスク管理部1010は、符号1331に示すように、情報プログラム115のリソース上限を、現在のリソース上限からリソース境界まで(つまり使用リソースの範囲のうちの最大値まで)拡張することが可能である。リソース境界が制御プログラム114の使用リソースの最大値のため、情報プログラム115のリソース上限を拡張することは制御プログラム114の動作に影響しない。
【0239】
図13の例によれば、制御プログラム114及び情報プログラム115の少なくとも一方について、リソース上限は、リソース境界は同義でもよいし、リソース境界から一定の範囲で可変であっても良い。後者の場合は、制御プログラム114及び情報プログラム115の一方のプログラムについてのリソース上限を、他方のプログラムの動作に影響を与えること無しに変更することが可能である。
【0240】
以上、本発明者によってなされた発明を発明の実施の形態に基づき具体的に説明したが、本発明は前記発明の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0241】
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【0242】
また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。
【符号の説明】
【0243】
101……プログラム配布装置、102……プログラム配布部、103……実行管理生成部、104……プログラム管理データベース、105……制御プログラム、106……情報プログラム、109……コントロール装置、110……タスク管理部、113……実行管理テーブル、114……制御プログラム、115……情報プログラム
図1
図2
図3
図4
図5
図6A
図6B
図7
図8A
図8B
図8C
図9
図10
図11
図12
図13