(57)【要約】【課題】ウォッチドッグ・リセットを利用した簡易な方法で、プロセッサを意図的なタイミングでリセットすることが可能なプロセッサのリセット方法、プロセッサのリセットプログラム、このプログラムを搭載したマイコンを備えた電子制御装置、この電子制御装置を備えたモータ駆動システム及びこのモータ駆動システムを備えた工作機械を提供する。【解決手段】ＤＳＰ２１ｂのＲＯＭ１０２に格納された第１ユーザプログラム１０２０は、ＣＰＵ１０１によって実行され、切替コマンドの入力に応じて、ＷＤＲ通知値を、ＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込み、その後、ＷＤキー書き込み領域１０５ａに異常値を示すウォッチドッグキーＫＹ１及びＫＹ２を書き込むことで、ウォッチドッグモジュール１０５のリセット動作を発動し、ＣＰＵ１０１を意図的にリセットする。【選択図】  図２
2016218864.tif 000002
【特許請求の範囲】
【請求項１】
ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールであって、該ウォッチドッグモジュールを備えた前記マイクロコントローラの前記プロセッサが、予め設定したリセットタイミングで、ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで前記ウォッチドッグモジュールに前記第２リセット動作を強制的に行わせるステップを含む、プロセッサのリセット方法。
【請求項２】
ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールであって、該ウォッチドッグモジュールを備えた前記マイクロコントローラの前記プロセッサが、予め設定したリセットタイミングで、前記ウォッチドッグモジュールによる前記プロセッサのリセットを意図的に行うことを示す識別情報を識別情報書き込み用メモリに書き込む第１ステップと、
前記プロセッサが、ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで前記ウォッチドッグモジュールに前記第２リセット動作を強制的に行わせる第２ステップと、
前記プロセッサが、前記第２リセット動作によるリセットが行われた後に前記識別情報書き込み用メモリに書き込まれた前記識別情報に基づき前記プロセッサのリセットが意図的に行われたことを識別する第３ステップと、を含むプロセッサのリセット方法。
【請求項３】
前記ウォッチドッグモジュールは、正常値を示すウォッチドッグキーが前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に前記第１リセット動作を行い、異常値を示すウォッチドッグキーが前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に前記第２リセット動作を行う請求項１又は２に記載のプロセッサのリセット方法。
【請求項４】
ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールに、
予め設定したリセットタイミングで、ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで、前記第２リセット動作を強制的に行わせる処理を前記プロセッサに実行させるためのプログラムを含む、プロセッサのリセットプログラム。
【請求項５】
ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールであって、該ウォッチドッグモジュールによる前記プロセッサのリセットを意図的に行うことを示す識別情報を、予め設定したリセットタイミングで、識別情報書き込み用メモリに書き込む第１ステップと、
ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで前記ウォッチドッグモジュールに前記第２リセット動作を強制的に行わせる第２ステップと、
前記第２リセット動作によるリセットが行われた後に前記識別情報書き込み用メモリに書き込まれた前記識別情報に基づき前記プロセッサのリセットが意図的に行われたことを識別する第３ステップと、を有する処理を前記プロセッサに実行させるためのプログラムを含む、プロセッサのリセットプログラム。
【請求項６】
前記ウォッチドッグモジュールは、正常値を示すウォッチドッグキーが前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に前記第１リセット動作を行い、異常値を示すウォッチドッグキーが前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に前記第２リセット動作を行う請求項４又は５に記載のプロセッサのリセットプログラム。
【請求項７】
請求項４から６のいずれか１項に記載のプロセッサのリセットプログラムを備えた電子制御装置。
【請求項８】
請求項７に記載の電子制御装置を備えたモータ駆動システム。
【請求項９】
請求項８に記載のモータ駆動システムを備えた工作機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサで実行される複数の割り込み処理を停止する技術に関する。
【背景技術】
【０００２】
従来、ウォッチドッグタイマを利用して、マイクロコントローラ（以下、「マイコン」と称す）の異常を監視する技術として、例えば、特許文献１及び２に開示された技術がある。
特許文献１の技術では、マイコンの備えるプロセッサからの定期的なリセット信号に応じてウォッチドッグタイマをリセットしている。そして、リセット信号が受信されずにタイムアウトになった場合にプロセッサを停止したり、故障警報を出力したりしている。
【０００３】
また、特許文献２の技術では、プロセッサが定期的にレジスタにウォッチドッグキーを書き込み、ウォッチドッグモジュールは、書き込まれたウォッチドッグキーが正常値である場合にウォッチドッグタイマをリセットする。一方、異常値である場合や、書き込まれずにタイムアウトした場合にプロセッサをリセット（以下、「ウォッチドッグ・リセット」と記載する場合がある）している。ウォッチドッグ・リセットが行われると、割り込み処理を含めて全ての処理が停止させられプロセッサが初期化される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１３３６２５号公報
【特許文献２】特開平２−２２７４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、一般にマイコンには製品固有のプログラムが実装され、マイコンの有するプロセッサにおいて、複雑に優先順位付けされた割り込み処理が実行されることで、その製品としての機能を果たしている。このような状況下において、一時的ないし長期的にプロセッサの演算処理能力を最大限に活用したい（即ち、割り込み処理を全て停止させたい）場合や、かかるマイコンによって構成されるシステムの初期化を行いたい場合が少なからず存在する。
【０００６】
本発明者らは、特に上記特許文献２の機能を有するマイコンに着目し、プログラムの実行中において、異常値を示すウォッチドッグキーを意図的にメモリ（レジスタ）に書き込むことで、プロセッサのリセットを意図的に発生させるというウォッチドッグ・リセットの新たな活用方法を見出した。
以上のことから、本発明は、ウォッチドッグ・リセットを利用した簡易な方法で、プロセッサを意図的に（例えば、プログラマ又はユーザの意図したタイミングで）リセットすることが可能なプロセッサのリセット方法、プロセッサのリセットプログラム、このプログラムを搭載したマイコンを備えた電子制御装置、この電子制御装置を備えたモータ駆動システム及びこのモータ駆動システムを備えた工作機械を提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の一態様に係るプロセッサのリセット方法は、ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールであって、該ウォッチドッグモジュールを備えた前記マイクロコントローラの前記プロセッサが、予め設定したリセットタイミングで、ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで前記ウォッチドッグモジュールに前記第２リセット動作を強制的に行わせることを要旨とする。
【０００８】
また、本発明の一態様に係るプロセッサのリセットプログラムは、ウォッチドッグキーが正しい内容でウォッチドッグキー書き込み用メモリに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーが間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で前記マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュールに、予め設定したリセットタイミングで、ウォッチドッグキーを間違った内容で前記ウォッチドッグキー書き込み用メモリに書き込むことで、前記第２リセット動作を強制的に行わせる処理を前記プロセッサに実行させるためのプログラムを含むことを要旨とする。
【０００９】
また、本発明の一態様に係る電子制御装置は、上記プロセッサのリセットプログラムを備えたマイクロコントローラを備える。
また、本発明の一態様に係るモータ駆動システムは、上記電子制御装置を備える。
また、本発明の一態様に係る工作機械は、上記モータ駆動システムを備える。
【発明の効果】
【００１０】
本発明によれば、予め設定したリセットタイミング（例えば、予め設定したコマンドの入力タイミング）で、ウォッチドッグキーを間違った内容でウォッチドッグキー書き込み用メモリに書き込むことで、プロセッサを強制的にリセットすることが可能となる。これによって、例えば、マイコンの組み込まれたシステム等を、ソフトウェア上で簡易に初期化することが可能となる。
【００１１】
また、例えば、プログラムの実行中に、割り込み処理を一括で停止したい場合も、割り込み処理の停止ロジックを検討することなく、極めて少ないプログラム容量で、割り込み処理を確実に一括して停止することが可能となる。
また、ウォッチドッグモジュールによるリセットを活用するため、マイコンへの電源供給を維持した状態でリセットを行うことができ、マイコンのメモリに記憶された情報を失うことが無いため、リセット後においてメモリに残された情報を活用することが可能である。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１実施形態に係るモータ駆動システム１０の具体的な構成例を示すブロック図である。
【図２】ＤＳＰ２１ｂの具体的な構成例を示すブロック図である。
【図３】第１実施形態のＲＯＭ１０２に格納されたプログラムの一例を示すブロック図である。
【図４】第１実施形態の第１ユーザプログラム１０２０に基づく切替コマンドの入力に応じた動作処理の一例を示すフローチャートである。
【図５】第１実施形態の第１ユーザプログラム１０２０に基づくウォッチドッグ・リセットを実行後の動作処理の一例を示すフローチャートである。
【図６】第２ブートプログラム１０２０ａに基づく動作処理の一例を示すフローチャートである。
【図７】本発明の第２実施形態に係る溝研削装置３００の具体的な構成例を示す図である。
【図８】第２実施形態のＲＯＭ１０２に格納されたプログラムの一例を示すブロック図である。
【図９】第２実施形態の第２ユーザプログラム１０２４に基づく初期化コマンド又は切替コマンドの入力に応じた動作処理の一例を示すフローチャートである。
【図１０】第２実施形態の第２ユーザプログラム１０２４に基づくウォッチドッグ・リセットを実行後の動作処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
（第１実施形態）
（構成）
本発明の第１実施形態に係るモータ駆動システム１０は、図１に示すように、モータ１と、ドライブユニット２と、端末３と、上位装置４とを含んで構成される。
モータ１は、一例として、モータコアにレゾルバの組み込まれたモータから構成されている。モータ１は、内部のレゾルバがレゾルバケーブル５及び第３コネクタＣＮ３を介してドライブユニット２に接続され、モータ本体がモータケーブル６及び第４コネクタＣＮ４を介してドライブユニット２に接続されている。
【００１４】
ここで、モータ１は、例えば、高分解能の検出器を内蔵し高速高精度の位置決めが可能なダイレクトドライブモータ等を適用することができる。
ドライブユニット２は、図１に示すように、制御回路２１と、パワーアンプ２２と、第１〜第５コネクタＣＮ１〜ＣＮ５とを含んで構成されている。ドライブユニット２は、上位装置４からの指令信号に基づきモータ１を駆動制御する。
【００１５】
端末３は、ハンディターミナルやパーソナルコンピュータ等の情報処理端末から構成され、一例として、ＲＳ２３２Ｃ規格に準拠したシリアルケーブル７及び第１コネクタＣＮ１を介してドライブユニット２に接続されている。端末３は、制御回路２１で実行されているユーザプログラムに対してコマンドの入力やユーザプログラムの転送等を行うものである。
【００１６】
上位装置４は、プログラマブルコントローラやモータコントローラ等の装置から構成されており、制御信号ケーブル８、パルス列入力ケーブル９及び第２コネクタＣＮ２を介してドライブユニット２に接続されている。上位装置４は、制御信号ケーブル８を介してドライブユニット２へモータ回転指令などの制御信号を出力し、パルス列入力ケーブル９を介してドライブユニット２へパルス列を出力する。
【００１７】
また、制御回路２１は、図１に示すように、制御基板２１ａと、制御基板２１ａ上に実装された、デジタル信号処理に特化したマイコンであるＤＳＰ２１ｂとを含んで構成されている。
ＤＳＰ２１ｂは、第２コネクタＣＮ２及び制御信号ケーブル８を介して上位装置４との間で信号の入出力を行う。また、第３コネクタＣＮ３及びレゾルバケーブル５を介して、モータ１のレゾルバとの間で信号の入出力を行い、第４コネクタＣＮ４及びモータケーブル６を介してモータ１との間で信号の入出力を行う。
【００１８】
ＤＳＰ２１ｂは、上位装置４からモータ回転指令が入力されると、レゾルバからの例えば３相のレゾルバ位置検出信号φＡＢＣを入力してこれに基づきモータ１の回転角度位置の検出を行う。加えて、この位置検出結果と上位装置４からのモータ回転指令とに応じて、モータ１を回転駆動させるためのモータ電流指令値を生成する。
パワーアンプ２２は、第５コネクタＣＮ５を介して制御回路２１に接続され、第５コネクタＣＮ５を介して制御回路２１からのモータ電流指令値を受信し、受信したモータ電流指令値に応じたモータ駆動電流を生成する。そして、生成したモータ駆動電流を、第４コネクタＣＮ４及びモータケーブル６を介してモータ１に供給する。
【００１９】
次に、図２に基づき、ＤＳＰ２１ｂの詳細な構成を説明する。
ＤＳＰ２１ｂは、図２に示すように、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、Ｉ／Ｏモジュール１０４と、ウォッチドッグモジュール１０５と、メモリバス１０６と、ペリフェラルバス１０７とを含んで構成されている。
【００２０】
ここで、ＤＳＰ２１ｂとして、例えば、Texas Instruments社のＤＳＰ（Digital Signal Processors）であるTMS320F2812を適用することができる。
ＣＰＵ１０１は、電源が投入されるとＲＯＭ１０２に格納されたブートプログラムを実行する。このブートプログラムは、ＤＳＰ２１ｂの複数の特定ピン（例えば４つのピン）の電圧状態に基づき、複数種類の動作モードのうちから起動する動作モードを決定する。ＣＰＵ１０１は、動作モードを決定すると、ＲＯＭ１０２から決定した動作モードに応じたプログラムをワークメモリであるＲＡＭ１０３に読み込む。そして、ＲＡＭ１０３に読み込んだプログラムに記述された命令に従って所定の制御および演算処理を行うことで各動作モードに応じた各種機能をソフトウェア上で実現する。
【００２１】
ＲＯＭ１０２は、一部のメモリ領域にプロテクトが施されており、このメモリ領域（以下、「プロテクト領域」と称す）に対して随時書き込みが出来ないようになっている一方、プロテクト領域以外の領域についてはデータの書き込み及び読み出しが随時可能となっている。また、ＲＯＭ１０２は、マイコンメーカー専用のマスクＲＯＭエリアを有しており、このマスクＲＯＭエリアに対しては、ユーザ側が後から内容を書き込んだり書き換えたりすることができないようになっている。
【００２２】
なお、プロテクト領域は、起動する動作モードに応じて、ユーザ側がプログラム等のデータの書き込み及びデータの読み出しを行うことが可能な領域である。但し、第１実施形態では、プロテクト領域に格納されたデータの書き換えを行う際に、予め設定したパスワードの入力が必要となっている。
また、第１実施形態において、ＲＯＭ１０２には、図３に示すように、通常動作モードに対応する第１ユーザプログラム１０２０が格納されている。他にも、ＲＯＭ１０２には、第１ブートプログラム１０２１、動作モードの１つであるシリアル通信ポートを用いたプログラム書込モード（以下、「ＳＣＩブートモード」と称す）に対応する第１ＳＣＩブートプログラム１０２２、その他の動作モードに対応するプログラム１０２３等が格納されている。なお、第１ブートプログラム１０２１、第１ＳＣＩブートプログラム１０２２及びその他の動作モードに対応するプログラム１０２３（以下、「その他のプログラム１０２３」と称す）は、ＲＯＭ１０２のマスクＲＯＭエリアに格納されている。
【００２３】
ここで、ＳＣＩブートモードは、シリアル通信ポートを介して端末３から、ＲＯＭ１０２のプロテクト領域に格納されたプログラムを書き換えることができる動作モードである。
特に、第１実施形態の第１ユーザプログラム１０２０は、ＲＯＭ１０２のプロテクト領域に格納されており、ＳＣＩブートモード以外のその他の動作モードのときに、シリアル通信ポートを介したプログラムの書き換えが出来ないようになっている。
【００２４】
なお、通常動作モードは、電源投入時の複数の特定ピンの電圧状態がデフォルト状態のときに起動される動作モードである。通常動作モード以外の動作モードで起動する場合は、電源投入時の複数の特定ピンの電圧状態を各動作モードに対応した状態に変更する必要がある。
ＲＡＭ１０３は、実行するプログラムやプログラムの実行に必要なデータを一時記憶するワークメモリである。
【００２５】
Ｉ／Ｏモジュール１０４は、モータ１、端末３及び上位装置４との間でデータの入出力を行うための各種入出力インターフェースモジュールを含んで構成されている。第１実施形態では、シリアル通信を行うためのインターフェースモジュールであるシリアル通信モジュール等を含んで構成される。即ち、このシリアル通信モジュール及び第１コネクタＣＮ１によってシリアル通信ポートが構成される。
【００２６】
ここで、Ｉ／Ｏモジュール１０４に対応するＤＳＰ２１ｂの各種入出力ピンのうち、端末３との間のデータ通信に用いる入出力ピンが第１コネクタＣＮ１に接続されている。
また、ＤＳＰ２１ｂの各種入出力ピンのうち、上位装置４との間のデータ通信に用いる入出力ピンが第２コネクタＣＮ２に接続され、モータ１のレゾルバとの通信に用いる入出力ピンが第３コネクタＣＮ３と接続され、モータ本体との通信に用いる入出力ピンが第４コネクタＣＮ４に接続されている。
【００２７】
ウォッチドッグモジュール１０５（以下、「ＷＤＭ１０５」と称す）は、図示しないウォッチドッグカウンタ（ウォッチドッグタイマともいう）を有している。ＷＤＭ１０５は、ＣＰＵ１０１による第１リセット操作が行われたときにはウォッチドッグカウンタをリセットする。また、ウォッチドッグカウンタがその最大値を超えてタイムアウトしたときには、ＣＰＵ１０１をリセットするためのリセット信号をＣＰＵ１０１に出力する。
【００２８】
ここで、ＣＰＵ１０１による第１リセット操作は、予め設定されたキーコードからなる第１のウォッチドッグキー（ウォッチドッグタイマキー）ＫＹ１をレジスタなどで構成される所定のウォッチドッグキー書き込み領域１０５ａに書き込む。その後、予め設定されたキーコードからなる第２のウォッチドッグキー（ウォッチドッグタイマキー）ＫＹ２をウォッチドッグキー書き込み領域１０５ａ（以下、「ＷＤキー書き込み領域１０５ａ」と記載する場合がある）に書き込む操作である。
【００２９】
即ち、ＷＤＭ１０５は、ＷＤキー書き込み領域１０５ａに、正常値である予め設定されたキーコードからなる第１のウォッチドッグキーＫＹ１、正常値である予め設定されたキーコードからなる第２のウォッチドッグキーＫＹ２がこの順に書き込まれたときに、第１リセット操作が行われたと判断し、ウォッチドッグカウンタをリセットする。以下、この正常値を示すＷＤキーの書き込みに応じたウォッチドッグカウンタのリセット動作を、「第１リセット動作」と記載する場合がある。
【００３０】
また、ＷＤＭ１０５は、ＷＤキー書き込み領域１０５ａに第１のウォッチドッグキーＫＹ１または第２のウォッチドッグキーＫＹ２とは異なる、誤ったキーコード（異常値）が書き込まれたときには、即時に、ＣＰＵ１０１をリセットするためのリセット信号をＣＰＵ１０１に出力する。
また、ＷＤＭ１０５は、第１のウォッチドッグキーＫＹ１、或いは、第２のウォッチドッグキーＫＹ２が書き込まれたとしても、これらが、第１のウォッチドッグキーＫＹ１および第２のウォッチドッグキーＫＹ２の順に書き込まれない場合には、即時に、ＣＰＵ１０１をリセットするためのリセット信号をＣＰＵ１０１に出力する。
【００３１】
以下、ＷＤキー書き込み領域１０５ａへの異常値の書き込みや、書き込み順番の誤り等の間違った内容の書き込み動作に応じて行われる、ＷＤＭ１０５のＣＰＵ１０１へのリセット信号の送信動作を、「第２リセット動作」と記載する場合がある。
メモリバス１０６は、ＣＰＵ１０１と、ＲＯＭ１０２及びＲＡＭ１０３との間のデータ転送を行うためのバスである。
ペリフェラルバス１０７は、ＣＰＵ１０１と、Ｉ／Ｏモジュール１０４及びウォッチドッグモジュール１０５との間のデータ転送を行うためのバスである。
【００３２】
（第１ユーザプログラム１０２０について）
第１実施形態の第１ユーザプログラム１０２０には、図３に示すように、第１ブートプログラム１０２１と同等の機能を有する第２ブートプログラム１０２０ａと、第１ＳＣＩブートプログラム１０２２と同等の機能を有する第２ＳＣＩブートプログラム１０２０ｂとが組み込まれている。更に、第１実施形態の第１ユーザプログラム１０２０には、その他のプログラム１０２３に含まれる各動作モードに対応する他のブートプログラムのうち切替コマンドでサポートしているブートプログラム１０２０ｃが組み込まれている。ここで、第１実施形態では、サポート対象の各種動作モードに対応する切換コマンドが予め設定されている。サポートしているその他のブートプログラム１０２０ｃは、その他のプログラム１０２３に含まれる各対応するサポート対象のブートプログラムと同等の機能を有している。
【００３３】
そして、ＣＰＵ１０１は、第１ユーザプログラム１０２０の実行中において、端末３を介した各種切替リセットタイミングで、組み込まれた第２ブートプログラム１０２０ａを起動して、現在の動作モードを入力された切替コマンドの種類に対応する動作モードへと切り替える。即ち、第１ユーザプログラム１０２０に組み込まれたサポートしている各種ブートプログラムのうち、入力された切替コマンドの種類に対応するブートプログラムを起動する。このように、第１実施形態の第１ユーザプログラム１０２０は、マイコンの動作モードを切り替えるプログラムとしての機能を有している。
【００３４】
また、第１実施形態では、モータ１が停止状態（サーボオフ状態）でかつ他の処理が実行されていない状態のときに、端末３を介してコマンドの入力が可能となっている。特に、第１実施形態では、動作モードを切り替えるための各種切替コマンドの入力が可能となっており、ＤＳＰ２１ｂは、第１ユーザプログラム１０２０に記述された命令に従って、入力された切替コマンドの種類に応じたモード切替処理を実行するようになっている。
【００３５】
ここで、第１ユーザプログラム１０２０の適用対象のマイコン（例えば、上記TMS320F2812など）は、一般に、通常動作モードで起動した場合（ユーザプログラムが実行された場合）に他の動作モードに切り替えるためには、物理手段による電源の再投入及び特定ピンの電圧状態の変更が必要となる。
これに対して、第１実施形態の第１ユーザプログラム１０２０は、通常動作モードで起動した場合でも、物理手段による電源の再投入及び特定ピンの電圧状態の変更をすることなく、切替コマンドの入力によって、通常動作モードから任意の動作モードへとソフトウェアによって切り替える機能を有している。
【００３６】
ここで、第１ユーザプログラム１０２０の適用対象のマイコンの中には、ユーザプログラム上から単にブートプログラムを起動しただけでは、ユーザプログラム実行時の割り込み処理等の影響で、動作モードの切り替えができないものがある（例えば、上記TMS320F2812など）。このようなマイコンで動作モードを切り替えるためには、電源投入時と同じ状態（全ての割り込み処理が停止した状態）を作り出した上でブートプログラムを起動する必要がある。そこで、第１実施形態の第１ユーザプログラム１０２０では、ＷＤＭ１０５のウォッチドッグ・リセットを利用して、電源投入時と同じ状態を作り出している。具体的に、ＷＤキー書き込み領域１０５ａに、意図的に誤ったキー（異常値）を書き込むことで強制的にウォッチドッグ・リセットを発動させている。
【００３７】
ウォッチドッグ・リセットは、ＤＳＰ２１ｂへの電源供給を維持したまま行われるリセットであるため、ＲＡＭ１０３に読み込まれた第１ユーザプログラム１０２０や、第１ユーザプログラム１０２０によってＲＡＭ１０３に書き込まれたメモリ情報はそのまま残る。従って、ウォッチドッグ・リセット後に、第１ユーザプログラム１０２０上から次の命令の実行が可能である。
【００３８】
また、電源投入時と同じ状態を作り出しても特定ピンの電圧状態が所望の動作モードに対応する状態となっていないと、第２ブートプログラム１０２０ａによって再び通常動作モードが起動してしまう。そこで、第１実施形態の第１ユーザプログラム１０２０では、ウォッチドッグ・リセット後でかつ起動する動作モードの確定前に、第２ブートプログラム１０２０ａが、起動する動作モードを決定する際に参照する特定ピンのステータス情報（特定ピンのｈｉｇｈ、Ｌｏｗを示す値）を、入力された切替コマンドの種類に対応する情報へと書き換えるようにしている。そのため、第１実施形態では、ウォッチドッグ・リセット後に、入力された切替コマンドの種類を参照するために、入力された切替コマンドの種類を示す情報を予めＲＡＭ１０３等のメモリに記憶しておく。
【００３９】
第２ブートプログラム１０２０ａは、第１ブートプログラム１０２１と同等の機能を有しているため、ステータス情報の書き換え後は、書き換えられたステータス情報で特定される動作モードを起動する。但し、第１実施形態の第２ブートプログラム１０２０ａは、第１ユーザプログラム１０２０に組み込まれた、第２ＳＣＩブートプログラム１０２０ｂ及びサポートしているその他のブートプログラム１０２０ｃのうちから書き換えられたステータス情報で特定される動作モードを起動するように構成されている。
【００４０】
このように各種ブートプログラムを第１ユーザプログラム１０２０に組み込むのは、第１ブートプログラム１０２１、第１ＳＣＩブートプログラム１０２２及びその他のプログラム１０２３が、マイコンメーカーが主導権を握るマスクＲＯＭエリアに書き込まれているためである。マスクＲＯＭエリアに書き込まれたプログラムは、メーカー側が予告無く変更する恐れがあり、マスクＲＯＭエリアから直接ブートプログラムを呼び出す構成とした場合に、変更が行われる度に第１ユーザプログラム１０２０を修正する必要がある。そこで、第１実施形態では、メーカー側の内容変更の影響を最小限に抑えるために、必要なブートプログラムを第１ユーザプログラム１０２０に組み込むようにしている。
【００４１】
（モード切替処理について）
次に、図４に基づき、ＣＰＵ１０１の第１ユーザプログラム１０２０に基づく切替コマンドの入力に応じた動作処理の流れを説明する。
ＣＰＵ１０１において、通常動作モードが起動して第１ユーザプログラム１０２０が実行されると、図４に示すように、まず、ステップＳ１００に移行する。
ステップＳ１００では、ＣＰＵ１０１において、切替コマンドが入力されたか否かを判定する。そして、入力されたと判定した場合（Ｙｅｓ）は、切替コマンドの種類を示す情報をＲＡＭ１０３の所定領域に書き込んでからステップＳ１０２に移行し、そうでないと判定した場合（Ｎｏ）は、切替コマンドが入力されるまで判定処理を繰り返す。
【００４２】
ステップＳ１０２に移行した場合は、ＣＰＵ１０１において、ウォッチドッグ・リセットであることを通知する値（以下、「ＷＤＲ通知値」と称す）をＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込んで、ステップＳ１０４に移行する。
ステップＳ１０４では、ＣＰＵ１０１において、ＲＯＭ１０２への書き込み等、周辺素子の機能を停止して、ステップＳ１０６に移行する。
【００４３】
ステップＳ１０６では、ＣＰＵ１０１において、ＷＤキー書き込み領域１０５ａに、第１のウォッチドッグキーＫＹ１及び第２のウォッチドッグキーＫＹ２として、異常値（誤った値のキー）を書き込む。これによって、ＷＤＭ１０５に、ウォッチドッグ・リセットを実行させて、一連の処理を終了する。
次に、図５に基づき、ＣＰＵ１０１の第１ユーザプログラム１０２０に基づくウォッチドッグ・リセットを実行後の動作処理の流れを説明する。
【００４４】
ＷＤＭ１０５においてウォッチドッグ・リセットが実行されて、ＣＰＵ１０１がリセットされると、引き続きＲＡＭ１０３に読み込まれた状態の第１ユーザプログラム１０２０が実行され、図５に示すように、まず、ステップＳ２００に移行する。
ステップＳ２００では、ＣＰＵ１０１において、ＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込まれたＷＤＲ通知値に基づき、実行されたウォッチドッグ・リセットが、切替コマンドの入力に応じたウォッチドッグ・リセットか否かを判定する。そして、切替コマンドの入力に応じたウォッチドッグ・リセットであると判定した場合（Ｙｅｓ）は、ステップＳ２０２に移行し、そうでないと判定した場合（Ｎｏ）は、処理を終了する。
【００４５】
ステップＳ２０２に移行した場合は、ＣＰＵ１０１において、ウォッチドッグ機能の設定プロテクトを解除すると共に、ウォッチドッグ・リセットの発動を禁止する設定を行う。その後、ウォッチドッグ機能の設定プロテクトを設定して、ステップＳ２０４に移行する。
即ち、ウォッチドッグ機能の設定変更ができるようにプロテクトを解除してから、ウォッチドッグ・リセットの発動を禁止する設定を行い、再びウォッチドッグ機能の設定変更ができないようにプロテクトを設定する。
【００４６】
ステップＳ２０４では、ＣＰＵ１０１において、第１ユーザプログラム１０２０に組み込まれた第２ブートプログラム１０２０ａを起動して、一連の処理を終了する。
次に、図６に基づき、ＣＰＵ１０１の第２ブートプログラム１０２０ａに基づく動作処理の流れを説明する。
ＣＰＵ１０１において、第２ブートプログラム１０２０ａが起動されると、図６に示すように、まず、ステップＳ３００に移行する。
【００４７】
ステップＳ３００では、ＣＰＵ１０１において、特定ピンのステータス情報を読み込んで、ステップＳ３０２に移行する。
ステップＳ３０２では、ＣＰＵ１０１において、ＲＡＭ１０３に記憶した入力された切替コマンドの種類を示す情報に基づき、特定ピンのステータス情報を、入力された切替コマンドの種類に対応する情報に書き換えて、ステップＳ３０４に移行する。
【００４８】
ステップＳ３０４では、ＣＰＵ１０１において、ステップＳ３０２で書き換えた特定ピンのステータス情報に応じた動作モードを起動して、一連の処理を終了する。
具体的に、ＣＰＵ１０１は、第１ユーザプログラム１０２０に組み込まれた第２ＳＣＩブートプログラム１０２０ｂ及びサポートしている他のブートプログラム１０２０ｃのうちから、書き換えたステータス情報で特定されるブートプログラムを起動する。
【００４９】
（動作）
次に、第１実施形態に係るモータ駆動システム１０の具体的な動作例を説明する。
ドライブユニット２の電源が投入されると、ＤＳＰ２１ｂにおいて、ＲＯＭ１０２に格納された第１ブートプログラム１０２１が実行される。このとき、外部回路（治具）等によって、特定ピンの電圧状態が変更されていなければ、デフォルトの通常動作モードが起動して、ＲＯＭ１０２に格納された第１ユーザプログラム１０２０が実行される。
第１ユーザプログラム１０２０が実行されると、ＤＳＰ２１ｂにおいて、モータ１、端末３及び上位装置４からの信号の入力が受け付けられ、入力された信号に応じた処理が実行される。例えば、上位装置４からのモータ回転指令が入力されると、入力されたモータ回転指令に応じてモータ１を駆動制御する処理が実行される。
【００５０】
一方、モータ１が停止した状態でかつ他の処理が実行されていない状態において、ユーザにより、端末３を介して、例えば、動作モードをＳＣＩブートモードに切り替える切替コマンド（以下、「ＳＣＩブートコマンド」と称す）が入力されたとする（ステップＳ１００のＹｅｓ）。
ＳＣＩブートコマンドが入力されると、ＤＳＰ２１ｂのＣＰＵ１０１は、第１ユーザプログラム１０２０に従って、まず、ＳＣＩブートコマンドを示す情報をＲＡＭ１０３の所定領域に書き込み、続いて、ＷＤＲ通知値をＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込む（ステップＳ１０２）。引き続き、ＣＰＵ１０１は、周辺素子の機能を停止してから（ステップＳ１０４）、ＷＤキー書き込み領域１０５ａに、異常値を書き込み、ウォッチドッグ・リセットを強制的に発動する（ステップＳ１０６）。
【００５１】
即ち、ＷＤＭ１０５は、ＷＤキー書き込み領域１０５ａに異常値が書き込まれたことに応じて、ＣＰＵ１０１に対してリセット信号を出力する動作（第２リセット動作）を行う。これによって、ＣＰＵ１０１がリセットされる。
ウォッチドッグ・リセット後に、ＣＰＵ１０１は、ＲＡＭ１０３に読み込まれている第１ユーザプログラム１０２０に従って、まず、ＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込まれたＷＤＲ通知値に基づき、ウォッチドッグ・リセットが、切替コマンドによるリセットか否かを判定する（ステップＳ２００）。
【００５２】
ここでは、ＳＣＩブートコマンドの入力に応じたウォッチドッグ・リセットであるため（ステップＳ２００のＹｅｓ）、ＣＰＵ１０１は、引き続きＷＤＭ１０５の動作を停止してから（ステップＳ２０２）、第２ブートプログラム１０２０ａを起動する（ステップＳ２０４）。
ＣＰＵ１０１は、第２ブートプログラム１０２０ａを起動すると、起動した第２ブートプログラム１０２０ａに従って、まず、特定ピンのステータス情報をＲＡＭ１０３の所定領域に読み込む。次に、ＲＡＭ１０３の所定領域に書き込まれたＳＣＩブートコマンドを示す情報に基づき、読み込んだ特定ピンのステータス情報を、第２ＳＣＩブートプログラム１０２０ｂを起動するステータス情報に強制的に書き換える（ステップＳ３０２）。
【００５３】
これにより、ＣＰＵ１０１は、第２ブートプログラム１０２０ａに従って、起動する動作モードが、第２ＳＣＩブートプログラム１０２０ｂを起動するモード（即ち、ＳＣＩブートモード）であると認識して、第１ユーザプログラム１０２０に組み込まれた第２ＳＣＩブートプログラム１０２０ｂを起動する（ステップＳ３０４）。
以降は、起動した第２ＳＣＩブートプログラム１０２０ｂに従って、端末３を介して入力したユーザのパスワードが正しい場合に、ＲＯＭ１０２のプロテクト領域のプロテクトが解除され、シリアル通信ポートを介した第１ユーザプログラム１０２０の書き換えが実行可能となる。この際、ウォッチドッグ・リセットによって、不要な割り込み処理が全て停止された状態で書き換えを行うことが可能となり、ＣＰＵ１０１の演算処理能力を最大限に活用することが可能である。
【００５４】
ここで、第１実施形態において、ＤＳＰ２１ｂがマイクロコントローラに対応し、ＣＰＵ１０１がプロセッサに対応し、第１ユーザプログラム１０２０がプロセッサのリセットプログラムに対応し、ドライブユニット２が電子制御装置に対応する。
また、第１実施形態において、ＷＤキー書き込み領域１０５ａがウォッチドッグキー書き込み用メモリに対応し、ＷＤＲ通知値書き込み領域１０３ａが識別情報書き込み用メモリに対応する。
【００５５】
（第１実施形態の作用及び効果）
（１）ウォッチドッグキーＫＹ１及びＫＹ２が正しい内容でＷＤキー書き込み領域１０５ａに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーＫＹ１及びＫＹ２が間違った内容でＷＤキー書き込み領域１０５ａに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で該マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュール１０５であって、該ウォッチドッグモジュール１０５を備えたＤＳＰ２１ｂのＣＰＵ１０１が、予め設定したリセットタイミング（例えば、切替コマンドの入力タイミング）で、ウォッチドッグキーＫＹ１及びＫＹ２を間違った内容でＷＤキー書き込み領域１０５ａに書き込むことでウォッチドッグモジュール１０５に第２リセット動作を強制的に行わせる。
【００５６】
この構成によって、予め設定したリセットタイミングで、マイコンのプロセッサを意図的にリセットすることが可能となる。
これにより、マイコンの組み込まれたシステム等を、例えば、切替コマンドの入力によるユーザの意図したタイミングで、ソフトウェア上で簡易に初期化することが可能となる。ここで、ウォッチドッグモジュールによるリセットは、マイコンを搭載する制御基板の電源を再投入したことと同じ働き（効果）を有する。
【００５７】
また、例えば、マイコンのメモリに記憶されたユーザプログラムやファームウェアの書き換え、メモリ等のマイコンの構成素子の異常診断等を行うために、割り込み処理を一括で停止したいという要望があるとする。この場合に、上記構成であれば、複雑な割り込み処理の停止ロジックを検討することなく、極めて少ないプログラム容量で、割り込み処理を確実に一括して停止することが可能となる。
【００５８】
ここで、割り込み処理は、状態監視として使用されることが多く、割り込み処理同士が相互に監視していたり、条件により新たに割り込み処理が発生したりする場合があるため、割り込み処理の停止ロジックの検討は難解となる場合が多い。
また、マイコンは、価格面で競争力を付けるために、プログラム容量を小さくすることが求められる。このため、複雑な割り込み処理の停止ロジックを検討したとしても、ロジック実装によるプログラム領域の消費を回避することは難しい。
【００５９】
また、マイコンは、ウォッチドッグモジュールによるリセットが行われると、全ての処理が停止させられるため、結果的に割込み処理を全て確実に停止できる。これはどのような複雑な割込み処理に対しても有効であり、また、仕様変更により割込み処理が拡張されたとしても確実に停止できる。
また、ウォッチドッグモジュールによるリセットを活用するため、マイコンへの電源供給を維持した状態でリセットを行うことができ、マイコンのメモリに記憶された情報を失うことが無いため、リセット後においてメモリに残された情報を活用することが可能である。
【００６０】
（２）ウォッチドッグキーＫＹ１及びＫＹ２が正しい内容でＷＤキー書き込み領域１０５ａに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーＫＹ１及びＫＹ２が間違った内容でＷＤキー書き込み領域１０５ａに書き込まれた場合に、マイクロコントローラへの電源供給を維持した状態で該マイクロコントローラの有するプロセッサをリセットする第２リセット動作を行うウォッチドッグモジュール１０５であって、該ウォッチドッグモジュール１０５を備えたＤＳＰ２１ｂのＣＰＵ１０１が、予め設定したリセットタイミング（切替コマンドの入力タイミング）で、ウォッチドッグモジュール１０５によるＣＰＵ１０１のリセットを意図的に行うことを示すＷＤ通知値をＲＡＭ１０３のＷＤ通知値書き込み領域１０３ａに書き込む。更に、ＣＰＵ１０１が、ウォッチドッグキーＫＹ１及びＫＹ２を間違った内容でＷＤキー書き込み領域１０５ａに書き込むことでウォッチドッグモジュール１０５に第２リセット動作を強制的に行わせる。なお更に、ＣＰＵ１０１が、第２リセット動作によるリセットが行われた後にＷＤＲ通知値書き込み領域１０３ａに書き込まれたＷＤＲ通知値に基づきＣＰＵ１０１のリセットが意図的に行われたことを識別する。
【００６１】
この構成によって、予め設定したリセットタイミングで、ＷＤＲ通知値をＷＤＲ通知値書き込み領域１０３ａに書き込んでから、ＤＳＰ２１ｂのＣＰＵ１０１を強制的にリセットすることが可能となる。加えて、リセット後に、ＷＤＲ通知値を参照することで、ＣＰＵ１０１のリセットが、意図的なものであることを識別することが可能となる。
即ち、ウォッチドッグモジュールによる意図的なリセットを行う前に、ＲＡＭ１０３にフラグ（ＷＤＲ通知値）を立てておくことで、リセット後に、このフラグを回収して、ＣＰＵ１０１に対して、意図的なリセットであることを認識させることが可能となる。
【００６２】
これにより、マイコンの組み込まれたシステム等を、例えば、切替コマンドの入力によるユーザの意図したタイミングで、ソフトウェア上で簡易に初期化することが可能となると共に、初期化後に、マイコンに初期化前の動作処理を継続して実行させること等が可能となる。
また、複雑な割り込み処理の停止ロジックを検討することなく、極めて少ないプログラム容量で、割り込み処理を確実に一括して停止することが可能となる。そして、リセット後において、意図的なリセットであることを認識することができるので、ＣＰＵ１０１の演算処理能力を最大限に活用した処理を実行することが可能となる。
また、ウォッチドッグモジュールによるリセットを活用するため、マイコンへの電源供給を維持した状態でリセットを行うことができ、マイコンのメモリに記憶された情報を失うことが無いため、リセット後においてメモリに残された情報を活用することが可能である。
【００６３】
（３）ウォッチドッグモジュール１０５は、正常値を示すウォッチドッグキーＫＹ１及びＫＹ２がＷＤキー書き込み領域１０５ａに書き込まれた場合に第１リセット動作を行い、異常値を示すウォッチドッグキーＫＹ１及びＫＹ２がＷＤキー書き込み領域１０５ａに書き込まれた場合に第２リセット動作を行う。
この構成であれば、ＷＤキー書き込み領域１０５ａに、異常値を示すウォッチドッグキーＫＹ１及びＫＹ２を書き込むといった簡易な処理で、ＣＰＵ１０１を意図的にリセットすることが可能である。
【００６４】
（４）第１ユーザプログラム１０２０は、ウォッチドッグキーＫＹ１及びＫＹ２が正しい内容でＷＤキー書き込み領域１０５ａに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーＫＹ１及びＫＹ２が間違った内容でＷＤキー書き込み領域１０５ａに書き込まれた場合に、ＤＳＰ２１ｂへの電源供給を維持した状態で該ＤＳＰ２１ｂの有するＣＰＵ１０１をリセットする第２リセット動作を行うウォッチドッグモジュール１０５に、予め設定したリセットタイミング（切替コマンドの入力タイミング）で、ウォッチドッグキーＫＹ１及びＫＹ２を間違った内容でＷＤキー書き込み領域１０５ａに書き込むことで、第２リセット動作を強制的に行わせる処理をＣＰＵ１０１に実行させるためのプログラムを含む。
この構成であれば、ＣＰＵ１０１で第１ユーザプログラム１０２０が実行されることで、上記（１）に記載したＣＰＵ１０１のリセット方法と同等の作用及び効果が得られる。
【００６５】
（５）第１ユーザプログラム１０２０は、ウォッチドッグキーＫＹ１及びＫＹ２が正しい内容でＷＤキー書き込み領域１０５ａに書き込まれた場合にウォッチドッグタイマをリセットする第１リセット動作を行い、ウォッチドッグキーＫＹ１及びＫＹ２が間違った内容でＷＤキー書き込み領域１０５ａに書き込まれた場合に、ＤＳＰ２１ｂへの電源供給を維持した状態で該ＤＳＰ２１ｂの有するＣＰＵ１０１をリセットする第２リセット動作を行うウォッチドッグモジュール１０５であって、該ウォッチドッグモジュール１０５によるＣＰＵ１０１のリセットを意図的に行うことを示すＷＤＲ通知値を、予め設定したリセットタイミング（切替コマンドの入力タイミング）で、ＷＤＲ通知値書き込み領域１０３ａに書き込む第１ステップと、ウォッチドッグキーＫＹ１及びＫＹ２を間違った内容でＷＤキー書き込み領域１０５ａに書き込むことでウォッチドッグモジュール１０５に第２リセット動作を強制的に行わせる第２ステップと、第２リセット動作によるリセットが行われた後にＷＤＲ通知値書き込み領域１０３ａに書き込まれたＷＤＲ通知値に基づきＣＰＵ１０１のリセットが意図的に行われたことを識別する第３ステップと、を有する処理をＣＰＵ１０１に実行させるためのプログラムを含む。
この構成であれば、ＣＰＵ１０１で第１ユーザプログラム１０２０が実行されることで、上記（２）に記載したＣＰＵ１０１のリセット方法と同等の作用及び効果が得られる。
【００６６】
（６）ウォッチドッグモジュール１０５は、正常値を示すウォッチドッグキーＫＹ１及びＫＹ２がＷＤキー書き込み領域１０５ａに書き込まれた場合に第１リセット動作を行い、異常値を示すウォッチドッグキーＫＹ１及びＫＹ２がＷＤキー書き込み領域１０５ａに書き込まれた場合に第２リセット動作を行う。
この構成であれば、ＣＰＵ１０１で第１ユーザプログラム１０２０が実行されることで、上記（３）に記載したＣＰＵ１０１のリセット方法と同等の作用及び効果が得られる。
【００６７】
（７）電子制御装置の１種であるドライブユニット２は、第１ユーザプログラム１０２０を搭載したＤＳＰ２１ｂを備えている。
この構成によって、上記（４）〜（６）に記載した第１ユーザプログラム１０２０による作用及び効果と同等の作用及び効果を得ることが可能である。
（８）モータ駆動システム１０は、第１ユーザプログラム１０２０を搭載したＤＳＰ２１ｂを備えたドライブユニット２を備えている。
この構成によって、上記（４）〜（６）に記載した第１ユーザプログラム１０２０による作用及び効果と同等の作用及び効果を得ることが可能である。
【００６８】
（第２実施形態）
次に、図７に基づき、本発明の第２実施形態に係る溝研削装置３００について説明する。
第２実施形態に係る溝研削装置３００は、上記第１実施形態のモータ駆動システム１０を、工作機械の１種である溝研削装置に適用したものである。
また、第２実施形態では、切換コマンドの１つとして、更に、診断コマンドを備えると共に、診断コマンドに対応する診断ブートプログラムを備える点が上記第１実施形態と異なる。加えて、第２実施形態では、第１ユーザプログラム１０２０の機能に加えて、システムを初期化するための初期化コマンドの入力に応じて、ウォッチドッグ・リセットを強制的に発動させる機能を備えた第２ユーザプログラム１０２４を備える点が上記第１実施形態と異なる。この初期化コマンドによるリセット機能は、動作モードの切り替えは行わずに、システムの初期化のみを行うことを目的とした機能である。
【００６９】
以下、上記第１実施形態と同様の構成部については、同じ符号を付して適宜説明を省略し、異なる部分を詳細に説明する。
溝研削装置３００は、例えば、転がり軸受の軌道輪（外輪及び内輪）等のワークの周面に転動体の転動路となる溝を、砥石による研削加工によって形成する工作機械である。
この溝研削装置３００は、図７に示すように、溝研削部２００と、ワーク支持部２５０と、モータ駆動システム１０とを含んで構成される。
【００７０】
溝研削部２００は、砥石ヘッド２０１と、回転軸としての砥石スピンドル２０２と、該砥石スピンドル２０２を内部に収容する砥石スピンドルハウジング２０３と、砥石スピンドル２０２の回転駆動源である砥石スピンドル用モータ２０５と、を含んで構成される。
砥石ヘッド２０１は、円盤状の溝研削用砥石２０１ａと、この溝研削用砥石２０１ａを砥石スピンドル２０２に取り付けるための砥石取付軸２０１ｂとから構成されている。
【００７１】
かかる構成によって、溝研削部２００は、砥石スピンドル用モータ２０５によって砥石スピンドル２０２を回転駆動することで、砥石取付軸２０１ｂを介して砥石スピンドル２０２の先端に取り付けられた溝研削用砥石２０１ａを回転する。すなわち、この回転する溝研削用砥石２０１ａをワーク４００の周面に接触させることで、接触面を研削加工して溝を形成する。
【００７２】
ワーク支持部２５０は、支持台２５１と、支持台２５１上に設けられたテーブル２５２と、テーブル２５２上に設けられたワーク支持用部材２５３と、テーブル２５２を回転自在に支持するワーク回転用スピンドル２５４とを含んで構成される。更に、ワーク支持部２５０は、ワーク回転用スピンドル２５４を内部に収容するワーク回転用スピンドルハウジング２５５と、ワーク回転用スピンドル２５４を回転駆動するモータ１とを含んで構成される。
【００７３】
第２実施形態のモータ１は、上記第１実施形態と同様に、ドライブユニット２によって駆動制御される。即ち、上位装置４からモータ回転指令が入力されると、レゾルバからの例えば３相のレゾルバ位置検出信号φＡＢＣを入力してこれに基づきモータ１の回転角度位置の検出を行う。加えて、この位置検出結果と上位装置４からのモータ回転指令とに応じて、モータ１を回転駆動させるためのモータ電流指令値を生成する。そして、パワーアンプ２２で、モータ電流指令値に応じたモータ駆動電流を生成し、生成したモータ駆動電流を、モータケーブル６を介してモータ１に供給する。これによって、モータ１が回転駆動し、ワーク回転用スピンドル２５４を回転駆動する。
【００７４】
また、第２実施形態の上位装置４は、溝研削部２００の砥石スピンドル用モータ２０５のモータ駆動回路（不図示）に対してもモータ回転指令を出力するようになっている。
一方、第２実施形態において、ＤＳＰ２１ｂのＲＯＭ１０２には、図８に示すように、上記第１実施形態の第１ユーザプログラム１０２０に代えて、通常動作モードに対応する第２ユーザプログラム１０２４が格納されている。他にも、ＲＯＭ１０２には、第１ブートプログラム１０２１、第１ＳＣＩブートプログラム１０２２、第１診断ブートプログラム１０２５、その他の動作モードに対応するプログラム１０２６等が格納されている。なお、第１ブートプログラム１０２１、第１ＳＣＩブートプログラム１０２２、第１診断ブートプログラム１０２５及びその他の動作モードに対応するプログラム１０２６（以下、「その他のプログラム１０２６」と称す）は、ＲＯＭ１０２のマスクＲＯＭエリアに格納されている。
【００７５】
ここで、第１診断ブートプログラム１０２５は、動作モードの１つである、ＲＯＭ１０２、ＲＡＭ１０３等のＤＳＰ２１ｂを構成する各素子が正常に動作しているか否かを診断する診断モードを起動するためのブートプログラムである。
また、第２実施形態の第２ユーザプログラム１０２４には、図８に示すように、第２ブートプログラム１０２０ａと、第２ＳＣＩブートプログラム１０２０ｂと、第１診断ブートプログラムと同等の機能を有する第２診断ブートプログラム１０２０ｄとが組み込まれている。更に、第２ユーザプログラム１０２４には、その他のプログラム１０２６に含まれる各動作モードに対応する他のブートプログラムのうち切替コマンドでサポートしているブートプログラム１０２０ｅが組み込まれている。
【００７６】
また、第２実施形態では、診断モードへと切り替えるための切替コマンドとして、診断ブートコマンドが予め設定されている。
そして、第２実施形態のＣＰＵ１０１は、第２ユーザプログラム１０２４の実行中において、端末３を介した診断ブートコマンドの入力に応じて、第２ブートプログラム１０２０ａを起動する。これにより、上記第１実施形態と同様に、ステータス情報が診断モード用の情報に書き換えられ、第２診断ブートプログラムが起動する。その結果、現在の動作モードが診断モードへと切り替わる。
【００７７】
即ち、ＣＰＵ１０１が初期化された状態で診断モードが起動するため、割り込み処理等の不要な処理が開始していない環境（ＣＰＵ１０１の演算処理能力を最大限に活用できる環境）で診断処理を実施することが可能となる。
更に、第２ユーザプログラム１０２４は、予め設定した初期化コマンドの入力に応じて、ＣＰＵ１０１を初期化（リセット）する機能を備えている。
【００７８】
具体的に、ＣＰＵ１０１は、第２ユーザプログラム１０２４の実行中において、端末３を介した初期化コマンドの入力に応じて、上記第１実施形態と同様の手順でウォッチドッグ・リセットを強制的に発動させてＣＰＵ１０１を初期化（リセット）する。
また、初期化コマンドによるＣＰＵ１０１のリセット後は、動作モードの切替を行わない。そのため、第２ユーザプログラム１０２４は、初期化コマンドに対応するウォッチドッグ・リセットの実行後において、モータ１、端末３及び上位装置４からの入力信号に応じた動作処理を再開するように構成されている。
【００７９】
具体的に、第２ユーザプログラム１０２４は、初期化コマンドによるリセットの実行後において、ＲＡＭ１０３に保持されたＷＤＲ通知値及びコマンド情報から、初期化コマンドによる意図的なリセットが実行されたか否かを判定する。そして、意図的なリセットが実行されたと判定すると、ＲＡＭ１０３に保持されたリセット前の位置情報等に基づき、入力信号に応じた動作処理を再開するように構成されている。
（初期化処理及びモード切替処理について）
次に、図９に基づき、ＣＰＵ１０１における、第２実施形態の第２ユーザプログラム１０２４に基づく初期化コマンド又は切替コマンドの入力に応じた動作処理の流れを説明する。
【００８０】
ＣＰＵ１０１において、通常動作モードが起動して、第２実施形態の第２ユーザプログラム１０２４が実行されると、図９に示すように、まず、ステップＳ４００に移行する。
ステップＳ４００では、ＣＰＵ１０１において、初期化コマンド又は切替コマンドが入力されたか否かを判定する。そして、入力されたと判定した場合（Ｙｅｓ）は、初期化コマンドを示す情報又は切替コマンドの種類を示す情報をＲＡＭ１０３の所定領域に書き込んでからステップＳ４０２に移行する。一方、入力されていないと判定した場合（Ｎｏ）は、初期化コマンド又は切替コマンドが入力されるまで判定処理を繰り返す。以下、初期化コマンドを示す情報又は切替コマンドの種類を示す情報を、「コマンド情報」と記載する場合がある。
【００８１】
ステップＳ４０２に移行した場合は、ＣＰＵ１０１において、ＷＤＲ通知値をＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込んで、ステップＳ４０４に移行する。ここで、コマンド情報及びＷＤＲ通知値を別々の情報とせずに、初期化コマンド及び各種切替コマンドにそれぞれ対応するユニークなＷＤＲ通知値を設定して、このＷＤＲ通知値を、ＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに記憶する構成としてもよい。
【００８２】
ステップＳ４０４では、ＣＰＵ１０１において、ＲＯＭ１０２への書き込み等、周辺素子の機能を停止して、ステップＳ４０６に移行する。
ステップＳ４０６では、ＣＰＵ１０１において、ＷＤキー書き込み領域１０５ａに、第１のウォッチドッグキーＫＹ１及び第２のウォッチドッグキーＫＹ２として、異常値（誤った値のキー）を書き込む。これによって、ＷＤＭ１０５に、ウォッチドッグ・リセットを実行させて、一連の処理を終了する。
【００８３】
次に、図１０に基づき、ＣＰＵ１０１の第２ブートプログラム１０２０ａに基づく動作処理の流れを説明する。
ＣＰＵ１０１において、第２実施形態の第２ブートプログラム１０２０ａが起動されると、図１０に示すように、まず、ステップＳ５００に移行する。
ステップＳ５００では、ＣＰＵ１０１において、ＲＡＭ１０３に書き込まれたＷＤＲ通知値及びコマンド情報に基づき、実行されたウォッチドッグ・リセットが、初期化コマンドの入力に応じたウォッチドッグ・リセットか否かを判定する。そして、初期化コマンドの入力に応じたウォッチドッグ・リセットであると判定した場合（Ｙｅｓ）は、ステップＳ５０２に移行し、そうでないと判定した場合（Ｎｏ）は、ステップＳ５０４に移行する。
【００８４】
ステップＳ５０２に移行した場合は、第２ユーザプログラム１０２４による動作処理を再開して、一連の処理を終了する。
一方、ステップＳ５０４に移行した場合は、ＣＰＵ１０１において、ＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込まれたＷＤＲ通知値に基づき、実行されたウォッチドッグ・リセットが、切替コマンドの入力に応じたウォッチドッグ・リセットか否かを判定する。そして、切替コマンドの入力に応じたウォッチドッグ・リセットであると判定した場合（Ｙｅｓ）は、ステップＳ５０６に移行し、そうでないと判定した場合（Ｎｏ）は、処理を終了する。
【００８５】
ステップＳ５０６に移行した場合は、ＣＰＵ１０１において、ウォッチドッグ機能の設定プロテクトを解除すると共に、ウォッチドッグ・リセットの発動を禁止する設定を行う。その後、ウォッチドッグ機能の設定プロテクトを設定して、ステップＳ５０８に移行する。
ステップＳ５０８では、ＣＰＵ１０１において、第１ユーザプログラム１０２０に組み込まれた第２ブートプログラム１０２０ａを起動して、一連の処理を終了する。
【００８６】
（動作）
次に、第２実施形態に係るモータ駆動システム１０の具体的な動作例を説明する。
ドライブユニット２に電源が供給され、第２ユーザプログラム１０２４が実行されると、ＤＳＰ２１ｂにおいて、モータ１、端末３及び上位装置４からの入力信号に応じた処理が実行される。
そして、モータ１が停止した状態でかつ他の処理が実行されていない状態において、ユーザにより、端末３を介して、例えば、動作モードを診断モードに切り替える診断ブートコマンドが入力されたとする（ステップＳ４００のＹｅｓ）。
【００８７】
診断ブートコマンドが入力されると、ＤＳＰ２１ｂのＣＰＵ１０１は、第２ユーザプログラム１０２４に従って、まず、診断ブートコマンドを示す情報をＲＡＭ１０３の所定領域に書き込み、続いて、ＷＤＲ通知値をＲＡＭ１０３のＷＤＲ通知値書き込み領域１０３ａに書き込む（ステップＳ４０２）。引き続き、ＣＰＵ１０１は、周辺素子の機能を停止してから（ステップＳ４０４）、ＷＤキー書き込み領域１０５ａに、異常値を書き込み、ウォッチドッグ・リセットを強制的に発動する（ステップＳ４０６）。
【００８８】
即ち、ＷＤＭ１０５は、ＷＤキー書き込み領域１０５ａに異常値が書き込まれたことに応じて、ＣＰＵ１０１に対してリセット信号を出力する第２リセット動作を行う。これによって、ＣＰＵ１０１がリセットされる。
ウォッチドッグ・リセット後に、ＣＰＵ１０１は、ＲＡＭ１０３の情報に基づき、診断ブートコマンドの入力に応じたウォッチドッグ・リセットであるため（ステップＳ５０４のＹｅｓ）、引き続きＷＤＭ１０５の動作を停止してから（ステップＳ５０６）、第２ブートプログラム１０２０ａを起動する（ステップＳ５０８）。
【００８９】
ＣＰＵ１０１は、第２ブートプログラム１０２０ａを起動すると、起動した第２ブートプログラム１０２０ａに従って、まず、特定ピンのステータス情報をＲＡＭ１０３の所定領域に読み込む。次に、ＲＡＭ１０３の所定領域に書き込まれた診断ブートコマンドを示す情報に基づき、読み込んだ特定ピンのステータス情報を、第２診断ブートプログラムを起動するステータス情報に強制的に書き換える。
【００９０】
これにより、ＣＰＵ１０１は、第２ブートプログラム１０２０ａに従って、起動する動作モードが、第２診断ブートプログラムを起動するモードであると認識して、第２ユーザプログラム１０２４に組み込まれた第２診断ブートプログラム１０２０ｄを起動する。その結果、現在の動作モードが診断モードへと切り替わる。
即ち、ＣＰＵ１０１が初期化された状態で診断モードが起動するため、割り込み処理等の不要な処理が動作していない環境（ＣＰＵ１０１の演算処理能力をフル活用できる環境）で診断処理を開始することが可能となる。
【００９１】
引き続き、診断処理の終了後に通常動作モードが起動して、第２ユーザプログラム１０２４が実行されたとする。
そして、モータ１が停止した状態でかつ他の処理が実行されていない状態において、ユーザにより、端末３を介して、初期化コマンドが入力されたとする（ステップＳ４００のＹｅｓ）。
【００９２】
この場合も、上記診断ブートコマンドのときと同様に、ウォッチドッグ・リセットを強制的に発動して、ＣＰＵ１０１をリセットする（ステップＳ４０２〜Ｓ４０６）。
ＣＰＵ１０１のリセット後は、ＲＡＭ１０３の初期化コマンドを示す情報から、初期化コマンドの入力に応じたウォッチドッグ・リセットであることが識別できるので（ステップＳ５００のＹｅｓ）、ＣＰＵ１０１は、第２ブートプログラム１０２０ａを起動せずに、第２ユーザプログラム１０２４による動作処理を再開する（ステップＳ５０２）。
【００９３】
ここで、ウォッチドッグ・リセットは、ＤＳＰ２１ｂの電源を落とさずに行われるリセットである。そのため、第２ユーザプログラム１０２４による動作処理の再開後は、ウォッチドッグ・リセット前（初期化前）にＲＡＭ１０３に記憶された位置情報が残っている状態となる。従って、ＣＰＵ１０１は、ＲＡＭ１０３に残された位置情報に基づき、入力信号に応じた各種動作処理を実行することが可能となる。即ち、ウォッチドッグ・リセットによって、センサ出力（３相のレゾルバ位置検出信号φＡＢＣ）に基づく位置情報を維持した状態で、ＣＰＵ１０１を、割り込み処理の開始前に戻すことが可能である。
【００９４】
ここで、第２実施形態において、ＤＳＰ２１ｂがマイクロコントローラに対応し、ＣＰＵ１０１がプロセッサに対応し、第２ユーザプログラム１０２４がプロセッサのリセットプログラムに対応する。
また、第２実施形態において、ドライブユニット２が電子制御装置に対応し、溝研削装置３００が工作機械に対応する。
【００９５】
（第２実施形態の効果）
（１）工作機械の１種である溝研削装置３００は、第２ユーザプログラム１０２４を搭載したＤＳＰ２１ｂを備えたドライブユニット２を含むモータ駆動システム１０を備えている。第２ユーザプログラム１０２４は、上記第１実施形態の第１ユーザプログラム１０２０に、診断モードに対応した第２診断ブートプログラムと初期化コマンドによる初期化機能とを加えたプログラムとした。
【００９６】
この構成によって、上記第１実施形態のモータ駆動システム１０と同等の作用及び効果を得ることが可能である。
加えて、初期化コマンドによるリセット機能によって、例えば、ドライブユニット２が製造装置に組み込まれ、ドライブユニット２の物理的な電源のＯＮ／ＯＦＦが困難な場合に、ソフトウェア上から簡易にＤＳＰ２１ｂのＣＰＵ１０１のリセットを行ってドライブユニット２を、電源を再投入した時と同等の状態にする（初期化する）ことが可能となる。
【００９７】
（変形例）
（１）上記各実施形態では、第１ユーザプログラム１０２０又は第２ユーザプログラム１０２４を、モータ駆動システム１０を構成するドライブユニット２のＤＳＰ２１ｂに適用する構成としたが、この構成に限らない。他のシステムを構成する電子制御装置のマイコンに適用する構成としてもよい。
【００９８】
（２）上記第２実施形態では、モータ駆動システム１０を工作機械の１種である溝研削装置に適用する構成としたが、この構成に限らない。例えば、金属、木材、石材、樹脂等に対して、モータを駆動源として、切断、穿孔、研削、研磨、圧延、鍛造、折り曲げ等の加工を施す他の工作機械に適用してもよい。
（３）上記各実施形態では、ウォッチドッグ・リセットを利用して、現在の動作モードをＳＣＩブートモードに切り替えて、第１ユーザプログラム１０２０又は第２ユーザプログラム１０２４を、シリアル通信ポートを介して書き換える例を説明した。この構成に限らず、例えば、ＤＳＰ２１ｂのファームウェアの書き換え等の他の書き換え処理に適用してもよい。
【００９９】
（４）上記各実施形態では、ウォッチドッグモジュール１０５が、ウォッチドッグキーＫＹ１及びＫＹ２の２つのキーの書き込み内容に基づき、ウォッチドッグカウンタのリセット動作や、ＣＰＵ１０１のリセット動作を行う構成とした。この構成に限らず、１つ又は３つ以上のウォッチドッグキーの書き込み内容に基づき、ウォッチドッグカウンタのリセット動作や、ＣＰＵ１０１のリセット動作を行う構成としてもよい。
【０１００】
また、上記各実施形態は、本発明の好適な具体例であり、技術的に好ましい種々の限定が付されているが、本発明の範囲は、上記の説明において特に本発明を限定する旨の記載がない限り、これらの形態に限られるものではない。また、上記の説明で用いる図面は、図示の便宜上、部材ないし部分の縦横の縮尺は実際のものとは異なる模式図である。
また、本発明は上記各実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【０１０１】
１  モータ、２  ドライブユニット、３  端末、４  上位装置、１０  モータ駆動システム、２１  制御回路、２１ｂ  ＤＳＰ、ＣＮ１〜ＣＮ５  第１〜第５コネクタ、７  シリアルケーブル、１０１  ＣＰＵ、１０２  ＲＯＭ、１０４  Ｉ／Ｏモジュール、１０５  ウォッチドッグモジュール、３００  溝研削装置、１０２０  第１ユーザプログラム、１０２０ａ  第２ブートプログラム、１０２０ｂ  第２ＳＣＩブートプログラム、１０２０ｃ，１０２０ｅ  サポートしているその他のブートプログラム、１０２０ｄ  第２診断ブートプログラム、１０２１  第１ブートプログラム、１０２２  第１ＳＣＩブートプログラム、１０２３，１０２６  その他のプログラム、１０２４  第２ユーザプログラム、１０２５  第１診断ブートプログラム
【図１】
2016218864.tif 000003
【図２】
2016218864.tif 000004
【図３】
2016218864.tif 000005
【図４】
2016218864.tif 000006
【図５】
2016218864.tif 000007
【図６】
2016218864.tif 000008
【図７】
2016218864.tif 000009
【図８】
2016218864.tif 000010
【図９】
2016218864.tif 000011
【図１０】
2016218864.tif 000012