(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023047412
(43)【公開日】2023-04-06
(54)【発明の名称】コントロールシステム及び監視方法
(51)【国際特許分類】
G06F 11/32 20060101AFI20230330BHJP
G06F 11/07 20060101ALI20230330BHJP
G06F 11/34 20060101ALI20230330BHJP
G05B 19/042 20060101ALI20230330BHJP
【FI】
G06F11/32 140
G06F11/07 157
G06F11/34 176
G05B19/042
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021156308
(22)【出願日】2021-09-27
(71)【出願人】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】今井 光洋
(72)【発明者】
【氏名】田村 史之
【テーマコード(参考)】
5B042
5H220
【Fターム(参考)】
5B042GA22
5B042GB07
5B042JJ19
5B042JJ20
5B042JJ25
5B042JJ29
5B042KK13
5B042MA05
5B042MA10
5B042MC21
5B042MC23
5B042MC35
5B042MC40
5H220AA04
5H220BB03
5H220BB10
5H220CC06
5H220CC07
5H220CC08
5H220CX01
5H220JJ22
5H220JJ26
5H220JJ32
5H220JJ51
5H220KK01
5H220MM06
(57)【要約】
【課題】コントロールサイクル毎に実行されるタスクについてデッドラインミスが生じたか否かを判断可能にする。
【解決手段】指定されたイベント間の発生時刻の時間間隔を計測する計測機能を有しているOSが採用される。OSに、(X)タスクが実行開始されるべきことを意味する理想開始イベントと、当該タスクが実際に実行開始されたことを意味する実際開始イベント、及び、(Y)当該タスクの前記実際開始イベントと、当該タスクが実行完了したことを意味する完了イベントが指定される。タスクのトレースデータに基づきOSから取得される動作ログデータは、(X)のイベント間の発生時刻の第1の時間間隔と、(Y)のイベント間の発生時刻の第2の時間間隔とを含む。当該タスクについて、コントロールサイクルの値と、タスクジッタとしての第1の時間間隔の値と、サイクルタイムとしての第2の時間間隔の値とに基づく出力がされる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
OS(Operating System)上の一つ又は複数のプログラムのうちの一つ以上の制御プログラムを実行することで一つ又は複数の制御対象装置を制御するコントロールシステムであって、
前記一つ又は複数のプログラムの一つ又は複数のタスクのうち前記一つ以上の制御プログラムのタスクである対象制御タスクについてのトレースデータに基づくデータである動作ログデータを前記OSに対し要求するインターフェース部と、
当該要求に対して前記OSから取得された前記動作ログデータに基づく出力を行う出力部と
を備え、
前記OSは、指定されたイベント間の発生時刻の時間間隔を計測する計測機能を有しており、
前記インターフェース部は、計測対象の時間間隔を構成するイベント間として、下記(X)及び(Y)を、前記OSに指定し、
(X)タスクが実行開始されるべきことを意味する理想開始イベントと、当該タスクが実際に実行開始されたことを意味する実際開始イベント、
(Y)当該タスクの前記実際開始イベントと、当該タスクが実行完了したことを意味する完了イベント、
前記対象制御タスクの動作ログデータは、前記対象制御タスクについて(X)のイベント間の発生時刻の第1の時間間隔の値と、前記対象制御タスクについて(Y)のイベント間の発生時刻の第2の時間間隔の値とを含み、
前記出力部は、
前記対象制御タスクについて、前記動作ログデータを基に、第1の時間間隔の値をタスクジッタ値として特定し、第2の時間間隔をサイクルタイム値として特定し、
前記対象制御タスクについて、理想開始イベントのサイクルであるコントロールサイクルの値と、特定されたタスクジッタ値と、特定されたサイクルタイム値とに基づく出力を行う、
コントロールシステム。
【請求項2】
前記出力部による出力は、前記対象制御タスクについて、下記(a)と、下記(b)及び(c)のうちの少なくとも一つとを表示することである、
(a)コントロールサイクル値、
(b)タスクジッタ値、及び、サイクルタイム値、
(c)タスクジッタ値とサイクルタイム値との合計、
請求項1に記載のコントロールシステム。
【請求項3】
前記対象制御タスクのトレースデータは、一時保存されているデータであり、
前記出力部による出力は、前記対象制御タスクのタスクジッタ値とサイクルタイム値との合計が前記対象制御タスクのコントロールサイクル値を超えている場合に、前記対象制御タスクのトレースデータのうち少なくとも一部を保存することと、前記対象制御タスクのトレースデータのうち当該少なくとも一部を表示することとの少なくとも一つを行うことである、
請求項1に記載のコントロールシステム。
【請求項4】
前記出力部による出力は、前記対象制御タスクのタスクジッタ値とコントロールサイクル値との合計が前記対象制御タスクのコントロールサイクル値を超えている場合に、更に、前記一つ以上の制御プログラムの前記一つ又は複数のタスクの実行においてメモリに書き込まれる制御データの少なくとも一部を保存することと、当該少なくとも一部のデータを表示することとの少なくとも一つを行うことである、
請求項3に記載のコントロールシステム。
【請求項5】
前記対象制御タスクの実行完了の都度に前記対象制御タスクのスリープ時間が指定され当該指定されたスリープ時間が経過したときに前記対象制御タスクの理想開始イベントが発生するようになっている、
請求項1に記載のコントロールシステム。
【請求項6】
前記計測機能は、指定されたイベント間の発生時刻の時間間隔の統計を得る機能であり、
前記動作ログデータは、第1の時間間隔の値及び第2の時間間隔の値それぞれの統計を表し、
前記対象制御タスクについての出力の基になるタスクジッタ値は、第1の時間間隔の複数の値に基づく値であり、
前記対象制御タスクについての出力の基になるサイクルタイム値は、第2の時間間隔の複数の値に基づく値である、
請求項1に記載のコントロールシステム。
【請求項7】
前記対象制御タスクについての出力の基になるタスクジッタ値は、第1の時間間隔の前記複数の値のうちの最大値であり、
前記対象制御タスクについての出力の基になるサイクルタイム値は、第2の時間間隔の前記複数の値のうちの最大値である、
請求項6に記載のコントロールシステム。
【請求項8】
前記複数のプログラムは、それぞれ情報処理を行うプログラムである一つ以上の情報プログラムを含み、
前記対象制御タスクのコントロールサイクルにおいて、前記一つ以上の情報プログラムのタスクのうちの少なくとも一つである対象情報タスクが実行され、
前記対象制御タスクについて、出力は、前記コントロールサイクルの値と、前記対象制御タスクについてのタスクジッタの値及びサイクルタイムの値との他に、前記対象情報タスクについてのタスクジッタの値及びサイクルタイムの値に基づく、
請求項1に記載のコントロールシステム。
【請求項9】
OS(Operating System)上の一つ又は複数のプログラムのうちの一つ以上の制御プログラムを実行することで一つ又は複数の制御対象装置を制御するコントロールシステムの監視方法であって、
指定されたイベント間の発生時刻の時間間隔を計測する計測機能を有するOSに、計測対象の時間間隔を構成するイベント間として、下記(X)及び(Y)を指定し、
(X)タスクが実行開始されるべきことを意味する理想開始イベントと、当該タスクが実際に実行開始されたことを意味する実際開始イベント、
(Y)当該タスクの前記実際開始イベントと、当該タスクが実行完了したことを意味する完了イベント、
前記一つ又は複数のプログラムの一つ又は複数のタスクのうち前記一つ以上の制御プログラムのタスクである対象制御タスクについてのトレースデータに基づくデータである動作ログデータを、前記OSに対し要求し、
当該要求に対して前記OSから取得された前記動作ログデータは、前記対象制御タスクについて(X)のイベント間の発生時刻の第1の時間間隔を表す値と、前記対象制御タスクについて(Y)のイベント間の発生時刻の第2の時間間隔を表す値とを含み、
前記対象制御タスクについて、前記動作ログデータを基に、第1の時間間隔を表す値をタスクジッタ値として特定し、第2の時間間隔を表す値をサイクルタイム値として特定し、
前記対象制御タスクについて、理想開始イベントのサイクルであるコントロールサイクルの値と、特定されたタスクジッタ値と、特定されたサイクルタイム値とに基づく出力を行う、
監視方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コントロールシステムにおける監視に関する。
【背景技術】
【0002】
制御対象装置の制御のためのコントロールシステム(特に、産業機器の制御のためのコントロールシステム)では、リアルタイム性能が求められる。特許文献1は、定周期で繰り返し実行される第1のプログラムより実行の優先度が低い第2のプログラムの実行状況を監視することを開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
リアルタイム性能という点において、制御対象装置の制御のためにコントロールサイクル毎に実行されるタスクがそのコントロールサイクル内に実行完了することが重要である。タスクの実行がコントロールサイクル内に完了しないことを、「デッドラインミス」と呼ぶ。
【0005】
タスクはOSにより実行されるが、当該タスクについてデッドラインミスが生じたか否かをOSが判断することはできない。その一つの理由として、通常、当該タスクについてサイクルタイムをOSは知らないことが挙げられる。
【0006】
このようにサイクルタイムを知らないOSにより実行されるタスクについてデッドラインミスが生じたか否かを判断可能にするための技術を、特許文献1は開示も示唆もしていない。
【課題を解決するための手段】
【0007】
コントロールシステムのOSとして、指定されたイベント間の発生時刻の時間間隔を計測する計測機能を有しているOSが採用され、インターフェース部と出力部が備えられる。インターフェース部が、このようなOSに、計測対象の時間間隔を構成するイベント間として、下記(X)及び(Y)、
(X)タスクが実行開始されるべきことを意味する理想開始イベントと、当該タスクが実際に実行開始されたことを意味する実際開始イベント、
(Y)当該タスクの前記実際開始イベントと、当該タスクが実行完了したことを意味する完了イベント、
を指定する。インターフェース部が、当該OS上で実行される一つ以上の制御プログラムのタスクである対象制御タスクについて、当該対象制御タスクのトレースデータに基づくデータである動作ログデータをOSから取得する。対象制御タスクの動作ログデータは、(X)のイベント間の発生時刻の第1の時間間隔の値と、(Y)のイベント間の発生時刻の第2の時間間隔の値とを含む。出力部が、対象制御タスクについて、動作ログデータを基に、第1の時間間隔の値をタスクジッタ値として特定し、第2の時間間隔の値をサイクルタイム値として特定し、対象制御タスクの理想開始イベントのサイクルであるコントロールサイクルの値と、特定されたタスクジッタ値と、特定されたサイクルタイム値とに基づく出力を行う。
【発明の効果】
【0008】
本発明によれば、コントロールサイクル毎に実行されるタスクについてデッドラインミスが生じたか否かを判断可能にすることができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態に係るコントロールシステムを含むシステムの物理構成の一例を示す。
【
図2】コントロールシステムの論理構成の一例を示す。
【
図3】VCPU管理テーブル、タスク管理テーブル、ヒストグラムデータ及びRT性能テーブルの構成例を示す。
【
図4】コントロールサイクル、タスクジッタ及びサイクルタイムの関係の一例を示す。
【
図8】コントロールサイクル、タスクジッタ及びサイクルタイムの関係の別の例を示す。
【発明を実施するための形態】
【0010】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、一つ以上の同種の通信インターフェースデバイスであってもよいし二つ以上の異種の通信インターフェースデバイスであってもよい。
【0011】
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0012】
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
【0013】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0014】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0015】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0016】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0017】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0018】
また、以下の説明では、識別情報の一例として、ID、名前及び番号のいずれかが採用されるが、識別情報は、ID、名前及び番号のうちの少なくとも一つに代えて又は加えて、他種の要素を含んでもよい。
【0019】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。
【0020】
また、以下の説明では、制御プログラムの一例が、制御アプリであり、情報プログラムの一例が、情報アプリである。「アプリ」は、アプリケーションプログラムの略であり、コンピュータプログラムの一例である。
【0021】
図1は、実施形態に係るコントロールシステムを含むシステムの物理構成の一例を示す。
【0022】
コントロールシステム109が、制御対象装置12がある工場10に設置される。制御対象装置12は、例えば、産業用モータやコンプレッサのような産業機器である。工場10は、制御対象装置12のある現場の一例である。
【0023】
管理システム101及びコントロールシステム109が、通信ネットワーク108(例えば、インターネット又はWAN(Wide Area Network))に接続されている。コントロールシステム109は、例えば、工場10内の通信ネットワーク19(例えば、LAN(Local Area Network))に接続されている。コントロールシステム109が、通信ネットワーク19及び108経由で管理システム101と通信できる。通信ネットワーク108及び19は、情報アプリが行う情報通信処理(制御アプリが行う制御処理とは異なる通信処理)の際に使用される通信ネットワークの一例である。
【0024】
コントロールシステム109及び一つ以上のI/Oモジュール119(I/Oポートの一例)が通信ネットワーク118(例えば、イーサネット(登録商標))に接続されている。通信ネットワーク118は、制御アプリが行う制御処理において制御データを制御対象装置12に送信するために使用される通信ネットワークの一例である。
【0025】
通信ネットワーク19、108及び118は、それぞれ異なるネットワークでもよいし、通信ネットワーク19、108及び118のうちの二つ以上の通信ネットワークが同一のネットワークでもよい。
【0026】
一つ以上のI/Oモジュール119に一つ以上の周辺機器120が接続されている。周辺機器120は、センサやメディアドライブ(例えば、HDDやSSD)のような機器でよい。I/Oモジュール119は、周辺機器120が必要に応じて着脱可能に装着されるバススロットとして機能する。制御対象装置12は、周辺機器120経由又は非経由でI/Oモジュール119に接続される。制御対象装置12とI/Oモジュール119は、1:1、1:多、多:1及び多:多のいずれでもよい。また、一部のI/Oモジュール119は、通信ネットワーク118に加えて通信ネットワーク108に接続されてもよい、すなわち、当該一部のI/Oモジュール119は、制御アプリと情報アプリに共有のデバイスであってもよい。また、少なくとも一つのI/Oモジュール119は、少なくとも一つの演算装置40のネットワークI/F装置及びI/O制御装置の少なくとも一部でもよい。
【0027】
管理システム101は、コントロールシステム109の上位システムの一例である。管理システム101は、EPROM201、CPU202、メインメモリ203、周辺制御装置205、不揮発性記憶装置206及びネットワークI/F装置207を備える。管理システム101は、ネットワークI/F装置207を介して通信ネットワーク108に接続されている。
【0028】
コントロールシステム109は、一つ又は複数の演算装置40を備える。各演算装置40が、インターフェース装置、記憶装置及びそれらに接続されたプロセッサを備える。全ての演算装置40は、ハードウェア構成が同じでも異なっていてもよい。いずれの演算装置40も、制御アプリの配置先にも情報アプリの配置先にもなり得てよい。本実施形態では、演算装置40Mは、メインの演算装置であり、制御アプリの配置先であり、且つ、情報アプリの配置先となり得る演算装置である。演算装置40E1及び40E2の各々が、増設された演算装置であり、制御アプリの配置先となり得ず、情報アプリの配置先となり得る演算装置である。演算装置40Eは、減設されてもよい。言い換えれば、演算装置40M単体が、コントロールシステム109になることがあってもよい。以下、演算装置40Mを「コントロール装置40M」と言い、演算装置40Eを「拡張装置40E」と言うことがある。
【0029】
拡張装置40Eが有るか否か、拡張装置40Eがいずれの種類の通信媒体に接続されるか、及び、制御アプリと通信する情報アプリがいずれの演算装置40に配置されるかによって、コントロールシステム109のシステム構成が異なる。つまり、システム構成は、拡張装置40Eの有無、コントロール装置40M及び拡張装置40Eの各々が接続される通信媒体の種類、及び、各アプリの配置先の演算装置40に依存する。
図1の例では、拡張装置40E1は、通信ネットワーク118に接続される。拡張装置40E2は、PIOバス28(バスの一例)に接続される(「PIO」は、Programmed I/Oの略である)。PIOバス28は、ベースボードにプリントされたバスでよく、ベースボードにコントロール装置40Mと拡張装置40E2が接続されていることで、コントロール装置40Mで実行される制御アプリと拡張装置40E2で実行される情報アプリがPIOバス28経由でデータを通信(共有)してよい。
【0030】
なお、制御アプリが拡張装置40Eにも配置可能な実施形態、或いは、いずれの演算装置40も拡張又は減設が可能でありいずれの演算装置40も制御アプリの配置先となり得る実施形態では、システム構成は、制御アプリにも依存する。
【0031】
以上のように、コントロールシステム109は、少なくとも一つのコントロール装置40Mを含む。コントロール装置40Mは、少なくとも一つの制御アプリが配置される演算装置である。コントロール装置40Mの役割は、制御アプリを周期的に実行することで、制御対象装置12を遅延無く制御することにある。
【0032】
制御アプリは、周期的にスキャン処理を行う。「スキャン処理」は、I/O(Input/Output)ポートに接続された機器の情報を読み込むことと、読み込んだ情報を演算することと、演算した情報を書き込むこととを含んだ処理でよい。スキャン処理は、制御処理の一例でよい。
【0033】
コントロール装置40Mを例に取り演算装置40のハードウェア構成を説明すると、例えば次の通りである。すなわち、コントロール装置40Mは、メモリ169(例えば、EPROM208及びメインメモリ210)、周辺制御装置212、I/O制御装置214、不揮発性記憶装置215、ネットワークI/F装置213、及び、それらに接続されたCPU209を備えている。I/O制御装置214及びネットワークI/F装置213が、インターフェース装置の一例である。メモリ169及び不揮発性記憶装置215が、記憶装置の一例である。CPU209がプロセッサの一例である。
【0034】
周辺制御装置212は、ネットワークI/F装置213、I/O制御装置214、不揮発性記憶装置215及びバス211に接続されている。このバス211には、その他にもメモリ169及びCPU209が接続されている。
【0035】
EPROM208には、予め制御アプリ及び情報アプリの少なくとも一つが格納されていてもよいし、プログラム配布サーバ(図示せず)のようなプログラムソースからダウンロードされたプログラムが格納されてもよい。コントロールシステム109に搭載される制御アプリと情報アプリはそれぞれひとつずつだけでなく、コントロールシステム109が使用できるリソースをプログラムごとに設定することにより、複数の制御アプリ及び/又は複数の情報アプリを搭載することができる。
【0036】
CPU209は、EPROM208に格納されている制御アプリ(及び情報アプリ)をメインメモリ210に読み出して実行し、制御アプリ(及び情報アプリ)の動作を制御する。例えば、CPU209は、制御アプリを実行することで、周辺制御装置212、I/O制御装置214及び複数のI/Oモジュール119を介して複数の周辺機器120を制御する。周辺機器120は、I/Oモジュール119に1:1で対応付けられていてよい。また、CPU209は、シングルコアとマルチコアのいずれでもよい。一つのコアが、一つ以上の制御アプリと一つ以上の情報アプリとのうちの少なくとも一つのアプリを実行してよい。典型的には、一つのコアは、一つの制御アプリ、一つの制御アプリと一つ以上の情報アプリ、又は、一つ以上の情報アプリを実行してよい。
【0037】
設定端末29が、通信ネットワーク19を介して(又は通信ネットワーク19を介さずに)、コントロールシステム109(例えば、コントロール装置40M)に接続されている。設定端末29は、例えば、入力デバイス、表示デバイス、インターフェース装置、記憶装置及びそれらに接続されたプロセッサを有する計算機(例えば、デスクトップ型、ラップトップ型又はタブレット型のパーソナルコンピュータ、或いは、スマートフォン)である。設定端末29は、コントロールシステム109に対する指示や設定を行ってよい。設定端末29は、管理システム101の一部であってもよい。また、設定端末29は、コントロールシステム109のクライアント端末として遠隔の(例えばインターネットに接続された)計算機でよい。
【0038】
図2は、コントロールシステム109の論理構成の一例を示す。
【0039】
図2は、コントロールシステム109のうちの、コントロール装置40Mと、拡張装置40E2とを例示する。
【0040】
コントロール装置40Mは、共有メモリ56を有する。共有メモリ56は、メモリ169が有する記憶領域のうちの少なくとも一部である。図示しないが、少なくとも一つの拡張装置40Eにおいても共有メモリが存在してよい。
【0041】
拡張装置40E2は、コントロール装置40Mが接続される通信ネットワーク118に接続される演算装置である。コントロール装置40Mと拡張装置40E2間の通信媒体は、通信ネットワーク118である。コントロール装置40MのネットワークI/F装置213A、及び、拡張装置40E2のネットワークI/F装置213Bが、通信ネットワーク118に接続される。
【0042】
コントロール装置40Mが、WEBサーバ69を実行する。WEBサーバ69は、WEBサーバとして機能するためのプログラムである。WEBサーバ69が、管理システム101及び設定端末29のうちの少なくとも一つと通信する。例えば、WEBサーバ69が、設定端末29から種々の指示や設定を受け付けるユーザインターフェースプログラムの一例である。WEBサーバ69は、コントロール装置40Mに代えて又は加えて、少なくとも一つの拡張装置40Eで実行されてもよい。
【0043】
管理システム101の不揮発性記憶装置206(記憶装置の一例)が、VCPU管理情報73を記憶する。VCPU管理情報73は、例えば、VCPU毎にVCPUイメージとVCPUのIDとを含む。「VCPU」は、仮想CPUを意味し、アプリの実行環境の一例である。VCPUは、例えば、VM(仮想マシン)又はコンテナでよい。
【0044】
管理システム101が、配布部72を有する。配布部72は、VCPUイメージを通信ネットワーク108経由で演算装置40に配布する。演算装置40では、当該VCPUイメージを基に、VCPU37が生成される。VCPU37が、一つ以上のアプリ(本実施形態では、制御アプリ41及び情報アプリ42のいずれか)を実行する。VCPU37が実現された後に、当該VCPU37にアプリが配布部72により配布されてもよいし、VCPUイメージが、アプリのイメージを含んでいて、VCPUイメージを基に、アプリを含んだVCPUが実現されてもよい。
図2が示す例では、コントロール装置40MにVCPU37A及び37Bが配布され、拡張装置40E2にVCPU37Cが配布される。VCPU37Aが、制御アプリ41を実行する。VCPU37Bが、情報アプリ42Aを実行する。VCPU37Cが、情報アプリ42Bを実行する。
【0045】
情報アプリ42は、当該情報アプリ42に定められた情報処理を行うアプリである。
【0046】
制御アプリ41は、当該制御アプリ41について定められたサイクルタイム毎に、制御対象装置12を制御する処理でありリアルタイム性を有する処理であるスキャン処理を行う。
【0047】
各演算装置40において、OS(Operating System)として、後述の計測機能を有しているOS37が採用される。OS37は、制御アプリ41が配置され得る演算装置40において採用されてよい。通信ネットワーク118を介した通信や、共有メモリ56に対する入出力は、OS37経由で行われてよい。制御アプリ41や情報アプリ42の実行タイミングは、OS37(或いは、ランタイムソフトウェア)により制御されてよい。OS37は、リアルタイム汎用OS(情報処理向けの汎用OSの系統ではあるものの必要とされるリアルタイム性を提供できるリアルタイム機能を持ったOS)でよい。
【0048】
OS37上でマネージャ44が実行される。マネージャ44は、OS37のカーネル外の要素の一例である。マネージャ44はOS37に含まれてもよい。マネージャ44が、VCPU管理テーブル91及びタスク管理テーブル92を設定してよい。例えばマネージャ44は、VCPU37と共に実行プログラム(当該VCPU37において実行されるプログラム)のプログラム名を、例えば設定端末29から受け付け、
図3に例示するように、VCPU名301とプログラム名302といった情報をVCPU管理テーブル91に記録する。VCPU名301は、VCUPの名前を表し、プログラム名302は、実行プログラムの名前を表す。また、例えば、マネージャ44は、VCPU37の起動の際に、当該VCPU37の実行プログラムの親タスク(最初に実行されるタスク)及び子タスク(親タスクの後に実行されるタスク)それぞれのタスクIDを取得し、各タスクについて、タスク名311、属性312及びタスクID313といった情報を、タスク管理テーブル92に記録する。タスク管理テーブル92は、例えば、VCPU37の実行プログラム毎に用意され、VCPU37(又は実行プログラム)に関連付けられてよい。タスク名311は、タスクの名前を表し、属性312は、例えば親タスクか子タスクかを表し、タスクID313は、タスクのIDを表す。タスクの実装方法としては、例えば、OS37が実現するプロセスやカーネルスレッド等が用いられてよい。以下、説明を簡単にするために、タスクとプロセス又はスレッドは1:1で対応し、実装方法に関わらず「タスク」と呼ぶことにする。
【0049】
OS37(及びマネージャ44)は、VCPU管理テーブル91及びタスク管理テーブル92を基に、VCPU37、プログラム及びタスクの関係を特定する。VCPU管理テーブル91及びタスク管理テーブル92は、例えばメモリ169又は不揮発性記憶装置215に格納される。
【0050】
OS37は、ヒストリデータ81を記憶装置(例えばメモリ169)に記録する。ヒストリデータ81には、タスクについてイベントが発生する都度に当該タスクの動作詳細エントリ(当該タスクの動作に関する詳細を表すデータ)が追加される。動作詳細エントリは、例えば、発生したイベントの名称、当該イベントが発生したタスクのID、当該タスクの優先度、当該イベントの発生時刻(例えばタイムスタンプ)等を表すデータを含む。動作詳細エントリは、例えばバッファにFIFO(First-In First-Out)形式で格納されてよい。従って、ヒストリデータ81のサイズがバッファのサイズと同じになり(つまりバッファが満杯になり)更に動作詳細エントリが追記される場合には、当該動作詳細エントリは、最も古い動作詳細エントリに上書きされてよい。このように、動作詳細エントリは適宜に削除されてよい。各タスクについて、当該タスクについて記録された動作詳細エントリの集合を、当該タスクのトレースに使用可能なデータとしての「トレースデータ」と言うことができる。
【0051】
OS37(例えばOS37のカーネル)が有する計測機能は、指定されたイベント間の発生時刻の時間間隔を計測する機能である。例えば、計測機能は、指定されたイベント間の発生時刻の時間間隔の統計を得る機能である。具体的には、例えば、OS37は、Linux OS(Linuxは登録商標)でよく、計測機能は、Synthetic eventsに従う機能、具体的には、Histogram Triggersに従う機能(例えば、histogram trigger commandに応答して処理を実行する機能)でよい。計測機能により、タスク(例えば、タスク名“Task1”のタスク(
図3参照))のトレースデータを基に、
図3に例示のヒストグラムデータ82が生成又は更新される。タスクのヒストグラムデータ82は、当該タスクのトレースデータに基づく動作ログデータの一例である。ヒストグラムデータ82は、
図3に例示するように、pid(タスクID)、prio(優先度)、lat(後述の第1の時間間隔の値)、及びhitcount(当該latに該当した回数を表すカウント値)といった情報を含む。ヒストグラムデータ82は、タスク毎(例えば、特に、周期的に実行されるタスク毎)に用意されてよい。なお、「第1の時間間隔」は、後述のsched_wakingイベント(理想開始イベントの一例)とsched_switchイベント(実際開始イベントの一例)との間の発生時刻の時間間隔である。また、ヒストグラムデータ82は、図示していないが、第1の時間間隔の値に加えて、他種の時間間隔の値とその時間間隔の値に該当した回数(カウント値)とを表す情報を含む。具体的には、例えば、ヒストグラムデータ82は、第2の時間間隔(sched_switchイベントと、タスクの実行完了を意味するイベントとの間の発生時刻の時間間隔)の値と、当該値に該当した回数(カウント値)とを含む。
【0052】
マネージャ44が、
図3に例示するように、ヒストグラムデータ82を基に、RT(Real Time)性能テーブル350を生成する。タスク毎にヒストグラムデータ82があり、故に、タスク毎にRT性能テーブルが生成されてよい。RT性能テーブル350は、ヒストグラムデータ82の分析の結果としてのデータであり、例えば、タスク名321、コントロールサイクル322、優先度323、サイクルカウント324、最大サイクルタイム325、平均サイクルタイム326、サイクルタイムSD(SD:標準偏差)327、最大タスクジッタ328、平均タスクジッタ329及びタスクジッタSD330といった情報を含む。タスク名321は、ヒストグラムデータ82におけるpid(タスクID)に対応したタスク名(タスク管理テーブル92から特定されたタスク名)を表す。コントロールサイクル322は、タスクについてのコントロールサイクルの値を表す。優先度323は、タスクのprio(優先度)を表す。サイクルカウント324は、コントロールサイクルが生じた回数を表す。最大サイクルタイム325は、第2の時間間隔の複数の値のうちの最大値を表す。平均サイクルタイム326は、第2の時間間隔の複数の値の平均値を表す。サイクルタイムSD327は、第2の時間間隔の複数の値に基づき得られた標準偏差を表す。最大タスクジッタ328は、第1の時間間隔の複数の値のうちの最大値を表す。平均タスクジッタ329は、第1の時間間隔の複数の値の平均値を表す。タスクジッタSD330は、第1の時間間隔の複数の値に基づき得られた標準偏差を表す。最大サイクルタイム325、平均サイクルタイム326、サイクルタイムSD327、最大タスクジッタ328、平均タスクジッタ329及びタスクジッタSD330は、RT性能を表す値の一例である。RT性能を表す値として他種の値が採用されてもよい。例えば、最大サイクルタイム325及び最大タスクジッタ328以外の種類の値は、オプションでよい。
【0053】
図4は、コントロールサイクル、タスクジッタ及びサイクルタイムの関係の一例を示す。
【0054】
図4では、制御アプリのタスクである制御タスクを例に取る。この一つの制御タスク(典型的には、周期的に実行される制御タスク)を便宜上「対象制御タスク」と呼ぶ。
【0055】
対象制御タスクについてコントロールサイクルが定義されている。「コントロールサイクル」は、対象制御タスクについて、理想開始イベントのサイクルである。「理想開始イベント」は、対象制御タスクが実行開始されるべきことを意味するイベントである。理想開始イベントの一例が、sched_wakingイベントでよい。
図4において、T(T
n、T
n+1、T
n+2、…)が、理想開始イベントの発生時刻である。
【0056】
対象制御タスクのコントロールサイクル毎に、タスクジッタ及びサイクルタイムがある。
【0057】
「タスクジッタ」は、対象制御タスクの理想開始イベントの発生時刻と実際開始イベントの発生時刻との時間間隔、すなわち、対象制御タスクが実行開始されるべき時刻と実際に実行開始された時刻との差(対象制御タスクの開始の遅れ)を表す。「実際開始イベント」は、対象制御タスクが実際に実行開始されたことを意味するイベントである。実際開始イベントの一例が、sched_switchイベントでよい。
図4において、S(S
n、S
n+1、S
n+2、…)が、実際開始イベントの発生時刻である。故に、タスクジッタは、S-T(S
n-T
n、S
n+1-T
n+1、S
n+2-T
n+2、…)である。
【0058】
「サイクルタイム」は、対象制御タスクの実際開始イベントの発生時刻と完了イベントの発生時刻との時間間隔、すなわち、対象制御タスクが実行開始されてから実行完了するまでの時間を表す。「完了イベント」は、対象制御タスクが実行完了したことを意味するイベントである。
図4において、E(E
n、E
n+1、E
n+2、…)が、完了イベントの発生時刻である。故に、サイクルタイムは、C=E-S(C
n=E
n-S
n、C
n+1=E
n+1-S
n+1、C
n+2=E
n+2-S
n+2、…)である。
【0059】
対象制御タスクについての「デッドラインミス」は、対象制御タスクの実行がコントロールサイクル内に完了しないということである。すなわち、「デッドラインミス」は、タスクジッタとサイクルタイムの合計がコントロールサイクルを超えることである。
図4が示す例によれば、タスクジッタ(S
n+2-T
n+2)とサイクルタイムC
n+2(=E
n+2-S
n+2)との合計が、コントロールサイクルを超えており、つまり、デッドラインミスが生じている。
【0060】
デッドラインミス判断(タスクジッタの値とサイクルタイムの値との合計がコントロールサイクルの値を超えているか否かの判断)における「タスクジッタ」及び「サイクルタイム」は、本実施形態では最大タスクジッタ及び最大サイクルタイムであるが、最大タスクジッタに代えて平均タスクジッタのように他種のタスクジッタが採用されてもよいし、最大サイクルタイムに代えて平均サイクルタイムのように他種のサイクルタイムが採用されてもよい。また、ヒストグラムデータ82のような統計データに代えて一つのコントロールサイクルについてイベント間の時間間隔が記述された動作ログデータ(例えばトレースデータそれ自体)が取得される場合、デッドラインミス判断における「タスクジッタ」及び「サイクルタイム」は、動作ログデータに記述されているタスクジッタ及びサイクルタイムでもよい。
【0061】
対象制御タスクは、例えば次のように周期的に実行される。すなわち、理想の実行開始時に(コントロールサイクル開始時に)理想開始イベントが発生し、実際に実行開始される時に実際開始イベントが発生する。やがて実行が完了すると完了イベントが発生し、次の理想の実行開始時までの時間を対象制御タスクのスリープ時間としたタイマ設定がOS37(OS37のカーネル)外からなされる。スリープ時間経過時に理想開始イベントが発生する(つまり次のコントロールサイクルが開始される)。
【0062】
以下、本実施形態で行われる処理の例を説明する。
【0063】
【0064】
OS設定処理は、制御アプリ41の周期的な実行を開始する前の準備段階の処理の一例でよい。OS設定処理では、マネージャ44が、例えば設定端末29からの要求に応答して、OS37(計測機能)に対して、対象制御タスク(例えばタスクID)をOS37に指定する(S501)。マネージャ44が、計測対象の時間間隔を構成するイベント間として、下記(X)及び(Y)を、OS37に指定する(S502)。
(X)タスクが実行開始されるべきことを意味する理想開始イベント(例えばsched_wakingイベント)と、当該タスクが実際に実行開始されたことを意味する実際開始イベント(例えばsched_switchイベント)。
(Y)当該タスクの実際開始イベントと、当該タスクが実行完了したことを意味する完了イベント。
【0065】
OS設定処理は、対象制御タスクに加えて、周期的に実行される各タスク(例えば制御タスク又は後述の情報タスク)について行われてよい。
【0066】
OS設定処理が実行された後、コントロールシステム109は、制御対象装置12の制御を開始する。制御対象装置12の制御においては、対象制御タスクが周期的に実行される。対象制御タスクの周期的な実行において、OS37は、対象制御タスクの実行の都度に、下記を行う。
・OS37は、ヒストリデータ81を更新する(動作詳細エントリを記録する)。
・OS37は、OS設定処理において受け付けた指定に従い、(X)のイベント間の発生時刻の第1の時間間隔と、(Y)のイベント間の発生時刻の第2の時間間隔とを計測する。
・OS37は、ヒストグラムデータ82における、計測された第1の時間間隔及び第2の時間間隔の値に該当するカウント値をそれぞれ更新する。
【0067】
【0068】
マネージャ44が、対象制御タスク(例えばタスクID)を指定したヒストグラムデータ取得要求(例えば、Histogram Triggersに従う機能に対する要求)をOS37に送ることで、対象制御タスクのヒストグラムデータ82をOS37から取得する(S601)。マネージャ44が、ヒストグラムデータ82を分析することで対象制御タスクのサイクルカウント、最大サイクルタイム、平均サイクルタイム、サイクルタイムSD、最大タスクジッタ、平均タスクジッタ及びタスクジッタSDを特定し、特定されたそれらの情報を記述したRT性能テーブル350を生成する(S602)。
【0069】
マネージャ44がデッドラインミス判断を行う場合(S603:YES)(例えば、マネージャ44がデッドラインミス判断を行う機能を有している場合)、マネージャ44が、デッドラインミス判断を行う(S604)。ここでは、最大タスクジッタの値と最大サイクルタイムの値との合計がコントロールサイクルの値を超えているか否かの判断がされる。
【0070】
S604の判断結果が真の場合(S604:YES)、マネージャ44が、対象制御タスクのトレースデータのうち少なくとも一部(例えば直近から一定時間内のデータ)を保存する(S605)。ここでの「保存」は、トレースデータの少なくとも一部を、例えばログファイルとして、不揮発性の記憶領域に書き出すことでよい。なお、S604で、マネージャ44は、制御アプリの一つ又は複数の制御タスクの実行においてメモリ169に書き込まれる制御データの少なくとも一部を保存してもよい(例えばファイルとして不揮発性の記憶領域に書き出してもよい)。
【0071】
S604:NO(S604の判断結果が偽)又はS605の後、マネージャ44は、RT性能情報の表示を行う場合(S606:YES)、例えばWEBサーバ69を通じて、RT性能情報を表示する(S607)。マネージャ44がデッドラインミス判断を行わない場合(S603:NO)(例えば、マネージャ44がデッドラインミス判断を行う機能を有していない場合)も、S607が行われる。
【0072】
【0073】
RT性能画面は、例えば、WEBサーバ69により設定端末29に表示される画面(例えばGUI(Graphical User Interface))である。このため、例えば、
図6に例示した監視出力処理は、WEBサーバ69を通じて設定端末29から監視の要求(例えば、RT性能の表示要求)を受け付けた場合に行われてよい。
【0074】
RT性能画面には、例えば、ユーザにより選択された対象制御タスクについてRT性能情報が表示される。RT性能情報は、
図7に例示するように対象制御タスクのRT性能テーブル350と同じ情報でもよいし、RT性能テーブル350に基づく情報(例えば、RT性能テーブル350の一部)でもよい。この画面から、ユーザが、例えば最大タスクジッタの値と最大サイクルタイムの値との合計がコントロールサイクルの値を超えているか否かの判断をすることができる。この判断の結果が真の場合、デッドラインミスが生じた可能性がある。具体的には、一つのコントロールサイクルにおいて、タスクジッタ及びサイクルタイムのいずれが最大値の場合にはデッドラインミスが生じた可能性が高い。
【0075】
RT性能情報は、S605で保存されたデータ(例えば、トレースデータの少なくとも一部(及び、制御データの少なくとも一部))を含んでいてもよいし、
図7が例示するように、当該データへのリンクを含んでいてもよい。当該リンクがユーザにより指定された場合に、S605で保存されたデータがマネージャ44によりWEBサーバ69を通じて表示されてよい。
【0076】
以上が、本実施形態の説明である。以上の説明を、例えば下記のように総括することができる。下記の総括は、上述の説明の補足及び変形例等を含んでよい。
【0077】
図4を参照して説明したように、OS37にスリープ時間が設定されることで当該スリープ時間経過時に次のコントロールサイクルが開始されるようになっている。このため、OS37はサイクルタイムを知らない。故に、OS37が上述の計測機能を有していてもOS37がデッドラインミスを判断することはできない。
【0078】
また、計測機能は、指定されたイベント間の発生時刻の時間間隔を計測する機能にすぎない。すなわち、そのような計測機能を有するOS37に対してタスクジッタ及びサイクルタイムを指定すればそれらの値を取得することができるわけではない。
【0079】
そこで、本実施形態では、コントロールシステム109が、インターフェース部と出力部とを備える。インターフェース部及び出力部は、例えば、マネージャ44及びWEBサーバ69のうちの少なくともマネージャ44が実行されることにより実現される機能でよい。
【0080】
インターフェース部は、計測対象の時間間隔を構成するイベント間として、下記(X)及び(Y)を、OS37に指定する。
(X)タスクが実行開始されるべきことを意味する理想開始イベントと、当該タスクが実際に実行開始されたことを意味する実際開始イベント。
(Y)当該タスクの前記実際開始イベントと、当該タスクが実行完了したことを意味する完了イベント。
【0081】
対象制御タスクの動作ログデータは、対象制御タスクについて(X)のイベント間の発生時刻の第1の時間間隔の値と、前記対象制御タスクについて(Y)のイベント間の発生時刻の第2の時間間隔の値とを含む。
【0082】
出力部は、対象制御タスクについて、動作ログデータを基に、第1の時間間隔の値をタスクジッタ値として特定し、第2の時間間隔をサイクルタイム値として特定する。出力部は、対象制御タスクについて、理想開始イベントのサイクルであるコントロールサイクルの値と、特定されたタスクジッタ値と、特定されたサイクルタイム値とに基づく出力を行う。
【0083】
これにより、OS37がコントロールサイクルを知らなくても、コントロールサイクル毎に実行される対象制御タスクについてデッドラインミスが生じたか否かを判断することが可能になる。
【0084】
出力部による出力は、対象制御タスクについて、下記(a)と、下記(b)及び(c)のうちの少なくとも一つとを表示することでよい。これにより、ユーザ(例えば管理者)が、対象制御タスクについてデッドラインミスが生じた可能性があるか否かを判断することができる。
(a)コントロールサイクル値。
(b)タスクジッタ値、及び、サイクルタイム値。
(c)タスクジッタ値とサイクルタイム値との合計。
【0085】
対象制御タスクのトレースデータ(ヒストリデータ81におけるデータ)は、メモリ169(例えばバッファ)に一時保存されているデータである。出力部による出力は、対象制御タスクのタスクジッタ値とサイクルタイム値との合計が対象制御タスクのコントロールサイクル値を超えている場合に(例えばS604の判断結果が真の場合に)、対象制御タスクのトレースデータのうち少なくとも一部を保存することと(例えばS605)、対象制御タスクのトレースデータのうち当該少なくとも一部を表示することとの少なくとも一つを行うことでよい。動作詳細エントリ(トレースデータにおけるデータ)は新たな動作詳細エントリが増えるにつれいずれ削除され得る。そこで、対象制御タスクのタスクジッタ値とサイクルタイム値との合計が対象制御タスクのコントロールサイクル値を超えている場合にトレースデータの少なくとも一部を保存及び/又は表示がされることで、タスクジッタ値とサイクルタイム値との合計が対象制御タスクのコントロールサイクル値を超えた原因が特定可能であることが期待される。なお、対象制御タスクのタスクジッタ値とコントロールサイクル値との合計が対象制御タスクのコントロールサイクル値を超えている場合に、更に、一つ以上の制御アプリ41の一つ又は複数の制御タスクの実行においてメモリ169に書き込まれる制御データの少なくとも一部を保存することと、当該少なくとも一部のデータを表示することとの少なくとも一つが行われてもよい。これにより、タスクジッタ値とサイクルタイム値との合計が対象制御タスクのコントロールサイクル値を超えた原因が特定可能であることの期待が高まる。
【0086】
計測機能は、指定されたイベント間の発生時刻の時間間隔の統計を得る機能でよい。動作ログデータは、第1の時間間隔の値及び第2の時間間隔の値それぞれの統計を表すデータ(例えばヒストグラムデータ82)でよい。対象制御タスクについての出力の基になるタスクジッタ値は、第1の時間間隔の複数の値に基づく値(例えば最大値)でよい。対象制御タスクについての出力の基になるサイクルタイム値は、第2の時間間隔の複数の値に基づく値(例えば最大値)でよい。これにより、或る期間における計測の結果を基に当該期間においてデッドラインミスが生じた可能性があるか否かの判断が可能である。
【0087】
コントロールシステム109における複数のプログラムは、制御アプリ41の他に、それぞれ情報処理を行うアプリである一つ以上の情報アプリ42を含んでよい。
図8に例示するように、対象制御タスクのコントロールサイクルにおいて、一つ以上の情報プログラムのタスクのうちの少なくとも一つである対象情報タスクが実行されてよい。対象制御タスクについて、出力は、コントロールサイクルの値と、対象制御タスクについてのタスクジッタの値及びサイクルタイムの値との他に、対象情報タスク(例えば周期的に実行される情報タスク)についてのタスクジッタの値及びサイクルタイムの値に基づいてよい。例えば、コントールサイクルにおいて実行される対象情報タスクが一つの場合、コントールサイクルと比較される要素に、対象制御タスクのタスクジッタ値とサイクルタイム値との合計の他に、対象情報タスクのタスクジッタ値とサイクルタイム値との合計を含んでよい。対象情報タスクについても、理想開始イベント、実際開始イベント及び完了イベントがOS37に指定されてよく、それにより、対象情報タスクのヒストグラムデータ82(動作ログデータの一例)が表す値(第1の時間間隔の値、及び、第2の時間間隔の値)から、対象情報タスクのタスクジッタ値とサイクルタイム値とが特定されてよい。また、対象制御タスクの実行と対象情報タスクの実行との時間間隔は、対象制御タスクの完了イベントと対象情報タスクの理想開始イベントとの発生時刻の差でもよいし、対象情報タスクの完了イベントと対象制御タスクの理想開始イベントとの発生時刻の差でもよい。これにより、一つのコントロールサイクルにおいて制御タスク及び情報タスクが実行される場合でもデッドラインミスが生じたか否かの判断が可能である。なお、
図8が示す例において、対象情報タスクの理想開始イベントの発生時刻はR
nであり、対象情報タスクの実際開始イベントの発生時刻はS
inであり、対象情報タスクの完了イベントの発生時刻はE
inである。
【0088】
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、コントロールシステム109は、一つ以上の演算装置40を備えた物理的なシステムに代えて、物理的なシステム(例えばクラウド基盤)上で実現される論理的なシステム(例えば、クラウドコンピューティングサービスとしてのシステム)でもよい。また、例えば、
図6において、S603~S606はオプションでよい。
【符号の説明】
【0089】
109…コントロールシステム