(57)【特許請求の範囲】
【請求項１】
第１のコンピュータにおいてグラフィカル・プログラムを実行し、前記第１のコンピュータに接続した２つ又はそれ以上の第２のコンピュータにおいてグラフィカル・プログラムに対応するユーザ・インターフェースを受信し且つ表示する方法であって；
前記グラフィカル・プログラムはプログラム実行ロジック、データ・フローおよび／又は制御フローをモデル化するために一緒に接続しているノード群を有しており、且つこのノード群はノードの機能形式を示すアイコンとして表示されるものであり；
更にこの方法は、
（ａ）前記第１のコンピュータにおけるグラフィカル・プログラムを特定する、第２のコンピュータのうち少なくとも１つにおけるユーザ入力を受信するステップと、
（ｂ）前記第１のコンピュータにおいて前記グラフィカル・プログラムを実行するステップと、
（ｃ）前記グラフィカル・プログラムの実行中、前記ステップ（ａ）に応答して、前記グラフィカル・プログラムの前記ユーザ・インターフェースに関する情報を前記第２のコンピュータのそれぞれに送るステップと、
（ｄ）前記ステップ（ｃ）の終了後、プログラム実行中の前記グラフィカル・プログラムへの入力を供給し、又は前記グラフィカル・プログラムからの出力を表示するために、前記グラフィカル・プログラムの前記ユーザ・インターフェースを前記第２のコンピュータのそれぞれに表示するステップとから構成され、
更にこの方法は、
前記グラフィカル・プログラムに関連するブロック・ダイアグラムに関する情報を前記第２のコンピュータのそれぞれに送るステップと、
前記ブロック・ダイアグラムに関する情報を使用して、前記ブロック・ダイアグラムを前記第２のコンピュータのそれぞれに表示するステップと、
前記第２のコンピュータのいずれか一つにおいて前記ブロック・ダイアグラムへの編集を指定するユーザ入力を受け取るステップと、
前記編集を指定するユーザ入力を前記第１のコンピュータに送るステップとから構成され、
前記第１のコンピュータは前記編集を指定するユーザ入力に従って前記グラフィカル・プログラムを編集することが可能であることを特徴とするグラフィカル・プログラムを実行する方法。
【請求項２】
前記ステップ（ｃ）の情報は、第１のコンピュータによって与えられることを特徴とする請求項１に記載の方法。
【請求項３】
前記グラフィカル・プログラムは、計測またはオートメーション機能を実行する請求項１に記載の方法。
【請求項４】
前記第１のコンピュータと前記第２のコンピュータがネットワークで接続され、前記ステップ（ｃ）は、前記第１のコンピュータがネットワークを介して前記第２のコンピュータに前記情報を供給することを含む請求項１に記載の方法。
【請求項５】
前記第２のコンピュータが前記ネットワークを介して前記第１のコンピュータに接続するステップを更に含み、前記ステップ（ｃ）はステップ（ａ）の後で且つ前記ネットワーク接続後に実行される請求項４に記載の方法。
【請求項６】
前記接続が行われたときに前記グラフィカル・プログラムがすでに前記第１のコンピュータ上ですでに実行（前記ステップ（ｂ））されている請求項５に記載の方法。
【請求項７】
第１のコンピュータへの前記接続への応答として、前記第１のコンピュータが前記グラフィカル・プログラムの実行を開始するステップを更に含む請求項５に記載の方法。
【請求項８】
前記ステップ（ａ）はＵＲＬを受け取るステップを含む請求項５に記載の方法。
【請求項９】
前記ＵＲＬで第１のコンピュータまたは第１のコンピュータのグラフィカル・プログラムうち１つを指定する請求項８に記載の方法。
【請求項１０】
前記ネットワークはインターネットである請求項５に記載の方法。
【請求項１１】
前記ステップ（ｄ）は前記第２のコンピュータのそれぞれのＷｅｂブラウザに前記グラフィカル・プログラムのユーザ・インタフェースを表示するステップを含む請求項５に記載の方法。
【請求項１２】
前記第２のコンピュータのうち少なくとも１つに表示されているユーザ・インタフェースを介して前記グラフィカル・プログラムへのユーザ入力を受け取るステップと、
前記ユーザ入力を前記第１のコンピュータに送るステップとを更に含み、
前記第１のコンピュータ上で実行されている前記グラフィカル・プログラムはユーザ入力に応答して動作可能な請求項１に記載の方法。
【請求項１３】
前記グラフィカル・プログラムが第１の出力状態を発生し、前記ステップ（ｄ）は第１の出力状態を示す前記ユーザ・インタフェースを表示するステップを含む請求項１に記載の方法。
【請求項１４】
第２の出力状態を示すユーザ・インタフェース更新を送るステップと、前記ユーザ・インタフェースの更新に応答して前記第２のコンピュータに表示されているユーザ・インタフェースを更新するステップとを更に含み、グラフィカル・プログラムが前記第１の出力状態を発生した後、グラフィカル・プログラムが前記第２の出力状態を発生する請求項１３に記載の方法。
【請求項１５】
前記ステップ（ａ）において、前記グラフィカル・プログラムを指定するステップは、ＵＲＬを受け取るステップを含む請求項１に記載の方法。
【請求項１６】
前記グラフィカル・プログラムがブロック・ダイアグラム部分とユーザ・インタフェース部分を備え、前記ステップ（ｂ）は前記第１のコンピュータ上の前記グラフィカル・プログラムの前記ブロック・ダイアグラム部分を実行するステップを含む請求項１に記載の方法。
【請求項１７】
前記グラフィカル・プログラムの前記ユーザ・インタフェースは、前記ブロック・ダイアグラム部分に入力を送るための少なくとも１つの入力変数アイコンと前記ブロック・ダイアグラム部分によって発生する出力を表示するための少なくとも１つの出力変数アイコンを備える請求項１６に記載の方法。
【請求項１８】
前記ユーザが前記第２のコンピュータのうち少なくとも１つにおける少なくとも１つの入力変数の入力を操作するステップと、
前記少なくとも１つの入力変数の入力を前記第１コンピュータに送るステップと、
前記少なくとも１つの入力変数の入力を使用して、前記第１コンピュータにおいて前記ブロック・ダイアグラム部分を実行するステップと、
前記ブロック・ダイアグラム部分で少なくとも１つの出力変数の出力を生成するステップと、
少なくとも１つの出力変数の出力を前記第２のコンピュータに送るステップと、
少なくとも１つの出力変数の出力を前記第２のコンピュータで表示するステップとを更に含む請求項１７に記載の方法。
【請求項１９】
前記グラフィカル・プログラムがデータ・フローに関するグラフィカル・プログラムを含む請求項１に記載の方法。
【請求項２０】
前記グラフィカル・プログラムが制御フローに関するグラフィカル・プログラムを含む請求項１に記載の方法。
【請求項２１】
前記グラフィカル・プログラムが実行フローに関するグラフィカル・プログラムを含む請求項１に記載の方法。
【請求項２２】
前記グラフィカル・プログラムが仮想計測器を実装し、
前記グラフィカル・プログラムのユーザ・インタフェースが仮想計測器のフロント・パネルを含む請求項１に記載の方法。
【請求項２３】
メモリに接続されたプロセッサを有し、ネットワークに接続可能な第１のコンピュータと、
前記第１のコンピュータのメモリに蓄積されたグラフィカル・プログラムと、
前記ネットワークに接続可能な複数の第２のコンピュータと、から構成されるグラフィカル・プログラムを実行するシステムであって：
前記グラフィカル・プログラムは、プログラム実行ロジック、データ・フローおよび／又は制御フローをモデル化するために一緒に接続しているノード群を有しており、且つこのノード群はノードの機能形式を示すアイコンとして表示されるものであり：
複数の前記第２のコンピュータのそれぞれは表示装置を具備し、前記第２のコンピュータは前記第１のコンピュータ上のグラフィカル・プログラムを特定するユーザ入力を受信するように動作し、且つ
複数の前記第２のコンピュータのそれぞれは、前記第１のコンピュータ上のグラフィカル・プログラムを特定するユーザ入力を使用して、ネットワークを介して前記第１のコンピュータに接続するよう動作するものであり；
前記第１のコンピュータは、前記グラフィカル・プログラムを実行する動作が可能であり、また前記グラフィカル・プログラムのユーザ・インタフェースに関する情報を、前記ネットワークを介して前記グラフィカル・プログラムの実行中に複数の前記第２のコンピュータのそれぞれへ送る動作が可能であり；
複数の前記第２のコンピュータのそれぞれは、前記ユーザ・インタフェースに関する情報を受け取り、プログラム実行中の前記グラフィカル・プログラムへの入力を供給し、又は前記グラフィカル・プログラムからの出力を表示するために、前記送るステップへの応答として前記グラフィカル・プログラムのユーザ・インタフェースを表示する動作が可能であり；
前記第１のコンピュータは、前記グラフィカル・プログラムに関連するブロック・ダイアグラムに関する情報を、複数の前記第２のコンピュータのそれぞれに対して送る動作が可能であり；
複数の前記第２のコンピュータのそれぞれは、前記ブロック・ダイアグラムに関する情報を使用して、前記第２のコンピュータそれぞれのディスプレイに前記ブロック・ダイアグラムを表示する動作が可能であり；
複数の前記第２のコンピュータのそれぞれは、前記ブロック・ダイアグラムへの編集を指定するユーザ入力を受け取る動作が可能であり；
複数の前記第２のコンピュータのそれぞれは、編集を指定する前記ユーザ入力を前記第１のコンピュータに送る動作が可能であり；
前記第１のコンピュータは、編集を指定する前記ユーザ入力に従って前記グラフィカル・プログラムを編集する動作が可能なことを特徴とする、グラフィカル・プログラムを実行するシステム。
【請求項２４】
前記第１のコンピュータが第１のコンピュータに接続する前記第２のコンピュータの少なくとも１つへの応答として前記グラフィカル・プログラムの実行を開始するように動作する請求項２３に記載のシステム。
【請求項２５】
前記ユーザ入力はＵＲＬを含む請求項２３に記載のシステム。
【請求項２６】
前記ＵＲＬで前記第１のコンピュータまたは第１のコンピュータのグラフィカル・プログラムうち１つまたは複数を指定する請求項２５に記載のシステム。
【請求項２７】
前記ネットワークがインターネットである請求項２３に記載のシステム。
【請求項２８】
前記第２のコンピュータのそれぞれはＷｅｂブラウザを格納し、前記グラフィカル・プログラムのユーザ・インタフェースを表示するために、Ｗｅｂブラウザを前記第２のコンピュータのそれぞれで実行する請求項２３に記載のシステム。
【請求項２９】
前記第２のコンピュータのそれぞれは、前記第２のコンピュータ上に表示される前記ユーザ・インタフェースを介して前記グラフィカル・プログラムへのユーザ入力を受け取る動作が可能であり、
前記第２のコンピュータのそれぞれは、前記ユーザ入力を前記第１のコンピュータに送る動作が可能であり、
前記第１のコンピュータで実行されている前記グラフィカル・プログラムが前記ユーザ入力に応答する動作が可能な請求項２３に記載のシステム。
【請求項３０】
前記グラフィカル・プログラムを実行して第１の出力状態を発生することができ、前記第２のコンピュータのそれぞれが、前記ユーザ・インタフェースの前記第１の出力状態を表示する動作が可能である請求項２３に記載のシステム。
【請求項３１】
前記グラフィカル・プログラムが前記第１の出力状態を発生した後に第２の出力状態を発生することができるようにグラフィカル・プログラムが実行し、
前記第１のコンピュータが前記第２の出力状態を示す前記ユーザ・インタフェースの更新を送る動作が可能であり、前記第２のコンピュータのそれぞれが、前記ユーザ・インタフェースの更新への応答として前記第２のコンピュータに表示されている前記ユーザ・インタフェースを更新する動作が可能であることを特徴とする請求項３０に記載のシステム。
【請求項３２】
前記グラフィカル・プログラムがダイアグラム部分とユーザ・インタフェース部分を備え、前記第１のコンピュータが前記グラフィカル・プログラムの前記ダイアグラム部分を実行する動作が可能である請求項２３に記載のシステム。
【請求項３３】
前記グラフィカル・プログラムの前記ユーザ・インタフェースが、前記ブロック・ダイアグラムに入力を送るための少なくとも１つの入力変数アイコンと前記ブロック・ダイアグラムによって発生する出力を表示するための少なくとも１つの出力変数アイコンを備える請求項２３に記載のシステム。
【請求項３４】
前記第２のコンピュータのそれぞれが、前記第２のコンピュータ上で少なくとも１つの入力変数の入力を操作するユーザ入力を受け取る動作が可能であり、
前記第１のコンピュータが、前記少なくとも１つの入力変数の入力を受け取る動作が可能であり、
前記ブロック・ダイアグラムが、前記第１のコンピュータにおいて前記少なくとも１つの入力変数の入力を使用して実行する動作が可能であり、
前記ブロック・ダイアグラムが、少なくとも１つの出力変数の出力を生成する動作が可能であり、
前記第２のコンピュータのそれぞれが、前記少なくとも１つの出力変数の出力を受け取る動作が可能であり、
前記第２のコンピュータのそれぞれが、前記少なくとも１つの出力変数の出力を表示する動作が可能である請求項３３に記載のシステム。
【請求項３５】
前記グラフィカル・プログラムはデータ・フローに関するグラフィカル・プログラムを含む請求項２３に記載のシステム。
【請求項３６】
前記グラフィカル・プログラムは制御フローに関するグラフィカル・プログラムを含む請求項２３に記載のシステム。
【請求項３７】
前記グラフィカル・プログラムは実行フローに関するグラフィカル・プログラムを含む請求項２３に記載のシステム。
【請求項３８】
前記グラフィカル・プログラムは仮想計測器を実装し、
前記グラフィカル・プログラムのユーザ・インタフェースが前記仮想計測器のフロント・パネルを含む請求項２３に記載のシステム。
【請求項３９】
前記グラフィカル・プログラムは、計測またはオートメーション機能を実行することが可能である請求項２３に記載のシステム。
【請求項４０】
コンピュータにより、前記コンピュータにおけるグラフィカル・プログラムを実行し、前記グラフィカル・プログラムはプログラム実行ロジック、データ・フローおよび／又は制御フローをモデル化するために一緒に接続しているノード群を有しており且つこのノード群はノードの機能形式を示すアイコンとして表示されるグラフィカル・プログラムを実行し；
複数のクライアント・コンピュータ・システムと関連するクライアント・ソフトウェアとのネットワーク接続を確立し；
前記複数のクライアント・コンピュータ・システムそれぞれの前記クライアント・ソフトウェアとのネットワーク接続を確立した後に、前記コンピュータから前記ネットワークを介して前記グラフィカル・プログラムのユーザ・インタフェースに関する情報を前記複数のクライアント・コンピュータ・システムそれぞれのクライアント・ソフトウェアへ送り；
前記グラフィカル・プログラムに関連するブロック・ダイアグラムに関する情報を、前記複数のクライアント・コンピュータ・システムそれぞれのクライアント・ソフトウェアへ送り；
前記複数のクライアント・コンピュータ・システムそれぞれのクライアント・ソフトウェアから送られる編集を指定するユーザ入力に従って、前記グラフィカル・プログラムを編集する；
ことが可能なプログラム命令を格納したメモリ媒体であって、
プログラム実行中の前記グラフィカル・プログラムへの入力を供給し、又は前記グラフィカル・プログラムからの出力を表示するために、前記ユーザ・インターフェースが使用されることを特徴とするプログラム命令を格納したメモリ媒体。
【請求項４１】
前記クライアント・ソフトウェアから前記グラフィカル・プログラムへのユーザ入力を受け取り、
前記ユーザ入力を前記グラフィカル・プログラムに送るために実行可能なプログラム命令を格納し、
前記グラフィカル・プログラムがユーザ入力に応答する動作が可能な請求項４０に記載のメモリ媒体。
【請求項４２】
前記グラフィカル・プログラムが第１の出力状態を発生し、
前記グラフィカル・プログラムのユーザ・インタフェースに関する情報を送る前記ステップが第１の出力状態を示す情報を送るステップである請求項４０に記載のメモリ媒体。
【請求項４３】
前記グラフィカル・プログラムが第１の出力状態を発生した後、前記グラフィカル・プログラムが第２の出力状態を発生し、
前記メモリ媒体がさらに、前記第２の出力状態を示すユーザ・インタフェースの更新を前記クライアント・ソフトウェアに送ることを実行することが可能なプログラム命令を格納する請求項４２に記載のメモリ媒体。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、グラフィカル・プログラミングおよび仮想計装の分野に関するものである。特に、本発明は、グラフィカル・プログラム・ブロック・ダイアグラムがサーバ・コンピュータ上で実行され、１つまたは複数のクライアント・コンピュータがブロック・ダイアグラムに対応するグラフィカル・プログラム・ユーザ・インタフェース・パネルを受け取って表示し、グラフィカル・プログラム・ユーザ・インタフェース・パネルを使用してブロック・ダイアグラムに入力を送ったり、ブロック・ダイアグラムからの出力を表示したりできるシステムと方法に関するものである。本発明はさらに、分散仮想計装システムに関するものであり、ブロック・ダイアグラムがサーバ・コンピュータ上で実行され、１つまたは複数のパネルがクライアント・コンピュータ上に表示される。
【０００２】
（関連技術の説明）
従来、プログラマはアプリケーション・プログラムを書くのにテキストベースの高水準プログラミング言語を使用してきた。さまざまなテキストベースの高水準プログラミング言語が存在しており、たとえば、ＢＡＳＩＣ、Ｃ、ＦＯＲＴＲＡＮ、Ｐａｓｃａｌ、ＣＯＢＯＬ、ＡＤＡ、ＡＰＬなどがある。こうした高水準言語で書かれたプログラムは、コンパイラあるいはインタプリタと呼ばれるトランスレータによって機械語レベルに翻訳される。このレベルのテキストベースの高水準プログラミング言語は、アセンブリ言語レベルとともに、テキストベースのプログラミング環境と呼ばれる。
【０００３】
コンピュータ・プログラミング手法の高度の訓練を受けていないプログラマがコンピュータを使用し、プログラムすることが必要になる機会が増えてきている。従来のテキストベースのプログラミング環境を使用した場合、コンピュータ・システムを対話的に操作するユーザのプログラミング・スキルと能力が、コンピュータ・システムの最適な利用を制限する要因となる。
【０００４】
テキストベースの環境でコンピュータ・システムを効率よくプログラムできるようになるまでにユーザが習得しなければならない微妙で複雑な事項が多数ある。プロセスのモデル作成にコンピュータ・システムをプログラムする作業は、多くの場合、プロセスの概念モデルを作成するために使用される一連の数式、数学的ステップ、あるいはその他の手順がコンピュータ・システムをプログラムしてそのようなプロセスのモデルを作成するために使用される従来のテキストベースのプログラミング手法に密に対応していないという事実によりさらに複雑なものとなる。つまり、テキストベースのプログラミング環境のユーザ・プログラムがソリューションのユーザ側での概念化とコンピュータ・プログラムでこのソリューションを達成する方法の実装との間にあるレベルの抽象化を入れる必要があるということである。そこで、ユーザは多くの場合、システムの概念モデルを作成し、そのようなシステムをモデル化するようにコンピュータをプログラムするために異なるスキルを実質的に修得する必要がある。ユーザはテキストベースの環境でコンピュータ・システムをプログラムし、自分のモデルを実装できるほどプログラミングに長けていないことが多いため、このようなモデリングを実行するのにコンピュータ・システムを利用する効率が減じることが多々ある。
【０００５】
物理的システムをモデル化しかつ／または制御するのにコンピュータ・システムを採用している分野の例としては、計装、プロセス制御、工業オートメーション、およびシミュレーションなどがある。計測器や工業オートメーションのハードウェアなどのコンピュータ・モデリングまたはデバイスの制御は、使用できる計測器およびデバイスがますます複雑になり多様になってきているという点を考えると次第に望ましいものとなってきている。しかし、テスト／制御状況や環境はさまざまなものが考えられ、また利用できる計測器やデバイスもさまざまなものがあるため、望むシステムを制御するプログラムをユーザが開発しなければならいことが多い。上述のように、このようなシステムを制御するのに使用されるコンピュータ・プログラムは、従来のテキストベースのプログラミング言語、たとえばアセンブリ言語、Ｃ、ＦＯＲＴＲＡＮ、ＢＡＳＩＣ、またはＰａｓｃａｌなどで書かなければならなかった。しかし、これらのシステムの従来からのユーザは、多くの場合プログラミング手法の高度な訓練を受けているわけではなく、また従来のテキストベースのプログラミング言語はユーザが訓練なしで利用できるほど十分に直観的なものでもなかった。したがって、このようなシステムの実装に際して、プログラマが計装または工業オートメーション・データの制御および分析用のソフトウェアを書く必要があった。そこで、これらのシステムにおけるソフトウェア要素の開発と保守が困難である場合が多かった。
【０００６】
米国特許第４９０１２２１号、第４９１４５６８号、第５２９１５８７号、第５３０１３０１号、および第５３０１３３６号とりわけＫｏｄｏｓｋｙ  ｅｔ  ａｌでは、プロセスをモデル化するためのグラフィカル・システムと方法、つまりユーザがプロセスを簡単にかつ直観的にモデル化できるグラフィカル・プログラミング環境を開示している。Ｋｏｄｏｓｋｙ  ｅｔ  ａｌで開示されているグラフィカル・プログラミング環境は、コンピュータを対話操作する最高の最も直観的な方法と考えられる。グラフィカル・プログラミング環境は、Ｃ、Ｐａｓｃａｌなどのテキストベースの高水準プログラミング言語よりも上のレベルで表現できる。Ｋｏｄｏｓｋｙ  ｅｔ  ａｌで開示されている方法を使用すると、ブロック・ダイアグラム・エディタを使用してダイアグラムを構築することができ、作成されたダイアグラムは、たとえば１つまたは複数の変数を操作して１つまたは複数の出力変数を出力する、ある結果を出す手順または方法をグラフィックで表示する。ユーザがブロック・ダイアグラム・エディタを使用してデータ・フロー・ダイアグラムまたはグラフィカル・プログラムを構築するのに対応して、表示される手順に対応する実行手順を特徴付けるデータ構造を自動的に構築できる。グラフィカル・プログラムは、これらのデータ構造を使用してコンピュータによってコンパイルまたは解釈できる。したがって、ユーザはグラフィカル・プログラミング環境を使用するだけでコンピュータ・プログラムを作成できる。このグラフィカル・プログラミング環境は、仮想計装システム、工業オートメーション・システム、モデリング・プロセス、およびシミュレーションの作成、さらにはさまざまな種類の一般プログラミングに使用できる。
【０００７】
したがって、Ｋｏｄｏｓｋｙ  ｅｔ  ａｌでは、ユーザがブロック・ダイアグラム内にアイコンを入れたり、操作したりしてグラフィカル「プログラム」を作成するのにブロック・ダイアグラム・エディタを使用するグラフィカル・プログラミング環境を教示している。計測器、プロセス、または工業オートメーション・ハードウェアなどのデバイスの制御またはモデル化用のグラフィカル・プログラムを仮想計測器（ＶＩ）と呼ぶ。仮想計測器を作成する際に、ユーザはフロント・パネルまたはユーザ・インタフェース・パネルを作成できる。フロント・パネルには、コントロールやインジケータなど、グラフィカル・プログラムつまりＶＩが使用するそれぞれの入出力を表す、または表示する各種のフロント・パネル・オブジェクトを含み、制御されるデバイスを表す他のアイコンも入れることができる。コントロールおよびインジケータをフロント・パネル内に作成するときに、対応するアイコンまたはターミナルをブロック・ダイアグラム・エディタによりブロック・ダイアグラム内に自動的に作成することができる。それとは別に、ユーザはターミナル・アイコンまたは入出力ブロックをブロック・ダイアグラムに配置し、編集時または実行時にフロント・パネルに対応するフロント・パネル・オブジェクトを表示させることができる。
【０００８】
グラフィカル・プログラムを作成するときに、ユーザは望む結果を実行するさまざまな機能を選択し、機能アイコンを接続していっしょにする。たとえば、機能をデータ・フロー形式および／または制御フロー形式で接続できる。機能は、それぞれのコントロールとインジケータのターミナルの間で接続できる。たとえば、ユーザはブロック・ダイアグラムと呼ばれる、望む機能を実行するグラフィック・データ・フローを表すデータ・フロー・プログラムを作成またはアセンブルすることができる。アセンブルされたグラフィック・プログラムを、コンパイラによってコンパイルするか、インタプリタによって解釈し、ブロック・ダイアグラムに示されているような望む方法またはプロセスを実行する機械語を出力することができる。
【０００９】
ユーザは、フロント・パネル・コントロールを使用して仮想計測器にデータを入力できる。この入力データは、データ・フロー・ブロック・ダイアグラムまたはグラフィカル・プログラムに伝播し、出力インジケータ上に変化として現れる。計装アプリケーションでは、フロント・パネルを計測器のフロント・パネルに似たものにできる。工業オートメーション・アプリケーションでは、フロント・パネルをデバイスのＭＭＩ（マン・マシン・インタフェース）に似たものにできる。ユーザは、フロント・パネルのコントロールを調整して、入力を制御し、それぞれのインジケータに出力を表示できる。それとは別に、フロント・パネルを入出力の表示にだけ使用し、プログラム実行中にユーザ側で入力を対話的に操作することはできないようにすることもできる。
【００１０】
そこで、グラフィカル・プログラミングは、プログラマにとって使用可能な強力なツールとなる。Ｎａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ  ＬａｂＶＩＥＷ製品などのグラフィカル・プログラミング環境が非常に普及してきている。ＬａｂＶＩＥＷなどのツールを使用することでプログラマの生産性が大幅に向上しており、ソフトウェア・アプリケーションの開発にグラフィカル・プログラミング環境を使用するプログラマが増えてきている。特に、グラフィカル・プログラミング・ツールは、とりわけ、テストおよび測定、データ収集、プロセス制御、マン・マシン・インタフェース（ＭＭＩ）、監視制御およびデータ収集（ＳＣＡＤＡ）アプリケーション、シミュレーション、およびマシン・ビジョン・アプリケーションに使用されている。
【００１１】
多くのシナリオにおいて、グラフィカル・プログラムのフロント・パネルと上で呼ばれているユーザ・インタフェース・パネルをグラフィカル・プログラムのブロック・ダイアグラムから切り離すことが望ましいであろう。たとえば、テストおよび測定アプリケーションやプロセス制御アプリケーションなどの計装アプリケーションを開発しているユーザは、実験室や製造設備に置かれているコンピュータ上でグラフィカル・プログラムを実行したいが、ユーザのオフィスに置かれているワークステーションなどの他のコンピュータからプログラムのユーザ・インタフェース・パネルを表示してプログラムを対話操作したい場合がある。他に、プログラム開発者がグラフィカル・プログラムを構築し、他のユーザからプログラムの結果を対話的に操作したり表示したりできるようにする例もある。たとえば、プログラム開発者は、複数のインターネット・ユーザがグラフィカル・プログラムを実行しているコンピュータに接続し、グラフィカル・プログラムのユーザ・インタフェースを表示できるようにしたいと思うであろう。
【００１２】
こうして、さまざまな種類のユーザ・インタフェース・パネルを備えるさまざまな種類のグラフィカル・プログラムで上述のようなユーザ・インタフェース・パネルをエクスポートでき、しかもプログラミング作業量が最小限度に抑えられる一般システムおよび方法を実現することが望ましい。また、共通のネットワーキングおよびソフトウェア標準を使用する上記の機能を備え、各種のコンピューティング・プラットフォーム上で作業しているユーザがグラフィカル・プログラムを実行しているリモート・コンピュータに接続し、グラフィカル・プログラムのユーザ・インタフェース・パネルを表示し、場合によっては、さらに、そのユーザ・インタフェース・パネルを使用してグラフィカル・プログラムを遠隔で使用または制御できるようにすることが望まれる。さらに、こうした機能を利用するのに必要なクライアント・ソフトウェアのインストール作業を最小限度に抑え、かつ／または必要クライアント・ソフトウェアを自動的にダウンロードしインストールできるようにするのが望ましい。
【００１３】
（発明の概要）
本発明の一実施態様は、サーバ・コンピュータ上で実行されるグラフィカル・プログラムのユーザ・インタフェースの分散表示を可能にするシステムと方法を含む。一実施態様では、このシステムは、グラフィカル・プログラムが実行されるサーバ・コンピュータとそのサーバ・コンピュータに接続されている１つまたは複数のクライアント・コンピュータを備える。クライアント・コンピュータは、グラフィカル・プログラムに対応して、ユーザ・インタフェースたとえば１つまたは複数のユーザ・インタフェース・パネルを受け取って表示する。一実施態様では、クライアント・コンピュータからユーザ・インタフェースを使用して、プログラム実行時にグラフィカル・プログラムに入力を与え、かつそのプログラムからの出力を表示することができる。本発明の特定の一実施態様では、分散仮想計装システムを備え、グラフィカル・プログラムがサーバ・コンピュータ上で実行されて測定またはオートメーション機能を実行し、１つまたは複数のフロント・パネルがクライアント・コンピュータに表示され、これにより、一人または複数のユーザが測定またはオートメーション機能を遠隔で表示かつ／または制御できる。
【００１４】
一実施態様では、クライアント・コンピュータのユーザはグラフィカル・プログラムが実行されるリモート・サーバ・コンピュータを指定する。リモート・サーバ情報はさまざまな方法で指定できる。たとえば、情報を、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）、インターネット・プロトコル（ＩＰ）アドレス、マシン名とＴＣＰ／ＩＰポート番号などで指定できる。一実施態様では、ユーザはリモート・コンピュータを指定するのに、ＵＲＬをＷｅｂブラウザやＷｅｂブラウザ機能を備えるその他のアプリケーションなどのアプリケーションに入力する。以下で述べるように、アプリケーションはＵＲＬを処理し、リモート・コンピュータに接続するため使用可能になっているプロトコル・ハンドラ・プラグインを備えることができる。
【００１５】
ユーザは、グラフィカル・プログラムを実行しているリモート・コンピュータを指定するときに、望ましい特定のグラフィカル・プログラムも指定できる。たとえば、グラフィカル・プログラムの名前を示すパラメータをＵＲＬなどに付加することができる。ユーザはさらに、特定のグラフィカル・プログラムを指定することなくリモート・コンピュータを指定することもできる。たとえば、リモート・コンピュータはＷｅｂサーバを備えているとする。ユーザがそのＷｅｂサーバと関連するＷｅｂページのＵＲＬを入力すると、Ｗｅｂサーバは、リモート・コンピュータを実行しているグラフィカル・プログラムのリストを返す。そこでユーザはリストから１つまたは複数のグラフィカル・プログラムを選択できる。ユーザのクライアント・ソフトウェアは、ユーザのディスプレイ画面に表示されている選択されたグラフィカル・プログラムと関連するユーザ・インタフェース・パネルを表示する動作が可能である。
【００１６】
一実施態様では、ユーザのクライアント・ソフトウェアは遠隔のグラフィカル・プログラムと通信するため動作可能なプラグインを内蔵するＷｅｂブラウザ（またはＷｅｂブラウザ機能を持つアプリケーション）を備える。この実施態様では、プラグインはＷｅｂブラウザのウィンドウに直接、ユーザ・インタフェース・パネルを表示できる。ユーザのクライアント・ソフトウェアは、標準のＴＣＰ／ＩＰプロトコルに基づく通信プロトコルを使用するリモート・コンピュータ上で実行されるエージェントまたはソフトウェア・プログラムと通信するのが好ましい。ユーザが接続にリモート・コンピュータを指定した場合、リモート・コンピュータのエージェントはグラフィカル・プログラムユーザ・インタフェース・パネルの記述をユーザのクライアント・ソフトウェアに転送する。この記述は、リモート・コンピュータのユーザ・インタフェース・パネル情報を格納するのに使用しているのと同じ形式で送信できる。ユーザ・インタフェース・パネルの記述は、もちろん、他のさまざまな形式、たとえばＸＭＬ記述で送信することができる。ユーザのクライアント側ソフトウェア、たとえば、Ｗｅｂブラウザ・プラグインは、リモート・コンピュータから受け取る可能性のあるどのようなユーザ・インタフェース・パネル記述であっても解釈できるのが好ましく、ユーザ・インタフェース・パネルをユーザに適宜表示するよう使用可能である。
【００１７】
グラフィカル・プログラムのユーザ・インタフェース・パネルを受け取ってユーザのディスプレイ画面に表示した後、グラフィカル・プログラムのブロック・ダイアグラムの実行中、ユーザ・インタフェース・パネルを動的に更新できる。たとえば、ユーザ・インタフェース・パネルには、電気信号、気象データなど、ブロック・ダイアグラムで生成されたさまざまな種類の測定データを表示するグラフを入れることができ、このグラフはグラフィカル・プログラムの実行に応じて測定データ値が変化するとユーザのディスプレイ上でスクロールする。他の例としては、新しい値で定期的に更新する数値テキスト・インジケータを備えるユーザ・インタフェース・パネルなどがある。
【００１８】
ユーザはさらに、クライアント・コンピュータ上のユーザ・インタフェース・パネルを対話的に操作し、たとえば、ポイントしてクリックする標準タイプのＧＵＩコマンドを発行することにより、入力をサーバ・コンピュータ上で実行中のブロック・ダイアグラムに送ることもできる。ユーザの入力は、サーバ・コンピュータ上の遠隔のグラフィカル・プログラムに渡され、グラフィカル・プログラムがそれに応じて応答する。つまり、ユーザは、ユーザのローカル・コンピュータ上で実行されている場合にプログラムを対話的に操作するのとまったく同じように遠隔のグラフィカル・プログラムを対話的に操作できる。ユーザ間の制御を調整する手段を含めることで、複数のユーザが同じグラフィカル・プログラムを対話的に操作しながら、互いのアクションに干渉しないようにできる。
【００１９】
以下に述べるように、一実施態様では、ユーザはさらに、遠隔のグラフィカル・プログラムのブロック・ダイアグラムを要求し、受け取って、たとえば、グラフィカル・プログラムを編集やデバッグをすることができる。
【００２０】
上で指摘したように、好ましい実施態様では、グラフィカル・プログラムが実行されているリモート・サーバ・コンピュータとユーザのクライアント・ソフトウェアとの間の通信にＴＣＰ／ＩＰベースの通信プロトコルを使用する。他の実施態様では、米国特許第０９／１８５１６１号で開示されているデータソケットのシステムと方法を使用して、ユーザのクライアント・ソフトウェアとグラフィカル・プログラムが実行されているリモート・コンピュータとの間の通信を簡単に行えるようにできる。データソケット・システムは、ＵＲＬを使用して世界中のあらゆる場所のＷｅｂページのアドレス指定を行うのと同じような方法でＵＲＬを使用してデータ・ソース／ターゲットのアドレスを指定するクライアント・ソフトウェア・コンポーネントを備える。
【００２１】
一実施態様では、遠隔のグラフィカル・プログラムは「ＶＩサーバ」と呼ばれる機能を備えるグラフィカル・プログラミング環境内で実行される。ＶＩサーバの機能を使って、ユーザ・クライアントを遠隔のグラフィカル・プログラムに接続し、それと対話的に操作するようにできる。ＶＩサーバの詳細については、以下に参照で取り込まれている特許出願を参照されたい。
【００２２】
本発明には、さまざまな修正および他の態様がありえるが、その特定の実施態様は図面の内の例を用いて示されているため、ここで詳述する。ただし、図面および詳細な説明は発明を開示されている特定の態様に制限する意図のないことを理解していただきたい。それどころか、本発明は付属の請求項で定義されているように本発明の精神と範囲内にあるすべての修正物、等価物、および代替物を適用範囲とする。
【００２３】
本発明は、次の図面とともに好ましい実施形態の次の詳細な説明を考察するとより容易に理解できるであろう。
【００２４】
（好ましい実施形態の詳細な説明）
図１−ネットワークに接続されたコンピュータ・システム
図１は、コンピュータ・システム８２がネットワーク８４を介して第２のコンピュータ・システム８６に接続されているコンピュータ・ネットワークの例の図である。コンピュータ・システム８２と第２のコンピュータ・システム８６は、望むとおりどのような種類のものでもよい。ネットワーク８４はまた、ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（ワイド・エリア・ネットワーク）、さらにはインターネットとすることができる。
【００２５】
コンピュータ・システム８２のユーザは、ここで述べているシステムと方法に従って、コンピュータ・システム８６に接続できる。コンピュータ・システム８２は、クライアント・コンピュータ・システム８２とも呼ばれ、グラフィカル・プログラムのユーザ・インタフェース・パネルの記述を受け取り、コンピュータ・システム８２のディスプレイ画面にそのパネルを表示できるクライアント・ソフトウェアを備える。たとえば、クライアント・ソフトウェアは、Ｗｅｂブラウザ・プラグインを内蔵するＷｅｂブラウザとすることができる。Ｗｅｂブラウザとしては、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒがあり、プラグインをＭｉｃｒｏｓｏｆｔのＡｓｙｎｃｈｒｏｎｏｕｓ  Ｐｌｕｇｇａｂｌｅ  Ｐｒｏｔｏｃｏｌｓ仕様に従って構築できる。
【００２６】
コンピュータ・システム８６は、サーバ・コンピュータ・システム８６と呼ぶこともできるが、グラフィカル・プログラムとともにサーバ側プログラムまたはエージェントを備え、コンピュータ・システム８２のユーザは本発明に従ってコンピュータ・システム８６と通信することができる。たとえば、コンピュータ・システム８６は、上述のようにＶＩサーバ機能を備えることができる。
【００２７】
上述のようにコンピュータ・システム８６に接続されているクライアントが１つだけ示されているが、複数のクライアントをコンピュータ８６に接続して、グラフィカル・プログラムのユーザ・インタフェース・パネルを表示したりグラフィカル・プログラムを対話的に操作することができる。コンピュータ・システム８６は、複数の遠隔地のユーザ間でグラフィカル・プログラムの制御を調整するメカニズムを備えるのが好ましい。たとえば、コンピュータ・システム８６では、ラウンドロビン方式、優先順位付きラウンドロビン方式などのさまざまな方法またはアルゴリズムを使用して、グラフィカル・プログラムの制御を複数のユーザに分散させることができる。さまざまな種類の特権または許可を、異なるユーザに割り当て、グラフィカル・プログラムに対する異なるレベルで制御することもできる。たとえば、プログラム作成者が他のユーザをロックアウトし、プログラムの完全な制御権を奪うことを許可できる。他のユーザに対しては、グラフィカル・プログラムのユーザ・インタフェース・パネルの表示のみを許可し、グラフィカル・プログラムの制御に使用することは許可せず、たとえば、これらのユーザに対しグラフィカル・プログラムへの入力を行うことだけを許可できる。
【００２８】
図２Ａおよび２Ｂ−計装および工業オートメーション・システム
図２Ａおよび２Ｂは、本発明に従ってプログラムを格納または使用できるシステムの例を示している。これらのシステム例は、計装、プロセス制御、またはその他の目的専用のシステムを説明している。図２Ａおよび２Ｂは、サーバ・コンピュータ・システムの例である。そこで、上述のサーバ・コンピュータ８６は、計装または工業オートメーション・システム内に装備することができ、本発明では、テストまたはオートメーション・アプリケーションの分散制御が可能である。本発明は、もちろん、望ましいその他の種類のアプリケーションでも使用できる。
【００２９】
図２Ａは、計装制御システム１００を示している。システム１００はホスト・コンピュータ８６（サーバ・コンピュータ８６）を備える。これは１つまたは複数の計測器に接続されている。ホスト・コンピュータ８６は、図に示されているようにＣＰＵ、ディスプレイ画面、メモリ、およびマウスまたはキーボードなど１つまたは複数の入力デバイスを備える。コンピュータ８６は、１つまたは複数の計測器に接続され、テスト対象のユニット（ＵＵＴ）またはプロセス１５０を分析し、測定し、または制御する。
【００３０】
１つまたは複数の計測器が、ＧＰＩＢ計測器１１２および関連するＧＰＩＢインタフェース・カード１２２、データ収集ボード１１４および関連する信号調整回路１２４、ＶＸＩ計測器１１６、ＰＸＩ計測器１１８、ビデオデバイス１３２および関連する画像収集カード１３４、モーション制御デバイス１３６および関連するモーション制御インタフェース・カード１３８、および／または、１つまたは複数のコンピュータベースの計測器カード１４２を備えることができる。
【００３１】
ＧＰＩＢ計測器１１２は、コンピュータ８６に装備されているＧＰＩＢインタフェース・カード１２２を介してコンピュータ８６に結合されている。同様の方法で、ビデオ・デバイス１３２は、画像収集カード１３４を介してコンピュータ８６に結合され、モーション制御デバイス１３６は、モーション制御インタフェース・カード１３８を介してコンピュータ８６に結合されている。データ収集ボード１１４は、コンピュータ８６に結合され、信号調整回路１２４を通じてＵＵＴにインタフェースすることができる。信号調整回路１２４は、１つまたは複数のＳＣＸＩモジュール１２６を備えるＳＣＸＩ（計装用信号調整拡張）シャシを備えるのが好ましい。
【００３２】
ＧＰＩＢカード１２２、画像収集カード１３４、モーション制御インタフェース・カード１３８、およびＤＡＱカード１１４は、通常、コンピュータ８６内のＩ／Ｏスロット、たとえばコンピュータ８６に用意されているＰＣＩバス・スロット、ＰＣカード・スロット、またはＩＳＡ、ＥＩＳＡ、またはＭｉｃｒｏＣｈａｎｎｅｌバス・スロットなどに差し込まれる。ただし、これらのカード１２２、１３４、１３８、および１１４は、説明のため、コンピュータ８６の外部に示されている。
【００３３】
ＶＸＩシャシまたは計測器１１６は、コンピュータ８６に用意されているＶＸＩバス、ＭＸＩバス、またはその他のシリアルまたはパラレル・バスを介してコンピュータ８６に結合されている。コンピュータ８６は、ＶＸＩシャシ１１６にインタフェースするＶＸＩ、ＭＸＩ、またはＧＰＩＢインタフェース・カード（図には示されていない）などのＶＸＩインタフェース・ロジックを備えるのが好ましい。ＰＸＩシャシまたは計測器は、コンピュータのＰＣＩバスを介してコンピュータ８６に結合するのが好ましい。
【００３４】
シリアル計測器（図には示されていない）も、コンピュータ８６に装備されているＲＳ−２３２ポート、ＵＳＢ（ユニバーサル・シリアル・バス）、ＩＥＥＥ  １３９４または１３９４．２バスなどのシリアル・ポートを介してコンピュータ８６に結合できる。通常の計装制御システムでは、それぞれのインタフェース・タイプの計測器が存在せず、実際、多くのシステムでＧＰＩＢ計測器のみなど、単一のインタフェース・タイプの計測器を１つまたは複数備えるだけである。
【００３５】
計測器は、テスト対象ユニット（ＵＵＴ）またはプロセス１５０に結合されるか、またはトランスデューサによって通常生成されるフィールド信号を受信するように結合される。システム１００は、データ収集および制御アプリケーション、テストおよび測定アプリケーション、プロセス制御アプリケーション、またはマン・マシン・インタフェース・アプリケーションで使用できる。
【００３６】
図２Ｂは工業オートメーション・システム１６０の例の図である。工業オートメーション・システム１６０は、図２Ａに示されている計装またはテストおよび測定システム１００に似ている。図２Ａの要素に似ている、または同一の要素は、便宜上同じ参照番号が振られている。システム１６０は、１つまたは複数のデバイスまたは計測器に接続されるコンピュータ８６を備える。コンピュータ８６は、図に示されているようにＣＰＵ、ディスプレイ画面、メモリ、およびマウスまたはキーボードなど１つまたは複数の入力デバイスを備える。コンピュータ８６は、１つまたは複数のデバイスを通じて、プロセスまたはデバイス１５０に接続され、ＭＭＩ（マン・マシン・インタフェース）、ＳＣＡＤＡ（監視制御およびデータ収集）、ポータブルまたは分散データ収集、プロセス制御、詳細分析、またはその他の制御などのオートメーション機能を実行する。
【００３７】
１つまたは複数のデバイスが、データ収集ボード１１４および関連する信号調整回路１２４、ＰＸＩ計測器１１８、ビデオデバイス１３２および関連する画像収集カード１３４、モーション制御デバイス１３６および関連するモーション制御インタフェース・カード１３８、フィールドバス・デバイス１７０および関連するフィールドバス・インタフェース・カード１７２、ＰＬＣ（プログラマブル・ロジック・コントローラ）１７６、シリアル計測器１８２および関連するシリアル・インタフェース・カード１８４、または分散データ収集システム、たとえば、とりわけＮａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ社製のＦｉｅｌｄｐｏｉｎｔシステムなどを備えることができる。
【００３８】
ＤＡＱカード１１４、ＰＸＩシャシ１１８、ビデオ・デバイス１３２、および画像収集カード１３６を上述のようにコンピュータ８６に接続するのが好ましい。シリアル計測器１８２は、コンピュータ８６に装備されているシリアル・インタフェース・カード１８４または、ＲＳ−２３２ポートなどのシリアル・ポートを介してコンピュータ８６に結合されている。ＰＬＣ  １７６は、シリアル・ポート、Ｅｔｈｅｒｎｅｔ（登録商標）ポート、または専用インタフェースを介してコンピュータ８６に結合される。フィールドバス・インタフェース・カード１７２をコンピュータ８６内に装備し、フィールドバス・ネットワークを介して１つまたは複数のフィールドバス・デバイスにインタフェースするのが好ましい。通常、ＤＡＱカード１１４、シリアル・カード１８４、フィールドバス・カード１７２、画像収集カード１３４、およびモーション制御カード１３８はそれぞれ、上述のように、コンピュータ８６内のＩ／Ｏスロットに差し込まれる。ただし、これらのカード１１４、１８４、１７２、１３４、および１３８は、説明のため、コンピュータ８６の外部に示されている。通常の工業オートメーション・システムでは、それぞれのインタフェース・タイプのデバイスが存在せず、実際、多くのシステムはＰＬＣのみなど、単一のインタフェース・タイプのデバイスを１つまたは複数備えるだけである。これらのデバイスはデバイスまたはプロセス１５０に結合されている。
【００３９】
再び図２Ａおよび２Ｂを参照する。サーバ・コンピュータ・システム８６は、本発明による１つまたは複数のコンピュータ・プログラムまたはソフトウェア・コンポーネントが格納されるメモリ媒体を備えるのが好ましい。「メモリ媒体」という用語は、インストール媒体、たとえば、ＣＤ−ＲＯＭ、フロッピー（登録商標）・ディスク１０４、またはテープ・デバイス、コンピュータ・システム・メモリ、またはＤＲＡＭ、ＳＲＡＭ、ＥＤＯ  ＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭなど、あるいは磁気媒体、たとえばハードディスク・ドライブや光記憶装置などの不揮発性メモリを含むことを意図している。メモリ媒体は、他のタイプのメモリ、あるいはその組み合わせとしてもよい。
【００４０】
さらに、メモリ媒体は、プログラムが実行される第１のコンピュータに配置しても、またインターネットなどのネットワークを介して第１のコンピュータに接続している異なる第２のコンピュータに配置してもよい。後者の場合、第２のコンピュータは実行のためプログラム命令を第１のコンピュータに送る。サーバ・コンピュータ・システム８６は、さまざまな形態をとりうる。同様に、クライアント・コンピュータ・システム８２は、パーソナル・コンピュータ・システム、ワークステーション、ネットワーク・アプライアンス、インターネット・アプライアンス、パーソナル・デジタル・アシスタント（ＰＤＡ）、テレビジョン・システムまたはその他のデバイスをはじめとする、さまざまな形態をとりうる。一般に、「コンピュータ・システム」という用語は、メモリ媒体にある命令を実行する少なくとも１つのプロセッサを備えるデバイスを包含するように広い意味で定義することができる。
【００４１】
一実施形態では、サーバ・コンピュータ８６のメモリ媒体は、本発明によりクライアント・コンピュータ・システム８２と通信するためのソフトウェア・プログラムを格納する。たとえば、サーバ・コンピュータ８６は、ネットワーク通信ソフトウェア、たとえば、ＴＣＰ／ＩＰソフトウェアを格納し、またリモート・コンピュータとの通信を可能にするグラフィカル・プログラミング・システムなどのアプリケーション・レベルのソフトウェアを格納することもできる。
【００４２】
一実施形態では、クライアント・コンピュータ８２のメモリ媒体は、本発明によりサーバ・コンピュータ・システム８６と通信するためのソフトウェア・プログラムを格納する。たとえば、クライアント・コンピュータ８２は、ＷｅｂブラウザまたはＷｅｂブラウズ機能を備えるその他のアプリケーションなどの標準ユーザ・エージェントと、場合によっては、サーバ・コンピュータとの通信用の専用ブラウザ・プラグインを格納できる。
【００４３】
一実施形態では、ユーザが遠隔地で表示または制御できるグラフィカル・プログラムは、データ収集／生成、分析および／または表示用のプログラム、あるいは計装または工業オートメーション・ハードウェアの制御またはモデル化用のプログラムである。たとえば、好ましい実施形態では、グラフィカル・プログラムは、計装および工業オートメーション・アプリケーションの開発者専用のサポートが行われているＮａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ  ＬａｂＶＩＥＷというグラフィカル・プログラミング環境アプリケーションを使用して作成されるプログラムである。
【００４４】
ただし、本発明は、多数のアプリケーションで使用することができ、計装または工業オートメーション・アプリケーションに限定されないことに注意されたい。つまり、図２Ａおよび２Ｂは例にすぎず、ユーザはさまざまなアプリケーションのどれについてもいろいろな種類の目的のためにグラフィカル・プログラムを遠隔で対話的に操作することができる。
【００４５】
図３−コンピュータ・システムのブロック図
図３は、図１、２Ａ、および２Ｂに示されているコンピュータ・システムのブロック図である。いかなる種類のコンピュータ・システム構成またはアーキテクチャも、望む通りに使用でき、図３は代表的なＰＣ実施形態を説明していることに注意されたい。また、コンピュータ・システムは、図２Ａおよび２Ｂに示されているような汎用コンピュータ、ＶＸＩシャシに装着されたＶＸＩカードに実装されたコンピュータ、ＰＸＩシャシに装着されたＰＸＩカードに実装されたコンピュータ、またはその他の種類の実施形態である。本発明を理解するうえで必要のないコンピュータの要素は、簡略化のため省いてある。
【００４６】
コンピュータ８６（または８２）は、プロセッサまたはホスト・バス１６２に結合された少なくとも１つの中央処理装置つまりＣＰＵ  １６０を備える。ＣＰＵ  １６０は、ｘ８６プロセッサ、たとえばＰｅｎｔｉｕｍ（登録商標）クラス、ＰｏｗｅｒＰＣプロセッサ、ＳＰＡＲＣ  ＲＩＳＣプロセッサ・ファミリのＣＰＵなどさまざまな種類のいずれでもかまわない。メイン・メモリ１６６は、メモリ・コントローラ１６４を使用してホスト・バス１６２に結合されている。
【００４７】
メイン・メモリ１６６は本発明によるコンピュータ・プログラムを格納する。メイン・メモリ１６６は、さらに、当業者にはよく知られているように、オペレーティング・システム・ソフトウェアとともにコンピュータ・システムを動作させるためのソフトウェアも格納する。本発明のコンピュータ・プログラムについて、以下の段落で詳しく説明する。
【００４８】
ホスト・バス１６２は、バス・コントローラ１６８またはバス・ブリッジ・ロジックにより拡張バスまたは入出力バス１７０に結合されている。拡張バス１７０は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）拡張バスであるのが好ましいが、他の種類のバスも使用できる。拡張バス１７０は、データ収集ボード１１４（図２Ａの）、ＧＰＩＢ計測器１１２（図２Ａの）へのＧＰＩＢバス・インタフェースであるＧＰＩＢインタフェース・カード１２２、およびＶＸＩ計測器を受け入れるためのＶＸＩシャシ１１６に結合されているＶＸＩまたはＭＸＩバス・カード１８６などのさまざまなデバイス用のスロットを備える。コンピュータ８６ではさらに、ビデオ表示サブシステム１８０とハードディスク・ドライブ１８２が拡張バス１７０に結合されている。
【００４９】
図４〜６：ユーザによるグラフィカル・プログラムの対話的作成
図４は、グラフィカル・プログラムを対話的にまたは手動で作成または編集する方法の一実施形態を説明する流れ図である。流れ図に示され、以下で説明するように、ユーザはグラフィカル・プログラムに対話的にさまざまなオブジェクトを追加し、接続してつなぎ合わせる。図４のさまざまなステップはいろいろな順序で実行したり、必要に応じて省くこともできることに注意されたい。
【００５０】
図４に示されている実施形態のステップは、グラフィカル・プログラミング環境でグラフィカル・プログラムを作成または編集する開発者によって実行される。図に示されているように、ステップ４２０で、開発者はグラフィカル・ユーザ・インタフェースを表示するユーザ・インタフェース・パネルを作成または編集できる。ユーザ・インタフェース・パネルは、ユーザ入力を受け入れたり、プログラムの出力などの情報を表示したり、あるいはその両方をコントロールすることができる。たとえば、ユーザ・インタフェース・パネルは、ボタン、選択可能リスト、テキスト・ボックス、グラフ・コントロール、画像などを備えることができる。開発者は、たとえばコントロール・パレットから目的のコントロールを選択して、ユーザ・インタフェース・パネルにさまざまなコントロールまたはその他のオブジェクトを「ドロップ」する。図５は、単純なユーザ・インタフェース・パネルを示している。ステップ４２０は必ずしも実行されない。たとえば、ユーザ・インタフェース・パネルが望まれない場合があったり、ユーザ・インタフェース・パネルがブロック・ダイアグラムの作成時に本質的に指定する場合があったり、ユーザがグラフィカル・プログラムの実行可能部分を作成するときにユーザ・インタフェース・パネルが自動的に作成されたりする場合がある。
【００５１】
ステップ４２２で、開発者は、ブロック・ダイアグラムと呼ばれるグラフィカル・プログラムの実行可能部分を作成または編集する。グラフィカル・プログラムは、ここで「ノード」と呼ぶオブジェクトを含むブロック・ダイアグラムを備えることができ、これらのオブジェクト同士を接続して、プログラム実行ロジック、データ・フロー、および／または制御フローをモデル化する。ブロック・ダイアグラムは、ノードのタイプまたは機能を表すアイコンとして表示することができる。図６は、単純なブロック・ダイアグラムを示している。開発者がユーザ・インタフェース・パネルにオブジェクトを追加すると、グラフィカル・プログラミング環境により対応するオブジェクトがブロック・ダイアグラム上に自動的に作成される。ユーザ・インタフェース・パネル・オブジェクトに対応するこのようなブロック・ダイアグラム・ノードは、ここでは、ユーザ・インタフェース・ノードまたはターミナルと呼ぶ。たとえば、「Ｔｈｅ  ｒｅｓｕｌｔ  ｏｆ  ２．０＋３．０  ｗａｓ：（２．０＋３．０の結果：）」というラベルの付いている図６のブロック・ダイアグラム・ノードは図５のユーザ・インタフェース出力インジケータに対応するユーザ・インタフェース・ノードである。ユーザ・インタフェース・ノードをブロック・ダイアグラム内の他のオブジェクトまたはノードと接続して、プログラム・ロジックおよびデータ／制御フローに加えることができる。ユーザ・インタフェース・パネルでは、入出力をユーザ・インタフェース・パネルとブロック・ダイアグラムとの間にマッピングできる。たとえば、図６のユーザ・インタフェース・ノードでは、データを受け取り、そのデータを図５内の対応するユーザ・インタフェース・インジケータに表示する。
【００５２】
図４のステップ４２２で、開発者は他のオブジェクト／ノードをグラフィカル・プログラムに追加したり、グラフィカル・プログラムの他のオブジェクト／ノードを編集する。これらのオブジェクトまたはノードは、数値関数、ブール関数、文字列関数、配列関数、エラー関数、ファイル関数、アプリケーション制御関数などの所定の関数演算を実行する関数ノードを含む。たとえば、図６に示されているブロック・ダイアグラムでは、加算関数を使用して、２つの定数を足し合わせている。ステップ４２２で、開発者はさらに、他の種類のノードをグラフィカル・プログラムに追加できる。たとえば、数値定数を表すノードを追加できる。図６は、浮動小数点定数２．０と３．０を表す数値定数ノードを示している。
【００５３】
追加できるノードとしては他に、グラフィカル・サブプログラムを呼び出すサブプログラム・ノード、変数を定義し使用するグローバルまたはローカル変数ノードなどがある。ステップ４２２で、開発者はさらに、他の種類のオブジェクトをグラフィカル・プログラムに追加できる。たとえば、ループ、Ｗｈｉｌｅループ、Ｃａｓｅ構文などのプログラム構造を表すオブジェクトも追加できる。開発者は、グラフィカル・プログラムにノードや他の種類のオブジェクトを追加でき、その際にさまざまな方法、たとえば、さまざまなノードおよびオブジェクトを表すアイコンを表示しているパレットからノードまたはオブジェクトを選択する方法を採用できる。
【００５４】
図４のステップ４２２では、開発者はさらに、目的の実行可能ロジック、データ・フロー、および／または制御フローを得るためにグラフィカル・プログラムのオブジェクトを接続、つまり「配線」することもできる。たとえば、オブジェクトには、入出力ターミナルを入れることができ、開発者は、一方のノードの出力ターミナルを他方のノードの入力ターミナルに接続するといったことができる。図６は、オブジェクト同士を接続する方法の一実施形態を示している。この例では、２つの数値定数ノードの出力ターミナルを加算関数ノードの入力ターミナルに接続している。加算関数ノードは、数値入力に対し加算を実行する。加算関数ノードの出力ターミナルは、ユーザ・インタフェース・インジケータ・ノードの入力に接続されており、加算の結果が図５に示されているユーザ・インタフェース・パネルに表示される。
【００５５】
プログラム構造オブジェクトはさらに、グラフィカル・プログラムの他のオブジェクトと統合するターミナルを備えることができる。たとえば、Ｗｈｉｌｅループは、ループがいつ終了するかを示すブール値を与えるノードの出力ターミナルを接続できる条件ターミナルを備えることができる。
【００５６】
グラフィカル・プログラムを作成または編集する一実施形態に関する詳細は、引用により本発明に取り込まれている、さまざまなＬａｂＶＩＥＷユーザマニュアルおよび開発者マニュアルおよび、Ｎａｔｉｏｎａｌ  Ｉｎｓｔｒｕｍｅｎｔｓ  Ｃｏｒｐｏｒａｔｉｏｎで販売しているＬａｂＶＩＥＷバージョン５．１を参照していただきたい。
【００５７】
図４のステップ４２６で開発者は、グラフィカル・プログラムを保存または実行する。グラフィカル・プログラムはいろいろな形式で保存できる。たとえば、グラフィカル・プログラムのさまざまな要素とそれらの要素間の関係を表すデータ構造のツリーを構築し、そのデータ構造をバイナリ形式またはテキスト形式で保存できる。これらのデータ構造は、機械語コードにコンパイルするか、または解釈実行される。グラフィカル・プログラムにユーザ・インタフェース・パネルが含まれる場合、これらのパネルも保存できる。ステップ４２６で開発者は、グラフィカル・プログラムを実行することもできる。開発者は、グラフィカル・プログラムをいろいろな方法で実行できる。たとえば、グラフィカル・プログラミング環境で、開発環境内からプログラムを実行することができ、また開発者はスタンドアローンのプログラムを作成して、そのプログラムを実行するなどできる。
【００５８】
ステップ４２０〜４２６は通常、反復実行され、また実行順序はさまざまであるのがふつうであることに注意されたい。たとえば、開発者はユーザ・インタフェース・コントロールをユーザ・インタフェース・パネルに追加し、そのコントロールに対応するユーザ・インタフェース・ノードを他のノードに接続し、関数ノードをプログラムに追加して接続し、プログラムを実行してそれをテストし、ノードの接続の仕方を変更するといったことができる。また、上で指摘したように、ステップ４２０をステップ４２２への応答として自動的に（たとえば、プログラムで）実行するようにできる。さらに、ユーザ・インタフェース・パネルは、編集時に自動的に作成するようにしたり、あるいは実行時に自動的に生成するようにもできる。従って、図４の流れ図は例であり、さまざまなステップを組み合わせる、省く、追加する、修正するという操作を必要に応じてあるいは望ましい場合に実行し、異なるグラフィカル・プログラムを開発したり、グラフィカル・プログラム開発環境の異なる実施形態を使用することができる。
【００５９】
図７−遠隔のグラフィカル・プログラムへのアクセス
図７は、遠隔のグラフィカル・プログラムにユーザがアクセスする一実施形態を説明する流れ図である。他の実施形態では、図７のさまざまなステップを組み合わせる、変更する、省くという操作を行ったり、または異なる順序で実行することができる。
【００６０】
図に示されているように、図７のステップ４５０で、ユーザはリモート・コンピュータを指定する。ステップ４５２で、ユーザはリモート・コンピュータのグラフィカル・プログラムを指定する。ステップ４５０および４５２を１つのステップに組み合わせることができる。上述のように、ステップ４５０および４５２はいろいろな方法で実行できる。たとえば、ユーザがリモート・コンピュータまたは遠隔のグラフィカル・プログラムを指し示すＵＲＬを指定することにより、リモート・コンピュータおよび／または遠隔のグラフィカル・プログラムを暗黙のうち指定することができる。ステップ４５０および４５２は必ずしもユーザによって直接実行されるわけではなく、プログラムで実行するようにもできることに注意されたい。たとえば、ユーザは、以下で説明するリモート・コンピュータおよび遠隔のグラフィカル・プログラムへの参照をユーザのマシン上で実行されるクライアント・ソフトウェアに送るアプリケーションを操作できる。
【００６１】
好ましい実施形態では、ユーザはステップ４５０と４５２を実行する。その際に、ＷｅｂブラウザやＷｅｂブラウズ機能を備えるアプリケーション、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒコードベースを使用するアプリケーションなどの標準の一般に使用可能なクライアント・ソフトウェアを対話的に操作する。たとえば、ユーザはＵＲＬをブラウザ・アプリケーションに送り、ブラウザ・アプリケーションはＷｅｂサーバに接続し、そのＷｅｂサーバ・コンピュータまたは他のコンピュータ上で実行されているグラフィカル・プログラムのリストを受け取ることができる。そこでユーザは、たとえばハイパーテキスト・リンクなどをクリックすることにより、１つまたは複数のグラフィカル・プログラムを選択できる。グラフィカル・プログラムを選択すると、ユーザのブラウザ・アプリケーションがブラウザ・プラグインを起動し、図７の残りのステップを処理する。
【００６２】
ステップ４５０〜４５２の他の実施形態も考慮される。たとえば、ユーザはまだＷｅｂブラウザ環境のコンテキスト内で作業しているかもしれないが、いずれの時点でもＷｅｂサーバと対話していない場合がある。たとえば、ユーザが、そのＷｅｂブラウザ内部ではサポートしていないプロトコル方式が使われるＵＲＬをＷｅｂブラウザに送る場合がある。応答として、ＷｅｂブラウザはＵＲＬをプロトコル・ハンドラ・プラグインに任せる。たとえば、このようなプロトコル・ハンドラ・プラグインをＭｉｃｒｏｓｏｆｔ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｐｌｕｇｇａｂｌｅ  Ｐｒｏｔｏｃｏｌｓ仕様に従って構築できる。このプラグインは、ＵＲＬで参照している資源、たとえばグラフィカル・プログラムが置かれているリモート・コンピュータに直接接続し、図７のステップを続けることができる。
【００６３】
ステップ４５４で、ユーザのクライアント・ソフトウェア、たとえばＷｅｂブラウザ・プラグインはリモート・コンピュータに接続する。リモート・コンピュータは、図７に示されているクライアント側の演算に対応するサーバ側の演算をサポートする動作が可能なアプリケーションまたはエージェントを備えることができる。クライアント・ソフトウェアとサーバ・ソフトウェアとの間の通信には、さまざまなアプリケーション・レベルのプロトコルを使用できる。好ましい実施形態では、ＴＣＰ／ＩＰプロトコルに基づく通信プロトコルをリモート・コンピュータとの通信に使用している。接続時に、遠隔のグラフィカル・プログラムは、すでに、リモート・コンピュータで実行されている可能性があり、またリモート・コンピュータはクライアント・コンピュータの接続に応答してプログラムを起動する動作が可能な場合がある。
【００６４】
ステップ４５６で、ユーザのクライアント・ソフトウェアは、ステップ４５２で指定されているグラフィカル・プログラムに関連付けられているユーザ・インタフェース・パネルの記述を送信するようリモート・コンピュータに要求する。ステップ４５６は、ステップ４５４と組み合わせることができる。この要求に応えて、リモート・コンピュータはユーザ・インタフェース・パネルの記述を送信する。
【００６５】
ステップ４５８で、ユーザのクライアント・ソフトウェア、たとえばＷｅｂブラウザ・プラグインはユーザ・インタフェース・パネルの記述を受け取り、ユーザ・インタフェース・パネルを適宜表示する。好ましい実施形態では、クライアント・ソフトウェアが受け取るユーザ・インタフェース・パネルの記述は、リモート・コンピュータがユーザ・インタフェース・パネル情報を永続的に格納するために使用する記述に基づく、またはそれと同一の記述である。つまり、グラフィカル・プログラムとそのユーザ・インタフェース・パネルをリモート・コンピュータで作成し保存すると、ユーザ・インタフェース・パネルを記述する情報が特定の方法で構造化されるということである。好ましい実施形態では、ユーザのクライアント・ソフトウェアはこの構造化された情報の構文解析を行い、ユーザ・インタフェース・パネルをユーザのディスプレイ画面、たとえばユーザのＷｅｂブラウザのウィンドウ内に適宜表示する。
【００６６】
ただし、他の実施形態では、リモート・コンピュータはユーザ・インタフェース・パネルの記述を変換してから、クライアント・コンピュータに記述を送る場合があることに注意されたい。たとえば、ユーザ・インタフェース・パネルをリモート・コンピュータにバイナリ形式で格納することができるが、テキスト形式、たとえばマークアップ言語記述に変換することができ、クライアント・コンピュータはこれを処理する動作を行ってパネルを適宜表示できる。このような実施形態では、異なる種類の表示デバイス、たとえばさまざまな種類の無線デバイスに内蔵される小型スクリーンを備えるクライアント・コンピュータが特定の表示デバイスの機能に応じて、ユーザ・インタフェース・パネル記述を異なる形で容易に解釈し表示できるようにすると便利である。
【００６７】
ステップ４６０で、ユーザのクライアント・ソフトウェアはリモート・コンピュータからデータ更新を受け取り、それに従ってユーザ・インタフェース・パネルの表示を更新することができる。たとえば、上述のように、グラフィカル・プログラムはライブ・データ・ソースからのデータの測定に関連付けることができ、また常時または定期的にユーザ・インタフェース・パネルにライブ・データを表示する動作が可能である。さまざまなデータ・プロトコルをデータ更新の転送および表示に使用できる。
【００６８】
ステップ４６０についての上の説明は、クライアント・コンピュータに表示されるユーザ・インタフェース・パネルをパネルに表示される実際のデータから「分離する」実施形態に関係している。つまり、クライアント・コンピュータはそれ自体パネル記述とは独立にユーザ・インタフェース・パネルに表示するデータを受け取ることができ、またデータに応じてパネルの表示を更新し、遠隔のグラフィカル・プログラムの出力を反映させることができる。他の実施形態としては、プログラム出力をパネル記述と結合するものもある。たとえば、パネル記述は、プログラム出力を反映する画像として受け取ることができる。そこで、データ更新を受け取るときに、クライアント・コンピュータはユーザ・インタフェース・パネルの更新された記述を受け取り、更新されたパネルを再表示することができる。
【００６９】
ステップ４６２で、ユーザはユーザ・インタフェース・パネルを、たとえばＧＵＩスタイルの「ポイントしてクリックする」方法で操作することができる。ユーザのクライアント・ソフトウェアは、このＧＵＩ操作をリモート・コンピュータ８６へ仲介する。たとえば、上述のように、ユーザのクライアント・ソフトウェアはサーバ側のエージェントと通信し、コマンドを遠隔のグラフィカル・プログラムに転送することができる。その後、その結果に応じて遠隔のグラフィカル・プログラムはコマンドに応答する。多くの場合、ステップ４６２のユーザのコマンドを使用すると、グラフィカル・プログラムはその出力表示を変更するため、出力表示はユーザのディスプレイ画面に反映される。つまり、ユーザがクライアント・コンピュータ８２に表示されるユーザ・インタフェースでの入力を操作することに応答して、ユーザ入力はサーバ・コンピュータ８６で実行されているグラフィカル・プログラムに送られるため、グラフィカル・プログラムの表示される出力に影響を及ぼすことがある。表示された出力は、サーバ・コンピュータ８６に送られ、クライアント・コンピュータ８２に表示されるユーザ・インタフェースに表示される。その後、ユーザは他の入力をグラフィカル・ユーザ・インタフェースなどに送ることができる。ステップ４６０および４６２は、反復して実行することができる。
【００７０】
データソケット
他の実施形態では、米国特許第０９／１８５１６１号で開示されているデータソケットのシステムと方法を使用して、ユーザのクライアント・ソフトウェアとグラフィカル・プログラムが実行されているリモート・コンピュータとの間の通信を簡単に行えるようにできる。データソケット・システムはクライアント・ソフトウェア・コンポーネントを備える。ＵＲＬを使用して世界中のあらゆる場所のＷｅｂページのアドレス指定を行うのと同じような方法で、クライアント・ソフトウェア・コンポーネントは、ＵＲＬを使用してデータ・ソース／ターゲットのアドレスを指定する。入力ソースから読み取るときに、データソケットは、さまざまな入力ソースから生データを読み取り、データを構文解析して、ユーザのアプリケーションで直接使用可能な形式で戻す。たとえば、本発明の実施形態の一実施形態に関して、データソケットを使用して、遠隔のグラフィカル・プログラムのユーザ・インタフェース・パネルの記述を受け取り、この記述を、たとえば、動作可能なＷｅｂブラウザ・プラグインに仲介し、Ｗｅｂブラウザのウィンドウ内にユーザ・インタフェース・パネルを表示できる。ユーザ・インタフェース・パネルが表示されたら、データソケットは遠隔のグラフィカル・プログラムからデータ更新を受け取ることができる。これはユーザ・インタフェース・パネルに表示される。
【００７１】
出力ターゲットに書き込むと、データソケットはユーザによって提供されるデータを特定のターゲットに適切な生データ形式に変換するのに必要なすべての作業を実行する。たとえば、本発明の一実施形態に関して、データソケットはユーザの入力コマンドを適切な形式に整え、遠隔のグラフィカル・プログラムに送ることができる。データソケットのシステムと方法の詳細については、上記の特許出願を参照されたい。
【００７２】
遠隔のグラフィカル・プログラムのブロック・ダイアグラムの受取
一実施形態では、ユーザはさらに、遠隔のグラフィカル・プログラムのブロック・ダイアグラムを要求し受け取ることもできる。ブロック・ダイアグラムは、単純な非対話的画像として表示することができ、たとえば、グラフィカル・プログラムの実装方法をユーザに理解させるために使用できる。たとえば、遠隔のグラフィカル・プログラムを、グラフィカル・プログラムをプログラムで編集する機能を備えるグラフィカル・プログラミング環境内で実行する。そこで、ユーザはブロック・ダイアグラムの表から得た情報を使用して、グラフィカル・プログラムを遠隔から編集することができる。グラフィカル・プログラムの動的作成または編集の詳細については、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｐｒｏｇｒａｍｍａｔｉｃａｌｌｙ  Ｃｒｅａｔｉｎｇ  ａ  Ｇｒａｐｈｉｃａｌ  Ｐｒｏｇｒａｍ」という表題の上述の特許出願第０９／５１８４９２号を参照されたい。
【００７３】
他の実施形態では、クライアント・コンピュータは実際のブロック・ダイアグラムを受け取って表示することができ、それにより、ユーザはクライアント・コンピュータを使用してブロック・ダイアグラムを表示し編集することができる。その後、クライアント・コンピュータのユーザは、編集されたブロック・ダイアグラムをサーバ・コンピュータに転送して返す。
【００７４】
他の実施形態では、ユーザは、グラフィカル・プログラムがリモート・コンピュータで実行されている間に、プログラムのデバッグなどの操作を対話的に実行できる。クライアント・ソフトウェアは、リモート・コンピュータと通信して、ブレーク・ポイントなどのデバッグ情報を指定し、ブレーク・ポイントから実行を継続するなどのプログラム実行を制御することができる。クライアント・ソフトウェアは、遠隔のグラフィカル・プログラムの動作をさまざまな方法で示す操作が可能であり、たとえば、実行ハイライト表示を使用して、ブロック・ダイアグラムの表示を更新し、リアルタイムの実行またはデータ・フローを示すことなどができる。
【００７５】
図８〜１０−グラフィカル・プログラムの例
図８〜図１０は、本発明のシステムと方法を適用できるグラフィカル・プログラムのいくつかの例を示している。各図は、プログラムおよび関連するユーザ・インタフェース・パネルのブロック図である。上述のように、グラフィカル・プログラムを一方のコンピュータ上で実行しておいて、一人または複数のエンド・ユーザが遠隔地で、異なるコンピュータからグラフィカル・プログラムのユーザ・インタフェース・パネルを表示したり、対話的に操作したりできる。また、エンド・ユーザは、グラフィカル・プログラムのブロック・ダイアグラムを遠隔地で表示かつ／または編集することもできる。各グラフィカル・プログラムの例について以下の段落で簡単に説明する。
【００７６】
図８Ｂに示されているブロック図は、タンク制御アプリケーションをシミュレートするものである。図８Ａの関連するユーザ・インタフェース・パネルは、タンク制御アプリケーションの流入量、レベル、および温度の履歴を表示する。
【００７７】
図９Ｂに示されているブロック図は、ＧＰＩＢ計測器を使用してテスト対象のユニット（ＵＵＴ）に周波数応答テストを実行するアプリケーションをシミュレートするものである。ファンクション・ジェネレータが、正弦波入力をＵＵＴ（この例では帯域通過フィルタ）に供給し、デジタル・マルチメーターでＵＵＴの出力電圧を測定する。
【００７８】
図１０Ｂに示されているブロック図は、温度分析アプリケーションをシミュレートするものである。このプログラムは、シミュレートされた温度を読み取り、所定の範囲を外れていた場合にアラームを発生し、温度履歴の平均値、標準偏差、およびヒストグラムを決定する。
【００７９】
図８〜１０に示されているグラフィカル・プログラムの例は、計装、工業オートメーション、またはプロセス制御アプリケーションを指向している。これらのプログラムのユーザ・インタフェース・パネルは、ハードウェアによる計測器またはコンソールにあるのと似たさまざまなコントロールまたは表示読み取り値を含む。しかし、上述のように、さまざまな分野で仕事をしているプログラム開発者およびエンド・ユーザは、本発明で説明しているシステムと方法を利用し、さまざまなアプリケーションに対応するグラフィカル・プログラムのユーザ・インタフェースを分散表示および／制御することが可能である。
【００８０】
本発明のシステムと方法は好ましい実施形態に関して説明されているが、ここで述べた特定の形態に限定する意図はなく、それどころか、添付の請求項により定められているように本発明の精神と範囲に含めることが妥当である限りそのような代替物、修正物、等価物を対象とすることを意図している。
【図面の簡単な説明】
【図１】  ネットワークを介して第２のコンピュータ・システムに接続されているコンピュータ・システムの図である。
【図２Ａ】  さまざまなＩ／Ｏインタフェース・オプションを備える代表的な計装およびプロセス制御システムの図である。
【図２Ｂ】  さまざまなＩ／Ｏインタフェース・オプションを備える代表的な計装およびプロセス制御システムの図である。
【図３】  図１、２Ａ、および２Ｂのコンピュータ・システムのブロック図である。
【図４】  グラフィカル・プログラムを対話的に作成または編集する一実施形態を説明する流れ図である。
【図５】  ユーザ・インタフェース・パネルとブロック・ダイアグラムを備える単純なグラフィカル・プログラムの図である。
【図６】  ユーザ・インタフェース・パネルとブロック・ダイアグラムを備える単純なグラフィカル・プログラムの図である。
【図７】  遠隔のグラフィカル・プログラムにユーザがアクセスする一実施形態を説明する流れ図である。
【図８】〜【図１０】  グラフィカル・プログラムとその関連するユーザ・インタフェースの例を示す図である。
【図１】
0004982020.tif 000002
【図２Ａ】
0004982020.tif 000003
【図２Ｂ】
0004982020.tif 000004
【図３】
0004982020.tif 000005
【図４】
0004982020.tif 000006
【図７】
0004982020.tif 000007
【図５】
0004982020.tif 000008
【図６】
0004982020.tif 000009
【図８Ａ】
0004982020.tif 000010
【図８Ｂ】
0004982020.tif 000011
【図９Ａ】
0004982020.tif 000012
【図９Ｂ】
0004982020.tif 000013
【図１０Ａ】
0004982020.tif 000014
【図１０Ｂ】
0004982020.tif 000015