(58)【調査した分野】(Int.Cl.,DB名)
前記揮発性メモリは、前記データ圧縮手段により圧縮された圧縮データを記憶する複数の圧縮データ記憶領域と、前記圧縮データが前記複数の圧縮データ記憶領域のどこに記憶されたかを特定する管理情報を記憶する管理情報記憶領域を有しており、
前記データ圧縮手段は、前記揮発性メモリに格納されている非圧縮データを圧縮すると、その圧縮データを前記複数の圧縮データ記憶領域のいずれかに記憶すると共に、その圧縮データの管理情報を前記管理情報記憶領域に記憶する、請求項1〜3のいずれか一項に記載したコントローラ。
【発明を実施するための形態】
【0010】
以下に説明する実施例の主要な特徴を列記しておく。なお、以下に記載する技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。
【0011】
(特徴1)データ圧縮手段は、処理周期のうち処理実行手段が処理を実行していない空き時間において、揮発性メモリに格納されている非圧縮データを圧縮してもよい。このような構成によると、非圧縮データのデータ圧縮処理のためだけに、処理周期(1周期の時間間隔)が長くなることを抑制することができる。
【0012】
(特徴2)処理実行手段は、処理周期において、定期的に行われる定期処理と、特定条件が成立した時に行われる不定期処理とを実行してもよい。データ圧縮手段は、不定期処理が実行されないことによる空き時間を利用して、非圧縮データを圧縮してもよい。不定期処理は、特定条件が成立したときにのみ実行され、常時実行される処理ではない。上記の構成では、制御装置の処理周期(1周期の時間)は、定期処理と不定期処理とを1周期内で実行できるように設定される。そのため、ある処理周期において不定期処理が実行されないときは、その処理周期において制御装置は不定期処理の代わりにデータ圧縮処理を実行することが可能となる。このため、データ圧縮手段によるデータ圧縮処理のために、処理周期が長くなることが抑制される。
【0013】
(特徴3)制御装置は、電源OFF予告信号を検出したときに、電源がOFFするまでの電源OFF時間を算出する算出手段と、算出手段により算出された電源OFF時間に応じて、データ退避手段により不揮発性メモリに退避される非圧縮データと圧縮データのデータ量を調整する調整手段を有していてもよい。上記の構成によると、電源OFFするまでの時間(予測時間)に応じて不揮発性メモリに退避されるデータ量を調整するため、データ退避処理の途中で電源供給が停止するという事態を防止することができる。
【0014】
(特徴4)揮発性メモリは、データ圧縮手段により圧縮された圧縮データを記憶する複数の圧縮データ記憶領域と、圧縮データが複数の圧縮データ記憶領域のどこに記憶されたかを特定する管理情報を記憶する管理情報記憶領域を有していてもよい。データ圧縮手段は、揮発性メモリに格納されている非圧縮データを格納すると、その圧縮データを複数のデータ記憶領域のいずれかに記憶するとともに、その圧縮データの管理情報を管理情報記憶領域に記憶してもよい。処理周期のうち空き時間を利用してデータ圧縮を行うと、データ圧縮手段によって生成される圧縮データの容量が一定とはならない。上記の構成によると、圧縮データの容量が変化しても、それに応じて管理情報を記憶するため、作成される圧縮データを連続データとして処理することができる。
【0015】
(実施例) 以下、本実施例に係るサーボコントローラ10について説明する。サーボコントローラ10は、電子部品を基板に実装する実装機に装備され、当該実装機に装備されるサーボモータ(図示しない)を制御する。
図1に示すように、サーボコントローラ10は、上位制御装置2に接続されている。サーボコントローラ10は、上位制御装置2の指示に基づいてサーボモータを制御することで、実装機の動作を制御する。
【0016】
サーボコントローラ10は、電源監視回路12と、CPU(Central Processing Unit)14と、RAM(Random Access Memory)16と、CF(Compact Flash)18と、ICH(I/O Controller Hub)20と、を備えている。
【0017】
電源監視回路12は、CPU14に接続されている。電源監視回路12は、公知の回路であり、サーボコントローラ10に供給される電源電圧を監視する。電源監視回路12は、サーボコントローラ10に供給される電源電圧が所定値を下回ったときに、電源OFF予告信号をCPU14に出力する。なお、本実施例では、サーボコントローラ10に電源監視回路12を設けたが、このような構成には限られない。例えば、電源監視回路を上位制御装置2に設け、上位制御装置2からサーボコントローラに電源OFF予告信号を出力するようにしてもよい。
【0018】
CPU14は、サーボコントローラ10の動作を制御するプロセッサである。CPU14は、RAM16に接続されると共に、ICH20を介してCF18に接続されている。CPU14は、予め記憶されたプログラムを実行し、上位制御装置2からの指示に基づいてサーボモータを制御する。CPU14がプログラムを実行することで、CPU14は、処理実行手段、データ圧縮手段、データ退避手段、算出手段、調整手段として機能する。CPU14による処理については、後で詳述する。
【0019】
RAM16は、揮発性メモリであり、CPU14に接続されている。RAM16は、CPU14がプログラムを実行することで生成される各種データを格納する。RAM16は揮発性メモリであるため、外部から電源が供給されている間だけ、格納されているデータを保持する。このため、外部からの電源供給が停止すると、格納されているデータは消失する。RAM16に格納されるデータには、CPU14が実行する処理の履歴を示すログ情報と、そのログ情報を圧縮処理することで得られる圧縮ログ情報と、圧縮ログ情報を管理するための管理情報が含まれる。具体的には、
図2に示すようにRAM16には、データ領域202と、圧縮データ領域204と、管理情報記憶領域206が設けられる。
【0020】
データ領域202は、リングバッファとして構成されており、4個のデータ記憶領域202a〜202dで構成されている。各データ記憶領域202a〜202dには、ログ情報(非圧縮データ)が記憶される。各データ記憶領域202a〜202dの容量は同一に設定されている。このため、各データ記憶領域202a〜202dに記憶されるログ情報の容量も同一となる。ログ情報が格納される順番は、データ記憶領域202aからデータ記憶領域202dに順に格納され、データ記憶領域202dにログ情報が格納されると、再度、データ記憶領域202aから順に格納される。
【0021】
圧縮データ領域204は、データ領域202に格納されたログ情報を圧縮して得られる圧縮ログ情報ファイルが格納される。後で詳述するように、データ領域202に格納されるログ情報は、データ記憶領域202a〜202d毎に圧縮されて圧縮データ領域204に格納される。すなわち、圧縮データ領域204は、データ領域202の4個のデータ記憶領域202a〜202dのそれぞれに対応した圧縮ログ情報ファイル204a〜204dを記憶する。具体的には、圧縮ログ情報ファイル204aはデータ記憶領域202aに、圧縮ログ情報ファイル204bはデータ記憶領域202bに、圧縮ログ情報ファイル204cはデータ記憶領域202cに、圧縮ログ情報ファイル204dはデータ記憶領域202dに対応している。各圧縮ログ情報ファイル204a〜204dの容量は、圧縮したログ情報(非圧縮データ)の内容によって異なる。このため、
図2に示すように、圧縮ログ情報ファイル204a,204b,204dの容量は、それぞれ相違している。
【0022】
管理情報記憶領域206は、データ領域202の現在のデータ書き込み先(ログ情報の書き込み先)と、圧縮データ領域204に格納される圧縮ログ情報ファイル204a〜204dのそれぞれの書き込み先と容量が格納される。すなわち、CPU14が処理を行うことでログ情報は順次生成され、そのログ情報はデータ領域202に順次格納される。このため、生成されるログ情報の書き込み先を管理情報記憶領域206に記憶・更新することで、生成されるログ情報がデータ領域202の正しいアドレスに格納される。また、上述したように、圧縮データ領域204に格納される圧縮ログ情報ファイル204a〜204dの容量は、圧縮したログ情報の内容によって相違する。このため、複数の圧縮ログ情報ファイル204a〜204dを圧縮データ領域204に連続データとして区別することなく格納すると、圧縮ログ情報ファイル204a〜204d毎の境界が分からなくなってしまう。圧縮ログ情報ファイル204a〜204d毎の境界が分からないと、圧縮ログ情報ファイル204a〜204dを解凍することができず、ログ情報の復元ができない。そのため、管理情報記憶領域206に各圧縮ログ情報ファイル204a〜204dの書き込み先と容量を記憶することで、各圧縮ログ情報ファイル204a〜204dの境界を特定可能としている。
【0023】
CF18は、不揮発性メモリであり、ICH20を介してCPU14に接続されている。後述するように、CF18には、電源遮断時に、RAM16のデータ領域202に格納されているログ情報(非圧縮データ)と、圧縮データ領域204に格納されている圧縮ログ情報(圧縮データ)と、管理情報記憶領域206に格納されている管理情報が格納される。CF18は不揮発性メモリであるため、外部からの電源が遮断された後も、格納されているデータを保持することができる。このため、電源遮断時にCF18に退避したログ情報を用いて、電源回復後に異常解析等が可能となる。
【0024】
次に、
図3,4を参照して、CPU14が行う処理について説明する。CPU14は、サーボコントローラ10への電源供給が正常に行われている間は、予め定められた処理周期(例えば、250μs)で、
図3に示す通常時処理を実行する。一方、電源監視回路12から電源OFF予告信号が入力されると、CPU14は、
図4に示す電源OFF予告時処理(電源OFF予告信号をトリガーとする割り込み処理)を実行する。以下、
図3に示す通常時処理より説明する。
【0025】
図3に示すように、CPU14は、まず、定期処理を行う(S10)。定期処理は、サーボモータを駆動するための処理(サーボ制御のための処理)であり、各処理周期において必ず実行される。定期処理においてCPU14は、サーボモータの現在値と目標値との偏差からサーボモータのトルク指令値を算出し、そのトルク指令値をサーボモータに出力する処理を行う。なお、サーボモータの目標値(例えば、目標位置)は、上位制御装置2よりサーボコントローラ10に入力される。また、CPU14は、定期処理を行うことで生成されるログ情報(非圧縮データ)を、RAM14のデータ領域202に格納する。具体的には、管理情報記憶領域206に記憶されている現在の書き込み先に、生成したログ情報(非圧縮データ)を格納する。また、ログ情報を格納すると、管理情報記憶領域206に記憶されている現在の書き込み先を更新する。
【0026】
次に、CPU14は、不定期処理を行う必要があるか否かを判断する(S12)。具体的には、CPU14は上位制御装置2と通信を行う必要があるか否かにより、不定期処理の要否を判断する。例えば、上位制御装置2より指示(目標値等)が入力される場合や、上位制御装置2にサーボコントローラ10の状態(事象)を通知する場合には、不定期処理を行う必要があると判断する。不定期処理を行う必要がない場合(S12でNO)は、S16に進む。一方、不定期処理を行う必要がある場合(S12でYES)は、CPU14は、S14に進んで不定期処理を行う。したがって、S14の不定期処理は、S12の特定の条件が成立した時にのみ行われ、常時実行される処理ではない。不定期処理においてCPU14は、上位制御装置2からの指示(目標値等)を受信し、あるいは、サーボコントローラ10で生じた事象を上位制御装置2に送信する。なお、不定期処理を行うことで生じるログ情報もRAM14のデータ領域202に格納される。また、ログ情報がデータ領域202に格納されると、それに応じて管理情報記憶領域206に記憶されている情報(現在の書き込み先)も更新される。
【0027】
次に、CPU14は、当該処理周期において、データ領域202に格納されているログ情報を圧縮するための処理(後述するS20〜S24の処理)を行う時間があるか否かを判断する(S16)。すなわち、本実施例のサーボコントローラ10では、サーボ制御の精度を高めるために処理周期が短く設定され、CPU14が定期処理(S10)と不定期処理(S14)のみを実施できる程度の時間を処理周期としている。一方、上述したように不定期処理は特定条件下でのみ行われる処理であり、処理周期毎に常に行われる処理ではない。そこで、本実施例では、不定期処理が行われない処理周期において、データ領域202に格納されているログ情報を圧縮するための処理(後述するS20〜S24の処理)を行うこととしている。このため、S16でCPU14は、ログ情報を圧縮するための処理を行う時間があるか否か(すなわち、不定期処理を実行しているか否か)を判断する。ログ情報を圧縮するための処理を行う時間がない場合(S16でNO)は、S18〜24をスキップして、当該処理周期における処理を終了する。
【0028】
一方、ログ情報を圧縮するための処理を行う時間がある場合(S16でYES)は、CPU14は、データ領域202に記憶されているログ情報が指定容量に達しているか否かを判断する(S18)。上述したように、本実施例では、データ領域202に格納されるログ情報は、データ記憶領域202a〜202d毎に圧縮され、圧縮ログ情報ファイル204a〜204dとして圧縮データ領域204に格納される。すなわち、データ記憶領域202a〜202dのいずれかの領域の全体にログ情報が格納されると、その領域のログ情報が圧縮される。したがって、CPU14は、現在書き込み中のデータ記憶領域(202a〜202dのいずれかの領域)の全体にログ情報が格納されているか否かを判断する。具体的には、管理情報記憶領域206に記憶されている「現在のデータ書き込み先」の情報から、CPU14はログ情報が指定容量に達したか否かを判断する。例えば、
図2に示す状態では、CPU14はデータ記憶領域202cにログ情報を書き込んでおり、現在の書き込み先の情報よりデータ記憶領域202cの全体にログ情報が格納されていないと判断することができる。このため、CPU14は、ログ情報が指定容量に達していないと判断する。圧縮処理の対象となるログ情報が指定容量に達していない場合(S18でNO)は、S20〜24をスキップして、当該処理周期における処理を終了する。
【0029】
一方、圧縮処理の対象となるログ情報が指定容量に達している場合(S18でYES)は、CPU14は、圧縮対象となるログ情報(非圧縮データ)を圧縮する(S20)。ログ情報を圧縮する方法としては、公知のデータ圧縮方法を用いることができる。これによって、データ記憶領域202a〜202dのいずれかに格納されているログ情報(非圧縮データ)が圧縮されて、圧縮ログ情報ファイルとなる。
【0030】
次に、CPU14は、S20の圧縮処理によって得られた圧縮ログ情報ファイル(204a〜204dのいずれか)を、RAM16の圧縮データ領域204に格納する(S22)。次いで、CPU14は、S22で格納した圧縮ログ情報ファイルの書き込み先と容量を管理情報記憶領域206に格納する(S24)。S24が終了すると、当該処理周期における処理を終了する。
【0031】
次に、
図4を参照して電源OFF予告時処理を説明する。上述したように、電源OFF予告時処理は、電源監視回路12からの電源OFF予告信号をトリガーとして開始される。具体的には、電源監視回路12から出力される電源OFF予告信号がCPU14に入力されると、CPU14は、まず、
図3に示す通常時処理を停止し、その後に、
図4に示す電源OFF予告時処理を実行する。
【0032】
図4に示す電源OFF予告時処理では、まず、CPU14は、電源がOFFするまでの電源OFF時間を算出する(S30)。電源OFF時間は、例えば、電源監視回路12で検出される外部電源の電圧値の変化から算出することができる。なお、本実施例では、CPU14が電源OFF時間を算出したが、上位制御装置2が電源OFF時間を算出し、その算出した電源OFF時間をサーボコントローラ10に入力するようにしてもよい。
【0033】
次に、CPU14は、S30で算出された電源OFF時間とCF18への書き込み速度を用いて、電源がOFFするまでにCF18への書き込みが完了するデータ容量を算出する(S32)。そして、CPU14は、算出したデータ容量となるように、RAM16からCF18へ退避するデータを選定する。具体的には、データ領域202のデータ記憶領域202a〜202dのうち、電源OFF予告時処理を開始したときにログ情報を書き込んでいたデータ記憶領域のログ情報(非圧縮データ)と、圧縮データ領域204に格納されている圧縮ログ情報ファイル204a〜204d(圧縮データ)と、管理情報記憶領域206に格納されているデータ(圧縮ログ情報ファイルの書き込み先と容量に関する情報)を選択する。ここで、データ領域202のログ情報と管理情報記憶領域206のデータは必ず選択されるため、CPU14は、電源OFF時間とCF18への書き込み速度から、CF18に退避する圧縮ログ情報ファイルを直近のものより順に選択する。なお、電源OFF時間とCF18への書き込み速度から十分な時間があると判断される場合は、CPU14は、圧縮データ領域204に格納されている全ての圧縮ログ情報ファイル204a〜204dを選択する。例えば、
図2に示す状態で電源OFF予告時処理が開始された場合、CPU14は、データ記憶領域202cに記憶されている非圧縮データ3(ハッチングされた部分)と、圧縮データ領域204の圧縮ログ情報ファイル204a,204b,204d(ハッチングされた部分)と、管理情報記憶領域206のデータを選択する。これによって、CF18へのデータ退避中に電源OFF予告時処理が中断して、CF18に不正ファイルが残存してしまうことが抑制される。
【0034】
次に、CPU14は、RAM16に格納されているデータのうち、S32で選択したデータ(すなわち、CF18へ退避するデータ)を読み込む(S34)。そして、CPU14は、S34で読み込んだデータを、ICH20を介してCF18に退避する(S36)。RAM16からのデータの読み込みと、CF18へのデータの書き込みと、を一度にできるデータ量には制限がある。このため、CPU14は、S32で選択したデータ(CF18に退避するデータ)の全てを、CF18へ退避したか否かを判断する(S38)。S32で選択したデータの全てをCF18へ退避していない場合(S38でNO)は、CPU14は、S34に戻って、S34からの処理を実行する。一方、S32で選択したデータの全てがCF18へ退避している場合(S38でYES)は、CPU14は、電源OFF予告時処理を終了する。これによって、S32で選択したデータの全てがCF18へ退避される。CF18は不揮発性メモリであるため、CF18へ退避されたデータは、サーボコントローラ10への電源供給が遮断されている間も保持される。このため、CF18へ退避したログ情報を解析することで、電源遮断時の状況等を解析することができる。
【0035】
上述の説明から明らかなように、本実施例のサーボコントローラ10では、通常時処理(
図3)において、RAM16に格納されたログ情報を圧縮する処理を行って、圧縮ログ情報ファイル204a〜204dを作成している。このため、電源OFF予告時処理では、データ記憶領域に格納されている直近のログ情報(非圧縮データ)と、圧縮データ領域204に格納されている圧縮ログ情報ファイルと、管理情報記憶領域206のデータを退避するだけでよい。退避するデータの容量が少なくされているため、電源OFF予告時処理を短時間で行うことができる。また、CF18に退避されたデータの一部は圧縮により暗号化されているため、セキュリティ性を向上することができる。
【0036】
また、電源OFF予告時処理を短時間で行うことができるため、データの退避を行う不揮発性メモリに、低速なアクセス速度であるCF18を用いることができる。CF18を用いることで、サーボコントローラ10の製造コストを低減することができる。また、不揮発性メモリのCF18でデータ退避を行うことから、バックアップ電源が不要となり、サーボコントローラ10の基板サイズを小さくすることができる。
【0037】
また、本実施例のサーボコントローラ10では、予測される電源OFFまでの時間に応じて、CF18へ退避するデータ量が調整される。仮に、電源OFF予告時処理の実行中にサーボコントローラ10への電源が遮断されると、CF18に不正ファイルが作成され、その不正ファイルが残存するという問題が生じる。一方、本実施例では、予測される電源OFFまでの時間に応じて退避するデータ量が調整されるため、不正ファイルが発生することを未然に防止することができる。
【0038】
さらに、本実施例のサーボコントローラ10では、不定期処理(
図3のS14)を行わないことによる空き時間を利用して、RAM16のデータ領域202に格納されているログ情報を圧縮する処理を行う。このため、ログ情報を圧縮する処理を定常の処理周期に実行する構成としても、圧縮処理を行うことがサーボモータの制御へ影響することはない。
【0039】
以上、本明細書に開示の技術に係る実施例について詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【0040】
(1)例えば、上記の実施例では、データ領域と、そのデータ領域に対応する圧縮データ領域の組み合わせが1組であったが、データ領域と、そのデータ領域に対応する圧縮データ領域との組合せを複数組としてもよい。すなわち、RAMに複数のデータ領域(各データ領域が複数のデータ記憶領域を有するリングバッファとして構成される)と、それら複数のデータ領域に対応する複数の圧縮データ領域とを設けてもよい。圧縮処理においては、通常、非圧縮データ(ログ情報)の内容によって適切な圧縮率は異なる。データ領域とそれに対応する圧縮データ領域の組合せが1つの場合は、一番圧縮率の低い非圧縮データ(ログ情報)に合わせて、全データを圧縮しなければならない。一方、データ領域と圧縮データ領域の組合せを複数組とすると、複数の圧縮率を設定し、圧縮縮率毎に非圧縮データ(ログ情報)を分類し、分類した非圧縮データ毎にデータ領域と圧縮データ領域の組合せを割り当てることができる。これにより、非圧縮データ(ログ情報)の圧縮率を高くすることができ、データ退避時間をさらに低減することができる。
【0041】
(2)上記の実施例では、ログ情報を退避する不揮発性メモリにCF18を用いたが、CF18の代わりに、HDDを用いてログ情報を退避してもよい。このような構成を採用する場合、HDDはデータ退避専用領域を有していてもよい。なお、HDDを用いてデータ退避を行う場合、HDDへのデータ退避処理中に電源がOFFすると、不正ファイルが生成されることがある。その結果、HDDに不正ファイルが残存し、HDDの容量を圧迫してしまう可能性がある。したがって、HDDを用いてデータ退避を行う場合は、HDDに不正ファイルが存在するか否かを判断し、HDDから不正ファイルを削除するように構成しておくことが好ましい。例えば、次に説明する方法で不正ファイルの存在を判定し、不正ファイルが存在する場合はその不正ファイルを削除することができる。すなわち、サーボコントローラ10の立ち上げ時などに、データ退避前後のHDDの使用容量を比較する。HDDの使用容量の差分が、圧縮前のデータの容量を超えている場合は、不正なファイルがデータ退避専用領域に保存されていると判断する。不正なファイルがデータ退避専用領域に保存されていると判断する場合、HDDのデータ退避専用領域をフォーマットして、HDDより不正ファイルを削除する。
【0042】
(3)さらに、上記の実施例では、通常時処理においてはログ情報の圧縮のみを行っていたが、処理時間に余裕がある場合には、通常処理において圧縮したログ情報を不揮発性メモリに格納する処理を行ってもよい。
【0043】
(4)上記の実施例では、定期処理、不定期処理、圧縮処理を単一のプログラムで実施していたが、それぞれ異なるプログラムで独立して実施してもよい。その場合、CPUは、定期処理を実行する定期処理プログラム、不定期処理を実行する不定期処理プログラムと、圧縮処理を実行する圧縮処理プログラムと、それぞれの処理プログラムに処理時間を割り当てるプログラムマネージャと、を備える。プログラムマネージャの割り当てる処理時間の優先度を、定期処理プログラム、不定期処理プログラム、圧縮処理プログラムの順に設定する。このような構成にすることで、プログラムマネージャは、定期処理プログラムに最優先に処理時間を割り当てる。そのため、定期処理プログラムは、必ず処理周期毎に処理が完了することが保証される。不定期処理プログラムは、特定条件が成立しているとき(不定期)に実行される。特定条件が成立しているとき、プログラムマネージャは、不定期処理プログラムへの処理時間の割り当てを優先するため、圧縮処理プログラムに処理時間は割り当てない。一方、特定条件が成立していないとき、プログラムマネージャは、不定期処理プログラムに処理時間は割り当てない。そのため、CPUの処理時間に空きが発生する。そこで、プログラムマネージャは、圧縮処理プログラムに処理時間を割り当て、圧縮処理プログラムは実施される。このような構成であっても、上記実施例と同等の処理が実現できる。
【0044】
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。