(57)【要約】【課題】組み込み機器におけるログ情報の解析を支援する。【解決手段】被制御機器を制御する制御機器であって、ログ情報を取得する取得手段と、前記取得手段により取得された前記ログ情報により示されるイベントの種別が、所定のイベント種別であるか否かを判定するイベント判定手段と、前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別でないと判定された場合、前記ログ情報を第１の記憶領域に保存する第１の保存手段と、前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を第２の記憶領域に保存する第２の保存手段と、前記第１の記憶領域及び前記第２の記憶領域にそれぞれ保存されているログ情報を、該ログ情報により示されるイベントが前記被制御機器で発生した順に並べ替えて送信する送信手段と、を有する。【選択図】図９
2018124951.tif 000002
【特許請求の範囲】
【請求項１】
１以上の被制御機器を制御する制御機器であって、
前記被制御機器で発生したイベントを示すログ情報を取得する取得手段と、
前記取得手段により取得された前記ログ情報により示されるイベントの種別が、所定のイベント種別であるか否かを判定するイベント判定手段と、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別でないと判定された場合、前記ログ情報を第１の記憶領域に保存する第１の保存手段と、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を第２の記憶領域に保存する第２の保存手段と、
前記第１の記憶領域及び前記第２の記憶領域にそれぞれ保存されているログ情報を、該ログ情報により示されるイベントが前記被制御機器で発生した順に並べ替えて、前記制御機器と接続される表示装置に送信する送信手段と、
を有する制御機器。
【請求項２】
前記取得手段により取得された前記ログ情報を前記第１の記憶領域に保存する場合において、該第１の記憶領域における保存先の位置を示す第１のポインタを管理する第１のポインタ管理手段を有し、
前記第１の保存手段は、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別でないと判定された場合、前記第１の記憶領域における前記第１のポインタが示す位置に前記ログ情報を保存し、
前記第１のポインタ管理手段は、
前記第１の保存手段により前記ログ情報が保存されると、前記第１のポインタが示す位置を、前記第１の記憶領域における次の保存先の位置に更新する、請求項１に記載の制御機器。
【請求項３】
前記第２の保存手段は、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を、前記第１のポインタの値と関連付けて前記第２の記憶領域に保存する、請求項２に記載の制御機器。
【請求項４】
前記送信手段は、
前記第１の記憶領域に保存されている第１のログ情報の保存先の第１の位置と、前記第２の記憶領域に保存されている第２のログ情報に関連付けられている値が示す第２の位置とを比較し、第１の位置と第２の位置とが一致する場合、該第２の位置に関連付けられている第２のログ情報を、前記第１の記憶領域において前記第１の位置の保存先に保存されている第１のログ情報の前に挿入することで並べ替える、請求項３に記載の制御機器。
【請求項５】
前記第１の記憶領域から前記第１のログ情報を読み出す位置を示す第２のポインタを管理する第２のポインタ管理手段を有し、
前記送信手段は、
前記第１のポインタの値から、前記第１の記憶領域のサイズを減算した値と、前記第２のポインタの値とを比較し、該比較結果に応じて、前記第２のポインタが示す位置に保存されている前記第１のログ情報、又は、前記第２のポインタの値により示される前記第２の位置と関連付けて保存されている前記第２のログ情報のいずれかを順に読み出すことで、前記第１のログ情報及び前記第２のログ情報を発生順に並べ替える、請求項４に記載の制御機器。
【請求項６】
前記第１の記憶領域は、リングバッファである、請求項５に記載の制御機器。
【請求項７】
所定の第３のポインタを管理する第３のポインタ管理手段を有し、
前記第２の保存手段は、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を、前記第１のポインタが示す値と、前記第３のポインタが示す値とを関連付けて前記第２の記憶領域に保存し、
前記第３のポインタ管理手段は、
前記第１のポインタの値が更新された場合、前記第３のポインタの値を初期化する、請求項４に記載の制御機器。
【請求項８】
前記送信手段は、
前記第１の記憶領域に保存されている第１のログ情報の保存先の第１の位置と、前記第２の記憶領域に保存されている第２のログ情報に関連付けられている値が示す第２の位置とを比較し、第１の位置と第２の位置とが一致する場合であって、該第２の位置に関連付けられている第２のログ情報が複数存在する場合、該複数の第２のログ情報を、該複数の第２のログ情報にそれぞれ関連付けられている第３のポインタの値が小さい順に、前記第１の記憶領域において前記第１の位置の保存先に保存されている第１のログ情報の前に挿入することで並べ替える、請求項７に記載の制御機器。
【請求項９】
前記第２の保存手段は、
前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を、前記第２の記憶領域に上書き保存する、請求項１乃至８の何れか一項に記載の制御機器。
【請求項１０】
前記イベント判定手段は、
前記取得手段により取得された前記ログ情報により示されるイベントの種別が、前記被制御機器で突発的に発生するイベントのイベント種別であるか否かを判定する、請求項１乃至９の何れか一項に記載の制御機器。
【請求項１１】
前記突発的に発生するイベントには、少なくとも、前記被制御機器における所定の操作と、前記被制御機器に対する外的要因に起因する所定の事象とが含まれる、請求項１０に記載の制御機器。
【請求項１２】
１以上の被制御機器を制御する制御機器に用いられる制御方法であって、
前記被制御機器で発生したイベントを示すログ情報を取得する取得手順と、
前記取得手順により取得された前記ログ情報により示されるイベントの種別が、所定のイベント種別であるか否かを判定するイベント判定手順と、
前記イベント判定手順により前記ログ情報により示されるイベントの種別が所定のイベント種別でないと判定された場合、前記ログ情報を第１の記憶領域に保存する第１の保存手順と、
前記イベント判定手順により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を第２の記憶領域に保存する第２の保存手順と、
前記第１の記憶領域及び前記第２の記憶領域にそれぞれ保存されているログ情報を、該ログ情報により示されるイベントが前記被制御機器で発生した順に並べ替えて、前記制御機器と接続される表示装置に送信する送信手順と、
を有する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御機器及び制御方法に関する。
【背景技術】
【０００２】
例えば鉄道等の車両に搭載される組み込み機器において、故障等の発生を示すログ情報を保存する技術が従来から知られている。このようなログ情報を解析することで、組み込み機器の故障等の発生原因を解明することができる。
【０００３】
ここで、ログ情報には、特定の操作（例えば、車両の特定のドアだけを開閉させる操作等）が発生したことを示すログ情報、外的要因に起因する特定の事象（例えば、ドアに人や物が挟まることにより戸閉が中断する事象等）が発生したことを示すログ情報等も存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２４５１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特定の操作や外的要因に起因する特定の事象は、突発的に発生するため、その発生回数を見積もることが困難であることが多い。このため、一般に、比較的に低容量のメモリが搭載される組み込み機器では、特定の操作が発生したことを示すログ情報や外的要因に起因する特定の事象が発生したことを示すログ情報等を全件保存することが困難な場合が多い。
【０００６】
一方で、特定の操作が発生したことを示すログ情報や外的要因に起因する特定の事象が発生したことを示すログ情報等は、例えば、少なくとも最新のログ情報が保存されていれば、故障等の発生を示すログ情報との関連性を解析することができる。
【０００７】
本発明の一実施形態は、上記の点に鑑みてなされたもので、組み込み機器におけるログ情報の解析を支援することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、本発明の一実施形態は、１以上の被制御機器を制御する制御機器であって、前記被制御機器で発生したイベントを示すログ情報を取得する取得手段と、前記取得手段により取得された前記ログ情報により示されるイベントの種別が、所定のイベント種別であるか否かを判定するイベント判定手段と、前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別でないと判定された場合、前記ログ情報を第１の記憶領域に保存する第１の保存手段と、前記イベント判定手段により前記ログ情報により示されるイベントの種別が所定のイベント種別であると判定された場合、前記ログ情報を第２の記憶領域に保存する第２の保存手段と、前記第１の記憶領域及び前記第２の記憶領域にそれぞれ保存されているログ情報を、該ログ情報により示されるイベントが前記被制御機器で発生した順に並べ替えて、前記制御機器と接続される表示装置に送信する送信手段と、を有する。
【発明の効果】
【０００９】
本発明の一実施形態によれば、組み込み機器におけるログ情報の解析を支援することを目的とする。
【図面の簡単な説明】
【００１０】
【図１】第一の実施形態に係る制御システムの一例のシステム構成を示す図である。
【図２】第一の実施形態に係る制御機器の一例のハードウェア構成を示す図である。
【図３】第一の実施形態に係る制御機器の一例の機能構成を示す図である。
【図４】ログ情報の一例を説明する図である。
【図５】全件記憶領域の一例を説明する図である。
【図６】個別記憶領域の一例を説明する図である。
【図７】第一の実施形態に係るログ情報の保存処理の一例を示すフローチャートである。
【図８】第一の実施形態に係るログ情報の送信処理の一例を示すフローチャートである。
【図９】第一の実施形態に係る全件記憶領域及び個別記憶領域から送信バッファへのログ情報の保存の一例を説明する図である。
【図１０】第二の実施形態に係る制御機器の一例の機能構成を示す図である。
【図１１】第二の実施形態に係るログ情報の保存処理の一例を示すフローチャートである。
【図１２】第二の実施形態に係るログ情報の送信処理の一例を示すフローチャートである。
【図１３】第二の実施形態に係る全件記憶領域及び個別記憶領域から送信バッファへのログ情報の保存の一例を説明する図である。
【図１４】第三の実施形態に係る制御機器の一例の機能構成を示す図である。
【図１５】個別記憶領域の他の例を説明する図である。
【図１６】第三の実施形態に係るログ情報の保存処理の一例を示すフローチャートである。
【図１７】第三の実施形態に係るログ情報の送信処理の一例を示すフローチャートである。
【図１８】第三の実施形態に係る全件記憶領域及び個別記憶領域から送信バッファへのログ情報の保存の一例を説明する図である。
【図１９】第三の実施形態に係る全件記憶領域及び個別記憶領域から送信バッファへのログ情報の保存の他の例を説明する図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１２】
［第一の実施形態］
＜システム構成＞
まず、本実施形態に係る制御システム１のシステム構成について、図１を参照しながら説明する。図１は、本実施形態に係る制御システム１の一例のシステム構成を示す図である。
【００１３】
図１に示すように、本実施形態に係る制御システム１は、制御機器１０と、表示装置２０と、被制御機器３０とを有する。また、制御機器１０と表示装置２０とは、例えばシリアルバス等の通信線４０により通信可能に接続されている。同様に、制御機器１０と被制御機器３０とは、例えばシリアルバス等の通信線５０により通信可能に接続されている。
【００１４】
なお、制御機器１０と表示装置２０とは、通信線４０に限られず、例えば、ＬＡＮ（Local Area Network）等により通信可能に接続されていても良い。同様に、制御機器１０と被制御機器３０とは、通信線５０に限られず、例えば、ＬＡＮ等により通信可能に接続されていても良い。
【００１５】
制御機器１０は、例えば鉄道等の車両に搭載される組み込み機器であり、車両のドアの開閉動作を行う被制御機器３０を制御する。
【００１６】
また、制御機器１０は、被制御機器３０における故障や障害、エラー、不具合、異常等のイベントが発生した場合に、これらのイベントが発生したことを示すログ情報を保存する。同様に、制御機器１０は、被制御機器３０における特定の操作（例えば、特定のドアだけを開閉させる操作）や外的要因に起因する特定の事象（例えば、ドアに人や物が挟まることにより戸閉が中断する事象）等のイベントが発生した場合に、これらのイベントが発生したことを示すログ情報を保存する。
【００１７】
更に、制御機器１０は、当該制御機器１０に保存しているログ情報を表示装置２０に送信する。
【００１８】
ここで、以降では、被制御機器３０における故障や障害、エラー、不具合、異常等のイベント（すなわち、ログ情報を解析することにより発生原因を解明すべきイベント）を、「異常イベント」とも表す。したがって、異常イベントが発生したことを示すログ情報を、「異常ログ情報」とも表す。
【００１９】
また、被制御機器３０における特定の操作や外的要因に起因する特定の事象等のイベント（すなわち、必ずしも発生原因を解明する必要がなく、突発的に発生するイベント）を、「突発イベント」とも表す。したがって、突発イベントが発生したことを示すログ情報を、「突発ログ情報」とも表す。
【００２０】
表示装置２０は、制御機器１０から送信されたログ情報（異常ログ情報及び突発ログ情報）を表示する。これにより、例えば故障の発生原因等の解明を所望するユーザは、表示装置２０に表示されたログ情報を解析することで、故障や障害、エラー、異常等の発生原因を解明等することができる。なお、表示装置２０は、ディスプレイ等であっても良いし、例えば、ＰＣ（パーソナルコンピュータ）やタブレット端末、スマートフォン等の情報処理装置であっても良い。
【００２１】
被制御機器３０は、制御機器１０からの制御命令に応じて、例えば鉄道等の車両のドアの開閉動作を行う機器である。
【００２２】
なお、図１に示す制御システム１は、一例であって、他の構成であっても良い。例えば、被制御機器３０は、鉄道等の車両のドアの開閉動作に限られず、例えば航空機等のドアの開閉動作を行う機器であっても良い。
【００２３】
また、例えば、被制御機器３０は、車両のドアの開閉動作に限られず、例えば、駅のホームドアの開閉動作、ビル等におけるドアの開閉動作の他、エスカレータや昇降機の動作等の各種動作を行う機器であっても良い。したがって、制御機器１０は、このような各種動作を行う被制御機器３０で発生した各種イベント（異常イベント及び突発イベント）の発生を示すログ情報を保存しても良い。
【００２４】
更に、制御システム１には、複数台の制御機器１０や複数台の表示装置２０が含まれていても良い。同様に、制御機器１０には、複数台の被制御機器３０が接続されていても良い。
【００２５】
＜ハードウェア構成＞
次に、本実施形態に係る制御機器１０のハードウェア構成について、図２を参照しながら説明する。図２は、本実施形態に係る制御機器１０の一例のハードウェア構成を示す図である。
【００２６】
図２に示すように、本実施形態に係る制御機器１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）１４と、通信Ｉ／Ｆ１５とを有する。これらハードウェアは、バスＢにより相互に接続されている。
【００２７】
ＣＰＵ１１は、ＲＯＭ１３やＥＥＰＲＯＭ１４等からプログラムやデータをＲＡＭ１２上に読み出し、当該プログラムやデータに基づく処理を実行することで、制御機器１０全体の制御やその他の機能を実現する演算装置である。なお、ＣＰＵ１１は、ＲＯＭ１３に格納されているプログラムやデータを、当該ＲＯＭ１３上で処理を実行しても良い。
【００２８】
ＲＡＭ１２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＲＯＭ１３は、プログラムやデータ（例えば、ＯＳ（Operating System）設定等）が格納されている不揮発性の半導体メモリである。
【００２９】
ＥＥＰＲＯＭ１４は、プログラムやデータを格納する不揮発性のメモリである。通信Ｉ／Ｆ１５は、被制御機器３０や表示装置２０との間でデータ通信を行うためのインタフェースである。
【００３０】
本実施形態に係る制御機器１０は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３１】
＜機能構成＞
次に、本実施形態に係る制御機器１０の機能構成について、図３を参照しながら説明する。図３は、本実施形態に係る制御機器１０の一例の機能構成を示す図である。
【００３２】
図３に示すように、本実施形態に係る制御機器１０は、ログ保存処理部１０１と、ログ送信処理部１０２とを有する。これら各機能部は、制御機器１０にインストールされた１以上のプログラムが、ＣＰＵ１１に実行させる処理により実現される。
【００３３】
また、本実施形態に係る制御機器１０は、ログ記憶部１０３を有する。当該記憶部は、ＥＥＰＲＯＭ１４等を用いて実現可能である。
【００３４】
ログ保存処理部１０１は、ログ情報（異常ログ情報及び突発ログ情報）をログ記憶部１０３に保存する。ログ保存処理部１０１には、ログ取得部１１０と、イベント判定部１１１と、ＷＰ管理部１１２と、ログ保存部１１３とが含まれる。
【００３５】
ログ取得部１１０は、被制御機器３０でイベント（異常イベント又は突発イベント）が発生した場合、当該イベントの発生を示すログ情報（異常ログ情報又は突発ログ情報）を取得する。なお、ログ取得部１１０は、被制御機器３０で発生したイベントに限られず、制御機器１０でイベントが発生した場合に、当該イベントの発生を示すログ情報を取得しても良い。
【００３６】
イベント判定部１１１は、被制御機器３０で発生したイベントが、突発イベントであるか否かを判定する。すなわち、イベント判定部１１１は、ログ取得部１１０により取得されたログ情報に含まれるイベントＩＤが、突発イベントを示すイベントＩＤであるか否かを判定する。なお、イベントＩＤとは、後述するように、被制御機器３０で発生したイベントを識別する識別情報である。
【００３７】
ＷＰ管理部１１２は、ログ記憶部１０３に含まれる全件記憶領域１０００において、ログ情報を保存する位置（ログ情報を書き込む位置）を示すライトポインタ２００を管理する。ライトポインタ２００は、例えばＥＥＰＲＯＭ１４等に記憶されている。以降では、ライトポインタ２００を、単に「ＷＰ２００」とも表す。なお、全件記憶領域１０００とは、後述するように、異常ログ情報が保存される記憶領域である。
【００３８】
ログ保存部１１３は、イベント判定部１１１による判定結果に応じて、ログ情報（異常ログ情報又は突発ログ情報）をログ記憶部１０３に保存する。
【００３９】
すなわち、ログ保存部１１３は、イベント判定部１１１により、ログ情報に含まれるイベントＩＤが、突発イベントを示すイベントＩＤでないと判定された場合、当該ログ情報（異常ログ情報）を、ログ記憶部１０３に含まれる全件記憶領域１０００に保存する。このとき、ログ保存部１１３は、全件記憶領域１０００において、ＷＰ２００が示す位置に異常ログ情報を保存する。
【００４０】
一方で、ログ保存部１１３は、イベント判定部１１１により、ログ情報に含まれるイベントＩＤが、突発イベントを示すイベントＩＤであると判定された場合、当該ログ情報（突発ログ情報）を、ログ記憶部１０３に含まれる個別記憶領域２０００に保存する。このとき、ログ保存部１１３は、個別記憶領域２０００において、突発イベント毎に予め決められた位置に、ＷＰ２００の値（以降では、「ＷＰ値」とも表す。）と関連付けて突発ログ情報を保存する。なお、個別記憶領域２０００とは、後述するように、ＷＰ値と関連付けて突発ログ情報が保存される記憶領域である。
【００４１】
このように、ログ保存部１１３は、イベント判定部１１１による判定結果に応じて、ログ情報（異常ログ情報又は突発ログ情報）を、全件記憶領域１０００又は個別記憶領域２０００のいずれかに保存する。
【００４２】
ログ送信処理部１０２は、ログ情報（異常ログ情報及び突発ログ情報）を表示装置２０に送信する。ログ送信処理部１０２には、ＳＢＷＰ管理部１２０と、ＲＰ管理部１２１と、ＷＰ値読出部１２２と、ポインタ判定部１２３と、ログ読出部１２４と、ログバッファ部１２５と、ログ送信部１２６とが含まれる。
【００４３】
ＳＢＷＰ管理部１２０は、ログ記憶部１０３に含まれる送信バッファ３０００において、ログ情報を保存する位置（ログ情報を書き込む位置）を示す送信バッファライトポインタ３００を管理する。送信バッファライトポインタ３００は、例えばＲＡＭ１２等に記憶されている。以降では、送信バッファライトポインタ３００を、単に「ＳＢＷＰ３００」とも表す。なお、送信バッファ３０００とは、後述するように、表示装置２０に送信されるログ情報（異常ログ情報及び突発ログ情報）が保存される記憶領域である。
【００４４】
ＲＰ管理部１２１は、ログ記憶部１０３に含まれる全件記憶領域１０００において、ログ情報を取得する位置（ログ情報を読み出す位置）を示すリードポインタ４００を管理する。リードポインタ４００は、例えばＲＡＭ１２等に記憶されている。以降では、リードポインタ４００を、単に「ＲＰ４００」とも表す。
【００４５】
ＷＰ値読出部１２２は、ログ記憶部１０３に含まれる個別記憶領域２０００からＷＰ値を取得する。すなわち、ＷＰ値読出部１２２は、個別記憶領域２０００に保存されているログ情報（突発ログ情報）に関連付けられているＷＰ値を取得する。
【００４６】
ポインタ判定部１２３は、ＷＰ値読出部１２２により取得されたＷＰ値のうち、ＲＰ管理部１２１により管理されているＲＰ４００の値と一致するＷＰ値が存在するか否かを判定する。
【００４７】
ログ読出部１２４は、ポインタ判定部１２３による判定結果に応じて、ログ記憶部１０３からログ情報を取得する。
【００４８】
すなわち、ログ読出部１２４は、ポインタ判定部１２３によりＲＰ４００の値と一致するＷＰ値が存在しないと判定された場合、ログ記憶部１０３に含まれる全件記憶領域１０００からログ情報（異常ログ情報）を取得する。このとき、ログ読出部１２４は、全件記憶領域１０００において、ＲＰ４００が示す位置から異常ログ情報を取得する。
【００４９】
一方で、ログ読出部１２４は、ポインタ判定部１２３によりＲＰ４００の値と一致するＷＰ値が存在すると判定された場合、ログ記憶部１０３に含まれる個別記憶領域２０００からログ情報（突発ログ情報）を取得する。このとき、ログ読出部１２４は、個別記憶領域２０００において、ＲＰ４００と一致すると判定されたＷＰ値に関連付けられている突発ログ情報を取得する。
【００５０】
このように、ログ読出部１２４は、ポインタ判定部１２３による判定結果に応じて、全件記憶領域１０００又は個別記憶領域２０００のいずれかからログ情報（異常ログ情報又は突発ログ情報）を取得する。
【００５１】
ログバッファ部１２５は、ログ読出部１２４により取得されたログ情報（異常ログ情報又は突発ログ情報）を、ログ記憶部１０３に含まれる送信バッファ３０００に保存する。このとき、ログバッファ部１２５は、送信バッファ３０００において、ＳＢＷＰ３００が示す位置にログ情報（異常ログ情報又は突発ログ情報）を保存する。
【００５２】
これにより、ログ送信処理部１０２は、被制御機器３０でイベントが発生した順に、当該イベントが発生したことを示すログ情報（異常ログ情報又は突発ログ情報）を送信バッファ３０００に保存することができる。このため、表示装置２０は、イベントが発生した順に、ログ情報を表示することができる。
【００５３】
ログ送信部１２６は、全件記憶領域１０００及び個別記憶領域２０００に保存されているログ情報（異常ログ情報及び突発ログ情報）が送信バッファ３０００に保存された場合、当該送信バッファ３０００に保存されているログ情報を表示装置２０に送信する。
【００５４】
ログ記憶部１０３は、ログ情報（異常ログ情報及び突発ログ情報）５００を保存する。ログ記憶部１０３には、異常ログ情報５００を保存する全件記憶領域１０００と、突発ログ情報５００を保存する個別記憶領域２０００と、表示装置２０に送信するログ情報５００を保存する送信バッファ３０００とが含まれる。
【００５５】
なお、ログ記憶部１０３に含まれる全件記憶領域１０００、個別記憶領域２０００、及び送信バッファ３０００は、それぞれが異なる記憶装置を用いて実現されていても良い。例えば、ログ記憶部１０３に含まれる全件記憶領域１０００及び個別記憶領域２０００をＥＥＰＲＯＭ１４で実現すると共に、送信バッファ３０００をＲＡＭ１２で実現しても良い。
【００５６】
ここで、ログ情報（異常ログ情報及び突発ログ情報）５００について、図４を参照しながら説明する。図４は、ログ情報５００の一例を説明する図である。
【００５７】
図４に示すように、ログ情報５００には、データ項目として、イベントＩＤ、発生時刻、位置、及び速度等が含まれる。
【００５８】
イベントＩＤは、被制御機器３０で発生したイベントを識別する識別情報である。イベントＩＤには、例えば、被制御機器３０で発生した故障や障害、エラー、不具合、異常等のイベントを識別するイベントＩＤが含まれる。また、イベントＩＤには、例えば、被制御機器３０における特定の操作や外的要因に起因する特定の事象等のイベントを識別するイベントＩＤが含まれる。
【００５９】
発生日時は、イベントＩＤにより識別されるイベントが発生した日時である。位置は、例えば鉄道等の車両の位置である。速度は、例えば鉄道等の車両の速度である。なお、ログ情報５００には、これら以外にも、例えば、付加的な情報等が設定されるデータ項目等が含まれていても良い。
【００６０】
このように、ログ情報５００には、被制御機器３０で発生したイベントを識別するイベントＩＤや当該イベントの発生日時等が含まれる。
【００６１】
また、ログ記憶部１０３に含まれる全件記憶領域１０００について、図５を参照しながら説明する。図５は、全件記憶領域１０００の一例を説明する図である。
【００６２】
図５に示すように、全件記憶領域１０００には、当該全件記憶領域１０００内の位置毎に、ログ情報５００が保存されている。全件記憶領域１０００には、例えば位置の昇順に、異常イベントが発生したことを示す異常ログ情報５００が発生順に保存される。なお、全件記憶領域１０００内の位置とは、例えば、当該全件記憶領域１０００のアドレス空間におけるアドレスである。
【００６３】
また、ログ記憶部１０３に含まれる個別記憶領域２０００について、図６を参照しながら説明する。図６は、個別記憶領域２０００の一例を説明する図である。
【００６４】
図６に示すように、個別記憶領域２０００には、突発イベントを識別するイベントＩＤ毎に、ＷＰ値と、ログ情報５００とが保存されている。
【００６５】
個別記憶領域２０００には、イベントＩＤで識別される突発イベントが発生したことを示す突発ログ情報５００と、当該突発イベントが発生した際のＷＰ２００の値（ＷＰ値）とが、当該イベントＩＤに対応する位置に保存される。すなわち、個別記憶領域２０００には、当該個別記憶領域２０００のイベントＩＤで識別される突発イベントについて、当該突発イベントが発生したことを示す最新のログ情報（最新の突発ログ情報）５００がＷＰ値と関連付けて保存される。なお、イベントＩＤに対応する位置とは、例えば、個別記憶領域２０００のアドレス空間におけるアドレスである。
【００６６】
なお、個別記憶領域２０００のイベントＩＤは、被制御機器３０で発生し得る全ての突発イベントそれぞれのイベントＩＤでも良いし、これら全ての突発イベントのうち、ユーザにより選択された1以上の突発イベントそれぞれのイベントＩＤでも良い。
【００６７】
このように、本実施形態に係る制御機器１０では、被制御機器３０で発生した異常イベントのログ情報（異常ログ情報）５００全てを全件記憶領域１０００に保存する。一方で、本実施形態に係る制御機器１０では、被制御機器３０で発生した、最新の突発イベントのログ情報（最新の突発ログ情報）５００を個別記憶領域２０００に保存する。
【００６８】
＜処理の詳細＞
次に、本実施形態に係る制御システム１の処理の詳細について説明する。
【００６９】
≪ログ情報５００の保存処理≫
以降では、制御機器１０において、被制御機器３０で発生したイベントのログ情報５００を保存する処理について、図７を参照しながら説明する。図７は、本実施形態に係るログ情報５００の保存処理の一例を示すフローチャートである。なお、図７に示すログ情報５００の保存処理は、例えば、制御機器１０の起動等により開始される。
【００７０】
まず、ログ保存処理部１０１は、ＷＰ管理部１１２により、ＷＰ２００の値を「０」に初期化する（ステップＳ７０１）。
【００７１】
ただし、例えば、制御機器１０が再起動等された場合にＷＰ２００の値が「０」に初期化されてしまうことを防止するため、ログ保存処理部１０１は、ステップＳ７０１の処理を行わなくても良い。この場合、ログ保存処理部１０１は、例えば、ユーザの操作（ＷＰ２００の初期化操作）等に応じて、ステップＳ７０１の処理を行うようにすれば良い。
【００７２】
次に、ログ保存処理部１０１は、ログ取得部１１０により、被制御機器３０でイベントが発生したか否かを判定する（ステップＳ７０２）。すなわち、ログ取得部１１０は、被制御機器３０で異常イベント又は突発イベントが発生したか否かを判定する。
【００７３】
ステップＳ７０２において、ログ取得部１１０によりイベントが発生したと判定された場合、ログ保存処理部１０１は、ログ取得部１１０により、当該イベントの発生を示すログ情報５００を取得する（ステップＳ７０３）。すなわち、ログ取得部１１０は、被制御機器３０で発生したイベントのログ情報（異常ログ情報又は突発ログ情報）５００を取得する。
【００７４】
なお、ログ取得部１１０は、被制御機器３０からログ情報５００を取得しても良いし、例えば、不図示のセンサ等により被制御機器３０から取得したセンサ情報に基づいて、制御機器１０で作成されたログ情報５００を取得しても良い。
【００７５】
一方で、ステップＳ７０２において、ログ取得部１１０によりイベントが発生したと判定されなかった場合、ログ保存処理部１０１は、ステップＳ７０２の処理に戻る。すなわち、ログ保存処理部１０１は、被制御機器３０でイベントが発生するまで、ステップＳ７０２の処理を繰り返す。
【００７６】
次に、ログ保存処理部１０１は、イベント判定部１１１により、被制御機器３０で発生したイベントが、突発イベントであるか否かを判定する（ステップＳ７０４）。すなわち、イベント判定部１１１は、上記のステップＳ７０３で取得されたログ情報５００に含まれるイベントＩＤが、突発イベントを示すイベントＩＤであるか否かを判定する。
【００７７】
ステップＳ７０４において、イベント判定部１１１により、被制御機器３０で発生したイベントが突発イベントでないと判定された場合、ログ保存処理部１０１は、ログ保存部１１３により、ログ情報５００を全件記憶領域１０００に保存する（ステップＳ７０５）。すなわち、ログ保存部１１３は、上記のステップＳ７０３で取得されたログ情報（異常ログ情報）５００を、全件記憶領域１０００におけるＷＰ２００が示す位置に保存する。
【００７８】
これにより、本実施形態に係る制御システム１では、被制御機器３０で発生した故障や障害、エラー、不具合、異常等のログ情報５００を、制御機器１０の全件記憶領域１０００に発生順に保存することができる。
【００７９】
次に、ログ保存処理部１０１は、ＷＰ管理部１１２により、ＷＰ２００の値に「１」を加算する（ステップＳ７０６）。
【００８０】
一方、ステップＳ７０４において、イベント判定部１１１により、被制御機器３０で発生したイベントが突発イベントであると判定された場合、ログ保存処理部１０１は、ログ保存部１１３により、ログ情報５００を、ＷＰ値と関連付けて個別記憶領域２０００に保存する（ステップＳ７０７）。
【００８１】
すなわち、ログ保存部１１３は、個別記憶領域２０００において、突発イベント毎に予め決められた位置に、ＷＰ管理部１１２により管理されるＷＰ２００の値（ＷＰ値）と関連付けて突発ログ情報５００を保存（上書き保存）する。例えば、上記のステップＳ７０３で取得されたログ情報５００に含まれるイベントＩＤが「Ｘ」である場合、ログ保存部１１３は、図６に示す個別記憶領域２０００の１行目に、ＷＰ値と関連付けて当該ログ情報５００を保存する。一方、例えば、上記のステップＳ７０３で取得されたログ情報に含まれるイベントＩＤが「Ｙ」である場合、ログ保存部１１３は、図６に示す個別記憶領域２０００の２行目に、ＷＰ値と関連付けて当該ログ情報５００を保存する。
【００８２】
これにより、本実施形態に係る制御システム１では、被制御機器３０で発生した特定の操作や外的要因に起因する特定の事象等のログ情報５００のうちの最新のログ情報５００を、制御機器１０の個別記憶領域２０００に保存することができる。
【００８３】
以上のように、本実施形態に係る制御システム１では、全ての異常ログ情報５００を全件記憶領域１０００に保存すると共に、最新の突発ログ情報５００をＷＰ２００の値（ＷＰ値）と関連付けて個別記憶領域２０００に保存する。
【００８４】
例えば、ログ取得部１１０により「ログ情報Ａ」、「ログ情報Ｂ」、・・・、「ログ情報Ｊ」が順に取得されたものとする。このとき、これらのログ情報のうち「ログ情報Ｄ」及び「ログ情報Ｉ」が突発ログ情報である場合、ログ保存処理部１０１は、図６に示すように、「ログ情報Ｄ」及び「ログ情報Ｉ」をそれぞれＷＰ値「３」及び「７」と関連付けて個別記憶領域２０００に保存する。一方で、ログ保存処理部１０１は、図５に示すように、
「ログ情報Ｄ」及び「ログ情報Ｉ」以外のログ情報を全件記憶領域１０００に順に保存する。
【００８５】
これにより、本実施形態に係る制御システム１では、組み込み機器等の比較的メモリ容量が少ない制御機器１０においても、異常等の発生原因の解明に必要なログ情報５００を保存することができるようになる。
【００８６】
また、本実施形態に係る制御システム１では、突発ログ情報５００をＷＰ２００の値（ＷＰ値）と関連付けて保存することで、後述するログ情報５００の送信処理において、イベントの発生順にログ情報５００を送信バッファ３０００に保存することができるようになる。
【００８７】
≪ログ情報５００の送信処理≫
以降では、制御機器１０に保存されているログ情報（異常ログ情報及び突発ログ情報）５００を表示装置２０に送信する処理について、図８を参照しながら説明する。図８は、本実施形態に係るログ情報５００の送信処理の一例を示すフローチャートである。なお、図８に示すログ情報５００の送信処理は、例えば、表示装置２０からの要求（ログ情報５００の取得要求）に応じて開始されても良いし、制御機器１０におけるユーザ操作等に応じて開始されても良い。
【００８８】
まず、ログ送信処理部１０２は、ログバッファ部１２５により、送信バッファ３０００を初期化する（ステップＳ８０１）。すなわち、ログバッファ部１２５は、送信バッファ３０００に保存されているログ情報５００を全て削除する。
【００８９】
次に、ログ送信処理部１０２は、ＳＢＷＰ管理部１２０により、ＳＢＷＰ３００の値を「０」に初期化する。また、ログ送信処理部１０２は、ＲＰ管理部１２１により、ＲＰ４００の値を「０」に初期化する（ステップＳ８０２）。
【００９０】
次に、ログ送信処理部１０２は、ＷＰ値読出部１２２により、個別記憶領域２０００からＷＰ値を取得する（ステップＳ８０３）。すなわち、ＷＰ値読出部１２２は、個別記憶領域２０００に保存されている各ログ情報（突発ログ情報）５００にそれぞれ関連付けられているＷＰ値を取得する。
【００９１】
次に、ログ送信処理部１０２は、ポインタ判定部１２３により、ＷＰ値読出部１２２により取得されたＷＰ値のうち、ＲＰ管理部１２１により管理されているＲＰ４００の値と一致するＷＰ値が存在するか否かを判定する（ステップＳ８０４）。
【００９２】
ステップＳ８０４において、ポインタ判定部１２３によりＲＰ４００の値と一致するＷＰ値が存在すると判定された場合、ログ送信処理部１０２は、ログ読出部１２４により、当該ＷＰ値に関連付けられているログ情報５００を取得する（ステップＳ８０５）。すなわち、ログ読出部１２４は、個別記憶領域２０００に保存されているログ情報（突発ログ情報）５００のうち、ＲＰ４００の値と一致するＷＰ値に関連付けられているログ情報（突発ログ情報）５００を取得する。
【００９３】
次に、ログ送信処理部１０２は、ログバッファ部１２５により、上記のステップＳ８０５で取得されたログ情報（突発ログ情報）５００を、送信バッファ３０００におけるＳＢＷＰ３００が示す位置に保存する（ステップＳ８０６）。
【００９４】
これにより、本実施形態に係る制御システム１では、個別記憶領域２０００に保存されているログ情報（突発ログ情報）５００を、送信バッファ３０００に保存することができる。しかも、本実施形態に係る制御システム１では、ＲＰ４００の値と一致するＷＰ値に関連付けられている突発ログ情報５００を、送信バッファ３０００におけるＳＢＷＰ３００が示す位置に保存する。
【００９５】
したがって、本実施形態に係る制御システム１では、異常ログ情報５００及び突発ログ情報５００を、イベントの発生順に送信バッファ３０００に保存することができる。
【００９６】
次に、ログ送信処理部１０２は、ＳＢＷＰ管理部１２０により、ＳＢＷＰ３００の値に「１」を加算する（ステップＳ８０７）。
【００９７】
ステップＳ８０７に続いて、又は、ステップＳ８０４において、ポインタ判定部１２３によりＲＰ４００の値と一致するＷＰ値が存在しないと判定された場合、ログ送信処理部１０２は、ポインタ判定部１２３により、処理を終了するか否かを判定する（ステップＳ８０８）。すなわち、ポインタ判定部１２３は、ＷＰ２００の値（図７のログ情報５００の保存処理で用いられているＷＰ２００の値）と、ＲＰ４００の値とが一致するか否かを判定する。
【００９８】
ステップＳ８０８において、ポインタ判定部１２３により処理を終了しないと判定された場合（ＷＰ２００の値とＲＰ４００の値とが一致しないと判定された場合）、ログ送信処理部１０２は、ログ読出部１２４により、ログ情報５００を取得する（ステップＳ８０９）。すなわち、ログ読出部１２４は、全件記憶領域１０００に記憶されているログ情報（異常ログ情報）５００のうち、ＲＰ４００が示す位置の異常ログ情報５００を取得する。
【００９９】
次に、ログ送信処理部１０２は、ＲＰ管理部１２１により、ＲＰ４００の値に「１」を加算する（ステップＳ８１０）。
【０１００】
次に、ログ送信処理部１０２は、ログバッファ部１２５により、上記のステップＳ８０９で取得されたログ情報（異常ログ情報）５００を、送信バッファ３０００におけるＳＢＷＰ３００が示す位置に保存する（ステップＳ８１１）。
【０１０１】
これにより、本実施形態に係る制御システム１では、全件記憶領域１０００に保存されているログ情報（異常ログ情報）５００を、送信バッファ３０００に発生順に保存することができる。
【０１０２】
次に、ログ送信処理部１０２は、ＳＢＷＰ管理部１２０により、ＳＢＷＰ３００の値に「１」を加算する（ステップＳ８１２）。
【０１０３】
ステップＳ８０８において、ポインタ判定部１２３により処理を終了すると判定された場合（ＷＰ２００の値とＲＰ４００の値とが一致すると判定された場合）、ログ送信処理部１０２は、ログ送信部１２６により、ログ情報５００を送信する（ステップＳ８１３）。すなわち、ログ送信部１２６は、送信バッファ３０００に保存されているログ情報５００を、順に、表示装置２０に送信する。これにより、表示装置２０には、ログ情報５００が発生順に表示される。
【０１０４】
ここで、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報（異常ログ情報及び突発ログ情報）５００の保存の一例について、図９を参照しながら説明する。図９は、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報５００の保存の一例を説明する図である。
【０１０５】
図９に示すように、全件記憶領域１０００には、「ログ情報Ａ」〜「ログ情報Ｃ」、「ログ情報Ｅ」〜「ログ情報Ｈ」、及び「ログ情報Ｊ」が、それぞれ位置「０」〜「７」に保存されているものとする。同様に、図９に示すように、個別記憶領域２０００には、「ログ情報Ｄ」がＷＰ値「３」と関連付けて保存されていると共に、「ログ情報Ｉ」がＷＰ値「７」と関連付けて保存されているものとする。
【０１０６】
この場合、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ａ」〜「ログ情報Ｃ」を送信バッファ３０００の位置「０」〜「２」に保存すると共に、個別記憶領域２０００の「ログ情報Ｄ」を送信バッファ３０００の位置「３」に保存する。
【０１０７】
同様に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｅ」〜「ログ情報Ｈ」を送信バッファ３０００の位置「４」〜「７」に保存すると共に、個別記憶領域２０００の「ログ情報Ｉ」を送信バッファ３０００の位置「８」に保存する。
【０１０８】
また、同様に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｊ」を送信バッファ３０００の位置「９」に保存する。
【０１０９】
このように、ログ送信処理部１０２は、個別記憶領域２０００に保存されているログ情報（突発ログ情報）５００を、当該ログ情報５００に関連付けられているＷＰ値とＲＰ４００の値が同一となる異常ログ情報５００の前に挿入して、送信バッファ３０００に保存する。これにより、ログ送信処理部１０２は、イベントが発生した順で、ログ情報（異常ログ情報及び突発ログ情報）５００を送信バッファ３０００に保存することができる。
【０１１０】
したがって、本実施形態に係る制御システム１では、制御機器１０は、例えば、ログ情報５００に含まれる発生時刻を用いずに、イベントの発生順にログ情報を並べ替えた上で、これらのログ情報を表示装置２０に送信することができる。
【０１１１】
［第二の実施形態］
次に、第二の実施形態について説明する。第二の実施形態では、例えばリングバッファである全件記憶領域１０００において、古いログ情報５００が新しいログ情報５００で上書きされる場合について説明する。
【０１１２】
なお、第二の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と実質的に同一の機能を有する箇所及び実質的に同一の処理を行う箇所については同一の符号を付与し、その説明を省略する。
【０１１３】
＜機能構成＞
次に、本実施形態に係る制御機器１０の機能構成について、図１０を参照しながら説明する。図１０は、本実施形態に係る制御機器１０の一例の機能構成を示す図である。
【０１１４】
図１０に示すように、本実施形態に係る制御機器１０のログ保存処理部１０１は、ログ保存部１１３Ａを有する。また、本実施形態に係る制御機器１０のログ送信処理部１０２は、更に、判定値算出部１２７と、読出判定部１２８とを有する。
【０１１５】
ログ保存部１１３Ａは、イベント判定部１１１による判定結果に応じて、ログ情報５００をログ記憶部１０３に保存する。このとき、ログ保存部１１３Ａは、ログ情報５００を全件記憶領域１０００に保存する場合、ＷＰ２００の値を、全件記憶領域１０００のサイズで割った余り（剰余）を算出する。そして、ログ保存部１１３Ａは、当該全件記憶領域１０００において当該剰余が示す位置にログ情報５００を保存する。
【０１１６】
このため、ログ保存部１１３Ａは、全件記憶領域１０００からログ情報５００が溢れた場合、最も古いログ情報５００が当該ログ情報５００で上書きされる。すなわち、本実施形態に係る全件記憶領域１０００は、例えばリングバッファ等である。
【０１１７】
判定値算出部１２７は、全件記憶領域１０００のＲＰ４００が示す位置に保存されているログ情報５００を読み出すか否かを判定するための判定値６００を算出する。すなわち、判定値算出部１２７は、現在のＷＰ２００の値から、全件記憶領域１０００のサイズを減算することで、判定値６００を算出する。
【０１１８】
読出判定部１２８は、判定値算出部１２７により算出された判定値６００と、ＲＰ４００の値との大小関係を比較することで、当該ログ情報５００を全件記憶領域１０００から読み出すか否かを判定する。
【０１１９】
すなわち、読出判定部１２８は、判定値算出部１２７により算出された判定値６００がＲＰ４００の値よりも大きい場合、当該ログ情報５００を全件記憶領域１０００から読み出すと判定する。一方で、読出判定部１２８は、判定値算出部１２７により算出された判定値６００がＲＰ４００の値以下である場合、当該ログ情報５００は全件記憶領域１０００から読み出さないと判定する。
【０１２０】
＜処理の詳細＞
次に、本実施形態に係る制御システム１の処理の詳細について説明する。
【０１２１】
≪ログ情報５００の保存処理≫
以降では、制御機器１０において、被制御機器３０で発生したイベントのログ情報５００を保存する処理について、図１１を参照しながら説明する。図１１は、本実施形態に係るログ情報５００の保存処理の一例を示すフローチャートである。なお、図１１におけるステップＳ７０１〜ステップＳ７０４及びステップＳ７０６〜ステップＳ７０７は、図７と同様であるため、その説明を省略する。
【０１２２】
ステップＳ７０４において、イベント判定部１１１により、被制御機器３０で発生したイベントが突発イベントでないと判定された場合、ログ保存処理部１０１は、ログ保存部１１３Ａにより、ＷＰ２００の値を、全件記憶領域１０００のサイズで割った剰余を算出する（ステップＳ１１０１）。すなわち、例えば、図５に示すように、Ｍ件のログ情報５００が全件記憶領域１０００に保存可能である場合、当該全件記憶領域１０００のサイズはＭである。したがって、この場合、ログ保存部１１３Ａは、ＷＰ２００の値をＭで割った剰余を算出する。
【０１２３】
次に、ログ保存処理部１０１は、ログ保存部１１３Ａにより、当該全件記憶領域１０００において当該剰余が示す位置に、ステップＳ７０３で取得されたログ情報５００を保存する（ステップＳ１１０２）。なお、当該剰余が示す位置に既にログ情報５００が保存されている場合、ログ保存部１１３Ａは、当該ログ情報５００を、ステップＳ７０３で取得されたログ情報５００で上書きして保存する。
【０１２４】
なお、ログ保存部１１３Ａは、例えば、ＷＰ２００の値（ＷＰ値）と関連付けたログ情報５００を、全件記憶領域１０００における当該剰余が示す位置に保存しても良い。
【０１２５】
以上のように、本実施形態に係る制御システム１では、被制御機器３０から取得されたログ情報５００の数が、全件記憶領域１０００のサイズを超えた場合、当該全件記憶領域１０００に保存されているログ情報５００のうち、古いログ情報５００から順に上書きされる。
【０１２６】
例えば、全件記憶領域１０００のサイズが１１であり、当該全件記憶領域１０００に１１件のログ情報５００（例えば、「ログ情報Ａ」、「ログ情報Ｂ」、・・・、「ログ情報Ｋ」）が順に保存されたものとする。このとき、被制御機器３０から異「ログ情報Ｌ」（異常ログ情報）を取得した場合、制御機器１０は、当該「ログ情報Ｌ」を、「ログ情報Ａ」に上書きして保存する。これにより、全件記憶領域１０００に保存されているログ情報は、「ログ情報Ｌ」、「ログ情報Ｂ」、・・・、「ログ情報Ｋ」となる。
【０１２７】
同様に、更に、被制御機器３０から「ログ情報Ｍ」（異常ログ情報）を取得した場合、制御機器１０は、当該「ログ情報Ｍ」を、「ログ情報Ｂ」に上書きして保存する。これにより、全件記憶領域１０００に保存されているログ情報は、「ログ情報Ｌ」、「ログ情報Ｍ」、「ログ情報Ｃ」、・・・、「ログ情報Ｋ」となる。
【０１２８】
≪ログ情報５００の送信処理≫
以降では、制御機器１０に保存されているログ情報（異常ログ情報及び突発ログ情報）５００を表示装置２０に送信する処理について、図１２を参照しながら説明する。図１２は、本実施形態に係るログ情報５００の送信処理の一例を示すフローチャートである。なお、図１２におけるステップＳ８０１〜ステップＳ８０８及びステップＳ８１３は、図８と同様であるため、その説明を省略する。
【０１２９】
ステップＳ８０８において、ポインタ判定部１２３により処理を終了しないと判定された場合、ログ送信処理部１０２は、判定値算出部１２７により、判定値６００を算出する（ステップＳ１２０１）。すなわち、判定値算出部１２７は、ＷＰ２００の値から、全件記憶領域１０００のサイズを減算した値を判定値６００とする。
【０１３０】
次に、ログ送信処理部１０２は、読出判定部１２８により、判定値算出部１２７により算出された判定値６００が、ＲＰ４００の値より大きいか否かを判定する（ステップＳ１２０２）。
【０１３１】
ステップＳ１２０２において、判定値６００がＲＰ４００の値より大きいと判定された場合、ログ送信処理部１０２は、ステップＳ１２０６に進む。すなわち、この場合、ログ送信処理部１０２は、全件記憶領域１０００のＲＰ４００が示す位置に保存されているログ情報５００を読み出さずに、ＲＰ４００の値に「１」を加算する。
【０１３２】
一方、ステップＳ１２０２において、判定値６００がＲＰ４００の値より大きくないと判定された場合、ログ送信処理部１０２は、ログ読出部１２４により、ログ情報５００を取得する（ステップＳ１２０３）。すなわち、ログ読出部１２４は、全件記憶領域１０００に保存されているログ情報（異常ログ情報）５００のうち、ＲＰ４００の値を全件記憶領域１０００のサイズで割った剰余が示す位置に保存されている異常ログ情報５００を取得する。
【０１３３】
次に、ログ送信処理部１０２は、ログバッファ部１２５により、上記のステップＳ１２０３で取得されたログ情報（異常ログ情報）５００を、送信バッファ３０００におけるＳＢＷＰ３００が示す位置に保存する（ステップＳ１２０４）。
【０１３４】
次に、ログ送信処理部１０２は、ＳＢＷＰ管理部１２０により、ＳＢＷＰ３００の値に「１」を加算する（ステップＳ１２０５）。
【０１３５】
次に、ログ送信処理部１０２は、ＲＰ管理部１２１により、ＲＰ４００の値に「１」を加算する（ステップＳ１２０６）。そして、ログ送信処理部１０２は、ステップＳ８０３に戻る。
【０１３６】
以上により、本実施形態に係る制御システム１では、例えばリングバッファ等である全件記憶領域１０００に保存されているログ情報（異常ログ情報）５００を、送信バッファ３０００に発生順に保存することができる。
【０１３７】
ここで、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報（異常ログ情報及び突発ログ情報）５００の保存の一例について、図１３を参照しながら説明する。図１３は、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報５００の保存の一例を説明する図である。なお、図１３では、一例として、全件記憶領域１０００のサイズが１１である場合について説明する。
【０１３８】
図１３に示すように、全件記憶領域１０００には、「ログ情報Ｅ」〜「ログ情報Ｌ」がそれぞれ位置「３」〜「１０」に保存されているものとする。また、全件記憶領域１０００には、「ログ情報Ｍ」及び「ログ情報Ｏ」〜「ログ情報Ｐ」が、それぞれ位置「０」及び「１」〜「２」に保存されているものとする。
【０１３９】
なお、「ログ情報Ｍ」は、例えば、位置「０」に保存されていた「ログ情報Ａ」を上書きして保存したログ情報５００である。同様に、「ログ情報Ｏ」は、例えば、位置「１」に保存されていた「ログ情報Ｂ」を上書きして保存したログ情報５００である。また、同様に、「ログ情報Ｐ」は、例えば、位置「２」に保存されていた「ログ情報Ｄ」を上書きして保存したログ情報５００である。
【０１４０】
また、図１３に示すように、個別記憶領域２０００には、「ログ情報Ｃ」がＷＰ値「２」と関連付けて保存されていると共に、「ログ情報Ｎ」がＷＰ値「１２」と関連付けて保存されているものとする。
【０１４１】
この場合、ログ送信処理部１０２は、個別記憶領域２０００の「ログ情報Ｃ」を送信バッファ３０００の位置「０」に保存する。また、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｅ」〜「ログ情報Ｌ」を送信バッファ３０００の位置「１」〜「８」に保存する。
【０１４２】
同様に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｍ」を送信バッファ３０００の位置「９」に保存する。また、個別記憶領域２０００の「ログ情報Ｎ」を送信バッファ３０００の位置「１０」に保存する。更に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｏ」〜「ログ情報Ｐ」を送信バッファ３０００の位置「１１」〜「１２」に保存する。
【０１４３】
このように、ログ送信処理部１０２は、全件記憶領域１０００に保存されているログ情報（異常ログ情報）５００を発生順に送信バッファ３０００に保存する。また、ログ送信処理部１０２は、個別記憶領域２０００に保存されているログ情報（突発ログ情報）５００を、当該ログ情報５００の次に発生した異常ログ情報５００の前に挿入して、送信バッファ３０００に保存する。
【０１４４】
これにより、ログ送信処理部１０２は、リングバッファ等である全件記憶領域１０００でログ情報５００の上書きが行われた場合においても、イベントが発生した順で、ログ情報（異常ログ情報及び突発ログ情報）５００を送信バッファ３０００に保存することができる。
【０１４５】
したがって、本実施形態に係る制御システム１では、制御機器１０は、第一の実施形態と同様に、例えば、ログ情報５００に含まれる発生時刻を用いずに、イベントの発生順にログ情報５００を並べ替えた上で、これらのログ情報５００を表示装置２０に送信することができる。
【０１４６】
［第三の実施形態］
次に、第三の実施形態について説明する。異なるイベントＩＤの突発イベントが連続して発生した場合、これら突発イベントのログ情報（突発ログ情報）５００は、同一のＷＰ値に関連付けて個別記憶領域２０００に記憶される。したがって、このような場合、第一の実施形態では、突発ログ情報５００が発生順に送信バッファ３０００に保存されないことがある。そこで、第三の実施形態では、異なるイベントＩＤの突発イベントが連続して発生した場合でも、突発ログ情報５００を発生順に送信バッファ３０００に保存できるようにするものである。
【０１４７】
なお、第三の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と実施的に同一の機能を有する箇所及び実質的に同一の処理を行う箇所については同一の符号を付与し、その説明を省略する。
【０１４８】
＜機能構成＞
次に、本実施形態に係る制御機器１０の機能構成について、図１４を参照しながら説明する。図１４は、本実施形態に係る制御機器１０の一例の機能構成を示す図である。
【０１４９】
図１４に示すように、本実施形態に係る制御機器１０のログ保存処理部１０１は、ログ保存部１１３Ｂと、ＩＰｗ管理部１１４とを有する。また、本実施形態に係る制御機器１０のログ送信処理部１０２は、ＷＰ値読出部１２２Ａと、ポインタ判定部１２３Ａと、ログ読出部１２４Ａと、ＩＰｒ管理部１２９と、ｆＩＰ管理部１３０と、ＩＰ値読出部１３１とを有する。
【０１５０】
ＩＰｗ管理部１１４は、書込インデックスポインタ７００を管理する。書込インデックスポインタ７００は、同一のＷＰ値に関連付けられて個別記憶領域２０００に保存された突発ログ情報５００の発生順を示すポインタである。書込インデックスポインタ７００は、初期値が「０」であり、突発ログ情報５００が個別記憶領域２０００に保存される度に更新（「１」が加算）されると共に、ＷＰ２００の値が更新されると「０」に設定される。以降では、書込インデックスポインタ７００を、「ＩＰｗ７００」とも表す。
【０１５１】
ログ保存部１１３Ｂは、イベント判定部１１１による判定結果に応じて、ログ情報５００をログ記憶部１０３に保存する。このとき、ログ保存部１１３Ｂは、ログ情報５００を個別記憶領域２０００に保存する場合、ＷＰ２００の値（ＷＰ値）に加えて、ＩＰｗ７００の値（ＩＰ値）を関連付けてログ情報５００を保存する。
【０１５２】
ここで、本実施形態に係る個別記憶領域２０００について、図１５を参照しながら説明する。図１５は、個別記憶領域２０００の他の例を説明する図である。
【０１５３】
図１５に示すように、本実施形態に係る個別記憶領域２０００には、突発イベントを識別するイベントＩＤ毎に、ＷＰ値と、ＩＰ値と、ログ情報５００とが保存されている。
【０１５４】
個別記憶領域２０００には、イベントＩＤで識別される突発イベントが発生したことを示す突発ログ情報５００と、当該突発イベントが発生した際のＷＰ２００の値（ＷＰ値）と、当該突発イベントが発生した際のＩＰｗ７００の値（ＩＰ値）とが、当該イベントＩＤに対応する位置に保存される。
【０１５５】
これにより、ＷＰ値が同一である場合に突発イベントが連続して発生したときであっても、突発ログ情報５００の発生順をＩＰ値により管理することができる。例えば、図１５に示す例では、「ログ情報Ｃ」と「ログ情報Ｄ」とは共にＷＰ値「２」であるが、ＩＰ値はそれぞれ「０」及び「１」である。これにより、「ログ情報Ｃ」により示されるイベントは、「ログ情報Ｄ」により示されるイベントよりも先に発生したことがわかる。したがって、「ログ情報Ｃ」を送信バッファ３０００に保存した後に、「ログ情報Ｄ」を送信バッファ３０００に保存することができる。
【０１５６】
図１４に戻る。ＷＰ値読出部１２２Ａは、突発イベントのイベントＩＤ毎に、個別記憶領域２０００からＷＰ値を取得する。
【０１５７】
ポインタ判定部１２３Ａは、ＷＰ値読出部１２２Ａにより取得されたＷＰ値と、ＲＰ管理部１２１により管理されているＲＰ４００の値とが一致するか否かを判定する。また、ポインタ判定部１２３Ａは、ＩＰ値読出部１３１により取得されたＩＰ値と、後述する読出インデックスポインタ８００の値とが一致するか否かを判定する。更に、ポインタ判定部１２３Ａは、後述するインデックスポインタフラグ９００の値が「０」でないか否かを判定する。
【０１５８】
ＩＰｒ管理部１２９は、読出インデックスポインタ８００を管理する。読出インデックスポインタ８００は、同一のＷＰ値に関連付けられている突発ログ情報５００の読み出し順序を制御するポインタである。読出インデックスポインタ８００は、初期値が「０」であり、後述するインデックスポインタフラグ９００の値が「０」でない場合に更新（「１」が加算）される。以降では、読出インデックスポインタ８００を、「ＩＰｒ８００」とも表す。
【０１５９】
ｆＩＰ管理部１３０は、インデックスポインタフラグ９００を管理する。インデックスポインタフラグ９００は、同一のＷＰ値に関連付けられている突発ログ情報５００のうち、先に発生した突発ログ情報５００が存在する否かを管理するフラグである。インデックスポインタフラグ９００は、初期値が「０」であり、同一のＷＰ値に関連付けられている先に発生した突発ログ情報５００が他に存在する場合（すなわち、該当のＷＰ値に対して、ＩＰ値＞ＩＰｒの値となる突発ログ情報５００が存在する場合）、「１」に更新される。以降では、インデックスポインタフラグ９００を、「ｆＩＰ９００」とも表す。
【０１６０】
ＩＰ値読出部１３１は、ポインタ判定部１２３Ａによる判定結果に応じて、該当のイベントＩＤの突発ログ情報５００に関連付けられているＩＰ値を個別記憶領域２０００から取得する。
【０１６１】
ログ読出部１２４Ａは、ポインタ判定部１２３Ａによる判定結果に応じて、ログ記憶部１０３からログ情報５００を取得する。すなわち、ログ読出部１２４Ａは、ポインタ判定部１２３Ａにより、ＷＰ値とＲＰ４００の値とが一致すると判定された場合であって、かつ、ＩＰ値とＩＰｒ８００の値とが一致すると判定された場合、当該ＷＰ値及びＩＰ値に関連付けられている突発ログ情報５００を取得する。
【０１６２】
＜処理の詳細＞
次に、本実施形態に係る制御システム１の処理の詳細について説明する。
【０１６３】
≪ログ情報５００の保存処理≫
以降では、制御機器１０において、被制御機器３０で発生したイベントのログ情報５００を保存する処理について、図１６を参照しながら説明する。図１６は、本実施形態に係るログ情報５００の保存処理の一例を示すフローチャートである。なお、図１６におけるステップＳ７０１〜ステップＳ７０６は、図７と同様であるため、その説明を省略する。
【０１６４】
ステップＳ７０１に続いて、ログ保存処理部１０１は、ＩＰｗ管理部１１４により、ＩＰｗ７００の値を「０」に初期化する（ステップＳ１６０１）。
【０１６５】
また、ステップＳ７０４において、イベント判定部１１１により、被制御機器３０で発生したイベントが突発イベントであると判定された場合、ログ保存処理部１０１は、ログ保存部１１３Ａは、ログ情報５００を、ＷＰ２００の値（ＷＰ値）と、ＩＰｗ７００の値（ＩＰ値）と関連付けて個別記憶領域２０００に保存する（ステップＳ１６０２）。
【０１６６】
次に、ログ保存処理部１０１は、ＩＰｗ管理部１１４により、ＩＰｗ７００の値に「１」を加算する（ステップＳ１６０３）。
【０１６７】
一方で、ステップＳ７０６に続いて、ログ保存処理部１０１は、ＩＰｗ管理部１１４により、ＩＰｗ７００の値を「０」に設定（クリア）する（ステップＳ１６０４）。
【０１６８】
以上のように、本実施形態に係る制御システム１は、被制御機器３０から取得されたログ情報５００が突発ログ情報５００である場合、ＷＰ値及びＩＰ値と関連付けて個別記憶領域２０００に保存する。このため、例えば、個別記憶領域２０００に保存されている突発ログ情報５００のうち、同一のＷＰ値と関連付けられている突発ログ情報５００は、発生順にＩＰ値が昇順（すなわち、「０」、「１」、「２」、・・・の順）に関連付けられる。
【０１６９】
≪ログ情報５００の送信処理≫
以降では、制御機器１０に保存されているログ情報（異常ログ情報及び突発ログ情報）５００を表示装置２０に送信する処理について、図１７を参照しながら説明する。図１７は、本実施形態に係るログ情報５００の送信処理の一例を示すフローチャートである。なお、図１７におけるステップＳ８０１〜ステップＳ８０２及びステップＳ８０８〜ステップＳ８１３は、図８と同様であるため、その説明を省略する。
【０１７０】
ステップＳ８０２又はステップＳ８１２に続いて、ログ送信処理部１０２は、ＩＰｒ管理部１２９により、ＩＰｒ８００の値を「０」に初期化する（ステップＳ１７０１）。
【０１７１】
次に、ログ送信処理部１０２は、ｆＩＰ管理部１３０により、ｆＩＰ９００の値を「０」に初期化する（ステップＳ１７０２）。すなわち、ｆＩＰ管理部１３０は、ｆＩＰ９００によるフラグをＯＦＦにする。
【０１７２】
次に、ログ送信処理部１０２は、ＷＰ値読出部１２２Ａにより、１つのイベントＩＤのＷＰ値を個別記憶領域２０００から取得する（ステップＳ１７０３）。例えば、図１５に示す個別記憶領域２０００である場合、ＷＰ値読出部１２２Ａは、イベントＩＤ「Ｘ」のＷＰ値「２」を取得すれば良い。
【０１７３】
次に、ログ送信処理部１０２は、ポインタ判定部１２３Ａにより、ＷＰ値読出部１２２Ａにより取得されたＷＰ値と、ＲＰ４００の値とが一致するか否かを判定する（ステップＳ１７０４）。
【０１７４】
ステップＳ１７０４において、ＷＰ値読出部１２２Ａにより取得されたＷＰ値とＲＰ４００の値とが一致すると判定された場合、ログ送信処理部１０２は、ＩＰ値読出部１３１により、該当のイベントＩＤの突発ログ情報５００に関連付けられているＩＰ値を個別記憶領域２０００から取得する（ステップＳ１７０５）。すなわち、ＩＰ値読出部１３１は、ＷＰ値読出部１２２Ａにより取得されたＷＰ値と関連付けられているＩＰ値を個別記憶領域２０００から取得する。
【０１７５】
例えば、図１５に示す個別記憶領域２０００から、イベントＩＤ「Ｘ」のＷＰ値「２」がＷＰ値読出部１２２Ａにより取得された場合、ＩＰ値読出部１３１は、当該イベントＩＤ「Ｘ」のＩＰ値「０」を取得する。
【０１７６】
次に、ログ送信処理部１０２は、ポインタ判定部１２３Ａにより、ＩＰ値読出部１３１により取得されたＩＰ値と、ＩＰｒ８００の値との大小関係を判定する（ステップＳ１７０６）。
【０１７７】
ステップＳ１７０６において、ＩＰ値＜ＩＰｒ８００の値と判定された場合、ログ送信処理部１０２は、ステップＳ１７１１に進む。
【０１７８】
ステップＳ１７０６において、ＩＰ値＞ＩＰｒ８００の値と判定された場合、ログ送信処理部１０２は、ｆＩＰ管理部１３０により、ｆＩＰ９００の値を「１」に設定する（ステップＳ１７０７）。すなわち、ｆＩＰ管理部１３０は、ｆＩＰ９００によるフラグをＯＮにする。
【０１７９】
ここで、ＩＰ値＞ＩＰｒ８００の値と判定された場合とは、例えば、図１５に示す個別記憶領域２０００において、上記のステップＳ１７０３でイベントＩＤ「Ｙ」のＷＰ値が、イベントＩＤ「Ｘ」のＷＰ値よりも先に取得されたような場合である。この場合、当該イベントＩＤ「Ｙ」のＩＰ値は「１」であり、ＩＰｒ８００の値は「０」となる。このとき、イベントＩＤ「Ｘ」の「イベント情報Ｃ」を先に送信バッファ３０００に保存する必要がある。このため、ｆＩＰ９００の値に「１」が設定され、イベントＩＤ「Ｙ」の「イベント情報Ｄ」はまだ送信バッファ３０００には保存されない。
【０１８０】
ステップＳ１７０６において、ＩＰ値＝ＩＰｒ８００の値と判定された場合、ログ送信処理部１０２は、ログ読出部１２４Ａにより、該当のＷＰ値及びＩＰ値に関連付けられている突発ログ情報５００を個別記憶領域２０００から取得する（ステップＳ１７０８）。すなわち、ログ読出部１２４は、ＷＰ値読出部１２２Ａにより取得されたＷＰ値と、ＩＰ値読出部１３１により取得されたＩＰ値とに関連付けられている突発ログ情報５００を個別記憶領域２０００から取得する。
【０１８１】
次に、ログ送信処理部１０２は、ログバッファ部１２５により、上記のステップＳ１７０８で取得されたログ情報（突発ログ情報）５００を、送信バッファ３０００におけるＳＢＷＰ３００が示す位置に保存する（ステップＳ１７０９）。
【０１８２】
次に、ログ送信処理部１０２は、ＳＢＷＰ管理部１２０により、ＳＢＷＰ３００の値に「１」を加算する（ステップＳ１７１０）。
【０１８３】
ステップＳ１７０７若しくはステップＳ１７１０に続いて、又はステップＳ１７０４においてＷＰ値とＲＰ４００の値とが一致しないと判定された場合若しくはステップＳ１７０６においてＩＰ値＜ＩＰｒ８００の値と判定された場合、ログ送信処理部１０２は、ＷＰ値読出部１２２Ａにより、次のイベントＩＤがあるか否かを判定する（ステップＳ１７１１）。すなわち、ＷＰ値読出部１２２Ａは、個別記憶領域２０００におけるイベントＩＤのうち、ＷＰ値が取得されていないイベントＩＤが存在するか否かを判定する。
【０１８４】
ステップＳ１７１１において、次のイベントＩＤがあると判定された場合、ログ送信処理部１０２は、ＷＰ値読出部１２２Ａにより、当該次のイベントＩＤのＷＰ値を個別記憶領域２０００から取得する（ステップＳ１７１２）。
【０１８５】
例えば、図１５に示す個別記憶領域２０００において、上記のステップＳ１７０３でイベントＩＤ「Ｘ」のＷＰ値が取得された場合、ＷＰ値読出部１２２Ａは、次のイベントＩＤ「Ｙ」のＷＰ値を個別記憶領域２０００から取得する。
【０１８６】
そして、ログ送信処理部１０２は、ステップＳ１７０４に戻る。したがって、ログ送信処理部１０２は、個別記憶領域２０００に記憶されている各イベントＩＤのＷＰ値に対して、ステップＳ１７０４〜ステップＳ１７１１を繰り返す。
【０１８７】
ステップＳ１７１１において、次のイベントＩＤないと判定された場合、ログ送信処理部１０２は、ポインタ判定部１２３ＡによりｆＩＰ９００の値が「０」でないか否かを判定する（ステップＳ１７１３）。
【０１８８】
ステップＳ１７１２において、ｆＩＰ９００の値が「０」であると判定された場合、ログ送信処理部１０２は、ステップＳ８０８に進む。
【０１８９】
一方で、ステップＳ１７１２において、ｆＩＰ９００の値が「０」でない（すなわち、ｆＩＰ９００の値が「１」）と判定された場合、ログ送信処理部１０２は、ＩＰｒ管理部１２９により、ＩＰｒ８００の値に「１」を加算する（ステップＳ１７１４）。
【０１９０】
そして、ログ送信処理部１０２は、ステップＳ１７０２に戻る。したがって、ログ送信処理部１０２は、ｆＩＰ９００の値を「０」に初期化（ステップＳ１７０２）した上で、「１」が加算されたＩＰｒ８００を用いて、上記のステップＳ１７０３〜ステップＳ１７１３を繰り返す。これにより、同一のＷＰ値と関連付けられている突発ログ情報５００であって、未だ送信バッファ３０００に保存されていない突発ログ情報５００が、順に当該送信バッファ３０００に保存される。
【０１９１】
ここで、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報（異常ログ情報及び突発ログ情報）５００の保存の一例について、図１８を参照しながら説明する。図１８は、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報５００の保存の一例を説明する図である。
【０１９２】
図１８に示すように、全件記憶領域１０００には、「ログ情報Ａ」〜「ログ情報Ｂ」、「ログ情報Ｅ」〜「ログ情報Ｊ」が、それぞれ位置「０」〜「７」に保存されているものとする。同様に、図１８に示すように、個別記憶領域２０００には、イベントＩＤ「Ｘ」の「ログ情報Ｃ」がＷＰ値「２」及びＩＰ値「０」と関連付けて保存されていると共に、イベントＩＤ「Ｙ」の「ログ情報Ｄ」がＷＰ値「２」及びＩＰ値「１」と関連付けて保存されているものとする。なお、これは、イベントＩＤ「Ｘ」の突発イベントの次に、イベントＩＤ「Ｙ」の突発イベントが発生したことを示している。
【０１９３】
この場合、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ａ」〜「ログ情報Ｂ」を送信バッファ３０００の位置「０」〜「１」に保存する。また、ログ送信処理部１０２は、個別記憶領域２０００の「ログ情報Ｃ」〜「ログ情報Ｄ」を送信バッファ３０００の位置「２」〜「３」に保存する。更に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｅ」〜「ログ情報Ｊ」を送信バッファ３０００の位置「４」〜「９」に保存する。
【０１９４】
ここで、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報（異常ログ情報及び突発ログ情報）５００の保存の他の例について、図１９を参照しながら説明する。図１９は、本実施形態に係る全件記憶領域１０００及び個別記憶領域２０００から送信バッファ３０００へのログ情報５００の保存の他の例を説明する図である。
【０１９５】
図１９に示すように、全件記憶領域１０００には、「ログ情報Ａ」〜「ログ情報Ｂ」、「ログ情報Ｆ」〜「ログ情報Ｋ」が、それぞれ位置「０」〜「７」に保存されているものとする。同様に、図１８に示すように、個別記憶領域２０００には、イベントＩＤ「Ｘ」の「ログ情報Ｅ」がＷＰ値「２」及びＩＰ値「２」と関連付けて保存されていると共に、イベントＩＤ「Ｙ」の「ログ情報Ｄ」がＷＰ値「２」及びＩＰ値「１」と関連付けて保存されているものとする。なお、これは、イベントＩＤ「Ｘ」の突発イベントの次に、イベントＩＤ「Ｙ」の突発イベントが発生し、続いてイベントＩＤ「Ｘ」の突発イベントが再度発生したことを示している。したがって、個別記憶領域２０００では、イベントＩＤ「Ｘ」の突発イベントの発生を示す「ログ情報Ｃ」が、イベントＩＤ「Ｘ」の突発イベントの再度の発生を示す「ログ情報Ｅ」で上書きされている。
【０１９６】
この場合、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ａ」〜「ログ情報Ｂ」を送信バッファ３０００の位置「０」〜「１」に保存する。また、ログ送信処理部１０２は、個別記憶領域２０００の「ログ情報Ｄ」〜「ログ情報Ｅ」を送信バッファ３０００の位置「２」〜「３」に保存する。更に、ログ送信処理部１０２は、全件記憶領域１０００の「ログ情報Ｆ」〜「ログ情報Ｋ」を送信バッファ３０００の位置「４」〜「９」に保存する。
【０１９７】
このように、ログ送信処理部１０２は、個別記憶領域２０００に保存されている突発ログ情報５００に関連付けられているＷＰ値が同一である場合、ＩＰ値の昇順に、異常ログ情報５００の前に挿入して、送信バッファ３０００に保存する。これにより、ログ送信処理部１０２は、突発イベントが連続して発生したような場合でも、イベントが発生した順に、ログ情報（異常ログ情報及び突発ログ情報）５００を送信バッファ３０００に保存することができる。
【０１９８】
＜まとめ＞
以上のように、第一の実施形態に係る制御システム１では、制御機器１０において、異常ログ情報５００及び突発ログ情報５００を、それぞれ全件記憶領域１０００及び個別記憶領域２０００に保存する。しかも、第一の実施形態に係る制御システム１では、制御機器１０において、最新の突発ログ情報５００のみを個別記憶領域２０００に保存する。
【０１９９】
したがって、第一の実施形態に係る制御システム１では、例えば組み込み機器等の比較的メモリ容量が少ないである制御機器１０においても、異常等の発生原因の解明に必要なログ情報５００を保存することができるようになる。
【０２００】
また、第一の実施形態に係る制御システム１では、突発ログ情報５００を全件記憶領域１０００に保存する際のＷＰ２００の値を関連付けた突発ログ情報５００を個別記憶領域２０００に保存する。これにより、第一の実施形態に係る制御システム１では、制御機器１０は、例えば、ログ情報５００に含まれる発生時刻を用いずに、ログ情報５００を表示装置２０に送信する際に、イベントの発生順にログ情報５００を並べ替えることができる。
【０２０１】
したがって、第一の実施形態に係る制御システム１では、制御機器１０は、例えば、時計装置等を有していなくても良い。このため、本実施形態に係る制御システム１では、例えば、制御機器１０が有する時計装置等のバッテリーが切れや電源断等を考慮することなく、イベントの発生順にログ情報５００を並べ替えることができる。
【０２０２】
更に、第一の実施形態に係る制御システム１では、例えば、制御機器１０と被制御機器３０との間で、時計装置の時刻にずれが生じている場合であっても、イベントの発生順にログ情報５００を並べ替えることができるようになる。
【０２０３】
また、第二の実施形態に係る制御システム１では、制御機器１０において、ＷＰ２００の値から、全件記憶領域１０００のサイズを減算した判定値６００を用いて、ログ情報５００を読み出すか否かを判定する。これにより、第二の実施形態に係る制御システム１では、リングバッファ等である全件記憶領域１０００でログ情報５００の上書きが行われた場合においても、イベントの発生順にログ情報５００を並べ替えた上で、表示装置２０に送信することができる。
【０２０４】
また、第三の実施形態に係る制御システム１では、制御機器１０において、被制御機器３０で異なるイベントＩＤの突発イベントが連続して発生した場合、これら突発イベントのログ情報（突発ログ情報）５００が異なるＩＰ値に関連付けて個別記憶領域２０００に記憶される。これにより、第三の実施形態に係る制御システム１では、突発イベントが連続して発生した場合であっても、イベントの発生順にログ情報５００を並べ替えた上で、表示装置２０に送信することができる。
【０２０５】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２０６】
１        制御システム
１０      制御機器
２０      表示装置
３０      被制御機器
１０１    ログ保存処理部
１０２    ログ送信処理部
１０３    ログ記憶部
１１０    ログ取得部
１１１    イベント判定部
１１２    ＷＰ管理部
１１３    ログ保存部
１２０    ＳＢＷＰ管理部
１２１    ＲＰ管理部
１２２    ＷＰ値読出部
１２３    ポインタ判定部
１２４    ログ読出部
１２５    ログバッファ部
１２６    ログ送信部
５００    ログ情報
１０００  全件記憶領域
２０００  個別記憶領域
３０００  送信バッファ
【図１】
2018124951.tif 000003
【図２】
2018124951.tif 000004
【図３】
2018124951.tif 000005
【図４】
2018124951.tif 000006
【図５】
2018124951.tif 000007
【図６】
2018124951.tif 000008
【図７】
2018124951.tif 000009
【図８】
2018124951.tif 000010
【図９】
2018124951.tif 000011
【図１０】
2018124951.tif 000012
【図１１】
2018124951.tif 000013
【図１２】
2018124951.tif 000014
【図１３】
2018124951.tif 000015
【図１４】
2018124951.tif 000016
【図１５】
2018124951.tif 000017
【図１６】
2018124951.tif 000018
【図１７】
2018124951.tif 000019
【図１８】
2018124951.tif 000020
【図１９】
2018124951.tif 000021