(57)【要約】  コントローラ１０は、制御装置１４と、不揮発性メモリ１８と、揮発性メモリ１６とを備えている。制御装置１０は、処理周期毎に、予め設定された処理を実行する処理実行手段と、処理周期において、処理実行手段が処理を実行することで揮発性メモリ１６に格納されている非圧縮データを圧縮するデータ圧縮手段と、外部から入力される電源ＯＦＦ予告信号を検出すると、揮発性メモリ１６に格納され、かつ、データ圧縮手段により圧縮されていない非圧縮データと、データ圧縮手段により圧縮された圧縮データとを不揮発性メモリ１８に格納するデータ退避手段と、を有している。
2016051557.tif 000002
【特許請求の範囲】
【請求項１】
制御装置と、
不揮発性メモリと、
揮発性メモリと、を備えており、
前記制御装置は、
処理周期毎に、予め設定された処理を実行する処理実行手段と、
前記処理周期において、前記処理実行手段が処理を実行することで前記揮発性メモリに格納されている非圧縮データを圧縮するデータ圧縮手段と、
外部から入力される電源ＯＦＦ予告信号を検出すると、前記揮発性メモリに格納され、かつ、前記データ圧縮手段により圧縮されていない非圧縮データと、前記データ圧縮手段により圧縮された圧縮データとを前記不揮発性メモリに格納するデータ退避手段と、を有している、コントローラ。
【請求項２】
前記データ圧縮手段は、前記処理周期のうち前記処理実行手段が処理を実行していない空き時間において、前記揮発性メモリに格納されている非圧縮データを圧縮する、請求項１に記載のコントローラ。
【請求項３】
前記処理実行手段は、前記処理周期において、定期的に行われる定期処理と、特定条件が成立したときに行われる不定期処理と、を実行し、
前記データ圧縮手段は、前記不定期処理が実行されないことによる空き時間を利用して非圧縮データを圧縮する、請求項２に記載のコントローラ。
【請求項４】
前記制御装置は、
前記電源ＯＦＦ予告信号を検出したときに、電源がＯＦＦするまでの電源ＯＦＦ時間を算出する算出手段と、
前記算出手段により算出された電源ＯＦＦ時間に応じて、前記データ退避手段により前記不揮発性メモリに退避される前記圧縮データのデータ量を調整する調整手段を有している、請求項１〜３のいずれか一項に記載のコントローラ。
【請求項５】
前記揮発性メモリは、前記データ圧縮手段により圧縮された圧縮データを記憶する複数の圧縮データ記憶領域と、前記圧縮データが前記複数の圧縮データ記憶領域のどこに記憶されたかを特定する管理情報を記憶する管理情報記憶領域を有しており、
前記データ圧縮手段は、前記揮発性メモリに格納されている非圧縮データを圧縮すると、その圧縮データを前記複数の圧縮データ記憶領域のいずれかに記憶すると共に、その圧縮データの管理情報を前記管理情報記憶領域に記憶する、請求項１〜４のいずれかに記載したコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示する技術は、コントローラに関し、詳しくは、電源ＯＦＦ時にコントローラの揮発性メモリに記憶されているデータを不揮発性メモリに退避する技術に関する。
【背景技術】
【０００２】
ＲＡＭ（Random−Access  Memory）等の揮発性メモリを備えるコントローラでは、電源ＯＮ中に揮発性メモリに格納されたデータが、停電や異常等による電源ＯＦＦ時に不揮発性メモリに書き込まれ、退避されることがある。電源ＯＦＦ時にはコントローラへの電源供給もＯＦＦされるため、コントローラは、限られた時間の中で不揮発性メモリへのデータ退避を行う必要がある。このため、不揮発性メモリへのデータ退避を短時間で行うための方法が提案されている（例えば、特許文献１）。【０００３】
特許文献１では、揮発性メモリに格納されているデータを不揮発性メモリへ書き込む際に、まず、揮発性メモリに格納されているデータを圧縮データに変換する。その後、変換した圧縮データのみを不揮発性メモリに書き込んでいる。データを圧縮することによって、データ量を小さくし、揮発性メモリへの書き込み時間を低減している。これによって、データ退避に要する時間を短くしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１９４６０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、電源ＯＦＦ時に、揮発性メモリに格納されているデータを圧縮データへ変換し、その変換した圧縮データを不揮発性メモリに格納する。そのため、不揮発性メモリに退避するデータ量が減ることでデータ書き込み時間は減少できるものの、揮発性メモリに記憶されているデータを圧縮データへ変換するための処理が必要となる。その結果、電源ＯＦＦ時の処理の短時間化が十分ではないという問題がある。【０００６】
本明細書は、電源ＯＦＦ時に揮発性メモリに記憶されているデータを不揮発性メモリに退避する処理を短時間で行うことができるコントローラを開示する。
【課題を解決するための手段】
【０００７】
本明細書に開示するコントローラは、制御装置と、不揮発性メモリと、揮発性メモリと、を備えている。制御装置は、処理周期毎に、予め設定された処理を実行する処理実行手段と、処理周期において、処理実行手段が処理を実行することで前記揮発性メモリに格納されている非圧縮データを圧縮するデータ圧縮手段を有している。また、制御装置は、外部から入力される電源ＯＦＦ予告信号を検出すると、揮発性メモリに格納され、かつ、データ圧縮手段により圧縮されていない非圧縮データと、データ圧縮手段により圧縮された圧縮データとを不揮発性メモリに格納するデータ退避手段を有している。【０００８】
上記のコントローラでは、制御装置の処理周期において、揮発性メモリに格納されている非圧縮データを圧縮データに圧縮している。そのため、制御装置は、外部から入力される電源ＯＦＦ予告信号検出後に、データ退避手段により、非圧縮データを圧縮データに圧縮する必要がない。データ退避手段では、データ圧縮手段により圧縮されていない圧縮データと、データ圧縮手段により圧縮されたデータを退避するだけとなり、データ退避に要する時間を短くすることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施例に係るサーボコントローラのブロック図である。
【図２】図１のＲＡＭのメモリ領域を説明する概念図である。
【図３】サーボコントローラの通常時の処理を説明するフローチャートである。
【図４】サーボコントローラの電源ＯＦＦ予告時の処理を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に記載する技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。
【００１１】
（特徴１）データ圧縮手段は、処理周期のうち処理実行手段が処理を実行していない空き時間において、揮発性メモリに格納されている非圧縮データを圧縮してもよい。このような構成によると、非圧縮データのデータ圧縮処理のためだけに、処理周期（１周期の時間間隔）が長くなることを抑制することができる。
【００１２】
（特徴２）処理実行手段は、処理周期において、定期的に行われる定期処理と、特定条件が成立した時に行われる不定期処理とを実行してもよい。データ圧縮手段は、不定期処理が実行されないことによる空き時間を利用して、非圧縮データを圧縮してもよい。不定期処理は、特定条件が成立したときにのみ実行され、常時実行される処理ではない。上記の構成では、制御装置の処理周期（１周期の時間）は、定期処理と不定期処理とを１周期内で実行できるように設定される。そのため、ある処理周期において不定期処理が実行されないときは、その処理周期において制御装置は不定期処理の代わりにデータ圧縮処理を実行することが可能となる。このため、データ圧縮手段によるデータ圧縮処理のために、処理周期が長くなることが抑制される。
【００１３】
（特徴３）制御装置は、電源ＯＦＦ予告信号を検出したときに、電源がＯＦＦするまでの電源ＯＦＦ時間を算出する算出手段と、算出手段により算出された電源ＯＦＦ時間に応じて、データ退避手段により不揮発性メモリに退避される非圧縮データと圧縮データのデータ量を調整する調整手段を有していてもよい。上記の構成によると、電源ＯＦＦするまでの時間（予測時間）に応じて不揮発性メモリに退避されるデータ量を調整するため、データ退避処理の途中で電源供給が停止するという事態を防止することができる。
【００１４】
（特徴４）揮発性メモリは、データ圧縮手段により圧縮された圧縮データを記憶する複数の圧縮データ記憶領域と、圧縮データが複数の圧縮データ記憶領域のどこに記憶されたかを特定する管理情報を記憶する管理情報記憶領域を有していてもよい。データ圧縮手段は、揮発性メモリに格納されている非圧縮データを格納すると、その圧縮データを複数のデータ記憶領域のいずれかに記憶するとともに、その圧縮データの管理情報を管理情報記憶領域に記憶してもよい。処理周期のうち空き時間を利用してデータ圧縮を行うと、データ圧縮手段によって生成される圧縮データの容量が一定とはならない。上記の構成によると、圧縮データの容量が変化しても、それに応じて管理情報を記憶するため、作成される圧縮データを連続データとして処理することができる。
【００１５】
（実施例）  以下、本実施例に係るサーボコントローラ１０について説明する。サーボコントローラ１０は、電子部品を基板に実装する実装機に装備され、当該実装機に装備されるサーボモータ（図示しない）を制御する。図１に示すように、サーボコントローラ１０は、上位制御装置２に接続されている。サーボコントローラ１０は、上位制御装置２の指示に基づいてサーボモータを制御することで、実装機の動作を制御する。
【００１６】
サーボコントローラ１０は、電源監視回路１２と、ＣＰＵ（Central Processing Unit）１４と、ＲＡＭ（Random Access Memory）１６と、ＣＦ（Compact Flash）１８と、ＩＣＨ（I/O Controller Hub）２０と、を備えている。
【００１７】
電源監視回路１２は、ＣＰＵ１４に接続されている。電源監視回路１２は、公知の回路であり、サーボコントローラ１０に供給される電源電圧を監視する。電源監視回路１２は、サーボコントローラ１０に供給される電源電圧が所定値を下回ったときに、電源ＯＦＦ予告信号をＣＰＵ１４に出力する。なお、本実施例では、サーボコントローラ１０に電源監視回路１２を設けたが、このような構成には限られない。例えば、電源監視回路を上位制御装置２に設け、上位制御装置２からサーボコントローラに電源ＯＦＦ予告信号を出力するようにしてもよい。
【００１８】
ＣＰＵ１４は、サーボコントローラ１０の動作を制御するプロセッサである。ＣＰＵ１４は、ＲＡＭ１６に接続されると共に、ＩＣＨ２０を介してＣＦ１８に接続されている。ＣＰＵ１４は、予め記憶されたプログラムを実行し、上位制御装置２からの指示に基づいてサーボモータを制御する。ＣＰＵ１４がプログラムを実行することで、ＣＰＵ１４は、処理実行手段、データ圧縮手段、データ退避手段、算出手段、調整手段として機能する。ＣＰＵ１４による処理については、後で詳述する。
【００１９】
ＲＡＭ１６は、揮発性メモリであり、ＣＰＵ１４に接続されている。ＲＡＭ１６は、ＣＰＵ１４がプログラムを実行することで生成される各種データを格納する。ＲＡＭ１６は揮発性メモリであるため、外部から電源が供給されている間だけ、格納されているデータを保持する。このため、外部からの電源供給が停止すると、格納されているデータは消失する。ＲＡＭ１６に格納されるデータには、ＣＰＵ１４が実行する処理の履歴を示すログ情報と、そのログ情報を圧縮処理することで得られる圧縮ログ情報と、圧縮ログ情報を管理するための管理情報が含まれる。具体的には、図２に示すようにＲＡＭ１６には、データ領域２０２と、圧縮データ領域２０４と、管理情報記憶領域２０６が設けられる。
【００２０】
データ領域２０２は、リングバッファとして構成されており、４個のデータ記憶領域２０２ａ〜２０２ｄで構成されている。各データ記憶領域２０２ａ〜２０２ｄには、ログ情報（非圧縮データ）が記憶される。各データ記憶領域２０２ａ〜２０２ｄの容量は同一に設定されている。このため、各データ記憶領域２０２ａ〜２０２ｄに記憶されるログ情報の容量も同一となる。ログ情報が格納される順番は、データ記憶領域２０２ａからデータ記憶領域２０２ｄに順に格納され、データ記憶領域２０２ｄにログ情報が格納されると、再度、データ記憶領域２０２ａから順に格納される。
【００２１】
圧縮データ領域２０４は、データ領域２０２に格納されたログ情報を圧縮して得られる圧縮ログ情報ファイルが格納される。後で詳述するように、データ領域２０２に格納されるログ情報は、データ記憶領域２０２ａ〜２０２ｄ毎に圧縮されて圧縮データ領域２０４に格納される。すなわち、圧縮データ領域２０４は、データ領域２０２の４個のデータ記憶領域２０２ａ〜２０２ｄのそれぞれに対応した圧縮ログ情報ファイル２０４ａ〜２０４ｄを記憶する。具体的には、圧縮ログ情報ファイル２０４ａはデータ記憶領域２０２ａに、圧縮ログ情報ファイル２０４ｂはデータ記憶領域２０２ｂに、圧縮ログ情報ファイル２０４ｃはデータ記憶領域２０２ｃに、圧縮ログ情報ファイル２０４ｄはデータ記憶領域２０２ｄに対応している。各圧縮ログ情報ファイル２０４ａ〜２０４ｄの容量は、圧縮したログ情報（非圧縮データ）の内容によって異なる。このため、図２に示すように、圧縮ログ情報ファイル２０４ａ，２０４ｂ，２０４ｄの容量は、それぞれ相違している。
【００２２】
管理情報記憶領域２０６は、データ領域２０２の現在のデータ書き込み先（ログ情報の書き込み先）と、圧縮データ領域２０４に格納される圧縮ログ情報ファイル２０４ａ〜２０４ｄのそれぞれの書き込み先と容量が格納される。すなわち、ＣＰＵ１４が処理を行うことでログ情報は順次生成され、そのログ情報はデータ領域２０２に順次格納される。このため、生成されるログ情報の書き込み先を管理情報記憶領域２０６に記憶・更新することで、生成されるログ情報がデータ領域２０２の正しいアドレスに格納される。また、上述したように、圧縮データ領域２０４に格納される圧縮ログ情報ファイル２０４ａ〜２０４ｄの容量は、圧縮したログ情報の内容によって相違する。このため、複数の圧縮ログ情報ファイル２０４ａ〜２０４ｄを圧縮データ領域２０４に連続データとして区別することなく格納すると、圧縮ログ情報ファイル２０４ａ〜２０４ｄ毎の境界が分からなくなってしまう。圧縮ログ情報ファイル２０４ａ〜２０４ｄ毎の境界が分からないと、圧縮ログ情報ファイル２０４ａ〜２０４ｄを解凍することができず、ログ情報の復元ができない。そのため、管理情報記憶領域２０６に各圧縮ログ情報ファイル２０４ａ〜２０４ｄの書き込み先と容量を記憶することで、各圧縮ログ情報ファイル２０４ａ〜２０４ｄの境界を特定可能としている。
【００２３】
ＣＦ１８は、不揮発性メモリであり、ＩＣＨ２０を介してＣＰＵ１４に接続されている。後述するように、ＣＦ１８には、電源遮断時に、ＲＡＭ１６のデータ領域２０２に格納されているログ情報（非圧縮データ）と、圧縮データ領域２０４に格納されている圧縮ログ情報（圧縮データ）と、管理情報記憶領域２０６に格納されている管理情報が格納される。ＣＦ１８は不揮発性メモリであるため、外部からの電源が遮断された後も、格納されているデータを保持することができる。このため、電源遮断時にＣＦ１８に退避したログ情報を用いて、電源回復後に異常解析等が可能となる。
【００２４】
次に、図３，４を参照して、ＣＰＵ１４が行う処理について説明する。ＣＰＵ１４は、サーボコントローラ１０への電源供給が正常に行われている間は、予め定められた処理周期（例えば、２５０μｓ）で、図３に示す通常時処理を実行する。一方、電源監視回路１２から電源ＯＦＦ予告信号が入力されると、ＣＰＵ１４は、図４に示す電源ＯＦＦ予告時処理（電源ＯＦＦ予告信号をトリガーとする割り込み処理）を実行する。以下、図３に示す通常時処理より説明する。
【００２５】
図３に示すように、ＣＰＵ１４は、まず、定期処理を行う（Ｓ１０）。定期処理は、サーボモータを駆動するための処理（サーボ制御のための処理）であり、各処理周期において必ず実行される。定期処理においてＣＰＵ１４は、サーボモータの現在値と目標値との偏差からサーボモータのトルク指令値を算出し、そのトルク指令値をサーボモータに出力する処理を行う。なお、サーボモータの目標値（例えば、目標位置）は、上位制御装置２よりサーボコントローラ１０に入力される。また、ＣＰＵ１４は、定期処理を行うことで生成されるログ情報（非圧縮データ）を、ＲＡＭ１４のデータ領域２０２に格納する。具体的には、管理情報記憶領域２０６に記憶されている現在の書き込み先に、生成したログ情報（非圧縮データ）を格納する。また、ログ情報を格納すると、管理情報記憶領域２０６に記憶されている現在の書き込み先を更新する。
【００２６】
次に、ＣＰＵ１４は、不定期処理を行う必要があるか否かを判断する（Ｓ１２）。具体的には、ＣＰＵ１４は上位制御装置２と通信を行う必要があるか否かにより、不定期処理の要否を判断する。例えば、上位制御装置２より指示（目標値等）が入力される場合や、上位制御装置２にサーボコントローラ１０の状態（事象）を通知する場合には、不定期処理を行う必要があると判断する。不定期処理を行う必要がない場合（Ｓ１２でＮＯ）は、Ｓ１６に進む。一方、不定期処理を行う必要がある場合（Ｓ１２でＹＥＳ）は、ＣＰＵ１４は、Ｓ１４に進んで不定期処理を行う。したがって、Ｓ１４の不定期処理は、Ｓ１２の特定の条件が成立した時にのみ行われ、常時実行される処理ではない。不定期処理においてＣＰＵ１４は、上位制御装置２からの指示（目標値等）を受信し、あるいは、サーボコントローラ１０で生じた事象を上位制御装置２に送信する。なお、不定期処理を行うことで生じるログ情報もＲＡＭ１４のデータ領域２０２に格納される。また、ログ情報がデータ領域２０２に格納されると、それに応じて管理情報記憶領域２０６に記憶されている情報（現在の書き込み先）も更新される。
【００２７】
次に、ＣＰＵ１４は、当該処理周期において、データ領域２０２に格納されているログ情報を圧縮するための処理（後述するＳ２０〜Ｓ２４の処理）を行う時間があるか否かを判断する（Ｓ１６）。すなわち、本実施例のサーボコントローラ１０では、サーボ制御の精度を高めるために処理周期が短く設定され、ＣＰＵ１４が定期処理（Ｓ１０）と不定期処理（Ｓ１４）のみを実施できる程度の時間を処理周期としている。一方、上述したように不定期処理は特定条件下でのみ行われる処理であり、処理周期毎に常に行われる処理ではない。そこで、本実施例では、不定期処理が行われない処理周期において、データ領域２０２に格納されているログ情報を圧縮するための処理（後述するＳ２０〜Ｓ２４の処理）を行うこととしている。このため、Ｓ１６でＣＰＵ１４は、ログ情報を圧縮するための処理を行う時間があるか否か（すなわち、不定期処理を実行しているか否か）を判断する。ログ情報を圧縮するための処理を行う時間がない場合（Ｓ１６でＮＯ）は、Ｓ１８〜２４をスキップして、当該処理周期における処理を終了する。
【００２８】
一方、ログ情報を圧縮するための処理を行う時間がある場合（Ｓ１６でＹＥＳ）は、ＣＰＵ１４は、データ領域２０２に記憶されているログ情報が指定容量に達しているか否かを判断する（Ｓ１８）。上述したように、本実施例では、データ領域２０２に格納されるログ情報は、データ記憶領域２０２ａ〜２０２ｄ毎に圧縮され、圧縮ログ情報ファイル２０４ａ〜２０４ｄとして圧縮データ領域２０４に格納される。すなわち、データ記憶領域２０２ａ〜２０２ｄのいずれかの領域の全体にログ情報が格納されると、その領域のログ情報が圧縮される。したがって、ＣＰＵ１４は、現在書き込み中のデータ記憶領域（２０２ａ〜２０２ｄのいずれかの領域）の全体にログ情報が格納されているか否かを判断する。具体的には、管理情報記憶領域２０６に記憶されている「現在のデータ書き込み先」の情報から、ＣＰＵ１４はログ情報が指定容量に達したか否かを判断する。例えば、図２に示す状態では、ＣＰＵ１４はデータ記憶領域２０２ｃにログ情報を書き込んでおり、現在の書き込み先の情報よりデータ記憶領域２０２ｃの全体にログ情報が格納されていないと判断することができる。このため、ＣＰＵ１４は、ログ情報が指定容量に達していないと判断する。圧縮処理の対象となるログ情報が指定容量に達していない場合（Ｓ１８でＮＯ）は、Ｓ２０〜２４をスキップして、当該処理周期における処理を終了する。
【００２９】
一方、圧縮処理の対象となるログ情報が指定容量に達している場合（Ｓ１８でＹＥＳ）は、ＣＰＵ１４は、圧縮対象となるログ情報（非圧縮データ）を圧縮する（Ｓ２０）。ログ情報を圧縮する方法としては、公知のデータ圧縮方法を用いることができる。これによって、データ記憶領域２０２ａ〜２０２ｄのいずれかに格納されているログ情報（非圧縮データ)が圧縮されて、圧縮ログ情報ファイルとなる。
【００３０】
次に、ＣＰＵ１４は、Ｓ２０の圧縮処理によって得られた圧縮ログ情報ファイル（２０４ａ〜２０４ｄのいずれか）を、ＲＡＭ１６の圧縮データ領域２０４に格納する（Ｓ２２）。次いで、ＣＰＵ１４は、Ｓ２２で格納した圧縮ログ情報ファイルの書き込み先と容量を管理情報記憶領域２０６に格納する（Ｓ２４）。Ｓ２４が終了すると、当該処理周期における処理を終了する。
【００３１】
次に、図４を参照して電源ＯＦＦ予告時処理を説明する。上述したように、電源ＯＦＦ予告時処理は、電源監視回路１２からの電源ＯＦＦ予告信号をトリガーとして開始される。具体的には、電源監視回路１２から出力される電源ＯＦＦ予告信号がＣＰＵ１４に入力されると、ＣＰＵ１４は、まず、図３に示す通常時処理を停止し、その後に、図４に示す電源ＯＦＦ予告時処理を実行する。
【００３２】
図４に示す電源ＯＦＦ予告時処理では、まず、ＣＰＵ１４は、電源がＯＦＦするまでの電源ＯＦＦ時間を算出する（Ｓ３０）。電源ＯＦＦ時間は、例えば、電源監視回路１２で検出される外部電源の電圧値の変化から算出することができる。なお、本実施例では、ＣＰＵ１４が電源ＯＦＦ時間を算出したが、上位制御装置２が電源ＯＦＦ時間を算出し、その算出した電源ＯＦＦ時間をサーボコントローラ１０に入力するようにしてもよい。
【００３３】
次に、ＣＰＵ１４は、Ｓ３０で算出された電源ＯＦＦ時間とＣＦ１８への書き込み速度を用いて、電源がＯＦＦするまでにＣＦ１８への書き込みが完了するデータ容量を算出する（Ｓ３２）。そして、ＣＰＵ１４は、算出したデータ容量となるように、ＲＡＭ１６からＣＦ１８へ退避するデータを選定する。具体的には、データ領域２０２のデータ記憶領域２０２ａ〜２０２ｄのうち、電源ＯＦＦ予告時処理を開始したときにログ情報を書き込んでいたデータ記憶領域のログ情報（非圧縮データ）と、圧縮データ領域２０４に格納されている圧縮ログ情報ファイル２０４ａ〜２０４ｄ（圧縮データ）と、管理情報記憶領域２０６に格納されているデータ（圧縮ログ情報ファイルの書き込み先と容量に関する情報）を選択する。ここで、データ領域２０２のログ情報と管理情報記憶領域２０６のデータは必ず選択されるため、ＣＰＵ１４は、電源ＯＦＦ時間とＣＦ１８への書き込み速度から、ＣＦ１８に退避する圧縮ログ情報ファイルを直近のものより順に選択する。なお、電源ＯＦＦ時間とＣＦ１８への書き込み速度から十分な時間があると判断される場合は、ＣＰＵ１４は、圧縮データ領域２０４に格納されている全ての圧縮ログ情報ファイル２０４ａ〜２０４ｄを選択する。例えば、図２に示す状態で電源ＯＦＦ予告時処理が開始された場合、ＣＰＵ１４は、データ記憶領域２０２ｃに記憶されている非圧縮データ３（ハッチングされた部分）と、圧縮データ領域２０４の圧縮ログ情報ファイル２０４ａ，２０４ｂ，２０４ｄ（ハッチングされた部分）と、管理情報記憶領域２０６のデータを選択する。これによって、ＣＦ１８へのデータ退避中に電源ＯＦＦ予告時処理が中断して、ＣＦ１８に不正ファイルが残存してしまうことが抑制される。
【００３４】
次に、ＣＰＵ１４は、ＲＡＭ１６に格納されているデータのうち、Ｓ３２で選択したデータ（すなわち、ＣＦ１８へ退避するデータ）を読み込む（Ｓ３４）。そして、ＣＰＵ１４は、Ｓ３４で読み込んだデータを、ＩＣＨ２０を介してＣＦ１８に退避する（Ｓ３６）。ＲＡＭ１６からのデータの読み込みと、ＣＦ１８へのデータの書き込みと、を一度にできるデータ量には制限がある。このため、ＣＰＵ１４は、Ｓ３２で選択したデータ（ＣＦ１８に退避するデータ）の全てを、ＣＦ１８へ退避したか否かを判断する（Ｓ３８）。Ｓ３２で選択したデータの全てをＣＦ１８へ退避していない場合（Ｓ３８でＮＯ）は、ＣＰＵ１４は、Ｓ３４に戻って、Ｓ３４からの処理を実行する。一方、Ｓ３２で選択したデータの全てがＣＦ１８へ退避している場合（Ｓ３８でＹＥＳ）は、ＣＰＵ１４は、電源ＯＦＦ予告時処理を終了する。これによって、Ｓ３２で選択したデータの全てがＣＦ１８へ退避される。ＣＦ１８は不揮発性メモリであるため、ＣＦ１８へ退避されたデータは、サーボコントローラ１０への電源供給が遮断されている間も保持される。このため、ＣＦ１８へ退避したログ情報を解析することで、電源遮断時の状況等を解析することができる。
【００３５】
上述の説明から明らかなように、本実施例のサーボコントローラ１０では、通常時処理（図３）において、ＲＡＭ１６に格納されたログ情報を圧縮する処理を行って、圧縮ログ情報ファイル２０４ａ〜２０４ｄを作成している。このため、電源ＯＦＦ予告時処理では、データ記憶領域に格納されている直近のログ情報（非圧縮データ）と、圧縮データ領域２０４に格納されている圧縮ログ情報ファイルと、管理情報記憶領域２０６のデータを退避するだけでよい。退避するデータの容量が少なくされているため、電源ＯＦＦ予告時処理を短時間で行うことができる。また、ＣＦ１８に退避されたデータの一部は圧縮により暗号化されているため、セキュリティ性を向上することができる。
【００３６】
また、電源ＯＦＦ予告時処理を短時間で行うことができるため、データの退避を行う不揮発性メモリに、低速なアクセス速度であるＣＦ１８を用いることができる。ＣＦ１８を用いることで、サーボコントローラ１０の製造コストを低減することができる。また、不揮発性メモリのＣＦ１８でデータ退避を行うことから、バックアップ電源が不要となり、サーボコントローラ１０の基板サイズを小さくすることができる。
【００３７】
また、本実施例のサーボコントローラ１０では、予測される電源ＯＦＦまでの時間に応じて、ＣＦ１８へ退避するデータ量が調整される。仮に、電源ＯＦＦ予告時処理の実行中にサーボコントローラ１０への電源が遮断されると、ＣＦ１８に不正ファイルが作成され、その不正ファイルが残存するという問題が生じる。一方、本実施例では、予測される電源ＯＦＦまでの時間に応じて退避するデータ量が調整されるため、不正ファイルが発生することを未然に防止することができる。
【００３８】
さらに、本実施例のサーボコントローラ１０では、不定期処理（図３のＳ１４）を行わないことによる空き時間を利用して、ＲＡＭ１６のデータ領域２０２に格納されているログ情報を圧縮する処理を行う。このため、ログ情報を圧縮する処理を定常の処理周期に実行する構成としても、圧縮処理を行うことがサーボモータの制御へ影響することはない。
【００３９】
以上、本明細書に開示の技術に係る実施例について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００４０】
（１）例えば、上記の実施例では、データ領域と、そのデータ領域に対応する圧縮データ領域の組み合わせが１組であったが、データ領域と、そのデータ領域に対応する圧縮データ領域との組合せを複数組としてもよい。すなわち、ＲＡＭに複数のデータ領域（各データ領域が複数のデータ記憶領域を有するリングバッファとして構成される）と、それら複数のデータ領域に対応する複数の圧縮データ領域とを設けてもよい。圧縮処理においては、通常、非圧縮データ（ログ情報）の内容によって適切な圧縮率は異なる。データ領域とそれに対応する圧縮データ領域の組合せが１つの場合は、一番圧縮率の低い非圧縮データ（ログ情報）に合わせて、全データを圧縮しなければならない。一方、データ領域と圧縮データ領域の組合せを複数組とすると、複数の圧縮率を設定し、圧縮縮率毎に非圧縮データ（ログ情報）を分類し、分類した非圧縮データ毎にデータ領域と圧縮データ領域の組合せを割り当てることができる。これにより、非圧縮データ（ログ情報）の圧縮率を高くすることができ、データ退避時間をさらに低減することができる。
【００４１】
（２）上記の実施例では、ログ情報を退避する不揮発性メモリにＣＦ１８を用いたが、ＣＦ１８の代わりに、ＨＤＤを用いてログ情報を退避してもよい。このような構成を採用する場合、ＨＤＤはデータ退避専用領域を有していてもよい。なお、ＨＤＤを用いてデータ退避を行う場合、ＨＤＤへのデータ退避処理中に電源がＯＦＦすると、不正ファイルが生成されることがある。その結果、ＨＤＤに不正ファイルが残存し、ＨＤＤの容量を圧迫してしまう可能性がある。したがって、ＨＤＤを用いてデータ退避を行う場合は、ＨＤＤに不正ファイルが存在するか否かを判断し、ＨＤＤから不正ファイルを削除するように構成しておくことが好ましい。例えば、次に説明する方法で不正ファイルの存在を判定し、不正ファイルが存在する場合はその不正ファイルを削除することができる。すなわち、サーボコントローラ１０の立ち上げ時などに、データ退避前後のＨＤＤの使用容量を比較する。ＨＤＤの使用容量の差分が、圧縮前のデータの容量を超えている場合は、不正なファイルがデータ退避専用領域に保存されていると判断する。不正なファイルがデータ退避専用領域に保存されていると判断する場合、ＨＤＤのデータ退避専用領域をフォーマットして、ＨＤＤより不正ファイルを削除する。
【００４２】
（３）さらに、上記の実施例では、通常時処理においてはログ情報の圧縮のみを行っていたが、処理時間に余裕がある場合には、通常処理において圧縮したログ情報を不揮発性メモリに格納する処理を行ってもよい。
【００４３】
（４）上記の実施例では、定期処理、不定期処理、圧縮処理を単一のプログラムで実施していたが、それぞれ異なるプログラムで独立して実施してもよい。その場合、ＣＰＵは、定期処理を実行する定期処理プログラム、不定期処理を実行する不定期処理プログラムと、圧縮処理を実行する圧縮処理プログラムと、それぞれの処理プログラムに処理時間を割り当てるプログラムマネージャと、を備える。プログラムマネージャの割り当てる処理時間の優先度を、定期処理プログラム、不定期処理プログラム、圧縮処理プログラムの順に設定する。このような構成にすることで、プログラムマネージャは、定期処理プログラムに最優先に処理時間を割り当てる。そのため、定期処理プログラムは、必ず処理周期毎に処理が完了することが保証される。不定期処理プログラムは、特定条件が成立しているとき(不定期)に実行される。特定条件が成立しているとき、プログラムマネージャは、不定期処理プログラムへの処理時間の割り当てを優先するため、圧縮処理プログラムに処理時間は割り当てない。一方、特定条件が成立していないとき、プログラムマネージャは、不定期処理プログラムに処理時間は割り当てない。そのため、ＣＰＵの処理時間に空きが発生する。そこで、プログラムマネージャは、圧縮処理プログラムに処理時間を割り当て、圧縮処理プログラムは実施される。このような構成であっても、上記実施例と同等の処理が実現できる。
【００４４】
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００４５】
２・・上位制御装置
１０・・サーボコントローラ
１２・・電源監視回路
１４・・ＣＰＵ
１６・・ＲＡＭ
１８・・ＣＦ
２０・・ＩＣＨ
２０２・・データ領域
２０２ａ−ｄ・・データ記憶領域
２０４・・圧縮データ領域
２０４ａ−ｄ・・圧縮データ記憶領域
２０６・・管理情報記憶領域
【図１】
2016051557.tif 000003
【図２】
2016051557.tif 000004
【図３】
2016051557.tif 000005
【図４】
2016051557.tif 000006
【国際調査報告】
2016051557.tif 000007
2016051557.tif 000008
2016051557.tif 000009
2016051557.tif 000010