図1は、以下でフィールド管理解システム(FMSシステム)と呼ぶ管理システム10が、プロセス12、プロセス12を制御するディジタル制御システム14(DCS)、および別のFMSシステム15などさらなる管理システムと相互接続されている状態を示す。プロセス12は、製造工程または精練工程など、所望の種類のプロセスから構成することができ、3つのHARTデバイス16、19、20および1つのフィールドバス22を含む4つのスマートフィールドデバイスと、従来型(すなわち非スマート)デバイス24とを含むものとして示されている。デバイス16、18、20、22、24は、所望の方法でディジタル制御システム14によって制御される。
一般に、FMSシステム10はPCを使用するソフトウェアツールであり、フィールドデバイスの管理タスクを実行する応用プログラムを含む。FMSシステム10は、ユーザがプロセス12に対応付けられるスマートフィールドデバイスのいずれかおよび全部を例えば構成、校正、監視、および障害探索するのを助けることによって、プロセス12内のデバイスの各々のデバイス管理を統合する。
FMSシステム10は、任意の種類のコンピュータまたはマイクロプロセッサを使用するシステムで構成することができ、オペレーティングシステムおよびCPU36に接続されたディスプレイ30、プリンタ31、キーボード32、およびマウス34を含むことができる。FMSデータベース40を備えたメモリ38は、オペレーティングシステムおよびCPU36に接続される。FMSデータベース40を含むメモリ38は、ディスプレイ30またはプリンタ31を介して情報をユーザに表示したりスマートデバイス16、18、20、22と通信することに関連するタスクを実行する際に、FMSシステムによって使用されるソフトウェアおよびデータを保存する。さらにFMSデータベース40は、例えばデバイスの過去の構成に関する情報、オフラインスマートデバイスや従来型デバイスなどのオフラインデバイスに関する情報、および次のサービスがいつ必要になるか、誰がサービス手順を実行したか、望ましい交換デバイス等を含むサービスノートに関する情報など、スマートデバイスからは得られないデバイス関連情報を保存する。オフラインスマートデバイスに関するデータは、そのデータが実際にオフラインデバイス内に保存される形式と同一の形式で、データベース40内に保存することができるので、FMSシステム10にとって、オフラインデバイスは、これらのデバイスがオンラインの場合に利用できるのと同様の方法で、データベース40を介して利用できるように見える。
スマートデバイス16、18は、通信回線42およびモデム44を介してFMSシステムに接続されたオンラインデバイスである。スマートデバイス22は、フィールドバスインタフェース45を介してFMSシステムに接続されたオンラインデバイスである。スマートデバイス20は、FMSシステム10に永久接続されないオフラインデバイスである。しかし、スマートデバイス20は、デバイス20および/または他のスマートデバイスからデータを読み出したり、そこへデータを書き込むために、後で詳述するようにデバイス20および/または他のスマートデバイスのどれにでも定期的に接続できるハンドヘルドコミュニケータおよび/または2次(ラップトップ)FMS46を介して、FMSシステム10と通信することができる。その後、ハンドヘルドコミュニケータおよび/または2次FMS46をFMSシステム10に接続し、それが接続されたスマートデバイス20および/またはその他のいずれかのスマートデバイスに関するデータをアップロードすることができる。
希望すれば、FMSシステムのオペレーティングシステムおよびCPU36を、例えばイーサネット(登録商標)通信リンク48および/またはその他の通信リンクを介して、ディジタル制御システム14および他のFMSシステム、例えばもう1つのFMSシステム15に接続することができる。
図2は、ハードウェアおよびソフトウェアコンボーネントを含むFMSシステム10の様々な構成部品間の相互接続を示すものであり、FMSシステム10のメモリ38に保存された様々なソフトウェアコンポーネントが相互同士、およびディスプレイ30、プリンタ31、キーボード32、マウス34、FMSデータベース40、およびプロセス12内のスマートデバイスと、いかに相互作用するかを説明するために使用される。FMSシステム10のソフトウェアコンポーネントは、メモリ38に保存され、オペレーティングシステムおよびCPU36上で実行することを理解されたい。
FMSシステム10はマイクロソフトウィンドウズ(登録商標)環境(ウィンドウズ(登録商標)95TM環境など)で動作することが望ましく、したがって、標準ウィンドウズ(登録商標)〜オペレーティングシステム46を含み、これは、データや情報をディスプレイ30やプリンタ31に表示したり、データや情報をキーボード32やマウス34から検索するために使用される。したがって、ウィンドウズ(登録商標)オペレーティングシステム46に提供されたり、そこから検索される情報は、当業者には周知である所望の種類の標準ウィンドウズ(登録商標)呼出しフォーマットで提供することが望ましい。しかし、本発明では、例えばマッキントッシュ、Xウィンドウズ(登録商標)、またはIBM DOSフォーマットをはじめ、その他の所望のウィンドウズ(登録商標)系または非ウィンドウズ(登録商標)系のインタフェースフォーマット(グラフィカルユーザインタフェースであるか否かに関係なく)を使用して、FMSシステム10を実現することができる。
FMSシステム10は、コアアプリケーション52およびアドオンアプリケーション54から構成される1組のFMSアプリケーションを含む。コアアプリケーション52は基本的に、予め定められ頻繁に使用される動作を実行するために、FMSシステム提供者によって作成されたプログラムである。アドオンアプリケーションは、ユーザまたは第3者開発業者によって作成され、カスタマイズされた機能を実行するためにFMSシステム10に移入された応用プログラムである。
以下で使用するアプリケーションとは、FMSシステム10によって実現されるソフトウェアルーチンを指し、これは、プロセス12または1つ以上のデバイス、ブロック、パラメータに関連するユーザ情報、またはFMSシステム10に接続または対応付けられたデバイスに対応付けられたその他の情報を表示したり、FMSシステム10に対応付けられるか接続された1つ以上のデバイスをユーザに再構成させることができる。アプリケーションによって使用される情報は一般的にプロセス12内のスマートデバイスに保存されるか、またはこれによって作成され、あるいはFMSデータベース40に保存される。
したがって、例えば、FMSシステム10は、ユーザがFMSデータベース40内および/またはプロセス12内部のスマートデバイス内のデータと相互作用して、プロセス12内のデバイスの1つ以上の現在の状態を表示したり、プロセス12内のスマートデバイスの1つ以上の構成を変更したり、複数のデバイスを同時にまたは逐次的に表示したり、共通スマートデバイス制御および構成機能を実行したり、ネットワーク内でデバイスを位置決めするブラウザを実行したり、デバイスの状態を監視したり、アラームリストを生成したり、デバイスの校正および検査ルーチンを実現することを可能にするコアまたはその他のアプリケーションを含むことができる。
その他の一般的なコアアプリケーションとして、構成アプリケーション、構成管理アプリケーション、アラーム走査アプリケーション、履歴イベントログアプリケーション、レポートアプリケーション、トレンド解析アプリケーション、および診断アプリケーションを挙げることができる。構成アプリケーションは、プロセス内のデバイスの1つ以上のパラメータに対応付けられる変数の値を表示し、これらのパラメータ値のうち適切な幾つかをユーザに変更させることができる。構成管理アプリケーションは、例えばデバイスのリセット、デバイスの初期化、およびデバイスの校正など、デバイス全体の構成をユーザに管理させる。アラーム走査アプリケーションは、FMSシステム10によって管理されている全てのデバイスを検査し、これらのデバイスが正しく作動しているかどうか、あるいはこれらのデバイスのどれかに誤りが発生していないかどうかを決定する。履歴イベントログアプリケーションは、例えばユーザログイン情報、FMSシステム10によって管理されているデバイスの構成に行なわれた変更、FMSシステム10によって管理されているデバイスに対応付けられるアラーム、およびその他のイベントを示す時刻表示メッセージを含むイベントログを提供する。レポートアプリケーションは、1つ以上のデバイスの例えば過去、現在、および所望の未来の構成を全て示すレポートを自動的に生成する。トレンド解析または「傾向変動(trending)」アプリケーションは、特定のデバイス内またはプロセス全体で発生するかもしれないトレンド(傾向)を識別するために、プロセス12内のデバイスによって測定されたデータを記録する。その他の所望のアプリケーションを作成し、FMSシステム10に設けることができることは、明白である。
FMSシステム10の動作中、ユーザは、実行するアプリケーションの1つまたはそれ以上を選択する。選択されたアプリケーションは、図2で現在のアプリケーション56として識別されている。複数のアプリケーションをFMSシステム10によって同時に実行できるので、複数の現在のアプリケーション56が存在し得る。現在のアプリケーション56はどれも、ウィンドウズ(登録商標)オペレーティングシステム46、インタフェースブロック58、ディジタル制御インタフェース(DCI) 60、およびFMSデータベースインタフェース62と直接インタフェースすることができる。望むならば、現在のアプリケーション56は、オープンデータベースコネクティビティ(ODBC)ブロック64(ほとんど全てのデータベースとの通信を可能にする、よく知られたマイクロソフトデータベースアプリケーションインタフェース(API)システム)ともインタフェースすることができる。しかし、多くのアプリケーションにとって、そうした接続は必要でなく、あるいは望ましくない。さらに、現在のアプリケーション56はどれも、ウィンドウズ(登録商標)オペレーティングシステム46、プロセス12内のスマートデバイス、およびデータベース40とインタフェースブロック58を介して、間接的にインタフェースすることができる。
インタフェースブロック58は基本的に、例えば特に構成されたウィンドウズ(登録商標)カスタムコントロール、OXCコントロール、またはVBXコントロールを有するソフトウェアパッケージであり、これは、現在のアプリケーション56、プロセス12内のスマートデバイス、データベース40、およびウィンドウズ(登録商標)オペレーティングシステム46とディスプレイ30とプリンタ31とキーボード32とマウス34とから構成されるユーザインタフェース65の間における特定の頻繁に使用される情報の通信に関係する機能を、自動的に実行する。インタフェースブロック58は現在のアプリケーション56によって使用され、関係するプロトコルの仕様を知っているアプリケーション設計者がいなくても、これらのインタフェース機能を実行することができる。その結果、インタフェースブロック58により、アプリケーションはいっそう容易に設計することが可能になり、一貫したユーザインタフェースが得られる。
現在のアプリケーション56およびインタフェースブロック58は、サーバ68、70から構成されるサーバネットワーク66を介して、DCI60、およびプロセス12内のスマートデバイス、他のFMSシステムまたはディジタル制御システム、および/またはデータベース40とインタフェースして通信することが望ましい。一般的に、サーバネットワーク66はFMSシステム10内に配置され、それに対応付けられるが、図2のDCI60とサーバ66、70との間の点線は、DCI60が、例えば図1に示すイーサネット(登録商標)接続を介して、他のFMSシステムのサーバネットワークにもアクセスできることを示す。
基本的に、DCI60は、データベース40、プロセス12内のスマートシステム、および/またはその他のFMSシステムと通信し、そこからデータを検索するために必要な機能や、これらに関係するその他の機能を実行するライブラリルーチンで構成されるコンビニエンス層(convenience layer)である。動作中、DCI60は、現在のアプリケーション56およびインタフェースブロック58から送信されたコマンドおよびメッセージを、サーバネットワーク66で認識され使用されるフォーマットに変換し、同様に、サーバネットワーク66によって提供されたデータを、現在のアプリケーション56およびインタフェースブロック58で認識され使用される形式に変換する。
DCI 60は、これらの通信機能を実施するために任意の好ましいプロトコルを使用できるが、好ましくは目的向きプロトコルを使用し、また最も好ましくは、マイクロソフト社により開発および文書化されたObject Linking and Embedding(OLE)プロトコルのようなオブジェクト連結および埋込みプロトコルを使用する。マイクロソフトOLE(2.0)プロトコルは、マイクロソフトのウインドウズ95のオペレーティングシステムに使用され、技術上周知のものである。
一般に目的向きプロトコルは、送信メッセージにより対話する独立オブジェクトの収集として世界をモデル化するプログラミング模範である。オブジェクトには、データ(状態)およびそのデータで実施できる方法(アルゴリズム)が含まれる。加えてオブジェクトは、インタフェース接続部を通して互いに関連し、また階層メッセージを通して他のオブジェクトと通信できる。オブジェクトは、メッセージを受信すると、そのオブジェクト内のデータを処理することができるオブジェクト自体の方法を使用することにより、および特定のタスクを実施しかつ適切な結果を多分返送するために他のオブジェクトへメッセージを送信することにより、応答する。
DCI 60はOLE階層を通してサーバネットワーク66と通信する。DCIは、OLEオブジェクトの読出と書込に関する標準OLE手順と呼出しを使用し、OLEオブジェクト内の一組の列挙された値を列挙し、OLEオブジェクト内の特性を入手および設定し、OLEオブジェクトの方法を呼出しかつ実施し、およびOLEアイテム方法(特定の方式のOLE方法)と連係してOLE収集オブジェクト内に格納されている特性データを検索する。しかしながら他のOLE手順は、サーバネットワーク66と通信するためにOLEオブジェクトでDCI60により実施できる。
以下にさらに詳細に説明するように、FMSシステム10により好ましくは使用される特定のOLE階層は、各種の情報の全てを分類するために、かつDDのそれぞれに関連する各種のDDLのそれぞれに利用できるかまたはそれぞれにより使用される各種の情報間の相関関係を分類するために開発されたOLEオブジェクト階層であり、ついでそのDDは、FMSシステム10によりサービスされているプロセス12内のデバイスと関連する。この決められた階層は一組のOLEオブジェクトを形成し、そのそれぞれは、その階層により定義される一組の特性と、および特性データを処理するために、かつ階層により形成される関係に従って他のOLEオブジェクトと通信するために使用できる特定の組の方法とを格納する。この階層は、図3および4と連係してさらに詳細に検討する。
本質的にDCI 60は、決められた階層について識別された全てのOLEオブジェクトがサーバネットワーク66のメモリ内にあたかも存在するように、サーバネットワーク66と通信する。DCI 60は、OLEプロトコル内のOLEオブジェクトとの通信に必要な単一の組の呼出しを実施する。しかしながら現実には、それぞれのOLEオブジェクトのデータと方法は、読出の呼出しまたは書込の呼出しのような呼出しが、例えばDCI 60、DDS 72、スマートデバイスコミュニケーションネットワーク74、またはFMSデータベースインタフェース80によりそのようなOLEオブジェクト用のサーバネットワーク66へ送られるまで、サーバネットワーク66のメモリへは実際には格納または収納されない。その時点においてサーバネットワーク66は、OLEオブジェクトに関係するデータと方法を検索し、かつがサーバ68または70の1つに関連するメモリに格納しなければならないことを認識し、そのOLEオブジェクトのデータと方法を検索するのに必要な機能を自動的に実施する。
サーバネットワーク66は、そのメモリに格納されるOLEオブジェクトの1つの内部のデータと方法の読出と書込に関係する呼出しを受信したとき、プロセス12およびFMSデータベース40内のOLEオブジェクト、DDS 72、スマートデバイスからデータを読出しかつ、それへデータを書込むように、その格納されたルーチンに従ってOLEオブジェクトデータへ要求された情報を返すか、または要求された機能を実施する。
同様にDCI 60は、サーバネットワーク66に関連するメモリに格納されるOLEオブジェクトの変更を認識または受信し、カレントアプリケーション56およびインタフェースブロック56との通信を実施するために、それに基づいた機能を実施する。サーバネットワーク66は、決められたOLE階層内のOLEオブジェクトとインタフェースをとり、またデバイスサーバ68およびデータベースサーバ70を備える。デバイスサーバ68は本質的には、決められたOLE階層内の一組のOLEオブジェクトとの規定された対応を有する一組のソフトウエアルーチンである。これらのルーチンは、DDS 72、スマートデバイスコミュニケーションネットワーク74、および決められた階層のOLEオブジェクトとの通信のために特に開発される。そのようなルーチンは、プロセス12内のスマートデバイスから、および/またはプロセス12内のスマートデバイスに関連するDD(これはファイルである)から入手できるか、またはその内部に格納される特定の種類のデータと情報を例えば送信、検索および変更できる。同様にデータベースサーバ70は本質的に、決められたOLE階層内のOLEオブジェクトに関連する一組のソフトウエアルーチンである。これらのルーチンは、DDSまたはAPIおよび/またはFMSデータベースインタフェース80と通信して、FMSデータベース40から、および/またはスマートデバイス用のデータがFMSデータベース40に格納されるスマートデバイスに関連するDDから入手できるか、またはその内部に格納される特定の種類のデータと情報を例えば送信、検索および変更する。図2に示されるようにDDS 72により使用されるDDは、DDSライブラリ72へ連結されるデバイス記述ライブラリ76に格納される。
サーバ66と70のルーチンは、DDS 72から、スマートデバイスから、またはデータベース40からOLEオブジェクトのデータを検索するために必要な特定の読出機能を実施するルーチンが、DCI 60からのそのようなデータについての要求により自動的に実施されるように、OLEオブジェクトのそれぞれに関連する。同様にサーバ66と70のルーチンは、スマートデバイスの構成を変更するために、または情報をデータベース40に格納するために要求される特定の書込機能を実施するルーチンが、OLEオブジェクト内のそのようなデータを書込む要求により自動的に実施されるように、OLEオブジェクトのそれぞれに関連する。
例えば、スマートデバイス内、またはそれに関連するデータを表すOLEオブジェクト内の特性値を書込むようにDCI60によりなされる要求により、サーバ68は、新しい特性値をスマートデバイスへ書込むルーチンを実施する。同様に、スマートデバイスに格納される、またはそれと関連する特性値を任意のOLEオブジェクトから読出す要求により、そのOLEオブジェクトに関連する特性値をDDSおよび/またはスマートデバイスから検索するサーバルーチンが自動的に呼び出され、またそのような特性値が、OLEオブジェクトとして、サーバ68に関連するメモリ(図示されない)に格納される。同様に、データベース40に格納されるデータに関連するOLEオブジェクト内の特性値を書込むように例えばDCI 60によりなされる要求により、そのOLEオブジェクトが関連するデータベース40内の位置へ新しい特性値を書込むサーバ70ルーチンが自動的に実施される。同様に、OLEオブジェクトから特性値を読出す要求により、サーバ70は、DDSから、および/またはこれらの特性値に関連するデータベース40内の位置からそのOLEオブジェクトに関連するデータを検索し、またそのような特性値を、OLEオブジェクトとして、サーバ70のメモリ(図示されない)に格納する。
これらのサーバルーチンは、単純であり、直接的であり、かつ技術に有能な者による書込みが容易であるので、ここでは提供されない。しかしながらOLEおよびDDLに周知の者は、任意の好ましいプログラミング言語を使用して単純な仕方でそのようなルーチンを作成できる。必要に応じて、できるだけ高速で実施して、それによりFMSシステム10内のカレントアプリケーションの操作速度を増加するように、任意の好ましい方法で、そのルーチンを書込むか、または最適化ができる。
一般に、プロセス12のオンラインデバイスの1つから特定のデータ、またはその1つに関連する特定のデータを検索するために、サーバ68はDDS 72に特定のデータを尋ねる。そのデータが、スマートデバイス用のDDに格納されているならば、DDS 72は、参照されたデバイスについてDDS72を調べるか、または参照されたデバイスのブロックに関連するDDを調べて、要求されたデータをサーバ68へ返す。
特定のデータがDDから入手できたならば、サーバ68は、検索されたデータが関連するOLEオブジェクト内にそのデータを格納し維持する。しかしながら要求された特定のデータがデバイス用またはデバイスのブロック用のDDから入手できないが、代わりにオンラインデバイス内に格納されているならば、サーバ68は、コマンドをスマートデバイスコミュニケーションインタフェース74(これは、例えばカールスルーエに所在するドイツの会社であるSoftIngにより開発されたFieldbusデバイスインタフェース、またはコロラド州ボルダーに所在するMicromotionのHARTデバイスインタフェースを含む既知の任意のスマートデバイスコミュニケーションインタフェースから構成できる)へ送り、オンラインデバイスから特定のデータを検索する。
ついでスマートデバイスコミュニケーションインタフェース74は、サーバ68により要求されるデータのために特定のオンラインデバイスへ到達する仕方についての情報の要求をDDS 72へ送る。DDS 72は、オンラインデバイス用のDDからこの命令情報を検索し、命令情報をスマートデバイスコミュニケーションインタフェース74へ返し、ついでインタフェース74が適切な要求をオンラインスマートデバイスへ送る。ついでスマートデバイスは、特定のデータを含むデータストリームに応答する。ついでスマートデバイスコミュニケーションインタフェース74は、オンラインスマートデバイスから受信したデータストリームを解釈する仕方についての情報の要求をDDS 72へ送る。ついでDDS 72は、オンラインスマートデバイス用のDDからの解釈命令を検索し、その解釈命令をスマートデバイスコミュニケーションインタフェース74へ返し、ついでインタフェース74が、サーバ68により要求された特定のデータを抽出するために、解釈命令に従ってオンラインデバイスからのデータストリームを解釈する。ついでスマートデバイスコミュニケーションインタフェースが、特定のデータをサーバ68へ返し、サーバ68は、そのデータが関連するOLEオブジェクトへ検索されたデータを提供する。
サーバー68がまずDDS72に、例えばデータが書込み可能であるかどうか、どのタイプ、どの特定値及びどのデータ範囲が書き込み可能であるか、等の書込み情報の要求を送信する場合を除いて、オンラインデバイスへのデータ書き込みの工程は、同デバイスからのデータ読取りの工程に類似している。データの書き込みが可能であれば、サーバー68はスマートデバイスコミュニケーションインタフェース74に書き込み指令を送り、同インタフェース74は、次いでDDS72とインタフェースで接続して当該オンラインデバイスの書込みプロトコルを照会し、情報に応じてオンラインデバイスに書込み指令を送信する。スマートデバイスコミュニケーションインタフェース74はまた、デバイス内で発生する書込み検証、応答コード、データまたは値の変更等のオンラインデバイスからの他のデータを解釈し、適当なOLEオブジェクトに保存するためにこうしたデータをサーバー68に送信することができる。
インタフェースによっては、DDS72がサーバー68に対し、データ要求に返答するにはさらなる情報が必要であると通知する場合がある。例えば、DDS72は、あるパラメータのハンドリングプロパティ(即ち、同パラメータが読取り可能及び/或いは書込み可能かどうか)が特定デバイスのモードパラメータに依存すると判断することができる。DDS72は、サーバー68に、デバイスのモードパラメータ要求を送信する。サーバー68は、これに応答して、スマートデバイスコミュニケーションインタフェース74にデバイスのモードパラメータ要求を送信し、同インタフェース74は、上述の通りに作動して同デバイスのモードパラメータを検索する。サーバー68は、スマートデバイスコミュニケーションインタフェース74から同デバイスのモードパラメータを受信すると、同情報をDDS72に送信し、DDS72は次いでデバイスのパラメータのハンドリングプロパティを決定し、こうしたプロパティをサーバー68に戻し、サーバー68がこれを受けてその値を適当なOLEパラメータオブジェクトに配置する。
サーバー70と、DDS72と、FMSデータベースインタフェース80との間の通信は、FMSデータベースインタフェース80がスマートデバイスではなくFMSデータベース40との間で情報の読取り及び書込みを行うようにプログラムされていることを除けば、上述のものと類似している。しかしながら一般的には、FMSデータベースインタフェース80は、DDS72とサーバー70との間の通信に関連している点でスマートデバイスコミュニケーションインタフェース74の機能に似ている。
FMSデータベースインタフェース80に、例えばデータベース40に於けるオフラインデバイスに付随する値のような情報、及びオンライン及びオフラインデバイスに対して行われる変更に関するデータを、DDLフォーマットで、即ちオンラインデバイスに於けるこうした情報の保存方法に似たフォーマットで保存させることは可能である。このような場合には、FMSデータベースインタフェース80はDDS72にアクセスしてデータがFMSデータベース40内にどのように保存されているかを決定する必要があると思われる。例えば場合によっては、データベース40は、デバイスの状態を模倣する、といった目的で過去のパラメータ等のパラメータ値を保存している。従って、FMSデータベースインタフェース80は、同データベースにどんな種類のデータが保存されているか、つまり、整数、計数他、を知るために、DDS72にアクセスしてこの情報を検索しなければならない場合がある。しかしながら、データベース40に保存される情報は、DDLフォーマットで保存される必要はない。従って、サーバー70からのデータベース40との間のデータの読取り及び書込み指令を実行するに当たって、FMSデータベースインタフェース80はDDS72にアクセスしてデバイス値を求める必要がない可能性がある。代わりにFMSデータベースインタフェース80は、データベース40との間で直接、データの書込み及び読取りを行うことができる。
FMSデータベースインタフェース80は、好適には任意のコンベンショナルタイプのアプリケーションプログラムインタフェース(API)であり、任意の望ましい或いは周知の方法に従ってデータベース40から情報を検索するように特にセットアップされ、構築されている。従って、FMSデータベースインタフェース80は、データベース40のどこに、どんな方法でデータが保存され、検索されるかを自動的に記録する。
先の指摘の通り、カレントアプリケーション56、及び必要であればインタフェースブロック58もまた、FMSデータベースインタフェース62及びODBCブロック64を通じてデータベース40とインタフェースで接続することができる。FMSデータベースインタフェース62は、データ及び要求をカレントアプリケーション56による認識或いは使用が可能なフォーマットからODBCブロック64による認識及び使用が可能な形式に、またこの逆で変換するように開発されたルーチンのライブラリを有する任意の望ましい或いは周知のアプリケーションプログラムインタフェースで構成することができる。FMSデータベースインタフェース62(API)を使用してデータベース40への書込みを行うことは、ODBCブロック64を直接使用することとは対照的に、データベースの完全性及び一貫性の維持を助長し、またアプリケーションがデータベース管理からシールドされるためにアプリケーションによる書込みが容易になる。典型的には、データベース40にデータを本明細書に於いて検討したOLEオブジェクト階層通信計画によるアクセスが不可能な、或いは同計画との互換性のないフォーマットで保存する必要のあるアプリケーションでは、FMSデータベースインタフェース62及びODBCブロック64(または他の任意のオープンデータベースアクセスシステム)が使用される。
図3及び図4は、1つまたは複数のDDLで定義された、或いは同DDLから入手可能な全ての情報を表示するように開発された特別のOLEオブジェクト階層と、こうしたDDLのプロトコルに従ったスマートデバイスと、こうしたDDLを使用しているデバイスに関連する情報を保存したデータベースとを示している。図3及び図4の階層はまた、こうしたOLEオブジェクト間の関係性を表示している。この階層をOLE環境に於いて使用すると、DDL、DDLを使用するスマートデバイス及びDDLを使用するスマートデバイスに関連する情報を保存するデータベースに付随する情報を検索するアプリケーションを実行することができる。このように、図3及び図4の階層は、DDL情報(即ち、DDLのDDから入手可能な情報及び/或いはデバイスまたは1つまたは複数のDDLを使用するデバイスに付随するデータベースから入手可能な情報)の配置だけでなく、この情報にアクセスし、これを検索、変更するために図2のDCI60及びサーバー68、70間のインタフェースを定義する方法を示している。
図3及び図4の階層に於ける各OLEオブジェクトは、好適にはOLEオートメーションオブジェクトであり、OLEオブジェクトのタイプを内部に同定した長円形として表示されている。図3及び図4のOLEオブジェクトは各々、1つまたは複数のDDL内に定義された、或いはDDLによって使用される情報サブセット、及びDD、スマートデバイス及びスマートデバイスに関する情報を保存しているデータベースから入手可能な情報サブセットを含むか、これに接続されている。
一般に、図3及び図4のOLEオートメーションオブジェクトは各々、プロパティ(または属性)、方法及びインタフェースを含んでいる。図3及び図4内のOLEオブジェクトはオートメーションオブジェクトであるため、これにはIDispatchインタフェース(OLEプロトコルの周知のインタフェース)が接続されている。図3及び図4のOLEオートメーションオブジェクトのIDispatchは、例えばDCI60及びサーバーネットワーク66によって、同OLEオブジェクトのプロパティ及び方法に関する情報を検索し、他のOLEオブジェクトと通信する際に使用可能である。
OLEオブジェクトのプロパティは、オブジェクトに関するデータで構成される。各プロパティはまた、例えばプロパティ値の取得、及びOLEオブジェクトのプロパティ値の設定に際して使用可能な機能を有している。例えばOLEオブジェクトのプロパティは、オブジェクトの名称、オブジェクト内またはオブジェクトに付随する項の計数、オブジェクトに付随するラベル及びオブジェクトに付随するヘルプを含んでいる。
OLEオブジェクトの方法は、OLEオブジェクト上またはOLEオブジェクト内のデータ上で作動し、OLEオブジェクト内のデータを使用して特別ルーチンを実行し、他のOLEオブジェクトと通信する。例えば、一つの方法は他のOLEオブジェクト内の値七ットを計数することができる。OLEオートメーションオブジェクトのプロパティと方法は、共にサーバーネットワーク66及びDCI60によるアクセスが可能な当該OLEオブジェクトのプログラマブルインターフェースを定義する。
図3及び図4の階層は、図3が示す上部階層と図4が示す下部階層で構成される。図3の上部階層は、HART、Fieldbus及びその他のスマートデバイスまたはコンベンショナルデバイスのようなデバイスと、Fieldbusブロックのような工程内接続されたブロックとの物理的或いは定義された連結度に対応し、且つそれを図示している。図4の下部階層は、HART及びFieldbusDDL等のDDLから入手可能な、或いはこれらによって参照されるデータと、DD、スマートデバイス及び/或いはスマートデバイスまたは他のデバイスに関するデータベースに保存されている、及び/或いはこれから入手可能なデータとの間の関係性を図示している。
図3及び図4の階層の完全な理解を促進するため、本明細書の末尾に表(「OLEオブジェクトDDL等価物」と題する)を提供している。「OLEオブジェクトDDL等価物」表は、図4の下部階層に示された各OLEオブジェクトに関して、当該OLEオブジェクトに対応するFieldbusDDLの機能的同等物であるデータ、定義及び/或いは構成を同定している。しかしながら、図3及び図4のOLEオブジェクトも同様に、HART DDLのような他のDDLに於いて入手可能な機能的に同等である種類のデータ、定義及び構成を有すること、従って図3及び図4の階層はあらゆるDDLに適用可能であることを認識すべきである。やはり本明細書の末尾に記載している他の表(「OLEオブジェクトの定義」と題する)は、図3及び図4が示す各OLEオブジェクトに付随する幾つかの重要なプロパティ及び方法のリストを提示し、こうしたプロパティ及び方法について簡単に説明している。
先にも述べたように、図3及び図4のOLEオブジェクトのプロパティは、DDL(例えば、HART及びFieldbusDDL等)から入手可能か或いはDDLによって定義される同タイプのデータを表し、またこれに対応している。これは、上述のように図3及び図4のOLEオブジェクトがこうしたDDLから入手可能であるか、或いはこうしたDDLによって定義されるデータをマップし、表示するように開発されているためである。従って、例えば、図3のブロックオブジェクトは、FieldbusDDLによって認識され使用されるブロックエンティティを表し、またこれに対応しており、図3のデバイスオブジェクト及び図4のパラメータオブジェクトは、HART及びFieldbusDDLの両方によって認識され使用されるデバイス及びパラメータエンティティを各々表し、またこれに対応している。「OLEオブジェクトの定義」表に於いて同定された方法は標準的なOLE方法である。
図3および図4の階層内の各OLEオブジェクトは、そのOLEオブジェクトへの階層を通るパスを通過することによってアクセスまたは定義することができる。図3のトップから始まり、図3と図4の階層を通る各パスは、ルートオブジェクトを含んでいる。特に,ルートオブジェクトは、ルートオブジェクトの下のいずれかのOLEオブジェクトが関係しているViewTimeを定義している。さらに詳しく言えば、ルートオブジェクトは、「過去」、「現在」、または「未来」であるViewTimeと結び付けられており、時には特定の時間を指定しているViewTimeと結び付けられている。ViewTimeが現在である場合、時間は実際の時間である。ViewTimeが過去である場合、時間はいずれかの歴史的時間に設定されるが、1つ以上のパラメータ値に対して変更が加えられた時間に設定されることが望ましい。さらに、この変更は、データベース4,たとえばイベントログに保存される。ViewTimeが未来の場合、時間は未来の時間に設定するか、一般的に未来を指していることだけを示すように設定できる。
ルートオブジェクトのアイテムメソッドは、OLEオブジェクト定義テーブルで識別されるコレクションのセットを含んでおり、このコレクションのセットは図3の階層の次の層を定義している。一般に、OLEメソッドのアイテムメソッドのコレクションは、OLEオブジェクトと、図3および図4の階層内のそのOLEオブジェクトの下のOLEオブジェクトの間の相互接続を定義している。OLEオブジェクトのアイテムメソッドの各コレクションは、そのコレクションを含んでいるOLEオブジェクトの下にあるそのコレクションの引用名によって、図3および図4の階層において示される。コレクション内のメンバーの一般名は、コレクションタイプと結び付いているOLEオブジェクトの下にあり、かつプロパティの1つとしてこの式に関係した情報を持っているOLEオブジェクトの上にある、引用が終りアンダーラインが付されている式によって、図3および図4において識別される。
したがって、たとえば、ルートオブジェクトは、(BlockTagコレクションとして識別される)BlockTagオブジェクトのコレクションを持ち、それぞれが、BlockTagとして図3に一般的に示されている特定の名前を持っている。一般に,ブロックタグは、特定のブロックを識別するために、FMSシステムをインストール/構成する技術者によってFMSシステム内で特定のブロックに割り当てられるユニークな識別子である。したがって、Block Tagの名前を持っているBlockTagオブジェクトは、図3に示すように、ブロックオブジェクトをユニークに定義する。明らかに、図3および図4の階層内のBlockTagオブジェクトの実際のメンバーは、(その名前がFieldbus DDLプロトコルで使われているので)FMSシステム10と接続あるいは結び付いているブロックのメンバーに依存している。
PhysicalTag,DeviceID,DeviceTagオブジェクトは、それぞれ、ルートオブジェクトのPhysicalTag,DeviceID,DeviceTagコレクションと関連あるいは結び付いており、FMSシステム10と接続あるいは結び付いている特定のデバイスをユニークに定義するのに使われる。通常、デバイスIDは、デバイスメーカーの名前、デバイスのモデル番号、デバイスのシリアル番号から構成される情報の組を含んでいる。通常,デバイスタグや物理タグは、プラントまたはプロセス12のようなプロセスにおけるデバイスの位置を参照している。物理タグ及び/又はデバイスタグの値は、プラントにおける特定の物理的位置に結び付けられている英数字コードであるか、物理的位置の記述である。HARTデバイスの場合、物理タグはデバイスタグと同じと見なされ、Fieldbusデバイスの場合は、物理タグはデバイスタグとは別の値を持ちうる。DeviceTagオブジェクト、DeviceIDオブジェクトのような引用コレクション名の直ぐ下の、図3および図4にあるOLEオブジェクトも、DDLLがコレクションと見なす、あるいは定義する構文に関係付けられているので、コレクションとして参照される。
デバイスタグ、物理タグ、及び/又はデバイスIDを持つ代わりに、あるいは持つ他に、デバイスは、FMSシステムとの物理通信接続によって識別されうる。特に、各デバイスは、各々が式TCP/IPノード名によって識別されるネットワークの1メンバーを通してFMSシステムに接続される(これは、ルートオブジェクトのNetコレクションであるネットワークオブジェクトによって、図3に示されている)。
各ネットワークは、図3においてNetNodeオブジェクトによって識別される一連のノードを含んでいる。また、ネットワークノードは、comlやcom2などの名前を持ちうる、(ポートオブジェクトによって示されている)ポートセットを含んでいる。ポートは、(モデムオブジェクトによって識別される)モデムを通じて、16のステーションアドレスのいずれかでデバイスに接続され、モデムは異なるステーションアドレスによって識別される。
また、ネットワークノードのポートは、ステーションアドレスを持っている(HIUオブジェクトによって識別される)1つまたは複数のHARTインタフェースユニット(HIU)を通してデバイスに接続されることもある。各HIUは、(インタチェンジオブジェクトによって識別される)1つまたは複数のインターチェンジを含んでおり、このインターチェンジは通常回線番号によって識別される8回線を含んでいる。また、インターチェンジオブジェクトは、(先に述べた引用名に関する一般的規則に反し、ラベルBlockによって識別される)メソッドを含んでおり、このメソッドはHIUを記述している特定のブロックオブジェクトにインタフェースを返す。
また、ネットワークノードは、1つまたは複数のDCS、たとえばRS3,Provox,またはその他のDCSを通してデバイスとつなげられる。図3は、各ノードが総称的なDCSオブジェクトを通して接続されていることを示しているが、たとえば、RS3 DCSとの実際の接続が行なわれ、ノード番号、カード番号、回線(通常ポート毎に4回線)によって図3において識別される。しかし、これらのDCSシステムの構成はまだ完全に開発されていないので、実際の接続は示されておらず、DCSオブジェクトについては、OLEオブジェクト定義テーブルで言及されていない。
さらに、ネットワークノードは、1つまたは複数のFieldbusインタフェースカードとつなげられることもある。しかし、Fieldbusデバイスはまだ販売されていないので、デバイスとの正確な接続はまだ分かっていない。したがって、この接続は図3の階層には示されていない。しかし、そのようなFieldbus接続は、Fieldbusオブジェクトを示すことによって、また、ネットワークノード間のFieldbus接続とNetNodeオブジェクトとデバイスオブジェクトの間のデバイスに必要なコンポーネントに関係したその他のOLEオブジェクトを示すことによって、簡単に追加することができる。
あるデバイスが先に述べたいずれかの方法で識別されると、そのデバイス内のブロックは、HART Tag名を持つ、タグオブジェクトとして示されているTagコレクションによってユニークに決めることができる。デバイスがHARTデバイスである場合、そしてその内容がただ1つの概念ブロックによって示される場合、そのブロックは既にユニークに識別されており、HARTコレクションによって簡単に指定できる。タグオブジェクトに関係したタグの名前は、図3においてHART Tagとして指定されている。なぜなら、HARTデバイスのHARTタグはこの識別子として使われているからである。しかし、他のタイプのデバイスに別のタグを代わりに使うことができる。
既に述べたように、ブロックオブジェクトとプロセスのブロックは、図3の上の階層を通る定義済みのパスを通過することによってユニークに識別できる。同様に、図3と図4の階層内のすべてのその他のOLEオブジェクトは、特定のOLEオブジェクトを通り、図3の階層のトップのルートオブジェクトからのパスを通過することによって得られるユニークな名前によって識別できる。したがって、図3と図4の階層内のいずれかのOLEオブジェクトのプロパティとメソッドは、そのOLEオブジェクト用に開発された名前を使って、参照可能であり、取得可能である。
具体的に言えば、名前は、図3のルートオブジェクトから当該OLEオブジェクトへのパスを通る時に存在する引用および非引用/アンダーライン式からなるストリングをコンパイルし、その式を感嘆符(!)によって分けることによって図3と図4の階層から決定しうる。たとえば、ブロックオブジェクトの名前は、以下のいずれかでありうる。
Root!BlockTag!Block Tag!
Root!PhycialTag!HART Tag!Tag!HART Tag
Root!DeviceID!Unique Indentifier!HART
Root!Net!TCP/IP Node Name!Port
Name!Modem!Station Addresss!Tag!HART Tag
明らかに、図3と図4に示されている他のOLEオブジェクトの名前は、このフォーマットを使って開発できる。(NamedConfigsオブジェクトによって示されている)図3のルートオブジェクトのNamedConfigコレクションは、FMSデータベース40に保存され、デバイスからは利用できないオブジェクトに関係付けられている。各NamedConfigsオブジェクトは、特定のNamedConfigオブジェクトを指定するためにConfigNameによって識別される。たとえば、NamedConfigオブジェクトは、プロセス内の特定の機能を実装するのに必要な「レシピ」すなわち特定の構成、プロセス内のブロックの過去の構成、または、ブロックオブジェクトに関係している他のユーザ情報を含みうる。しかし、図2のサーバネットワーク66にとって、各NamedConfigオブジェクトは、NamedConfigオブジェクトのパラメータ値データが、デバイスからではなく、FMSデータベース40から検索されるという点を除き、ブロックオブジェクトのように見える。NamedConfigオブジェクトは、通常ブロックオブジェクトに結び付けられている情報のサブセットを持つことができる。
図4の下位の階層は、システムの各ブロックと結び付いているデータ間の内部関係を示している。したがって、図4に示すように、各ブロックオブジェクト(およびNamedConfigオブジェクト)は、(名前は若干異なるが)それぞれが関連のOLEオブジェクトを持っている、Pram,Unit,Database,Refresh,ItemArray,Collection,Menu,Method,EditDisplay,WAOという名前のコレクションのセットを含んでいる。また、これらの各OLEオブジェクトは、図4に定義されているように、関連の他のOLEオブジェクトを持っている。したがって、たとえば、Param Nameによって識別されるパラメータオブジェクトは、VariableParameterオブジェクト、あるいはRecordParameterオブジェクト、あるいはArrayParameterオブジェクトでありうる。VariableParameterオブジェクトである場合、それは、関連のOLEオブジェクトを持っているIndexedItemArray,Enum,PreEdit,PostEditのコレクションを含む。EnumerationValuesオブジェクト(列挙型の変数のVariableParameterオブジェクトのコレクション)は、列挙値オブジェクトによって識別される特定の列挙値を持ち、この列挙値オブジェクトはメソッドオブジェクトのコレクションを含む。たとえば、このメソッドオブジェクトは、VariableParameterオブジェクトの列挙値を取得あるいは変更するメソッドを含む。
DatabaseParametersやDatabaseParameterオブジェクトを除き、図4内のすべてのOLEオブジェクトに保存あるいは結び付けられているプロパティ、データ、メソッドは、DDまたはDDLに合致しているデバイスの使用によって利用できる情報を表わしている。DatabaseParametersオブジェクトやDatabaseParametersオブジェクトのデータやメソッドは、データベースに保存される。
図3に示されているように、図4のどのOLEオブジェクトでも、図3のルートオブジェクトから当該OLEオブジェクトへのパスをたどることによって開発される名前によって、ユニークに識別することができる。したがって、たとえば、プリエディトメソッドブロックの名前は、図3のブロックオブジェクト用の名前の最後に付加することによって作成することができる。そしてまた、図3のブロックオブジェクトは、図4のブロックオブジェクト−!Param!Param Name!PreEdit!Index−によっても表わされる。
図3と図4の階層内の特定のオブジェクトに名前が設定され、サーバネットワーク66と結び付いているメモリに保存されると、以後、DCI 60とサーバネットワーク66は、サーバネットワーク66が作成する短いユニークな「ハンドル」を使って、そのOLEオブジェクトを操作したり、そのOLEオブジェクトにアクセスすることができる。たとえば、ハンドルは、サーバネットワーク66のメモリに保存されたOLEオブジェクトを識別するユニークな番号でありうる。
基本的に、ユニークな名前またはハンドルの場合、図3と図4の階層によって識別されるいかなるOLEオブジェクトでも、DCI 60またはサーバネットワーク66によって直接アクセスでき、DDS、データベース、スマートデバイス、あるいは必要に応じその他のOLEオブジェクトとの通信を確立するために、そのOLEオブジェクト内のメソッドを起動することができる。したがって、たとえば、特定のデバイスから特定のパラメータ値を検索するためにDDS 72にアクセスするサーバ68内のソフトウェアルーチンは、パラメータ値を読み取るようにOLE VariableParameterオブジェクトに指示するコマンドを使って、VariableParameterオブジェクトへのコールがDCI 60によって開始されるときに、起動することができる。
明らかに、サーバネットワーク66は、DCI 60とカレントアプリケーション56に対して透過的に、データベース40、DDS 72、およびオンラインデバイスと通信する。なぜなら、サーバネットワークは、OLEオブジェクトまたはDDSが要求する新しい情報を取得するのに必要な実装ルーチンを決めるために、図4の下位階層によって識別されるOLEオブジェクト間の相互関係に自動的にアクセスするからである。
図3および図4のOLEオブジェクトがアクセスされるためには、そのOLEオブジェクトと図3のルートオブジェクトの間の少なくとも1つのパス上にある、そのOLEオブジェクトの上のOLEオブジェクトは、サーバネットワークメモリに保存されなければならないことに注意しなければならない。したがって、たとえば、あるブロックのパラメータのVariableParameterオブジェクトにアクセスするとき、パラメータオブジェクト、そのパラメータに結び付いているブロックオブジェクト、そしてそのブロックもサーバネットワークメモリに保存されなければならない。デバイスオブジェクト、デバイスIDオブジェクト、ルートオブジェクトも、サーバネットワークメモリに保存することができる。こうした高位オブジェクトがない場合、サーバネットワーク66は、VariableParameterオブジェクトのデータを突き止め、検索する方法を決めるのに十分な情報にアクセスすることができない。
通常、DCI 60は、OLEオブジェクトから値を取得するためにコマンドを送る。たとえば、DCI 60は、VariableParameterオブジェクトに提供されている名前またはハンドルを使って特定のデバイスの特定のブロックに対するVariableParameterオブジェクトのハンドリングプロパティを取得するためにコマンドを送る。識別済みのOLEオブジェクトがまだサーバネットワーク66のメモリに保存されていない場合、サーバネットワーク66は、このデータを、たとえばDDS 72、スマートデバイス自身、またはデータベース40のいずれかから検索するために、そのVariableParameterオブジェクトの上の1つまたは複数のOLEオブジェクトの作成済みルーチンやメソッドを使う。その後、サーバネットワーク66は、このデータをサーバメモリに保存する。必要な場合、サーバネットワークは66は最初にメモリ内のルートオブジェクト、デバイスIDオブジェクト、デバイスオブジェクト、ブロックオブジェクト、そしてパラメータオブジェクトを保存する。
次に、サーバは、(DDS 72はブロックの変数パラメータのハンドリング情報が存在している場所なので)DDS 72にアクセスするために、VariableParameterオブジェクトのメソッドや関連の作成済みルーチンを使用する。この例のように、変数パラメータのハンドリングプロパティの値がスマートドライブに設定されてるモードパラメータに依存している場合、DDSは、その変数を含んでいるデバイスまたはブロックに関係しているモードパラメータ情報を必要としていることをサーバ68に知らせるメッセージをサーバ68に返す。その時点で、サーバ68はVariableParameterオブジェクトに関係しているデバイスオブジェクトを突き止め、デバイスとの通信方法を知る。すなわち、システム上でのデバイスの位置やそのデバイスと対話する方法を知る。次に、サーバ66はデバイスオブジェクトに結び付いているデバイスと通信するために作成済みのルーチンを使って、スマートドライブ通信インタフェース74に対してデバイスのモードパラメータを検索するように指示する。スマートドライブ通信インタフェース74がモードパラメータ値をサーバ68に返すと、サーバ68は、この情報をDDS 72に提供し、その後、DDS 72はサーバ66にハンドリングプロパティを計算して返す。さらにまた、サーバ66はこの情報をVariableParameterオブジェクトに転送し、それによってDCI 60に転送する(なぜなら、OLEオブジェクトの変更により、メッセージがホストに、この場合はDCI 60に送られるからである)。したがって、DCI 60にとって、パラメータのハンドリングプロパティの読み取り要求は、OLEオブジェクトに送られ、ハンドリングプロパティを持ったメッセージが返されたように見える。DDSとの、またOLEオブジェクト間の通信は、カレントアプリケーション56には透過的にサーバによって自動的に実現される。アプリケーションは、アクセスされたデバイスのタイプ、そのデバイスと結び付いているDDまたはDDLの特徴について知る必要がない。したがって、先に定義されているインタフェースを使って、アプリケーションは、通信を実装するのに使わなければならないDDS、DDL、またはDDの特徴を考慮することなく、同じまたは異なるDDLプロトコルに従って多数の様々なスマートデバイスと通信することができる。
専門家には明らかなように、DCI 60は、たとえば、次のような比較的単純なルーチンを実行することによって、図3と図4に示されているOLE階層と通信したり、このOLE階層から情報を検索したりすることができる。(1) オブジェクト階層を作成し、それをサーバネットワーク66と結び付ける、(2) オブジェクト階層を通って指定のオブジェクトの下のオブジェクトを探す、(3) あるオブジェクトから別のオブジェクトへの特定のパスを通るItem、1レベル下のオブジェクトを列挙するためのインタフェースを作成するNewEnumのような標準OLEメソッドを実装する、(4) DDLオペレーションに関連したメソッドを含むことができるブロックオブジェクトに関係したメソッドを実装する、(6)OLEオブジェクトからの非ブロッキング読み書き要求を起動し,制御する、(7) ブロッキング読み書きからの結果を検索する、(8) データベース40への変更を制御する,(9) たとえば時間の変更、変更を行なった人やコンピュータの身元を始めとする、システムに対するユーザ変更に関係した情報を含むイベントログの作成と保守を制御する。
その結果、FMS システム10のアプリケーションは、DDS、データベース、またはスマートドライブとのインタフェースを特別にプログラミングする必要がなくなる。そして、それにより、アプリケーション開発者には、DDLフォーマットやDD、スマートカード通信に関する詳細な知識が必要なくなる。
先に述べたように、図3と図4の階層を使って、FMSシステム10によって実装されるどのアプリケーションも、たとえば、階層の各オブジェクトと結び付いているIUnknownやIDispathインタフェースを利用するためにOLE互換プログラミング環境を使って、FMSデバイスとのインタフェースを取ることができることに注意しなければならない。Visual BasicプログラムやC++プログラムが、先の定義済みOLE階層を使うのに適していると思われる。
さらに、図3と図4の階層は特にFie1dbus DDLやFieldbus DDLと非常に似ているHART DDLに関係付けられているが、本発明に従い、たとえばModbusスマートデバイスを始めとする他のスマートデバイスと結び付けられる他のDDL用の階層や類似の階層を作成しうると思われる。さらに、図3や図5の階層は、他のオブジェクト指向プログラミングプロトコルを使って、または非オブジェクト指向プログラミングプロトコルを使っても、実装できる。
図5に示したように、FMSデータベース40(図1と図2)は、トランザクションデータベース200を含んでいる。そして、FMSシステム10は、このトランザクションデータベース200を使って、プロセス12のデバイス16,18,20,22に対応する様々なブロックのパラメータに対する変更を表わしている情報を保存する。特に、トランザクションデータベース200は、FMSシステム10が知っている各パラメータの変更に対応したトランザクションレコード202を保存するのに適している。各トランザクションレコード202は、多数のフィールド204−213を含んでいる。そして、各フィールド204−213は、トランザクションレコード202に対応している「トランザクション」関係の情報(すなわち、パラメータの値の変更)を保存する。
ここで説明したレコード202のフィールド204−213は、BlockKey,TimeKey,ParamName,ParamKind,ValueMode,ParamDataType,ParamSize,PramData,Archived,Expectedとして識別される。しかし、ここで説明したトランザクションデータベース200のトランザクションレコード202の特定の内容だけは、例外である。本発明に従い、トランザクションデータベース200のレコード202は、必要ならば、保存されているトランザクションやその他の情報に関連したその他の必要なあるいは希望する情報を含めるのに適している。
特定のフィールド204−213のそれぞれの意味は、特定の時点(T)での特定のブロック(B)の特定のパラメータ(P)への特定の値(V)の代入を含む変更やトランザクションの例と共に、詳細に説明される。BlockKeyフィールド204は、変更が過去、現在、未来のいずれであれ、変更が適用されるブロックの識別番号を含んでいる。BlockKeyフィールド204に保存される識別番号は、FMSシステム10がブロックBに割り当て、ブロックBをユニークに識別するのに使うユニークな番号である。特定のブロックのBlockKeyの値は任意である。しかs、FMSシステム10は、すべてのブロックに割り当てられているBlockKeyのインデックス(FMSデータベース40の場合)を保守しなければならない。
TimeKeyフィールド205は、トランザクションレコード202が表している変更が行なわれた特定の時間Tを表している番号または番号の集まりを保存している。たとえば、TimeKeyは必要なだけの精度(秒またはミリ秒)で表されている実際のカレンダの日時であるか、特定の基準日時からの(たとえば、1980年1月1日12:00am)からの経過秒数またはミリ秒数のような、この情報から得られた数字である。便宜のために、変更ためのTimeKeyは、変更の日付を含んでいるフィールドと変更の時刻を含んでいるフィールドで表すことができる。また、ここで、タイムフィールドは、実際の時刻または基準の時刻からの経過秒数(またはミリ秒数)として表わすこともできる。
ParamNameフィールド206は、トランザクションレコード202によって保存されている変更が関係している特定のブロックBの特定のパラメータPの名前を含んでいる。トランザクションレコード202のParamNameフィールド206に保存されている名前は、先に説明したようにブロックBのOLEパラメータオブジェクトで使われるパラメータの実際の名前である。便宜のために、この名前はDDLにあるパラメータの名前と一致している。
ParamKindフィールド207は、パラメータPの種類に対応している1文字の英字を含んでいる。特にパラメータPが「実際の」または「現実の」パラメータ(すなわち、ブロックの動作に影響したり、ブロックの動作を変えたりするパラメータ)である場合、ParamKindフィールド207は値Pを含んでいる。パラメータがデータベース40(図1)に保存されているパラメータである場合、ParamKindフィールド207は値Dを含む。後者のタイプのパラメータは、データベース40だけに保存され、デバイスには保存されない。パラメータの種類の追加指定も提供できる(たとえば、ユーザ定義パラメータまたはブロックに影響しないブロックに関する情報を含んでいるパラメータ)。
ValueModeフィールド208はパラメーター「P」の値「V」がブロックBに対応するデバイスの「実際の」状態の一部であるか、あるいはその代わりに、そのデバイスの「将来の」状態の一部であるかを示すアルファベット文字を含む。特に、ValueModeフィールド208は、トランザクションレコード202が実際の状態の一部を表わす場合(つまり、レコード202がブロックBに対する過去を表わすか、あるいは現在の変化を表わす場合)、値「H」を含む。他方、ValueModeフィールド208は、トランザクションレコード202が将来の状態の一部を表わす場合(つまり、トランザクションレコード202が将来の指定されていない時間においてブロックBに対して為されるべき変化を表わす場合)、値「F」を含む。
ParamDataTypeフィールド209はパラメーターPに記憶されたデータのタイプまたは値「D」に対応する数(つまり、1=ストリング、2=整数、3=長い整数、4=符号の付いていない長い整数、5=浮動小数点、6=二倍精度、7=バイナリー等)を含む。様々な利用できるデータタイプに対応する数は、FMSシステム10によって任意に指定することができるが、FMSシステム10はこれらの指定のトラックを保持しなければならない。
ParamDataSizeフィールド210はパラメーターPに記憶されたデータDのサイズに対応する数を含む。ParamDataSizeフィールド210に記憶された値は、パラメーターPの値を表わすデータDを記憶するために使用されるバイト数である。
トランザクションレコード202内のParamDataフィールド211は、トランザクションレコード202によって表わされる変化によって、パラメーターPに指定される実際のデータまたは値Dを記憶する。
Archivedフィールド212は連合するトランザクションレコード202の内容が既にアーカイブに保管されたか、あるいはバックアップ記憶媒体に保管されたかの表示を記憶する任意のフィールドである。Archivedフィールドは、これらのアーカイブに保管されているトランザクシヨンレコード202を次のアーカイビング手順の間に飛ばすことができるように、既にアーカイブに保管されているこれらのトランザクションレコード202を特定することによって、データベース200のバックアップを完成するために必要な時間を最小にする働きをする。更にArchivedフィールドは、まだアーカイブに保管されていないトランザクションレコード202の(例えば、ハウスキーピングまたはユーティリティソフトウエアによる)不注意な、及び/または望ましくない削除に対する保護手段を提供する。トランザクションレコード202のArchivedフィールド212は、トランザクションレコード202が既にアーカイブに保管されている場合、1または「真の」値を含み、またそうでない場合は0または「偽の」値を含む。
Expectedフィールド213は、トランザクションレコード202によって表示される変化またはトランザクションが、その変化を実施したFMSシステム10によって、「予想される」変化、あるいは「予想されない」変化であると特定されたかどうかの指示を含む。下記において詳細に説明するように、FMSシステム10は本発明のトランザクションデータベース200のトランザクションレコード202を使用して、どの特定の時間に対しても、プロセス12内のどのデバイスのどのブロックの予想される状態をも再現することができる。あるデバイスに対して「予想される」状態とは、FMSシステム10のトランザクションデータベース200に保管されたトランザクション史に基づいて、FMSシステム10がそのデバイスの状態であると考える状態である。しかし、ある所定の時間に、FMSシステム10は1つのデバイスの実際の状態に等しくない状態をそのデバイスに対して「予想する」かもしれない。例えば、第2のFMSシステム10、あるいはハンドヘルドコミュニケータ46が、そのデバイスの状態を変更したが、その変更を実施したことを第1のFMSシステム10にまだ知らせていないかもしれない。
1つのFMSシステム10(あるいはハンドヘルドコミュニケータ)が1つのデバイス(例えば、ブロックBを含むデバイス)に対して変更をする前に、FMSシステム10はFMSシステム10が「予想する」状態にそのデバイスがあるのか、あるいはデバイスが別の「予想されない」状態にあるのかを決定する。もしそのデバイスがFMSシステム10によって予想される状態にある場合、FMSシステム10は変更を行い、(変更が予想されていたことを示す)その変更に対応する1(あるいは他の適当な「真の」値)をトランザクションレコード202のExpectedフィールド213に保管する。他方、FMSシステム10が、デバイスがFMSシステム10が予想した状態以外の状態にあることを発見した場合、FMSシステム10はFMSシステム10のトランザクションデータベース200に一致しなかった変更が為されたことを知る。(変更をFMSトランザクションデータベース200に一致させる手順については、下記において詳述する)。その場合、FMSシステム10は、FMSシステム10が予想するデバイスの状態から、FMSシステム10が見い出したそのデバイスの実際の状態へとデバイスの状態を変更するために、デバイスに対して為されていなければならないであろう変更を表わすトランザクションレコード202をトランザクションデータベース200に記入する。更に、FMSシステム10は、その変更に対応して、その変更が予想されていなかったことを示す0(または他の適当な「偽の」値)を、トランザクションレコード202用のExpectedフィールド213に保管する。図9及び図10に関連して下記に詳細に説明するように、Expectedフィールド213は、二次的なFMSシステム及び/またはハンドヘルドコミュニケータ46からのトランザクションレコード202を一次的なFMSシステム10に一致させる際に、(一次的FMS等の)1つのFMSシステム10によって使用される。
トランザクションレコード202のParamKindフィールド207、ValueModeフィールド208、ParamDataTypeフィールド209、ParamDataSizeフィールド210は、全体としてトランザクションレコード202及びパラメーターPに対応するパラメーターオブジェクトのParamDataフィールド211に記憶されるデータの処理を容易にするために、トランザクションレコード202に含まれる。上述のように、その変更を行った人物の名前、その変更を行った理由、あるいは標準のプラントのオペレーティング手順、規定の要件、ユーザーの好み等によって必要になるかもしれない他の情報等の他の適当な情報も、トランザクションデータベース200のトランザクションレコード202に保管することができる。あるいはその代わりに、この付加的な情報をトランザクションデータベース200と同様の、付加的な情報用の付加的なフィールドと共に、トランザクション特定情報(例えば、BlockKeyフィールド204、Timekeyフィールド205、ParamNameフィールド206等)を含む第2のデータテーブルに保管することもできる。その後FMSシステム10は、トランザクションデータベース200内の変更を表示する特定のトランザクションレコード202内のトランザクション特定フィールドを使用して、第2のデータテーブルを相互参照することによって、各々の変更に対する付加的な情報にアクセスする。
次に、トランザクションデータベース200に対してFMSシステム10によって遂行されるデータベース機能について詳細に説明する。一般に、FMSシステム10は、プロセス12において、例えばデバイス16、18、20、22等のスマートフィールドデバイスに対してなされる変更の歴史的なレコードを維持するため;様々なフィールドデバイス内のパラメーターの現在値を保管するため;またこれらのデバイスに対してなされる将来の変更レコードを保管するために、トランザクションデータベース200を使用する。トランザクションデータベース200に対して、幾つかの特殊な機能をFMSシステム10によって果たすことができる。
第1の機能は、FMSシステム10(本明細書において、時には一次的FMSシステムと称する)自体がデバイスのパラメーターに対する変更、より詳細には、デバイスの特定のブロックに対する変更を行う時、FMSシステム10はその変更に関する上述の情報の全てを提供するデータベース200にレコード202を付け加える。変更が為されるブロックに対してFMSシステム10によって指定されるBlockKeyがBlockkeyフィールド204に保管される。変更が為される時間に対応するTimeKeyはTimeKeyフィールド205に保管される。その値が変更されるパラメーターの名前はParamNameフィールド206に保管される。そのパラメーターの種類はParamKindフィールド207に保管される。パラメーターの値のモードはValueModeフィールド208に保管される。パラメーターによって記憶されるデータのタイプはDataTypeフィールド209に保管される。パラメーターによって記憶されるデータのサイズはParamDataSizeフィールド210に保管される。パラメーターに記憶される新しい値はParamDataフィールド211に保管される。Archivedフィールド212はもちろん0に設定される。なぜなら、トランザクションレコード202は新しいので、まだアーカイブに保管され得ないからである。最後に、FMSシステム10自体がデバイスに対する変更を行ったので、Expectedフィールド213は、変更が予想されたものであることを示す1に設定される:FMSシステム10が変更自体を認可し実施したので、変更は明確に「予想されている」。
多くのデバイスにおいて、FMSシステム10はプロセス12内の全てのスマートデバイスに永久的に接続されているのではない。なぜなら、このような永久的接続は、デバイスが永久的に接続されるFMSシステム10によってデバイスの構成をしやすくするという点で利点を提供するが、典型的に設置に費用がかかるからである。いわゆる過渡的な、あるいは一次的な接続をFMSシステム10とスマートデバイス間に提供することができ、FMSシステム10がスマートデバイスに所望の変更を行うことができるように、スマートデバイスはFMSシステム10に永久的には接続されない。あるいはその代わりに、二次的なFMSシステム46を一次的FMSシステム10にまず接続して、どのような変更を行うかに関する指示を受けるようにすることができ、二次的FMSシステム46を次に一次的FMSシステム10から切断し、代わりにスマートデバイスに接続して、二次的FMSシステム46によって指示される変更を行うようにすることもできる。
変更を行うために、一次的FMSシステム10が二次的FMSシステム46に指示を送る時、一次的FMSシステム10は実施すべき変更に対する指示(つまり、変更すべきパラメーター名、及びそのパラメーターに対する新しい値)と共に、デバイスの「予想される」状態も二次的FMSシステム46に送る。
二次的FMSシステムまたはラップトップコンピューター46に一次的FMSシステムによる変更指示がロードされた後、技術者が二次的FMSシステム46をフィールドに取り込み、それを変更を行うべきプロセスのスマートフィールドデバイス16、18、20及び/または22等に接続して、以下の変更作成操作を行う(図7)。
図7はプロセス12内のスマートデバイス16、18、20及び22に変更を行う際に、FMSシステム10がどのようにしてトランザクションデータベース200と相互作用するかを示すフローチャートである。もちろん、FMSシステム10はそれが電気的に、あるいは他の適当な通信モードを介して、デバイスに結合されている場合にのみ、デバイスを変更することができる。上述のように、FMSシステム10はフィールドデバイスまたは過渡的なデバイスに永久的に接続することができる。二次的FMSシステム46とFMSシステム10間の過渡的な接続が図1において点線47で示されており、別のこのような接続が(付加的に、あるいは二者択一的にハンドヘルドコミュニケータ46を表わすことができる)二次的FMSシステム46とフィールドデバイス20間に示されている。FMSシステム10が永久的にフィールドデバイスと接続される場合、FMSシステム10自体がフィールドデバイスに変更を行うことができる。デバイスがFMSシステム10に永久的に接続されない場合、2つの方法でFMSシステム10を使用してフィールドデバイスの変更を行うことができる。第1は、フィールドデバイスをFMSシステム10の場所に輸送し、シリアルインターフェイスまたはFMSシステム10の他のポートへの過渡的な接続を介してFMSシステム10とインターフェイスで連結し、FMSシステム10自体が変更を行えるようにすることができる。第2は、デバイスをFMSシステム10に直接インターフェイスで連結することが非実用的であるか、不便である場合、二次的FMSシステム46(図1)をFMSシステム10に過渡的に接続するか、インターフェイスで連結し、FMSシステム10が必要な変更を行うよう指示することができる。二次的FMSシステム46を次にFMSシステム10から切断し、フィールドオペレーターが変更を行うべき各々のリモートフィールドデバイスの所に運ぶ。オペレーターは二次的FMSシステム46をフィールドデバイスに接続し、ちようどFMSシステム10が行うのと同様に、二次的FMSシステム46が変更を行う。
以後、簡略化のために、FMSシステム10及び二次的FMSシステム46を各々一次的FMSシステム及び二次的FMSシステムと称することがある。これらのラベルは単に任意の名称であり、一次的及び二次的FMSシステムは構造と機能が同じであってよく、あるいは所望であれば、二次的FMSシステムが一次的FMSシステムと比べて機能的に劣っていてもよいことに注意すべきである。
例えば、(一次的であれ二次的であれ)FMSシステムが、ハートデバイス16、18、20またはフィールドバスデバイス22(図1)等のスマートフィールドデバイスにおいて、1つ以上のパラメーターに1つ以上の変更を加えるプロセスについて、図7を参照して詳細に説明する。
変更実施プロセスは、変更を実施すべきスマートフィールドデバイスにFMSシステム10または46を接続するブロック220において始まり、変更を実施すべき特定のブロックの全てのパラメーターのためにデバイスから値を得ることによって、そのデバイスの実際の状態を引き出す。次にブロック222がデバイスの実際の状態をそのデバイスの予想される状態と比較するが、この予想される状態は上述のように、FMSシステム10をデバイスに接続する前にFMSシステム10に保管されている。一次的FMSシステム10が二次的FMSシステム46に対してデバイスに変更を行うように指示する時、一次的FMSシステム10は二次的FMSシステム46に対してそのデバイスの予想される状態を伝達する。
ブロック222がデバイスの実際の状態が予想される状態と等しいと決定した場合、ブロック224がFMSシステム10に次の変更をデバイスに加えさせ、ブロック226がその変更レコードをトランザクションデータベース200(図5)に付け加える。ブロック222がデバイスの実際の状態が予想される状態と等しくないと決定した場合、ブロック224がデバイスに変更を加える前に、ブロック228が「予想されない」変更を計算し、予想されない変更のレコードをトランザクションデータベース200に付け加え、FMSシステム10が変更を実施する前に存在するデバイスの現在の状態をトランザクションデータベース200が正確に反映するようにする。
厳密に言えば、予想されない変更は、一方で、FMSシステム10が予想するデバイスの状態から、他方で、FMSシステム10が見い出したデバイスの実際の状態へと、デバイスの状態を変更するために必ず実施していなければならない変更(FMSシステム10に対してunbeknownst)である。
「予想されない」変更レコードがトランザクションデータベース200に付け加えられた後、付加的な変更が必要である場合、ブロック230はFMSシステム10のオペレーターがデバイスに付加的な変更を行うことを許し、FMSシステム10は付加的な変更を表わすトランザクションレコードをトランザクションデータベース200に保管する。これらの付加的な変更はトランザクションデータベース200において「予想される」変更として特定される。
その後、上述のように、次の変更をデバイスに加えるブロック224に制御が移る。その変更レコードがブロック226によって一旦FMSシステムのトランザクションデータベース200に加えられると、ブロック232はFMSシステム10が接続されるデバイスに更なる変更を実施しなければならないかどうかを決定する。そうである場合、制御はブロック222に戻り、次の変更のために前述のプロセスを繰り返し、そうでない場合は、図7のプロセスが終了する。
第2FMSシステムに変更を行うように命令を与えることに加え、第IFMSシステム10は、本質的に情報が漏れない(safe)ハンドヘルドコミュニケータ46、例えばフィッシャー−ローズマウント・システムズ・インク製のモデル275−HCハートコミュニケータに、変更命令をダウンロードすることができる。このようなハンドヘルドコミュニケータ46は、フィールドオペレータが、第IFMSシステムとは離れたエリア及び/又は本質的に情報が漏れないことが要求される危険の多いエリア(第2(ラップトップ)FMSシステムはこのような危険の多いエリアでの使用には適さない)に配置されたハートフィールドデバイスに、変更情報を伝達するために用いられる。オペレータは、ハンドヘルドコミュニケータ46をスマートハートフィールドデバイスに接続して変更を行うことができる。
ハンドヘルドコミュニケータ46(図1)を用いてスマートフィールドデバイスに変更を行うプロセスを図8をもとに詳細に説明する。
まず、図1に示すようにハンドヘルドコミュニケータ46がFMSシステム10に接続され、ブロック240(図8)に示すようにFMSシステム10がハンドヘルドコミュニケータ46のメモリ内のある特定のコンフィギュレーションを記憶する。もちろん、所望により、複数のコンフィギュレーションを複数のデバイス用のハンドヘルドコミュニケータ46に記憶させることもできる。さらに、ハンドヘルドコミュニケータ46は、図1のように第1FMSシステム10からコンフィギュレーション情報を受信するのと同様の方法で、第2FMSシステム46からコンフィギュレーション情報を受信することができる。
ハンドヘルドコミュニケータ46に、1又はそれ以上のスマートフィールドデバイス16、18、20、22のコンフィギュレーション情報がロードされた後、ハンドヘルドコミュニケータ46がこれらのスマートフィールドデバイスのうちの1つに接続され、ブロック242に示すように、そこでコミュニケータ46が接続されたデバイスの新しいコンフィギュレーション情報をこのデバイスに送り込む。
コンフィギュレーションは、第1FMSシステム10及び第2FMSシステム46に関連した上述の変更と同じ情報をすべて含む。さらに、コンフィギュレーションは、デバイスのパラメータのいくつか(部分コンフィギュレーション)あるいはすべて(全コンフィギュレーション)の新しい値を含むことができる。コンフィギュレーションと変更との相違点は、単にコンフィギュレーションが変更とは異なり時間的要因を含まないという点である。このような相違点がある理由は、ハンドヘルドコミュニケータ46にコスト上の制約があり、また非常に使いやすいことが望まれているからで、そのために時間記録機能が省かれている。従って、ハンドヘルドコミュニケータ46がデバイスに変更を行う図8に示した一連の処理は、FMSシステム10がこのような変更を行う図7に示した一連の処理に比べていくぶん簡単である。しかしながら、その結果、ハンドヘルドコミュニケータでは、FMSシステム10に比べて、それほど複雑な演算を行うことができない。
図8に点線で示したブロック244に示すように、ハンドヘルドコミュニケータ46は、任意で接続されたデバイスの全状態を読み返し、その状態を第1FMSシステム10(又は第2FMSシステム46)に戻すことができるため、FMSシステム10又は46は、デバイスの新しい状態をFMSシステムのトランザクションデータベース200と一致させることができる。典型的には、プラントは、FMSシステム10が命令を与えてハンドヘルドコミュニケータ46に行わせようとする変更がそのまま確実に実行されることが必須である状況において、この一連の処理を標準操作手順の一部として必要とすることがある。重要なことは、FMSシステム10がコンフィギュレーションをハンドヘルドコミュニケータ46に伝達する際に、FMSシステム10が、自身のトランザクションデータベース200にトランザクションを入力して伝達するコンフィギュレーションに対応する変更を反映するということである。トランザクションレコードは予期される変更として認識される。それは、FMSシステム10が、ハンドヘルドコミュニケータ46が実際に変更を行うであろうと仮定しているからである。
上述のように、複数FMSシステムは相互接続が可能なため、これらのそれぞれのトランザクションデータベース200のデータをマージし、複数FMSシステムを利用するプラントにおいて一貫性のある包括的な体系(view)を構築することができる。これにより、例えば、上述のような政府機関からの様々な規制要求やプラント安全団体によって決められたガイドラインや規則に応じてプラントを運営する責任のある監査人等が、プラントの運営に関する過去のこれまでの情報を容易に再検討することができる。
図9は、ある1つのFMSシステム(例えば、第2FMSシステム46)のトランザクションデータベース200が他のFMSシステム(例えば、第1FMSシステム10)のトランザクションデータベース200にマージされる処理を示したフローチャートである。本明細書で先に記載したように、どのFMSシステムも第IFMSシステム又は第2FMSシステムとなり得るが、“第IFMS”であるとする場合は通常定置型のシステムを意味するものとする。また、第2FMSシステムは通常ラップトップコンピュータ内に設けられ、監査責任者等が必要時にいつでも容易にアクセスできるとは限らない。以下、FMSI及びFMS2という用語は、それぞれ、第1FMSシステムのトランザクションデータベース200、第2FMSシステムのトランザクションデータベース200を意味するものとする。
最初に、ブロック250で、第2FMSシステム46に一致しないトランザクションレコードが存在するか否かが判断される。存在しないか、あるいは第2FMSシステム46で一致しなかったトランザクションレコードがすべて一致すれば、図9の処理は終了する。一致しないトランザクションが第2FMSシステム46に残っている(すなわち、トランザクションレコードがまだ第1FMSシステム10のトランザクションデータベース200に一致していない)場合、ブロック252に進み、ここで次の一致しないトランザクションレコード(本明細書中ではTRと記載する)が、第2FMSシステム46のメモリから第1FMSシステム10のメモリにロードされる。さらに、ブロック254で、トランザクションレコードによって示される変更が予期される変更であるかどうかを判断するために、このトランザクションレコードTRが検討される。予期される変更である場合、次にブロック256で、トランザクションレコードTRが、第1FMSのトランザクションデータベースFMS1にすでに存在してはいるがFMSIにおいて“予期されない”変更と認識されている変更と同じ変更を示しているかどうかが判断される。トランザクションレコードTRにより示される変更がFMS1の予期されない変更と一致しない場合、トランザクションレコードTRは、次に第1FMSのトランザクションデータベースFMS1に日付順に格納され、制御はブロック250に戻り、一致しないトランザクションが第2FMSシステム46にまだ残っていないかどうかが判断される。ブロック256において、トランザクションレコードTRにより示される変更がトランザクションデータベースFMS1の予期されない変更と一致すると判断された場合、次にブロック260で予期されない変更がトランザクションレコードTR(これは予期される変更)に書き換えられ、制御はブロック250に戻る。
一方、ブロック254で、トランザクションレコードTRが予期されない変更を示すと判断された場合、制御は次にブロック262に進み、第1FMSのトランザクションデータベースFMS1が、トランザクションレコードTRにより示される変更と同じパラメータと同じ値の割り当て(assignment)を示すトランザクションレコードを含むかどうか、及びどのトランザクションレコードが、トランザクションレコードTRのタイムキーをある所定の許容範囲の時間的誤差内に近づけるタイムキー(フィールド205、図6)として機能する(bear)のかが判断される。このようなトランザクションレコードがFMS1に存在しない場合、次にブロック264において、第1FMSのトランザクションデータベースFMS1の最後にトランザクションレコードTRが追加され、レコード202のイクスペクテッドフィールド213をトランザクションデータベースFMS1の変更に対応するように設定することにより、このトランザクションレコードにより示される変更は“予期されない”変更として認識される。その後、制御はブロック250に戻り、一致しないトランザクションレコード202が第2FMSシステム46にさらにまだあるかどうかをチェックする。ブロック262で、トランザクションレコードTRにより示される変更に類似する変更が、第1FMSのトランザクションデータベースFMS1にすでにあるようだと判断された場合、予期されないトランザクションレコードTRに対応する実際の変更が既にトランザクションデータベースFMS1のトランザクションレコード202により示されているので、次のブロック266でトランザクションレコードTRは消去される。そして制御は再びブロック250に戻り、一致しないトランザクションレコード202が第2FMSシステム46にまだあるかどうかをチェックする。
FMSトランザクションデータベース200の使用例をいくつか、表をもとに以下に詳細に記載する。第1実施例において、第1FMSシステム10(P_FMS)は、第2FMSシステム46(S_FMS)が特定のスマートフィールドデバイス(実施例1と記載された表参照)に将来的変更CF(すなわち、時期がまだ決まっていない変更)を行うように命令を与える。この実施例では、第1及び第2FMSシステムで起こったこと、並びに該命令が実行された際にデバイスで起こったことを説明しており、結果は第2FMSシステム46から第1FMSシステム10に報告され返される。
実施例1
前述の表の第1の行は、ある任意の時間iにおけるフィールド・デバイスの一次及び二次PMSシステムを記述している。時間iにおいて、デバイスの実際の状態はS(i)であり、その状態は一次FMSシステム10及び二次FMSシステム46のトランザクション・データベース200に正確に反映される。
後の時間i+1においては、一次FMSシステム10が、二次FMSシステム46にデバイスに将来に変更を加えるよう指令を出す。従って、この時に、デバイスは、状態S(i)のままでいる。更に、一次及び二次FMSトランザクション・データベースP_FMS及びS_FMSは、デバイスの実際の状態がS(i)であることを正確に反映し続けるが、二次FMSシステム46のトランザクション・データベース200は、現在、将来の変更CFを示すトランザクション・レコード202を保持している。
また、後の時期に、二次FMSシステム46は、デバイスに接続され、デバイスに対してC(i+1)と呼ばれる将来の変更を行おうと試みる。二次FMSシステム46は、デバイスの以前の実際の状態S(i)が、デバイスについて二次システム46が予想する状態S(i)に一致するということを検知するので、二次FMSシステム46は、デバイスに変更を加え、そのトランザクション・データベースS FMSに変更に対応するトランザクション・レコード202を記録する。デバイスに変更を加えたので、デバイスは、現在、状態S(i+1)にあり、また、その変更についてのトランザクション・レコード(ちなみに、トランザクション・データベース200の期待された状態と呼ばれる)、二次FMSシステム46のトランザクション・データベース200に反映されたデバイスの期待された状態もまた、S(i+1)に更新される。しかしながら、一次FMSシステム10が、まだ、二次FMS46が将来の変更CFに成功したことを通知されていないので、一次FMSシステム10は、デバイスについて期待した状態としてS(i)を維持する。
時間i+3に、二次FMSシステム46が一次FMSシステム10に接続し、変更C(i+1)に対応するトランザクション・レコードを一次FMSシステム10に伝達すると、一次FMSシステム10は、図9のプロセスと関連して、そのトランザクション・レコードを上記で説明した一次FMSトランザクション・データベース200に一致させる。特に、到来するトランザクション・レコードは、期待された変更と呼ばれ、変更が、まだ、期待された変更として一次FMSトランザクション・データベース200に入れられていないので(それが実際に入れられていないと想定して)、一次FMSシステム10のトランザクション・データベース200によって反映されたデバイスの期待された状態が、デバイスの実際の状態、すなわち、S(i+1)を正確に反映するように、変更C(i+1)に関するトランザクション・レコードが、時間順にブロック258(図9)毎に一次FMSトランザクション・データベース200に入れられる。
その代わりに、変更C(i+1)を示すトランザクション・レコードが一次FMSトランザクション・データベース200と一致した場合には、合致する期待しない変更が、一次FMSトランザクシヨン・データベース200に存在すると確定され、次に、期待された変更C(i+1)に関するトランザクション・レコードが、対応する期待しない変更に関するトランザクション・レコード202の変わりに、一次FMSトランザクション・データベース200に挿入されていたかもしれない。
「実施例2」とタイトルを付けた次の表を参照して、一次FMSトランザクション・データベース200に対する「期待しない」変更を示すトランザクション・レコード202の一致を説明する別の実施例をここで詳細に説明する。
実施例2
この実施例では、一次FMSシステム10及び2つの二次FMSシステム46が、最初の時間iにおいて、デバイスの実際の状態S(i)を正確に反映する。
後の時間i+1に、一次FMSシステム10が、第1の二次FMS(FMS1)にデバイスに変更C(i+1)を加えるよう指令を出す。また、その時に、二次FMSシステム10が、第2の二次FMS(FMS2)に同じデバイスに将来の変更CFを加えるよう指令を出す。従って、時間i+1において、一次FMSシステム及び第1と第2の二次FMSシステムのトランザクション・データベース200が、デバイスの実際の状態S(i+1)を正確に反映する。それに加えて、変更C(i+1)の記録が、第1の二次FMSシステム46に保存され、将来の変更CFの記録が第2の二次FMSシステム46に保存される。
後の時間i+2において、FMS1が、図7に関連して上記で説明した手順に従ったデバイスに変更C(i+1)を加える。従って、その時に、FMS1は、そのトランザクション・データベース200に実際の状態S(i+1)を正確に反映するが、一次FMS PFMS及び第2の二次FMS PFMS2は、それぞれのトランザクション・データベース200にデバイスの以前の状態S(i)を反映し続ける。また、FMS2は、まだ、まだ行われていない将来の変更CFに関するトランザクション・レコードを保持する。
後の時間i+3において、FMS2は、デバイスに将来の変更CFを加えようと試み、デバイスが期待しない状態S(i+1)にあるということを検知する(すなわち、FMS2のトランザクション・データベース200が反映しない、状態S(i)以外の状態である)。従って、FMS2は、デバイスの状態を(FMS2が期待した)S(i)からS(i+1)に変更するために行われたにちがいない期待しない変更CUを計算する。次に、FMS2は、期待しない変更CUに対応するトランザクション・レコードをそのトランザクション・データベース200に記録し、次に、デバイスに将来の変更CFを加え、変更CFに対応するトランザクション・レコードを現在のタイムキーと共にFMS2のトランザクション・データベース200に記録する。従って、これで、FMS2のトランザクション・データベース200は、デバイスの現在の状態S(i+2)を正確に反映し、FMS2のトランザクション・データベース200には、デバイスに対して行われたとFMS2が認識した期待しない変更CUの記録が含まれる。
更に、後に時間i+4において、二次FMSシステムFMS2が一次FMSシステム10に接続され、期待しない変更CU及び現在行われ、承認された変更C(i+2)を一次FMSシステム10に報告する。次に、そうした2つの変更に関するトランザクション・レコードは、一次FMSシステム10によって、図9の手順に従ってそのトランザクション・データベース200と一致させられるので、一次FMSシステム10のトランザクション・データベース200は、デバイスの実際の状態S(i+2)を正確に反映し、変更CU及びC(i+2)に対応するトランザクション・レコードが含まれる。一次FMSFMS1は、依然として、デバイスについてS(i+1)の状態を期待するということを反映しているが、二次FMS FMS2は、デバイスの実際の状態S(i+2)正確に反映する。
更に、後に時間i+5において、FMS1が一次FMSシステム10に接続され、それに対する変更C(i+1)を報告する。一次FMSシステム10は、変更C(i+1)に関するトランザクション・レコードをそのトランザクション・データベース200に一致させ、C(i+1)が、時間i+4に一次FMSシステム10のトランザクション・データベース200に入力された期待しない変更CUに一致する、ということを発見する。従って、ブロック260(図9)に従って、変更C(i+1)に関するトランザクション・レコードが、一次FMSシステム10のトランザクション・データベース200の期待しない変更CUに関するトランザクション・レコードと入れ替わる。従って、この時に、すべての未決のトランザクション・レコード202が、一次FMSトランザクション・データベース200に一致させられており、デバイスの実際の現在の状態S(i+2)を、また、非常に重要なことであるが、デバイスの構成歴の完全な会計履歴(すなわち、デバイスの構成歴)を正確に反映する。
ここで、インターフェース・ブロック58の機能を更に詳細に説明する。上記のように、動作中に、現アプリケーション56は、インターフェース・ブロック58を呼び出して、特定の1つ、あるいは、それ以上の制御((プログラム))を初期化し、制御((プログラム))は、その後で、ウインドウズ・オペレーティング・システム46、プロセス内12のスマート・デバイス、及び/あるいは、プロヤス12に関連したデバイス、ブロック、又は、パラメータに関するFMSデータベース40との間のインターフェースに関連したすべての動作を自動的に処理する。また、インターフェース・ブロック56も、サーバ・ネットワーク66のメモリに保存されたルート・オブジェクトの時間プロパティを変更して、有利な方法でディスプレーを制御することができる。
インターフェース・ブロック58の各制御((プログラム))は、デバイス、パラメータ、あるいは、時間に関わる情報をディスプレー30上に表示し、更新する;及び、ユーザ、あるいは、アプリケーションの入力に応答して、スマート・デバイス、データベース40、及びサーバ・ネットワーク66と通信を行って、現アプリケーション56を更に関わらせる事なく、DDS72、スマート・デバイス、データベース40、あるいは、サーバ・ネットワーク66のルート・オブジェクト、と間でデータ検索、データ書込みを行う。重要なことであるが、一旦確立されたら、制御((プログラム))は、一般的に、現アプリケーション56、及び確立されているであろう他の制御((プログラム))とは独立して動作するように見える。
図11に示したように、インターフェース・ブロック58には、マスタ・コントロール・ルーチン300が含まれ、それを使用して、プロセス12と関連したデバイス、ブロック、あるいは、パラメータに関する制御機能を含めた制御機能を実行することができる。また、インターフェース・ブロック58には、マスタ・タイムライン・コントロール・ルーチン301が含まれ、それを使用して、ルート・オブジェクトからの時間の読み取り、書込み、及びデータベース40からの時間値の変更といった制御機能を実行することができる。
現アプリケーション56がインターフェース・ブロック58を呼び出して、デバイス、ブロック、パラメータ、あるいは、タイムライン制御を行う場合、実際、マスタ・タイムライン・コントロール・ルーチン300、あるいは、301の一つがコピーされ、特定の制御ルーチン、あるいは、制御((プログラム))に変換される。そうした特定の制御((プログラム))は、デバイス制御((プログラム))302、ブロック制御((プログラム))304、パラメータ制御((プログラム))306、及びタイムライン制御((プログラム))308として図11に示してある。その後、特定の制御((プログラム))302、304、306、308は、ウインドウズ・オペレーティング・システム46、現アプリケーション56、データベース40(DCI60を介して)、DDS72(DCI60を介して)、及びオンライン・スマート・デバイス(DCI60を介して)との間の通信に関連した機能を自動的に処理するが、それは、そうした通信が、そのために制御((プログラム))が生成される特定のデバイス、ブロック、パラメータ、あるいは、タイムラインに関連しているからである。一旦確立されたら、各々の制御((プログラム))302、304、306、308は、他の制御((プログラム))及び現アプリケーション56とは独立して、連続的に動作する。同じ、及び/あるいは、異なるタイプの制御((プログラム))を幾つでも同時に実行させることができる。
図11には、マスタ・コントロール・ルーチン300、あるいは、301の一つのコピーである別個のルーチンとして制御((プログラム))302、304、306、308を示してあるが、制御((プログラム))302、304、306、308には、マスタ・タイムライン・コントロール・ルーチン300、あるいは、301の一つを使用する特定のデバイス、ブロック、パラメータ、あるいは、タイムライン制御((プログラム))を実行するために必要なデータを含めることができる。
図12には、一般的に、例えば、図11に示した制御((プログラム))のいずれかを含めて、制御((プログラム))を初期化するために現アプリケーション56が実行すべきステップを示してある。制御((プログラム))が関連付けられた図3及び4の階層内のOLEオブジェクトを指す独自な名前をインターフェース・ブロック58に与えることによって、ブロック310は、制御((プログラム))のタイプを、例えば、デバイス、ブロック、パラメータ、あるいは、タイムライン制御((プログラム))を定義する。概念的に、FMSアプリケーションにとって利用可能な場合に、図3及び4の階層の具体例が存在するので、例えば、制御((プログラム))が関連付けられたルート・オブジェクトの時間と外観を指定することによって、タイムライン制御((プログラム))が、特定の階層のルート・オブジェクトを指定する。
ブロック311は、例えば表示される文字、情報が表示されるスタイルのフォント、サイズ等、制御情報が表示される表示画面の場所、制御表示のサイズがユーザーにより変更できる場合は制御表示の初期のウインドウ・サイズ、とまたいわゆる制御の「可視性」のようなものから成るユーザー・インターフェースの属性を定義する。制御の「可視性」は、制御が、実際に表示されるかあるいは画面上でみるこができるかどうかを決定する。データを該関連するOLE(リンキングと埋め込み)オブジェクトから検索するために不可視制御が、まだ稼働しおり、該情報をカレントのアプリケーション56に提供している間に、該制御のインターフェースの稼働は、単に非作動化される。
ブロック312は、制御のリフレッシュ(再生)速度(即ち制御が、該関連するOLEオブジェクトから情報を周期的な読み込みで受け取る速度)を定義する。実際は、ブロック312は、制御を図3と4の中の階層の特定のルート(最上位)オブジェクトに接続してから、ルート・オブジェクトは、周期的読み込みに応答してOLEオブジェクトがデータを再生する速度を定義する。
図13は、デバイス制御、ブロック制御、パラメータ制御、とまた図11のタイムライン(スケジュール)制御に使用することができる制御ルーチンの一般動作を示している。ブロック313は、図3と4の階層とカレントのアプリケーション56により設けられた名前により定義されている正しいOLEオブジェクトへ接続するか接続を再設定する。具体的には、制御は、例えば制御に関連するOLEオブジェクトの特性のような情報を読み込むために、DCI(表示制御インターフェース)60を経由してサーバ・ネットワーク66にコマンドを送信する。該コマンドは、周期的に要求されているデータを制御に送信するために、デバイス、ブロックあるいはパラメータ・オブジェクトのようなOLEオブジェクトに告げる周期的な読み込みであることが好ましい。
読み込みに応答して、サーバ・ネットワーク66は、OLEオブジェクトからのデータをDDS(デジタル・データ保存)72、スマー・デバイスあるいはデータベース40あるいいはその双方から検索することでOLEオブジェクトへの接続を設定してから、該データをOLEオブジェクトとしてサーバ・ネットワーク・メモリーの中に保存する。しかし、この読み込み機能を実行するために、サーバ・ネットワーク66は、また該ネットの中にデバイスあるいはブロック・オブジェクトあるいはその双方に関するデータを、図3と4の階層により定義されているとおりに要求されたOLEオブジェクトの上に保存しなければならない。サーバ・メモリーの中に保存されたとき、要求されたOLEオブジェクト・データが、DCI 60に送信されてから、該データが、インターフェース・ブロック58に関連するメモリーあるいは制御キャッシュに保存されるインターフェース・ブロック58に送信される。
ブロック314は、それから図12のブロック311により制御に設けられているユーザーの属性により定義されている特定の制御に対してユーザーの表示装置30上の画面を設定するかあるいは初期化する。標準ウインドウス呼び出しとウインドウス・フォーマットを利用して、制御情報を表示させるための表示属性を、如何なる希望する方法でも構成させることができる。各デバイス、パラメータ、とタイムライン制御に対する例としての画面は、図20−22に図示されている。
次ぎに、ブロック315は、何等かのメッセージがアプリケーション、ウインドウス操作システム46を経由するユーザーのインターフェース、あるいはDCI 60を経由してOLEブロックから受信されたかどうかを調べる。これ等の如何なるメッセージも受信されていない場合は、ブロック315は、引続きこのようなメッセージを点検する。ブロック315が、メッセージを受信したとき、制御は、1、2と3のラベルが付けられた識別子に示されているとおりに転送される。
図14は、カレント・アプリケーション56からのメッセージに応答した制御の作動を示している。ブロック316は、読み込みOLEオブジェクト・データ・メソセージ、変更パラメータ・オブジェクト値、あるいはルート・オブジェクト値メッセージと変更ユーザーインターフェース・メッセージを含む三つの一般タイプの一つである可能性があるメッセージを翻訳する。読み込みOLEオブジェクト・データ・メッセージに応答して、ブロック318は、要求されたデータを、引用された図3と4のOLEオブジェクトから読み込む。例えば、ブロック制御が、ブロック・オブジェクトの名前特性あるいは「Param」(パラメータ)集を読み込むことができる一方で、デバイス制御は、デバイスID特性あるいはデバイス・オブジェクトの「タグ」集を読み込むことができる。パラメータ制御は、変数パラメータ・オブジェクトの数値あるいは名前のようなパラメータ特性を読み込むことができる。タイムライン制御は、ルート・オブジェクトの特性を読み込むことができ、またデータベース40からの過去に存在したルート・オブジェクトに対する時間のリストを入手することができる。その後で、ブロック318は、制御をブロック315に返す。
変更パラメータあるいはルート値メッセージに応答して、ブロック320は、例えば、変数パラメータ・オブジェクト、記録パラメータ・オブジェクト、あるいは図4のアレー・パラメータ・オブジェクトのような、引用されたパラメータ・オブジェクト、に対して変更を実行してから、制御をブロック315に返す。変更−ユーザー−インターフェース・メッセージに応答して、ブロック322は、ユーザー・インターフェースの変更を実行してから、制御をブロック315に返す。
図15は、読み込みOLEオブジェクト・データ処理の間に、制御により実行されるルーチン324を示している。具体的には、ブロック326は、DCO60を経由してメッセージを、制御に関連するOLEオブジェクトに送信して、該オブジェクトからのデータを検索する。その後で、ブロック328は、どんなタイプの読み込みメッヤージが受信されたかを決定する。非ブロック化、非周期あるいは非ブロック化、周期的メッセージが受信された場合は、ブロック328は、制御を、ルーチンが元々呼び出された該ブロックに返す。非ブロックは、制御が読み込みメッセージを制御に関連したOLEオブジェクトに対して送信したものに照会し、他の機能で継続する前に、OLEオブジェクトの応答を待たない。非周期読み込みは、制御に関連するOLEオブジェクトからの単独の、一回読み込みに対する要求である。周期的読み込みは、OLEオブジェクトに、該OLEと関連するルート・オブジェクトの中で定義されている速度で周期的にOLEの中のデータに対して起こった制御の変更を通知することを命令する。
しかし、読み込みが、常に非周期的読み込みであるブロック化であった場合は、ブロック330は、OLEオブジェクトからのデータ返還を待つ。次ぎに、ブロック332は、制御キャッシュの中の受信されたOLEオブジェクト・データを保存する。必要に応じて、ブロック334は、読み込みにより入手された新しいデータを反映させるために下記に説明されるユーザー・インターフェース変更ルーチンによりユーザーのインターフェースを変更する。ブロック336は、カーレント・アプリケーション56に、例えば、制御の初期化の間に、OLEオブジェクト・データ読み込みからメッセージあるいはデータ変更を受信することを希望しているアプリケーションが識別されたかどうかを通知する。その後で、制御は、ルーチン324を呼んだ何れかのブロックに返される。
図16は、OELOLEオブジェクト(変数パラメータ・オブジェクト)のパラメータあるいはルーツ値あるいはルート・オブジェクトの変更の制御により実行されるルーチン338を示している。ブロック340は、変更されるべきであると示されているパラメータあるいはルート値が書き込み可能であるかどうかを決定する。要約すれば、ブロック340は、CLEオブジェクトハンドリング特性を読み込んでから、パラメータ値が書き込み可能であるかどうかを決定するためにメッセージを送信する。ブロック340が、パラメータあるはルート・データ値が書き込み不能であると決定した場合は、ブロック342は、下記に説明されている変更−ユーザー・インターフェース・ルーチンを呼び出すことでユーザーあるいはカレント・アプリケーション342に、パラメータあるいはルート値が書き込み可能でないことを通知する。その後で、制御はルーチン338が、元々呼び出されたブロックに返される。
それとは反対に、ブロック340が、パラメータあるいはルート値が書き込み可能であると決定した場合は、ブロック344は、新しいパラメータ値(あるいはルート値)が受け入れられた数値であるかどうかを決定する。この機能を実施するには、ブロック344が、例えば、最低値、最大値と、例えば、変数、計数セット等である、受け入れられた数値のタイプのような制御と関連するパラメータ・オブジェクトの数値特性を読み込む。その後、ブロック344が、新しい数値が範囲外あるいは間違ったタイプと決定した場合は、ブロック346は、メッセージをアプリケーションに送信するか、あるいは受け入れることができない数値が入力されたことを示すためにユーザーの表示を変更するか、あるいはその双方を行う。その後、制御は、るーりん388が、元々呼び出されたブロックに返される。
ブロック344が、新しい数値が、パラメータあるいはルート・オブジェクトに対して受け入れられる数値であると決定した場合は、ブロック348は、DCI 60を経由してメッセージを正しいOLEパラメータあるいはルート・オブジェクトに送信する。新しい数値が、そこで、言うまでもなく、スマート・デバイスの中あるいはデータベース40の中で対応する変更を行うOLEオブジェクトの中で変更される。
ブロック350は、帰還メッセージを待ち、またブロック352は、書き込みが成功したかどうかを決定するために、メッセージを復号する。書き込みが、成功であった場合は、ブロック354は、ユーザー・インターフェースを経由してアプリケーションあるいはユーザーあるいはその双方に、変更が行われたことを示す(例えば、スクリーン上のデータの背景の色を変更することで)。
ブロック352が、書き込みが不成功であると決定した場合は、ブロック356は、ユーザー・インターフェースを経由してアプリケーションあるいはユーザーあるいはその双方に、変更が行われなかったことを示す(例えば、スクリーン上のデータを元の状態に変更することで)。棄却の理由が、決定できるかあるいはユーザーに表示されることができるように、OLEオブジェクトに関連するレスポンス・コードが、アプリケーションにとって入手可能であることを付け加える。
ブロック352が、変更が行われたが、書き込み条件が存在すると決定した場合は、ブロック358は、OLEオブジェクトから特に正しい読み込みを開始することで、OLEオブジェクトからレスポンス・コードを検索する。ブロック360は、そこで希望すれば、アプリケーションあるいはユーザーあるいはその双方に、書き込み条件が存在することを示す。ブロック360は、また条件のタイプ(例えば、OLEオブジェクト特性が、最も近い入手可能な数値に設定されていたこと)を示すことができる。ブロック354、356と360は、制御を、元々ルーチン338を呼び出したブロックに返す。
図17は、ユーザー・インターフェース表示を変更するために制御により実行されたルーチン362を示している。ブロック364は、新しいカレント・アプリケーション56により提供された新しい属性と関連するか、あるいはここで新たに存在する条件に対して制御により以前に定義された属性のセットに従って該表示インターフェースの属性を変更する。該以前に定義された属性は、制御キャッシュのような、制御に関連するメモリーに保存される。ブロック366は、荒らしいユーザーの表示属性と表示されるはずの制御キャッシュの中のデータを利用してユーザ一表示を再生する。それから、制御は、元々ルーチン362が呼び出されたブロックに返る。
図18は、ユーザー・インターフェースからのメッセ−ジに応答する制御の作動を示している。ブロック370は、ユーザーの行動が、意味があるかどうかを決定するために点検する。ブロック370は、例えば、ユーザーが、マウスの正しいボタンをクリックした、あるいはポインター(即ち、カーソルあるいは矢印)の位置が、制御が、行動に対して要求さているとおりのユーザーの行動を認識する制御表示の領域の範囲内であるかどうかを決定する。ユーザーの行動が無意味であった場合は、ブロック372は、単にユーザーの行動を無視するか、あるいは行動が無視されたことの一定の表示(即ち、ユーザーの表示を、同じ表示インターフェース属性で再生する)を与える。その後で、制御は、ブロック315に返される。
これとは反対に、ユーザーの行動が、意味がある場合は、ブロック374は、ユーザーのインターフェースからメッセージを翻訳する。ユーザーのインターフェースからのメッセージが、ユーザーがパラメータ値あるいはルート値を変更したいことを示している場合は、ブロック376は、変更−パラメータ/ルート値ルーチン338を呼び出してから、制御をブロック315に返す。希望すれば、ブロック376は、例えば、書き込まれるべきデータを囲んでいる背景フィールドの色変更を実施するために、またユーザー・インターフェースを変更できる。
成功した書き込みの表示が受け取られたら、直ちに、ブロック376は、また数値が書き込まれたことを示すために背景の色をその元の状態に返す(ルーチン338がこれを行っていなかった場合は)。
これとは反対に、ブロック374が、ユーザーがユーザーのインターフェースの中で変更を要求していることを決定した場合は、ブロック378は、変更−パラメータ/ルート値ルーチン362を呼び出してから、制御をブロック315に返す。
図19は、DCI 60からの、即ち図3と4の階層の中のOLEオブジェクトからのメッセージに応答した制御の作動を示している。ブロック380は、最初にDCI 60からのメッセージが、非ブロック化読み込み帰還か、あるいはメッセージが、OEL階層の引用されたOLEオブジェクトの範囲内の一部の他の変更あるいは変更された条件を示しているかどうかを決定する。条件変更メッセージは、例えば、多重のユーザーが特定のブロックをアクセスすることを同時に処理中のデバイスの範囲内で予防するFMS阻止メッセージから成る。例えば、ブロックが、異なるユーザーにより、携帯通信機あるいはデバイスに取り付けられている他のFMSシステムによりアクセスされている場合、OLEオブジェクトは、DCI 60を経由して制御に対する該状態を識別する。 その後で、制御は、該ブロックのデータがもはや書き込み不能であることを、例えば、通常書き込み可能な数値を囲んで、スクリーン上のグレーの背景を表示して、ユーザーに示す。
非ブロック化読み込み返還の場合、ブロック382は、返還された数値が変更されたかどうかを決定する。該場合、ブロック384は該新数値を制御キャッシュの中に保存する。ブロック384と、制御キャッシュの中に保存されたデータの中に変更がない場合は、ブロック382は、同様に、制御をブロック386に提供する。該ブロック386は、ブロック380が、OLEオブジェクトからのメッセージが変更と関連しており非ブロック化読み取りと関連していないと決定した場合は、また実行される。
ブロック386は、変更されたデータあるいは新しい条件あるいは状態が、スクリーンに表示されるべきかどうかのような、ユーザーのインターフェースに対する変更が必要かどうかを決定する。必要な場合は、ブロック390は、変更−ユーザー−インターフェース・ルーチン362を呼び出して、変更されたデータあるいは条件をユーザーに表示する。しかし、ブロック386が、変更されたデータあるいは条件が表示される必要がないと決定したか、あるいはブロック390が、該変更されたデータあるいは条件をユーザーに表示した場合は、ブロック392は、アプリケーションが、書き込み済みの命令に従って、該変更されたデータあるいは条件について通知を受けるべきかどうかを決定する。 もしそうである場合は、394は、変更されたデータあるいは条件を示しながら、メッセージをカーレント・アプリケーション56に送信する。その後で、制御はブロック315に返される。
一般的に、デバイス、ブロック、パラメータ、あるいはタイムライン制御によりアクセスされた情報は、
(1)制御が通常のマイクロソフト・ウインドウス・エディット制御と同様に働くEDITスタイル;
(2)制御が通常のマイクロソフト・ウインドウス・コンボ・ボックス制御と同様に(即ちドロップ・ダウン・リストと同様に)働くCOMBOスタイル;
(3)制御が、通常のマイクロソフト・ウインドウス・リスト・ボックス制御と同様に(即ち計数の中の各項目が、リスト・ボックス・エントリーとして示されるように)働くLISTスタイル;
(4)制御が、通常のマイクロソフト・ウインドウス・ボックス制御と同様に働くGROUPスタイル;とまた
(5)制御が、持ち上げられているか沈められたパネル、あるいは他の全ての希望するスタイルあるいはフォーマットで表示するPANELスタイルから成る、希望する方法で、スクリーンに表示させることができる。
図20は、二つのデバイス制御に関連する制御表示400と402を示している。デバイス制御表示400と402の各々は、カーレント・アプリケーションと関連するメモリーの中に保存されているデバイスの絵あるいはデバイスのデジタル・ビットマップ(通常はデバイスのメーカーあるいはDDS供給者により供給される)から成る。その代わりに、該ビットマップを、データベース40の中に保存して、OLEオブジェクトによりアクセスさせることもできる。
該制御表示400と402には、例えば、デバイスの名前(図20に示されている)、タグ、略称(MONIKER)等、あるいは他のデバイス特有の情報から成る、デバイスに関する他の希望する情報を入れることができる。更に、デバイスに対するメニューも、デバイス制御表示400と402に関連するプルダウン・ウインドウの中に設けることができる。該メニューには、例えばデバイスに対するデバイス・オブジェクトに関連する名前集、目盛り調整、再設定、とまた自己診断方法を含むデバイス上で実行できる方法、デバイスに関連するブロック、デバイスに関連するパラメータのリスト、デバイスに対する支援、デバイスのためのサービス・ノート等のようなデバイスに関連するファイルを含めることができる。表示できるデバイスに関する他の情報は、デバイスの中の各パラメータの各々の変数の内容、デバイスのフェース・プレート情報、例えば、デバイスの中でエラーが起こっていいるかどうか、とまた例えば、特定の時間に存在しているかあるいは存在したデバイスの一つあるいはそれ以上のパラメータの変数の数値の対称リストを含むデバイスの作動状態から成る。
図21は、デバイスの三個の特定のパラメータ制御と関連する特定のパラメータ制御表示408、410と412に沿って一般的なパラメータ制御表示406を示している。パラメータ制御表示406−412の各々の場所は、スクリーンの異なるところにあり、特に、パラメータ制御表示406の場所は、スクリーンのトップにある一方で、パラメータ制御表示408、410と412は、パラメータ制御表示406の下に連続して置かれている。
該パラメータ制御表示406は、パラメータ制御表示が、例えば「圧力」、 「温度」、あるいは「モード」が示される、情報のタイプに関する情報を提供するラベル・フィールド、パラメータの数値を示す数値フィールド、とまた数値が示される単位を示す単位フィールドから成る三個のフィールドを持っていることを示す。パラメータの数値を、整数、小数点数字(パラメタ制御表示408と410)あるいは、パラメータ制御表示412に関連するプルダウン・メニューの中でリストアップされているとおりの計数された数値のセットの一つで構成されている計数された数値とすることができる。該パラメータ制御表示412は、単位変数が、該表示に関連する計数されたセットに適用できないので、該変数を含まない。
図22は、ブロック制御に関連する二個の制御表示414と416をを示している。デバイス制御表示と同様に、ブロック制御表示は、一般的に、例えば、ブロックが入力、出力あるいは制御(あるいはインターフェース)ブロックの何れかであることを含む、ブロックあるいはブロックが置かれているデバイスあるいはその双方に関連する絵あるいは他のブロックあるいは他の希望する情報あるいはその双方の他の符号から成る。
図23は、デバイス、ブロックとパラメータ制御のような他の制御に接続され、またパラメータ制御を接続することができる、OLEルート・オブジェクトの時間とビュー(仮想テーブル)特性を制御し変更するために使用されるタイムライン制御表示420と422を示している。表示420と422に関連するタイムライン制御の各々は、関連するルート・オブジェクトの時間値を、ルート・オブジェクトが入手でき、システムに対して時間の変更が行われ、トランザクション記録が、FMSデータベース40(図1)のトランザクション・データベース200(図5)に保存されたとき、一般的に過去の時間を含む如何なる以前の時間に変更できる。更に、制御表示420と422に関連するタイムライン制御は、過去、現在、あるいは将来の設定の間で、ルート・オブジェクトのビューを変更することができる。
各タイムライン制御表示は、図23の中に示されている通り、通常、どれが過去、現在を示しているスライダー424から成り、将来のビューは、ユーザーが、各々が例えば日付と時間を有する過去の経過した時間から選択できるように、コンボ・ボックス426と同時に選択される。
該タイムライン制御スライダー424を変更することで、ユーザーは、タイムライン制御に、該タイムライン制御に関連するルート・オブジェクト・ビューを変更するように告げる。タイムライン制御コンボ・ボックス426を変更することで、ユーザーは、タイムライン制御にルート・オブジェクト時間値を、特定の時間に変更することを告げる。
タイムライン制御が、時間あるいはルート・オブジェクトのビューを変更したとき、ルート・オブジェクトに関連するパラメータ、デバイスあるいはブロック制御のような他の何れの制御も、OLEオブジェクトにより作られた変更メッセージに応答して自動的に更新される。該メッセージは、ルート・オブジェクトと同じ階層の中のOLEオブジェクトが、新しい時間、あるいは、ここでルート・オブジェクトと関連するビューに関連する新しいデータを検索したとき、OLブジェクトにより作られる。
図23は、またタイムライン制御表示420と関連するタイム制御と同じルート・オブジェクトに接続されている温度と圧力パラメータ制御表示430と432を示している。同様に、温度と圧力パラメータ制御表示440と442は、タイムライン制御表示422と関連するタイム制御と同じルート・オブジェクトに接続されている。タイムライン制御表示420と422は、異なった時間、即ち、過去の時間(制御表示420)と現在(制御表示422)に設定されるので、温度パラメータ430と440の数値は、異なり、また圧力パラメータ432と442は、異なる。パラメータ制御表示のリストを、デバイスあるいはブロック等に対する一つあるいはそれ以上の完全な形状で表示させるようにスクリーンの上の構成させることができる。デバイスとブロックあるは他のパラメータ制御あるいはその双方を、タイムライン制御として同じルート・オブジェクトに関連させることができ、また異なる時間に於けるデバイス、ブロックあるいはパラメータの構成を、スクリーンの中で対称あるいは他の関係で示している構成表示を示すために使用することができる。タイムライン制御を、デバイス、ブロックあるいはパラメータの設定あるいは数値をスクロールして、表示上で他の制御と関連させて使用することができる。言うまでもなく、全ての過去あるいは現在の情報をユーザーに示すために、例えば現在のオンライン・デバイスに関連する情報、即ち、オンラインデータ、とまた過去と将来のオンライン・デバイス、とまたオフライン・デバイスに関連する情報、即ちオフライン・データを含む、如何なるタイムライン、デバイス、ブロック、パラメータあるいは他の制御あるいはその双方の組合せも、可能である。更に、図23に関連して示されているとおり、デバイスに対する同じデータ、例えば、同じパラメータ値を、タイムライン制御を利用して異なる時間に対して示すことがで、また希望すれば、設定値間の差を示すためにルーチンを実施することができる。
タイムライン制御は、ルート・オブジェクトの時間特性を、タイムライン制御を使用してユーザーが指定する特定の時間(以下ビュー時間と称す)に変更する。従って、OLE階層のなかのルート・オブジェクトの全てのオブジェクトの川下に対する時間属性は、上記に説明されているとおりビュー時間に合うように変更される。更に、これ等のオブジェクトの他の特性の数値は、ビュー時間に対応する数値に更新される。
特にブロック・オブジェクトに対しては、希望する時点(即ちタイムライン制御を使用してビュー時間で指定された)での対応するブロックの状態5)は、上記で説明されているトランザクション・データベース200(図を使用して得られる。より具体的には、ビュー時間に於けるブロック・オブジェクトのパラメータ値(即ち、ビュー時間に於けるブロック・オブジェクトのパラメータ・オブジェクトの数値特性の数値)は、ビュー時間あるいはそれより前に、最後にこれ等のパラメータ・オブジェクトに対応するパラメータに対して割り当てられた数値を探し出すためにビュー時間で始まる時計の逆回りでトランザクション・データベース220を検索することで得られる。この手続きは、詳しく、図24のフローチャートに参照符号を付けて説明されている。
図24は、どのようにして特定のブロックの状態を、上記に説明されているデータベース200から再構築できるかを示すフローチャートである。先ず、ブロック450が、「セット」タイプ変数{S}をゼロに初期化する。「セット」タイプ変数{S}は、ビュー時間状態が再構築されなければならないブロックのパラメータのビュー時間に於ける数値を蓄積するのに使用される。ブロック452が、ビュー時間と等しい状態のセットと{S}関連する時間を、そこで設定する。その後で、ブロック454が、設定変数{S}が、ブロック・オブジェクトの各パラメータに対する数値を含んでいるかどうかを決定する。肯定的である場合は、ブロック456は、アッセンブルされた状態{S}を、ビュー時間に於けるブロックの状態として割り当ててから、図構築ルーチンは、終了する。
ブロック454が、蓄積された状態(即ち、セット変数{S}の内容)が、ブロックの中の各パラメータに対する数値を含んでいないと決定した場合は、ブロック458は、現在値が蓄積された状態{S}の中に含まれていない次のパラメータPを識別する。ブロック460は、そこで、ビュー時間あるいはそれより前に、最後行われた変更TRをを探し出すためにビュー時間で始まる時計の逆回りで時計と逆回りでトランザクション・データベース200を検索する。ブロック462は、そこで、トランザクションTRの符号で示されている変更によりパラメータPセットと共に、パラメータPを、蓄積された状態{S}に加えてから、制御は、ブロックの中の全てのパラメータの数値が、状態{S}に蓄積されたかどうか更にもう一度点検するために、そこでブロック454に返る。
デバイス、ブロック、パラメータ、とまたタイムライン制御が、本明細書の中に図示されまた説明されているが、本発明に従った他の制御も、他の特性あるいは、図3と4の中で示されているOLEオブジェクトの何れかの中のデータを含むDDLを経由して入手できるデータを示すように構築できる。
本発明は、単に例示を目的としており、発明を限定することを目的として特定の例を引用して説明されたが、本発明の精神と範囲を逸脱することなく、変更、追加あるいは削除あるいはその双方を、開示された実施例に行うことが可能であることは当業者にとっては明かである。
OLEオブジェクトDDL等価
OLEオブジェクトの定義
Standard Properties
ArrayParameter Object
Block Object
BlockTag Collection
Collections Collection
CollectionItems Collection
Collections Object
DatabaseParameter Object
DatabaseParameters Collction
DeviceID Collection
Device Object
DeviceTag Collection
EditDisplayItems Collections
EditDisplays Co1lection
EditDisplay Object
Elements Collection
Enumeration Value Object
Enumeration Values Collection
HIU Collection
Interchange Object
ItemArray Object
ItemArrays Collection
ItemArrayItem Object
ItemArrayItems Collection
Members Collection
MenuItems Collection
MenuItem Object
Menu Object
Menus Collection
Methods Collection
Method Object
Modem Collection
NamedConfigs Collection
NamedConfig Object
Net Collection
NetNode Object
Parameters Collection
PhysicalTag Collection
Port Collection
RecordParameter Object
RefreshRelation Object
RefreshRelations Collection
ResponseCode Object
RelationItems Collection
ResponseCodes Collection
Root Object
Tag Collection
UnitRelation Object
UnitRelations Collection
VariableParameter Object
WriteAsOneRelation Object
WriteAsOneRelations Collection