(57)【要約】【課題】制御プログラムと情報プログラムの両方が実行される産業用コントローラのメモリに情報プログラムの情報処理において読込み対象のデータセットが存在する可能性を高める。【解決手段】メモリが、制御対象装置に関するデータセットが書き込まれるメモリ領域を含む。制御プログラムは、制御対象装置の制御と、当該制御対象装置に関するデータセットの取得と、当該データセットをメモリ領域に書き込むこととを含んだ処理である制御処理を行い、当該制御処理において、当該データセットをメモリ領域の他のデータセットが格納された領域及び空き領域に書き込み可能である。情報プログラムは、データセットをメモリ領域から読み込んで情報処理を行う。制御プログラムのメモリ領域への書き込みは、所定の周期で実行される。産業用コントローラが、情報プログラムが処理するデータセットを、その処理前にメモリ領域上で管理する管理部を備える。【選択図】図２
2020095549.tif 000002
【特許請求の範囲】
【請求項１】
制御対象装置を制御しプロセッサ及びメモリを有する産業用コントローラであって、
前記プロセッサが、ＯＳ（Operating System）を実行し、
前記メモリが、前記制御対象装置に関するデータセットが書き込まれるメモリ領域を含み、
前記ＯＳ上の複数のプログラムは、
前記制御対象装置の制御と、当該制御対象装置に関するデータセットの取得と、当該データセットを前記メモリ領域に書き込むこととを含んだ処理である制御処理を行い、当該制御処理において、当該データセットを前記メモリ領域の他のデータセットが格納された領域及び空き領域に書き込み可能である制御プログラムと、
前記データセットを前記メモリ領域から読み込んで情報処理を行う情報プログラムと
を含み、
前記制御プログラムの前記メモリ領域への書き込みは、所定の周期で実行され、
前記情報プログラムが処理する前記データセットを、その処理前に前記メモリ領域上で管理する管理部を備えた
ことを特徴とする産業用コントローラ。
【請求項２】
前記管理部は、前記ＯＳのカーネルとして実装される
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項３】
前記管理部は、前記ＯＳ上でコンテナとして稼働する
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項４】
前記管理部及び情報プログラムは、周期的実行され、
前記管理部は、前記情報プログラムよりも実行頻度が高い
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項５】
前記管理部、前記制御プログラム及び情報プログラムは、同時に実行される場合の優先度が定められており、
前記管理部及び前記制御プログラムは、前記情報プログラムよりも優先度が高い
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項６】
前記管理部は、情報プログラムが処理する前記データセットを、その処理前に前記メモリ領域上に格納位置を変更する
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項７】
前記管理処理は、前記情報プログラムの読込み頻度に従う範囲に属する複数のデータセットからデータセットを選別する処理である選別処理を含み、
前記選別されたデータセットは、前記情報プログラムが読み込みこむまでに前記制御プログラムに上書きされないように管理される
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項８】
前記管理処理は、前記読込み頻度に従う範囲に属する複数のデータセットのうちの二つ以上のデータセットを加工し、当該加工後のデータセットを前記メモリ領域に書き込む加工処理を含む
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項９】
単位時間範囲の指定を受け付ける指定受付部を更に備え、
前記管理処理は、前記情報プログラムの読込み頻度に従う範囲のうち、指定された単位時間範囲に属するデータセットが所定の異常条件を満たしている場合、当該管理処理後の前記情報処理においてデータセットと共に読み込まれる情報として、異常を示す異常情報を設定することを含む
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項１０】
前記メモリ領域内の前記情報プログラムが未読込みの読込み対象のデータセットに、新たなデータセットが前記制御プログラムにより上書きされた場合、当該読込み対象のデータセットの読み込みが不可であることを示す情報である読込み不可情報を出力する出力部を更に備える
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項１１】
前記読込み不可情報が、前記情報プログラムによる読み込みに対する応答に付随して当該情報プログラムに出力される
ことを特徴とする請求項１０に記載の産業用コントローラ。
【請求項１２】
前記メモリ領域に書き込まれるデータセットは、前記メモリ領域に対するインターフェースであるメモリインターフェースによって、圧縮されたデータセットであり、
前記メモリ領域から読み込まれ前記情報プログラムに送られるデータセットは、前記メモリインターフェースによって、解凍されたデータセットである
ことを特徴とする請求項１に記載の産業用コントローラ。
【請求項１３】
制御対象装置を制御しプロセッサ及びメモリを有する産業用コントローラにより実行されるデータ管理方法であって、
前記プロセッサが、ＯＳ（Operating System）を実行し、
前記メモリが、前記制御対象装置に関するデータセットが書き込まれるメモリ領域を含み、
ＯＳ上の複数のプログラムは、
前記制御対象装置の制御と、当該制御対象装置に関するデータセットの取得と、当該データセットを前記メモリ領域に書き込むこととを含んだ処理である制御処理を行い、当該制御処理において、当該データセットを前記メモリ領域の他のデータセットが格納された領域及び空き領域に書き込み可能である制御プログラムと、
前記データセットを前記メモリ領域から読み込んで情報処理を行う情報プログラムと
を含み、
前記データ管理方法が、
前記制御プログラムの前記メモリ領域への書き込みを、所定の周期で実行し、
前記情報プログラムが前記データセットを処理する前に管理部を実行することにより当該データセットをその処理前に前記メモリ領域上で管理する
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、産業用コントローラに関する。
【背景技術】
【０００２】
一般に、産業用コントローラの役割は、制御プログラムを周期的に実行することで、制御対象装置を遅延無く制御することにある。産業用コントローラは、プロセッサ及びメモリといったハードウェア資源を有するが、役割を担うのに必要なハードウェア資源は、一般的な計算機のハードウェア資源に比べて少なくて済むため、通常、産業用コントローラのハードウェア資源の量は、一般的な計算機に比べて少ない。
【０００３】
ハードウェア資源の一つとして、メモリがある。メモリの使用に関する技術として、例えば特許文献１に開示の技術が知られている。特許文献１に開示の技術は、空き容量が少ない場合には、データ属性に基づき、保存されているデータから削除すべきデータを削除する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2005-18539号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御プログラムの他に、制御対象装置の制御と異なる処理を含んだ情報処理を行う情報プログラム（典型的には複数の情報プログラム）も実行する産業用コントローラが検討される。
【０００６】
この種の産業用コントローラでは、資源節約の観点から、制御プログラムと情報プログラムにメモリが共有されることが望ましい。具体的には、例えば、制御プログラムは、一定の周期で動作し、当該動作において、制御対象装置に関するデータセットをメモリ内のメモリ領域に書き込む。情報プログラムは、所定の読込み頻度で、読込み頻度に従う範囲に属するデータセット（すなわち、今回の読込み対象のデータセット）をメモリ領域から読み込む（読み込まれたデータセットは、例えば、情報プログラムによる所定の演算において使用される、或いは、分析サーバのような上位システムへ送信される）。
【０００７】
この種の産業用コントローラでは、通常、制御プログラムの実行が、情報プログラムの実行よりも優先される。なぜなら、上述したように、産業用コントローラの役割は、制御対象装置を遅延無く制御することにあるから（つまり、リアルタイム性の維持が重要であるから）である。各周期において、制御プログラムは、メモリ領域の空き容量が不足している場合、メモリ領域におけるいずれかのデータセットに、新たなデータセットを上書きする。
【０００８】
情報プログラムは、制御プログラムに比べて優先度が低い。このため、情報処理におけるデータ読込み処理が遅延する可能性がある。このため、メモリ領域のデータセットが上書きされ欲しいデータセットを取得することができない場合がある。少なくともデータ読込み処理まで読込み対象のデータセットが保存されていることが望ましいが、メモリ領域の空き容量が不足している場合、制御プログラムは、新たなデータセットを上書きせざるを得ない。
【０００９】
特許文献１に開示の技術を利用すれば、データ削除によりメモリ領域に空き容量を増やすことができ、以って、上書きがされる可能性を低減できる。しかし、データ削除は、データそれ自体の属性を基に行われるため、データセットの属性によっては、読込み頻度に従う範囲に属する全てのデータセットが、データ読込み処理の前に削除されてしまう可能性がある。
【００１０】
なお、「メモリ領域のデータセットが上書きされ欲しいデータセットを取得することができない場合がある」という問題は、メモリ容量の多寡に関わらずに生じ得る。例えば、一般に、制御プログラムは、産業用コントローラに共存する情報プログラムに依存すること無しに作成される。そのような制御プログラムは、メモリにデータセットを書き込んでも、当該データセットが当該制御プログラムにとって不要であれば、メモリ消費量を節約する等の目的から、情報プログラムが当該データセットを取得したか否かに関わらず、メモリにおける当該データセットに新たなデータセットを上書きすることを行い得る。
【課題を解決するための手段】
【００１１】
制御対象装置を制御しプロセッサ及びメモリを有する産業用コントローラにおいて、プロセッサが、ＯＳ（Operating System）を実行し、メモリが、制御対象装置に関するデータセットが書き込まれるメモリ領域を含む。ＯＳ上の複数のプログラムは、制御プログラムと情報プログラムとを含む。制御プログラムは、制御対象装置の制御と、当該制御対象装置に関するデータセットの取得と、当該データセットをメモリ領域に書き込むこととを含んだ処理である制御処理を行い、当該制御処理において、当該データセットをメモリ領域の他のデータセットが格納された領域及び空き領域に書き込み可能である。情報プログラムは、データセットをメモリ領域から読み込んで情報処理を行う。制御プログラムのメモリ領域への書き込みは、所定の周期で実行される。産業用コントローラが、情報プログラムが処理するデータセットを、その処理前にメモリ領域上で管理する管理部を備える。
【発明の効果】
【００１２】
本発明によれば、制御プログラムと情報プログラムの両方が実行される産業用コントローラのメモリに情報プログラムの情報処理において読込み対象のデータセットが存在する可能性を高めることができる。
【図面の簡単な説明】
【００１３】
【図１】実施例１に係る産業用コントローラを含むシステムのハードウェア構成を示す。
【図２】実施例１に係る産業用コントローラのソフトウェア構成を示す。
【図３】データ管理テーブルの構成を示す。
【図４】頻度データの構成を示す。
【図５】制御ＡＰの処理の流れを示す。
【図６】情報ＡＰの処理の流れを示す。
【図７】スケジューラの処理の流れを示す。
【図８】管理部の処理の流れを示す。
【図９】選別処理の一例を模式的に示す。
【図１０】加工処理の一例を模式的に示す。
【図１１】ウィンドウに属するデータセットのチェックの一例を模式的に示す。
【図１２】読込み不可通知の一例を模式的に示す。
【図１３】頻度調整を模式的に示す。
【図１４】枯渇時刻の推定と出力を模式的に示す。
【図１５】実施例２に係る産業用コントローラのソフトウェア構成を示す。
【発明を実施するための形態】
【００１４】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、一つ以上の同種の通信インターフェースデバイスであってもよいし二つ以上の異種の通信インターフェースデバイスであってもよい。
【００１５】
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【００１６】
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）であり、具体的には、例えば、ＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）である。
【００１７】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【００１８】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサモジュールである。少なくとも一つのプロセッサモジュールは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサデバイスであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサモジュールは、プロセッサコアでもよい。
【００１９】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び／又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ（或いは、そのプロセッサを有するコントローラのようなデバイス）とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００２０】
また、以下の説明では、「ｋｋｋ部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び／又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００２１】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、情報を説明することがあるが、当該情報は、どのような構造のデータでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００２２】
また、以下の説明では、「データセット」とは、アプリケーションプログラムのようなプログラムから見た一つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
【００２３】
また、以下の説明では、制御プログラムの一例が、制御ＡＰであり、情報プログラムの一例が、情報ＡＰである。「ＡＰ」は、アプリケーションプログラムの略である。
【実施例１】
【００２４】
図１は、実施例１に係る産業用コントローラを含むシステムのハードウェア構成を示す。
【００２５】
分析サーバ１０１及び産業用コントローラ１０９が、情報ネットワーク１０８に接続されている。また、産業用コントローラ１０９及び一つ以上のＩ／Ｏモジュール１１９（Ｉ／Ｏポートの一例）が制御ネットワーク１１８に接続されている。情報ネットワーク１０８は、情報ＡＰが行う情報通信処理（つまり、制御情報の送信とは異なる通信処理）の際に使用される通信ネットワークである。制御ネットワーク１１８は、制御ＡＰが行う制御情報送信の際に使用される通信ネットワークである。情報ネットワーク１０８及び制御ネットワーク１１８は、異種のネットワークでもよいし、同種のネットワーク（例えばいずれもＬＡＮ（Local Area Network））でもよい。また、情報ネットワーク１０８の少なくとも一部と制御ネットワーク１１８の少なくとも一部が一体であってもよい。
【００２６】
一つ以上のＩ／Ｏモジュール１１９に一つ以上の周辺機器１２０が接続されている。周辺機器１２０は、センサ及びドライブなどの少なくとも１つの機器である。Ｉ／Ｏモジュール１１９は、周辺機器１２０が必要に応じて着脱可能に装着されるバススロットとして機能する。制御対象装置は、周辺機器１２０経由又は非経由でＩ／Ｏモジュール１１９に接続される。制御対象装置とＩ／Ｏモジュール１１９は、１：１、１：多、多：１及び多：多のいずれでもよい。また、一部のＩ／Ｏモジュール１１９は、制御ネットワーク１１８に加えて情報ネットワーク１０８に接続されてもよい、すなわち、当該一部のＩ／Ｏモジュール１１９は、制御ＡＰと情報ＡＰに共有のデバイスであってもよい。
【００２７】
分析サーバ１０１は、産業用コントローラ１０９の上位システムの一例である。分析サーバ１０１は、ＥＰＲＯＭ２０１、ＣＰＵ２０２、メインメモリ２０３、周辺制御装置２０５、不揮発性記憶装置２０６及びネットワークインターフェース（図示のネットワークＩ／Ｆに相当）２０７を備える。分析サーバ１０１は、ネットワークインターフェース２０７を介して情報ネットワーク１０８に接続されている。
【００２８】
産業用コントローラ１０９は、メモリ１６９（例えば、ＥＰＲＯＭ２０８及びメインメモリ２１０）、周辺制御装置２１２、Ｉ／Ｏ制御装置２１４、不揮発性記憶装置２１５、ネットワークインターフェース（図示のネットワークＩ／Ｆに相当）２１３、及び、それらに接続されたＣＰＵ２０９を備えている。Ｉ／Ｏ制御装置２１４及びネットワークＩ／Ｆ２１３が、インターフェース装置の一例である。ＣＰＵ２０９がプロセッサの一例である。
【００２９】
周辺制御装置２１２は、ネットワークＩ／Ｆ２１３、Ｉ／Ｏ制御装置２１４、不揮発性記憶装置２１５及びバス２１１に接続されている。このバス２１１には、その他にもメモリ１６９及びＣＰＵ２０９が接続されている。
【００３０】
ＥＰＲＯＭ２０８には、予め制御ＡＰ及び情報ＡＰの少なくとも一つが格納されていてもよいし、プログラム配布サーバ（図示せず）のようなプログラムソースからダウンロードされたプログラムが格納されてもよい。産業用コントローラ１０９に搭載される制御ＡＰと情報ＡＰはそれぞれひとつずつだけでなく、産業用コントローラ１０９が使用できるリソースをプログラムごとに設定することにより、複数の制御ＡＰ及び／又は複数の情報ＡＰを搭載することができる。
【００３１】
ＣＰＵ２０９は、ＥＰＲＯＭ２０８に格納されている制御ＡＰ及び情報ＡＰをメインメモリ２１０に読み出して実行し、これら制御ＡＰ及び情報ＡＰの動作を制御する。例えば、ＣＰＵ２０９は、制御ＡＰを実行することで、周辺制御装置２１２、Ｉ／Ｏ制御装置２１４及び複数のＩ／Ｏモジュール１１９を介して複数の周辺機器１２０を制御する。周辺機器１２０は、Ｉ／Ｏモジュール１１９に１：１で対応付けられていてよい。
【００３２】
図２は、産業用コントローラ１０９のソフトウェア構成を示す。
【００３３】
まず、産業用コントローラ１０９の概要は、以下の通りである。
【００３４】
産業用コントローラ１０９において、上述したように、ＣＰＵ２０９が、制御ＡＰ１１４及び情報ＡＰ１１５を実行するが、具体的には、ＣＰＵ２０９が、ＯＳ（Operating System）２８６を実行し、当該ＯＳ２８６が、制御ＡＰ１１４及び情報ＡＰ１１５を実行する。メモリ１６９のメモリ領域の一例として、データ管理テーブル２８１がある。また、メモリ１６９には、データ管理テーブル２８１の他に、読込み頻度、例えば、読込み頻度が記述された頻度データ２８２も格納される。
【００３５】
制御ＡＰ１１４は、制御処理を行う。制御処理は、制御対象装置の制御と、当該制御対象装置に関する測定データセット（制御対象装置に関するデータセットの一例）の取得と、当該測定データセットをデータ管理テーブル２８１に書き込むこととを含んだ処理である。測定データセットは、制御対象装置に関する一つ以上の測定項目（例えば、温度、電流）にそれぞれ対応した一つ以上の測定値（例えば、温度値、電流値）を含んだデータセットである。制御対象装置に関する一つ以上の測定値の各々は、Ｉ／Ｏモジュール１１９及びＩ／Ｏ制御装置２１４経由で取得される。取得される測定データセットに含まれる少なくとも一つの測定値は、典型的には、センサ等によって計測された値であるが、少なくとも一つの測定項目については、計測された値の時系列を基に推定された値でもよい。制御処理において、制御ＡＰ１１４は、当該データセットをデータ管理テーブル２８１のうち他のデータセットが格納された領域及び空き領域に書き込むことができるようになっている。例えば、制御処理において、データ管理テーブル２８１の空き容量が第一の容量未満の場合には（或いは、空き容量の多寡に関わらずに）、制御ＡＰ１１４は、取得された測定データセットを、データ管理テーブル２８１に既存のいずれかの測定データセット（例えば最も古い測定データセット）に上書きする。「データ管理テーブル２８１の空き容量が第一の容量未満」とは、例えば、空きのレコードの数が１未満（つまりゼロ）のことである。
【００３６】
情報ＡＰ１１５は、データセットをデータ管理テーブル２８１から読み込んで情報処理を行う。例えば、情報ＡＰ１１５は、頻度データ２８２が示す読込み頻度に従う範囲に属する測定データセットをデータ管理テーブル２８１から読み込み、制御対象装置の制御と異なる処理としての情報処理を行う。「制御対象装置の制御と異なる処理」としては、例えば、頻度データ２８２を登録又は更新することであってもよいし、その他の処理であってもよい。また、「読込み頻度に従う範囲に属する測定データセット」とは、例えば、読込み頻度が“ｐ秒”の場合、ｐ秒間隔に属する少なくとも一つの測定データセットである。具体的には、例えば、周期Ｃが０．５秒であり、読込み頻度が１秒の場合、或る読込みから次の読込みの間に二つの測定データセットがデータ管理テーブル２８１に書き込まれることになるが、「読込み頻度に従う範囲に属する測定データセット」は、その二つの測定データセットのうち最も先に取得され書き込まれた測定データセットでよい。また、本実施例では、情報処理は、読み込まれた測定データセットを分析サーバ１０１に送信することも含む。
【００３７】
ＯＳ２８６の中に、情報ＡＰ１１５が処理するデータセットをその処理前にデータ管理テーブル２８１について管理する管理部２９４が存在する。管理部２９４は、例えば、カーネルである。なお、「管理部」は、ＯＳ２８６の外にあってもよい。
【００３８】
ＯＳ２８６により、下記の制御が行われる。
・制御ＡＰ１１４は、所定の周期で実行される。なお、制御ＡＰ１１４の実行周期を、以下、「周期Ｃ」と言い、ｘ番目（ｘは自然数）の周期Ｃを、「周期Ｃｘ」と言う。
・情報ＡＰ１１５は、各周期Ｃにおいて、制御ＡＰ１１４の実行終了後に実行された場合、次の周期までに情報処理が完了するか否かに関わらずに当該次の周期までに終了される。
・管理部２９４は、各周期Ｃにおいて、制御ＡＰ１１４の実行終了から情報ＡＰ１１５の実行開始までの間に実行される。
【００３９】
各周期Ｃにおいて、管理部２９４は、管理処理を行う。管理処理は、情報ＡＰ１１５が処理するデータセットをその処理前にデータ管理テーブル２８１から無くならないよう管理する処理である。例えば、管理処理は、下記のうちの少なくとも一つを含んでよい。
・情報ＡＰ１１５が処理するデータセットを、その処理前にデータ管理テーブル２８１上に格納位置を変更すること（例えば、情報ＡＰ１１５の処理開始までに所定の領域に退避しておき情報ＡＰ１１５の処理開始直前までにデータ管理テーブル２８１に戻すこと）。
・制御ＡＰ１１４がデータ管理テーブル２８１の空き領域に優先的にデータセットを書き込むようになっていれば（データ管理テーブル２８１に空き領域が無い場合に限り上書きをするようになっていれば）、少なくともデータ管理テーブル２８１の空き容量が第二の容量未満の場合に、頻度データ２８２が示す読込み頻度に従う範囲に属する複数のデータセットのうち対象とされたデータセットを削除すること。なお、「データ管理テーブル２８１の空き容量が第二の容量未満」とは、例えば、空きのレコードの数が１未満（つまりゼロ）のことである。第二の容量は、第一の容量と同じでも異なっていてもよい。
【００４０】
このように、産業用コントローラ１０９では、例えば或る周期Ｃｎにおいて、制御ＡＰ１１４の実行終了から情報ＡＰ１１５の実行開始までの間に管理処理を行う。これにより、情報ＡＰ１１５による読込みが次の周期Ｃ（ｎ＋１）へ遅延したとしても、当該次の周期Ｃ（ｎ＋１）において、未だ読み込まれていない測定データセットの読み込みの前に、制御ＡＰ１１４により当該測定データセットに新たな測定データセットが上書きされることは無い。このため、制御ＡＰ１１４と情報ＡＰ１１５の両方が実行される産業用コントローラ１０９のデータ管理テーブル２８１に情報ＡＰ１１５の情報処理において読込み対象の測定データセットが存在する可能性が高まる。
【００４１】
以下、産業用コントローラ１０９の詳細を説明する。なお、以下の説明では、説明の簡単化のために、一つの制御ＡＰ１１４と一つの情報ＡＰ１１５を例に取る。一つの制御ＡＰ１１４につき、複数の情報ＡＰ１１５が存在してもよいし、一つの情報ＡＰ１１５につき、複数の制御ＡＰ１１４が存在してもよい。また、産業用コントローラ１０９は、例えば、ＳＤＣ（Software-Defined Controller）である。ＳＤＣは、制御対象装置の「制御」に影響を与えずに上位システム（本実施例では分析サーバ１０１）に応じて機能（ここでは情報ＡＰ１１５）を柔軟に追加、変更又は削除できるコントローラである。また、管理処理は、データ管理テーブル２８１からデータセットを削除することで空き容量を増やすことを含む必要は無いが、制御ＡＰ１１４がデータ管理テーブル２８１の空き領域に優先的にデータセットを書き込むようになっていれば、データ管理テーブル２８１からデータセットを削除することを管理処理が含むことは有効である。
【００４２】
産業用コントローラ１０９のＣＰＵ２０９は、ＯＳ２８６を実行する。ＯＳ２８６上で、制御ＡＰ実行部１１１及び情報ＡＰ実行部１１２が動作する。制御ＡＰ実行部１１１は、例えばランタイムライブラリであり、制御ＡＰ１１４からの呼び出しに応じて制御ＡＰ１１４とともに動作する。情報ＡＰ実行部１１２は、例えばいわゆるライブラリであり、情報ＡＰ１１５からの呼び出しに応じて情報ＡＰ１１５とともに動作する。
【００４３】
産業用コントローラ１０９では、制御ＡＰ１１４の優先度が情報ＡＰ１１５の優先度よりも高い。すなわち、制御ＡＰ１１４の実行が、情報ＡＰ１１５の実行よりも優先される。なぜなら、産業用コントローラ１０９の役割は、制御対象装置を遅延無く制御することにあるから（つまり、リアルタイム性の維持が重要であるから）である。
【００４４】
ＯＳ２８６が、一つ以上のＡＰＩ（Application Programming Interface）、管理部２９４及びスケジューラ２９５を含む。一つ以上のＡＰＩのうちの少なくとも一つは、ＯＳ２８６の外に存在してもよい。
【００４５】
一つ以上のＡＰＩは、例えば、共有ＡＰＩ２８９及び頻度ＡＰＩ２９３を含む。共有ＡＰＩ２８９は、メモリインターフェースの一例であり、制御ＡＰ１１４及び情報ＡＰ１１５の共有メモリ領域（本実施例では、データ管理テーブル２８１が存在するメモリ領域）に対するＩ／ＯのためのＡＰＩである。本実施例では、共有ＡＰＩ２８９は、書込みの際に使用される書込みＡＰＩ２９１と、読込みの際に使用される読込みＡＰＩ２９２とで構成される。書込みＡＰＩ２９１は、全ての制御ＡＰ１１４に共通でよく、読込みＡＰＩ２９２は、全ての情報ＡＰ１１５に共通でよい。頻度ＡＰＩ２９３は、頻度データ２８２の登録又は更新や読込みの際に使用される。また、いずれのＡＰＩも、制御ＡＰ１１４及び情報ＡＰ１１５のうちの少なくとも一つのためのＡＰＩでよいが、管理部２９４により使用されてもよい。また、管理部２９４からメモリ１６９へのアクセスは、共有ＡＰＩ２８９及び頻度ＡＰＩ２９３経由とは違う経路でよい。
【００４６】
管理部２９４は、上述した管理処理を行うカーネルである。つまり、管理部２９４は、ＯＳ２８６のカーネルとして実装される。
【００４７】
スケジューラ２９５は、制御ＡＰ１１４、情報ＡＰ１１５及び管理部２９４の実行を制御する。また、スケジューラ２９５は、ＡＰＩの実行も制御する。
【００４８】
メモリ１６９は、上述したように、データ管理テーブル２８１及び頻度データ２８２を格納する。
【００４９】
分析サーバ１０１は、測定データベース（図示の測定ＤＢに相当）１０４、ＤＢ処理部１０２及び分析部１０３を備える。
【００５０】
測定ＤＢ１０４は、測定データセットを格納するデータベースである。
【００５１】
ＤＢ処理部１０２は、情報ＡＰ１１５から測定データセットを受信し、当該測定データセットを測定ＤＢ１０４に格納する。
【００５２】
分析部１０３は、測定ＤＢ１０４から分析対象範囲に属する測定データセットを読み込み、当該測定データセットを用いた分析を行う。
【００５３】
図３は、データ管理テーブル２８１の構成を示す。
【００５４】
データ管理テーブル２８１が有する各レコードに、一つの測定データセットが格納される。各レコードが、取得ＩＤ、及び、一つ以上の測定項目にそれぞれ対応した一つ以上の測定値を格納する。
【００５５】
取得ＩＤは、周期と測定時刻とのうちの少なくとも一つに従うＩＤである。例えば、取得ＩＤは、周期ＩＤ（例えば、Ｃｘ）と、測定時刻との組み合わせでもよい。取得ＩＤを参照することで、或る情報処理において、いずれの測定データセットが、読込み頻度の範囲に従う測定データセットであるかを特定することができる。
【００５６】
各レコードにおいて、一つ以上の測定値の各々が、測定データセットの構成要素である。
【００５７】
図４は、頻度データ２８２の構成を示す。
【００５８】
頻度データ２８２は、読込み頻度を示す。なお、本実施例では、頻度データ２８２は、全ての情報ＡＰ１１５について共通であるが、情報ＡＰ１１５毎に異なる頻度データ２８２が用意されてもよいし、測定項目毎に用意されてもよい。
【００５９】
図５は、制御ＡＰ１１４の処理の流れを示す。Ｓ５０１〜Ｓ５０３が、制御処理に含まれる処理である。Ｓ５０１〜Ｓ５０３のうちの少なくともＳ５０１が、後述のスキャン動作に該当する処理である。
【００６０】
制御ＡＰ１１４は、スケジューラ２９５により起動されると、制御対象装置を制御する（Ｓ５０１）。制御ＡＰ１１４は、制御対象装置に関する測定データセットを取得す（Ｓ５０２）。制御ＡＰ１１４は、書込みＡＰＩ２９１を呼び出し（Ｓ５０３）、それにより、取得した測定データセットをデータ管理テーブル２８１に書込む。
【００６１】
制御ＡＰ１１４は、Ｓ５０３を終えると、次の周期の開始まで（スケジューラ２９５により次に起動されるまで）停止する（Ｓ５０４）。
【００６２】
図６は、情報ＡＰ１１５の処理の流れを示す。
【００６３】
情報ＡＰ１１５は、スケジューラ２９５により起動されると、制御対象装置の制御と異なる所定の処理を行う。本実施例では、当該処理として、情報ＡＰ１１５は、頻度ＡＰＩ２９３を呼び出し（Ｓ６０１）、それにより、頻度データ２８２を登録又は更新する。なお、Ｓ６０１では、頻度ＡＰＩ２９３の呼出しに代えて又は加えて、別の処理が行われてよい。
【００６４】
情報ＡＰ１１５は、読込みＡＰＩ２９２を呼び出し（Ｓ６０２）、それにより、Ｓ６０１において登録又は更新された頻度データ２８２が示す読込み頻度に従う範囲に属する測定データセット（つまり、読込み対象の測定データセット）をデータ管理テーブル２８１から読み込む。測定データセットの読込みは、今回の情報処理の開始時刻と、データ管理テーブル２８１における取得ＩＤとを基に行われる。Ｓ６０２では、読込み対象の測定データセットは、例えば、読込み頻度（例えばｐ秒）と周期Ｃ（例えばｑ秒（典型的にはｑ≦ｐ））との関係に従う測定データセット（例えば、ｐ秒間に取得された一つ以上の測定データセットのうちの最新の測定データセット）である。
【００６５】
情報ＡＰ１１５は、Ｓ６０２で読み込まれた測定データセットを分析サーバ１０１へ送信する。
【００６６】
情報ＡＰ１１５は、Ｓ６０３を終えると、スケジューラ２９５により次に起動されるまで停止する（Ｓ６０４）。
【００６７】
Ｓ６０２では、今回の情報処理での読込み対象の測定データセットに加えて、当該測定データセット以外の測定データセットのうちの過去の未読込みの測定データセット（例えば、前回の情報処理での読込み対象の測定データセット）が読み込まれていなかった場合には、今回の情報処理での読込み対象の測定データセットに加えて当該過去の未読込みの測定データセットも読み込まれてよい。この場合、Ｓ６０３では、読み込まれた全ての測定データセットが分析サーバ１０１へ送信される。
【００６８】
また、Ｓ６０２では、読込みＡＰＩ２９２により読み込まれた測定データセットは、情報ＡＰ１１５又は読込みＡＰＩ２９２により、新たな測定データセットが書き込まれてよい状態とされてよい（例えば、無効化、又は、データ管理テーブル２８１から削除されてよい）。
【００６９】
また、例えば、複数の情報ＡＰ１１５が存在する場合、各情報ＡＰ１１５について、当該情報ＡＰ１１５により読み込まれるデータセットは、測定データセットのうちの一部、つまり、所定の測定項目に対応した測定値でよい。複数の情報ＡＰ１１５の各々が情報処理を行うことで測定データセットにおける全ての測定値が読み込まれてもよい。なお、この場合、測定データセットは、複数のデータセットの集合でよく、個々のデータセットは、一つ（又は複数）の測定値でよい。
【００７０】
図７は、スケジューラ２９５の処理の流れを示す。
【００７１】
スケジューラ２９５は、周期Ｃの開始であれば（Ｓ７０１：Ｙｅｓ）、制御ＡＰ１１４を実行（起動）する（Ｓ７０２）。
【００７２】
スケジューラ２９５は、制御ＡＰ１１４が終了したら（Ｓ７０３：Ｙｅｓ）、管理部２９４を実行（起動）する（Ｓ７０４）。
【００７３】
スケジューラ２９５は、管理部２９４が終了し（Ｓ７０５：Ｙｅｓ）、頻度データ２８２が示す読込み頻度に従うタイミングの場合（Ｓ７０６：Ｙｅｓ）、情報ＡＰ１１５を実行（起動）する（Ｓ７０７）。スケジューラ２９５は、情報ＡＰ１１５実行中もある間隔で周期Ｃかどうかを判定し、周期Ｃの場合は一旦情報ＡＰ１１５の処理を停止してから制御ＡＰを実行する（Ｓ７０２）。停止した情報ＡＰ１１５は、管理部２９４の実行（Ｓ７０５）後に処理を再開する。
【００７４】
情報ＡＰ１１５が終了したら（Ｓ７０３：Ｙｅｓ）、処理が、Ｓ７０１に戻る。周期Ｃの開始でなく（Ｓ７０１：Ｎｏ）、且つ、実行対象の別の情報ＡＰ１１５があれば（Ｓ７０６：Ｙｅｓ）、スケジューラ２９５は、当該別の情報ＡＰ１１５を実行する（Ｓ７０７）。
【００７５】
なお、情報ＡＰ１１５が終了していないが（Ｓ７０８：Ｎｏ）、周期Ｃの開始であれば（Ｓ７０９：Ｙｅｓ）、スケジューラ２９５は、当該情報ＡＰ１１５を停止して制御ＡＰ１１４を実行する（Ｓ７０２）。
【００７６】
図８は、管理部２９４の処理の流れを示す。Ｓ８０１及びＳ８０２が、管理処理に含まれる処理である。
【００７７】
管理部２９４は、スケジューラ２９５により起動されると、データ管理テーブル２８１に空きがあるか否かを判断する（Ｓ８０１）。Ｓ８０１の判断の結果が真の場合（Ｓ８０１：Ｙｅｓ）、管理部２９４は、選別処理又は加工処理を行う（Ｓ８０２）。結果として、データ管理テーブル２８１に、次の周期Ｃで新たな測定データセットが書き込まれることが可能な空きが生じる。言い換えれば、次の周期Ｃで新たな測定データセットの上書きが生じることを回避することができる。なお、管理部２９４は、制御ＡＰ１１４が固定メモリ領域に書き込んだデータセットを他のメモリ領域へコピーしてもよい。
【００７８】
本実施例では、管理部２９４及び情報ＡＰ１１５は、周期的実行され、管理部２９４は、情報ＡＰ１１５よりも実行頻度が高い。
【００７９】
また、本実施例では、管理部２９４、制御ＡＰ１１４及び情報ＡＰ１１５は、同時に実行される場合の優先度が定められており、管理部２９４及び制御ＡＰ１１４は、情報ＡＰ１１５よりも優先度が高い。
【００８０】
図９は、選別処理の一例を模式的に示す。
【００８１】
例えば周期Ｃｎにおいて、選別処理は、読込み頻度に従う範囲に属する複数の測定データセットから測定データセットを選別する処理（例えば、選別した測定データセットについて、制御ＡＰ１１４による上書きの禁止を意味するフラグを立てる処理）である。なお、選別処理は、当該複数の測定データセットのうち当該選別された測定データセット以外の測定データセットをデータ管理テーブル２８１から削除することを含んでもよい（例えば、制御ＡＰ１１４がデータ管理テーブル２８１の空き領域に優先的にデータセットを書き込むようになっている場合）。
【００８２】
図９を参照して、一具体例を説明する。
【００８３】
読込み頻度は周期Ｃの２倍であるとする。この場合、或る読込みが終了し次の読込みが行われるまでの間に、二つの周期が存在し、故に、二つの測定データセットが書き込まれることになる。
【００８４】
周期Ｃ１で測定データセットが書き込まれ、次の周期Ｃ２で測定データセットが書き込まれたとする。この場合、読込み対象となる最新の測定データセットは、周期Ｃ２で書き込まれた測定データセットである。しかし、情報処理の遅延（又は他の理由）により、周期Ｃ２で書き込まれた測定データセットの読込みは失敗であったとする。周期Ｃ２での制御処理によって、データ管理テーブル２８１に空きが無くなったとする。
【００８５】
一比較例では、このまま周期Ｃ３及びＣ４に入ることになる。この場合、周期Ｃ３では、周期Ｃ１で書き込まれた測定データセットに新たな測定データセットが上書きされることになるが、周期Ｃ１で書き込まれた測定データセットは読込み対象とならないため差し支えない。しかし、周期Ｃ４では、周期Ｃ２で書き込まれた測定データセットに新たな測定データセットが上書きされることになるため、読込み対象が無くなることになる。故に、本実施例では、分析サーバ１０１へ送付されるべき測定データセットが無くなることとなり、結果として、分析に使用する測定データセットが減ることとなる。
【００８６】
一方、本実施例では、各周期Ｃにおいて、制御ＡＰ１１４が終了すると管理処理が走る。周期Ｃ２での管理処理における選別処理では、周期Ｃ２で書き込まれた測定データセットが選別される（更に、周期Ｃ１で書き込まれた測定データセットが削除されてもよい）。周期Ｃ３での管理処理における選別処理では、周期Ｃ２で書き込まれた測定データセットが選別される（更に、周期Ｃ３で書き込まれた測定データセットが削除されてもよい）。故に、周期Ｃ４では、周期Ｃ２で書き込まれた測定データセットに新たな測定データセットが上書きされることが無い。
【００８７】
このように、管理処理は、情報ＡＰ１１５の読込み頻度に従う範囲に属する複数のデータセットからデータセットを選別する処理である選別処理を含み、選別されたデータセットは、情報ＡＰ１１５が読み込みこむまでに制御ＡＰ１１４に上書きされないように管理部２９４により管理される。これにより、情報ＡＰ１１５による読込みが遅延して読込み対象の測定データセットが読み込まれずにデータ管理テーブル２８１に増えても、当該未読込みの読込み対象の測定データセットが上書きされる可能性を低減することができる。
【００８８】
図１０は、加工処理の一例を模式的に示す。
【００８９】
加工処理は、読込み頻度に従う範囲に属する複数のデータセットのうちの二つ以上のデータセットを加工し、当該加工後のデータセットをデータ管理テーブル２８１に書き込む処理である。加工処理は、当該二つ以上のデータセットをデータ管理テーブル２８１から削除することを含んでもよい（例えば、制御ＡＰ１１４がデータ管理テーブル２８１の空き領域に優先的にデータセットを書き込むようになっている場合）。
【００９０】
図１０を参照して、一具体例を説明する。なお、ここでは、説明の簡単化のために、一つの測定項目（測定項目Ａ）に着目するものとする。また、図１０において、測定項目Ａに対応したブロック内の数値は、測定項目Ａに対応した測定値であるとする。
【００９１】
読込み頻度に従う範囲に、六つの測定値（六つの測定データセット）が存在するとする。この場合、管理部２９４は、読込み頻度に従う範囲に属する六つの測定値の平均の算出（加工の一例）を行い、当該算出された平均値をデータ管理テーブル２８１に書き込む。この例によれば、六つの測定データセットに従う一つの加工後の測定データセットがデータ管理テーブル２８１に書き込まれる。当該加工後の測定データセットが、読込み頻度に従う範囲に属する読込み対象としての測定データセットである。なお、上述したように、加工の基になった六つの測定データセットはデータ管理テーブル２８１から削除されてもよい。
【００９２】
このようにして、情報処理が遅延して読込み対象の測定データセットが読み込まれずにデータ管理テーブル２８１に増えても、当該未読込みの読込み対象の測定データセットが上書きされる可能性を低減することができる。
【００９３】
なお、加工は、平均値の算出に限らない。また、加工の基になる測定データセットは、読込み頻度に従う範囲に属する全ての測定データセットでもよいし一部の測定データセットでもよい。また、全ての測定項目について、同一の加工が行われてもよいし、異なる加工が行われてもよい。後者の一例は、例えば以下の通りでよい。
・測定項目Ａについては、六つの測定値の平均値が算出されてもよい。
・測定項目Ｂについては、六つの測定値のうちの最大値が選別されそれ以外の測定は削除されてもよい。
・測定項目Ｃについては、六つの測定値のうちの最小値が選別されそれ以外の測定は削除されてもよい。
・加工後の測定データセットは、測定項目Ａについては算出された平均値を含み、測定項目Ｂについては選別された最大値を含み、測定項目Ｃについては選別された最小値を含んだデータセットでよい。
【００９４】
本実施例では、更に、図１１〜図１４を参照して説明する処理のうちの少なくとも一つの処理が行われてもよい。
【００９５】
図１１は、ウィンドウに属するデータセットのチェックを模式的に示す。
【００９６】
例えば、単位時間範囲であるウィンドウが指定される。ウィンドウの指定の受け付ける指定受付部が産業用コントローラ１０９に備えられてよい。指定受付部は、管理部２９４に含まれていてもよいし、ウィンドウの指定の受付けのために用意されたインターフェース（例えばＡＰＩ）でもよい。ウィンドウは、ユーザ（例えば、情報ＡＰ１１５のユーザ）から指定されてもよい。ウィンドウは、全ての情報ＡＰ１１５に共通でもよいし、情報ＡＰ１１５毎に異なっていてもよいし、測定項目毎に異なっていてもよい。ウィンドウのサイズは、読込み頻度と同じでもよいし異なっていてもよい。ウィンドウのサイズは、例えば、読込み頻度と同じかそれもよりも小さい。
【００９７】
管理処理は、読込み頻度に従う範囲のうちのウィンドウに属する測定データセットが所定の異常条件を満たしているか否かをチェックすることを含んでよい。チェック結果が真の場合、管理処理は、当該管理処理後の情報処理において測定データセットと共に読み込まれる情報として、異常フラグＯＮ（異常を示す異常情報の一例）を設定することを含んでよい。結果として、情報処理では、読込み対象の測定データセットと共に異常フラグＯＮが情報ＡＰ１１５に送られる。異常フラグＯＮは、測定データセットと共に、分析サーバ１０１へ送られてもよい。
【００９８】
これにより、周期Ｃの割に読込み頻度が低いが故に読込み対象とならない測定データセットが読込み対象となる測定データセットより多くても、情報ＡＰ１１５及び上位システム（本実施例では分析サーバ１０１）の少なくとも一つに、制御対象装置に関する状況を知らしめることができる。
【００９９】
図１２は、読込み不可通知の一例を模式的に示す。
【０１００】
データ管理テーブル２８１内の未読込みの読込み対象のデータセットに新たなデータセットが制御ＡＰ１１４により上書きされた場合に当該読込み対象のデータセットの読み込みが不可であることを示す情報である読込み不可情報を出力する出力部が産業用コントローラ１０９に備えられてよい。これにより、もし読込み対象の測定データセットが上書きされた場合にはそのことを知らしめることができる。なお、当該出力部は、管理部２９４に含まれていてもよいし、共有ＡＰＩ２８９に含まれていてもよい。また、読込み不可情報は、情報ＡＰ１１５及び上位システム（本実施例では分析サーバ１０１）の少なくとも一つに出力されてもよいし、図示しないユーザ端末（例えば管理者の情報処理端末）に表示されてもよい。また、出力部は、ユーザ（例えば管理者）からの問合せ（読込み不可となった測定データセットが存在するか否かの問合せ）に応答して、読込み不可情報があれば当該情報を返してもよい。
【０１０１】
図１２を参照して、一具体例を説明する。
【０１０２】
或る周期Ｃ５での制御処理においていずれかの未読込みの読込み対象の測定データセット（例えば、周期Ｃ２及び周期Ｃ４の各々において書き込まれた測定データセット）に新たな測定データセットを上書きしなければならない場合（例えば、データ管理テーブル２８１に存在する全ての測定データセットが未読込みの読込み対象の測定データセットであるといったことが生じた場合）、データ管理テーブル２８１内のいずれかの未読込みの読込み対象の測定データセット（例えば、周期Ｃ２で書き込まれた測定データセット）に新たなデータセットが周期Ｃ５において制御ＡＰ１１４により上書きされることになる。この場合、当該読込み対象の測定データセットの読み込みが不可であることを示す情報である読込み不可情報が出力される。
【０１０３】
なお、読込み不可情報が、情報ＡＰ１１５による読み込みに対する応答に付随して当該情報ＡＰ１１５に出力されてよい（また、当該読込み不可情報は、情報ＡＰ１１５から分析サーバ１０１へ送られてよい）。具体的には、例えば、読込み不可情報は、新たな測定データセットが上書きされた読込み対象の測定データセットに対応した取得ＩＤと共にメモリ１６９に格納されてよい。情報ＡＰ１１５による読み込みがあり、当該読み込みでの読込み対象が、当該取得ＩＤに対応した測定データセットの場合、読込み不可情報が、情報ＡＰ１１５による読み込みに対する応答に付随して出力される。このように、読込み不可情報を別途出力する必要が無く、読み込みに対する応答として出力することができる。
【０１０４】
図１３は、頻度調整を模式的に示す。
【０１０５】
データ管理テーブル２８１の空き容量を基に読込み頻度を変更することである頻度調整を行う頻度調整部が産業用コントローラ１０９に備えられてよい。これにより、データ管理テーブル２８１の空き容量、周期Ｃ及び読込み頻度の関係を適切に維持し、以って、未読込みの読込み対象の測定データセットが上書きされる可能性を低減できる。なお、頻度調整部は、管理部２９４に含まれていてもよいし、頻度ＡＰＩ２９３に含まれてもよい。また、頻度調整部による頻度調整を行うか否かの設定をユーザ（例えば管理者）から受け付けるインターフェースが産業用コントローラ１０９に備えられてもよい。また、頻度調整は、図１３に例示するように、図８のＳ８０１：Ｎｏの後又はＳ８０２の後に、管理部２９４により行われてもよい。
【０１０６】
頻度調整については、下記のうちの少なくとも一つが適用されてよい。
・頻度調整は、データ管理テーブル２８１の空き容量の時系列から、データ管理テーブル２８１の空き容量が第一の容量未満になる時刻（例えば、データ管理テーブル２８１に空きが無くなる時刻）である枯渇時刻を推定し、当該枯渇時刻よりも前に、読込み頻度を低くすること、を含んでよい。読込み頻度が低くなることで、読込みを含んだ情報処理が単位時間当たりに発生する頻度が低くなるので、未読込みの読込み対象の測定データセットが増える速度が低減し、以って、未読込みの読込み対象の測定データセットが上書きされる可能性を低減できる。なお、データ管理テーブル２８１の空き容量の時系列は、例えば、管理部２９４によりメモリ１６９に蓄積されてよい。
・頻度調整は、データ管理テーブル２８１の空き容量が第三の容量以上の場合に、読込み頻度を高くすること、を含んでよい。データ管理テーブル２８１の空き容量が第三の容量以上であれば、未読込みの読込み対象の測定データセットが増えていっても差支えがなく、このような場合に読込み頻度が高くなることで、未読込みの読込み対象の測定データセットが減る速度を向上でき、以って、データ管理テーブル２８１の使用効率を向上することができる。なお、第三の容量は、上述の第一の容量と第二の容量のうちの少なくとも一つと同じでもよいし、第一の容量と第二の容量のいずれとも異なる容量であってもよい。例えば、第三の容量は、第一の容量及び第二の容量よりも大きな容量でよい。
【０１０７】
図１４は、枯渇時刻の推定と出力を模式的に示す。
【０１０８】
データ管理テーブル２８１の空き容量の時系列から枯渇時刻を推定する時刻推定部と、推定された枯渇時刻をユーザ向けに出力する時刻出力部とが、産業用コントローラ１０９に備えられてもよい。「枯渇時刻をユーザ向けに出力する」とは、枯渇時刻を表示又は音声出力することでもよいし、ユーザ（例えば管理者）の情報処理端末（例えば計算機）に枯渇時刻を示す情報を送信することでもよい。これにより、ユーザは、推定された枯渇時刻を知ることができ、以って、読込み頻度を調整する等の対策をとることができる。なお、時刻推定部及び時刻出力部の少なくとも一つは、管理部２９４に含まれてもよいし、頻度調整部に含まれてもよいし、いずれかのＡＰＩに含まれてもよい。
【実施例２】
【０１０９】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。
【０１１０】
図１５は、実施例２に係る産業用コントローラのソフトウェア構成を示す。
【０１１１】
産業用コントローラ１５０９において、制御ＡＰ実行部１１１及び情報ＡＰ実行部１１２の各々は、コンテナ型仮想化に従うコンテナである。管理部１５０１は、管理処理を実行するプログラムを含んだコンテナである。つまり、本実施例では、管理処理は、ＯＳ２８６の外に存在する管理部１５０１により行われ、管理部１５０１は、ＯＳ２８６上でコンテナとして稼働する。
【０１１２】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【０１１３】
例えば、実施例１及び２に関して、次のようなことが言える。すなわち、管理機能（選別又は加工）が情報ＡＰ１１５から分離され、管理機能の優先度は、制御ＡＰ１１４よりも低いが情報ＡＰ１１５よりも高い。具体的には、例えば、管理機能は、情報ＡＰ１１５よりも優先して実行される（例えば管理ＡＰ１１４の終了直後に実行される）。管理機能は、カーネルとして実装されてもよいし、優先度の高いコンテナとして実装されてもよい。スケジューラ２９５が制御ＡＰ１１４の処理後に管理機能を動作させることで、情報ＡＰ１１５が必要な測定データセットを効率的に保存できる。
【０１１４】
また、例えば、書込みＡＰＩ２９１が、測定データセットの圧縮可否を指定し、データ管理テーブル２８１の各レコードが、測定データセットの圧縮可否を示す情報（例えばフラグ）を格納してもよい。圧縮可の場合、書込みＡＰＩ２９１が、測定データセットを圧縮し、圧縮された測定データセットがデータ管理テーブル２８１に書込まれてよい。また、この場合、読込みＡＰＩ２９２は、読込み対象の測定データセットを格納したレコードに、圧縮可を示す情報が格納されていれば、当該レコード内の圧縮されている測定データセットを解凍し、解凍された測定データセットを情報ＡＰ１１５へ送る。圧縮が行われることで、共有メモリ領域の空き容量の減少を低減することができ、結果として、測定データセットの上書きが行われてしまう可能性を低減することができる。
【０１１５】
また、例えば、下記のうちの少なくとも一部が、例えば、少なくとも一つの実施例に適用されてもよい。
【０１１６】
産業用コントローラ１０９は、シーケンス制御装置、モーション制御装置、又はプログラマブル・ロジック・コントローラ（ＰＬＣ）とも呼ばれることがある。ラダー・ロジック（ＬＤ言語）、シーケンシャル・ファンクション・チャート（ＳＦＣ言語）、ファンクション・ブロック（ＦＢＤ言語）、ストラクチャード・テキスト（ＳＴ言語）、インストラクション・リスト（ＩＬ言語）のような制御特有のプログラミング言語で制御内容が記述される。また、場合により、Ｃ言語等の汎用プログラミング言語での記述が、ラダー言語等での記述の一部又は全部に差し替えられてもよい。
【０１１７】
このような産業用コントローラ１０９に接続される制御対象を制御する制御ＡＰ１１４は、ラダー言語を代表とする制御特有のプログラミング言語を用いることが有効である。ラダーの表示が可能であり、制御対象装置の状態の監視等に有効である。一方、情報ＡＰ１１５は、このような産業用コントローラ１０９における情報処理（例えば、複雑な算術演算や、ＳＣＡＤＡ、ＭＥＳ、クラウドシステムとの情報の送受信のような情報通信処理）に有効である。このような情報処理は、制御特有の言語でプログラミングすることが困難な場合があり、いわゆるＣ言語又はＪａｖａ（登録商標）言語などの情報通信分野で使われるプログラミング言語を用いて記述する場合がある。
【０１１８】
制御ＡＰ１１４は、Ｉ／Ｏモジュール１１９等を介して実際にモータ等を含む周辺機器１２０を操作し、生産システム等を適切に動作させる必要がある。そのため、制御ＡＰ１１４は、処理を設定された時間内に確実に実行すること（リアルタイム性）が求められる。制御ＡＰ１１４は、制御内容が記述された命令によって制御対象装置（例えば、装置部品のようなハードウェアモジュール、一つ以上のハードウェアモジュールを備えた装置、又は、複数の装置を備えたシステム）を制御する。例えば、「Ｉ／Ｏモジュール１１９等を介して実際にモータ等を含む周辺機器１２０を操作し、生産システム等を適切に動作させる」といった制御では、「生産システム」、又は、「生産システムを構成する少なくとも１つの装置」が、「制御対象装置」である。制御対象装置は、典型的には、産業用コントローラ１０９におけるＩ／Ｏ制御装置２１４（インターフェース部の一例）経由で接続された装置である。制御対象装置は、制御ＡＰ１１４から直接的に（例えば、Ｉ／Ｏモジュール１１９や周辺機器１２０を介さずに）制御されてもよいし、制御ＡＰ１１４から間接的に（例えば、Ｉ／Ｏモジュール１１９や周辺機器１２０を介して）制御されてもよい。制御対象装置を制御する言語は、ラダー言語等の制御特有のプログラミング言語に限らず、Ｃ言語等の汎用プログラミング言語で記述される場合もあるため、制御対象装置（典型的にはハードウェア）を制御するプログラムが、制御ＡＰ１１４である。
【０１１９】
ラダー言語等で記述された制御ＡＰは、当該ラダー言語等の記述において指定された制御対象装置の状態を読み込み又は書き込み（取得又は更新）をする「スキャン動作」を行う。このスキャン動作は所定間隔で行う必要があり、この所定間隔を「スキャンタイム」と呼ぶ。スキャンタイムは、制御ＡＰの演算時間に関するものであり、制御に関する演算周期又は制御に関する演算を繰り返し所定間隔で行うことから「サイクルタイム」とも呼ばれることもある。スキャンタイムが、周期Ｃに相当する。
【０１２０】
スキャンタイムは、産業用コントローラ１０９が制御する制御対象装置の数や種類の増加に応じて長くなるが、スキャンタイム内で制御対象装置のスキャン動作をすることが重要である。
【０１２１】
産業用コントローラ１０９に、Ｉ／Ｏポートが内蔵又は接続される。Ｉ／Ｏポートは、Ｉ／Ｏモジュール１１９又はＩ／Ｏユニット等が有する場合がある。以下、Ｉ／Ｏポートそれ自体、又は、Ｉ／Ｏポートを有する装置（Ｉ／Ｏモジュール又はＩ／Ｏユニット等）を、「Ｉ／Ｏポート」と総称する場合がある。Ｉ／Ｏポートは、制御対象装置、例えば、生産設備におけるベルトコンベア、リミットスイッチ、アクチュエータ（例えばモータ）に接続され、制御対象装置の動作に関する制御に使用されるものである。Ｉ／Ｏポートは、デジタル又はアナログのＩ／Ｏポートである。例えば、アナログＩ／Ｏポートは、産業用コントローラ１０９の制御対象装置の電圧、電流、温度等を含んだ測定データセットの読み書きに使用される。
【０１２２】
制御ＡＰ１１４に基づいて産業用コントローラ１０９のＩ／Ｏポートから送信される制御情報を有線又は無線で受信するインバータユニットやＣＮＣ（Computerized Numerical Control）はインバータやＣＮＣ自体がアクチュエータのモーション制御を行うため、リアルタイム性が求められる。
【０１２３】
また、制御対象装置の制御とは、制御対象装置が接続されている状態のＩ／Ｏポートの動作を制御することをいう。つまり、制御ＡＰ１１４とは、制御対象装置が接続されたＩ／Ｏポートの制御を行うプログラム、言い換えれば、制御対象装置が接続されたＩ／Ｏポートに当該制御対象装置の制御情報を出力する（具体的には、例えば、当該制御情報の出力を含むスキャン動作を行う）プログラムである。
【０１２４】
このような産業用コントローラ１０９において、制御対象装置の制御に加えて、情報処理（例えば、複雑な算術演算やＳＣＡＤＡ、ＭＥＳ、クラウドシステムとの情報の送受信のような情報通信処理）を行うことを検討する。このような情報処理は、上述の制御特有の言語でプログラミングすることが困難な場合があり、Ｃ言語又はＪａｖａ（登録商標）言語などの情報処理分野で使われるプログラミング言語を用いて記述することがある。このような情報処理を実行するプログラムが、情報ＡＰ１１５である。
【０１２５】
制御ＡＰ１１４と情報ＡＰ１１５の違いの一例について説明する。
【０１２６】
上記したように制御ＡＰ１１４は、産業用コントローラ１０９のＩ／Ｏポートの制御に関係したプログラムであり、情報ＡＰ１１５は、情報処理（例えば、上述のように、算術演算や、クラウドとの通信）を行うプログラムである。制御ＡＰ１１４は、ラダーやＳＴ言語等で記述され、ｊａｖａ（登録商標）やｐｙｔｈｏｎ等に代表される汎用言語に比べてリアルタイム性が高い。情報ＡＰ１１５は、ｊａｖａ（登録商標）やｐｙｔｈｏｎ等に代表される言語で記述され、ラダー等よりも情報処理に適している。Ｃ言語等のリアルタイム性が高く、ハードウェアの制御にも適しており、また、情報処理にも適した言語は制御ＡＰ１１４と情報ＡＰ１１５のいずれにも利用可能な場合がある。制御対象装置がＩ／Ｏポートを介して産業用コントローラ１０９に接続されるが、制御ＡＰ１１４は、制御対象装置に接続されるアナログやデジタルのＩ／Ｏポートに制御対象装置の制御情報を送信することを含むスキャン動作を行うプログラムであるが。一方、情報ＡＰ１１５は、制御対象装置に接続されるアナログやデジタルのＩ／Ｏポート（但し、情報ＡＰ１１５との共有が許容されているＩ／Ｏポートを除く）へアクセスしないプログラムである。別の言い方をすれば、情報ＡＰは、スキャン動作を含まない（スキャン動作とは異なる）情報処理を行うプログラム（つまり、スキャン動作を行うことがないプログラム）である。
【０１２７】
制御に関しては、一般に、高いリアルタイム性が求められ、情報処理に関しては、一般に、高いスループットが求められる。そして、ＯＳとして、一般に、制御向けのＯＳとしての専用ＯＳ（リアルタイムＯＳ）と、情報処理向けのＯＳとしての汎用ＯＳとがある。
【０１２８】
ここで、仮に、昨今の汎用計算機分野の技術を考慮すると、制御ＡＰは専用ＯＳ上で実行され、情報ＡＰは汎用ＯＳ上で実行されることが考えられる。このため、制御ＡＰと情報ＡＰの共存は、通常、計算機における計算リソース集合（物理的な計算リソースの集合としてのハードウェア）をエミュレートする仮想マシン技術を採用することになると考えられる。具体的には、例えば、ハイパバイザが、制御ＡＰ用に、ゲストＯＳとして専用ＯＳを搭載した仮想マシンを生成し、情報ＡＰ用に、ゲストＯＳとして汎用ＯＳを搭載した仮想マシンを生成し、制御ＡＰと情報ＡＰが、ＯＳが異なる別々の仮想マシンで実行されることが考えられる。
【０１２９】
しかし、仮想マシン技術では、仮想マシンにおけるゲストＯＳの他に、仮想マシンのベースとなるホストＯＳが存在する。結果として、管理対象が多く、管理が煩雑となることが考えられる。
【０１３０】
また、計算機に機器が接続されても、当該計算機における全ての制御ＡＰや情報ＡＰが容易に当該機器を認識できるわけではない。仮想マシン別に、ゲストＯＳを介して、当該機器を認識するための処理が必要となる。
【０１３１】
そこで、汎用ＯＳの系統ではあるものの必要とされるリアルタイム性を提供できるリアルタイム機能を持ったＯＳ（以下、便宜上、「リアルタイム汎用ＯＳ」と呼ぶ）を、ＯＳ２８６として採用することが考えられる。
【符号の説明】
【０１３２】
１０９…産業用コントローラ
【図１】
2020095549.tif 000003
【図２】
2020095549.tif 000004
【図３】
2020095549.tif 000005
【図４】
2020095549.tif 000006
【図５】
2020095549.tif 000007
【図６】
2020095549.tif 000008
【図７】
2020095549.tif 000009
【図８】
2020095549.tif 000010
【図９】
2020095549.tif 000011
【図１０】
2020095549.tif 000012
【図１１】
2020095549.tif 000013
【図１２】
2020095549.tif 000014
【図１３】
2020095549.tif 000015
【図１４】
2020095549.tif 000016
【図１５】
2020095549.tif 000017