(57)【特許請求の範囲】
【請求項１】
汎用ＯＳ用ＡＰＩライブラリ内に実装され、リアルタイムアプリケーションから呼び出されるリアルタイムＡＰＩライブラリと、
呼び出された前記リアルタイムＡＰＩライブラリの指令に基づいて稼動し、リアルタイムハードウェアの制御を実行するリアルタイム制御機構と、
を備え、
前記汎用ＯＳの環境下で前記リアルタイムハードウェアの制御を実現することを特徴とするリアルタイム制御システム。
【請求項２】
前記リアルタイム制御機構は、リアルタイム実行制御部と、前記リアルタイムＡＰＩライブラリで記述されたリアルタイムアプリケーションを、前記リアルタイム実行制御部が解釈できる言語に変換するコンパイラと、を備えることを特徴とする請求項１に記載のリアルタイム制御システム。
【請求項３】
前記リアルタイム実行制御部の開始並びに停止は、前記リアルタイムＡＰＩライブラリの指令に基づいて実行されることを特徴とする請求項２に記載のリアルタイム制御システム。
【請求項４】
前記コンパイラは中間言語変換手段を具備し、前記リアルタイム実行制御部は中間言語インタプリタを具備することを特徴とする請求項２に記載のリアルタイム制御システム。
【請求項５】
前記リアルタイムＡＰＩライブラリは、前記リアルタイムアプリケーションとの同期機構を供えることを特徴とする請求項１乃至４のいずれかに記載のリアルタイム制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非リアルタイムである汎用ＯＳにリアルタイムシステムを構築できるリアルタイム制御システムに関し、汎用ＯＳ上でのリアルタイムアプリケーション開発を効率化する機構を提供するものである。
【背景技術】
【０００２】
汎用ＯＳ上でリアルタイム処理を実現する手法につき説明する。図５は、従来のリアルタイム制御システムの構成例を示す機能ブロック図であり、リアルタイム拡張製品「InTime for Windows」のカタログ（（株）マイクロネット提供）に開示されている。
【０００３】
ハードウェア１０と、このハードウェア１０上に搭載されるシステムソフトウェア２０を具備する。システムソフトウェア２０は、汎用ＯＳカーネル（例えばWindows（登録商標））２１と、この汎用ＯＳカーネル２１上で動作する汎用ＯＳ用ＡＰＩ（Application Programming Interface）ライブラリ２２を具備する。
【０００４】
更に、システムソフトウェア２０は、汎用ＯＳカーネル２１と比し高精度なタイマを使用したスケジューラを使用してリアルタイム処理を実現するリアルタイム拡張カーネル２３と、このリアルタイム拡張カーネル２３上で動作するリアルタイム用ＡＰＩライブラリ２４を具備する。
【０００５】
ユーザは、非リアルタイム処理については汎用ＯＳカーネル２１上で汎用ＯＳ用ＡＰＩライブラリ２２を使用して汎用アプリケーション３０を開発し、リアルタイム性が必要な処理のみリアルタイム拡張カーネル２３で動作するリアルタイム用ＡＰＩライブラリ２４を使用してリアルタイムアプリケーション４０を開発する。
【０００６】
図６は、特許文献１に開示されている従来のリアルタイム制御システムの他の構成例を示す機能ブロック図である。この構成の特徴は、汎用ＯＳ（１１０）にドライバ組込機構（１０９）を追加して、汎用ＯＳカーネルのもつ第１のスケジューリング手段（１０８）とは別に、ドライバ組込機構内に第２のスケジューリング手段（１０１）を作成し、リアルタイム処理を実現する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−２１０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来手法では、汎用ＯＳ上でリアルタイム処理を実現するためには、汎用ＯＳとは別個のリアルタイムカーネルを同一ハードウェア上に具備するか、もしくは汎用ＯＳのスケジューリング機構とは別個のリアルタイムスケジューリング機構を用意する必要があり、ユーザには次のような煩雑さが付随していた。
【０００９】
（１）アプリケーション開発において、非リアルタイムアプリケーションとリアルタイムアプリケーションの開発環境が異なるため、開発者は両方の環境を用意し、そして熟知する必要がある。
【００１０】
（２）開発環境が異なることで、例えば言語の違い、実行状態の違い、デバッグ環境の違いなどがあり、全体を見ている開発者にとって負担になる。
【００１１】
（３）図５の構成は、リアルタイムカーネル部分は、汎用ハードウェア＋汎用ＯＳがあれば、拡張ソフトウェア（リアルタイム拡張カーネル２３とリアルタイム用ＡＰＩライブラリ２４）の追加のみでリアルタイム性が実現できるというモデルであるが、拡張ソフトウェアの利用にはライセンスを必要とし、一般に高価になる。そのため、価格競争にある製品には導入しにくい。
【００１２】
本発明の目的は、リアルタイムアプリケーションを開発において、非リアルタイムアプリケーション開発と同一の開発環境および言語を使用できるリアルタイム制御システムを実現することにある。
【課題を解決するための手段】
【００１３】
このような課題を達成するために、本発明は次の通りの構成になっている。
（１）汎用ＯＳ用ＡＰＩライブラリ内に実装され、リアルタイムアプリケーションから呼び出されるリアルタイムＡＰＩライブラリと、
呼び出された前記リアルタイムＡＰＩライブラリの指令に基づいて稼動し、リアルタイムハードウェアの制御を実行するリアルタイム制御機構と、
を備え、
前記汎用ＯＳの環境下で前記リアルタイムハードウェアの制御を実現することを特徴とするリアルタイム制御システム。
【００１４】
（２）前記リアルタイム制御機構は、リアルタイム実行制御部と、前記リアルタイムＡＰＩライブラリで記述されたリアルタイムアプリケーションを、前記リアルタイム実行制御部が解釈できる言語に変換するコンパイラと、を備えることを特徴とする（１）に記載のリアルタイム制御システム。
【００１５】
（３）前記リアルタイム実行制御部の開始並びに停止は、前記リアルタイムＡＰＩライブラリの指令に基づいて実行されることを特徴とする（２）に記載のリアルタイム制御システム。
【００１６】
（４）前記コンパイラは中間言語変換手段を具備し、前記リアルタイム実行制御部は中間言語インタプリタを具備することを特徴とする（２）に記載のリアルタイム制御システム。
【００１７】
（５）前記リアルタイムＡＰＩライブラリと前記リアルタイムアプリケーションとの同期機構を供えることを特徴とする（１）乃至（４）のいずれかに記載のリアルタイム制御システム。
【発明の効果】
【００１８】
本発明によれば、リアルタイムアプリケーション開発ユーザは、リアルタイムハードウェアの動作タイミング等を意識することなく非リアルタイムな汎用ＯＳ用プログラム開発環境と言語を使用してリアルタイムＡＰＩを呼び出すことにより、リアルタイムアプリケーションを開発することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明を適用したリアルタイム制御システムの一実施例を示す機能ブロック図である。
【図２】図１の動作を説明するフローチャートである。
【図３】ユーザ視点でのリアルタイムアプリケーションの動作の流れを説明するフローチャートである。
【図４】本発明を適用したリアルタイム制御システムの他の実施例を示す機能ブロック図である。
【図５】従来のリアルタイム制御システムの構成例を示す機能ブロック図である。
【図６】従来のリアルタイム制御システムの他の構成例を示す機能ブロック図である。
【発明を実施するための形態】
【００２０】
以下本発明を、図面を用いて詳細に説明する。図１は、本発明を適用したリアルタイム制御システムの一実施例を示す機能ブロック図である。図５で説明した従来構成と同一要素には同一符号を付す。
【００２１】
ハードウェア１０と、このハードウェア１０上に搭載されるシステムソフトウェア２０を具備し、システムソフトウェア２０は、汎用ＯＳカーネル２１と、この汎用ＯＳカーネル２１上で動作する汎用ＯＳ用ＡＰＩライブラリ２２を具備する。これらの構成要素は、図５の構成要素と同一である。
【００２２】
本発明の特徴部は、汎用ＯＳ用ＡＰＩライブラリ２２内に実装され、リアルタイムアプリケーション４００から呼び出されるリアルタイムＡＰＩライブラリ１００と、呼び出されたリアルタイムＡＰＩライブラリの指令（指示、または参照・設定）に基づいて稼動し、リアルタイムハードウェア５０の制御を実行するリアルタイム制御機構２００を備える構成にある。ここで、リアルタイムアプリケーション４００の実体は、図５で示したリアルタイムアプリケーション４０と同一である。
【００２３】
ユーザは非リアルタイム処理については汎用ＯＳ用ＡＰＩライブラリ２２を使用して汎用アプリケーション３０を開発し、リアルタイム性が必要となる処理についてはリアルタイムＡＰＩライブラリ１００と汎用ＯＳ用ＡＰＩライブラリ２２を使用してリアルタイムアプリケーション４００を開発する。
【００２４】
リアルタイム制御機構２００は、リアルタイム実行制御部２０１と、リアルタイムプログラムを解釈するコンパイラ２０２>と、リアルタイムプログラムを格納するリアルタイムプログラムメモリ２０３と、リアルタイムハードウェア５０に関連したデータを格納するリアルタイム共有メモリ２０４と、で構成されている。
【００２５】
リアルタイム実行制御部２０１の実現方法の一例としては、マイクロコントローラ等に代表されるような命令実行ロジックがある。
【００２６】
リアルタイムＡＰＩライブラリ１００には、次のようなＡＰＩが用意される。
（１）  ［ＡＰＩ−１］リアルタイムプログラムロード
（２）  ［ＡＰＩ−２］リアルタイムプログラム実行開始指示
（３）  ［ＡＰＩ−３］リアルタイムプログラム実行停止指示
（４）  ［ＡＰＩ−４］リアルタイムハードウェアアクセス
（５）  ［ＡＰＩ−５］リアルタイム共有メモリアクセス
（６）  ［ＡＰＩ−６］各種演算処理
（７）  ［ＡＰＩ−７］リアルタイムＡＰＩライブラリとリアルタイム実行制御部との同期機構
【００２７】
図２は、図１の動作を説明するフローチャートである。リアルタイムアプリケーション４００の開発処理手順は、プログラムをロードする初期化ステップＳ１０、プログラムの実行開始ステップＳ１１、各種処理ステップＳ１２、プログラムの実行停止ステップＳ１３、終了ステップＳ１５の流れである。
【００２８】
初期化ステップＳ１０において、リアルタイムアプリケーション４００からの［ＡＰＩ−１］呼び出しによって、コンパイラ２０２はリアルタイムアプリケーションを解釈し、ステップＳ２０でリアルタイム実行制御部２０１が解釈可能な言語に変換し、ステップＳ２１でリアルタイムプログラムメモリ２０３に配置する。
【００２９】
ステップＳ１１において、アルタイム実行制御部２０１は、リアルタイムアプリケーション４００からの［ＡＰＩ−２］呼び出しによって動作を開始し、リアルタイムプログラムメモリ２０３を解釈し、リアルタイムプログラム３００の実行を開始する。また、リアルタイムアプリケーション４００からの［ＡＰＩ−３］呼び出しによって動作を停止する。
【００３０】
点線の領域で示したリアルタイムプログラム３００の実体は、［ＡＰＩ−４］、［ＡＰＩ−５］、［ＡＰＩ−６］等の機能を実現するものであり、実行開始の判断ステップＳ２２、リアルタイムプログラムメモリ２０３からのプログラム実行ステップＳ２３、実行停止の判断ステップＳ２４よりなる。
【００３１】
［ＡＰＩ−４］については、リアルタイム実行制御部２０３がリアルタイムハードウェア５０（図１に示す）を設定・参照する情報または結果値がリアルタイム共有メモリ２０４に配置され、リアルタイムＡＰＩのパラメータに反映される。
【００３２】
［ＡＰＩ−５］については、リアルタイム実行制御部２０３がリアルタイム共有メモリ２０４の内容を設定・参照し、リアルタイムＡＰＩのパラメータに反映される。
【００３３】
ＡＰＩ−６］については、リアルタイム実行制御部２０１が各種演算処理を行う。リアルタイム実行制御部２０１は、［ＡＰＩ−３］呼び出しがあるまでリアルタイムプログラムメモリ２０３に配置されたプログラムを繰り返し実行する。
【００３４】
図３は、ユーザ視点でのリアルタイムアプリケーション４００の動作の流れを説明するフローチャートである。ステップＳ１０乃至Ｓ１４の流れは、図２と同一である。ユーザ視点での動作では、リアルタイムＡＰＩライブラリの呼び出しにより、繰り返し実行するリアルタイムプログラム３００を操作する感覚である。
【００３５】
図４は、本発明を適用したリアルタイム制御システムの他の実施例を示す機能ブロック図である。図１の実施例との相違は、リアルタイム実行制御部２０１に中間言語インタプリタ２０１Ａを、また、コンパイラ２０２に中間言語変換手段２０２Ａを追加した構成にある。
【００３６】
中間言語インタプリタ及び中間言語変換手段を追加することで、可搬性の高いシステムを構築するできる。具体的にいえば、リアルタイム実行制御部２０１のハードウェアが変更された場合にも、中間言語インタプリタ２０１Ａのみを変更するだけで同一機能が実装できるようになる。
【００３７】
リアルタイムＡＯＩライブラリ１００とリアルタイム実行制御部２０１に同期機構を付加することにより、リアルタイムハードウェア５０のシーケンシャルな制御も実現可能となる。この同期機構は、［ＡＰＩ−７］呼び出しで実現される。
【００３８】
また、コンパイラ２０２で抽出する言語仕様を、プログラマブルコントローラ（ＰＬＣ）言語仕様に合わせることにより、ソフトウェアＰＬＣと総称されるシーケンス制御システムも簡易に実現可能となる。
【符号の説明】
【００３９】
１０  ハードウェア
２０  システムソフトウェア
２１  汎用ＯＳカーネル
２２  汎用ＯＳ用ＡＰＩライブラリ
３０  汎用アプリケーション
４００  リアルタイムアプリケーション
５０  リアルタイムハードウェア
１００  リアルタイムＡＰＩライブラリ
２００  リアルタイム制御機構
２０１  リアルタイム実行制御部
２０２  コンパイラ
２０３  リアルタイムプログラムメモリ
２０４  リアルタイム共有メモリ
【図１】
0005577959.tif 000002
【図４】
0005577959.tif 000003
【図５】
0005577959.tif 000004
【図６】
0005577959.tif 000005
【図２】
0005577959.tif 000006
【図３】
0005577959.tif 000007