(57)【要約】【課題】  複数種類の制御プログラムを実行して制御対象装置の制御を行う制御装置の動作異常を効果的に検出する。【解決手段】  制御装置２０の制御プログラムＡおよびＢの各々の処理を開始するとき処理開始信号ＡＯＮ（ＢＯＮ）を送信し、処理を終了するとき処理終了信号ＡＯＦＦ（ＢＯＦＦ）を送信する。異常監視装置３０のＣＰＵ３０１１は、制御プログラムＡおよびＢの各々について、処理開始信号ＡＯＮ（ＢＯＮ）が受信されてから処理終了信号ＡＯＦＦ（ＢＯＦＦ）が受信されるまでの処理時間を計時し、各制御プログラムの処理時間と許容範囲との比較により、制御装置２０の動作の異常を検出する。そして、制御装置２０の動作の異常を検出した場合、異常通知信号を制御装置２０に送信する。【選択図】図１
2017037606.tif 000002
【特許請求の範囲】
【請求項１】
複数種類の周期的な割込要求信号に応じて制御対象装置を駆動制御するための複数種類の制御プログラムを各々実行し、前記割込要求信号に応じて前記制御プログラムを実行する都度、当該制御プログラムを特定する実行状況信号を出力する制御装置と、
前記実行状況信号に基づいて、前記制御装置の動作の異常を検出する異常監視装置と
を具備することを特徴とする駆動制御システム。
【請求項２】
前記実行状況信号は、前記制御プログラムの処理開始タイミングを示す処理開始信号を含むことを特徴とする請求項１に記載の駆動制御システム。
【請求項３】
前記実行状況信号は、前記制御プログラムの処理終了タイミングを示す処理終了信号を含むことを特徴とする請求項１に記載の駆動制御システム。
【請求項４】
前記実行状況信号は、前記制御プログラムの処理開始タイミングを示す処理開始信号と前記制御プログラムの処理終了タイミングを示す処理終了信号とを含むことを特徴とする請求項１に記載の駆動制御システム。
【請求項５】
前記異常監視装置は、前記実行状況信号に基づいて、前記複数種類の制御プログラムの各々についての処理時間の計時を行い、処理時間と許容範囲との比較により前記制御装置の動作の異常を検出することを特徴とする請求項１〜４のいずれか１の請求項に記載の駆動制御システム。
【請求項６】
前記異常監視装置は、前記複数種類の制御プログラムの各々について、当該制御プログラムの処理終了タイミングにおける処理時間の計時結果と前記許容範囲との比較により前記制御装置の動作の異常を検出することを特徴とする請求項５に記載の駆動制御システム。
【請求項７】
前記異常監視装置は、前記複数種類の制御プログラムのいずれかの処理時間が前記許容範囲の上限を越えた場合に前記制御装置の動作の異常が発生したと判定することを特徴とする請求項５に記載の駆動制御システム。
【請求項８】
前記異常監視装置は、前記制御プログラムの全制御処理を構成する複数の制御処理の各々について処理時間の計時を行い、処理時間と許容範囲との比較により前記制御装置の動作の異常を検出することを特徴とする請求項１〜７のいずれか１の請求項に記載の駆動制御システム。
【請求項９】
前記制御装置は、前記制御プログラムの全制御処理を構成する複数の制御処理の各々の処理開始タイミングを示す処理開始信号を前記異常監視装置に送信し、
前記異常監視装置は、前記複数の制御処理についての処理開始信号の受信タイミングに基づいて、前記複数の制御処理の各々についての処理時間の計時を行うことを特徴とする請求項８に記載の駆動制御システム。
【請求項１０】
前記制御装置は、前記制御プログラムの全制御処理を構成する複数の制御処理の各々の処理開始タイミングを示す処理開始信号と各々の処理終了タイミングを示す処理終了信号を出力し、
前記異常監視装置は、前記複数の制御処理についての処理開始信号および処理終了信号の各受信タイミング間の時間を前記複数の制御処理の処理時間として計時することを特徴とする請求項８に記載の駆動制御システム。
【請求項１１】
前記異常監視装置は、前記制御プログラムの全制御処理を構成する複数の制御処理の処理順序に基づいて、前記制御装置の動作の異常を検出することを特徴とする請求項１〜１０のいずれか１の請求項に記載の駆動制御システム。
【請求項１２】
前記異常監視装置は、前記制御プログラムの全制御処理を構成する複数の制御処理の処理開始タイミングのジッタに基づいて、前記制御装置の動作の異常を検出することを特徴とする請求項１〜１１のいずれか１の請求項に記載の駆動制御システム。
【請求項１３】
前記異常監視装置は、前記制御装置の動作の異常を検出した場合に前記制御装置に異常通知信号を送信することを特徴とする請求項１〜１２のいずれか１の請求項に記載の駆動制御システム。
【請求項１４】
前記異常監視装置は、前記制御装置の動作の異常を検出した場合に前記制御対象装置に異常通知信号を送信することを特徴とする請求項１〜１２のいずれか１の請求項に記載の駆動制御システム。
【請求項１５】
前記異常監視装置は、前記制御装置の動作の異常を検出した場合に前記制御装置および前記制御対象装置に異常通知信号を送信することを特徴とする請求項１〜１２のいずれか１の請求項に記載の駆動制御システム。
【請求項１６】
複数種類の周期的な割込要求信号に応じて制御対象装置を駆動制御するための複数種類の制御プログラムを各々実行し、前記割込要求信号に応じて前記制御プログラムを実行する都度、当該制御プログラムを特定する実行状況信号を出力する制御装置から前記実行状況信号を受信し、前記実行状況信号に基づいて、前記制御装置の動作の異常を検出する異常監視手段を具備することを特徴とする異常監視装置。
【請求項１７】
前記異常監視手段は、前記実行状況信号に基づいて、前記複数種類の制御プログラムの各々についての処理時間の計時を行い、処理時間と許容範囲との比較により前記制御装置の動作の異常を検出することを特徴とする請求項１６に記載の異常監視装置。
【請求項１８】
前記異常監視手段は、前記制御プログラムの全制御処理を構成する複数の制御処理の各々について処理時間の計時を行い、処理時間と許容範囲との比較により前記制御装置の動作の異常を検出することを特徴とする請求項１６または１７に記載の駆動制御システム。
【請求項１９】
前記異常監視手段は、前記制御プログラムの全制御処理を構成する複数の制御処理の処理順序に基づいて、前記制御装置の動作の異常を検出することを特徴とする請求項１６〜１８のいずれか１の請求項に記載の異常監視装置。
【請求項２０】
前記異常監視手段は、前記制御プログラムの制御処理を分割した複数の制御処理の処理開始タイミングのジッタに基づいて、前記制御装置の動作の異常を検出することを特徴とする請求項１６〜１９のいずれか１の請求項に記載の異常監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、制御装置の異常動作を監視する異常監視装置およびこの異常監視装置を備えた駆動制御システムに関する。
【背景技術】
【０００２】
制御装置が生成する制御信号によりアクチュエータ等の制御対象装置の駆動制御を行う駆動制御システムでは、制御装置の異常への対策が強く求められている。そこで、制御装置を監視し、制御装置の異常を検知する技術が種々開発されている。
【０００３】
例えば、特許文献１には、制御装置の状態遷移を監視することにより、制御装置の動作の異常を検出する技術が開示されている。図１３は、この特許文献１の技術を適用した駆動制御システム４の構成を例示するブロック図である。この駆動制御システム４は、指令入力装置１１、制御装置２１、異常監視装置３１および制御対象装置４１を有する。制御装置２１は、指令入力装置１１から入力された指令に応じて制御信号を生成する。そして、制御装置２１は、この制御信号により例えばアクチュエータ等の制御対象装置４１を制御する。また、異常監視装置３１は、制御装置２１から自装置の状態遷移を示す信号を受信し、制御装置２１の状態遷移を監視する。この監視の結果、制御装置２１の状態遷移の異常を検知した場合、異常監視装置３１は、異常通知信号を制御装置２１に供給し、制御対象装置４１に対する制御信号の供給を停止させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４９６２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、図１３に示す駆動制御システム４では、制御装置２１が制御対象装置４１に異常な制御信号を供給するにも関わらず、異常監視装置３１がその異常動作を検知できない場合がある。図１４は制御装置２１の正常動作の例を示すタイムチャートであり、図１５は制御装置２１の異常動作の例を示すタイムチャートである。
【０００６】
図１４に示す動作例において、制御装置２１は、周期ＴＡで発生する割込要求信号ＩＲＱＡに応じて制御プログラムＡ０を実行し、周期ＴＢで発生する割込要求信号ＩＲＱＢに応じて制御プログラムＢ０を実行する。そして、制御装置２１は、制御プログラムＡ０の実行により生成した制御信号を制御対象装置４１に供給するとともに、制御プログラムＢ０の実行により生成した制御信号を制御対象装置４１に供給する。
【０００７】
図１５に示す動作例でも、制御装置２１は、周期ＴＡで発生する割込要求信号ＩＲＱＡに応じて制御プログラムＡ０を実行し、周期ＴＢで発生する割込要求信号ＩＲＱＢに応じて制御プログラムＢ０を実行する。しかし、この動作例では、制御プログラムＡ０の実行と制御プログラムＢ０の実行との競合が発生している。具体的には、制御装置２１が時刻ｔ１において実行を開始した制御プログラムＡ０が、本来の終了予定時刻である時刻ｔ２において終了せずに、処理時間が長くなり時刻ｔ５において終了する。このような処理時間の長期化が発生する原因として、例えば制御プログラムＡ０への入力信号の増加に伴う演算量の増加があり得る。また、制御装置２１のＣＰＵに与えられるクロックに抜けが生じ、制御プログラムＡ０の実行に必要な個数のクロックがＣＰＵに与えられるのに要する時間が長期化する、といった原因もあり得る。
【０００８】
そして、図１５に示す動作例では、制御装置２１が制御プログラムＡ０を実行している時刻ｔ２と時刻ｔ５の間の時間内の時刻ｔ３に割込要求信号ＩＲＱＢが発生している。しかし、この動作例では、制御プログラムＡ０は制御プログラムＢ０よりも優先度が高い。そのため、制御装置２１は、時刻ｔ３において制御プログラムＢ０の実行を開始せず、制御プログラムＡ０を続行する。さらに、この動作例では、時刻ｔ３の後の時刻ｔ４において割込要求信号ＩＲＱＢが発生するが、この時点においても制御装置２１は制御プログラムＡ０を続行する。そして、時刻ｔ４の後の時刻ｔ５において制御プログラムＡ０の実行が終了する。そこで、制御装置２１は、この時刻ｔ５において制御プログラムＢ０の実行を開始する。
【０００９】
以上のように、図１５に示す動作例では、時刻ｔ３において実行されるべきである制御プログラムＢ０が実行されない。以下では、便宜上、この現象を割込抜けと呼ぶ。このような割込抜けが発生すると、制御プログラムＢ０の実行により制御対象装置４１に供給されるべきであった制御信号が制御対象装置４１に供給されない。また、制御プログラムＢ０が例えば制御対象装置４１の状態を示す信号等の外部からの入力信号を取り込んで処理するプログラムである場合、割込抜けが発生すると、入力信号の取り込みを割込抜けの回数だけ仕損じることになり、これに起因して不適切な制御信号を制御対象装置４１に供給する可能性がある。従って、制御対象装置４１の動作に異常が発生する可能性がある。しかしながら、このように割込抜けが発生して制御装置２１から制御対象装置４１に供給される制御信号に異常が生じる状況であっても、制御装置２１の状態遷移が正常である限り、異常監視装置３１は、異常通知信号を制御装置２１に対して出力しない。このように従来の異常監視装置３１は、制御装置２１による制御対象装置４１の制御に異常が発生する可能性があっても、そのような異常発生の可能性を検知することができない問題があった。
【００１０】
プログラムの処理時間の長期化を検出するための手段としてウォッチドッグタイマを使用する技術がある。この技術において、ＣＰＵは、一定時間以上の間隔を空けないでウォッチドッグタイマをリセットする。ウォッチドッグタイマは、リセットされる都度、タイマ値を初期化して計時を繰り返すが、一定時間以上リセットされないと、タイムアウトとなり、ＣＰＵをリセットする。この技術によれば、ＣＰＵが暴走して長期間に亙ってウォッチドッグタイマをリセットしないと、ウォッチドッグタイマは、タイムアウトとなり、ＣＰＵをリセットする。従って、例えば無限ループへの侵入等のＣＰＵの暴走を食い止めることができる。
【００１１】
従来技術の問題を解決するために、このウォッチドッグタイマの技術を適用することも考えられる。上記ウォッチドッグタイマの技術を上記駆動制御システムに適用するとなると、制御装置２１が制御プログラムＡ０およびＢ０のいずれをも実行していない期間を利用して実行するアイドル処理プログラムの中でウォッチドッグタイマのリセットを行うことになる。しかし、このようにウォッチドッグタイマの技術を上記駆動制御システムに適用したとしても、割込抜けを検知することはできず、上記問題を解決することはできない。
【００１２】
この発明は、以上説明した事情に鑑みてなされたものであり、複数種類の制御プログラムを実行して制御対象装置の制御を行う制御装置の動作異常を効果的に検出する手段を提供することを目的としている。
【課題を解決するための手段】
【００１３】
この発明は、複数種類の周期的な割込要求信号に応じて制御対象装置を駆動制御するための複数種類の制御プログラムを各々実行し、前記割込要求信号に応じて前記制御プログラムを実行する都度、当該制御プログラムを特定する実行状況信号を出力する制御装置と、前記実行状況信号に基づいて、前記制御装置の動作の異常を検出する異常監視装置とを具備することを特徴とする駆動制御システムを提供する。
【発明の効果】
【００１４】
この発明によれば、異常監視装置は、複数種類の制御プログラムの各々についての実行状況を監視することができるので、制御装置の動作の異常を適切に検出することができる。
【図面の簡単な説明】
【００１５】
【図１】この発明の第１実施形態による駆動制御システム１の構成を示すブロック図である。
【図２】同駆動制御システム１の制御装置２０のＣＰＵ２０１１が実行する制御プログラムＡ１およびＢ１の処理内容を示すフローチャートである。
【図３】同駆動制御システム１の異常監視装置３０のＣＰＵ３０１１が実行する計時処理プログラムの処理内容を示すフローチャートである。
【図４】同ＣＰＵ３０１１が実行する受信処理プログラムの処理内容を示すフローチャートである。
【図５】同実施形態における処理時間の許容範囲を例示する図である。
【図６】同実施形態の動作例を示すタイムチャートである。
【図７】この発明の第２実施形態において制御装置２０のＣＰＵ２０１１が実行する制御プログラムＡ２の処理内容を示すフローチャートである。
【図８】同実施形態において異常監視装置３０のＣＰＵ３０１１が実行する計時処理プログラムの処理内容を示すフローチャートである。
【図９】同ＣＰＵ３０１１が実行する受信処理プログラムの処理内容を示すフローチャートである。
【図１０】同実施形態における処理時間の許容範囲を例示する図である。
【図１１】同実施形態の動作例を示すタイムチャートである。
【図１２】この発明の第３実施形態による駆動制御システムの構成を示すブロック図である。
【図１３】従来の駆動制御システム４の構成を示すブロック図である。
【図１４】同駆動制御システム４の制御装置２１の正常動作の例を示すタイムチャートである。
【図１５】同駆動制御システム４の制御装置２１の異常動作の例を示すタイムチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照しつつ、この発明の各実施形態について説明する。
【００１７】
＜第１実施形態＞
図１は、この発明の第１実施形態による駆動制御システム１の構成を示すブロック図である。駆動制御システム１は、指令入力装置１０、制御装置２０、異常監視装置３０および制御対象装置４０を有する。
【００１８】
制御装置２０は、制御部２０１およびタイミング生成部２０２を有する。タイミング生成部２０２は、所定周波数の基本クロックφ０、この基本クロックφ０を分周した周期ＴＡの割込要求信号ＩＲＱＡおよび周期ＴＢ（≠ＴＡ）の割込要求信号ＩＲＱＢを生成し、制御部２０１に供給する。
【００１９】
制御部２０１は、ＣＰＵ２０１１、ＲＡＭ２０１２およびＲＯＭ２０１３を有する。ＲＯＭ２０１３には制御対象装置４０を制御するための制御プログラムＡ１およびＢ１が格納されている。ＲＡＭ２０１２は、制御プログラムＡ１およびＢ１を実行する際のワークエリアとしてＣＰＵ２０１１によって利用される。
【００２０】
ＣＰＵ２０１１は、タイミング生成部２０２が生成する割込要求信号ＩＲＱＡに応じて制御プログラムＡ１を実行し、割込要求信号ＩＲＱＢに応じて制御プログラムＢ１を実行し、基本クロックφ０に基づいて各プログラムを構成する個々の命令を実行する。ここで、ＣＰＵ２０１１は、割込要求信号ＩＲＱＡおよびＩＲＱＢが競合する場合、割込要求信号ＩＲＱＡに応じた制御プログラムＡ１の実行終了を待って、割込要求信号ＩＲＱＢに応じた制御プログラムＢ１の実行を開始する。そして、ＣＰＵ２０１１は、制御プログラムＡ１およびＢ１を実行することにより指令入力装置１０が出力する指令に基づいて制御信号を生成し、制御対象装置４０に供給する。
【００２１】
図２（ａ）は本実施形態における制御プログラムＡ１の処理内容を示すフローチャート、図２（ｂ）は本実施形態における制御プログラムＢ１の処理内容を示すフローチャートである。ＣＰＵ２０１１は、割込要求信号ＩＲＱＡに応じて制御プログラムＡ１の実行を開始すると、制御プログラムＡ１の処理開始タイミングを示す処理開始信号ＡＯＮを異常監視装置３０に送信する（ステップＳ１０１）。次にＣＰＵ２０１１は、制御プログラムＡ１の本来の制御処理（制御対象装置４０の制御）を実行する（ステップＳ１０２）。そして、ＣＰＵ２０１１は、この制御処理が終了すると、制御プログラムＡ１の処理終了タイミングを示す処理終了信号ＡＯＦＦを異常監視装置３０に送信し（ステップＳ１０３）、制御プログラムＡ１を終了する。
【００２２】
同様にＣＰＵ２０１１は、割込要求信号ＩＲＱＢに応じて制御プログラムＢ１の実行を開始すると、制御プログラムＢ１の処理開始タイミングを示す処理開始信号ＢＯＮを異常監視装置３０に送信する（ステップＳ１１１）。次にＣＰＵ２０１１は、制御プログラムＢ１の本来の制御処理（制御対象装置４０の制御）を実行する（ステップＳ１１２）。そして、ＣＰＵ２０１１は、この制御処理が終了すると、制御プログラムＢ１の処理終了タイミングを示す処理終了信号ＢＯＦＦを異常監視装置３０に送信し（ステップＳ１１３）、制御プログラムＢ１を終了する。
【００２３】
本実施形態において、処理開始信号ＡＯＮおよびＢＯＮと、処理終了信号ＡＯＦＦおよびＢＯＦＦとを区別する必要がない場合には、これらを実行状況信号と総称する。
【００２４】
異常監視装置３０は、制御装置２０が送信する実行状況信号に基づいて、制御装置２０の動作の異常を検出し、異常通知信号を制御装置２０に送信する装置である。制御装置２０のＣＰＵ２０１１は、異常監視装置３０から異常通知信号を受信すると、制御対象装置４０を安全に停止させるための制御を行って制御対象装置４０に対する制御信号の供給を停止する。
【００２５】
図１に示すように、異常監視装置３０は、監視部３０１およびタイミング生成部３０２を有する。タイミング生成部３０２は、所定周波数の基本クロックφ１とこの基本クロックφ１を分周した所定周波数の計時用クロックφ２を生成し、監視部３０１に供給する。なお、タイミング生成部２０２および３０２が各々生成する基本クロックφ０およびφ１は非同期である。
【００２６】
監視部３０１は、ＣＰＵ３０１１、ＲＡＭ３０１２およびＲＯＭ３０１３を有する。ＲＯＭ３０１３には異常監視プログラム３０１３Ｄが格納されている。この異常監視プログラム３０１３Ｄは、計時処理プログラム３０１３Ｄａと受信処理プログラム３０１３Ｄｂとを含む。ＲＡＭ３０１２は、ワークエリアとしてＣＰＵ３０１１によって利用される。
【００２７】
ＣＰＵ３０１１は、タイミング生成部３０２が生成する基本クロックφ１に基づいてプログラムを構成する各命令を実行する。また、ＣＰＵ３０１１は、タイミング生成部３０２から計時用クロックφ２が与えられるのに応じて、割込処理として計時処理プログラム３０１３Ｄａを実行する。また、ＣＰＵ３０１１は、制御装置２０から実行状況信号が受信されるのに応じて、割込処理として受信処理プログラム３０１３Ｄｂを実行する。
【００２８】
ここで、計時処理プログラム３０１３Ｄａは、処理開始信号ＡＯＮの受信タイミングから処理終了信号ＡＯＦＦの受信タイミングまでの経過時間、すなわち、制御プログラムＡ１の処理時間の計時を行うとともに、処理開始信号ＢＯＮの受信タイミングから処理終了信号ＢＯＦＦの受信タイミングまでの経過時間、すなわち、制御プログラムＢ１の処理時間の計時を行うプログラムである。
【００２９】
また、受信処理プログラム３０１３Ｄｂは、制御装置２０から受信される実行状況信号に基づいて計時処理プログラム３０１３Ｄａの計時開始、計時終了の制御を行うとともに、計時結果に基づいて制御装置２０が異常動作しているか否かを判定するプログラムである。
【００３０】
図３は計時処理プログラム３０１３Ｄａの処理内容を示すフローチャートである。また、図４は受信処理プログラム３０１３Ｄｂの処理内容を示すフローチャートである。以下、これらの図を参照し、本実施形態の動作を説明する。
【００３１】
異常監視装置３０のＣＰＵ３０１１は、タイミング生成部３０２が計時用クロックφ２を出力する都度、図３に示す計時処理プログラム３０１３Ｄａを実行する。まず、ＣＰＵ３０１１は、制御プログラムＡ１用の計時指示フラグＦＣＡが“１”であるか否か、すなわち、制御プログラムＡ１についての処理時間の計時が指示されているか否かを判断する（ステップＳ２０１）。この判断結果が「ＹＥＳ」である場合、ＣＰＵ３０１１は、制御プログラムＡ１の処理開始からの経過時間を示す計時値ＴＣＡを計時用クロックφ２の周期に相当する時間ΔＴだけ増加させ（ステップＳ２０２）、ステップＳ２０３へ進む。一方、ステップＳ２０１の判断結果が「ＮＯ」である場合、ＣＰＵ３０１１は、ステップＳ２０２を実行することなくステップＳ２０３に進む。
【００３２】
次にステップＳ２０３に進むと、ＣＰＵ３０１１は、制御プログラムＢ１用の計時指示フラグＦＣＢが“１”であるか否か、すなわち、制御プログラムＢ１についての処理時間の計時が指示されているか否かを判断する。この判断結果が「ＹＥＳ」である場合、ＣＰＵ３０１１は、制御プログラムＢ１の処理開始からの経過時間を示す計時値ＴＣＢを時間ΔＴだけ増加させ（ステップＳ２０４）、ステップＳ２０５へ進む。一方、ステップＳ２０３の判断結果が「ＮＯ」である場合、ＣＰＵ３０１１は、ステップＳ２０４を実行することなくステップＳ２０５に進む。
【００３３】
次にステップＳ２０５に進むと、ＣＰＵ３０１１は、計時値ＴＣＡおよびＴＣＢの少なくとも一方が所定の上限値を越えたか否かを判断する。この判断結果が「ＹＥＳ」である場合、ＣＰＵ３０１１は、制御装置２０に異常通知信号を送信し（ステップＳ２０６）、計時処理プログラム３０１３Ｄａを終了する。これに対し、ステップＳ２０５の判断結果が「ＮＯ」である場合、ＣＰＵ３０１１は、ステップＳ２０６を実行することなく、計時処理プログラム３０１３Ｄａを終了する。
以上が計時処理プログラム３０１３Ｄａの処理内容である。
【００３４】
なお、以上説明した計時処理プログラム３０１３Ｄａにおいて、ステップＳ２０５およびＳ２０６の処理は、制御装置２０のＣＰＵ２０１１が制御プログラムＡ１またはＢ１を実行している際に無限ループに陥り、その処理時間が著しく長期化した場合にＣＰＵ２０１１を停止させるために設けられている（すなわち、ウォッチドッグタイマとしての機能の実現）。
【００３５】
一方、異常監視装置３０のＣＰＵ３０１１は、制御装置２０から実行状況信号が受信される都度、図４に示す受信処理プログラム３０１３Ｄｂを実行する。まず、ＣＰＵ３０１１は、制御装置２０から受信された実行状況信号が何であるかを判断する（ステップＳ３０１）。
【００３６】
制御装置２０から受信された実行状況信号が処理開始信号ＡＯＮである場合、ＣＰＵ３０１１は、ＡＯＮ対応処理を実行する（ステップＳ３１０）。このＡＯＮ対応処理においてＣＰＵ３０１１は、計時指示フラグＦＣＡを“１”とする。そして、ＣＰＵ３０１１は、受信処理プログラム３０１３Ｄｂを終了する。これにより、以後、計時用クロックφ２の生成により計時処理プログラム３０１３Ｄａが実行された際には、ステップＳ２０１の判断結果が「ＹＥＳ」となり、制御プログラムＡ１の処理開始からの経過時間を示す計時値ＴＣＡを時間ΔＴだけ増加させる処理（ステップＳ２０２）が実行される。
【００３７】
制御装置２０から受信された実行状況信号が処理終了信号ＡＯＦＦである場合、ＣＰＵ３０１１は、ＡＯＦＦ対応処理を実行する（ステップＳ３２０）。このＡＯＦＦ対応処理においてＣＰＵ３０１１は、まず、計時指示フラグＦＣＡを“０”とする（ステップＳ３２１）。これにより、以後、計時用クロックφ２の生成により計時処理プログラム３０１３Ｄａが実行された際には、ステップＳ２０１の判断結果が「ＮＯ」となり、制御プログラムＡ１の処理開始からの経過時間を示す計時値ＴＣＡを時間ΔＴだけ増加させる処理（ステップＳ２０２）は実行されない。
【００３８】
次にＣＰＵ３０１１は、計時値ＴＣＡを制御プログラムＡ１の処理時間データとしてＲＡＭ３０１２に格納する（ステップＳ３２２）。次にＣＰＵ３０１１は、制御プログラムＡ１の処理時間データが許容範囲内か否かを判断する（ステップＳ３２３）。
【００３９】
さらに詳述すると、本実施形態では、図５に示すように、制御プログラムＡ１およびＢ１の各々について、最小処理時間と最大処理時間を示す情報がＲＯＭ３０１３に記憶されている。ここで、最大処理時間は、様々な条件で制御装置２０のＣＰＵ２０１１に制御プログラムＡ１（Ｂ１）を実行させた場合の処理時間の最大値に所定の余裕値を加算した値である。また、最小処理時間は、様々な条件で制御装置２０のＣＰＵ２０１１に制御プログラムＡ１（Ｂ１）を実行させた場合の処理時間の最小値から所定の余裕値を減算した値である。ＣＰＵ３０１１は、ステップＳ３２３において、制御プログラムＡ１の処理時間データが制御プログラムＡ１の最小処理時間以上であり、かつ、最大処理時間であるか否かを判断する。このステップＳ３２３の判断結果が「ＹＥＳ」である場合、ＣＰＵ３０１１の処理はステップＳ３２５に進む。一方、ステップＳ３２３の判断結果が「ＮＯ」である場合、ＣＰＵ３０１１は、制御装置２０に異常通知信号を送信し（ステップＳ３２４）、ステップＳ３２５に進む。
【００４０】
次にステップＳ３２５に進むと、ＣＰＵ３０１１は、制御プログラムＡ１の処理開始からの経過時間を示す計時値ＴＣＡを「０」に初期化する。そして、ＣＰＵ３０１１は、受信処理プログラム３０１３Ｄｂを終了する。
【００４１】
制御装置２０から受信された実行状況信号が処理開始信号ＢＯＮである場合、ＣＰＵ３０１１は、ＢＯＮ対応処理を実行する（ステップＳ３３０）。このＢＯＮ対応処理において、ＣＰＵ３０１１は、計時指示フラグＦＣＢを“１”とする。そして、ＣＰＵ３０１１は、受信処理プログラム３０１３Ｄｂを終了する。これにより、以後、計時用クロックφ２の生成により計時処理プログラム３０１３Ｄａが実行された際には、ステップＳ２０３の判断結果が「ＹＥＳ」となり、制御プログラムＢ１の処理開始からの経過時間を示す計時値ＴＣＢを時間ΔＴだけ増加させる処理（ステップＳ２０４）が実行される。
【００４２】
制御装置２０から受信された実行状況信号が処理開始信号ＢＯＦＦである場合、ＣＰＵ３０１１は、ＢＯＦＦ対応処理を実行する（ステップＳ３４０）。そして、ＣＰＵ３０１１は、受信処理プログラム３０１３Ｄｂを終了する。
【００４３】
ＢＯＦＦ対応処理の内容は、ＡＯＦＦ対応処理と基本的に同様である。ただし、ＢＯＦＦ対応処理では、計時指示フラグＦＣＢが“０”とされ、計時値ＴＣＢに基づいて、ＡＯＦＦ対応処理と同様な処理が行われる。
以上が受信処理プログラム３０１３Ｄｂの処理内容である。
【００４４】
図６は、本実施形態による駆動制御システム１の動作例を示すタイムチャートである。この動作例では、前掲図１５と同様な割込抜けによる動作異常が発生している。時刻ｔ１において割込要求信号ＩＲＱＡに応じて開始された制御プログラムＡ１の処理時間が長引き、時刻ｔ３の割込み要求信号ＩＲＱＢに応じた制御プログラムＢ１の実行が省略されている。時刻ｔ５において制御プログラムＡ１の実行が終了し、処理終了信号ＡＯＦＦがＣＰＵ２０１１から出力されたとき、ＣＰＵ３０１１では、これに応じて受信処理プログラム３０１３Ｄｂが実行される。そして、この受信処理プログラム３０１３ＤｂのステップＳ３２３において、時刻ｔ１の処理開始信号ＡＯＮの発生から時刻ｔ５の処理終了信号ＡＯＦＦの発生までの経過時間である制御プログラムＡ１の処理時間が最大処理時間よりも長いことが検知され、ステップＳ３２４において異常通知信号が制御装置２０に送信されている。
【００４５】
このように本実施形態では、制御装置２０のＣＰＵ２０１１が実行する複数種類の制御プログラムの各々の処理時間が異常監視装置３０によって監視され、各制御プログラムの処理時間が許容範囲から外れたことが検知された場合に異常通知信号が制御装置２０に送信される。そして、制御装置２０では、制御対象装置４０に対する制御信号の供給の停止等、制御の異常の影響を回避するための措置が行われる。従って、本実施形態によれば、制御装置２０のＣＰＵ２０１１が実行する複数種類の制御プログラムのうちのある制御プログラムの処理時間が長引き、それに起因して割込抜けが発生したような場合に、その割込抜けの可能性を検知し、割込抜けに起因した制御の異常の影響が大きくなるのを食い止めることができる。
【００４６】
＜第２実施形態＞
本実施形態による駆動制御システムは、上記第１実施形態における駆動制御システム１と基本的に同じ構成を有しているが、次の点において上記第１実施形態と異なる。
【００４７】
まず、本実施形態において制御装置２０が実行する複数種類の制御プログラムは、制御処理全体としての処理開始信号および処理終了信号の送信を行う他、制御処理全体を構成する複数の制御処理毎に処理開始信号および処理終了信号の送信を行うように構成されている。
【００４８】
図７は本実施形態において制御装置２０のＣＰＵ２０１１が割込要求信号ＩＲＱＡに応じて実行する制御プログラムＡ２の処理内容を示すフローチャートである。この制御プログラムＡ２の全制御処理は制御処理ａ（ステップＳ１０２ａ）、制御処理ｂ（ステップＳ１０２ｂ）および制御処理ｃ（ステップＳ１０２ｃ）により構成されている。
【００４９】
上記第１実施形態と同様、制御プログラムＡ２では、制御処理全体の処理開始タイミングにおいて処理開始信号ＡＯＮを異常監視装置３０に送信し（ステップＳ１０１）、制御処理全体の処理終了タイミングにおいて処理終了信号ＡＯＦＦを異常監視装置３０に送信する（ステップＳ１０３）。
【００５０】
これに加えて、本実施形態における制御プログラムＡ２では、制御処理ａの開始時にその制御処理ａの処理番号（制御処理ａを特定する識別番号）を含む処理開始信号ＩＰＯＮを異常監視装置３０に送信し、制御処理ａの終了時に制御処理ａの処理番号を含む処理終了信号ＩＰＯＦＦを異常監視装置３０に送信する。他の制御処理ｂおよびｃについても同様である。
【００５１】
図示は省略したが、ＣＰＵ２０１１は、割込要求信号ＩＲＱＢに応じて制御プログラムＢ２を実行する。この制御プログラムＢ２の内容も制御プログラムＡ２と同様である。この制御プログラムＢ２では、制御処理全体についての処理開始信号ＢＯＮ、処理終了信号ＢＯＦＦの他、その制御処理全体を構成する複数の制御処理について、処理番号を含む処理開始信号ＩＰＯＮおよび処理終了信号ＩＰＯＦＦの送信を行う。
【００５２】
本実施形態における異常監視装置３０は、実行状況信号として、処理開始信号ＡＯＮ、ＢＯＮ、処理終了信号ＡＯＦＦ、ＢＯＦＦの他、処理番号を含む処理開始信号ＩＰＯＮ、処理番号を含む処理終了信号ＩＰＯＦＦを制御装置２０から受信する。
【００５３】
本実施形態における異常監視装置３０は、これらの実行状況信号に基づいて、制御プログラムＡ２およびＢ２の各々についての処理時間を監視することに加え、各制御プログラムの内部的な各制御処理についても処理時間の監視を行う。また、本実施形態における異常監視装置３０は、制御プログラムＡ２およびＢ２の各々の実行過程において、制御プログラムの制御処理全体を構成する複数の制御処理が如何なる順序で実行されるかについても監視する。
【００５４】
図８は本実施形態における異常監視装置３０のＣＰＵ３０１１が計時用クロックに応じて実行する計時処理プログラムの処理内容を示すフローチャートである。この計時処理プログラムは、上記第１実施形態の計時処理プログラム（図３参照）に対し、ステップＳ２０２ａおよびＳ２０４ａの処理番号別計時の処理を追加した内容となっている。
【００５５】
この計時処理プログラムにおいて、制御プログラムＡ２の処理時間の計時を指示する計時指示フラグＦＣＡが“１”である場合には、制御プログラムＡ２に対応した計時値ＴＣＡに計時用クロックφ２の周期に相当する時間ΔＴが加算され（ステップＳ２０２）、その後、ステップ２０２ａの処理番号別計時が実行される。この処理番号別計時では、例えば制御プログラムＡ２の処理番号１の制御処理ａの処理時間の計時を指示するフラグがセットされている場合に、その制御処理ａに対応付けられた計時値を時間ΔＴだけ増加させる。
【００５６】
また、この計時処理プログラムにおいて、制御プログラムＢ２の処理時間の計時を指示する計時指示フラグＦＣＢが“１”である場合には、制御プログラムＢ２に対応した計時値ＴＣＢに計時用クロックφ２の周期に相当する時間ΔＴが加算され（ステップＳ２０４）、その後、ステップ２０４ａの処理番号別計時が実行される。この処理番号別計時では、例えば制御プログラムＢ２の処理番号１の制御処理の処理時間の計時を指示するフラグがセットされている場合に、その制御処理に対応付けられた計時値を時間ΔＴだけ増加させる。
他の処理内容は上記第１実施形態の計時処理プログラムと同様である。
【００５７】
図９は本実施形態における異常監視装置３０のＣＰＵ３０１１が実行状況信号の受信に応じて実行する受信処理プログラムの処理内容を示すフローチャートである。異常監視装置３０のＣＰＵ３０１１は、実行状況信号として、処理開始信号ＡＯＮ、ＢＯＮ、処理終了信号ＡＯＦＦ、ＢＯＦＦの他、処理番号を含む処理開始信号ＩＰＯＮ、処理番号を含む処理終了信号ＩＰＯＦＦを受信する。このため、図９では、上記第１実施形態（図４）におけるステップＳ３０１がステップＳ３０１ａに置き換えられている。
【００５８】
ステップＳ３１０、Ｓ３２０、Ｓ３３０、Ｓ３４０は、上記第１実施形態（図４）と同様である。本実施形態では、ステップＳ３５０〜Ｓ３５２、Ｓ３６０〜Ｓ３６２の各処理が上記第１実施形態に対して加わっている。
【００５９】
制御装置２０から受信された実行状況信号が処理番号を含んだ処理開始信号ＩＰＯＮであった場合、ＣＰＵ３０１１の処理は、ステップＳ３０１ａからステップＳ３５０に進み、このステップＳ３５０において、計時指示フラグＦＣＡおよびＦＣＢのいずれが“１”であるかを判断する（処理開始信号ＩＰＯＮが受信される以上、計時指示フラグＦＣＡおよびＦＣＢのいずれかが“１”になっているはずである。）。計時指示フラグＦＣＡが“１”である場合、ＣＰＵ３０１１は、ステップＳ３５１の処理番号別処理を実行して受信処理プログラムを終了する。
【００６０】
このステップＳ３５１の処理番号別処理においてＣＰＵ３０１１は次の各処理を実行する。
【００６１】
（１）まず、ＣＰＵ３０１１は、受信した処理開始信号ＩＰＯＮから処理番号を取り出し、制御プログラムＡ２を構成する複数の制御処理の中の１つであって、当該処理番号により特定される制御処理の処理時間の計時を指示する計時指示フラグに“１”をセットする。これにより上述した計時処理プログラム（図８）が実行されたとき、ステップＳ２０２ａの処理番号別計時では、制御プログラムＡ２を構成する複数の制御処理の中の１つであって、当該処理番号により特定される制御処理に対応した計時値を増加させる処理が行われる。
【００６２】
（２）次にＣＰＵ３０１１は、受信した処理開始信号ＩＰＯＮから取り出した処理番号をＲＡＭ３０１２に格納された制御プログラムＡ２用の処理番号シーケンスの末尾に追加する。なお、ＲＡＭ３０１２に制御プログラムＡ２用の処理番号シーケンスが格納されていない場合には、受信した処理開始信号ＩＰＯＮから取り出した処理番号を処理番号シーケンスの先頭の処理番号としてＲＡＭ３０１２に格納する。
【００６３】
（３）次にＣＰＵ３０１１は、ＲＡＭ３０１２内の制御プログラムＡ２用の処理番号シーケンスが正常であるか否かを判断する。さらに詳述すると、本実施形態では、制御装置２０が正常に制御プログラムＡ２を実行している場合に発生し得る処理番号シーケンス（以下、便宜上、正常処理番号シーケンスという）が１種類または複数種類定義され、ＲＯＭ３０１３に記憶されている。制御プログラムＢ２についても同様である。ＣＰＵ３０１１は、ＲＡＭ３０１２内の制御プログラムＡ２用の処理番号シーケンスがこの正常処理番号シーケンスのいずれかと一致するか否かを判断する。そして、ＲＡＭ３０１２内の制御プログラムＡ２用の処理番号シーケンスがこの正常処理番号シーケンスのいずれとも一致する可能性がないと判断した場合、ＣＰＵ３０１１は、異常通知信号を制御装置２０に送信するのである。
以上がステップＳ３５１の処理番号別処理である。
【００６４】
制御装置２０から受信された実行状況信号が処理番号を含んだ処理開始信号ＩＰＯＮであり、かつ、その時点において計時指示フラグＦＣＢが“１”であった場合、ＣＰＵ３０１１は、ステップＳ３５２の処理番号別処理を実行して受信処理プログラムを終了する。
【００６５】
上述したステップＳ３５１の処理番号別処理は、制御プログラムＡ２を対象としたが、このステップＳ３５２の処理番号別処理は制御プログラムＢ２を対象とする。この点を除けば、ステップＳ３５２の処理はステップＳ３５１の処理と基本的に同様である。
【００６６】
制御装置２０から受信された実行状況信号が処理番号を含んだ処理終了信号ＩＰＯＦＦであり、かつ、その時点において計時指示フラグＦＣＡが“１”であった場合、ＣＰＵ３０１１は、ステップＳ３６１の処理番号別処理を実行して受信処理プログラムを終了する。
【００６７】
このステップＳ３６１の処理番号別処理においてＣＰＵ３０１１は次の各処理を実行する。
【００６８】
（１）まず、ＣＰＵ３０１１は、受信した処理終了信号ＩＰＯＦＦから処理番号を取り出し、制御プログラムＡ２の全制御処理を構成する複数の制御処理の中の１つであって、当該処理番号により特定される制御処理の処理時間の計時を指示する計時指示フラグを“０”にリセットする。これにより、以後、上述した計時処理プログラム（図８）のステップＳ２０２ａでは、当該処理番号により特定される制御処理についての処理時間の計時は行われない。
【００６９】
（２）次にＣＰＵ３０１１は、受信した処理終了信号ＩＰＯＦＦから取り出した処理番号により特定される制御処理の処理時間の計時値（すなわち、当該制御処理の処理時間）が許容範囲内であるか否かを判定する。
【００７０】
さらに詳述すると、本実施形態では、図１０に示すように、制御プログラムＡ２を構成する各処理番号の制御処理について、最小処理時間と最大処理時間を示す情報がＲＯＭ３０１３に記憶されている。図示は省略したが、制御プログラムＢ２を構成する各処理番号の制御処理についても同様である。ここで、最小処理時間と最大処理時間は、様々な条件で制御装置２０のＣＰＵ２０１１に制御プログラムＡ２を実行させたときの処理時間の最小値と最大値を求め、最小値から所定の余裕値を減算し、最大値に所定の余裕値を加算することにより得られた値である。
【００７１】
ＣＰＵ３０１１は、制御プログラムＡ２において処理終了信号ＩＰＯＦＦから取り出した処理番号により特定される制御処理の処理時間データが当該制御処理の最小処理時間以上であり、かつ、最大処理時間以下であるか否かを判断する。この判断結果が「ＮＯ」である場合、ＣＰＵ３０１１は、制御装置２０に異常通知信号を送信する。
【００７２】
（３）次にＣＰＵ３０１１は、受信した処理終了信号ＩＰＯＦＦから取り出した処理番号により特定される制御処理の処理時間の計時値を「０」に初期化する。
以上がステップＳ３６１の処理番号別処理である。
【００７３】
制御装置２０から受信された実行状況信号が処理番号を含んだ処理終了信号ＩＰＯＦＦであり、かつ、その時点において計時指示フラグＦＣＢが“１”であった場合、ＣＰＵ３０１１は、ステップＳ３６２の処理番号別処理を実行して受信処理プログラムを終了する。
【００７４】
上述したステップＳ３６１の処理番号別処理は、制御プログラムＡ２を対象としたが、このステップＳ３６２の処理番号別処理は制御プログラムＢ２を対象とする。この点を除けば、ステップＳ３６２の処理はステップＳ３６１の処理と基本的に同様である。
以上が本実施形態における受信処理プログラムの処理内容である。
【００７５】
本実施形態によれば、上記第1実施形態と同様、制御プログラムＡ２およびＢ２の各々について処理時間の計時が行われ、処理時間が許容範囲から外れる場合に、異常通知信号が制御装置に供給される。従って、割込抜け等、制御装置による制御対象装置の制御の異常を検知し、制御の異常の影響が拡大するのを食い止めることができる。
【００７６】
また、本実施形態によれば、制御プログラムの制御処理全体を構成する複数の制御処理の各々について処理時間の計時が行われ、処理時間が許容範囲から外れる場合に、異常通知信号が制御装置に供給される。従って、本実施形態によれば、複数の内部的な制御処理のいずれかに異常が発生した場合にそれを検知し、制御対象装置が制御の異常の影響を受けるのを回避することができる。
【００７７】
また、制御プログラムの制御処理全体を構成する複数の制御処理の実行順序が正常であるか否かが監視される。図１１（ａ）および（ｂ）はその動作例を示すタイムチャートである。
【００７８】
図１１（ａ）に示す動作例では、制御プログラムＡ２の処理開始を示す処理開始信号ＡＯＮが受信された後、制御プログラムＡ２の処理番号１、２、３の各制御処理の処理開始を示す各処理開始信号が順次受信されている。この場合、処理番号シーケンスは１→２→３となり、これは正常処理番号シーケンスの１つであるので異常通知信号は出力されない。
【００７９】
これに対し、図１１（ｂ）に示す動作例では、制御プログラムＡ２の処理開始を示す処理開始信号ＡＯＮが受信された後、制御プログラムＡ２の処理番号１、３の各制御処理の処理開始を示す各処理開始信号が順次受信されている。ここで、制御プログラムＡ２の正常処理番号シーケンスの中に１の後に３が続く処理番号シーケンスはない。そこで、異常監視装置３０のＣＰＵ３０１１は、受信処理プログラム（図９）の処理番号別処理（ステップＳ３５１）において異常通知信号を制御装置２０に送信する。従って、本実施形態によれば、複数の内部的な制御処理の実行順序の異常が発生した場合にそれを検知し、制御対象装置４０が制御の異常の影響を受けるのを回避することができる。
【００８０】
＜第３実施形態＞
図１２は、この発明の第３実施形態における駆動制御システムの構成を示すブロック図である。本実施形態と上記第１実施形態（図１）との違いは、異常監視装置３０が、制御装置２０ではなく、制御対象装置４０に異常通知信号を供給する点である。上記第１実施形態では、異常通知信号を受け取った制御装置２０が制御対象装置４０への制御信号の供給を停止していた。これに対し、本実施形態では、異常監視装置３０から異常通知信号を受け取った制御対象装置４０が制御装置２０からの制御信号の受信を停止する。
【００８１】
本実施形態によれば、制御装置２０が制御信号の供給／供給停止の制御を行い得ないような重度の動作異常に陥っている場合においても、制御対象装置４０に制御信号の受信を停止させるので、制御対象装置４０が制御装置２０の動作異常の影響を受けるのを回避することができる。また、本実施形態によれば、制御装置２０が制御信号の供給／供給停止の制御を行わなくてよいので、制御装置２０の処理負荷が低くなる利点がある。
【００８２】
＜他の実施形態＞
以上、この発明の第１〜第３実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
【００８３】
（１）上記第１実施形態において異常監視装置３０は、処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングから処理終了信号ＡＯＦＦ（ＢＯＦＦ）の受信タイミングまでの経過時間を計時した。しかし、そのようにする代わりに、処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングから次の処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングまでの経過時間を計時してもよい。処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングから次の処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングまでの間に制御装置２０において割込抜けが発生した場合、前者の受信タイミングから後者の受信タイミングまでの経過時間が割込要求信号ＩＲＱＡ（ＩＲＱＢ）の周期ＴＡ（ＴＢ）の２倍以上になる。従って、この計時を行うことにより制御装置２０の動作異常（具体的には割込抜け）を検出することができる。
【００８４】
また、処理終了信号ＡＯＦＦ（ＢＯＦＦ）の受信タイミングから次の処理終了信号ＡＯＦＦ（ＢＯＦＦ）の受信タイミングまでの間に制御装置２０において割込抜けが発生した場合にも、前者の受信タイミングから後者の受信タイミングまでの経過時間が長期化する。従って、処理終了信号ＡＯＦＦ（ＢＯＦＦ）の受信タイミングから次の処理終了信号ＡＯＦＦ（ＢＯＦＦ）の受信タイミングまでの経過時間を計時することにより制御装置２０の動作の異常を検出してもよい。
【００８５】
（２）上記各実施形態では、制御装置２０は制御対象装置４０の駆動制御を行うために２種類の制御プログラムを実行した。しかし、制御装置２０に実行させる制御プログラムは２種類に限定されるものではなく、３種類以上の制御プログラムを制御装置２０に実行させてもよい。また、上記第２実施形態において、１つの制御プログラムの制御処理を何個の制御処理に分割するかは任意である。
【００８６】
（３）上記第２実施形態において、制御装置２０のＣＰＵ２０１１は、制御プログラムの全制御処理を構成する複数の制御処理の各々について、その処理開始タイミングを示す処理開始信号ＩＰＯＮとその処理終了タイミングを示す処理終了信号ＩＰＯＦＦを異常監視装置３０に送信した。しかし、制御プログラムを構成する複数の制御処理が時間を空けずに連続的に実行される場合、先行する制御処理の処理終了タイミングと後続の制御処理の処理開始タイミングはほぼ一致する。そこで、このような態様においては、ＣＰＵ２０１１は、各制御処理について処理開始信号ＩＰＯＮの送信のみを行い、処理終了信号ＩＰＯＦＦの送信を省略してもよい。この場合、異常監視装置３０では、ある制御処理について処理開始信号ＩＰＯＮを受信した後、後続の制御処理についての処理開始信号ＩＰＯＮしたとき、または制御プログラムの全制御処理についての処理終了信号ＡＯＦＦまたはＢＯＦＦを受信したときに、当該制御処理の処理時間の計時を終了すればよい。
【００８７】
（４）上記第２実施形態において、異常監視装置３０のＣＰＵ３０１１は、制御プログラムＡ２およびＢ２の各々について全ての制御処理の実行が終了したときに、処理番号シーケンスが正常であるか否かを判定してもよい。この態様は、処理番号シーケンスが正常であるか否かの判定処理が簡単なものとなり、ＣＰＵ３０１１の負担が軽くなる利点がある。
【００８８】
（５）上記各実施形態において、制御装置２０のＣＰＵ２０１１は、実行状況信号を送信することと並行し、ＣＰＵ２０１１の内部状態の遷移を示す信号を異常監視装置３０に送信し、異常監視装置３０のＣＰＵ３０１１が制御装置２０のＣＰＵ２０１１の内部状態の遷移が正常であるか否かを判定するようにしてもよい。この場合において、ＣＰＵ３０１１は、制御装置２０が実行する各制御プログラムや各制御処理の進捗状況や状態遷移に関する判定結果を例えばモニタなどの表示装置に表示し、ユーザが進捗状況や状態遷移の判定結果を把握できるようにしてもよい。
【００８９】
（６）上記第１実施形態において、異常監視装置３０のＣＰＵ３０１１は、制御プログラムＡ１およびＢ１の各々について処理時間の計時を行い、各処理時間が許容範囲内に収まるか否かの監視を行った。しかし、そのようにする代わりに、制御プログラムＡ１（Ｂ１）の処理開始タイミングにおいて、制御プログラムＡ１（Ｂ１）の制御処理の終了期限を設定し、その終了期限までに制御処理が終了するか否かを監視するようにしてもよい。
【００９０】
（７）上記第２実施形態において、異常監視装置３０のＣＰＵ３０１１は、制御プログラムＡ２（Ｂ２）の全制御処理を構成する複数の制御処理について処理時間の計時を行い、各処理時間が許容範囲内に収まるか否かの監視を行った。しかし、そのようにする代わりに、例えば制御プログラムＡ２の処理開始タイミングにおいて、制御プログラムＡ２の制御処理全体を構成する複数の制御処理ａ〜ｃの各々について終了期限を設定し、各終了期限までに制御処理ａ〜ｃが終了するか否かを監視するようにしてもよい。
【００９１】
（８）上記各実施形態において、異常監視装置３０は、各制御プログラムの制御処理の処理時間を計時し、計時が終了した時点において処理時間を許容範囲と比較した。しかし、そのようにする代わりに、制御処理の処理時間の計時中に処理時間を許容範囲の上限である最大処理時間と比較し、処理時間が最大処理時間を越えた時点において異常通知信号を制御装置２０に送信するようにしてもよい。この態様によれば、異常監視装置３０は、処理時間が最大処理時間を越えて時点において迅速に異常通知信号を送信するので、制御の異常の影響が制御対象装置４０に及ぶのを早期に食い止めることができる。
【００９２】
（９）上記第２実施形態において、制御プログラムＡ２（Ｂ２）の全制御処理を構成する複数の制御処理の各々について処理開始タイミングのジッタを異常監視装置３０が計測するようにしてもよい。このジッタを計測する目的は次の通りである。まず、例えば割込要求信号ＩＲＱＡに応じて制御プログラムＡ２が起動されると、常に処理番号１の制御処理に続いて処理番号２の制御処理が実行されるとする。この場合、処理番号１の制御処理の処理時間が不安定になると、処理番号２の制御処理の処理開始タイミングのジッタが大きくなる。そして、処理番号２の制御処理の処理開始タイミングのジッタが大きくなると、この処理番号２の制御処理に従って行われる制御対象装置４０の制御が不安定になり、これに起因して駆動制御システム全体の動作が不安定になる可能性もある。また、処理番号１の制御処理の処理時間が不安定である場合、その処理番号１の制御処理に従って行われる制御対象装置４０の制御が不安定である可能性もあり、これに起因して駆動制御システム全体の動作が不安定になる可能性もある。そこで、この態様では、このような制御の異常またはその予兆を検知するため、複数種類の制御処理の各々について処理開始タイミングのジッタを異常監視装置３０が計測する。
【００９３】
ジッタの計測方法としては各種の方法が考えられるが、例えば次のようにしてもよい。まず、異常監視装置３０は、制御プログラムＡ２（Ｂ２）の処理開始タイミングを示す処理開始信号ＡＯＮ（ＢＯＮ）を受信する都度、その処理開始信号ＡＯＮ（ＢＯＮ）の受信タイミングから処理番号ｎ（ｎ＝１、２、…）の各制御処理の処理開始タイミングを示す処理開始信号ＩＰＯＮまでの各経過時間（以下、ＡＯＮ−ＩＰＯＮ（またはＢＯＮ−ＩＰＯＮ）間経過時間という）を計測する処理を繰り返す。そして、異常監視装置３０は、制御プログラムＡ２（Ｂ２）の処理開始タイミングを示す処理開始信号ＡＯＮ（ＢＯＮ）を受信する都度、処理番号毎に、それまでに得られた所定回数分のＡＯＮ−ＩＰＯＮ（またはＢＯＮ−ＩＰＯＮ）間経過時間の計測結果のばらつき（例えば標準偏差）を上記ジッタを示す情報として算出するのである。
【００９４】
あるいは次のような方法も考えられる。異常監視装置３０は、処理番号毎に、その処理番号を含む処理開始信号ＩＰＯＮの受信タイミング間隔を繰り返し計時し、１つの受信タイミング間隔を計時する都度、それまでに得られた所定回数分の受信タイミング間隔のばらつき（例えば標準偏差）を上記ジッタを示す情報として算出するのである。
【００９５】
（１０）上記第１および第２実施形態において、異常通知信号を受信した制御装置２０は、所定時間を要して制御対象装置４０を安全に停止させるための制御を行ってもよい。また、制御装置２０に異常通知信号を送信した異常監視装置３０は、上記所定時間よりも長い時間が経過したとき、制御対象装置４０に異常通知信号を送信し、制御装置２０からの制御信号の受信を停止させてもよい。この態様によれば、制御装置２０の動作異常が軽度であり、制御対象装置４０を安全に停止させる機能が損なわれていない場合には、この機能が正常に働いて、制御対象装置４０を安全に停止させることができる。一方、制御装置２０の動作異常が重度であり、制御対象装置４０を安全に停止させる機能が損なわれている場合には、制御対象装置４０は、異常監視装置３０からの異常通知信号に応じて、制御装置２０からの制御信号の受信を停止する。従って、制御装置２０の動作異常が軽度であるか重度であるかにより適切な態様で制御対象装置４０を停止させることができる。
【００９６】
（１１）上記第１実施形態において、図３のステップＳ２０５およびＳ２０６の処理は、制御装置２０のＣＰＵ２０１１の処理が無限ループに陥った場合にそれを検出して異常通知信号を送信するために設けられたものである。しかし、ステップＳ２０５において計時値ＴＣＡ、ＴＣＢと比較する上限値を割込抜けの検出が可能な程度の小さな値にしてもよい。この場合、図４のステップＳ３２３およびＳ３２４の処理と、ステップＳ３４０内のステップＳ３２３およびＳ３２４に相当する処理を省略することができる。上記第２実施形態についても同様である。
【００９７】
（１２）上記各実施形態では、制御装置から異常監視装置へ複数種類の実行状況信号が送信されるが、この実行状況信号の送信に関しても各種の態様が考えられる。ある態様では、制御装置および異常監視装置間に実行状況信号の種類毎に通信線が設けられる。ある種類の実行状況信号はその種類に対応した通信線を介して制御装置から異常監視装置に送信される。他の態様では、各実行状況信号は複数のビットにより構成される。そして、この複数ビットからなる実行状況信号が１本の通信線を介して制御装置から異常監視装置にシリアル転送される。他の態様では、複数ビットからなる実行状況信号がそれらのビットの組み合わせに対応した電圧値または電流値を有するアナログ信号に変換され、１本の通信線を介して制御装置から異常監視装置に送信される。そして、異常監視装置側でアナログ信号が複数ビットからなる実行状況信号に逆変換される。実行状況信号を伝送するためのＲＡＭを設けてもよい。制御装置は、複数種類の実行状況信号をＲＡＭに格納し、ある実行状況信号を変化させる場合には、それに合わせてＲＡＭ内の当該実行状況信号を書き換える。ＲＡＭ内の実行状況信号が書き換えられると、異常監視装置では、割込要求信号が発生する。異常監視装置は、割込要求信号が発生すると、内容の書き換えられた実行状況信号をＲＡＭから読み出す。
【符号の説明】
【００９８】
１，４……駆動制御システム、１０，１１……指令入力装置、２０，２１……制御装置、３０，３１……異常監視装置、４０，４１……制御対象装置、２０１……制御部、２０２，３０２……タイミング生成部、３０１……監視部、２０１１，３０１１……ＣＰＵ、２０１２，３０１２……ＲＡＭ、２０１３，３０１３……ＲＯＭ。
【図１】
2017037606.tif 000003
【図２】
2017037606.tif 000004
【図３】
2017037606.tif 000005
【図４】
2017037606.tif 000006
【図５】
2017037606.tif 000007
【図６】
2017037606.tif 000008
【図７】
2017037606.tif 000009
【図８】
2017037606.tif 000010
【図９】
2017037606.tif 000011
【図１０】
2017037606.tif 000012
【図１１】
2017037606.tif 000013
【図１２】
2017037606.tif 000014
【図１３】
2017037606.tif 000015
【図１４】
2017037606.tif 000016
【図１５】
2017037606.tif 000017