(57)【要約】      （修正有）【課題】コントローラ内のバッファの空き容量が無くなる前にユーザに警告を出力することが可能な制御装置、制御方法を提供する。【解決手段】制御装置１００は、順次生成されるログデータをバッファリングするためのバッファ１５２と、外部記憶装置１５５が接続され得るインターフェイス部１５４と、上記インターフェイス部に上記外部記憶装置が接続されている間、上記バッファにバッファリングされたログデータＬ１〜４を順次読み出し、当該ログデータを上記外部記憶装置に順次書き込むための書込部１５６と、上記バッファの空き容量を監視するための監視部１５８と、上記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するための警告部１６０とを備える。【選択図】図１
2019135588.tif 000002
【特許請求の範囲】
【請求項１】
順次生成されるログデータをバッファリングするためのバッファと、
外部記憶装置が接続され得るインターフェイス部と、
前記インターフェイス部に前記外部記憶装置が接続されている間、前記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置に順次書き込むための書込部と、
前記バッファの空き容量を監視するための監視部と、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するための警告部とを備える、制御装置。
【請求項２】
前記警告部は、前記空き容量が少なくなるにつれて前記警告の出力態様を強くする、請求項１に記載の制御装置。
【請求項３】
前記制御装置は、内部記憶装置をさらに備え、
前記書込部は、前記インターフェイス部に前記外部記憶装置が接続されていない間、前記バッファに格納されているログデータを順次読み出し、当該ログデータを前記内部記憶装置にバッファリングする、請求項１または２に記載の制御装置。
【請求項４】
前記書込部は、前記インターフェイス部に新たな外部記憶装置が接続されたことに基づいて、前記内部記憶装置にバッファリングされた前記ログデータを当該新たな外部記憶装置に書き込む、請求項３に記載の制御装置。
【請求項５】
前記警告は、光による警告、音による警告、および通知による警告の少なくとも１つを含む、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
制御装置に備えられるバッファの監視方法であって、
順次生成されるログデータを前記制御装置のバッファにバッファリングするステップと、
前記制御装置のインターフェイス部に外部記憶装置が接続されている間、前記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置に順次書き込むステップと、
前記バッファの空き容量を監視するステップと、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップとを備える、監視方法。
【請求項７】
制御装置に備えられるバッファの監視プログラムであって、
前記監視プログラムは、前記制御装置に、
順次生成されるログデータを前記制御装置のバッファにバッファリングするステップと、
前記制御装置のインターフェイス部に外部記憶装置が接続されている間、前記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置に順次書き込むステップと、
前記バッファの空き容量を監視するステップと、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップとを実行させる、監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御装置内のバッファの空き容量を監視するための技術に関する。
【背景技術】
【０００２】
様々な生産現場において、生産工程を自動化するＦＡ（Factory  Automation）システムが普及している。ＦＡシステムは、種々の産業用の駆動機器によって構成される。産業用の駆動機器は、たとえば、ワークを移動するための移動テーブルや、ワークを搬送するためのコンベアや、予め定められた目的の場所までワーク移動するためのアームロボットなどを含む。これらの駆動機器は、ＰＬＣ（Programmable Logic Controller）やロボットコントローラなどの産業用の制御装置（以下、「コントローラ」ともいう。）によって制御される。
【０００３】
異常が発生した場合に備えて、コントローラは、処理の記録をログデータとして保存する。コントローラの記憶領域の一部は、駆動機器の制御プログラムによって使用されているため、コントローラの記憶領域の空き容量は、限られている。そのため、ログデータは、コントローラに接続されるメモリカードなど外部記憶装置に書き込まれる。
【０００４】
このようなコントローラに関し、特開２０１０−１７６５４５号公報（特許文献１）は、メモリカードに格納されたロギング設定に従って被制御機器に関するデータをメモリカードにロギングすることが可能なコントローラを開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１７６５４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
外部記憶装置の記憶容量には上限があるため、ユーザは、外部記憶装置を定期的に交換する必要がある。外部記憶装置が取り外されている間、生成されたログデータは、コントローラ内のバッファに蓄積される。しかしながら、バッファの記憶容量は限られているため、バッファの空き容量が無くなった場合には、コントローラは、ログデータを破棄する必要がある。そのため、外部記憶装置の交換は、迅速に行われる必要がある。ユーザは、外部記憶装置の空き容量が無くなったことを確認した後に外部記憶装置を準備していては、外部記憶装置の交換に時間がかかってしまう。
【０００７】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、コントローラ内のバッファの空き容量が無くなる前にユーザに警告を出力することが可能な技術を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例では、制御装置は、順次生成されるログデータをバッファリングするためのバッファと、外部記憶装置が接続され得るインターフェイス部と、上記インターフェイス部に上記外部記憶装置が接続されている間、上記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを上記外部記憶装置に順次書き込むための書込部と、上記バッファの空き容量を監視するための監視部と、上記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するための警告部とを備える。
【０００９】
この開示によれば、制御装置は、バッファの空き容量が無くなる前にユーザに警告を出力することができる。その結果、ユーザは、バッファの空き領域が無くなる前に新しい外部記憶装置を準備することができ、外部記憶装置を新しいものに迅速に交換することができる。結果として、ログデータのロスが防がれる。
【００１０】
本開示の一例では、上記警告部は、上記空き容量が少なくなるにつれて上記警告の出力態様を強くする。
【００１１】
この開示によれば、ユーザは、バッファの空き容量を直感的に把握することができる。
本開示の一例では、上記制御装置は、内部記憶装置をさらに備える。上記書込部は、上記インターフェイス部に上記外部記憶装置が接続されていない間、上記バッファに格納されているログデータを順次読み出し、当該ログデータを上記内部記憶装置にバッファリングする。
【００１２】
この開示によれば、制御装置は、外部記憶装置が接続されていない間、ログデータを内部記憶装置に格納することで、外部記憶装置が取り外されている間におけるログデータのロスをより確実に防ぐことができる。
【００１３】
本開示の一例では、上記書込部は、上記インターフェイス部に新たな外部記憶装置が接続されたことに基づいて、上記内部記憶装置にバッファリングされた上記ログデータを当該新たな外部記憶装置に書き込む。
【００１４】
この開示によれば、制御装置は、メモリカードが取り外されている間に一時退避されたログデータを新たに接続されたメモリカードに保存することができる。
【００１５】
本開示の一例では、上記警告は、光による警告、音による警告、および通知による警告の少なくとも１つを含む。
【００１６】
この開示によれば、警告が光または通知によって実現される場合、ユーザは、バッファ空き容量が少なくなっていることを視覚的に認識することができる。また、警告が音によって実現される場合、ユーザは、バッファ空き容量が少なくなっていることを聴覚で認識することができる。
【００１７】
本開示の一例では、制御装置に備えられるバッファの監視方法は、順次生成されるログデータを上記制御装置のバッファにバッファリングするステップと、上記制御装置のインターフェイス部に外部記憶装置が接続されている間、上記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを上記外部記憶装置に順次書き込むステップと、上記バッファの空き容量を監視するステップと、上記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップとを備える。
【００１８】
この開示によれば、バッファの空き容量が無くなる前に警告がユーザに出力される。その結果、ユーザは、バッファの空き領域が無くなる前に新しい外部記憶装置を準備することができ、外部記憶装置を新しいものに迅速に交換することができる。結果として、ログデータのロスが防がれる。
【００１９】
本開示の他の例では、制御装置に備えられるバッファの監視プログラムは、上記制御装置に、順次生成されるログデータを上記制御装置のバッファにバッファリングするステップと、上記制御装置のインターフェイス部に外部記憶装置が接続されている間、上記バッファにバッファリングされたログデータを順次読み出し、当該ログデータを上記外部記憶装置に順次書き込むステップと、上記バッファの空き容量を監視するステップと、上記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップとを実行させる。
【００２０】
この開示によれば、バッファの空き容量が無くなる前に警告がユーザに出力される。その結果、ユーザは、バッファの空き領域が無くなる前に新しい外部記憶装置を準備することができ、外部記憶装置を新しいものに迅速に交換することができる。結果として、ログデータのロスが防がれる。
【発明の効果】
【００２１】
ある局面において、コントローラ内のバッファの空き容量が無くなる前にユーザに警告を出力することができる。
【図面の簡単な説明】
【００２２】
【図１】実施の形態に従うコントローラの構成例を示す図である。
【図２】実施の形態に従うＦＡシステムの概略構成を示す模式図である。
【図３】バッファ内の空き容量の推移の一例を示す図である。
【図４】ログデータの一時退避処理のフローを示す図である。
【図５】実施の形態に従うコントローラのハードウェア構成の一例を示す模式図である。
【図６】実施の形態に従うコントローラの機能構成の一例を示す図である。
【図７】保存対象として受け付けたログデータをバッファに書き込む処理を表わすフローチャートを示す。
【図８】バッファから読み出されたログデータをメモリカードに書き込む処理を表わすフローチャートを示す。
【図９】警告処理を表わすフローチャートを示す。
【発明を実施するための形態】
【００２３】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【００２４】
＜Ａ．適用例＞
図１を参照して、本発明の適用例について説明する。図１は、実施の形態に従うコントローラ１００の構成例を示す図である。
【００２５】
コントローラ１００は、産業用の駆動機器を制御するための装置である。コントローラ１００による駆動対象は、アームロボットを制御するロボットコントローラや、サーボモータを制御するサーボモータや、ワークを撮影するための視覚センサや、生産工程で利用されるその他の産業用機器などを含む。
【００２６】
図１に示されるように、コントローラ１００は、バッファ１５２と、メモリカードインターフェイス１５４（インターフェイス部）と、書込部１５６と、バッファ監視部１５８と、警告部１６０とを含む。
【００２７】
バッファ１５２は、たとえば、コントローラ１００内における揮発性の記憶領域である。一例として、バッファ１５２は、ＲＡＭ（Random Access Memory）やキャッシュメモリなどの記憶領域である。バッファ１５２は、順次生成されるログデータをバッファリングする。
【００２８】
ここでいう「ログデータ」とは、コントローラ１００が所定の処理を実行した場合に記録されるデータを意味する。ログデータは、エラー発生時に生成される異常ログ（稼働ログ）だけでなく、処理が正常に終了したことを示す正常ログを含んでもよい。あるいは、ログデータは、コントローラ１００の状態やコントローラ１００による制御対象の駆動機器の状態に関するデータ（たとえば、変数）も含み得る。典型的には、ログデータは、予め定められた周期ごとに生成される。
【００２９】
メモリカードインターフェイス１５４は、メモリカードを接続するためのインターフェイスである。メモリカードインターフェイス１５４は、メモリカードを脱着可能に構成される。メモリカードインターフェイス１５４に接続され得るメモリカードは、ＳＤカードなどの携帯型の外部記憶装置を含む。
【００３０】
書込部１５６は、メモリカードインターフェイス１５４にメモリカード１５５が接続されている間、バッファ１５２にバッファリングされたログデータを順次読み出し、当該ログデータをメモリカード１５５に順次書き込む。典型的には、バッファ１５２にバッファリングされたログデータは、ＦＩＦＯ（First In First Out）形式またはＬＩＦＯ（Last In, First Out）形式でバッファ１５２から読み出される。図１の例では、バッファ１５２にはログデータＬ１〜Ｌ４が格納されている。ＦＩＦＯ形式においては、書込部１５６は、バッファ１５２への格納順にログデータＬ１〜Ｌ４を取得し、取得したログデータを順次メモリカード１５５に書き込む。メモリカード１５５に書き込まれたログデータは、バッファ１５２から削除される。
【００３１】
バッファ監視部１５８は、バッファ１５２の空き容量を監視し、当該空き容量を定期的に警告部１６０に出力する。ここでいう「空き容量」とは、バッファ１５２の最大容量からバッファ１５２の使用容量を差し引いた残容量を意味する。空き容量および使用容量は互いに相関する概念であるため、「空き容量」は、「使用容量」の概念を含み得る用語である。
【００３２】
メモリカード１５５の記憶容量には上限があるため、ユーザは、メモリカード１５５を定期的に交換する必要がある。メモリカード１５５が取り外されている間、生成されたログデータは、バッファ１５２に蓄積される。しかしながら、バッファ１５２の記憶容量は限られているため、バッファ１５２の空き容量が無くなった場合には、バッファリングされている既存のログデータが破棄されてしまう。ユーザは、メモリカード１５５の空き容量が無くなったことを確認した後にメモリカード１５５を準備していては、メモリカード１５５の交換に時間がかかってしまう。
【００３３】
そこで、警告部１６０は、バッファ１５２の空き容量が所定値よりも少なくなったことに基づいて、警告を出力する。一例として、警告部１６０は、音、光、通知などで警告を行う。これにより、コントローラ１００は、バッファ１５２の空き容量が無くなる前にユーザに警告を出力することが可能なる。その結果、ユーザは、バッファ１５２の空き領域が無くなる前に新しいメモリカードを準備することができ、メモリカード１５５を新しいものに迅速に交換することができる。結果として、ログデータのロスを防ぐことができる。
【００３４】
なお、警告の出力態様は、バッファ１５２の空き容量が少なくなっていることを認識できる態様であれば特に限定されない。警告の出力態様の詳細については後述する。
【００３５】
＜Ｂ．ＦＡシステム１の装置構成＞
図２を参照して、コントローラ１００が組み込まれたＦＡシステム１について説明する。図２は、ＦＡシステム１の概略構成を示す模式図である。
【００３６】
ＦＡシステム１は、１つ以上のコントローラ１００と、１つ以上の外部機器２００と、１つ以上の駆動機器３００とを含む。
【００３７】
コントローラ１００は、複数のネットワークに接続され得る。図２の例では、コントローラ１００は、上位のネットワークＮ１と、下位のネットワークＮ２に接続されている。
【００３８】
上位のネットワークＮ１には、外部機器２００が接続されている。外部機器２００は、サポート装置２００Ａと、サーバ装置２００Ｂと、表示器２００Ｃとの内の少なくとも１つを含む。
【００３９】
サポート装置２００Ａは、ユーザプログラム１１０を設計するための開発環境を設計者に提供する。サポート装置２００Ａは、たとえば、ノート型ＰＣ、デスクトップ型ＰＣ、タブレット端末、または、スマートフォンなどである。設計者は、サポート装置２００Ａ上でユーザプログラム１１０を設計し、当該ユーザプログラム１１０をネットワークＮ１を介してコントローラ１００にダウンロードすることができる。
【００４０】
サーバ装置２００Ｂは、データベースシステム、製造実行システム（ＭＥＳ：Manufacturing Execution System）などが想定される。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。これらに限らず、情報系サービス（制御対象から各種情報を取得して、マクロ的またはミクロ的な分析などを行う処理）を提供する装置をネットワークＮ１に接続するようにしてもよい。
【００４１】
表示器２００Ｃは、ユーザからの操作を受けて、コントローラ１００に対してユーザ操作に応じたコマンドなどを出力する。表示器２００Ｃは、コントローラ１００での演算結果などをグラフィカルに表示する。表示器２００Ｃは、たとえば、ＨＭＩ（Human Machine Interface）である。
【００４２】
下位のネットワークＮ２には、駆動機器３００が接続されている。駆動機器３００は、直接的または間接的にワークＷに対して所定の作業を行うための機器の集合である。図２の例では、駆動機器３００は、リモートＩＯ装置３１０，３２０と、画像センサ３１５と、アームロボット３２５とで構成されている。
【００４３】
リモートＩＯ装置３１０は、複数の物理的な通信ポートを有する。それぞれの通信ポートに異なるネットワークが接続され得る。図２の例では、リモートＩＯ装置３１０は、２つの通信ポート３１０Ｐ１，３１０Ｐ２を有する。ネットワークＮ２は、ハブ３０５で分離されており、一方が通信ポート３１０Ｐ１に接続され、他方が通信ポート３１０Ｐ２に接続されている。通信ポート３１０Ｐ２には、ネットワークＮ３が接続されている。ネットワークＮ３には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００４４】
リモートＩＯ装置３１０は、コントローラ１００の制御指令に従って画像センサ３１５を制御する。画像センサ３１５は、リモートＩＯ装置３１０から受けた制御指示に従ってコンベア上を搬送されるワークＷを順次撮影し、得られた画像に対して予め定められた画像処理を実行する。これにより、画像センサ３１５は、コンベア上を搬送されるワークＷの品質検査などを順次行う。画像センサ３１５の検査結果は、リモートＩＯ装置３１０を介してコントローラ１００に順次送られる。
【００４５】
リモートＩＯ装置３２０は、複数の物理的な通信ポートを有する。それぞれの通信ポートに異なるネットワークが接続され得る。図２の例では、リモートＩＯ装置３２０は、２つの通信ポート３２０Ｐ１，３２０Ｐ２を有する。ネットワークＮ２は、ハブ３０５で分離されており、一方が通信ポート３１０Ｐ２に接続される。通信ポート３２０Ｐ２には、ネットワークＮ３が接続されている。ネットワークＮ３には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、ＥｔｈｅｒＣＡＴ、ＣｏｍｐｏＮｅｔなどが知られている。
【００４６】
リモートＩＯ装置３２０は、コントローラ１００の制御指令に従ってアームロボット３２５を制御する。一例として、コントローラ１００は、画像センサ３１５による検査工程（作業工程Ａ）に従って、アームロボット３２５に所定の作業（作業工程Ｂ）を行わせるための制御指令をリモートＩＯ装置３２０に出力する。リモートＩＯ装置３２０は、当該制御指令に従ってアームロボット３２５を制御する。一例として、リモートＩＯ装置３２０は、検査品質が不良と判断されたワークＷをコンベアから除去するように制御指令を与える。アームロボット３２５の状態（たとえば、各関節の位置や角度など）は、リモートＩＯ装置３２０からコントローラ１００に順次フィードバックされる。
【００４７】
＜Ｃ．警告処理＞
図１で説明したように、ログデータは、コントローラ１００に接続されるメモリカード１５５に保存される。ログデータは、コントローラ１００の処理中に発生したエラーログや、外部機器２００または駆動機器３００との通信中に発生したエラーログなどを含む。メモリカード１５５が取り外されている間、生成されたログデータは、コントローラ１００内のバッファ１５２に蓄積される。バッファ１５２の空き容量が少なくなった場合、警告部１６０は、警告を出力する。
【００４８】
以下では、図３を参照して、警告部１６０による警告処理について説明する。図３は、バッファ１５２内の空き容量の推移の一例を示す図である。以下では、バッファ１５２内の空き容量を、単に「バッファ空き容量」ともいう。
【００４９】
時刻Ｔ１において、メモリカード１５５がコントローラ１００のメモリカードインターフェイス１５４に接続されたとする。メモリカード１５５が接続されている間、コントローラ１００は、バッファ１５２からログデータを順次読み出し、当該ログデータをメモリカード１５５に書き込む。あるいは、コントローラ１００は、一定量のログデータがバッファ１５２に蓄積される度に当該ログデータをバッファ１５２から読み出し、当該ログデータをメモリカード１５５に書き込む。メモリカード１５５に書き込まれたログデータは、バッファ１５２から削除される。
【００５０】
時刻Ｔ２において、ユーザは、メモリカード１５５を交換するために、コントローラ１００のメモリカードインターフェイス１５４からメモリカード１５５を取り外したとする。コントローラ１００は、メモリカード１５５が取り外された後も継続して、生成されたログデータをバッファ１５２に蓄積する。その結果、バッファ空き容量は、時刻Ｔ２以降、減少し続ける。
【００５１】
警告部１６０は、バッファ空き容量を予め定められた閾値ｔｈと比較することで、警告を出力するか否かを判断する。閾値ｔｈは、予め設定されていてもよいし、ユーザによって任意に設定されてもよい。時刻Ｔ３において、バッファ空き容量が閾値ｔｈを下回ったとする。このことに基づいて、警告部１６０は、警告を出力する。
【００５２】
時刻Ｔ３以降、バッファ空き容量は、さらに減少し続ける。このとき、警告部１６０は、バッファ空き容量が少なくなるにつれて警告の出力態様を強くする。これにより、ユーザは、バッファ１５２の空き容量を直感的に把握できる。なお、警告は、バッファ空き容量に応じて段階的に変えられてもよいし、バッファ空き容量に応じて線形に変えられてもよい。一例として、バッファ空き容量と警告の出力値との関係は、テーブル情報として規定されていてもよいし、バッファ空き容量を説明変数とし、警告の出力値を目的変数とする式で規定されてもよい。
【００５３】
警告部１６０による警告方法には、任意の警告手段が採用され得る。一例として、警告部１６０による警告は、光による警告、音による警告、および通知による警告の少なくとも１つを含む。
【００５４】
光による警告は、たとえば、コントローラ１００に設けられているＬＥＤ（Light Emitting Diode）によって実現される。ＬＥＤは、バッファ空き容量が閾値ｔｈを下回ったことに基づいて、所定の発光パターンで発光するように構成される。ＬＥＤによる発光パッターンは、たとえば、点滅、所定の色（たとえば、赤色）での点灯などを含む。典型的には、ＬＥＤは、バッファ空き容量が少なくなるにつれて、点滅速度や発光強度を上げるように構成される。ユーザは、ＬＥＤの発光態様を確認することで、バッファ空き容量が少なくなっていることを視覚的に認識することができる。
【００５５】
音による警告は、たとえば、コントローラ１００に設けられているスピーカによって実現される。スピーカは、バッファ空き容量が閾値ｔｈを下回ったことに基づいて、所定の警告音を発するように構成される。当該警告音は、たとえば、予め定められたビープ音や、予め定められた音声などを含む。好ましくは、スピーカは、バッファ空き容量が少なくなるにつれて、警告音の音量、警告音の高さ、警告音のＯＮ／ＯＦＦの速度などを上げるように構成される。ユーザは、スピーカから発せられる音によって、バッファ空き容量が少なくなっていることを聴覚で認識することができる。
【００５６】
通知による警告は、たとえば、コントローラ１００の通知機能によって実現される。当該通知機能は、バッファ空き容量が閾値ｔｈを下回ったことに基づいて、メールなどの警告通知を他の通信機器（たとえば、図２に示される外部機器２００など）に送信する。外部機器２００は、コントローラ１００から警告通知を受信したに基づいて、当該警告通知をプッシュ通知する。警告通知は、バッファ空き容量が少なくなっていることを示すメッセージや、バッファ空き容量のサイズ、バッファ空き容量が無くなるまでの予測時間などを含む。ユーザは、プッシュ通知を確認することで、バッファ空き容量が少なくなっていることを認識することができる。
【００５７】
その他の警告方法として、警告部１６０は、コントローラ１００のエラー状態を表わすシステム変数の値を所定の値に変える。一例として、バッファ空き容量が閾値ｔｈ２（＞閾値ｔｈ）よりも大きい場合、コントローラ１００は、当該システム変数の値を「Ｈｉｇｈ」に設定する。コントローラ１００は、バッファ空き容量が閾値ｔｈ以上でかつ閾値ｔｈ２以下である場合、当該システム変数の値を「Ｍｉｄ」に設定する。バッファ空き容量が閾値ｔｈを下回った場合、コントローラ１００は、当該システム変数の値を「Ｌｏｗ」に設定する。
【００５８】
＜Ｄ．一時退避処理＞
上述のように、メモリカード１５５がコントローラ１００から取り外されている間、コントローラ１００は、新たに受けたログデータをバッファ１５２に蓄積する。バッファ空き容量が無くなった場合に、新たなログデータが発生したときには、コントローラ１００は、当該新たなログデータをバッファ１５２に書き込むことができない。
【００５９】
そこで、コントローラ１００は、バッファ１５２から溢れたログデータを内部記憶装置に一時的に退避させる。新たなメモリカードがコントローラ１００に接続された場合、コントローラ１００は、内部記憶装置に退避させたログデータを新たに接続されたメモリカードに移動する。これにより、メモリカード１５５の交換中にバッファ１５２の空き容量が無くなった場合であっても、ログデータのロスを防ぐことができる。
【００６０】
以下では、図４を参照して、バッファ空き容量が尽きた場合におけるログデータの一時退避処理について説明する。図４は、ログデータの一時退避処理のフローを示す図である。
【００６１】
図４に示されるように、コントローラ１００は、ログ機能１４０と、メモリカードインターフェイス１５４と、内部記憶装置１６２とを含む。ログ機能１４０は、上述のバッファ１５２（図１参照）と、上述の書込部１５６（図１参照）とを含む。内部記憶装置１６２は、バッファ１５２とは異なる記憶領域であり、ログデータの一時退避のために設けられた記憶領域である。当該記憶領域には、コントローラ１００内の任意の記憶領域が利用され得る。内部記憶装置１６２は、たとえば、後述の不揮発性メモリ１０８（図５参照）やコントローラ１００内のその他の記憶装置である。
【００６２】
ステップＳ１においては、メモリカード１５５がメモリカードインターフェイス１５４に接続されているとする。この場合、書込部１５６は、バッファ１５２に格納されているログデータを順次読み出し、読み出したログデータをメモリカード１５５に順次書き込む。
【００６３】
ステップＳ２において、メモリカード１５５がメモリカードインターフェイス１５４から取り外されたとする。メモリカードインターフェイス１５４にメモリカード１５５が接続されていない間、書込部１５６は、バッファ１５２に格納されているログデータを順次読み出し、当該ログデータを内部記憶装置１６２に順次バッファリングする。これにより、バッファ１５２に格納されているログデータが内部記憶装置１６２に一時退避される。典型的には、ログデータは、ＦＩＦＯ形式またはＬＩＦＯ形式でバッファ１５２から読み出される。好ましくは、ログデータは、バッファ１５２の空き容量が無くなるまではバッファ１５２に蓄積され、バッファ１５２の空き容量が無くなった後は内部記憶装置１６２に蓄積される。このように、ログデータが内部記憶装置１６２に格納されることで、メモリカード１５５が取り外されている間におけるログデータのロスが防がれる。
【００６４】
ステップＳ３において、メモリカード１５５Ａがコントローラ１００に接続されたとする。メモリカード１５５Ａは、メモリカード１５５とは異なる新たなメモリカードであってもよいし、内部のログデータが移された後のメモリカード１５５であってもよい。書込部１５６は、メモリカードインターフェイス１５４に新たなメモリカード１５５Ａが接続されたことに基づいて、内部記憶装置１６２に一時的にバッファリングされたログデータをメモリカード１５５Ａに書き込む。これにより、メモリカードが取り外されている間に一時退避されたログデータがメモリカード１５５Ａに保存される。その後、内部記憶装置１６２に一時的にバッファリングされたログデータは、削除される。
【００６５】
なお、上述では、バッファ１５２から溢れたログデータを内部記憶装置１６２に一時退避する例について説明を行ったが、このような態様は、好ましい形態であり、必須の形態ではない。たとえば、バッファ空き容量が無くなった場合、コントローラ１００は、新たに発生したログデータを削除してもよい。あるいは、コントローラ１００は、新たに発生したログデータをバッファ１５２に格納するために、バッファ１５２に格納されているログデータの内の最も古いログデータをバッファ１５２から削除してもよい。
【００６６】
＜Ｅ．コントローラ１００のハードウェア構成＞
図５を参照して、コントローラ１００のハードウェア構成について説明する。図５は、コントローラ１００のハードウェア構成の一例を示す模式図である。
【００６７】
コントローラ１００は、外部通信インターフェイス１０１と、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、揮発性のメインメモリ１０６と、不揮発性メモリ１０８と、内部バスコントローラ１２２と、フィールドバスコントローラ１２４と、メモリカードインターフェイス１５４とを含む。
【００６８】
外部通信インターフェイス１０１は、各種の有線／無線ネットワークを通じたデータの遣り取りを制御する。
【００６９】
プロセッサ１０２は、フラッシュメモリなどの不揮発性メモリ１０８に格納された制御プログラム１１２を読み出して、メインメモリ１０６に展開して実行することで、サーボドライバ３２４などに対する任意の制御を実現する。制御プログラム１１２は、コントローラ１００を制御するための各種プログラムを含む。一例として、制御プログラム１１２は、システムプログラム１０９、ユーザプログラム１１０、監視プログラム１１１などを含む。システムプログラム１０９は、データの入出力処理や実行タイミング制御などの、コントローラ１００の基本的な機能を提供するための命令コードを含む。ユーザプログラム１１０は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム１１０Ａおよびモーション制御を実行するためのモーションプログラム１１０Ｂとを含む。監視プログラム１１１は、上述の警告処理を実現するための命令コードを含む。制御プログラム１１２は、たとえば、ラダー言語やＳＴ（Structured Text）言語で記述されているＰＬＣプログラムである。
【００７０】
チップセット１０４は、各コンポーネントを制御することで、コントローラ１００全体としての処理を実現する。
【００７１】
内部バスコントローラ１２２は、コントローラ１００と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、リモートＩＯ装置３１０が接続されている。
【００７２】
フィールドバスコントローラ１２４は、コントローラ１００とフィールドバスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、サーボドライバ３２４が接続されている。サーボドライバ３２４は、コントローラ１００からの指令に従ってサーボモータを制御する。これにより、サーボモータに接続される各種駆動機器（たとえば、アームロボット３２５など）を駆動する。
【００７３】
内部バスコントローラ１２２およびフィールドバスコントローラ１２４は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータ（測定値を含む）を取得することができる。また、内部バスコントローラ１２２および／またはフィールドバスコントローラ１２４は、サーボドライバ３２４との間でデータを遣り取りするためのインターフェイスとしても機能する。
【００７４】
メモリカードインターフェイス１５４は、外部記憶媒体の一例であるメモリカード１５５（たとえば、ＳＤカード）を着脱可能に構成されている。コントローラ１００は、メモリカードインターフェイス１５４を介して、メモリカード１５５に対するデータの読み書きを行う。
【００７５】
＜Ｆ．コントローラ１００の機能構成＞
図６を参照して、コントローラ１００の機能について説明する。図６は、コントローラ１００の機能構成の一例を示す図である。
【００７６】
コントローラ１００は、外部通信インターフェイス１０１と、プログラム実行部１０３と、不揮発性メモリ１０８と、リソースマネージャ１３０と、ツールインターフェイス１３５と、ＤＢ機能を有するアプリケーション１３７と、ＯＰＣ−ＵＡ（Object Linking and Embedding for Process Control Unified Architecture）サーバ１３８と、ログ機能１４０と、バッファ１５２と、メモリカードインターフェイス１５４と、アラーム制御部１５９と、警告部１６０とを含む。
【００７７】
外部通信インターフェイス１０１は、外部機器２００と通信を行う。外部機器２００は、たとえば、サポート装置２００Ａ、表示器２００Ｃ、ＯＰＣ−ＵＡクライアント２００Ｄなどである。
【００７８】
サポート装置２００Ａには、ユーザプログラム１１０（図５参照）の開発ツールである「Ｓｙｓｍａｃ  Ｓｔｕｄｉｏ」がインストールされている。ツールインターフェイス１３５は、当該開発ツール上で設計された制御プログラム１１２を、外部通信インターフェイス１０１を介して受信する。また、ツールインターフェイス１３５は、コントローラ１００のエラー情報やログデータを外部通信インターフェイス１０１を介してサポート装置２００Ａに送信する。
【００７９】
外部通信インターフェイス１０１は、ＯＰＵ−ＵＡの通信規格に従ってＯＰＣ−ＵＡクライアント２００Ｄと通信を行う。ＯＰＣ−ＵＡとは、ベンダやＯＳ（Operating System）の種類などに依存することなくデータ交換を実現することができる通信規格である。ＯＰＣ−ＵＡに従った通信を実現するためには、コントローラ１００をＯＰＣ−ＵＡサーバ１３８として機能させるとともに、外部機器２００をＯＰＣ−ＵＡクライアント２００Ｄとして機能させる必要がある。
【００８０】
プログラム実行部１０３は、制御プログラム１１２の実行命令を受け付けたことに基づいて、制御プログラム１１２（図５参照）の実行に必要な各種データをメインメモリ１０６（図５参照）に展開し、制御プログラム１１２に従って各種駆動機器を制御する。
【００８１】
表示器２００Ｃは、外部通信インターフェイス１０１を介して、コントローラ１００と通信を行う。表示器２００Ｃは、リソースマネージャ１３０で管理される変数にアクセスし、当該変数などをグラフィカルに表示する。ここでいう「変数」とは、コントローラ１００や駆動機器３００の状態を表わすデータのことをいう。
【００８２】
リソースマネージャ１３０は、コントローラ１００内の各変数の実体を保持しており、各変数の管理や、各変数の読み書きなどを担う。一例として、リソースマネージャ１３０は、変数の読取命令（取得命令）を受けた場合には、読取対象の変数にアクセスし、当該変数を読取命令の発信元に送る。また、リソースマネージャ１３０は、変数の書込命令を受けた場合には、書込対象の変数にアクセスし、当該変数を指定された値に書き換える。リソースマネージャ１３０によって管理される変数は、制御プログラム１１２内の変数、バッファ１５２の状態を表わすシステム変数１３１などを含む。
【００８３】
ログ機能１４０は、入力インターフェイス１４２と、管理部１４４と、メモリカード監視部１５７とを含む。入力インターフェイス１４２は、保存対象のログデータを受け付ける。保存対象のログデータは、ＤＢ機能を備えたアプリケーション１３７におけるログデータや、ＯＰＣ−ＵＡサーバ１３８におけるログデータなどを含む。入力インターフェイス１４２が受け付けた保存対象のログデータは、管理部１４４に出力される。
【００８４】
管理部１４４は、コントローラ１００のプロセッサ１０２によって実現される機能である。管理部１４４は、バッファ１５２を管理する。より具体的には、管理部１４４は、入力インターフェイス１４２が受けたログデータをバッファ１５２に書き込んだり、メモリカード１５５に書き込んだログデータを削除したりする。管理部１４４は、書込部１５６と、バッファ監視部１５８とを含む。書込部１５６およびバッファ監視部１５８の機能は上述の通りであるので、その説明については繰り返さない。
【００８５】
メモリカード監視部１５７は、コントローラ１００のプロセッサ１０２によって実現される機能である。メモリカード監視部１５７は、メモリカードインターフェイス１５４に対するメモリカード１５５の装着状態を監視する。監視対象の装着状態は、たとえば、メモリカード１５５がメモリカードインターフェイス１５４に装着されたこと、メモリカード１５５がメモリカードインターフェイス１５４から抜き取られたことなどを含む。メモリカード監視部１５７によって検知された装着状態は、管理部１４４に出力される。
【００８６】
アラーム制御部１５９は、警告部１６０による警告の出力態様を制御する。警告部１６０は、ＬＥＤ１６２と、スピーカ１６４とを含む。アラーム制御部１５９は、バッファ１５２の空き容量が所定値を下回ったことに基づいて、警告部１６０に警告を出力させる。警告部１６０による警告の出力態様は上述の通りであるので、その説明については繰り返さない。
【００８７】
＜Ｇ．全体フロー＞
図７〜図９を参照して、コントローラ１００の制御構造について説明する。図７は、保存対象として受け付けたログデータをバッファ１５２（図１参照）に書き込む処理を表わすフローチャートを示す。図８は、バッファ１５２から読み出されたログデータをメモリカード１５５に書き込む処理を表わすフローチャートを示す。図９は、警告処理を表わすフローチャートを示す。
【００８８】
図７に示される処理、図８に示される処理、および図９に示される処理は、それぞれ並列に実行される。これらの処理は、コントローラ１００のプロセッサ１０２（図５参照）が上述の監視プログラム１１１（図５参照）を実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【００８９】
以下では、図７〜図９を参照して、各図に示される処理フローについて順に説明する。
（Ｇ１．バッファへの書き込み処理）
まず、図７を参照して、保存対象として受け付けたログデータをバッファ１５２に書き込む処理フローについて説明する。
【００９０】
ステップＳ１１０において、プロセッサ１０２は、保存対象のログデータを受け付けたか否かを判断する。典型的には、プロセッサ１０２は、予め定められた周期ごとに保存対象のログデータを受け付ける。プロセッサ１０２は、保存対象のログデータを受け付けたと判断した場合（ステップＳ１１０においてＹＥＳ）、制御をステップＳ１１２に切り替える。そうでない場合には（ステップＳ１１０においてＮＯ）、プロセッサ１０２は、ステップＳ１１０の処理を再び実行する。
【００９１】
ステップＳ１１２において、プロセッサ１０２は、ログデータをバッファ１５２に書き込む。典型的には、ログデータは、予め定められた周期ごとにバッファ１５２に書き込まれる。
【００９２】
（Ｇ２．メモリカードへの書き込み処理）
次に、図８を参照して、バッファ１５２から読み出されたログデータをメモリカード１５５に書き込む処理フローについて説明する。
【００９３】
ステップＳ１２０において、プロセッサ１０２は、上述のメモリカード監視部１５７（図６参照）として、メモリカード１５５がコントローラ１００に接続されているか否かを判断する。プロセッサ１０２は、メモリカード１５５がコントローラ１００に接続されていると判断した場合（ステップＳ１２０においてＹＥＳ）、制御をステップＳ１２２に切り替える。そうでない場合には（ステップＳ１２０においてＮＯ）、プロセッサ１０２は、制御をステップＳ１２４に切り替える。
【００９４】
ステップＳ１２２において、プロセッサ１０２は、上述の書込部１５６（図６参照）として、バッファ１５２からログデータを読み出し、当該ログデータをメモリカード１５５に書き込む。
【００９５】
ステップＳ１２４において、プロセッサ１０２は、上述の書込部１５６として、バッファ１５２からログデータを読み出し、当該ログデータを内部記憶装置１６２（図４参照）に書き込む。
【００９６】
ステップＳ１３０において、プロセッサ１０２は、上述のメモリカード監視部１５７として、メモリカード１５５がコントローラ１００に新たに接続されたか否かを判断する。すなわち、プロセッサ１０２は、メモリカード１５５がコントローラ１００から抜かれている状態から、メモリカード１５５がコントローラ１００に接続された状態になったか否かを判断する。プロセッサ１０２は、メモリカード１５５がコントローラ１００に新たに接続されたと判断した場合（ステップＳ１３０においてＹＥＳ）、制御をステップＳ１３２に切り替える。そうでない場合には（ステップＳ１３０においてＮＯ）、プロセッサ１０２は、制御をステップＳ１２０に戻す。
【００９７】
（Ｇ３．警告処理）
次に、図９を参照して、コントローラ１００による警告処理フローについて説明する。
【００９８】
ステップＳ１５０において、プロセッサ１０２は、上述のバッファ監視部１５８（図６参照）として、バッファ１５２の空き容量を取得し、当該空き容量が所定の閾値ｔｈ（図３参照）を下回ったか否かを判断する。プロセッサ１０２は、バッファ１５２の空き容量が所定の閾値ｔｈを下回ったと判断した場合（ステップＳ１５０においてＹＥＳ）、制御をステップＳ１５２に切り替える。そうでない場合には（ステップＳ１５０においてＮＯ）、プロセッサ１０２は、ステップＳ１５０の処理を再び実行する。
【００９９】
ステップＳ１５２において、プロセッサ１０２は、上述のアラーム制御部１５９（図６参照）として、バッファ１５２の空き容量に応じた出力態様で警告部１６０に警告を出力させる。このことに基づいて、警告部１６０は、警告を出力する。警告部１６０による警告の出力態様は上述の通りであるので、その説明については繰り返さない。
【０１００】
＜Ｈ．まとめ＞
以上のようにして、コントローラ１００は、保存対象のログデータをバッファ１５２に順次書き込む。これと並行して、コントローラ１００は、メモリカード１５５がメモリカードインターフェイス１５４に接続されている間、バッファ１５２からログデータを順次読み出し、当該ログデータをメモリカード１５５に順次書き込む。コントローラ１００は、バッファ１５２の空き容量を定期的に監視し、当該空き容量が所定値よりも少なくなったことに基づいて、警告を出力する。
【０１０１】
バッファ１５２の空き容量が無くなる前に警告が出力されることで、コントローラ１００は、バッファ１５２の空き容量が無くなりそうなことをユーザに報知することができる。その結果、ユーザは、バッファ１５２の空き容量が無くなる前に新しいメモリカードを準備することができ、メモリカード１５５を新しいものに迅速に交換することができる。結果として、ログデータのロスが防がれる。
【０１０２】
＜Ｉ．付記＞
以上のように、本実施形態は以下のような開示を含む。
【０１０３】
［構成１］
順次生成されるログデータをバッファリングするためのバッファ（１５２）と、
外部記憶装置（１５５）が接続され得るインターフェイス部（１５４）と、
前記インターフェイス部（１５４）に前記外部記憶装置（１５５）が接続されている間、前記バッファ（１５２）にバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置（１５５）に順次書き込むための書込部（１５６）と、
前記バッファ（１５２）の空き容量を監視するための監視部（１５８）と、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するための警告部（１６０）とを備える、制御装置。
【０１０４】
［構成２］
前記警告部（１６０）は、前記空き容量が少なくなるにつれて前記警告の出力態様を強くする、構成１に記載の制御装置。
【０１０５】
［構成３］
前記制御装置（１００）は、内部記憶装置（１６２）をさらに備え、
前記書込部（１５６）は、前記インターフェイス部（１５４）に前記外部記憶装置（１５５）が接続されていない間、前記バッファ（１５２）に格納されているログデータを順次読み出し、当該ログデータを前記内部記憶装置（１６２）にバッファリングする、構成１または２に記載の制御装置。
【０１０６】
［構成４］
前記書込部（１５６）は、前記インターフェイス部（１５４）に新たな外部記憶装置（１５５）が接続されたことに基づいて、前記内部記憶装置（１６２）にバッファリングされた前記ログデータを当該新たな外部記憶装置（１５５）に書き込む、構成３に記載の制御装置。
【０１０７】
［構成５］
前記警告は、光による警告、音による警告、および通知による警告の少なくとも１つを含む、構成１〜４のいずれか１項に記載の制御装置。
【０１０８】
［構成６］
制御装置（１００）に備えられるバッファ（１５２）の監視方法であって、
順次生成されるログデータを前記制御装置（１００）のバッファ（１５２）にバッファリングするステップ（Ｓ１１２）と、
前記制御装置（１００）のインターフェイス部（１５４）に外部記憶装置（１５５）が接続されている間、前記バッファ（１５２）にバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置（１５５）に順次書き込むステップ（Ｓ１２２）と、
前記バッファ（１５２）の空き容量を監視するステップ（Ｓ１５０）と、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップ（Ｓ１５２）とを備える、監視方法。
【０１０９】
［構成７］
制御装置（１００）に備えられるバッファ（１５２）の監視プログラムであって、
前記監視プログラムは、前記制御装置（１００）に、
順次生成されるログデータを前記制御装置（１００）のバッファ（１５２）にバッファリングするステップ（Ｓ１１２）と、
前記制御装置（１００）のインターフェイス部（１５４）に外部記憶装置（１５５）が接続されている間、前記バッファ（１５２）にバッファリングされたログデータを順次読み出し、当該ログデータを前記外部記憶装置（１５５）に順次書き込むステップ（Ｓ１２２）と、
前記バッファ（１５２）の空き容量を監視するステップ（Ｓ１５０）と、
前記空き容量が所定値よりも少なくなったことに基づいて、警告を出力するステップ（Ｓ１５２）とを実行させる、監視プログラム。
【０１１０】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１１１】
１  ＦＡシステム、１００  コントローラ、１０１  外部通信インターフェイス、１０２  プロセッサ、１０３  プログラム実行部、１０４  チップセット、１０６  メインメモリ、１０８  不揮発性メモリ、１０９  システムプログラム、１１０  ユーザプログラム、１１０Ａ  シーケンスプログラム、１１０Ｂ  モーションプログラム、１１１  監視プログラム、１１２  制御プログラム、１２２  内部バスコントローラ、１２４  フィールドバスコントローラ、１３０  リソースマネージャ、１３１  システム変数、１３５  ツールインターフェイス、１３７  アプリケーション、１３８  ＯＰＣ−ＵＡサーバ、１４０  ログ機能、１４２  入力インターフェイス、１４４  管理部、１５２  バッファ、１５４  メモリカードインターフェイス、１５５，１５５Ａ  メモリカード、１５６  書込部、１５７  メモリカード監視部、１５８  バッファ監視部、１５９  アラーム制御部、１６０  警告部、１６２  内部記憶装置、１６４  スピーカ、２００  外部機器、２００Ａ  サポート装置、２００Ｂ  サーバ装置、２００Ｃ  表示器、２００Ｄ  ＯＰＣ−ＵＡクライアント、３００  駆動機器、３０５  ハブ、３１０，３２０  リモートＩＯ装置、３１０Ｐ１，３１０Ｐ２，３２０Ｐ１，３２０Ｐ２  通信ポート、３１５  画像センサ、３２４  サーボドライバ、３２５  アームロボット。
【図１】
2019135588.tif 000003
【図２】
2019135588.tif 000004
【図３】
2019135588.tif 000005
【図４】
2019135588.tif 000006
【図５】
2019135588.tif 000007
【図６】
2019135588.tif 000008
【図７】
2019135588.tif 000009
【図８】
2019135588.tif 000010
【図９】
2019135588.tif 000011