(57)【要約】【課題】  制御バスへの送受信が頻繁に発生すると通信割り込み処理の負荷が増大し、アプリケーションを実行する時間が少なくなる。そのため、時間に制約のあるアプリケーションを規定時間内に実行することが出来ない場合が発生するという課題を解決する。【解決手段】  スキャン周期内で通信割り込み処理を実行する時間の割合を決めておき、通信割り込み処理時間がこの割合を越えると通信割り込みをマスクし、スキャン周期の最初で割り込みマスクを解除するようにした。通信処理が頻繁に発生してもアプリケーションを実行する時間を確保することができる。【選択図】                    図１
2006163730.tif 000002
【特許請求の範囲】
【請求項１】
割り込み処理とそれ以外の処理が混在して実行されるコントローラに用いる割り込み制御方法であって、
所定のスキャン周期の間、割り込み処理を実行する割り込み処理時間を計測し、この割り込み処理時間が前記スキャン周期に関連する所定の値以上になったときに、前記割り込みを禁止する工程と、
前記スキャン周期の最初に、割り込みが禁止されているとこの割り込みを許可する工程と、
を具備したことを特徴とする割り込み制御方法。
【請求項２】
前記割り込みは、通信割り込みであることを特徴とする請求項１記載の割り込み制御方法。
【請求項３】
割り込み処理以外のアプリケーションを複数個有し、前記割り込み処理が終了する毎に異なった前記アプリケーションを実行するようにしたことを特徴とする請求項１若しくは請求項２記載の割り込み制御方法。
【請求項４】
前記スキャン周期が変更出来るようにされていることを特徴とする請求項１若しくは請求項３いずれかに記載の割り込み制御方法。
【請求項５】
割り込み処理とそれ以外の処理が混在して実行されるコントローラにおいて、
割り込み処理に要した時間を計測し、この時間が所定のスキャン周期に関連する所定の値に達したときに、前記割り込み処理を禁止する割り込み処理時間計測部と、
経過時間を計測し、この経過時間が前記スキャン周期に達すると割り込み処理を許可すると共に、この経過時間および前記割り込み処理に要した時間をクリアする経過時間計測部と、
を具備したことを特徴とするコントローラ。
【請求項６】
前記割り込みは、通信割り込みであることを特徴とする請求項５記載のコントローラ。
【請求項７】
割り込み処理以外のアプリケーションを複数個有し、前記割り込み処理が終了する毎に異なった前記アプリケーションを実行するようにしたことを特徴とする請求項５若しくは請求項６記載のコントローラ。
【請求項８】
前記スキャン周期を設定するスキャン周期設定部を有することを特徴とする請求項５若しくは請求項７いずれかに記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割り込み処理時間を制限してアプリケーションの動作時間を確保することができる割り込み制御方法およびそれを用いたコントローラに関し、特に確実な動作が要求される安全コントローラに用いて好適な割り込み制御方法およびそれを用いたコントローラに関するものである。
【背景技術】
【０００２】
図５にコントローラの構成を示す。図５において、６はコントローラのソフトウエアであり、アプリケーション６１，ＯＳ(Operating System)６２および通信ドライバ６３で構成される。７はハードウエアであり、制御部７１と制御バス７２で構成される。
【０００３】
アプリケーション６１が制御バス７２にデータを送信するときは、アプリケーション６１はＯＳ６２を介して通信ドライバ６３に送信データを送る。通信ドライバ６３は制御部７１との共有メモリである送信バッファ（図示せず）にこのデータを書き込んだ後、送信コマンドを発行する。制御部７１はこの送信データを制御バス７２に出力し、割り込みによってＯＳ６２に送信完了を通知する。
【０００４】
データを受信するときは、制御部７１が制御バス７２から受信データを読み出し、通信ドライバ６３との共有バッファである受信バッファ（図示せず）に書き込んだ後、割り込みを用いてＯＳ６２に通知する。ＯＳ６２は受信データを通信ドライバ６３経由でアプリケーション６１に渡す。
【０００５】
特許文献１には、プロセッサは割込処理の実行回数が所定回数に達したときに通常処理に移行する信号処理装置が記載されている。
【０００６】
【特許文献１】特開平５−３４６８５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、このようなコントローラには、次のような課題があった。送受信完了通知は割り込みを用いてＯＳ６２に伝達されるが、割り込みはカーネルモードで動作するため、割り込み中はアプリケーション６１は動作することができない。そのため、制御バス７２からの送受信データが増加するに従って割り込み処理時間が増加し、アプリケーション６１の動作時間が少なくなるという課題があった。アプリケーション６１に時間制約がある場合は、規定時間内に実行することが出来なってしまうという課題もあった。
【０００８】
ポーリング方式を用いるとこの問題は解決するが、通信のパフォーマンスが低下してしまうという課題もあった。
【０００９】
従って本発明が解決しようとする課題は、ユーザモードで動作するアプリケーションの動作時間を保証することができる割り込み制御方法及びそれを用いたコントローラを提供することにある。
【課題を解決するための手段】
【００１０】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
割り込み処理とそれ以外の処理が混在して実行されるコントローラに用いる割り込み制御方法であって、
所定のスキャン周期の間、割り込み処理を実行する割り込み処理時間を計測し、この割り込み処理時間が前記スキャン周期に関連する所定の値以上になったときに、前記割り込みを禁止する工程と、
前記スキャン周期の最初に、割り込みが禁止されているとこの割り込みを許可する工程と、
を具備したものである。割り込み処理以外の処理を実行する時間を確保できる。
【００１１】
請求項２記載の発明は、請求項１記載の発明において、
前記割り込みは、通信割り込みであることを特徴としたものである。割り込み頻度が高い通信割り込みに用いて効果が大きい。
【００１２】
請求項３記載の発明は、請求項１若しくは請求項２記載の発明において、
割り込み処理以外のアプリケーションを複数個有し、前記割り込み処理が終了する毎に異なった前記アプリケーションを実行するようにしたものである。複数のアプリケーションを平均的に実行できる。
【００１３】
請求項４記載の発明は、請求項１若しくは請求項３いずれかに記載の発明において、
前記スキャン周期を変更出来るようにしたものである。割り込みの応答時間を制御できる。
【００１４】
請求項５記載の発明は、
割り込み処理とそれ以外の処理が混在して実行されるコントローラにおいて、
割り込み処理に要した時間を計測し、この時間が所定のスキャン周期に関連する所定の値に達したときに、前記割り込み処理を禁止する割り込み処理時間計測部と、
経過時間を計測し、この経過時間が前記スキャン周期に達すると割り込み処理を許可すると共に、この経過時間および前記割り込み処理に要した時間をクリアする経過時間計測部と、
を具備したものである。割り込み処理以外の処理を実行する時間を確保できる。
【００１５】
請求項６記載の発明は、請求項５記載の発明において、
前記割り込みは、通信割り込みであることを特徴としたものである。割り込み頻度が高い通信割り込みに用いて効果が大きい。
【００１６】
請求項７記載の発明は、請求項５若しくは請求項６記載の発明において、
割り込み処理以外のアプリケーションを複数個有し、前記割り込み処理が終了する毎に異なった前記アプリケーションを実行するようにしたものである。複数のアプリケーションを平均的に実行できる。
【００１７】
請求項８記載の発明は、請求項５若しくは請求項７いずれかに記載の発明において、
前記スキャン周期を設定するスキャン周期設定部を具備したものである。割り込みの応答時間を制御できる。
【発明の効果】
【００１８】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項１，２，３，４，５，６、７および請求項８の発明によれば、所定のスキャン周期の間割り込み処理に要した時間を計測し、この割り込み処理に要した時間が前記スキャン周期に関連する時間に達したときに、割り込みを禁止するようにした。
【００１９】
割り込み処理時間を一定の値以下に制限することができるので、割り込み処理の負荷が大きくなっても、割り込み処理以外のアプリケーションを実行する時間を確保することができるという効果がある。特に、一時的に負荷が集中する通信割り込みに用いて効果が大きい。
【００２０】
禁止された割り込み処理は保留され、次のスキャン周期に実行されるので、スキャン周期を設定・変更できるようにすることにより、割り込み処理の応答時間を調整することができる。割り込み処理に対する応答を早くしたいときはスキャン周期を短く、そうでないときは長く設定すればよい。
【発明を実施するための最良の形態】
【００２１】
以下本発明を図面を用いて詳細に説明する。図１に本発明に係る割り込み制御方法を用いた制御機器の構成を示す。図１において、１は制御機器のソフトウエアの構成を表したものであり、アプリケーション１１，ＯＳ(Operating System)１２および通信ドライバ１３で構成される。ＯＳ１２には、経過時間計測部１２１，通信割込処理時間計測部１２２およびスキャン周期設定部１２３が内蔵されている。
【００２２】
２はハードウエアの構成を表したものであり、制御部２１および制御バス２２で構成される。アプリケーション１１が制御バス２２にデータを送信するときは、アプリケーション１１はＯＳ１２を介して通信ドライバ１３に送信データを送る。通信ドライバ１３は制御部２１との共有メモリである送信バッファ（図示せず）にこのデータを書き込む。制御部２１はこの送信データを制御バス２２に出力し、割り込みによってＯＳ１２に送信完了を通知する。
【００２３】
データを受信するときは、制御部２１が制御バス２２から受信データを読み出し、通信ドライバ１３との共有バッファである受信バッファ（図示せず）に書き込んだ後、割り込みを用いてＯＳ１２に通知する。ＯＳ１２は受信データを通信ドライバ１３経由でアプリケーション１１に渡す。送信および受信に用いる構成および手順は、図５従来例と同じである。
【００２４】
この実施例では、ＯＳ１２内に経過時間計測部１２１，通信割込処理時間計測部１２２およびスキャン周期設定部１２３が配置されている。スキャン周期設定部１２３はスキャン周期を設定し、経過時間計測部１２１に通知する。経過時間計測部１２１は経過時間計測カウンタを内蔵し、経過時間すなわちソフトウエアが実行されている時間を計測する。そして、この時間がスキャン周期に達すると、経過時間計測カウンタと通信割込処理時間計測部１２２に内蔵されている通信割込処理時間カウンタをクリアし、制御部２１の割り込みマスクが設定されているとそれを解除する動作を繰り返す。
【００２５】
通信割込処理時間計測部１２２は通信割込処理時間カウンタを内蔵し、このカウンタを用いて通信割込処理に要した時間を計測する。そして、この通信処理に要した時間が、スキャン周期の一定割合に達すると、制御部２１の割り込みマスクを設定する。これによって、制御部２１からＯＳ１２への割り込み通知が出力されなくなるので、通信割り込みの頻度が高くなっても、アプリケーション１１を実行する時間を確保することができる。
【００２６】
次に、図２フローチャートに基づいて、経過時間計測部１２１，通信割込処理時間計測部１２２およびスキャン周期設定部１２３の動作を説明する。なお、工程（Ａ−１）〜（Ａ−７）は経過時間計測部１２１の動作、工程（Ａ−８）〜（Ａ−１１）は通信割込処理時間計測部１２２の動作、工程（Ａ−１２）〜（Ａ−１４）はスキャン周期設定部１２３の動作である。
【００２７】
図２において、工程（Ａ−１）でスキャン周期が設定されているかをチェックし、スキャン周期が設定されていると、工程（Ａ−２）でタイマ割り込みがあるかをチェックする。このタイマ割り込みは一定周期で発生する。
【００２８】
タイマ割り込みがあると、工程（Ａ−３）で経過時間計測カウンタにタイマ割り込み周期を加算する。そして、工程（Ａ−４）でこの経過時間計測時間カウンタの値である経過時間時間が設定されているスキャン周期より大きいかを判定し、大きいと工程（Ａ−５）で経過時間計測カウンタと通信割り込み時間カウンタをクリアする。そして、工程（Ａ−６）で制御部２１の割り込みマスクが設定されているかどうかをチェックし、設定されていると工程（Ａ−７）でこの割り込みマスクを解除して工程（Ａ−１）に戻る。工程（Ａ−４）で経過時間がスキャン周期より小さいと、工程（Ａ−１）に戻る。
【００２９】
工程（Ａ−２）でタイマ割り込みがないと、工程（Ａ−８）で通信割り込みがあるかどうかをチェックする。通信割り込みがあると、工程（Ａ−９）で通信割り込みに要した時間を通信割り込み処理時間カウンタに加算する。そして、工程（Ａ−１０）でこの通信割り込み処理時間カウンタの値である通信割り込み処理時間がスキャン時間より大きいかを判定し、大きいと工程（Ａ−１１）で制御部２１の割り込みマスクを設定し、工程（Ａ−１）に戻る。スキャン時間には、スキャン周期のうち通信割り込み処理に振り当てることができる時間を設定しておく。
【００３０】
工程（Ａ−８）で通信割り込みがないと、工程（Ａ−１２）でスキャン周期が通知されたかどうかを判定する。スキャン周期が通知されていると、工程（Ａ−１３）でスキャン周期を設定し、工程（Ａ−１４）で経過時間計測時間カウンタと通信割り込み処理時間カウンタをクリアする。スキャン周期を通知することにより、スキャン周期を変更することができる。
【００３１】
すなわち、スキャン周期毎に経過時間計測カウンタと通信割り込み処理時間カウンタおよび通信割り込みマスクをクリアし、通信割り込みに要した時間がスキャン周期の一定割合以上になると、通信割り込みをマスクして、ＯＳ１２が通信割り込み処理を実行しないようにする。そのため、送受信が頻繁に発生してもアプリケーション１１を実行する時間を確保することができる。
【００３２】
なお、割り込みがマスクされた通信割り込み処理は、次のスキャン周期で実行される。また、工程（Ａ−１２）〜（Ａ−１４）で説明したように、スキャン周期設定部１２３にスキャン周期を通知することにより、スキャン周期を変更することができる。そのため、スキャン周期を短くすることにより、通信割り込み処理の応答時間を短くすることができる。
【００３３】
次に、図３によって通信割り込み処理と通信割り込み処理以外の処理（アプリケーション１１の処理）の関係を説明する。図３（Ａ）の黒いバーは通信割り込み処理を実行している時間、（Ｂ）の白抜きのバーは通信割り込み処理以外の処理を実行している時間である。
【００３４】
スキャン１では、時刻ｔ１から通信割り込み処理が実行され、時刻ｔ２で通信割り込み処理時間がスキャン時間より大きくなる。そのため、通信割り込みがマスク（禁止）され、ｔ２以降は通信割り込み処理以外の処理が実行される。
【００３５】
時刻ｔ３で新しいスキャン周期（スキャン２）に入るので、通信割り込みマスクはクリアされ、通信割り込みが許可される。スキャン１で発生した通信割り込み処理が残っているので、最初から通信割り込み処理を実行する。時刻ｔ４で通信割り込み処理時間がスキャン時間を超えるので、再び通信割り込みが禁止され、それ以外の処理が実行される。以降、同様にして処理が行われる。
【００３６】
図４を用いて、アプリケーションおよび通信割り込み処理が複数ある場合の処理を説明する。図４（Ａ）は構成図であり、ＯＳ３はアプリケーション４１〜４３および割り込み処理５１〜５３の実行を調停する。この図では示していないが、ＯＳ３は図１のＯＳ１２と同じ構成である。
【００３７】
図４（Ｂ）はプロセッサの処理時間の配分を示した図である。割り込み処理５１が実行され、この処理が終了するかスキャン時間を経過すると割り込み処理が禁止され、アプリケーション４１が実行される。次のスキャン周期で割り込み処理５２，５３が続けて実行され、アプリケーション４２，４３およびその他の処理が続けて実行される。この図のように、割り込み処理とアプリケーションの実行が切り替わる毎に異なったアプリケーションを実行するようにすると、複数のアプリケーションを平均して実行することができる。
【００３８】
なお、割り込み処理は通信割り込みに限らず、他の割り込み処理にも適用することができる。また、図２と同じように、スキャン周期内で１つのアプリケーションの実行時間を制限するようにすることにより、複数のアプリケーションを平均して実行することも出来る。
【００３９】
さらに、これらの実施例では制御部２１の割り込みマスクを設定し、割り込み通知がＯＳに出力されないようにしたが、ＯＳが割り込みを受け付けないようにしてもよい。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施例を示す構成図である。
【図２】割り込み制御部の動作を示すフローチャートである。
【図３】割り込み処理時間とアプリケーション実行時間の関係を説明するためのタイムチャートである。
【図４】本発明の他の実施例を示す構成図である。
【図５】従来の制御機器の構成図である。
【符号の説明】
【００４１】
１  ソフトウエア
１１，４１〜４３  アプリケーション
１２、３  ＯＳ
１２１  経過時間計測部
１２２  割込処理時間計測部
１２３  スキャン周期設定部
１３  通信ドライバ
２  ハードウエア
２１  制御部
２２  制御バス
５１〜５３  割り込み処理
【図１】
2006163730.tif 000003
【図２】
2006163730.tif 000004
【図３】
2006163730.tif 000005
【図４】
2006163730.tif 000006
【図５】
2006163730.tif 000007