(57)【特許請求の範囲】
【請求項１】
少なくとも２つのモジュールからアクセスされる共有データへのアクセスを制御する共有データアクセス制御装置であって、
前記共有データのうち、重要な共有データへの書き込み要求があったときに、要求された共有データの書き込み権限が書き込み要求元にあるかどうか、および書き込むデータが予め定められた範囲内に入っているかどうかをチェックすることにより、その書き込み要求の正当性をチェックし、正当な書き込み要求であったときに書き込み要求を出力するＩＷ処理部と、
前記重要な共有データの読み出し要求、およびその他の共有データの読み出しおよび書き込み要求、および前記ＩＷ処理部が出力する書き込み要求が入力され、他のモジュールからのアクセスを禁止した後共有データの書き込みまたは読み出しを行って、終了すると他のモジュールから要求されたアクセスを許可する排他処理を行って共有データにアクセスする排他アクセス部と、
を具備したことを特徴とする共有データアクセス制御装置。
【請求項２】
複数のモジュールから共有データへのアクセス要求が入力されるアクセスＩＦ部を具備し、このアクセスＩＦ部は、入力されたアクセス要求が重要な共有データの書き込み要求であるときは、この要求を前記ＩＷ処理部に出力し、重要な共有データの読み出し要求、およびその他のデータの書き込みおよび読み出し要求であるときは、この要求を前記排他アクセス部に出力するようにしたことを特徴とする請求項１に記載の共有データアクセス制御装置。
【請求項３】
その他の共有データへの書き込み要求があったときに、書き込み要求元に書き込み権限があるかどうか、また書き込むデータが予め定められた範囲内に入っているかどうかのいずれかをチェックすることにより、その要求の正当性をチェックするＷ処理部を具備したことを特徴とする請求項１若しくは請求項２に記載の共有データアクセス制御装置。
【請求項４】
センサ部の出力に基づいてプロセス値を演算するセンサ処理モジュールと、
通信を処理する通信処理モジュールと、
入出力処理を行うＵＩ処理モジュールと、
共有データが格納されるＲＡＭと、
前記センサ処理モジュール、通信処理モジュール、ＵＩ処理モジュールの要求に基づいて前記共有データにアクセスする、請求項１乃至請求項３いずれかに記載の共有データアクセス制御装置と、
を具備したことを特徴とするフィールド機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重要な共有データとそれ以外の共有データを分けてアクセスすることにより、共有データに効率的にアクセスできる共有データアクセス制御装置に関し、特にＣＰＵやメモリなどのリソースが限られたフィールド機器に用いて好適な共有データアクセス制御装置およびそれを用いたフィールド機器に関するものである。
【背景技術】
【０００２】
フィールド機器は、プロセス現場に設置され、圧力や流量等の物理量を測定して上位機器に伝送し、またアクチュエータのように上位機器からの指令に基づいてバルブ等を操作する機器である。
【０００３】
図１１に、一般的なフィールド機器の構成を示す。図１１において、ＣＰＵ（Central Processing Unit）１０には、物理量を測定するセンサの出力に基づいてプロセス値を演算する処理を行うセンサ処理モジュール１０ａ、他の機器との通信に関する処理を行う通信処理モジュール１０ｂ、および入出力処理を扱うＵＩ処理モジュール１０ｃが内蔵されている。これらのモジュールは、ＣＰＵ１０上で動作するソフトウエアとして構成され、各々独立に動作する。
【０００４】
センサ処理モジュール１０ａは接続ＩＦ（インターフェイス）１１ａを介してセンサ部１２に接続される。センサ処理モジュール１０ａは、センサ部１２からの割り込み信号を受けてセンサ部１２が測定した物理量を読み込み、種々の補正演算を行ってプロセス値を演算する。
【０００５】
通信処理モジュール１０ｂは接続ＩＦ１１ｂを介して通信部１３に接続される。通信部１３はFoundation-Fieldbus、Profibus、SMART通信等の通信に関するハードウエアで構成される。通信処理モジュール１０ｂは、設定値あるいはセンサ処理モジュール１０ａが演算したプロセス値を他の機器に送信し、また他の機器が送信した設定値やプロセス値を受信する。通信処理モジュール１０ｂは通信部１３からの割り込み信号、あるいは一定の周期で動作する。
【０００６】
UserInterface（以下ＵＩという）処理モジュール１０ｃは接続ＩＦ１１ｃを介して表示器１４にアクセスし、センサ処理モジュール１０ａが演算したプロセス値やアラーム等を表示する。表示器１４として、液晶ディスプレイなどが用いられる。また、ＵＩ処理モジュール１０ｃは接続ＩＦ１１ｄを介して入力部１５に接続される。ＵＩ処理モジュール１０ｃは入力部１５からの割り込み信号によって動作し、ユーザが入力したデータを取得する。入力部１５はスイッチやボタンなどで構成される。
【０００７】
ＣＰＵ１０はメモリバス１６を介してＲＯＭ(Read Only Memory)１７、ＲＡＭ(Random Access Memory)１８に接続される。ＲＯＭ１７にはＣＰＵ１０が実行するプログラム、およびこのプログラム実行に必要な定数データが格納される。ＲＡＭ１８にはＣＰＵ１０が実行するプログラム、あるいはプログラムで用いられるデータや、プロセス値あるいは設定値が格納される。通常、ＲＯＭ１７に格納されたプログラムは、起動時にＲＡＭ１８に転送され、実行される。
【０００８】
なお、図１１は物理量を測定するフィールド機器の構成であるが、アクチュエータを操作するフィールド機器でも基本的には同様な構成を有している。また、データを長期間保存するための不揮発性メモリを有する機器もある。さらに、ＣＰＵ１０は診断機能モジュールや他のモジュールを含む場合もある。
【０００９】
図１２に、ＣＰＵ１０内の各モジュールがＲＡＭ１８に格納されているデータにアクセスする手順を示す。なお、図１１と同じ要素には同一符号を付し、説明を省略する。また、接続ＩＦ１１ａ〜１１ｄ、センサ部１２、通信部１３、表示器１４、入力部１５、メモリバス１６、ＲＯＭ１７は図１１と同じなので、記載を省略している。
【００１０】
図１２において、ＲＡＭ１８にはセンサローカル１８ａ、通信ローカル１８ｂ、ＵＩローカル１８ｃ、センサグローバル１８ｄ、通信グローバル１８ｅ、ＵＩグローバル１８ｆの各領域が含まれる。
【００１１】
センサローカル１８ａ、通信ローカル１８ｂ、ＵＩローカル１８ｃには、それぞれセンサ処理モジュール１０ａ、通信処理モジュール１０ｂ、ＵＩ処理モジュール１０ｃのみがアクセスするデータが格納される。
【００１２】
センサグローバル１８ｄには、センサ処理モジュール１０ａに関するデータで、他のモジュールもアクセスする可能性がある共有データが格納される。同様に、通信グローバル１８ｅには、通信処理モジュール１０ｂに関するデータで他のモジュールもアクセスする可能性がある共有データが格納され、ＵＩグローバル１８ｆには、ＵＩ処理モジュール１０ｃに関するデータで他のモジュールもアクセスする可能性がある共有データが格納される。
【００１３】
センサローカル１８ａに格納されたデータはセンサ処理モジュール１０ａのみアクセスするので、常にデータの整合性が保たれる。同様に、通信ローカル１８ｂ、ＵＩローカル１８ｃはそれぞれ通信処理モジュール１０ｂ、ＵＩ処理モジュール１０ｃのみがアクセスするデータが格納されるので、同様にデータの整合性が保たれる。
【００１４】
それに対してセンサグローバル１８ｄ、通信グローバル１８ｅ、ＵＩグローバル１８ｆに格納された共有データは複数のモジュールからアクセスされるので、データの整合性が保たれるように排他制御を行わなければならない。
【００１５】
例えば、センサ処理モジュール１０ａがセンサグローバル１８ｄに格納されているプロセス値を更新するときは、更新処理が終了するまで他のモジュールからのアクセスを禁止する。同様に、通信処理モジュール１０ｂがセンサグローバル１８ｄに格納されているプロセス値を読み込むときは、読み込み処理が完了するまで他のモジュールのアクセスを禁止する。
【００１６】
図１３に、ＣＰＵ１０がＲＡＭ１８をアクセスする他の手順を示す。なお、図１２と同じ要素には同一符号を付し、説明を省略する。また、この図でもＣＰＵ１０とＲＡＭ１８以外の要素は図１１と同じなので、記載を省略している。
【００１７】
図１３において、１８ｇは共有データ領域であり、ＲＡＭ１８内に領域が取られる。共有データ領域１８ｇには、センサグローバル１８ｄ、通信グローバル１８ｅ、ＵＩグローバル１８ｆに格納されている共有データが格納される。すなわち、共有データ領域１８ｇには、複数のモジュールからアクセスされる共有データが格納される。
【００１８】
１０ｄは共有データアクセスモジュールであり、ＣＰＵ１０内に設けられる。共有データアクセスモジュール１０ｄは、センサ、通信、ＵＩの各処理モジュール１０ａ〜１０ｃからリクエストを受けると、排他制御およびアクセス制御を行って共有データ領域１８ｇにアクセスし、リクエストを受けたモジュールに結果を返す。センサ、通信、ＵＩの各処理モジュール１０ａ〜１０ｃと共有データアクセスモジュール１０ｄの間の通信は、モジュール間通信で行う。
【００１９】
排他制御は、同時に複数のモジュールが同じ共有データにアクセスしないようにするものであり、複数モジュールから同一データにアクセスを行う際に、安全にアクセスするために行う。また、アクセス制御は、指定されたモジュールから指定されたアクセス方法でアクセスが行われたことを確認するために行う。
【００２０】
ＵＩ処理モジュール１０ｃは、定期的にプロセス値を得て表示器１４の内容を更新する。図１４に、ＵＩ処理モジュール１０ｃがプロセス値を得る手順を示す。
【００２１】
図１４において、工程（Ｐ１４−１）でリクエスト元（ＵＩ処理モジュール１０ｃ）は取得したいプロセス値のパラメータＩＤを読み込みリクエストに付けて、共有データアクセスモジュール１０ｄに送信する。
【００２２】
読み込みリクエストを受けた共有データアクセスモジュール１０ｄは、工程（Ｐ１４−２）でリクエスト元にリクエストされたプロセス値を読み込むことが可能か、すなわち読み込み権限があるかどうかをチェックする。
【００２３】
工程（Ｐ１４−３）で、読み込み可能であると（ＹＥＳ）工程（Ｐ１４−４）に進み、共有データアクセスモジュール１０ｄはセマフォの取得などを行って、ＲＡＭ１８に対して排他制御を行う。
【００２４】
排他制御の結果、ＲＡＭ１８にアクセスできるようになると、工程（Ｐ１４−５）で共有データアクセスモジュール１０ｄはパラメータＩＤからプロセス値のアドレスを取得して、このアドレスからプロセス値を取得する。そして、工程（Ｐ１４−６）で取得したプロセス値をリクエスト元であるＵＩ処理モジュール１０ｃに送信する。
【００２５】
工程（Ｐ１４−３）で読み込み可能でないと（ＮＯ）、工程（Ｐ１４−７）に進み、リクエスト元であるＵＩ処理モジュール１０ｃにアクセス違反であることを送信する。
【００２６】
図１５に、センサ処理モジュール１０ａがプロセス値を算出するときに用いる補正パラメータの変更要求を通信処理モジュール１０ｂが受信し、ＲＡＭ１８に書き込むときの処理手順を示す。
【００２７】
図１５において、通信処理モジュール１０ｂが補正パラメータの変更要求を受信すると、工程（Ｐ１５−１）でリクエスト元（通信処理モジュール１０ｂ）は、変更する補正パラメータのパラメータＩＤと変更値を書き込みリクエストに付けて、共有データアクセスモジュール１０ｄに送信する。
【００２８】
書き込みリクエストを受けた共有データアクセスモジュール１０ｄは、工程（Ｐ１５−２）でリクエスト元がリクエストされた補正パラメータを書き込むことが可能か、すなわち書き込み権限があるかどうかをチェックする。
【００２９】
工程（Ｐ１５−３）で、書き込み可能であると（ＹＥＳ）工程（Ｐ１５−４）に進み、共有データアクセスモジュール１０ｄはセマフォの取得などを行って、ＲＡＭ１８に対して排他制御を行う。
【００３０】
排他制御の結果、ＲＡＭ１８にアクセスできるようになると、工程（Ｐ１５−５）で共有データアクセスモジュール１０ｄはパラメータＩＤから補正パラメータのアドレスを取得して、変更値をこのアドレスに書き込む。工程（Ｐ１５−３）で書き込み可能でないと（ＮＯ）、工程（Ｐ１５−６）に進み、リクエスト元（要求元）である通信処理モジュール１０ｂにアクセス違反であることを送信する。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２００７−３２８４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００３２】
しかしながら、このような共有データのアクセス制御には、次のような課題があった。図１２のアクセス制御は、複数のモジュールからアクセスがある場合に、各モジュールがそれぞれ排他制御を行わなければならない。フィールド機器はリアルタイム性が要求されるので、各々の処理に様々なデッドラインがある。従って、１つのモジュールを開発する場合でも、全体の動作を把握して各モジュールに優先順位を設定して共有データへのアクセスを補償しなければならず、開発が難しいという課題があった。
【００３３】
また、システム全体で動作させる際に、各モジュールを特定の機器用に最適化することが多いので、モジュールの再利用が難しくなるという課題もあった。
【００３４】
また、複数のモジュールが個別に同一データにアクセスするので、モジュール間の関係が複雑になり、モジュール単体の開発、デバッグが困難になるという課題もあった。
【００３５】
さらに、全てのモジュールが全データにアクセス可能なので、システム全体の信頼性を確保することが難しいという課題もあった。
【００３６】
図１３のアクセス制御は共有データアクセスモジュール１０ｄを介して共有データにアクセスするのでモジュール間の関係が簡単になると利点はあるが、重要度の程度に関わらず、全てのアクセスに対して同じレベルのチェックしか行うことができない。そのため、共有データの全アクセスに対して排他制御、アクセス制御、およびモジュール間通信のオーバーヘッドがかかるので、システムが過負荷になり易いという課題があった。
【００３７】
本発明の目的は、重要な共有データとその他の共有データを分けてアクセス処理を行うことにより、共有データに効率的にアクセスできる共有データアクセス制御装置およびそれを用いたフィールド機器を実現することにある。
【課題を解決するための手段】
【００３８】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
少なくとも２つのモジュールからアクセスされる共有データへのアクセスを制御する共有データアクセス制御装置であって、
前記共有データのうち、重要な共有データへの書き込み要求があったときに、要求された共有データの書き込み権限が書き込み要求元にあるかどうか、および書き込むデータが予め定められた範囲内に入っているかどうかをチェックすることにより、その書き込み要求の正当性をチェックし、正当な書き込み要求であったときに書き込み要求を出力するＩＷ処理部と、
前記重要な共有データの読み出し要求、およびその他の共有データの読み出しおよび書き込み要求、および前記ＩＷ処理部が出力する書き込み要求が入力され、他のモジュールからのアクセスを禁止した後共有データの書き込みまたは読み出しを行って、終了すると他のモジュールから要求されたアクセスを許可する排他処理を行って共有データにアクセスする排他アクセス部と、
を具備したものである。共有データの重要度に応じたチェックを行うことができる。また、権限のないモジュールによる書き込み、および間違ったデータの書き込みを防止できる。
【００４０】
請求項２記載の発明は、請求項１に記載の発明において、
複数のモジュールから共有データへのアクセス要求が入力されるアクセスＩＦ部を具備し、このアクセスＩＦ部は、入力されたアクセス要求が重要な共有データの書き込み要求であるときは、この要求を前記ＩＷ処理部に出力し、重要な共有データの読み出し要求、およびその他のデータの書き込みおよび読み出し要求であるときは、この要求を前記排他アクセス部に出力するようにしたものである。各モジュールの共有データへのアクセスを一元化できる。
【００４２】
請求項３記載の発明は、請求項１若しくは請求項２に記載の発明において、
その他の共有データへの書き込み要求があったときに、書き込み要求元に書き込み権限があるかどうか、また書き込むデータが予め定められた範囲内に入っているかどうかのいずれかをチェックすることにより、その要求の正当性をチェックするＷ処理部を具備したものである。負荷の増大を抑えつつ、それほど重要でない共有データの書き込み正当性をチェックできる。
【００４４】
請求項４記載の発明は、フィールド機器において、
センサ部の出力に基づいてプロセス値を演算するセンサ処理モジュールと、
通信を処理する通信処理モジュールと、
入出力処理を行うＵＩ処理モジュールと、
共有データが格納されるＲＡＭと、
前記センサ処理モジュール、通信処理モジュール、ＵＩ処理モジュールの要求に基づいて前記共有データにアクセスする、請求項１乃至請求項３いずれかに記載の共有データアクセス制御装置と、
を具備したものである。リアルタイム性が要求され、かつリソースが限られるフィールド機器に用いて効果が大きい。
【発明の効果】
【００４５】
本発明によれば以下のような効果がある。請求項１、２、３、４の発明によれば、重要な共有データの書き込みはＩＷ処理部でその書き込み正当性をチェックした後、排他アクセス部で排他処理を行って書き込みを行い、その他の共有データの読み書き、および重要な共有データの読み出しはＩＷ処理部を経由することなく排他アクセス部で排他処理を行って共有データにアクセスするようにした。
【００４６】
重要な共有データの書き込みのみ、その正当性をチェックするようにしたので、負荷の増大を抑えつつ、間違ったデータの書き込みを防止することができ、アクセスの信頼性を高めることができるという効果がある。また、重要度が高くないその他の共有データの書き込みに対して簡単な正当性チェックを行うＷ処理部を設けることにより、その他の共有データに対しても誤書き込みを防止できるという効果もある。
【００４７】
また、排他アクセス部を用いて共有データへのアクセスを一元化したので、各モジュールで排他処理を行う必要がなくなる。そのため製品全体の動作を把握しなくてもモジュールの開発を行うことができるという効果もある。また、モジュール間の関係が簡単になるので、異なる機種間でモジュールの再利用が容易になるという効果もある。
【００４８】
また、アクセスＩＦ部を用いて共有データへのアクセスを統一化することにより、モジュール間の関係が簡単になるので、モジュールの開発、デバッグ、テストが容易になるという効果もある。
【図面の簡単な説明】
【００４９】
【図１】本発明の一実施例を示した構成図である。
【図２】共有データへのアクセス例を示す表である。
【図３】アクセスＩＦ部等の動作を示すフローチャートである。
【図４】ＩＷ処理部の動作を示すフローチャートである。
【図５】排他アクセス部の動作を示すフローチャートである。
【図６】各種テーブルの例を示す図である。
【図７】プロセス値の書き込み手順を示す図である。
【図８】表示パラメータの変更手順を示す図である。
【図９】プロセス値の読み出し手順を示す図である。
【図１０】本発明の他の実施例を示す構成図である。
【図１１】従来のフィールド機器の構成図である。
【図１２】従来の共有データアクセス手順を示す図である。
【図１３】従来の共有データアクセス手順を示す図である。
【図１４】従来の共有データアクセス手順を示すフローチャートである。
【図１５】従来の共有データアクセス手順を示すフローチャートである。
【発明を実施するための形態】
【００５０】
本発明は、複数のモジュールからアクセスされる共有データを、センサからプロセス値に変換する過程で使用する補正パラメータあるいはプロセス値等フィールド機器の基本動作で用いる重要なデータと、表示器１４の表示パラメータ等その他のデータに分離し、重要データへの書き込みに対してのみ特別な制御機構を設けるようにしたものである。
【００５１】
以下本発明を、図面を用いて詳細に説明する。図１は本発明の一実施例を示した構成図である。なお、図１１、図１２と同じ要素には同一符号を付し、説明を省略する。
【００５２】
図１において、２０はＣＰＵであり、センサ処理モジュール１０ａ、通信処理モジュール１０ｂ、ＵＩ処理モジュール１０ｃ、アクセスＩＦ部（アクセスインターフェイス）２１、ＩＷ処理部２２、および排他アクセス部２３で構成される。これらの要素は、いずれもＣＰＵ２０上で動作するソフトウエアとして構成される。
【００５３】
３０はＲＡＭであり、メモリバス１６に接続される。ＲＡＭ３０には、センサ処理モジュール１０ａのみからアクセスされるデータが格納されるセンサローカル１８ａ、通信処理モジュール１０ｂのみからアクセスされるデータが格納される通信ローカル１８ｂ、ＵＩ処理モジュール１０ｃのみからアクセスされるデータが格納されるＵＩローカル１８ｃ、重要な共有データが格納されるＩ（Important）データ格納部、その他の共有データが格納されるＮＩ（Non-Important）データ格納部３２の各領域に分割されている。
【００５４】
前述したように、センサローカル１８ａ、通信ローカル１８ｂ、ＵＩローカル１８ｃに格納されているデータは１つのモジュールからのみアクセスされ、データの整合性が保たれるので、特別な制御機構は不要である。複数のモジュールからアクセスされる可能性がある共有データのアクセスにのみ、データの整合性を保てるように制御機構を設ける。
【００５５】
なお、ＲＡＭ３０には、ＩＤとアドレスを変換する際に使用するＩＤ−アドレス変換テーブル、重要な共有データに関する書き込み権限のデータが格納されるＩＷアクセステーブル、データの範囲チェックで用いる範囲チェックテーブルも格納されているが、図１では記載を省略している。
【００５６】
アクセスＩＦ部２１は、センサ処理モジュール１０ａ、通信処理モジュール１０ｂ、ＵＩ処理モジュール１０ｃがＩデータ格納部３１、ＮＩデータ格納部３２に格納されている共有データにアクセスする際のインターフェイスを提供するものであり、ＩＷ、ＩＲ、Ｒ、Ｗの各インターフェイスを有している。
【００５７】
センサ、通信、ＵＩの各処理モジュール１０ａ〜１０ｃが重要な共有データに書き込みを行うときはＩＷインターフェイスを用いてＲＡＭ３０にアクセスし、重要な共有データを読み出すときはＩＲインターフェイスを用いてアクセスする。また、その他の共有データに書き込みを行うときはＷインターフェイスを用いてＲＡＭ３０にアクセスし、その他の共有データ（いいかえれば、重要でない共有データ）を読み出すときはＲインターフェイスを用いてアクセスする。
【００５８】
排他アクセス部２３は共有データへのアクセスを一元管理し、排他処理を行って複数のモジュールが同時に同じ共有データにアクセスすることを禁止する。センサ、通信、ＵＩの各処理モジュール１０ａ〜１０ｃがＩＷインターフェイスを使用して共有データにアクセスするときは、ＩＷ処理部２２を経由して、排他アクセス部２３を介して共有データにアクセスする。ＩＲ、Ｒ、Ｗの各インターフェイスを使用して共有データにアクセスするときは、ＩＷ処理部２２を経由しないで、直接排他アクセス部２３を介してアクセスする。
【００５９】
排他アクセス部２３によって排他処理を行っているので、センサ、通信、ＵＩの各処理モジュールは、他のモジュールの動作を意識することなく、共有データにアクセスすることができる。
【００６０】
図２に、共有データへのアクセスの一例を示す。プロセス値は重要な共有データ、表示パラメータはその他の共有データである。ImportantRead()、ImportantWrite()はそれぞれ重要な共有データを読み書きするときに使用する関数であり、Read()、Write()はそれぞれその他の共有データを読み書きするときに使用する関数である。ImportantWrite関数はＩＷ処理部２２に相当する動作をも行い、ImportantRead、Write、Read関数はＩＷ処理部２２に相当する処理を行わない。
【００６１】
表示パラメータを読み出す（項番１）ときは、読み出す表示パラメータのＩＤ(DISPLAY_PARAMETER1)と呼び出し元のモジュール名(UI)を引数としてRead関数を呼び出す。返り値は、成功したときは"OK"と表示パラメータの値("PRESSURE")、失敗したときは"NG"である。
【００６２】
表示パラメータに書き込む（項番２）ときは、書き込む表示パラメータのＩＤ(DISPLAY_PARAMETER1)、書き込む値("TEMPERATURE")、呼び出し元のモジュール名(COMMUNICATION)を引数としてWrite関数を呼び出す。返り値は、成功したときは"OK"、失敗したときは"NG"である。
【００６３】
プロセス値を読み出す（項番３）ときは、引数、返り値の意味は表示パラメータの読み出しと同じであるが、関数ImportantRead（）を用いる。
【００６４】
プロセス値を書き込む（項番４）ときは、引数の意味は表示パラメータの書き込みと同じであるが、関数ImportantWrite()を用いる。このとき、返り値は、成功したときは"OK"もしくは"NG"を表す値と"NG"の原因である。項番４の返り値ACCESS_VIOLATIONは、アクセス違反を意味している。
【００６５】
なお、全ての共有データにはパラメータＩＤが付けられており、このパラメータＩＤを用いて共有データにアクセスする。パラメータＩＤとして共有データの内容を表すＩＤを用いると、プログラムを直感的に把握することができる。
【００６６】
図３は、アクセスＩＦ部２１、ＩＷ処理部２２、および排他アクセス部２３の処理内容を示したフローチャートである。図３において、モジュール１０ａ〜１０ｃがＩＷ、ＩＲ、Ｗ、Ｒの各インターフェイスを用いてアクセスＩＦ部２１をアクセスすると、工程（Ｐ３−１）でアクセスＩＦ部２１は呼び出し元のモジュール名と読み出し／書き込みを行う共有データのパラメータＩＤを保持し、工程（Ｐ３−２）でアクセスされたインターフェイスによって処理を分ける。
【００６７】
Ｒ、ＩＲインターフェイスを用いてアクセスがあったときは、工程（Ｐ３−３）でアクセスＩＦ部２１はパラメータＩＤを排他アクセス部２３に送信する。排他アクセス部２３は、工程（Ｐ３−４）で排他処理を行い、共有データを読み出す。
【００６８】
読み出しが終了すると、工程（Ｐ３−５）で排他アクセス部２３はアクセスの結果と読み込んだデータをアクセスＩＦ部２１に送信する。アクセスＩＦ部２１はこれらの値を受け取り、工程（Ｐ３−１２）で呼び出し元モジュールに受け取った結果を返す。
【００６９】
Ｗインターフェイスを用いてアクセスされたときは、工程（Ｐ３−６）でアクセスＩＦ部２１はパラメータＩＤと書き込むデータを排他アクセス部２３に送信する。排他アクセス部２３は、工程（Ｐ３−７）で排他処理を行い、共有データにデータを書き込む。
【００７０】
書き込みが終了すると、工程（Ｐ３−８）で排他アクセス部２３はアクセスの結果をアクセスＩＦ部２１に送信する。アクセスＩＦ部２１はこれらの値を受け取り、工程（Ｐ３−１２）で呼び出し元モジュールに受け取った結果を返す。
【００７１】
ＩＷインターフェイスを用いてアクセスされたときは、工程（Ｐ３−９）でアクセスＩＦ部２１はパラメータＩＤと書き込むデータをＩＷ処理部２２に送信する。ＩＷ処理部２２と排他アクセス部２３は、工程（Ｐ３−１０）で各々の処理を行い、共有データを書き込む。
【００７２】
書き込みが終了すると、工程（Ｐ３−１１）でＩＷ処理部２２または排他アクセス部２３はアクセスの結果をアクセスＩＦ部２１に送信する。アクセスＩＦ部２１はこれらの値を受け取り、工程（Ｐ３−１２）で呼び出し元モジュールに受け取った結果を返す。
【００７３】
図４は、ＩＷ処理部２２の処理内容を示したフローチャートである。ＩＷ処理部２２はアクセスの正当性をチェックする処理を行う。
【００７４】
図４において、工程（Ｐ４−１）で呼び出し元モジュールにデータを書き込む権限があるかどうかを確認する。書き込み権限がない（ＮＯ）と、工程（Ｐ４−５）に遷移して、アクセスＩＦ部２１にアクセス違反を返す（出力する）。書き込み権限があるかどうかのチェックは、ＲＡＭ３０に格納されているＩＷアクセステーブルを用いて行う。
【００７５】
データ書き込み権限がある（ＹＥＳ）と、工程（Ｐ４−２）で書き込むデータが予め定められた範囲内であるかどうかを確認する。範囲内でないと（ＮＯ）、工程（Ｐ４−３）に遷移して、書き込み範囲違反である旨をアクセスＩＦ部２１に返す（出力する）。範囲内であるかどうかのチェックは、ＲＡＭ３０に格納されている範囲チェックテーブルを用いて行う。
【００７６】
範囲内であると（ＹＥＳ）、工程（Ｐ４−４）に遷移し、排他アクセス部２３に書き込みを依頼する。排他アクセス部２３は排他処理を行い、データを書き込む。
【００７７】
図５は、排他アクセス部２３の処理内容を示したフローチャートである。排他アクセス部２３によって共有データへのアクセスを一元管理し排他処理を行う。
【００７８】
図５において、工程（Ｐ５−１）で、ＲＡＭ３０に格納されているＩＤ−アドレス変換テーブルを用いてパラメータＩＤから共有データのアドレスを取得し、工程（Ｐ５−２）で排他処理を行って他のモジュールからのアクセスを禁止する。
【００７９】
次に、工程（Ｐ５−３）でアクセスされたインターフェイスによって処理を分ける。ＩＲインターフェイスがアクセスされたときは、Ｉデータ格納部３１に格納された共有データを読み込む（工程（Ｐ５−４））。ＩＷインターフェイスがアクセスされたときは、Ｉデータ格納部３１に格納された共有データに書き込みを行う（工程（Ｐ５−５））。
【００８０】
Ｒインターフェイスでアクセスされたときは、ＮＩデータ格納部３２に格納された共有データを読み込む（工程（Ｐ５−６））。Ｗインターフェイスでアクセスされたときは、ＮＩデータ格納部３２に格納された共有データに書き込みを行う（工程（Ｐ５−７））。
【００８１】
工程（Ｐ５−４）〜（Ｐ５−７）が終了すると、工程（Ｐ５−８）で排他処理を終了し、他のモジュールから要求されたアクセスを許可する。そして、工程（Ｐ５−９）でアクセスＩＦ部２１にアクセスした結果を返す。
【００８２】
図６に、アクセス権限があるかどうかをチェックするときに用いるＩＷアクセステーブル、書き込むデータが予め定められた範囲にあるかどうかをチェックするときに用いる範囲チェックテーブル、パラメータＩＤからＲＡＭ３０のアドレスを取得するときに用いるＩＤ−アドレス変換テーブルの一例を示す。ＩＷアクセステーブルと範囲チェックテーブルはＩＷアクセス部２２が図４フローチャートの工程（Ｐ４−１）、（Ｐ４−２）で使用し、ＩＤ−アドレス変換テーブルは排他アクセス部２３が図５フローチャートの工程（Ｐ５−１）で使用する。
【００８３】
図６（Ａ）はＩＷアクセステーブルの例である。ＩＷアクセステーブルには、全てのパラメータＩＤについてモジュール毎に書き込む権限がある（○）か否（×）かが格納される。この例では、PROCESSS_VALUE1、PROCESS_VALUE2は、センサ処理モジュール１０ａのみ書き込み権限があり、通信処理モジュール１０ｂ、ＵＩ処理モジュール１０ｃには書き込む権限がないことを表している。図２の項番４はセンサ処理モジュール１０ａからの書き込み要求なので、許可される。
【００８４】
図６（Ｂ）は範囲チェックテーブルの例である。範囲チェックテーブルには、範囲チェックが必要なパラメータＩＤについて、その最大値と最小値が格納される。この例では、PROCESS_VALUE1の範囲は０〜１００であり、PROCESS_VALUE2の範囲は−１００〜１００であることを表している。図２の項番４の書き込み値は12.34であり、書き込み範囲に入っているので許可される。
【００８５】
図６（Ｃ）はＩＤ−アドレス変換テーブルの例である。ＩＤ−アドレス変換テーブルには、全てのパラメータＩＤについて、そのデータが格納されているＲＡＭ３０のアドレスが格納される。この例では、PROCESS_VALUE1、 PROCESS_VALUE2のアドレスは、それぞれ0x1XX0、0x1XX4である。
【００８６】
図７は、センサ処理モジュール１０ａがセンサ部１２から物理量データを読み込み、重要な共有データであるプロセス値に変換してＲＡＭ３０に格納するときの流れを模式的に表した図である。
【００８７】
センサ処理モジュール１０ａはセンサ部１２から物理量を読み込んでプロセス値に変換する。プロセス値は重要な共有データなので、ＲＡＭ３０に格納するためにアクセスＩＦ部２１のＩＷインターフェイスを用いる。
【００８８】
アクセスＩＦ部２１は、呼び出し元モジュール名（センサ処理モジュール１０ａ）とプロセス値のパラメータＩＤ、書き込みデータをＩＷ処理部２２に渡す。ＩＷ処理部２２は、ＲＡＭ３０に格納されているＩＷアクセステーブル３３、範囲チェックテーブル３４を用いて、図４フローチャートによりアクセス権限と書き込むデータの範囲を調べてアクセスの正当性をチェックし、ＯＫなら排他アクセス部２３に書き込み要求を出力する。
【００８９】
排他アクセス部２３は、図５フローチャートに基づいて処理を行う。すなわち、ＲＡＭ３０に格納されたＩＤ−アドレス変換テーブル３５を用いてアドレスを得、排他処理を行ってプロセス値を書き込む。プロセス値は重要な共有データなので、Ｉデータ格納部３１に格納されている。
【００９０】
書き込みが終了すると、排他アクセス部２３はその結果をアクセスＩＦ部２１に返す。アクセスＩＦ部２１は、この結果をセンサ処理モジュール１０ａに出力する。
【００９１】
図８は、通信処理モジュール１０ｂが、通信部１３が受信した表示パラメータを変更するときの流れを模式的に表した図である。
【００９２】
通信処理モジュール１０ｂは通信部１３から表示パラメータの変更値を得る。表示パラメータはその他のデータなので、通信処理モジュール１０ｂはアクセスＩＦ部２１のＷインターフェイスを用いる。
【００９３】
アクセスＩＦ部２１は、表示パラメータのＩＤと変更値を排他アクセス部２３に渡す。排他アクセス部２３は、ＲＡＭ３０に格納されたＩＤ−アドレス変換テーブル３５を用いてアドレスを得、排他処理を行って表示パラメータを変更する。表示パラメータはその他のデータなので、ＮＩデータ格納部３２に格納されている。
【００９４】
書き込みが終了すると、排他アクセス部２３はその結果をアクセスＩＦ部２１に返す。アクセスＩＦ部２１は、この結果を通信処理モジュール１０ｂに出力する。
【００９５】
図９は、ＵＩ処理モジュール１０ｃがプロセス値を得て、表示器１４に表示するときの流れを模式的に表した図である。
【００９６】
ＵＩ処理モジュール１０ｃは、表示するプロセス値を得るためにアクセスＩＦ部２１のＩＲインターフェイスを用いてアクセスする。アクセスＩＦ部２１は、表示パラメータのＩＤを排他アクセス部２３に渡す。排他アクセス部２３は、ＲＡＭ３０に格納されたＩＤ−アドレス変換テーブル３５を用いてプロセス値のアドレスを得、排他処理を行ってプロセス値を読み出す。プロセス値は重要なデータなので、Ｉデータ格納部３１に格納されている。
【００９７】
読み出しが終了すると、排他アクセス部２３は読み出した結果と読み出した値をアクセスＩＦ部２１に返す。アクセスＩＦ部２１は、読み出した結果とプロセス値をＵＩ処理モジュール１０ｃに出力する。ＵＩ処理モジュール１０ｃはプロセス値を表示器１４に表示する。
【００９８】
なお、表示パラメータの読み出しなどＲインターフェイスを用いたアクセスはＩＲインターフェイスを用いたアクセスと同じなので、説明を省略する。
【００９９】
この実施例では、重要な共有データの書き込みのみ、その正当性をチェックすることにより、負荷の増大を抑えつつ、間違ったデータの書き込みを防止することができ、アクセスの信頼性を高めることができる。
【０１００】
また、排他アクセス部を用いて共有データへのアクセスを一元化したので、各モジュールで排他処理を行う必要がなくなる。そのため製品全体の動作を把握しなくてもモジュールの開発を行うことができる。また、モジュール間の関係が簡単になるので、異なる機種間でモジュールの再利用が容易になるという効果もある。また、アクセスＩＦ部を用いて共有データへのアクセスを統一化することにより、モジュール間の関係が簡単になるので、モジュールの開発、デバッグ、テストが容易になる。
【０１０１】
図１０に、本発明の他の実施例を示す。なお、図１と同じ要素には同一符号を付し、説明を省略する。図１０において、４０はＣＰＵであり、ＣＰＵ２０にＷ処理部４１が追加された構成を有している。
【０１０２】
アクセスＩＦ部２１は、モジュール１０ａ〜１０ｃからＷインターフェイスを用いてその他の共有データの書き込み依頼があると、共有データのＩＤと書き込む値を付けた書き込み要求をＷ処理部４１に出力する。Ｗ処理部４１はＩＷ処理部２２と同様にアクセスに関するチェックを行うが、ＩＷ処理部２２よりは簡単なチェックを行う。
【０１０３】
例えば、書き込み権限があるモジュールからの書き込み要求であるかのチェックのみ、または書き込むデータが予め定められた範囲にあるかどうかのチェックのみ行う。チェックがＯＫであると、Ｗ処理部４１は排他アクセス部２３に書き込みを依頼する。
【０１０４】
このようにすることにより、その他のデータに対しても誤った書き込みを防止することができる。また、重要なデータの書き込みとその他のデータの書き込みでチェック処理を分けることにより、負荷が増大することなく、全てのデータの書き込みに対して正当性を保つためのチェックを行うことができる。
【０１０５】
なお、これらの実施例ではアクセスＩＦ部２１にＩＷ、ＩＲ、Ｗ、Ｒの４つのインターフェイスを設けるようにしたが、図１実施例ではＩＲ、Ｒ、Ｗインターフェイスを用いた場合の処理は同じであり、図１０ではＩＲ、Ｒインターフェイスの処理は同じなので、ＩＷとその他のインターフェイスの２つのみ、あるいはＩＷ、Ｗ、その他の３つのインターフェイスを設けるようにしてもよい。
【０１０６】
また、アクセスＩＦ部２１のインターフェイスを１つにして、アクセスＩＦ部２１内で重要なデータかどうか、書き込みかどうかを判定し、ＩＷ処理部２２あるいはＷ処理部４１を呼び出すようにしてもよい。
【０１０７】
また、アクセスＩＦ部２１を用いないで、各処理モジュール１０ａ〜１０ｃが重要なデータを書き込むときにＩＷ処理部２２を呼び出し、重要なデータの読み出しとその他のデータのアクセス時に排他アクセス部２３を呼び出すようにしてもよい。図１０実施例のＷ処理部４１も同様に行うことができる。
【０１０８】
また、これらの実施例ではＩＷアクセステーブル３３、範囲チェックテーブル３４、ＩＤ−アドレス変換テーブル３５をＲＡＭ３０に格納するようにしたが、ＲＯＭ１７あるいはその他の場所に格納するようにしてもよい。
【０１０９】
さらに、図１、図１０の実施例ではセンサ処理、通信処理、ＵＩ処理の３つのモジュールがあるとして説明したが、他のモジュール構成であってもよい。
【符号の説明】
【０１１０】
１０ａ  センサ処理モジュール
１０ｂ  通信処理モジュール
１０ｃ  ＵＩ処理モジュール
２０、４０  ＣＰＵ
２１  アクセスＩＦ部
２２  ＩＷ処理部
２３  排他アクセス部
３０  ＲＡＭ
３１  Ｉデータ格納部
３２  ＮＩデータ格納部
３３  ＩＷアクセステーブル
３４  範囲チェックテーブル
３５  ＩＤ−アドレス変換テーブル
４１  Ｗ処理部
【図１】
0005418966.tif 000002
【図２】
0005418966.tif 000003
【図３】
0005418966.tif 000004
【図４】
0005418966.tif 000005
【図５】
0005418966.tif 000006
【図６】
0005418966.tif 000007
【図７】
0005418966.tif 000008
【図８】
0005418966.tif 000009
【図９】
0005418966.tif 000010
【図１０】
0005418966.tif 000011
【図１１】
0005418966.tif 000012
【図１２】
0005418966.tif 000013
【図１３】
0005418966.tif 000014
【図１４】
0005418966.tif 000015
【図１５】
0005418966.tif 000016