(57)【要約】      （修正有）【課題】複数のコアを有する演算装置において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てる情報処理装置及び情報処理方法を提供する。【解決手段】情報処理装置３は、演算装置１０１の１つのコアにより、複数のコアに、被制御機器１１を制御するための制御系データ及び被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と複数のコアへの負荷分散を行う負荷分散処理とを実施し、少なくとも１つのコアにより、制御系データに基づいて被制御機器を制御する制御系処理及び解析系データを解析する解析系処理を実施する。負荷分散処理は、複数のコアのそれぞれの負荷情報に基づいた、解析系処理の遅延の発生に関する統計に基づいて複数のコアのうち少なくとも１つを選択するコア選択処理と選択されたコアに解析系処理を振り分ける振り分け処理とを含む。【選択図】図２
2020191069.tif 000002
【特許請求の範囲】
【請求項１】
被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた情報処理装置であって、
前記複数のコアのうち、いずれか１つにより、
前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの負荷分散を行う負荷分散処理と、を実施し、
前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施し、
前記負荷分散処理は、
前記複数のコアのそれぞれの負荷情報に基づいた、前記解析系処理の遅延の発生に関する統計に基づいて前記複数のコアのうち少なくとも１つのコアを選択するコア選択処理と、
選択された前記コアに前記解析系処理を振り分ける振り分け処理と、
を含むことを特徴とする情報処理装置。
【請求項２】
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける実行回数の最大値を含み、前記コア選択処理において、前記複数のコアのうち前記最大値が最小であるコアを選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける実行回数の平均値であり、前記コア選択処理において、前記複数のコアのうち前記最大値が最小であるコアが複数ある場合、それらのうち前記平均値が最小であるコアを選択することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける実行回数の標準偏差であり、前記コア選択処理において、前記複数のコアのうち前記平均値が最小であるコアが複数ある場合、それらのうち前記標準偏差が最小であるコアを選択することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記負荷分散処理は、前記選択したコアにより前記解析系処理を遅延許容期間内に完了できるか否かを判定する判定処理を更に含み、前記判定処理により、前記解析系処理を前記遅延許容期間内に完了できないと判定されたときは、前記コア選択処理において、前記選択したコアの次に前記最大値が小さいコアをさらに選択し、並列処理を行わせることを特徴とする請求項２から請求項４のいずれかに記載の情報処理装置。
【請求項６】
被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置により実行される情報処理方法であって、
前記複数のコアのうち、いずれか１つにより、
前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの負荷分散を行う負荷分散処理と、を実施させ、
前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施させ、
前記負荷分散処理は、
前記複数のコアのそれぞれの負荷情報に基づいた、前記解析系処理の遅延の発生に関する統計に基づいて前記複数のコアのうち少なくとも１つのコアを選択するコア選択処理と、
選択された前記コアに前記解析系処理を振り分ける振り分け処理と、
を含むことを特徴とする情報処理方法。
【請求項７】
被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた情報処理装置であって、
前記複数のコアのうち、いずれか１つにより、
前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの、前記制御系データに基づいて前記被制御機器を制御する制御系処理の並列化を行う並列実行処理と、を実施し、
前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施させ、
前記並列実行処理は、許容時間内に前記解析系処理が完了できないと判定されたならば、予め定義された前記解析系処理の実行順序に関する情報に基づいて、前記複数のコアのうち少なくとも２つにより前記解析系処理を並列実行させることを特徴とする情報処理装置。
【請求項８】
前記解析系処理の実行時間である解析処理実行時間に関する統計に基づいて前記複数のコアのうち少なくとも１つのコアを選択するコア割当処理をさらに実施し、
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける前記解析処理実行時間の最大値を含み、前記コア割当処理において、前記複数のコアのうち前記最大値が最小であるコアを割り当てることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける前記解析処理実行時間の平均値であり、前記コア割当処理において、前記複数のコアのうち前記最大値が最小であるコアが複数ある場合、それらのうち前記平均値が最小であるコアを割り当てることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記統計は、前記解析系処理の１つに対する前記複数のコアのそれぞれにおける前記解析処理実行時間の標準偏差であり、前記コア割当処理において、前記複数のコアのうち前記平均値が最小であるコアが複数ある場合、それらのうち前記標準偏差が最小であるコアを割り当てることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記並列実行処理は、前記許容時間内に前記解析系処理が完了できないとの判定を、前記コアに割り当てた複数の前記解析系処理の解析処理実行時間の合計値が前記許容時間よりも大きいか否かで行うことを特徴とする請求項８から請求項１０のいずれかに記載の情報処理装置。
【請求項１２】
前記合計値が前記許容時間より大きい場合、並列処理する全ての解析系処理に対し、前記解析処理実行時間の最大値のうち最小の値と、無負荷時の前記解析処理実行時間との差が最も大きい解析系処理を並列化対象として選択することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記並列化対象の前記解析系処理を並列実行した場合に指定時間内に実行できる確率が、予め設定した確率よりも大きくなるまで、前記並列化対象の選択を繰り返すことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた演算装置により実行される情報処理方法であって、
前記複数のコアのうち、いずれか１つにより、
前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの、前記制御系データに基づいて前記被制御機器を制御する制御系処理の並列化を行う並列実行処理と、を実施し、
前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施し、
前記並列実行処理は、許容時間内に前記解析系処理が完了できないと判定されたならば、予め定義された前記解析系処理の実行順序に関する情報に基づいて、前記複数のコアのうち少なくとも２つにより前記解析系処理を並列実行することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視制御システムのための情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、プラントなどの監視制御システムにおいて、制御装置は、各種センサ、プログラマブルロジックコントローラ（ＰＬＣ；Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）、数値制御装置（ＣＮＣ；Ｃｏｍｐｕｔｅｒｉｚｅｄ  Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ）等により、被制御機器の制御に必要なデータ（以下、制御系データと記載する）を収集し、制御系データに応じて、ＰＬＣ及びＣＮＣに各種制御指令を含むデータを出力する。ＰＬＣ及びＣＮＣは、制御指令に従って、被制御機器を制御する。このような制御装置を制御系装置と呼び、制御系装置の機能を制御系処理と呼ぶ。
【０００３】
また、監視制御システムにおいて、例えば、被制御機器の余寿命を推測するために、データ管理装置が、各種センサ、ＰＬＣ、ＣＮＣ等の動作状況又は動作環境を解析するためのデータ（以下、解析系データと記載する）を収集し、分析装置が、解析系データを解析し、被制御機器での故障の予兆の補足や要因究明を行い、その結果を管理者用ＰＣ（パーソナルコンピュータ）に提供することが行われている。このようなデータ管理装置及び分析装置を解析系装置と呼び、解析系装置の機能を解析系処理と呼ぶ。
【０００４】
制御系装置は、被制御機器、ＰＬＣ及びＣＮＣで構成される下位のネットワークに近い中間ネットワークに設置されることが多い。このような中間ネットワークで稼働する装置を、エッジデバイスと呼ぶ。一方、解析系装置のうち特に解析装置は、より上位のネットワークに、クラウド及びオンプレミスに設置される傾向にあった。
【０００５】
近年、人工知能（ＡＩ）技術の目覚ましい進展に伴い、解析装置において、大量のデータを用いて学習及び推論を行い、その結果に応じて被制御機器の制御を行うことが実現可能になった。すなわち、従来、管理者が、解析系装置から提供された解析結果に基づいて、それへの対処を判断し、被制御機器等への命令を決定し、管理者用ＰＣから制御装置若しくはＰＬＣ又はＣＮＣへ命令を送信していたが、このような管理者の判断、決定を解析装置自らに行わせることが可能となった。
【０００６】
このようなＡＩ技術の採用に伴い、データ量の増大や診断結果の即応性の要求により、学習を上位のネットワークで行い、推論を中間ネットワークで行うことが望まれている。そこで、エッジデバイスに、制御系処理だけでなく、解析系処理も持たせることが検討されている。
【０００７】
この場合、エッジデバイスは、解析系処理における推論のために積和等の演算を大量に行うため、ＣＰＵの負荷が大きくなり、本来の制御系処理に、データ収集における制御系データの欠損、制御指令を含むデータ出力の遅延等の影響が出ることが懸念される。
【０００８】
ＣＰＵの負荷が高くなる場合、ＣＰＵの高性能化、ＧＰＵのような演算用ハードウエアの追加、マルチコアＣＰＵの採用等の対策を行うことが考えられる。
【０００９】
例えば、複数の演算処理部を備えた制御システムにおいて、複数の演算処理部によるプロセス制御と、少なくとも１つのオペレーション制御部による、演算処理部からのデータロギング及び異常解析と、を行う際、演算制御部に、演算に必要とするサンプリング周期よりも高速のサンプリング周期でデータを取込ませ、取込んだデータが異常であるか否かを判定する。そして、異常でない場合には、通常の動作を行い、異常の場合には、データのオペレーション制御部への転送動作を選択するようにし、異常解析にはプロセス制御の中断をできるだけ最低限に抑えるとともに、充分に精度良く異常解析を行うことが知られている（特許文献１など参照）。
【００１０】
また、マルチコア・マルチプロセッサシステムにおいて、基本モジュールを効率良く並列処理させることが提案されている（特許文献２など参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平８−１７９８１６号公報
【特許文献２】特開２０１０−９４９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１に記載の分散型制御システムは、通信速度がボトルネックになっている制御システムに対する提案であり、複数の演算制御部と、少なくとも１つのオペレーション制御部とは、それぞれの機能の役割が固定的であり、制御系処理、及び、解析系処理が一つの演算制御部に割り当てられることは想定していない。
【００１３】
また、特許文献２に記載のマルチコア・マルチプロセッサシステムにおいて、基本モジュールと呼んでいる処理単位を、一連の処理として実行させた場合に、基本モジュールすべてに対し最悪値が発生すると、処理全体が規定の実行時間内に完了しない可能性がある。
【００１４】
本発明はかかる点に鑑みてなされたものであり、複数のコアを有する演算装置において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てることができる情報処理装置及び情報処理方法を提供することを目的の１つとする。
【００１５】
また、本発明は、解析系処理の実行時間を短縮し、解析系処理を許容時間内に完了できる情報処理装置及び情報処理方法を提供することを目的の１つとする。
【課題を解決するための手段】
【００１６】
本願の第１の発明に係る情報処理装置の一態様は、被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた情報処理装置であって、前記複数のコアのうち、いずれか１つにより、前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの負荷分散を行う負荷分散処理と、を実施し、前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施し、前記負荷分散処理は、前記複数のコアのそれぞれの負荷情報に基づいた、前記解析系処理の遅延の発生に関する統計に基づいて前記複数のコアのうち少なくとも１つのコアを選択するコア選択処理と、選択された前記コアに前記解析系処理を振り分ける振り分け処理と、を含むことを特徴とする。
【００１７】
本願の第１の発明に係る情報処理方法の一態様は、被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置により実行される情報処理方法であって、前記複数のコアのうち、いずれか１つにより、前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの負荷分散を行う負荷分散処理と、を実施させ、前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施させ、前記負荷分散処理は、前記複数のコアのそれぞれの負荷情報に基づいた、前記解析系処理の遅延の発生に関する統計に基づいて前記複数のコアのうち少なくとも１つのコアを選択するコア選択処理と、選択された前記コアに前記解析系処理を振り分ける振り分け処理と、を含むことを特徴とする。
【００１８】
また、本願の第２の発明に係る情報処理装置は、被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた情報処理装置であって、前記複数のコアのうち、いずれか１つにより、前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの、前記制御系データに基づいて前記被制御機器を制御する制御系処理の並列化を行う並列実行処理と、を実施し、前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施させ、前記並列実行処理は、許容時間内に前記解析系処理が完了できないと判定されたならば、予め定義された解析系処理の実行順序に関する情報に基づいて、前記複数のコアのうち少なくとも２つにより前記解析系処理を並列実行させることを特徴とする。
【００１９】
また、本願の第２の発明に係る情報処理方法は、被制御機器を制御すると共に前記被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置を備えた演算装置により実行される情報処理方法であって、前記複数のコアのうち、いずれか１つにより、前記複数のコアに、前記被制御機器を制御するための制御系データ及び前記被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、前記複数のコアへの、前記制御系データに基づいて前記被制御機器を制御する制御系処理の並列化を行う並列実行処理と、を実施し、前記複数のコアのうち、少なくとも１つにより、前記制御系データに基づいて前記被制御機器を制御する制御系処理、及び、前記解析系データを解析する解析系処理を実施し、前記並列実行処理は、許容時間内に前記解析系処理が完了できないと判定されたならば、予め定義された解析系処理の実行順序に関する情報に基づいて、前記複数のコアのうち少なくとも２つにより前記解析系処理を並列実行することを特徴とする。
【発明の効果】
【００２０】
本願の第１の発明によれば、複数のコアを有する演算装置において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てることができる情報処理装置及び情報処理方法を提供することができる。
【００２１】
本願の第２の発明によれば、解析系処理の実行時間を短縮し、解析系処理を許容時間内に完了できる情報処理装置及び情報処理方法を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】第１の実施の形態に係る情報処理装置が適用された制御監視システムを示す概略図である。
【図２】第１の実施の形態に係る制御監視装置の要部を示すブロック図である。
【図３】第１の実施の形態に係る制御監視装置における演算装置のハードウエア構成を示すブロック図である。
【図４】第１の実施の形態における制御監視装置における解析系処理の遅延を示す演算装置の動作タイミングを示す説明図である。
【図５】第１の実施の形態に係る制御監視装置の機能ブロック図である。
【図６】第１の実施の形態における制御監視装置における第１のコアでの各処理の動作タイミングと優先度を示すタイミングチャートである。
【図７】第１の実施の形態に係る制御監視装置における第１のコアが行うデータ収集周期動作を示すフローチャートである。
【図８】図７に示すデータ解析処理の各工程を示すフローチャートである。
【図９】図７に示すデータ解析処理の各工程を示すフローチャートである。
【図１０】第１の実施の形態に係る制御監視装置における負荷情報監視部の起動の各工程を示すフローチャートである。
【図１１】第１の実施の形態に係る制御監視装置におけるデータ解析処理の各工程を示すフローチャートである。
【図１２】図８及び図９に示す解析実行コア選択処理の各工程を示すフローチャートである。
【図１３】図８及び図９に示す解析実行コア選択処理の各工程を示すフローチャートである。
【図１４】第１の実施の形態に係る制御監視装置における他のコアにおける負荷情報監視処理の各工程を示すフローチャートである。
【図１５】第１の実施の形態に係る情報処理装置における複数のコアでの各種処理の動作タイミングを示すタイミングチャートである。
【図１６】第１の実施の形態に係る情報処理装置におけるコアでの各種処理の動作タイミングと変数の更新タイミングを示すタイミングチャートである。
【図１７】第２の実施の形態に係る制御監視装置のデータ相関図である。
【図１８】第２の実施の形態に係る制御監視装置における行うデータ収集周期動作を示すフローチャートである。
【図１９】第２の実施の形態に係る制御監視装置におけるデータ解析管理処理を示すフローチャートである。
【図２０】第２の実施の形態に係る制御監視装置における並列実行パターンファイル作成処理を示すフローチャートである。
【図２１】第２の実施の形態に係る制御監視装置における並列実行パターンファイル作成処理を示すフローチャートである。
【図２２】図２０及び図２１に示すコア割当処理の各工程を示すフローチャートである。
【図２３】第２の実施の形態に係る制御監視装置における解析負荷監視処理の各工程を示すフローチャートである。
【図２４】図２４は、第２の実施の形態に係る制御監視装置における解析系処理の各工程を示すフローチャートである。
【図２５】第２の実施の形態に係る制御監視装置における解析処理管理テーブルの具体例を示す説明図である。
【図２６】第２の実施の形態に係る制御監視装置における解析処理管理テーブルの具体例を示す説明図である。
【図２７】第２の実施の形態に係る制御監視装置におけるデータ解析管理情報ファイルの具体例を示す説明図である。
【図２８】第２の実施の形態に係る制御監視装置３におけるコアでの各種処理の動作タイミングを示すタイミングチャートである。
【発明を実施するための形態】
【００２３】
（第１の実施の形態）
図１〜図１６を参照して、第１の実施の形態に係る情報処理装置及び情報処理方法について詳細に説明する。
【００２４】
以下、第１の実施の形態では、複数のコアを有する演算装置の一例としてマルチコアＣＰＵを例に挙げて説明するが、特に限定されない。例えば、一つのコアを有するＣＰＵを複数並列に接続した構成からなる演算装置も本発明に包含される。
【００２５】
図１は、第１の実施の形態に係る情報処理装置が適用された制御監視システムを示す概略図である。図１に示す制御監視システム１において、制御監視装置３は、本発明の情報処理装置の一例である。制御監視装置３は、下位ネットワーク５を介して、ＰＬＣ７及びＣＮＣ９に通信可能に接続されている。ＰＬＣ７及びＣＮＣ９には、さらに下位のネットワークを介して、被制御機器１１、１３、１５、１７がそれぞれ接続されている。
【００２６】
また、制御監視装置３は、上位ネットワークの一例であるクラウドネットワーク１９を介して、管理用ＰＣ２１に接続されている。
【００２７】
このように、制御監視装置３は、下位ネットワーク５とクラウドネットワーク１９との間に配置され、いわゆるエッジデバイスと呼ばれる。
【００２８】
このような構成からなる制御監視システム１では、制御監視装置３、ＰＬＣ７、ＣＮＣ９、及び、被制御機器１１、１３、１５、１７の間で、さまざまなデータがやり取りされる。
【００２９】
例えば、ＰＬＣ７から被制御機器１１、１３に制御指令が送信され、被制御機器１１、１３の制御が行われる。また、被制御機器１１、１３からセンサによる検出結果及び被制御機器１１、１３に対する制御結果が、ＰＬＣ７に送信され、さらにＰＬＣ７から制御監視装置３へ送信される。このような検出結果及び制御結果等を、以下、制御系データと記載する。
【００３０】
また、例えば、被制御機器１３が電動機であり、弁開閉モータとして用いられているとき、その動作状況、並びに、被制御機器１３に付設された振動センサ２３及び温度センサ２５による検出結果が、制御監視装置３へ送信される。弁開閉モータの動作状況のような被制御機器１３の動作状況、並びに、振動センサ２３及び温度センサ２５による検出結果のような被制御機器１３の動作環境に関するデータを、以下、解析系データと記載する。
【００３１】
図２は、第１の実施の形態に係る制御監視装置３の要部を示すブロック図である。図２に示すように、制御監視装置３は、演算装置１０１、上位ネットワーク通信制御部１０３、下位ネットワーク通信制御部１０５、及び、データストレージ１０７を備えている。
【００３２】
演算装置１０１は、例えば、マルチコアＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であり、詳細については、後述する。
【００３３】
上位ネットワーク通信制御部１０３及び下位ネットワーク通信制御部１０５は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）インターフェイスのような通信インターフェイス回路であるが、特に限定されない。
【００３４】
データストレージ１０７は、例えば、ハードディスク等の磁気ディスク記録装置、及び、ソリッドステートドライブ（ＳＳＤ）等のメモリ記録装置であるが、特に限定されない。
【００３５】
演算装置１０１は、例えば、プログラムを実行することにより、データ収集部１０９、制御系処理部１１１、及び、解析系処理部１１３を実現するように構成されている。
【００３６】
データ収集部１０９は、下位ネットワーク通信制御部１０５を制御して、例えば、ＰＬＣ７から被制御機器１１の制御系データ及び解析系データを収集する処理を行うように構成されている。データ収集部１０９は、収集した制御系データ及び解析系データを、データストレージ１０７に記憶させる。
【００３７】
制御系処理部１１１は、制御系データに応じて制御指令を生成し、さらに、下位ネットワーク通信制御部１０５を制御して、制御指令を、ＰＬＣ７に送信し、被制御機器１１の制御を行なわせるように構成されている。
【００３８】
解析系処理部１１３は、解析系データを解析し、被制御機器１１での故障の予兆を捕捉し、また、故障の要因を究明し、さらに、上位ネットワーク通信制御部１０３を制御して、解析結果を、管理用ＰＣ２１へ送信するように構成されている。管理用ＰＣ２１は、ディスプレイ（不図示）への表示等により、管理者等に対して予兆の警告及び要因の提示を行なわせるように構成されている。
【００３９】
また、解析系処理部１１３は、解析結果に基づいて制御指令を生成し、下位ネットワーク通信制御部１０５を制御して、制御指令を、ＰＬＣ７に送信し、被制御機器１１の制御を行なわせるように構成されていてもよい。すなわち、第１の実施の形態において、解析系処理には、被制御機器１１等での故障の予兆の捕捉、故障の要因のような解析だけを行うものだけでなく、解析結果に基づいた制御のための処理も含まれる。この制御には、ＡＩによる解析系データに基づいた学習及び推論が含まれる。この場合、クラウドネットワーク１９又はオンプレミスに設けられたＡＩサーバで学習が行われ、解析系処理部１１３において、学習の結果に基づいた推論のみを行ってもよい。
【００４０】
図３は、第１の実施の形態に係る制御監視装置３における演算装置１０１のハードウエア構成を示すブロック図である。図３に示すように、演算装置１０１は、複数、例えば４つのコア（コア０〜コア３）２０１ａ〜２０１ｄを備えている。
【００４１】
複数のコア２０１ａ〜２０１ｄは、共有バス２０３を介して並列に接続されている。さらに共有バス２０３には、共有メモリ２０５が接続されている。複数のコア２０１ａ〜２０１ｄは、共有メモリ２０５にそれぞれアクセスし、データの書き込み、及び、読み取りを行うことができる。共有メモリ２０５は、物理的に一つであってもよいし、物理的には複数であるが仮想的に共有されてもよい。
【００４２】
また、複数のコア２０１ａ〜２０１ｄの間で、プロセッサ間通信（Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）を経由して、高速にデータのやり取りを行うこともできる。
【００４３】
このように演算装置１０１がマルチコアＣＰＵで構成されている場合、オペレーションシステム（ＯＳ）のコア割り当て機能が、図２を参照して説明したデータ収集部１０９、制御系処理部１１１及び解析系処理部１１３の各機能を、機能単位（プロセス又はスレッド）で、各コア２０１ａ〜２０１ｄに割り当てる。
【００４４】
しかし、ＯＳによるコア割り当ては、機能単位で行われるため、あるタクト１回でのデータ収集により得られた解析系データに対する処理が制限時間内に完了することを保証していない。また、例えばミリ秒単位の高速での判定が必要な場合にはオーバーヘッドが大きく対応できない。
【００４５】
図４は、第１の実施の形態における制御監視装置３における解析系処理の遅延を示す演算装置の動作タイミングを示す説明図である。図４に示すように、コア０（以下、第１のコアとも記載する）２０１ａ（図３参照）に、一定のデータ収集周期（以下、タクトタイムと記載する）でデータ収集処理（図４中、記号Ｄで示す）を行わせている。
【００４６】
そして、データ収集処理で収集した制御系データに応じて、複数のコア２０１ａ〜２０１ｄに、制御系処理（図４中、記号Ｃで示す）を割り当て、行わせている。
【００４７】
さらに、第３のコア（コア２）２０１ｃ（図３参照）に、データ収集処理で収集した解析系データを解析する解析系処理（図４中、記号Ａで示す）を割り当て、行わせている。
【００４８】
タクト１では、タクト１でのデータ収集処理で収集した解析系データに対する解析系処理Ａ１は、タクト１内で完了している。このような場合、解析系処理Ａ１に遅延は発生していない。第３のコア２０１ｃに割り当てられた制御系処理Ｃは、通常であればタクト１内で完了し、解析系処理Ａ１を完了するに十分な時間が残されているためである。
【００４９】
しかし、タクト２では、第３のコア２０１ｃに割り当てられた制御系処理Ｃに割り込み（図４中、記号Ｉで示す）が発生したため、制御系処理Ｃの完了後に、解析系処理Ａ２を完了するに十分な時間が残されていない。このため、第３のコア２０１ｃにおいて、タクト２の終了までに一部の解析系処理Ａ２−１が行なわれ、その時点で中断される。そして、タクト３で制御系処理Ｃが行われた後、残りの解析系処理Ａ２ー２が継続して行なわれる。このような状況を、解析系処理Ａ２が１回遅延したという。
【００５０】
この例では、タクト２で解析系処理Ａ２が完了するべきところ、タクト３の終了時まで遅延したことになり、遅延時間はタクトタイムに相当する。
【００５１】
このような解析系処理の遅延のために、主体である制御系処理に、データ収集における制御系データの欠損、制御指令を含むデータ出力の遅延等の影響が出ることが懸念される。
【００５２】
そこで、本発明者は、複数のコア２０１ａ〜２０１ｄを有する演算装置１０１において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てることを鋭意検討した結果、複数のコア２０１ａ〜２０１ｄのうち一つに、他のコアでの解析系処理の遅延の発生に関する統計に基づいて、解析系処理を振り分けるコアを選択させることを見出し、本発明を完成にするに至った。
【００５３】
すなわち、第１の実施の形態に係る情報処理装置及び情報処理方法では、被制御機器を制御すると共に被制御機器の動作状況又は動作環境を解析する、複数のコアを有する演算装置において、複数のコアのうち、いずれか１つにより、複数のコアに、被制御機器を制御するための制御系データ及び被制御機器の動作状況又は動作環境に関する解析系データをデータ収集周期毎に収集するデータ収集処理と、複数のコアへの負荷分散を行う負荷分散処理と、を実施し、複数のコアのうち、少なくとも１つにより、制御系データに基づいて被制御機器を制御する制御系処理、及び、解析系データを解析する解析系処理を実施し、負荷分散処理は、複数のコアのそれぞれの負荷情報に基づいた、解析系処理の遅延の発生に関する統計に基づいて複数のコアのうち少なくとも１つのコアを選択するコア選択処理と、選択されたコアに解析系処理を振り分ける振り分け処理と、を含む。
【００５４】
以下、解析系処理の負荷分散（振り分け）について詳細に説明する。図５は、第１の実施の形態に係る制御監視装置３の機能ブロック図である。図５には、解析系処理の負荷分散のための機能を示し、制御系処理は示していない。しかし、複数のコア２０１ａ〜２０１ｄには、複数の制御系処理が割り当てられている。また、図５において、テーブルとは、予め設計時に設定され、動作中に書き換えられない情報を意味している。また、ファイルとは、動作中に書き換えられる情報を意味している。
【００５５】
図５に示すように、第１の実施の形態では、複数のコア２０１ａ〜２０１ｄ（図３参照）のうち、第１のコア２０１ａに、データ収集部１０９及びデータ解析管理部３０１の機能が固定的に割り当てられている。
【００５６】
データ収集部１０９は、図２を参照して説明した通りである。
【００５７】
データ解析管理部３０１は、複数のコア２０１ａ〜２０１ｄ（後述）で行われる解析系処理を管理し、コア選択処理、振り分け処理及び負荷情報監視処理（後述）を行うように構成されている。
【００５８】
コア選択処理は、第１のコア（コア０）２０１ａ、第２のコア（コア１）２０１ｂ、第３のコア（コア２）２０１ｃ、第４のコア（コア３）２０１ｄ（以下、他のコア２０１ｂ〜２０１ｄと記載する）のそれぞれの負荷情報に基づいた、解析系処理の遅延の発生に関する統計に基づいて、複数のコア２０１ａ〜２０１ｄのうち１つのコアを選択する。
【００５９】
また、振り分け処理は、選択されたコアに解析系処理を振り分ける。処理の振り分けとは、複数のコア２０１ａ〜２０１ｄのいずれか一つにある処理を行わせ、負荷を分散することをいう。
【００６０】
なお、データ解析管理部３０１は、演算装置１０１（図２参照）がプログラムを実行することにより実現される。
【００６１】
負荷情報監視部３０９は、複数のコア２０１ａ〜２０１ｄのそれぞれにおいて、監視情報ファイル３１１に格納された監視情報を参照して、当該コアで行われる解析系処理を監視し、監視対象の処理が行われたときに、監視情報の値を更新するように構成されている。このような処理を負荷情報監視処理という。
【００６２】
また、負荷情報監視部３０９は、共有メモリ２０５内の監視定義テーブル３１３で定義された変数の設定値及び監視情報ファイル３１１に格納された監視情報を参照し、共有メモリ２０５内の統計情報ファイル３１５における各コアの統計情報を更新する。負荷情報監視部３０９は、演算装置１０１（図２参照）がプログラムを実行することにより実現される。
【００６３】
図５に示すように、第１の実施の形態では、解析系処理部１１３の機能は、以下に説明する負荷分散処理により、複数のコア２０１ａ〜２０１ｄに割り振られる。
【００６４】
監視定義テーブル３１３の一例を表１に示す。
【００６５】
【表１】
2020191069.tif 000003
【００６６】
表１に示す監視定義テーブル３１３において、変数α１は、データ収集周期（タクトタイム）を意味する。データ収集周期は、データ収集部１０９、データ解析管理部３０１及び負荷情報監視部３０９が動作する周期である。解析系処理部１１３は、複数のコア２０１ａ〜２０１ｄにおける負荷により動作できないことがある。
【００６７】
また、変数α２は、遅延許容時間（回数）を意味する。遅延許容時間は、解析系データの収集から解析の完了までの許容できる時間である。遅延許容時間は、データ収集周期のタイミングで監視を行うため、端数の時間設定をできないようにするため、変数α２は、データ収集周期の回数として設定とする。したがって、遅延許容時間は、データ収集周期に変数α２を積算することにより求めることができる。
【００６８】
また、変数α３は、完了可能確率を意味する。
【００６９】
また、変数α４は、解析最大時間（μｓ）を意味する。解析系処理部１１３が行う解析系処理を振り分けていないコアにおいて、解析系処理を行ったと仮定した場合に、解析系処理にかかる時間の最大値に相当する。第１の実施の形態では、変数α４の値としては、システム設計時に解析系処理がコアを１００％占有したときの最大時間に、プログラム変更による処理時間の増加分をマージンとし、約１．２を乗算した値を用いるが、特に限定されない。
【００７０】
監視情報ファイル３１１の一例を表２に示す。
【００７１】
【表２】
2020191069.tif 000004
【００７２】
表２に示す監視情報ファイル３１１において、変数β１は、負荷情報監視部３０９の実行回数を意味する。変数β１は、複数のコア２０１ａ〜２０１ｄにおいて、負荷情報監視部３０９により、それらの動作時に１インクリメントされる。
【００７３】
また、変数β２は、データ解析処理部実行フラグを意味する。当該フラグは、例えば、データ解析管理部３０１が、解析系処理が実行中であればフラグを立て（β２＝１）、解析系処理が完了したら、フラグをクリアする（β２＝０）。
【００７４】
また、変数β３は、解析系データ番号を意味する。解析系データ番号は、例えば、データ解析管理部３０１により、解析系処理が行われている解析系データに付与される、ユニークな値（通し番号等）である。
【００７５】
また、変数β４は、データ収集部１０９の実行開始時刻（カウンタ）を意味する。この実行開始時刻としては、第１のコア２０１ａでは、データ解析管理部３０１が、データ収集部１０９によりデータ収集処理が開始された時刻を時刻カウンタで格納する。
【００７６】
また、変数β５は、解析系処理部１１３の実行開始時刻（カウンタ）を意味する。この実行開始時刻としては、解析系処理が振り分けられたコアについて、当該コアの負荷情報監視部３０９が、解析系処理部１１３により解析系処理が開始された時刻を時刻カウンタに格納する。
【００７７】
上述のように、表２に示す監視情報ファイル３１１において、変数β３〜β５は、解析系処理が振り分けられたコアにより更新される。
【００７８】
次に、複数のコア２０１ａ〜２０１ｄにおける、各処理部の機能の優先度について説明する。ＯＳの割り当て処理により、各処理部の機能が機能単位で割り当てられるが、データ収集における制御系データの欠損、制御指令を含むデータ出力の遅延等を防ぐため、以下の順番で優先度を高くしている。
【００７９】
第１のコア（コア０）
（優先度：高）データ収集部＝データ解析管理部＞制御系処理部＞解析系処理部（優先度：低）
他のコア（コア１〜３）
（優先度：高）負荷情報監視部＞制御系処理部＞解析系処理部（優先度：低）
【００８０】
図６は、第１の実施の形態における制御監視装置における第１のコア２０１ａでの各処理の動作タイミングと優先度を示すタイミングチャートである。第１の実施の形態では、データ収集処理及びデータ解析管理部による処理（以下、「データ解析管理処理」と記載する）は、シーケンシャルに動作するため、図６では区別していない。
【００８１】
図６に示す例では、データ収集処理及びデータ解析管理処理の優先度を最も高く、制御系処理の優先度を次に高く、かつ、解析系処理の優先度を最も低くなるように設定している。
【００８２】
図６Ａは、正常動作時の、データ収集処理及びデータ解析管理処理、制御系処理並びに制御系処理の動作タイミングを示している。この場合、１回分のデータ収集周期に同期し、まず、データ収集処理が行われる。データ収集処理では、制御系データ及び解析系データが収集され、共有メモリ２０７に収集データ３１７として記憶される。ここで、データ収集周期は、監視定義テーブル３１３で設定された変数α１の値に従う。
【００８３】
データ収集処理が完了した後、データ解析管理処理が実行される。データ解析管理処理が完了した後、制御系データを参照して制御系処理が実行される。さらに、制御系処理部１１１（図２参照）の動作が完了した後、解析系処理部１１３（図５参照）に実行権が与えられ、解析系データに対する解析系処理が実行される。したがって、以下の説明における、解析系処理部１１３を起動する、又は、解析系処理部１１３に実行開始を命令するとの記載は、解析系処理が直ちに開始されることを必ずしも意味していない。
【００８４】
図６Ａに示す例では、各データ収集周期に、データ１〜４（図６中は丸数字で記載）が収集され、データ１〜４に含まれる解析系データに対する解析系処理が各データ収集周期内に完了し、遅延は生じていない。
【００８５】
図６Ｂ及び図６Ｃは、遅延動作時の、データ収集処理及びデータ解析管理処理、制御系処理並びに制御系処理の動作タイミングを示している。図６Ｂに示す例のように、１つ目のデータ収集周期内で、データ１を参照した制御系処理の処理時間が伸びることがある。この場合、データ２に対する解析系処理が、1つ目のデータ収集周期内で完了できず、２つめのデータ収集期間になり、データ１の一部（１−１）まで解析したところで、中断する。そして、２つ目のデータ収集周期で、制御系処理部１１１（図２）がデータ２を参照した制御系処理を実行し、完了した後、解析系処理を再開し、データ１の残り（１−２）を解析している。さらに、その影響により、２つ目のデータ収集周期内でデータ２の一部（２−１）を解析し、３つ目のデータ収集周期でデータ２の残り（２−２）を解析している。このように、データ１に対する解析系処理及びデータ２に対する解析系処理が分割され、それぞれ、１データ収集周期分だけ遅延している。
【００８６】
図６Ｃに示す例では、２つ目のデータ収集周期で、データ２に基づく制御系処理の処理時間が３つ目のデータ収集周期に至るまで伸びたため、データ２に対する解析系処理を、２つめのデータ収集周期内で実施できず、３つ目のデータ収集周期にデータ２に対する解析系処理を実施し、完了している。このように、データ２に対する解析系処理が分割されることなく、１データ収集周期分だけ遅延している。
【００８７】
次に、図７〜図１６を参照して、第１の実施の形態に係る負荷分散処理について説明する。図７は、第１の実施の形態に係る制御監視装置３における第１のコア２０１ａが行うデータ収集周期動作を示すフローチャートである。
【００８８】
（データ収集周期動作）
データ収集周期動作は、定周期割込みにより起動される。図７に示すように、第１のコア２０１ａにおいて、あるタクトが開始すると、まず、第１のコア２０１ａの監視情報ファイルの変数β４に現在時刻（カウンタ）の値を格納する（Ｓ１１）。その後、データ収集処理が行われる（Ｓ１２）。データ収集処理が完了した後、データ解析管理部３０１が起動し、本発明の負荷分散処理の一例であるデータ解析管理処理が実行される（Ｓ１３）。
【００８９】
（データ解析管理処理）
図８及び図９は、図７に示すデータ解析管理処理の各工程を示すフローチャートである。まず、図８に示すように、データ解析管理部３０１は、解析系処理部起動遅延カウンタが1以上か否か判定する（Ｓ１０１）。解析系処理部起動遅延カウンタは、第１のコア２０１ａ（図５参照）の記憶部（不図示）に格納されている。
【００９０】
第１の実施の形態では、既に解析系処理部１１３が実行中のコアは選択しない（キューイング処理を行わない）ことを前提としている。また、前回の解析系データの解析結果は次の解析には使用しないことを前提としている。そのため、全てのコアが動作中の場合、コアの割り当てができないので、その回数分の遅れが発生するので、この遅れを考慮する必要がある。そこで、コアの割り当てが可能であり、解析系処理部１１３を起動できたとき、解析系処理部起動遅延カウンタを１デクリメントする。また、コアの割り当てが可能でなく、解析系処理部１１３を起動できなかったときは、解析系処理部起動遅延カウンタを１インクリメントすることとする。
【００９１】
Ｓ１０１において判定がＮｏであった場合、図９のＳ１０７へ進む。一方、Ｓ１０１において判定がＹｅｓであった場合、遅延が発生しているため、データ解析管理部３０１は、遅延分のデータ解析処理を割り当てるコアを選択する解析実行コア選択処理（Ｓ１０２）を実行する。解析実行コア選択処理の詳細については、後述する。
【００９２】
データ解析管理部３０１は、解析実行コア選択処理（Ｓ１０２）により、解析実行コアとして選択されたコア（以下、被選択コアと記載する）について、古いデータから順次起動可能か判定する（Ｓ１０３）。
【００９３】
Ｓ１０３における判定がＹｅｓであった場合、解析系処理部起動遅延カウンタを１デクリメントし（Ｓ１０４）、被選択コアにおいて、負荷情報監視部３０９を起動する（Ｓ１０５）。その後、解析系処理部起動遅延カウンタが０になる（遅延がなくなる）までＳ１０１〜Ｓ１０５を繰り返すために、Ｓ１０１に処理を戻す。
【００９４】
一方、Ｓ１０３における判定がＮｏであった場合、解析系処理部起動遅延カウンタを１インクリメントし（Ｓ１０６）、図９に示すＳ１１２に進む。
【００９５】
上述のように、図８に示すＳ１０１における判定がＮｏであった場合、遅延分のデータ解析処理はないので、今回分のデータ解析処理を行うため、図９に示すように、データ解析管理部３０１は、今回分のデータ解析処理を割り当てるコアを選択する解析実行コア選択処理を実行する（Ｓ１０７）。
【００９６】
次に、データ解析管理部３０１は、被選択コアについて、古いデータから順次起動可能か判定する（Ｓ１０８）。
【００９７】
Ｓ１０８における判定がＹｅｓであった場合、解析系処理部起動遅延カウンタを１デクリメントし（Ｓ１０９）、当該コアにおいて、負荷情報監視部３０９を起動する（Ｓ１１０）。解析系処理部起動遅延カウンタが０になる（遅延がなくなる）まで、Ｓ１０７〜Ｓ１１０を繰り返すために、Ｓ１０７に処理を戻す。
【００９８】
一方、Ｓ１０８における判定がＮｏであった場合、解析系処理部起動遅延カウンタを１インクリメントする（Ｓ１１１）。その後、データ解析管理部３０１は、負荷情報監視部３０９が実行されたコア（以下、「当該コア」と記載する）の監視情報ファイル３１１の変数β１を１インクリメント（Ｓ１１２）し、処理を終了する。
【００９９】
次に、図１０を参照し、データ解析管理部３０１による負荷情報監視部３０９の起動について説明する。図１０は、第１の実施の形態に係る制御監視装置における負荷情報監視部の起動の各工程を示すフローチャートである。データ解析管理部３０１は、まず、被選択コアのうち負荷情報監視部３０９を起動しようとしている当該コアの監視情報ファイル３１１の変数β２の解析系処理部実行フラグをたてる（Ｓ１２１）。次いで、データ解析管理部３０１は、被選択コアの監視情報ファイル３１１の変数β３に、解析系データに付与された解析系データ番号（処理番号）を格納する（Ｓ１２２）。次いで、データ解析管理部３０１は、当該コアの負荷情報監視部３０９に対し、解析系データ番号を通知し、負荷情報監視部３０９の起動を命令する（Ｓ１２３）する。
【０１００】
その後、データ解析管理部３０１は、被選択コアの全てについて負荷情報監視部３０９が起動したか否かを判定する（Ｓ１２４）。Ｓ１２４における判定がＮｏである場合、Ｓ１２１に戻る。一方、Ｓ１２４における判定がＹｅｓである場合、処理を終了する。
【０１０１】
図１１は、第１の実施の形態に係る制御監視装置３におけるデータ解析処理の各工程を示すフローチャートである。図１１に示すように、データ解析処理では、解析系処理部１１３は、まず、図１０のＳ１２３で行われる負荷情報監視部３０９からの通知を待つ（Ｓ２０１）。次に、解析系処理部１１３は、当該コアの監視情報ファイル３１１の変数β５に現在時刻（カウンタ）を格納する（Ｓ２０２）。
【０１０２】
次に、負荷情報監視部３０９は、解析系処理を行うか否か判定する（Ｓ２０３）。解析系処理の要否は、当該コアの監視情報ファイル３１１を参照し、変数β２に格納された解析系処理部実行フラグが立てられているか否かで判定する。Ｓ２０３における判定がＹｅｓである場合、解析系処理部１１３は、解析系処理を実行する（Ｓ２０４）。
【０１０３】
解析系処理部１１３は、その後、データ収集遅れ回数を求める（Ｓ２０５）。データ収集遅れ回数の求め方は、以下の式（１）の通りである。
データ収集遅れ回数＝（解析系処理部実行開始時刻（変数β５）−データ収集部実行開始時刻（変数β４））／データ収集周期（変数α１）  （１）
【０１０４】
一方、Ｓ２０３における判定がＮｏである場合、解析系処理部１１３は、解析系処理を実行したと仮想したときに解析系処理が完了するまでのタクトタイムの回数に相当する解析系処理完了予定回数を求める（Ｓ２０６）。
【０１０５】
解析系処理完了予定回数は、各コアとも、第１のコア２０１ａ（コア０）の解析系処理部１１３が動作を開始した時刻と次のデータ収集までの時間が、１周期で処理できる時間と仮定して求める。解析系処理完了予定回数の求め方は、次の式（２）〜（４）の通りである。
解析系処理完了予定回数＝データ収集遅れ回数×（解析系処理部実行可能時間／データ解析最大時間）  （２）
解析系処理部実行可能時間＝データ収集周期（変数α１）−（解析系処理部実行開始時刻（変数β５）−データ収集部実行開始時刻（変数β４））  （３）
データ収集遅れ回数＝（解析系処理部実行開始時刻（変数β５）−データ収集部実行開始時刻（変数β４））／データ収集周期（変数α１）  （４）
【０１０６】
次に、解析系処理部１１３は、上述のように求められたデータ収集遅れ回数及び解析系処理完了予定回数に基づいて、当該コアについて、統計情報ファイル３１５の遅延回数（ＮＤ）を更新する（Ｓ２０７）。遅延回数（ＮＤ）は、本発明の「解析系処理の１つに対する前記複数のコアのそれぞれにおける実行回数」の一例である。遅延回数（ＮＤ）の更新処理の詳細については、後述する。
【０１０７】
次に、解析系処理部１１３は、遅延回数（ＮＤ）に基づいて、当該コアについて、後述のような統計処理を行い、算出された値に基づいて更新する（Ｓ２０８）。
【０１０８】
次いで、解析系処理部１１３は、当該コアの監視情報ファイル３１１に格納された変数β１の値をクリアし（Ｓ２０９）、変数β２のフラグをクリアし（Ｓ２１０）、処理を終了する。
【０１０９】
表３に、統計情報ファイル３１５の一例を示す。
【０１１０】
【表３】
2020191069.tif 000005
【０１１１】
表３に示すように、統計情報ファイル３１５は、例えば表形式で構成されている。統計情報ファイル３１５において、１つの解析系データに対して１レコード（一行）が用意されている。各レコードには、解析系データ番号ＡＤ１〜ＡＤｎがそれぞれ付与されている。また、各レコードには、複数のコア２０１ａ〜２０１ｄ（コア０〜コア３）毎に遅延回数（ＮＤ）が格納されるように構成されている。また、統計情報ファイル３１５には、複数のコア２０１ａ〜２０１ｄ（コア０〜コア３）毎に、遅延回数（ＮＤ）に関する統計情報として、最大値、平均値及び標準偏差が格納されるように構成されている。
【０１１２】
（統計処理）
上述のように、第１の実施の形態では、１回のタクトタイムで収集した解析系データ（以下、「一収集単位の解析系データ」と記載する）の解析系処理について、複数のコア２０１ａ〜２０１ｄのそれぞれにおける遅延回数の統計を取っている。このような遅延回数の統計を取る処理（以下、統計処理と記載する）を解析系処理部１１３により行う場合を例に挙げて説明する。
【０１１３】
解析系処理部１１３（図５参照）は、監視情報ファイル３１１を参照し、統計を取り始めから現在のタクトの一つ前までの一収集単位の解析系データについて蓄積した遅延回数（ＮＤ）の最大値を決定する。次に、遅延回数の平均値及び標準偏差を算出し、統計情報ファイル３１５に格納された前回のまでの最大値、平均値及び標準偏差の数値（統計情報）を更新する。なお、平均値及び標準偏差を算出する順は限定されず、変更されてもよい。
【０１１４】
（コア選択処理）
第１の実施の形態に係る制御監視装置３では、上述のようにして得られた統計情報を用いて、データ解析管理部３０１により解析実行コア選択処理（図８中、Ｓ１０２、及び、図９中、Ｓ１０７）が行なわれる。図１２及び図１３は、図８及び図９に示す解析実行コア選択処理の各工程を示すフローチャートである。
【０１１５】
図１２に示すように、解析実行コア選択処理において、データ解析管理部３０１は、まず、統計情報ファイル３１５（図５参照）を参照し、遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）が最小のコアを抽出する（Ｓ３０１）。ここで抽出されるコアは、最大値が同一となることがあり得るため、一つとは限らない。このような場合には、複数のコアが抽出される。
【０１１６】
次いで、データ解析管理部３０１は、実行可能性を評価する（Ｓ３０２）。完了可能性評価とは、抽出したコアの遅延回数（ＮＤの最大値（ＮＤｍａｘ）に相当する遅延が発生した場合に、指定時間内に解析系処理を実行できるか否かの評価である。
【０１１７】
実行可能性評価は、表１に示す監視定義テーブル３１３に格納されている変数α１、α２及び統計情報ファイル３１５に格納されている遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）と、起動遅延カウンタＡＤに基づいて、式（５）が成立したか否かに従って行うことができる。
α２ｘα１-（（ＮＤｍａｘ＋ＡＤ）ｘα１）＞＝０  （５）
【０１１８】
式（５）が成立する場合、指定時間内に解析系処理を実行できると評価する。
【０１１９】
実行可能性評価が終了したならば、評価の結果に基づいて、抽出されたコアを用いて解析系処理を指定時間に実行可能か否かの判定を行う（Ｓ３０３）。
【０１２０】
Ｓ３０３における判定がＹｅｓであった場合、Ｓ３０４に進む。一方、Ｓ３０３における判定がＮｏであった場合、図１３に示すＳ４０１に進む。
【０１２１】
まず、Ｓ３０３における判定がＹｅｓであった場合について説明する。データ解析管理部３０１は、複数のコアが抽出されたか否かを判定する（Ｓ３０４）。
【０１２２】
Ｓ３０４における判定がＮｏである場合、処理を終了し、ここまでに抽出されたコアを解析実行コアとして選択する。一方、データ解析管理部３０１は、Ｓ３０４における判定がＹｅｓである場合、統計情報ファイル３１５（図５参照）を参照し、遅延回数（ＮＤ）の平均値が最小のコアを候補として抽出する（Ｓ３０５）。
【０１２３】
なお、ここで使用する遅延回数（ＮＤ）の平均値は、遅延回数が０のサンプルは除外して算出することが好ましい。例えば、以下のような場合が考えられる。
候補Ｉ：
遅延回数５  サンプル数４
遅延回数０  サンプル数１５
候補ＩＩ：
遅延回数５  サンプル数１
遅延回数３  サンプル数５
遅延回数０  サンプル数１４
【０１２４】
候補Ｉ、ＩＩのいずれも最大値（ＮＤｍａｘ）は５であり、同一である。しかし、候補Ｉ、ＩＩの遅延回数（ＮＤ）の平均値は、遅延回数０のサンプルを含む場合と含まない場合では以下のように相違する。
候補Ｉ：
遅延回数０のサンプルを含む場合      平均値１．０
遅延回数０のサンプルを含まない場合  平均値５．０
候補ＩＩ：
遅延回数０のサンプルを含む場合      平均値１．０
遅延回数０のサンプルを含まない場合  平均値３．３
【０１２５】
このように、候補Ｉの最大値（ＮＤｍａｘ）の発生回数が多いため、候補ＩＩの方が、解析系処理が早く完了する確率が高く、望ましい。そこで、統計処理において、遅延回数０のサンプル、すなわち遅延が発生していない場合を除外して平均値を算出することが好ましい。
【０１２６】
次に、データ解析管理部３０１は、Ｓ３０５において複数のコアが抽出されたか否か判定する（Ｓ３０６）。Ｓ３０６における判定がＮｏである場合、処理を終了し、ここまでに抽出されたコアを解析実行コアとして選択する。一方、Ｓ３０６における判定がＹｅｓである場合、統計情報ファイル３１５（図５参照）を参照し、遅延回数（ＮＤ）の標準偏差が最小のコアを候補として抽出する（Ｓ３０７）。これにより、遅延回数（ＮＤ）のばらつきが少ないコアを抽出することができる。
【０１２７】
遅延回数（ＮＤ）の標準偏差は、平均値の場合と同様に、遅延回数（ＮＤ）が０のサンプルは除外して算出することが好ましい。
【０１２８】
次に、データ解析管理部３０１は、Ｓ３０７において複数のコアが抽出されたか否か判定する（Ｓ３０８）。ここまでの工程でも１つのコアに絞れない場合には、いずれのコアであっても同等の確率で遅延が発生すると考えられるので、例えば、コア番号（０〜１）が最大のものを選択し（Ｓ３０９）、処理を終了し、ここで選択されたコアを解析実行コアとして選択する。この際、コア番号（０〜１）が最小のコアを選択してもよいし、無作為に選択してもよい。
【０１２９】
次に、Ｓ３０３における判定がＮｏであった場合について説明する。図１３に示すように、まず、データ解析管理部３０１は、並列実行するコアの数が最大か否か判定する（Ｓ４０１）。
【０１３０】
Ｓ４０１における判定がＮｏである場合、データ解析管理部３０１は、ここまでに抽出されたコアの次に遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）が小さいコアを抽出する（Ｓ４０２）。
【０１３１】
次に、データ解析管理部３０１はここまでに抽出されたコアのそれぞれにおいて、指定時間内に解析系処理を実行する実行可能性確率（以下、単に確率と記載する）Ａを算出する（Ｓ４０３）。
【０１３２】
確率Ａは、統計情報ファイル３１５に格納されている当該コアでの遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）が発生する回数Ｘと現時点までの解析系データの数ｎに基づいて、式（６）を用いて算出することができる。
Ａ＝１−（Ｘ／ｎ）  （６）
【０１３３】
Ｓ４０３が終了したならば、データ解析管理部３０１は、すでに算出されている確率Ａを積算し、ここまでに抽出されたコアを並列処理したときの確率Ｂを算出する（Ｓ４０４）。
【０１３４】
Ｓ４０４が終了したならば、確率Ｂが、表１に示す監視定義テーブル３１３に格納された変数α３（完了可能確率）よりも大きいか否か判定する（Ｓ４０５）。
【０１３５】
Ｓ４０５における判定がＹｅｓである場合、ここまでに抽出済みの複数のコアを解析実行コアとして選択する（Ｓ４０６）、処理を終了する。一方、Ｓ４０５における判定がＮｏである場合、Ｓ４０１に戻る。このようにして、確率Ｂが変数α３よりも大きくなるまで、並列処理に用いるコアを追加していく。
【０１３６】
一方、Ｓ４０１における判定がＹｅｓである場合、全てのコアを解析実行コアとして選択（Ｓ４０６）し、処理を終了する。
【０１３７】
次に、負荷情報監視部３０９における処理について、図１４を参照して説明する。図１４は、制御監視装置３における負荷情報監視部３０９の各工程を示すフローチャートである。図１４に示すように、負荷情報監視部３０９は、当該コアの監視情報ファイル３１１の変数β１を１インクリメントする（Ｓ５０１）。その後、負荷情報監視部３０９は、解析系処理部１１３を起動し（Ｓ５０２）、処理を終了する。
【０１３８】
以下、表３を参照して、第１の実施の形態における統計情報ファイル３１５（図５参照）を用いたコアの選択について説明する。
【０１３９】
統計情報ファイル３１５の一例を表４に示す。
【０１４０】
【表４】
2020191069.tif 000006
【０１４１】
表４に示す統計情報ファイル３１５は、コアが８つの場合を示している。この時点での統計情報に基づいてコアを選択する場合、遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）が最小のものをみると、最大値（ＮＤｍａｘ）が「６」である４つのコアが抽出される。そこで、遅延回数（ＮＤ）の平均値が最小であるものをみると、平均値が「４．６」である２つのコアが抽出される。さらに、遅延回数（ＮＤ）の標準偏差が最小であるものをみると、標準偏差が「０．９」であるコア６を抽出することができる。
【０１４２】
図１５及び図１６を参照して、第１の実施の形態に係る各処理の動作タイミングについて説明する。図１５は、第１の実施の形態に係る情報処理装置における複数のコアでの各種処理の動作タイミングを示すタイミングチャートである。図１５中、記号は以下の意味を示す（図１６も同様）。
Ｄｘ：データ収集処理
Ｍｘ：データ解析管理処理
Ｆ：負荷情報監視処理
Ｃｙｙ：制御系処理
Ａｘ：解析系処理
Ｉ：割込み処理
【０１４３】
ここで、記号Ｄ、Ｍ、Ａに付与された自然数ｘは、制御系データ又は解析系データの番号を意味し、例えば、Ａ２は、データ収集処理Ｄ２で収集した解析系データを解析する解析系処理を意味する。記号Ｃに付与された自然数ｙｙは、同一のデータ収集処理で収集された制御系データに対し、制御系処理の種類の違いで同一のコア内でも周期的又は非周期的に動作することを意味し、同一の番号があるのは、制御系処理が割込みによって強制的に分割されていることを意味する。割り込みには、例えば、ＲＳ２３２Ｃ通信、Ｅｔｈｅｒｎｅｔ（登録商標）通信等があるが、特に限定されない。
【０１４４】
図１５に示すように、コア０では、１つ目のデータ収集周期において、データ収集処理Ｄ１で収集された解析系データＤ１について、負荷情報監視部３０９が解析系処理部１１３を起動し、解析系処理Ａ２を実行させている。
【０１４５】
同様に、２つ目のデータ収集周期において、データ収集処理Ｄ２で収集された解析系データＤ２について、負荷情報監視部３０９が解析系処理部１１３を起動し、解析系処理Ａ２を実行させている。
【０１４６】
しかし、２つめのデータ収集周期では、解析系処理Ａ２が完了せず、中断したため、３つ目のデータ収集周期で解析系処理Ａ２の残りの処理を行う必要がある。このため、他のコア１〜３のうち、コア１を選択し、３つ目のデータ収集周期において、コア０でのデータ収集処理で収集された解析系データＤ３について、コア０のデータ解析管理部３０１から、コア１の負荷情報監視部３０９に対し、解析要求を行っている。解析要求は、図１０に示すＳ１２２において、コア１の監視情報ファイル３１１の変数β３に解析系データＤ３の解析系データ番号を格納することにより行われる。
【０１４７】
解析要求に基づいて、コア１の負荷情報監視部３０９は、当該コアの解析系処理部１１３を起動し、解析系処理Ａ３を実行させている。
【０１４８】
図１６は、第１の実施の形態に係る情報処理装置におけるコアでの各種処理の動作タイミングと変数の更新タイミングを示すタイミングチャートである。図１６に示す例では、コア２に解析系データＤ１について、解析系処理Ａ１を割り当てた場合に、解析系処理Ａ１が３つに分割された場合を示している。
【０１４９】
図１６に示すように、コア２が選択されたとき、コア２の監視情報ファイル３１１の変数β２のフラグが立てられている。その後、コア２での解析系処理Ａ２−２が完了したとき、コア２の変数２のフラグがリセットされている。また、コア２の変数β１の値ｌは、コア２で負荷情報監視処理Ｆが実行されるたびに更新されている。
【０１５０】
以上説明したように、第１の実施の形態に係る制御監視装置３及びそれを用いた制御監視方法によれば、データ解析管理部３０１は、解析系処理を複数のコア２０１ａ〜２０１ｄへ振り分ける際、解析系処理の遅延の発生に関する統計（遅延回数の最大値、平均値及び標準偏差）に基づいて、振り分け先のコアを選択している。これにより、複数のコアから遅延発生の確率がより低いコアを選んで解析系処理を行わせるため、遅延が発生する可能性を低くできる。これにより、複数のコアを有する演算装置において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てることができる。この結果、このような解析系処理の遅延のために、主体である制御系処理に、データ収集における制御系データの欠損、制御指令を含むデータ出力の遅延等の影響が出ることを防止しつつ、演算装置１０１のパフォーマンスの限界まで利用して、制御系処理及び解析系処理を行うことができる。また、制御監視システム１における監視のリアルタイム性を確保し、異常を未然に発見し、装置の故障によるプラントなどの稼働停止時間を削減することができる。
【０１５１】
また、第１の実施の形態では、解析系処理を振り分けようとする候補のコアの実施可能性を判定し、当該コアにより解析系処理を遅延許容期間内に完了できるか否かを判定する判定処理を更に含む。この判定処理により、解析系処理を遅延許容期間内に完了できないと判定されたときは、データ解析管理部３０１は、候補のコアの次に遅延回数の最大値が小さいコアをさらに選択し、並列処理を行わせる。この結果、演算装置１０１のパフォーマンスをより限界近くまで利用し、制御系処理及び解析系処理を行うことができる。
【０１５２】
（第２の実施の形態）
上述のような第１の実施の形態において、解析系処理の実行時間を守るため、遅延確率の最も少ないコアに解析系処理を割り当てている。この方法は、解析系処理の完了までの時間が長い場合には、有用であるが、解析系処理全体の実行時間を短くするものではない。そこで、本発明は、より短い実行時間で解析系処理を完了するためには、許容時間内に解析系処理が完了しない可能性がある場合には、同一の解析系処理の並列実行を行うことを検討し、本願の第２の発明を見出した。
【０１５３】
すなわち、本願の第２の発明は、実行順序の誤りによるに演算結果の異常が無いように、実行順序を予め定義し、その順序を守った上で、同一の解析系処理を並列実行させることを骨子とする。
【０１５４】
以下、本願の第２の実施の形態に係る制御監視装置とその処理について説明する。以下の説明では、第１の実施の形態と同じものについては同一の番号を付し、説明を省略する。
【０１５５】
図１７は、第２の実施の形態に係る制御監視装置３のデータ相関図である。図１７には、解析系処理の並列化のための機能と各種データとの相間を示している。
【０１５６】
図１７において、テーブルとは、予め設計時に設定され、動作中に書き換えられない情報を意味している。また、ファイルとは、動作中に書き換えられる情報を意味している。また、図１７において、矢印の方向は、データのＲ／Ｗ方向を意味し、実線の矢印は、データの生成を意味し、一点鎖線の矢印は、要求を意味し、破線の矢印は、通知を意味する。
【０１５７】
第２の実施の形態では、複数のコア２０１ａ〜２０１ｄ（図３参照）のうち、第１のコア２０１ａに、データ収集部１０９及びデータ解析管理部３０１の機能が固定的に割り当てられている。
【０１５８】
データ解析管理部３０１は、複数のコア２０１ａ〜２０１ｄにおいて、解析負荷監視部４０１を起動するように構成されている。また、複数のコア２０１ａ〜２０１ｄにおいて、解析負荷監視部４０１は、解析系処理部１１３を起動するように構成されている。
【０１５９】
また、第１のコア２０１ａにおいて、データ解析管理部３０１は、監視定義テーブル４０２及び解析処理管理テーブル４０３を参照できるように構成されている。また、データ解析管理部３０１は、並列実行パターンファイル４０４及びデータ解析管理情報ファイル４０５を作成及び書き換えできるように構成されている。また、データ解析管理部３０１は、共有メモリ２０７のコア負荷情報ファイル４０７を参照できるように構成されている。
【０１６０】
データ解析管理部３０１は、第１のコア２０１ａにおいて、複数起動させることができる。
【０１６１】
また、複数のコア２０１ａ〜２０１ｄにおいて、解析負荷監視部４０１は、解析処理情報ファイル４０６を作成、変更及び参照できるように構成されている。解析負荷監視部４０１は、共有メモリ２０７のコア負荷情報ファイル４０７を作成及び書き換えできるように構成されている。
【０１６２】
また、データ収集部１０９は、共有メモリ２０７の監視／制御データファイル４０８を作成及び書き換えできるように構成されている。また、解析系処理部１１３及び制御系処理部１１１は、共有メモリ２０７の監視／制御データファイル４０８を参照できるように構成されている。
【０１６３】
上述のような制御監視装置３において、各処理部の優先順位は、例えば、以下のようにして決まる。
【０１６４】
データ収集部１０９は、データ収集の欠損が許されないので、最も優先度が高い。なお、通常は、データ収集後にそのデータを使用してデータ解析管理部３０１が動作する。しかし、データ解析が遅れた場合、データ解析管理部３０１は、複数タスク動作する可能性があるので、データ収集と同じにはできない。
【０１６５】
また、解析負荷監視部４０１は、データ解析管理部３０１から起動され、データ解析管理部３０１の実行時間を管理するので、制御系処理部１１１より優先度が高い。
【０１６６】
また、解析系処理部１１３は、処理に時間がかかるので、制御系処理部１１１より優先度が高い。
【０１６７】
好ましい優先度をまとめると、以下の通りである。
＜データ解析を行うコア＞
データ収集部１０９＞データ解析管理部３０１＞解析負荷監視部４０１＞制御系処理部１１１＞解析系処理部１１３
＜データ解析を分担する行うコア＞
解析負荷監視部４０１＞制御系処理部１１１＞解析系処理部１１３
【０１６８】
監視定義テーブル４０２の一例を表５に示す。
【０１６９】
【表５】
2020191069.tif 000007
【０１７０】
表５に示す監視定義テーブル４０２の変数γ１、γ３は、表１に示す監視定義テーブル３１３の変数α１、α３に対応する。変数γ２は、本発明の許容時間の一例であり、解析系処理が完了するまでに許容される時間を示す。
【０１７１】
監視定義テーブル４０２に、解析最大時間（μｓ）を含めてもよい。解析最大時間は、第１の実施の形態で説明した監視定義テーブル３１３の変数α４に対応する。
【０１７２】
解析処理管理テーブル４０３は、並列実行される解析系処理とその実行順序が設定されている。解析処理管理テーブル４０３の一例を表６に示す。
【０１７３】
【表６】
2020191069.tif 000008
【０１７４】
表６に示す解析処理管理テーブル４０３において、解析処理番号δ１は、解析系処理に対して付与される通し番号（例えば、Ａ−１〜Ｎ：処理数）である。
【０１７５】
シーケンス番号δ２は、並列処理できる同一の解析系処理に付与される番号（例えば、Ｓｅｑ−１〜Ｍ：実行順序（Ｍは、最大コア数を示す））である。
【０１７６】
なお、並列処理できる同一の解析系処理（同一のシーケンス番号が付与される解析系処理）の数は、コア数（スレッド数）に依存するため、並列実行したときの実行時間のばらつきが無いように分割しておく必要がある。
【０１７７】
解析処理実行時間δ３は、無負荷時の解析系処理の実行時間である。
【０１７８】
出力先解析番号δ４は、解析系処理を実行完了後、次に解析系処理を実行させる解析系処理の解析処理番号である。解析結果を次に使用する解析がある場合、順序を守る必要があるので、該当する解析系処理の出力先を設定しておく。
【０１７９】
解析処理管理テーブル４０３は、予め設計時に解析系処理毎に設定にされている。
【０１８０】
本発明の予め定義された解析系処理の実行順序に関する情報の一例である、並列実行パターンファイル４０４の一例を表７に示す。
【表７】
2020191069.tif 000009
【０１８１】
表７に示す並列実行パターンファイル４０４において、変数ε１、ε２は、表６に示す解析処理管理テーブル４０３における係数δ２、δ１とそれぞれ同意である。解析実行コア番号ε３は、変数ε１が示すシーケンスにおいて、変数ε２が示す解析系処理を実行するコアの番号を表す。
【０１８２】
並列実行パターンファイル４０４は、データ解析管理部３０１が解析処理管理テーブル４０３から作成する。より具体的には、データ解析管理部３０１は、起動時に、複数の解析処理管理テーブル４０３を解析処理番号の順に参照し、同じシーケンス番号が付与された複数の解析系処理（以下、グループと記載する）に、解析処理番号を割り当てる。
【０１８３】
また、データ解析管理部３０１は、データ収集部１０９からデータが送られて来たら、シーケンス番号によるグループ分けに従い、解析系処理をコアに割り当て、並列実行パターンファイル４０４に、シーケンス番号毎に、解析処理番号及び解析実行コア番号を格納する。
【０１８４】
データ解析管理情報ファイル４０５は、データ解析管理部３０１毎に作成される。データ解析管理情報ファイル４０５の一例を表８に示す。
【０１８５】
【表８】
2020191069.tif 000010
【０１８６】
表８に示すデータ解析管理情報ファイル４０５において、シーケンス番号ζ１は、実行中の解析系処理のシーケンス番号である。
【０１８７】
また、データ番号ζ２は、データ収集部１０９から送られる解析系処理を行うデータに付与される番号である。
【０１８８】
また、解析開始時刻ζ３は、データ収集部１０９が起動した時刻である。例えば、データ解析管理部３０１が、データ収集部１０９から送られた当該データの収集開始時刻を解析開始時刻ζ３として格納する。
【０１８９】
コア別解析負荷監視情報フラグζ４（以下、単にフラグζ４と記載する）は、コア毎のデータ解析管理部３０１が、解析系処理を割り当てたコア毎の管理情報である。フラグζ４は、例えば、「０」は起動なし、「１」は起動あり（完了通知待ち）、「２」は完了通知あり、をそれぞれ示す。
【０１９０】
解析処理情報ファイル４０６はコア毎に存在し、解析負荷監視部４０１が、解析系処理部１１３の監視情報を格納する。解析処理情報ファイル４０６の一例を表９に示す。
【０１９１】
【表９】
2020191069.tif 000011
【０１９２】
表９に示す解析処理情報ファイル４０６において、解析系処理部実行フラグη１（以下、フラグη１と記載する）は、解析系処理を割り当てたコアの管理情報である。フラグη１は、例えば、「０」は起動なし、「１」は起動あり（完了通知待ち）、「２」は完了通知あり、をそれぞれ示す。
【０１９３】
解析処理番号η２は、当該解析系処理に対し、表６に示す解析処理管理テーブル４０３で設定された解析処理番号δ１である。
【０１９４】
データ番号η３は、当該解析系処理がデータ解析の対象とするデータのデータ番号である。解析系処理部１１３が、フラグη１を「１」にするときに、その時刻（元々は、データ収集部１０９がデータ解析管理部３０１にデータを渡した時刻）に収集したデータの番号を格納する。
【０１９５】
シーケンス番号η４は、解析系処理のシーケンス番号である。
【０１９６】
コア負荷情報ファイル４０７の一例を示す表１０に示す。
【０１９７】
【表１０】
2020191069.tif 000012
【０１９８】
統計情報が格納されるコア負荷情報ファイル４０７は、解析系処理部１１３が処理した解析系処理の解析処理番号に対し、１つずつ作成される。コア負荷情報ファイル４０７において、ある解析系処理の解析処理番号と当該解析系処理を処理したコアのコア番号との組み合わせに対して、データ毎の解析処理実行時間（後述）、解析処理実行時間の最大値、平均値及び標準偏差が格納される。
【０１９９】
解析処理実行時間は、解析負荷監視部４０１が、解析系処理部１１３が解析系処理を終了したときに、表８に示すデータ解析管理情報ファイル４０５に格納された解析開始時刻ζ３及び解析系処理部１１３からの解析処理完了時刻に基づいて、算出される。解析処理実行時間は、データ毎に算出される。
【０２００】
解析処理実行時間の最大値は、データ毎に算出された、複数の解析処理実行時間のうち最大の値である。
【０２０１】
解析処理実行時間の平均値は、データ毎に算出された、複数の解析処理実行時間の平均値である。解析処理実行時間が０の場合は、それを除外して平均値を計算することが好ましい。
【０２０２】
解析処理実行時間の標準偏差は、データ毎に算出された、複数の解析処理実行時間の標準偏差である。平均値が同じであった場合、データのばらつきが少ないコアを選択するために使用する。解析処理実行時間が０の場合は、それを除外して平均値を計算することが好ましい。ここで、解析処理時間が０の場合とは、表１０に示すコア負荷情報ファイル４０７においてブランクの部分を示す。すなわち、すべてのコアに処理を割り当てて並列動作をさせるわけでないので、処理が割り当てられなかったために、該当するデータに対して処理が実行されなかったので時間が入らない場合がある。
【０２０３】
以下、図１８〜図２４を参照して、第２の実施の形態に係る制御監視装置３の処理について、フローチャートを参照して説明する。
【０２０４】
図１８は、第２の実施の形態に係る制御監視装置３における行うデータ収集周期動作を示すフローチャートである。データ収集部１０９は、第１の実施の形態で図７を用いて説明したように、動作する。なお、次のデータ収集までに、データ解析が完了しなかった場合に、並列に実行できるようにデータ収集部１０９とデータ解析管理部３０１は、別タスクを分けるようにすることが好ましい。
【０２０５】
図１９は、第２の実施の形態に係る制御監視装置３におけるデータ解析管理処理を示すフローチャートである。データ解析管理部３０１は、システム起動時又は解析処理管理テーブル４０３が変更されたときに、並列実行パターンファイル４０４を作成する（Ｓ６０１）。並列実行パターンファイル作成処理については、後述する。
【０２０６】
データ解析管理部３０１は、データ解析管理情報ファイル４０５の変数ζ３、すなわち、解析処理開始時間に、データ収集の開始時間（以下、収集開始時間と記載する）を格納する（Ｓ６０２）。
【０２０７】
次に、データ解析管理部３０１は、すべてのシーケンス分ループしたか否か、すなわち全シーケンスが完了したか否かを判定する（Ｓ６０３）。Ｓ６０３において、判定がＮｏであれば、データ解析管理部３０１は、並列実行パターンファイル４０４を参照し、シーケンス番号順に解析系処理を起動する。より具体的には、同一のシーケンス番号の並列処理を行う全てのコアの解析負荷監視部４０１を起動する（Ｓ６０４）。データ解析管理部３０１は、その後、解析系処理の完了待ちを行う（Ｓ６０５）。データ解析管理部３０１は、全てのコアでの解析系処理が完了したか否かを判定する（Ｓ６０６）。Ｓ６０６において、判定がＹｅｓであれば、データ解析管理部３０１は、Ｓ６０３に戻る。一方、Ｓ６０６において、判定がＮｏであれば、データ解析管理部３０１は、Ｓ６０５に戻り、全てのコアでの解析系処理が完了まで、Ｓ６０５、Ｓ６０６を繰り返す。
【０２０８】
一方、Ｓ６０３において、判定がＮｏであれば、データ解析管理部３０１は、解析処理実行時間（図１９中、実行時間と記載する）を求める（Ｓ６０７）。具体的には、現在時刻（カウンタ）をＯＳから取得して解析処理完了時間とし、データ解析管理情報ファイル４０５の解析処理開始時間（変数ζ３）を読み出し、解析処理開始時間及び解析処理完了時間から解析処理実行時間を求める。
【０２０９】
次に、データ解析管理部３０１は、解析処理実行時間が、監視定義テーブル４０２のデータ解析の許容時間以下か否か判定する（Ｓ６０８）。Ｓ６０８において、判定がＮｏであれば、データ解析管理部３０１は、許容時間内に終了しなかった解析番号、許容時間及び解析処理実行時間をログに保存し、処理を終了する。Ｓ６０８において、判定がＹｅｓであれば、データ解析管理部３０１は、そのまま処理を終了する。
【０２１０】
次に、図２０及び図２１を参照して、並列実行パターンファイル作成処理について説明する。図２０及び図２１は、第２の実施の形態に係る制御監視装置における並列実行パターンファイル作成処理を示すフローチャートである。
【０２１１】
並列実行パターンファイル４０４の作成は、次のように行われる。まず、データ解析管理部３０１は、並列実行パターンファイル４０４を初期化する（Ｓ７０１）。その後、データ解析管理部３０１は、全ての解析系処理にコアを割り当てるまでループしたか否か判定する（Ｓ７０２）。
【０２１２】
データ解析管理部３０１は、Ｓ７０２において、判定がＮｏであれば、コア割当処理を呼び出す（Ｓ７０３）。コア割当処理の詳細については後述する。
【０２１３】
コア割当処理（Ｓ７０３）を行ったならば、データ解析管理部３０１は、並列実行パターンファイル４０４において、割り当てたコアの番号を変数ε３に、割り当てた解析系処理の解析処理番号を変数ε２にそれぞれ格納する（Ｓ７０４）。
【０２１４】
Ｓ７０４が終了したならば、ＳＴ７０２に戻り、データ解析管理部３０１は全ての解析系処理をコアに割り当てるまで、ＳＴ７０２〜ＳＴ７０４を繰り返す。
【０２１５】
一方、Ｓ７０２において、判定がＹｅｓであれば、図２１のＳＴ７０５に進む。ＳＴ７０５においては、データ解析管理部３０１は、コアを割り当てた複数の解析系処理の解析処理実行時間を合算し、合計値（以下、処理全体実行時間と記載する）を求める。次に、処理全体実行時間が、監視定義テーブル４０２の変数γ２に格納された許容時間よりも大きいか否かを判定する（Ｓ７０６）。Ｓ７０６において、判定がＮｏであれば、処理を終了する。
【０２１６】
Ｓ７０６において、判定がＹｅｓであれば、データ解析管理部３０１は、遅延の最も大きい解析系処理を捜す。具体的には、データ解析管理部３０１は、並列実行する全ての解析系処理、すなわち同一のシーケンス番号が付与された解析系処理に対し、解析処理実行時間の最大値のうち最小の値（図２１では、「最大値の最小」と記載する）と解析処理管理テーブル４０３の変数δ３に格納された、無負荷時の解析処理実行時間（図２１では、変数δ３と記載する）との時間差（以下、単に時間差と記載する）を求める（Ｓ７０７）。次いで、データ解析管理部３０１は、時間差が最も大きい解析系処理を、並列化対象とする（Ｓ７０８）。
【０２１７】
次に、データ解析管理部３０１は、並列化対象に対し、並列化を行う。まず、データ解析管理部３０１は、コア割当処理（Ｓ７０９）を実行する。コア割当処理の詳細については後述する。データ解析管理部３０１は、コア割当処理の結果、割り当てるコアがあるか否か判定する（Ｓ７１０）。Ｓ７１０において、判定がＮｏであれば、データ解析管理部３０１は、ログに実行できなかったデータ番号、時刻、割り当てたコアの番号、発生確率Ｃを保存し（Ｓ７１１）、処理を終了する。
一方、Ｓ７１０において、判定がＹｅｓであれば、並列実行パターンファイル４０４において、割り当てられたコアの番号を変数ε３に、並列化対象の解析系処理、すなわち遅延の最も大きい解析系処理の解析処理番号を変数ε２に、それぞれに格納する（Ｓ７１２）。
【０２１８】
その後、データ解析管理部３０１は、並列化対象の解析系処理を指定時間内に実行できる確率Ｃを求める（Ｓ７１３）。次いで、データ解析管理部３０１は、確率Ｃが監視定義テーブル４０２の変数γ３に格納された完了可能確率よりも大きいか否か判定する（Ｓ７１４）。Ｓ７１４において、判定がＹｅｓであれば、データ解析管理部３０１は、処理を終了する。一方、Ｓ７１４において、判定がＮｏであれば、データ解析管理部３０１は、Ｓ７０８に戻り、次に遅延の大きい解析系処理に対して並列化を行う。このようにして、データ解析管理部３０１は、遅延の最も大きい解析系処理から順次に並列化を行い、コアが満杯（Ｓ７１０において、判定がＮｏ）になるまで、Ｓ７０８〜Ｓ７１４を繰り返す。
【０２１９】
コア割当処理の詳細について、図２２を参照して説明する。図２２は、図２０及び図２１に示すコア割当処理の各工程を示すフローチャートである。
【０２２０】
コア割当処理は、複数のコアのそれぞれにおける解析系処理の実行時間である解析処理実行時間の統計に基づいて、複数のコアのうち少なくとも１つのコアに解析系処理を割り当てることをいう。
【０２２１】
コア割当処理において、データ解析管理部３０１は、まず、割り当てるコアが存在するか判定（Ｓ８０９）し、割り当てるコアがない場合（Ｓ８０９において、Ｎｏ）は、エラー（割当不可情報）を呼び出し元に通知（Ｓ８１０）し、コア割当処理を終了する。割り当てるコアがある場合（Ｓ８０９において、Ｙｅｓ）は、全解析系処理にコアを割り当てるまでループしたか否か判定する（Ｓ８０１）。Ｓ８０１において、Ｙｅｓであれば、データ解析管理部３０１は、コア割当処理を終了する。
【０２２２】
一方、Ｓ８０１において、Ｎｏであれば、データ解析管理部３０１は、コア負荷情報ファイル４０７を参照し、解析処理実行時間の最大値が最小のコアを抽出する（Ｓ８０２）。ここで抽出されるコアは、最大値が同一となることがあり得るため、一つとは限らない。このような場合には、複数のコアが抽出される。
【０２２３】
次に、データ解析管理部３０１は、複数のコアが抽出されたか否かを判定する（Ｓ８０３）。
【０２２４】
Ｓ８０３における判定がＮｏである場合、処理を終了し、ここまでに抽出されたコアに解析系処理を割り当てる。一方、データ解析管理部３０１は、Ｓ８０３における判定がＹｅｓである場合、コア負荷情報ファイル４０７を参照し、解析処理実行時間の平均値が最小のコアを候補として抽出する（Ｓ８０４）。
【０２２５】
次に、データ解析管理部３０１は、Ｓ８０４において複数のコアが抽出されたか否か判定する（Ｓ８０５）。Ｓ８０４における判定がＮｏである場合、処理を終了し、ここまでに抽出されたコアに解析系処理を割り当てる。一方、Ｓ３０６における判定がＹｅｓである場合、コア負荷情報ファイル４０７を参照し、解析処理実行時間の標準偏差が最小のコアを候補として抽出する（Ｓ８０６）。これにより、解析処理実行時間のばらつきが少ないコアを抽出することができる。
【０２２６】
解析処理実行時間の標準偏差は、平均値の場合と同様に、解析処理実行時間が０のサンプルは除外して算出することが好ましい。
【０２２７】
次に、データ解析管理部３０１は、Ｓ８０６において複数のコアが抽出されたか否か判定する（Ｓ８０７）。ここまでの工程でも１つのコアに絞れない場合には、いずれのコアであっても同等の確率で遅延が発生すると考えられるので、例えば、コア番号（０〜１）が最大のものを選択し（Ｓ８０８）、処理を終了し、ここで選択されたコアに解析系処理を割り当てる。この際、コア番号（０〜１）が最小のコアを選択してもよいし、無作為に選択してもよい。
【０２２８】
マルチコア・マルチプロセッサを最速で動作させるためには、全てのコアと解析系処理との組み合わせを算出し、その中から選択する方法があるが、処理が多くなると組み合わせの算出に時間がかかるので、第２の実施の形態では、シーケンス番号の早い順に並列に解析系処理を実行している。
【０２２９】
次に、解析負荷監視部４０１における処理（以下、解析負荷監視と記載する）について、図２３を参照して説明する。図２３は、第２の実施の形態に係る制御監視装置３における解析負荷監視処理の各工程を示すフローチャートである。図１９のＳ６０４において、データ解析管理部３０１は、解析負荷監視部を起動する。これに応じて、図２３に示すように、解析負荷監視部４０１は自らが起動すると、解析系処理部１１３に対して起動するように通知する（Ｓ９０１）。次に、解析負荷監視部４０１は、当該コアの解析系処理部１１３での解析系処理の完了を待つ（Ｓ９０２）。解析負荷監視部４０１は、当該コアでの解析系処理が完了したか否かを判定する（Ｓ９０３）。Ｓ９０３において、判定がＮｏであれば、解析負荷監視部４０１は、Ｓ９０２に戻り、当該コアでの解析系処理が完了まで、Ｓ９０２、Ｓ９０３を繰り返す。
【０２３０】
一方、Ｓ９０３において、判定がＹｅｓであれば、解析負荷監視部４０１は、コア負荷情報ファイルを作成し（Ｓ９０４）、データ解析管理部３０１に当該コアでの解析系処理の完了を通知する（Ｓ９０５）。
【０２３１】
次に、解析系処理部１１３における処理（以下、解析系処理と記載する）について、図２４を参照して説明する。図２４は、第２の実施の形態に係る制御監視装置３における解析系処理の各工程を示すフローチャートである。図２４に示すように、解析系処理部１１３は、まず、図２３のＳ９０１で行われる解析負荷監視部４０１からの通知を待って起動すると、当該コアに割り当てられた解析系処理を行う（Ｓ１００１）。解析系処理が完了したならば、解析系処理部１１３は、現在時刻（カウンタ）をＯＳから取得し（Ｓ１００２）、解析処理完了時間として、解析負荷監視部４０１に通知し（Ｓ１００３）、処理を終了する。
【０２３２】
図２５及び図２６を参照し、解析処理管理テーブル４０３の具体例について説明する。図２５及び図２６は、第２の実施の形態に係る制御監視装置３における解析処理管理テーブル４０３の具体例を示す説明図である。以下の説明では、解析番号Ａ−Ｘの解析系処理を単に「Ａ−Ｘ」と記載する。
【０２３３】
図２５Ａのフローは、解析処理間の依存関係（並列実行される解析系処理とその実行順序）を示している。すなわち、Ａ−１〜Ａ−４が完了後に、Ａ−５、Ａ−６が実行できる。これを表した、図２５Ｂに示す解析処理管理テーブルは、並列動作を表すシーケンス番号として、Ａ−１〜Ａ−４をＳｅｑ−１、Ａ−５、Ａ−６をＳｅｑ−２とグループ分けをし、出力先解析番号は、Ａ−１〜Ａ−４の実行完了後に、次に実行可能なＡ−５、Ａ−６を実行することを示している。また、出力先解析番号は、Ｓｅｑ−１（Ａ−１〜Ａ−４）完了後に、Ａ−５、Ａ−６を実行することを示している。なお、シーケンス番号が同じ場合は、出力先解析番号は同じとなる。
【０２３４】
また、図２６Ａのフローは、図２５Ａと同様に、解析処理間の依存関係（並列実行される解析処理とその実行順序）を示している。すなわち、Ａ−１の完了後に、Ａ−２〜Ａ−５が実行できる。また、Ａ−２〜Ａ−４の完了後に、Ａ−６が実行できる。さらにＡ−５の完了後に、Ａ−７が実行できる。これを表した、図２６Ｂの解析処理管理テーブルは、並列動作を表すシーケンス番号として、Ａ−１をＳｅｑ−１、Ａ−２〜Ａ−４をＳｅｑ−２、Ａ−５をＳｅｑ−３、Ａ−６をＳｅｑ−４、Ａ−７をＳｅｑ−５にグループ分けをしている。また、出力先解析番号は、Ｓｅｑ−１（Ａ−１）完了後にＡ−２〜Ａ−５を実行すること、Ｓｅｑ−２（Ａ−２〜Ａ−３）完了後にＡ−６を実行すること、及び、Ｓｅｑ−３（Ａ−５）完了後にＡ−７を実行することを示している。
【０２３５】
図２７を参照し、並列実行パターンファイル４０４の具体例について説明する。図２７は、第２の実施の形態に係る制御監視装置３における並列実行パターンファイル４０４の具体例を示す説明図である。図２７Ａのフローは、図２５Ａと同様に、解析処理間の依存関係（並列実行される解析処理とその実行順序）を示している。すなわち、Ａ−１の完了後に、Ａ−２〜Ａ−７が実行できる。また、Ａ−２〜Ａ−７の完了後に、Ａ−８、Ａ−９が実行できる。また、Ａ−８、Ａ−９の完了後に、Ａ−１０が実行できる。さらに、Ａ−９、Ａ−１０の完了後に、Ａ−１１が実行できる。これを表した、図２７Ｂの解析処理管理テーブルは、並列動作を表すシーケンス番号として、Ａ−１をＳｅｑ−１、Ａー２〜Ａー７をＳｅｑ−２、解析番号Ａ−８、Ａ−９をＳｅｑ−３、解析番号Ａ−１０をＳｅｑ−４、解析番号Ａ−１１をＳｅｑ−５にグループ分けをしている。なお、Ａ−８は、Ａ−１０のみ関連しているが、Ａ−１０は、Ａ−９を完了しないと動作できないので、同じシーケンス番号としている。また、出力先解析番号は、Ｓｅｑ−１（Ａ−１）完了後にＡ−２〜Ａ−７を実行すること、Ｓｅｑ−２（Ａ−２〜Ａ−７）完了後にＡ−８、Ａ−９を実行すること、及び、Ｓｅｑ−３（Ａ−８、Ａ−９）完了後にＡ−１０を実行すること、及び、Ｓｅｑ−４（Ａ−１０）完了後にＡ−１１を実行することを示している。
【０２３６】
図２７Ｂに示す並列実行パターンファイルでは、シーケンス番号毎に解析番号に割り当てたコアを示している例である。なお、説明が煩雑になるので、同一解析番号の解析処理は並列に動作させていない。
【０２３７】
図２８を参照し、解析系処理を行うコア０〜コア３における各処理の動作タイミングと優先度について説明する。図２８は、第２の実施の形態に係る制御監視装置３におけるコアでの各種処理の動作タイミングを示すタイミングチャートである。
【０２３８】
図２８における記号の意味は、以下の通りである。
Ｄ：データ収集部１０９
Ｍ：データ解析管理部３０１
Ｓ：解析負荷監視部４０１
Ｃ：制御系処理部１１１
Ａｘ−ｙ：解析系処理部１１３
ｘ：解析処理番号
ｙ：解析処理番号が分割されたときの通し番号（１〜）
【０２３９】
各部の優先度は、データ収集部１０９でのデータ欠損、制御系処理部１１１での制御に影響を与えないように、以下の通りとすることが好ましい。
データ収集部１０９及びデータ解析管理部３０１＞制御系処理部１１１＞解析系処理部１１３
【０２４０】
図２８から明らかなように、データ収集部１０９は、監視定義テーブル４０２に格納された変数γ１が示すデータ収集周期に従って制御系データ及び解析系データを収集する。
【０２４１】
次に、データ解析管理部３０１は、並列実行パターンファイル４０４及び当該コアのデータ解析管理情報ファイル４０５を作成し、各コアの解析負荷監視部４０１を起動する。
【０２４２】
また、制御系処理部１１１は、データ収集部１０９が収集した制御系データを参照して制御を行う。
【０２４３】
また、各コアの解析負荷監視部４０１は、解析処理情報ファイル４０６を参照し、解析系処理部１１３に解析系処理を行わせる。
【０２４４】
解析系処理部１１３は、制御系処理部１１１の動作完了後、実行権を与えられデータ解析処理を行うことができるようになる。また、解析系処理部１１３は、解析系データの解析が完了すると、解析負荷監視部４０１に解析系処理の完了を通知する。
【０２４５】
次いで、解析負荷監視部４０１は、コア負荷情報ファイル４０７を作成し、解析系処理部１１３での解析系処理の完了をデータ解析管理部３０１に通知する。
【０２４６】
データ解析管理部３０１は、並列実行される全ての解析系処理が完了したならば、解析処理管理テーブル４０３を参照し、次のシーケンス番号に該当するコアの解析負荷監視部４０１を起動する。
【０２４７】
以上説明したように、第２の実施の形態に係る制御監視装置３によれば、実行順序の誤りによるに演算結果の異常が無いように、実行順序を予め定義し、その順序を守った上で、同一の解析系処理を並列実行させる。これにより、全ての解析系処理の実行時間が許容時間を超える可能性がある場合には、同一の解析系処理を並列実行させることで、演算結果の異常の発生確率を低減させつつ、解析系処理全体の実行時間を短縮することができる。この結果、他のコアへの負荷分散することでマルチコア・マルチプロセッサのパフォーマンスを限界まで利用して、デ−タ演算を行うことできる。また、監視の即応性の確保により、異常発生検出の遅延による装置の故障や稼働停止時間を削減できるという効果を奏する。
【０２４８】
なお、本発明は上記実施の形態に限定されず、種々変更して実施することが可能である。上記実施の形態において、添付図面に図示されている構成要素の大きさや形状、機能などについては、これに限定されず、本発明の効果を発揮する範囲内で適宜変更することが可能である。その他、本発明の目的の範囲を逸脱しない限りにおいて適宜変更して実施することが可能である。
【０２４９】
例えば、第１の実施の形態では、コア２０１ａ〜２０１ｄの負荷情報監視部３０９（図５参照）が、それぞれのコアについての統計処理（遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）、平均値、標準偏差を求めること）を行っているが、複数のコア２０１ａ〜２０１ｄのいずれかに、統計処理を行う機能を割り当て、一括して統計処理を行うようにしてもよい。
【０２５０】
また、第１の実施の形態では、統計処理において、例えば、遅延回数（ＮＤ）の最大値（ＮＤｍａｘ）が最小であるコアを被選択コアとして選択しているが、このときに、遅延回数（ＮＤ）の最大値（ＮＤ）が最小のものだけでなく、次に小さいものも選択し、２つを被選択コアとして解析系処理を割り振るようにしてもよい。遅延回数（ＮＤ）の平均値及び標準偏差を基準とする場合も同様である。
【産業上の利用可能性】
【０２５１】
本発明は、複数のコアを有する演算装置において、制御系処理に与える影響を低減しつつ、解析系処理を各コアに割り当てることができる情報処理装置及び情報処理方法を提０供するという効果を奏し、例えば、プラントの制御システムに適用して好適である。
【符号の説明】
【０２５２】
１  制御監視システム
３  制御監視装置（情報処理装置）
１１、１３、１５、１７  被制御機器
１０１  演算装置
１０９  データ収集部
１１１  制御系処理部
１１３  解析系処理部
２０１ａ  第１のコア（コア０）
２０１ｂ、２０１ｃ、２０１ｄ、他のコア（コア１〜３）
３０１  データ解析管理部
３０９  負荷情報監視部
３１１  監視情報テーブル
３１３  定義ファイル
３１５  統計情報ファイル
４０１  解析負荷監視部
４０２  監視定義テーブル
４０３  解析処理管理テーブル
４０４  並列実行パターンファイル
４０５  データ解析管理情報ファイル
４０６  解析処理情報ファイル
４０７  コア負荷情報ファイル
４０８  制御データファイル
【図１】
2020191069.tif 000013
【図２】
2020191069.tif 000014
【図３】
2020191069.tif 000015
【図４】
2020191069.tif 000016
【図５】
2020191069.tif 000017
【図６】
2020191069.tif 000018
【図７】
2020191069.tif 000019
【図８】
2020191069.tif 000020
【図９】
2020191069.tif 000021
【図１０】
2020191069.tif 000022
【図１１】
2020191069.tif 000023
【図１２】
2020191069.tif 000024
【図１３】
2020191069.tif 000025
【図１４】
2020191069.tif 000026
【図１５】
2020191069.tif 000027
【図１６】
2020191069.tif 000028
【図１７】
2020191069.tif 000029
【図１８】
2020191069.tif 000030
【図１９】
2020191069.tif 000031
【図２０】
2020191069.tif 000032
【図２１】
2020191069.tif 000033
【図２２】
2020191069.tif 000034
【図２３】
2020191069.tif 000035
【図２４】
2020191069.tif 000036
【図２５】
2020191069.tif 000037
【図２６】
2020191069.tif 000038
【図２７】
2020191069.tif 000039
【図２８】
2020191069.tif 000040