(57)【要約】スプレー・コントローラを実施するための方法およびシステムは、コードを処理し解釈するためにオブジェクト指向ソフトウェアコードおよび割込み駆動オペレーティングシステムを用いる。
2004534997.tif 000002
【特許請求の範囲】
【請求項１】
複数のスプレーノズルと、液体供給装置と、処理装置及びメモリを有するスプレー・コントローラと、を備えたスプレー・システムを制御するための割込み駆動システムであって、前記システムは
メモリ内に常駐するアプリケーション・ファイルであって、前記アプリケーション・ファイルは、オブジェクト指向ソフトウェア・プログラムを用いて作成されたファンクション・ブロック表現のバイナリ・バージョンであり、前記ブロック図は、前記スプレー・システムの物理的および論理的特性を表わし、前記ファンクション・ブロック表現を作成するために相互接続されている複数のソフトウェア・オブジェクトを含む、前記アプリケーション・ファイルと、
前記複数のオブジェクト間の通信を可能にし、前記複数のオブジェクト内の少なくとも１つにより送られる、前記スプレー・コントローラによって検出される刺激に対して応答する割込み信号を処理し、前記アプリケーション・ファイルを処理する前記メモリに常駐するランタイム・エンジンと、を備える割込み駆動システム。
【請求項２】
前記複数のソフトウェア・オブジェクトのそれぞれが、対応するコンセプトを表す内部データを有するデータ構造と、方法として実施される外部インターフェースと、を備えた請求項１のシステム。
【請求項３】
前記ファンクション・ブロック表現を作成するために、前記オブジェクト指向ソフトウェア・プログラムが、前記複数のオブジェクトを提供し該オブジェクトを相互接続するファンクション・ブロック・ライブラリにアクセスすることが可能である、請求項１のシステム。
【請求項４】
前記複数のソフトウェア・オブジェクトの少なくともいずれかはデータ入力に応答して出力データを生成することが可能であり、前記ランタイム・エンジンの実行中に前記データが生成される、請求項３のシステム。
【請求項５】
前記複数のソフトウェア・オブジェクトの一つ以上がコマンド入力に応答して動作を引き起こすことが可能である、請求項４のシステム。
【請求項６】
コマンドに割り当てられた固有の基準値に従って、前記ランタイム・エンジンが前記複数のソフトウェア・オブジェクトのうち一つまたは複数の間でコマンドの交換を容易に行うことを可能とし、前記コマンドおよび対応基準値が前記アプリケーション・ファイルで指定される、請求項１のシステム。
【請求項７】
割込み処理をするための命令を有するプログラム可能な・ロジックとオブジェクト指向コードとを用いたスプレー・コントローラの物理的および論理的操作を実行するための方法であって、前記方法は
対応するコンセプトを表す内部データと、方法として実行される外部インターフェースとを有する一つ以上のデータ構造を特定するアプリケーション・ファイルを生成するステップであって、前記データ構造は、前記スプレー・コントローラの物理的および論理的な特性の内の少なくともいずれかに対応する、前記ステップと、
前記アプリケーションで指定された前記一つ以上のデータ構造をプログラム可能なロジック制御装置のメモリに取り込むステップと、
前記一つ以上のデータ構造と前記アプリケーション・ファイル内の関係パラメータを解釈するための命令を有するプログラム可能なロジック制御装置内に位置するランタイム・エンジンを起動するステップと、を含む方法。
【請求項８】
前記生成のためのステップが、前記一つ以上のデータ構造を論理的に相互接続するための命令を処理することができるオブジェクト指向コンフィギュレーション・プログラムにより実行され、ファンクション・ブロック図を作成する、請求項７の方法。
【請求項９】
スプレー・コントローラ上に位置する記憶媒体に取り込まれるアプリケーション・ファイルのコンテンツに従って、前記スプレー・コントローラの操作を可能にする方法であって、前記アプリケーション・ファイルは一つ以上のデータ構造と、前記スプレー・コントローラの物理的および論理的特性を表す関係パラメータを備え、前記システムは動作時間中に生成された割込みに対応することができる、前記方法は
ランタイム・エンジンによる実行のため、前記アプリケーション・ファイルにより指定された前記一つ以上のデータ構造を初期化するステップと、
前記ランタイム・エンジンにより実行される前記一つ以上のデータ構造に対応するファンクション・ブロック・コード設定を実行するステップを含み、前記ファンクション・ブロック・コードには、前記一つ以上のデータ構造と、そのコンポーネントの物理的および論理的特性を表す関係パラメータの処理に応答して、前記スプレー・コントローラの物理的なコンポーネントと対話するための命令が含まれる、前記方法。
【請求項１０】
実行のための前記ステップが、一つのデータ構造から別のデータ構造へとデータを転送するステップを含み、転送された前記データにオブジェクトの前記関係パラメータが含まれる、請求項９の方法
【請求項１１】
前記転送するステップは、転送を要請する前記データ構造により、データの転送元の、データ構造の固有の論理アドレスを指定する工程を含む、請求項１０の方法。
【請求項１２】
前記転送するステップは、前記一つのデータ構造により送られた前記コマンドの有効性を確認する工程を更に含む、請求項１０の方法。
【請求項１３】
前記転送するステップは、前記コマンドを受け取る前記データ構造の前記固有の論理アドレスに従って、前記コマンドを前記一つのデータ構造からコマンドを受け取るように設定された前記データ構造に転送する工程を含む、請求項１０の方法。
【請求項１４】
前記アプリケーション・ファイルで指定された個々のデータ構造は、他のデータ構造から参照される固有の論理アドレスを有する、請求項１０の方法。
【請求項１５】
複数のスプレーノズルと、液体供給システムと、処理装置及びメモリを含み前記複数のスプレーノズルを制御するための出力信号を送るために機能するスプレー・コントローラとを備えたタイプの噴霧装置の制御システムであって、前記システムは
スプレー・システムの特性データを受け取り前記メモリに格納する手段と、
前記複数のスプレーノズルにコマンド信号を送信し、それにより液体の流れを制御する手段と、
ファンクション・ブロック・ライブラリからアクセス可能であり、且つ前記スプレー・システムの所定の物理的および論理的特性を表し、その他の前記オブジェクトを持ち、実行する操作を示すメッセージや送信オブジェクトの状態をやりとりする複数のソフトウェア・オブジェクトを含む、前記スプレー・コントローラの前記メモリ内に位置するアプリケーション・ファイル内にコンパイルされるオブジェクト指向ソフトウェア・プログラムからコンパイルされたアプリケーション・ファイルと、
前記複数のオブジェクト間で通信を可能とし、前記複数のオブジェクトの少なくとも１つにより送られる前記スプレー・コントローラによって検出された刺激に対して応答する割込み信号を処理し、前記アプリケーション・ファイルを処理するための前記スプレー・コントローラの前記メモリ内に常駐するランタイム・エンジン備える噴霧装置の制御システム。
【請求項１６】
コンピュータの実行可能なコンポーネントを有するコンピュータ読み取り可能媒体であって、
スプレー・システムのファンクショナルブロック表現を開発する為のグラフィック・ユーザ・インターフェースを有するオブジェクト指向コンフィギュレーション・プログラムであって、前記ブロック表現は複数のソフトウェア・オブジェクトを備え、前記ソフトウェア・オブジェクトは前記スプレー・システムの前記物理的および論理的特性を表示するために相互接続され、各オブジェクトは、前記スプレー・システムの前記物理的および論理的特性を特徴付けるデータを格納するためにデータ構造として実施される、前記オブジェクト・コンフィギュレーション・プログラムと、
複数の該ソフトウェア・オブジェクトを格納するためのファンクション・ブロック・ライブラリであって、オブジェクトの各々は該コンフィギュレーション・プログラムのユーザにより該ライブラリからアクセスすることができる、前記ファンクション・ブロック・ライブラリと、を備える、コンピュータ読み取り可能媒体。
【請求項１７】
ユーザによる前記ファンクション・ブロック表現の作成の能力を高める前記コンフィギュレーション・プログラムによって、前記特性データが前記複数のソフトウェア・オブジェクトに提供されるデフォルトの特性データのセットを更に備える、請求項１６のコンピュータ読み取り可能な媒体。
【請求項１８】
グラフィカル・ユーザ・インターフェースを有するオブジェクト指向コンフィギュレーション・プログラムを用いてスプレー・システムの論理的および物理的特性を実施する方法において、前記スプレー・システムは複数のスプレーノズル、液体供給装置、処理ユニット及びメモリを有するスプレー・コントローラを含み、前記メモリは、前記コンフィギュレーション・プログラムによって与えられる複数のソフトウェア・オブジェクトの各々に対応するファンクション・ブロック・コードのセットを内部に格納する、前記方法であって、
前記スプレー・システムの前記物理的および論理的特質を特徴付けるデータを格納するためのデータ構造として実施される一つ以上の前記複数のソフトウェア・オブジェクトを、前記グラフィカル・ユーザ・インターフェースによって提供される描画エリア上に配置するステップと、
前記スプレー・システムのファンクション・ブロック表現を作成するため、前記一つ以上のソフトウェア・オブジェクトを相互接続するステップと
前記一つ以上のデータ構造を指定する、前記ファンクション・ブロック表現のバイナリ表現であるアプリケーション・ファイルを生成するステップと、を含む方法。
【請求項１９】
前記配置するステップは、メモリ記憶媒体内に常駐するファンクション・ブロック・ライブラリから前記一つ以上のソフトウェア・オブジェクトを取り込む工程を含む、請求項１８の方法。
【請求項２０】
前記メモリ記憶媒体は、前記コンフィギュレーション・プログラムを実行するコンピュータによりアクセス可能である、請求項１９の方法。
【請求項２１】
前記配置するステップは、前記コンフィギュレーション・プログラムのユーザにより前記一つ以上のソフトウェア・オブジェクト内に特性データを格納する工程を含む、請求項１８の方法。
【請求項２２】
コンフィギュレーション・プログラムを用いてファンクション・ブロック表現を作成するステップであって、前記コンフィグレーション・ウィザードは、前記コンフィグレーション・プログラムのユーザに対して該スプレー・システムの物理的および論理的特性を記述する情報について指示し、前記情報はウィザードにより外挿予測され解釈されて、ユーザによって提供された当該情報に対応するスプレー・システムのファンクション・ブロック表現を生成する、前記ステップを更に備える、請求項１８の方法。
【請求項２３】
コンピュータの実行可能なコンポーネントを有するコンピュータ読み取り可能媒体であって、
複数のスプレーノズル、液体供給装置、処理ユニット及びメモリを有するスプレー・コントローラを含むスプレー・システムのファンクショナルブロック表現を開発する為のグラフィック・ユーザ・インターフェースを有するオブジェクト指向コンフィギュレーション・プログラムであって、前記ブロック表現は、複数のソフトウェア・オブジェクトを備え、前記ソフトウェア・オブジェクトは、前記スプレー・システムの前記物理的および論理的特性を表示するために相互接続され、各オブジェクトは、前記スプレー・システムの前記物理的および論理的特性を特徴付けるデータを格納するためにデータ構造として実施される、前記オブジェクト・コンフィギュレーション・プログラムと、
前記コンフィギュレーション・プログラムのユーザにより前記ライブラリからアクセスすることのできる前記複数のソフトウェア・オブジェクトを格納するためのファンクション・ブロック・ライブラリと、を備えるコンピュータ読み取り可能媒体。
【請求項２４】
ユーザが前記ファンクション・ブロック表現を作成する能力を高める前記コンフィギュレーション・プログラムによって前記複数のソフトウェア・オブジェクトに対して与えられるデフォルト特性データのセットを更に備える、請求項２３のコンピュータ読み取り可能媒体。
【請求項２５】
前記スプレー・システムに常駐するランタイム・エンジンにより解釈し実行するため、前記コンフィギュレーション・プログラムが、前記ブロック表現をバイナリアプリケーション・ファイルに変換し、前記アプリケーション・ファイルが一つ以上のデータ構造と、前記スプレー・コントローラの物理的および論理的特性を表す関係パラメータを備える、請求項２３のコンピュータ読み取り可能媒体。
【請求項２６】
前記ファンクション・ブロック・ライブラリ内に格納された複数の前記ソフトウェア・オブジェクトの少なくともいずれかがデータ入力に応答して出力データを生成することが可能であり、前記データが前記ランタイム・エンジンの動作中に生成される、請求項２３のコンピュータ読み取り可能媒体。
【請求項２７】
該ファンクション・ブロック・ライブラリ内に格納された複数の該ソフトウェア・オブジェクトの少なくともいずれかがコマンド入力を表すデータに応答して該スプレー・コントローラの実行する動作を引き起こすことが可能である、請求項２３のコンピュータ読み取り可能媒体。
【請求項２８】
前記コンフィギュレーション・プログラムにより生成された前記アプリケーション・ファイルを解釈し、実行するための命令を有する、前記スプレー・システム上での実行のためのランタイム・エンジンを更に備える、請求項２３のコンピュータ読み取り可能媒体。
【請求項２９】
前記ランタイム・エンジンが、前記アプリケーション・ファイルで指定された前記スプレー・コントローラの物理的および論理的特性を表す関係パラメータおよび一つ以上の前記複数のデータ構造に対応するファンクション・ブロック・コードの１セットを実行する、請求項２８のコンピュータ読み取り可能媒体。
【請求項３０】
データに割り当てられた固有の基準値に従って、前記ランタイム・エンジンが、一つ以上の前記複数のソフトウェア・オブジェクト間での前記データ交換を容易にし、前記データおよび対応する基準値が前記アプリケーションで指定される、請求項２８のシステム。
【請求項３１】
コマンドに割り当てられた固有の基準値に従って、前記ランタイム・エンジンが、一つ以上の前記複数のソフトウェア・オブジェクト間での前記コマンド交換を容易にし、前記コマンドおよび対応する基準値が前記アプリケーションで指定される、請求項２８のシステム。
【請求項３２】
グラフィカル・ユーザ・インターフェースを有するオブジェクト指向コンフィギュレーション・プログラムを用いてスプレー・システムの論理的および物理的特性を実施する方法において、前記スプレー・システムは複数のスプレーノズル、液体供給装置、処理ユニット及びメモリを有するスプレー・コントローラを含み、前記メモリは、前記コンフィギュレーション・プログラムによってファンクション・ブロック・ダイアグラムから与えられる複数のソフトウェア・オブジェクトの各々に対応するファンクション・ブロック・コードのセットを内部に格納する、前記方法であって、
一つ以上の前記複数のソフトウェア・オブジェクトを前記グラフィカル・ユーザ・インターフェースによって提供される描画エリア上に配置するステップであって、各々の前記オブジェクトは、該スプレー・システムの物理的および論理的特質を特徴付けるデータを格納するためのデータ構造として実行される、前記ステップと、
前記スプレー・システムのファンクション・ブロック表現を作成するため、前記一つ以上のソフトウェア・オブジェクトを相互接続するステップと
前記一つ以上のデータ構造を指定する、前記ファンクション・ブロック表現のバイナリ表現であるアプリケーション・ファイルを生成するステップと、を有する方法。
【請求項３３】
前記配置するステップは、メモリ記憶媒体内に常駐するファンクション・ブロック・ライブラリから前記一つ以上のソフトウェア・オブジェクトを取り込む工程を含む、請求項３２の方法。
【請求項３４】
前記ファンクション・ブロック・ライブラリが複数のソフトウェア・オブジェクトを備え、前記一つ以上のソフトウェア・オブジェクトが複合ファンクション・オブジェクトを表す、請求項３２の方法。
【請求項３５】
前記複合ファンクション・オブジェクトが、前記スプレー・コントローラの特定の物理的および論理的特性を表すために相互接続されたファンクション・オブジェクトのグループから構成されている、請求項３４の方法。
【請求項３６】
前記メモリ記憶媒体が、前記コンフィギュレーション・プログラムを実行するコンピュータによってアクセス可能である、請求項３２の方法。
【請求項３７】
コンフィギュレーション・プログラムを用いてファンクション・ブロック表現を作成するステップであって、前記コンフィグレーション・ウィザードは、前記コンフィグレーション・プログラムのユーザに対して該スプレー・システムの物理的および論理的特性を記述する情報について指示し、前記情報はウィザードにより外挿予測され解釈されて、ユーザによって提供された当該情報に対応するスプレー・システムのファンクション・ブロック表現を生成する、前記ステップを更に備える、請求項３２の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にスプレー制御システムに関し、特に、オブジェクト指向プログラミング技術を用いて実行されるスプレー・システムを制御するためのオペレーティングシステムおよび環境に関する。
【背景技術】
【０００２】
スプレー制御システムは、プラスチック、金属、光学部品に対してペイントやその他のコーティング剤を塗布するなど、様々な用途に用いられている。これらの様々な用途において、コーティング材料を均一な厚さとすることがそれほど重要でない場合は、有用である。そのため、通常のスプレー制御システムは閉ループ制御を用いて、スプレーガンやその他の塗布用具に対して送るコーティング液流および／または液圧を調整する。これらの閉ループ方式は、測定流量および／または圧力と、好適な流量や圧力に対応する設定値との誤差を用いて、負のフィードバックを与え、流量をその設定値に合わせる。これらの制御方式の中では、ＰＩＤ（比例＋積分＋微分方式）制御が一般的である。
【０００３】
また別の用途では、このような制御システムは、農業環境で用いて、穀物、植物、土壌に対し、水や肥料などの液体や薬剤を与える際の調整を行うために用いられる。これらの用途において、該スプレー制御システムを用いることにより、ユーザは好適な植物、温度や土壌密度などの穀物特性を簡単に測定および観察し、散布される液や薬剤の流速や圧力を管理および修正し、植物や穀物の異なる成長や活動レベルに合わせて噴霧の設定を調整することができる。このようなシステムの種々の機能を利用することにより、植物や穀物の生産性を高め、効率を上げることができる。
【０００４】
これらの用途において、該スプレー・コントローラは受け取った入力情報に基づき、数々の論理的操作を実行し、該システムの運転パラメータ全体の監視および制御を行う。例えば、可動性のスプレー・システムの場合、該コントローラは、システム圧力、流速、散布量、および／または対地速度を検出するセンサなどの入力装置から送られる種々の信号を受け取る。これ以外の入力コンポーネントとしては、好適な設定値を入力するためのユーザ・キーパッド、アプリケーションモードや設定を変更するための機能スイッチ、あるいはユーザ入力コマンドや命令を受け取るためのバーコードリーダなどがある。この入力情報に応答して、該スプレー・コントローラは論理的な方法で動作し、フローバルブアクチュエータなどの種々の出力コンポーネントに対して出力信号を送る。
【０００５】
入力や出力コンポーネントおよび装置は互いに対話し、中央処理装置（ＣＰＵ）の制御下で該コントローラの種々の機能を遂行する。該ＣＰＵは、該コンポーネントの対話方法や定義する論理的な命令および／またはアルゴリズムを処理することによって、該スプレー・システム全体の操作を制御する。これらの命令やアルゴリズムは、該コントローラ回路内に常駐するプログラム可能なメモリかまたは該ＣＰＵメモリ内に直接格納される。通常、この命令やアルゴリズムはリレー・ラダー・ロジックやその他の従来のプログラム可能な論理言語を用いて設計される。
【０００６】
これらの、既知のシステムの場合、ユーザが自身の用途に合った特定条件に合わせて該コントローラの制御や操作を変更するには限界がある。すなわち、ユーザは該制御システムの設定値を所望の値に変更することはできるが、該コントローラのメモリ内に格納された命令やアルゴリズムによって定義された、より本質的で論理的な手順に関する操作については直接、変更することはできない。前もってプログラムされたユーザ設定やモードの能力を越えるスプレー条件をユーザが組み込むことは、ほとんどの従来スプレー・コントローラやシステムでは実行不可能である。
【０００７】
該コントローラ・プログラムのコードは、該システムのメーカがユーザの一定条件に合うように変更やカスタマイズすることは可能であるが、このレベルのカスタマイゼーションは、特にカスタマイズするコントローラの数量が少ない時に、ユーザにとって高価なものとなる。さらに、ユーザが既に既存のスプレー・コントローラを所有しており、単に簡単な変更を加えたい場合は、そのコントローラを再プログラミングする費用を負担するか、既存のコントローラを別のものと交換しなければならない。これらの選択肢は不都合で、コストもかかる。
【発明の概要】
【０００８】
本発明は、ユーザの必要に応じて簡単に設計、変更および／または再プログラムすることができるスプレー・コントローラを提供することにより従来の技術の限界を克服する。この方法によれば、ユーザは、特定の使用条件に合うように、該スプレー・コントローラの論理的な操作を変更したり、該コントローラの種々のコンポーネント間の相互作用を変更することができる。さらに本発明は、オブジェクト指向ソフトウェアコードを用いた該スプレー・コントローラの物理的および論理的特性を実行するための方法とシステムに関するものであり、また、該スプレー・システムの種々の操作パラメータを制御するコードを処理および解釈するための命令を含む割込み駆動オペレーティングシステムに関する。
【０００９】
詳細には、複数のソフトウェア・オブジェクトは、コンピュータ上で実行されるコンフィギュレーション・プログラムやアプリケーションによりコンピュータのプログラムメモリ内に常駐するファンクション・ブロック・ソフトウェア・ライブラリからアクセスすることができる。該ソフトウェア・オブジェクトは該スプレー・コントローラの種々の物理的および論理的特性を表すデータ構造として実行される。該コンフィギュレーション・プログラムは複数のオブジェクトと相互接続して、該スプレー・コントローラの所望のファンクション・ブロック表現を作成する。該ファンクション・ブロック表現が作成されると、アプリケーション・ファイルが生成される。ある実施形態において、該アプリケーション・ファイルは該ファンクション・ブロック図のバイナリ表現であり、遠隔転送またはその他の適当な信号チャンネルを介して該コンピュータから該コントローラに転送される。その後、該アプリケーション・ファイルが該コントローラのメモリに読み込まれる。
【００１０】
該コントローラの実行中に、ランタイム・ソフトウェア・エンジンは該アプリケーション・ファイルを解釈および処理する。該ランタイム・エンジンは、コンピュータ内で機能する割込み駆動オペレーティングシステムであり環境である。複数の該データ構造やソフトウェア・オブジェクトの機能を実行するための特定命令を含むファンクション・ブロック・コードもまた該コントローラのメモリ内に格納される。該アプリケーション・ファイル内に指定された個々のデータ構造に対して、該コントローラの指定された物理的および論理的操作を実行するため、該ランタイム・エンジンは対応するファンクション・ブロック・コードのセットを実行する。該ランタイム・エンジンはまた、一意的に指定されたデータ基準および論理的なアドレス位置に従って、種々の該データ構造間でのコマンドやデータの交換を容易にする機能を果たす。この機能により種々の該データ構造、すなわち結果として、該コントローラの種々の該コンポーネントが互いに対話することが可能となる。本発明の一つの機能として、該ランタイム・エンジンは、該スプレー・コントローラの物理的なコンポーネントが検出した刺激に応答して生成される割込みを処理することができる。その結果、該コントローラが外部の事象に対する応答回数（時間）を増やすことができる。
【好適な実施形態の詳細な説明】
【００１１】
本発明はオブジェクト指向プログラミング技術を用いて、電子スプレー・コントローラの物理的および論理的操作を実行するための方法およびシステムに関する。この方法において、本発明はシステムの基礎をなす複雑な物理的および論理的特性についての知識を必要としないで産業用スプレー・コントローラの機能を実行する便利な方法を提供する。
また、本発明は、該スプレー・コントローラの様々な特徴および機構を制御するための割り込み駆動オペレーティングシステムと環境に関する。本明細書に記載の通り、電子スプレー・コントローラは通常、産業用および農業用に用いる流体の適用を制御、自動化するためのシステムに関する。すなわち、本発明は例えば、植物、穀物、潅木、枝葉、小道などに薬剤やその他の材料資源を適用するための制御装置に用いることができる。当業者にとっては、本発明はペイントや樹脂の合成物などを含むその他の液体を用いる上記以外の産業用やその他のタイプのスプレー・コントローラ・システムにも広く用いられることが理解されるであろう。
【００１２】
本明細書に記述の通り、「オブジェクト指向プログラミング」（ＯＯＰ）とは、一般に１セットのオブジェクトに対し操作を行うものとしてプログラムをみなすプログラミングのタイプのことを指す。この操作は個々のオブジェクトの間を行き来するメッセージを用いて実行される。一般にオブジェクト自体が、該スプレー・システムの概念的、あるいは物理的のいずれかのエンティティに対応する。オブジェクトの概念は手続きおよびデータの属性を統合するので、そのデータにアクセスすることができるオペレーションのセット、およびいくつかのプライベートデータの集合ができる。オブジェクトはデータを変数として格納し、手続きまたは方法を実行することによってメッセージに応答する。
【００１３】
したがって、オブジェクトは通常、自立型ソフトウェア要素（エンティティ）と呼ばれ、データとデータを操作するための手続きの両方を含んでいる。オブジェクトの特性は、コントピュータ・プログラマの作成する、固有オブジェクト・クラス、あるいはクラスの階層構造により定義される。該クラスはまた、種々のインターフェースを定義するので、その結果、オブジェクトがインスタンスを生成する時、該オブジェクトが他のオブジェクトとデータ交換を行うことを可能とする。オブジェクトの内部データや機構の知識を必要としないで、オブジェクトへのアクセスを可能にする処理は、データカプセル化として知られている。これによって、オブジェクトは、そのオブジェクトのインターフェースの方法に従って他のオブジェクトと通信することができる。
【００１４】
図１に示した典型的スプレー・コントローラ２０には（例えばハードウエアやファームウェアの論理等により）その主要タスクや手続きを実行するための複数の物理的および論理的特性が含まれる。本発明によれば、少なくともいずれかの物理的および論理的特性を表現するため、複数のソフトウェア・オブジェクトが構成される。これらのソフトウェア・オブジェクトは、コンピュータ３０の保持するアクセス可能な記憶媒体（例えばコアメモリ、ハードディスク等）内に常駐するファンクション・ブロック・ライブラリに格納される。ファンクション・ブロックとも呼ばれる１個または複数の該ソフトウェア・オブジェクトは、好ましくは、ＧＵＩベースのソフトウェア・アプリケーションを用いて該ファンクション・ブロック・ライブラリから取り出され、そして論理的に相互接続されて、該スプレー・コントローラ２０のファンクション・ブロック表示が生成される。そして、通信チャンネル３３を介して該内部コントローラメモリに転送される該ブロック表示からアプリケーション・ファイルが生成される。
【００１５】
一般に、スプレー・コントロール・システム２０は、入力データを提供し、種々の操作パラメータを提供するためのユーザ・インターフェース・パネル２２を備えている。該パネル２２は、材料適用モードや設定を調整する等の複数の入力制御スイッチ２４、ユーザのデータ入力用のキーパッド２６（入力）、ユーザに情報を伝える（出力）ためのデジタル（ＬＣＤ）ディスプレイ２８を備えている。該コントローラ２０はまた、該コントローラ２０とパーソナルコンピュータ（ＰＣ）３０などの外部コンピュータデバイスの間でデータ交換を可能にするシリアルポート、パラレルポート、または赤外線ポートなどのコネクタポート３２を備えている。該コネクタポート３２は一般データ転送インターフェースを提供し、これにより、通信チャンネル３３上でＰＣ３０により該コントローラメモリ（図示しない）からアプリケーションデータやシステムログスプレー・システムに関するその他の情報を容易に取り込むことができる。また該データ転送インターフェース３２により、コントローラの操作に関する実行命令を含むプログラムデータを通信チャンネル３３上でＰＣ３０からダウンロードして、コントローラメモリ内に格納することが可能となる。
【００１６】
該スプレー・コントローラ２０はまた、外部装置と通信を行うためのマルチ入力コネクタ３４、３６を備えている。これらの装置としては、低粘性または高粘性の流体の流速を測定する流量計３８、液体の圧力を検出する圧力センサ４０、およびスプレー濃度を監視する光学センサ４２が含まれる。図１に示すように、装置の各々はコネクタ・ケーブル4４を用いて該スプレー・コントローラと接続される。外部電源またはバッテリ電源４５は該コントローラと接続され、操作中、該コントローラ２０に補助電力または主電力を供給する。
【００１７】
同様に出力装置は出力コネクタ４６、４８とコネクタ・ケーブル５０および５１を介して該コントローラに接続され、液体の出力を制御し調整する。外部出力装置には、アラーム５２またはインジケータ・サイレン／ランプ５４、および圧力調整器５６、スプレーガン６２を動作させる複数のバルブ５８およびリレー６０が含まれる。全般に、該スプレー・コントローラ２０の様々な入力および出力装置は、該コントローラのメモリに格納されている１組のプログラムされた命令に従って互いに対話する。これらの命令はコントローラの回路内に位置し、該スプレー・システムの操作を制御する命令を実行する中央処理装置（ＣＰＵ）により処理される。
【００１８】
当業者にとっては、図１の典型的制御システムは種々の操作特性を発揮するように設計することが可能であることが理解されるであろう。説明のために  以下に該コントロールシステムの操作の全体を示す。ユーザは噴霧する液体の希望の流速および／または圧力を示す設定値を選択する。該スプレーガンが起動すると、容器（図示しない）から供給される液体は、液体の加圧により該スプレーガンのノズル（図示しない）を通って押し出される。液体の流速は流量制御バルブにより制御され、該流量計３８を用いて測定される。測定された流速および検出された圧力はフィードバックとして該コントローラ２０に送られ、選択した設定値と比較される。すると、測定された流速と圧力が設定値に等しくなるように該コントロールバルブの調整が行われる。その後、該スプレーガンが起動し液流が検出されると、これらのデータを用いて選択した設定値について流速の閉ループの調整が行われる。
【００１９】
本発明によれば、該スプレー・コントローラの物理的および論理的操作を実行するコンピュータ実行可能コードを生成するためにＯＯＰ技術が用いられる。このコードは割込み駆動オペレーティングシステムにより解釈され、処理される。
【００２０】
詳細には、該コントローラ２０の操作を管理するために、メモリ１１８から読み込まれ、ＣＰＵ１１６により処理されるプログラムされた命令は、オブジェクト指向ソフトウェアコードにより実行される。すなわち、該コントローラ２０の種々の論理演算および算術演算およびコントローラの物理的コンポーネントの特性は複数のソフトウェア・オブジェクトにより定義される。ある実施形態において、これらのオブジェクトは入力オブジェクト、ファンクション・オブジェクト、出力オブジェクトの３つの主要カテゴリーに分類される。各々のオブジェクトは、物理的入力コンポーネント（例えば、タコメータ、流速計、近接センサ等）や関数またはアルゴリズム（例えば、加算、減算、警報機能、PID調整)、あるいは物理的出力コンポーネント（例えば、ノズル、圧力調整器、ＬＣＤディスプレイ）に対応するソフトウェア表現である。
【００２１】
図２は、本発明によるアプリケーション・プログラムを構築するために用いられるファンクション・ブロック・オブジェクトすなわちソフトウェア・オブジェクト１２０の概念を示す。ソフトウェア・オブジェクト１２０はコントローラの固有の特性に対応するファンクション・ブロック（該コントローラのメモリ内に格納された特殊制御機能）の図形的描写である。より詳細には、個々のソフトウェア・オブジェクトは該コントローラの特定の物理的および論理的コンポーネントを表すデータ構造として実行される。該データ構造１２０はその特徴を定義する異なったタイプのデータを備える。この中には、該コントローラシステム２０のユーザまたは設計時にシステムのメーカにより与えられるデータである内部データ１２２が含まれる。オブジェクトの該内部データは静的データであるため、通常は該データ構造１２０の処理または実行中に変更することはできない。内部データ１２２には、該ソフトウェア・オブジェクト１２０が表す特定のハードウエア・コンポーネントに固有な特性が含まれる。
【００２２】
例として、内部データには、出力コンポーネント（例えば流速計）の物理アドレス、ハードウエア・コンポーネントの入力または出力パラメータの最大／最小値が含まれる。また内部データには、コンポーネントやコントローラの適正な操作のために必要なアプリケーションに固有の命令やアルゴリズムも含まれる。例えばアクチュエータの動作を調整し制御するため、スケーリング機能、線形化要素、または電力調整機能も該内部データ１２２に格納することもできる。アルゴリズム、複数命令セット、データテーブル、論理アドレス・ロケーション等のほぼすべてのデータを、特定のソフトウェア・オブジェクトに関連する内部データ１２２として格納することができる。
【００２３】
またデータ構造１２０は1本または複数の入力線１２４および出力線１２６を備える。これらの線はデータやコマンドを受信および/または送信するためのファンクション・ブロック１２０の主要外部インターフェースポイントである。これらのデータ線１２８は該オブジェクトの内部操作のために必要なデータを受信し，その実行の結果、該データ出力１３０は該オブジェクトにより生成された出力を生ずる。同様に、コマンド入力１３２とコマンド出力１３４により、それぞれ、コマンドが受信され、ソフトウェア・オブジェクトにより事象が引き起こされる。該線１２４および１２６により、コマンドおよびデータがデータ構造１２０に格納され、その後、該データ構造１２０から取り出される。
【００２４】
図２に示すように、該内部データ１２２は該入力データ１２４とは明らかに異なる。該内部データ１２２は、該入力データ１２６と異なり、通常は変更することができない。該内部データには該コントローラの操作に特有の情報が含まれるため、変更が不可能である。一方、入力データ１２６は、該コンピュータ３０によりアクセス可能な一つまたは複数のデータベースなどから、あるいはキーボード３５を介したユーザの直接入力の結果など、様々な方法で受け取られるデータを表す。そのため、該入力データ１２４は簡単に修正、変更することが可能で、対応する該出力１２６に影響を及ぼす。このように、個々のファンクション・ブロック・オブジェクト１２０は、内部データやアルゴリズムを隠した状態で、該コントローラの制御機能にアクセスための明確に定義されたインターフェースを提供し、それにより、該コントローラのための制御プログラムを設計することに関わる煩雑さを効率的に解消する。本発明の態様については、以下の詳細な記述の中でさらに詳細に記述する。以下の段落では、該コントローラの物理的および論理的特性を実行し、プログラミングするために用いる種々の該ソフトウェア・オブジェクトやファンクション・ブロック・オブジェクトについて詳述する。
【００２５】
産業用スプレー・システムを特徴付ける要素として、スプレーノズル、バルブ、時間機能を含む多くの論理機能や物理的なコンポーネントを用いることができる。一般に産業用スプレー・システムに用いられるコンポーネントの一例として、比例、積分、微分（ＰＩＤ）方式のレギュレータがある。高機能の自動制御を行うため、ＰＩＤレギュレータは種々の用法のフィードバック・システムの中で広く用いられている。同期および非同期制御システムのどちらのシステムにおいても、システムの円滑な操作や正確さや相対的安定性は望ましい制御特性である。指定されたターゲットに対して材料資源を正確に適用することが望まれるスプレー・コントロール・システムの場合はこの点が特に重要である。このようなレベルの制御を可能にするため、ＰＩＤレギュレータには比例制御係数Ｐが含まれ、それにより異なる周波数で該システムの一定利得制御を行うことが可能となる。また定常性能を改善するために積分制御Ｉと該システムの過渡特性を高めるための微分制御Ｄが含まれる。ＰＩＤレギュレータは、以下に示す数学的制御に基づき機能する単なる物理的なコンポーネントである。
Ｄ（ｓ）＝  Ｋ＊［１+１／ＴＩｓ+ＴＤｓ］
Ｄ（ｓ）＝ＰＩＤコントローラの特性伝達関数
Ｋ＝ゲイン定数
ＴＩ＝積分時間またはリセット時間
ＴＤ＝微分時間
ＰＩＤレギュレータの動作を定義するには、許容範囲の性能を達成するように、単に定数Ｋ、ＴＩ、ＴＤを調整するだけでよい。
【００２６】
ＰＩＤ制御は産業用コントロールシステム業界にとって特に関心の深い問題であるが、リレー・ラダー・ロジック（ＲＬＬ）などの伝統的コントロール・システム・プログラミング言語ではＰＩＤ制御を行うための使い易い方法は提供できない。実際、これ以外にも時間や振幅スケーリング、進み補償や遅れ補償、スミス（Ｓｍｉｔｈ）チューニング、および／またはジーグラ・ニコルス（Ｚｉｅｇｌｅｒ  Ｎｉｃｈｏｌｓ）関数などの複雑で反復的な数学的制御関数があり、これらもまた、従来型言語を用いてプログラムすることは容易なことではない。例えばＲＬＬを用いてコントローラのプログラミングを行うには、設計者がこれらの関数をラダー設計に合わせる必要がある。習熟したＲＬＬプログラマにとってはこれを行うことは確かに可能ではあるが、時間とエネルギーを要し、設計の生産性は低くなる。一方、本発明によれば、これらの複雑な関数は、複数のソフトウェア・オブジェクトとして容易に実行可能である。例えば、ＰＩＤレギュレータ１４０のソフトウェアの概要を図３（ａ）および３（ｃ）に図示する。
【００２７】
簡略化した通常のＰＩＤレギュレータのファンクション・ブロックは、アナログ出力信号（アナログ出力）または変調されたデジタルパルス幅信号（ＰＷＭ出力）により処理を制御する。この機能を遂行するため、該ＰＩＤファンクション・ブロックは、入力スケーリング範囲を用いて受信した入力値（処理出力など）や目標値（処理設定値）をスケーリングする。出力は出力範囲に基づきスケーリングされる。
【００２８】
該ＰＩＤファンクション・ブロックはまた種々の障害（エラー）動作や検出機能も実行する。例えば、ある実施例では、処理出力が設定済み収束時間内で設定値に収束しない場合は、障害信号が生成される。図３（ｃ）に全体を示すように、このブロックはまた、比例（Ｂ係数）や微分（Ｃ係数）設定値・ウェイティング（重み付け）、フィードフォワードやトラッキングなどの高度ＰＩＤ機能も実行することができる。さらに、フロー制御を行うために、このブロックは、出力制御信号を一定の値に保持するために抑止入力（調整）を受け取ることもできる。このことにより、スプレーガンがスプレーを行っていない場合において、圧力（アナログ出力）が上昇するのを防ぐ。この例の場合、フローセンサが処理入力として用いられる。さらに設定された時間ベースに基づきＰＩＤブロックが機能することもできる。
【００２９】
ＰＩＤファンクション・ブロック・オブジェクト１４０（データ構造）は、フロー制御調整のための比例（Ｐ）１４２、積分（Ｉ）１４３、および微分（Ｄ）１４４制御率を含むデータを受信するためのマルチ入力端子１４１を備えている。その他の入力としては、基準入力値１４５、入力を調整する目標（所望）値１４６、入力値範囲１４７、収束時間入力１４８が含まれる。処理出力が所定の（収束）時間で所定の設定値に収束しない場合は、該収束時間に基づき障害信号１４９が生成される。また別の特質として、感度レベルを変更するため、該障害信号は所定の最大値１５０に設定することができる。さらに比例（Ｂ係数）１５１、微分（Ｃ係数）１５２、設定値・ウェイティング、フィードフォワード１５３およびトラッキング１５４などの高度ＰＩＤ機能も好適に備えることができる。
【００３０】
特にフローを制御するために、該ＰＩＤは一時的に制御信号を一定のレベルに保持するために用いる抑止入力（調整）１６４を有する。これにより、接続はされているが機能していないスプレーガンなどの出力装置を調整するためにＰＩＤが用いられる場合に（例えば、アナログ出力範囲１６９を操作することにより）、圧力すなわちアナログ出力１６５が上昇するのを防ぐことができる。設定した時間をタイムベースとして用いてレギュレータを動作させる確定期間設定１６７の機能も備えられている。該ＰＩＤレギュレータ・オブジェクトにはまた、デジタル信号制御を行うためのＰＷＭ（パルス幅変調）出力１６８も備える。さらに該ＰＩＤレギュレータには、出力値の論理アドレス情報や特別な制御オプションなどを含む内部データ１２２も含まれる。
【００３１】
設計により、該ＰＩＤレギュレータ・オブジェクト１４０は上記に図示のＰＩＤ数学関数を実行するための（例えばＫ、ＴＩ、ＴＤ値を変更するための）好適なプログラミング・インターフェースを備えている。このようにして、関数自体の複雑さがユーザから隠されて、該コントローラ２０内でＰＩＤ調整を実行するために必要とされる時間と技術を最小限とすることができる。実行する必要があるのは図３（ａ）で示した該ＰＩＤレギュレータの実行のみである。実際、該ＰＩＤレギュレータ・オブジェクトと、該コントローラの種々の側面を表す該ソフトウェア・オブジェクトはすべて、所定の用途に適するように設計することができる。
【００３２】
図３（ｂ）と３（ｄ）は、スプレー・コントローラ２０内で通常、用いられるコンポーネントに対応する別のソフトウェア・オブジェクト１７２、すなわちスプレーガン６２または平行関係に配置された複数のスプレーガンの概要を示す。該スプレーガン６２は、主要機構として、水、ペイント、あるいは肥料などの材料資源を、対象とするターゲット（例えば塗装する表面）に対して噴霧するために機能する。通常、スプレーガンは複数のノズル、バルブ、圧力レギュレータを備え、これらが相互作用して正確なスプレー能力を発揮する。該スプレーガンのファンクション・ブロックの目的は、該スプレーガン（または平行に配置された複数のガン）を駆動する種々の出力のタイミング制御操作を行うことである。この機能を行うために、通常、以下のアクチュエータの制御を行う。（１）シリンダ出力などにより噴霧を開始、または停止するためのガンの開／閉制御、もしくは電動ガンの場合は、ＰＷＭブリッジ出力を介してガンにより適用される液体流速を変化するためにクィックｏｎ−ｏｆｆ制御を含むＰＷＭ信号を用いることができる。（２）アンチシペイタ（先行機能）またはフォロア（後続機能）などによる空気を細分化するための開閉制御、および（３）第２アンチシペイタまたはフォロア出力などによるファン・エアのための開閉制御。本発明によれば、該スプレーガンのファンクション・ブロックはこれらの出力に関する種々のタイミング処理を行う。該スプレーガン・ブロック自体には、一例として、ＰＷＭブリッジ出力のためのハードウエア仕様が含まれる。必要に応じて、その他のデジタル出力を該スプレーガン・ブロックに接続することが可能であり、その場合、好適な実施例において、該スプレーガン・ブロックには、この目的のため、１つもしくは複数の専用コマンド出力が含まれる。目標流速および最大目標流速入力パラメータに基づき、該スプレーガン・ファンクション・ブロックが必要なＰＷＭ負荷サイクルを計算する。
【００３３】
要約すると、該スプレーガン・ファンクション・ブロックはタイミング情報に基づき該スプレーガンのスイッチｏｎ−ｏｆｆの切り替え機能を行う。詳細には、該スプレーガン・ファンクション・ブロックは、図３（ａ）に示すように、該コマンド制御入力で受け取った種々のコマンドに基づきガンの噴霧を開始および停止する。このタイミングは、開始または停止コマンドを受け取る瞬間と関係する。遅延スプレーコマンドを受け取ると、内部タイマを用いて遅延が生成される。
【００３４】
タイミング情報に基づくスイッチ切り替え操作に加えて、該スプレーガン・ファンクション・ブロックは、距離情報に基づき、該スプレーガンのスイッチｏｎ−ｏｆｆ切り替えを行うことも可能である。この場合、該スプレーガン・ファンクション・ブロックは該コマンド制御入力で受け取るコマンドに基づき、ガンの噴霧の起動、停止を行う。この場合のタイミングは開始または停止コマンドを受け取る瞬間と関係する。遅延噴霧コマンドを受け取ると、タックタイマが起動し、距離遅延を生成する。タイミング基準としては、周波数入力（ＴＡＣＨＹ）が用いられる。この場合、タイミングはミリ秒単位でなく、周波数入力によるパルス数で表される。該スプレーガン・ファンクション・ブロックは、パルス幅変調（ＰＷＭ）ガン出力を処理する負荷サイクルを実行する。これを行うために、該スプレーガン・ファンクション・ブロックは、目標流速、最大流速、最小負荷サイクル、最大負荷サイクル、周波数入力を用いて、該ガンに対しＰＷＭ出力を駆動するために、好適の負荷サイクルおよび周波数を算定する。
【００３５】
該スプレーガン制御ブロックは、ファンのエア出力で噴霧を行うためアンチシペイタ（先行）フォロア（後続）ｏｎ−ｏｆｆタイミングを実行する。すなわち、該スプレーガン・ファンクション・ブロックはアンチシペイタ遅延パラメータＴａとフォロア遅延Ｔｆ入力を用い、適正なタイミング情報に基づいて２つ以上のアンチシペイタ、フォロア出力を駆動する。言い換えれば、実際のガンのスイッチがｏｎになる前に出力がｏｎになり（遅延Ｔａにより）、ガンのスイッチがｏｆｆになった後に出力がｏｆｆになる（遅延Ｔｆ  により）。
【００３６】
該スプレーガン・ファンクション・ブロックはまた、ハードウエアブリッジ障害、ｏｎ−ｏｆｆフィードバック障害などのハードウエア障害チェックを行う。これらの機能を遂行するために、該スプレーガン・ブロックは、システム内の短絡、過負荷状態などを含む、この分野に習熟したものにとっては必要と思われる項目のチェックを行い、ＰＷＭドライバ回路内のハードウエア障害をチェックする。該スプレーガン・ブロックはスクリーンに障害メッセージを表示させるために用いるコマンドを生成する。さらにｏｎ−ｏｆｆフィードバック障害も検出することができる。図３（ｄ）に示すように、スイッチ入力およびスイッチ時間を用いて、該スプレーガンによりスイッチ障害がチェックされる。該スプレーガンがパラメータ「スイッチ時間」により指定された時間許容範囲内で実際に噴霧を行っている場合に、この入力は有効である。該スイッチ入力は、該スプレーガンを通る流れの存在を検出するフロー検出センサと接続する。バルブガン開障害は「バルブガン開入力」と「バルブガン開時間」を用いて該スプレーガン・ファンクション・ブロックによりチェックされる。これらの入力は通常、入力値「バルブガン開時間」により指定された時間許容範囲内において、該スプレーガンで該ＰＷＭ信号の後に続く。
【００３７】
図３（ｂ）に図示した該スプレーガン・ファンクション・ブロックを実際に実行するために、そのブロックを多次元テーブル・ファンクション・ブロックによりカスケードする。このブロックは種々の計算を行い、噴霧エア圧力で測定した液体に基づきスプレーノズルの最大流速を決定する。この機能を実行するため、該多次元テーブル・ファンクション・ブロックは多次元テーブルを含み、所定のアルゴリズムにより補間方法を実行する。例として、該補間アルゴリズムは以下の既知のアルゴリズム、（１）直線補間、（２）「低いほうの値をとる」方式、（３）「高いほうの値をとる」方式、（４）二次補間、（５）逆二次補間、（６）「テーブル内の複数点による多項式（ｐｏｌｎｏｍｅ）」補間、および（７）「３点による二次の多項式」補間のうち一つを用いることができる。好適な実施形態において、異なる次元の性能データテーブルを必要とする場合は、異なる補間法を用いることができる。このように例えば、空気圧変動には直線補間を、また場合によっては液圧変動には二次補間を用いることができる。以下のテーブルＩは、多次元テーブル・ファンクション・ブロックによりアクセスされるスプレーノズルに関する性能データの典型的な例を示す。
テーブルＩ
前記例において、液体容量（L／時）は液圧と噴霧エア圧により決定される。該多次元テーブル・ブロックにおいては不完全なテーブル値が許される。（前記テーブルにおいては０．７バールの液圧で３点が存在し、一方１．５の液圧で７点が存在する）。上述の通り、該多次元テーブルは測定した液および噴霧エア圧力に基づきスプレーノズルの最大流速を計算するために用いられる。そして該スプレーガン・オブジェクトは、流速設定値と併せてこの最大流速値を用いて、該ガンの負荷サイクル出力を設定する。実際に適用する流速は該スプレーガン・ファンクション・ブロックにより提供され、ディスプレイ上に表示される。
【００３８】
該多次元テーブルの別の重要な用途として、ノズルの性能チェックがある。上記例において、流速は空圧で測定した液体に基づき計算される。その後、該システムのフローセンサを用いて実際の流速が計算されると、計算した流速を測定した流速と比較し、その差が所定の値を超えると、それが表示される。
【００３９】
図３（ｄ）に示すように、該スプレーガン・オブジェクトすなわちブロック１７２は制御入力１７１、アンチシペイタ（先行）時間１７６、フォロア（後続）時間１７７を含む複数の入力端子１７３を備えている。該先行時間と後続時間および時間遅延１８７や自動スタート１８５入力により、タイミング制御に関するデータがデータ構造に格納される。またタイミングはタコメータ入力１８６、距離遅延入力１８８、および最大タコメータ速度１８９の入力に従って外部時間ベースにより設定することもできる。これらの種々のタイミング入力は２つの出力、先行／後続出力１９０、シリンダ出力１９１また状況に応じて、所定の物理的アドレス１７５に対応するパルス幅変調（ＰＷＭ）出力に影響を及ぼす。さらにこれらの中には、該スプレーガンの動力の使用を制御するために必要な入力も含まれる。例えば負荷サイクルは負荷サイクル入力１７４と負荷サイクル１７８の範囲により手動で制御することも可能であり、あるいは所定の周波数１８０における最大流速１８３データと目標値１７５を用いて自動で制御することもできる。
【００４０】
該スプレーガン・オブジェクト１７２のその他の出力パラメータとしては、ガンｏｎ−ｏｆｆ出力１９２、該スプレー・コントローラの動作または状態を示す状態出力１９９がある。さらにスプレー処理内での障害を検出するための３つの異なるシステムも設けられている。これらはブリッジ障害１９４、スイッチ障害１９５、バルブ／ガン開障害１９６である。
【００４１】
該障害システム出力は所定の論理的な条件に従って動作する。例えば、該ハードウエアがパルス幅変調出力で短絡（例えば物理的なアドレス１９５に位置するＰＷＭ出力に対応する、あるいは接続された圧力レギュレータに対する）を検出すると、ブリッジ障害１９４が生成される。また該システムはスイッチ入力１８１とスイッチ時間データ入力１８２を用い、スイッチ障害出力に関する障害を生成する。該スイッチ入力が設定スイッチ時間１８２内で該タイミングや該パルス幅生成信号に従わない場合は、前期の状態が発生し、障害１９５が生成される。該システムはまた、バルブ／ガン開入力１８３とバルブ／ガン開時間データ入力１８４が一定の状態を示すと、バルブ／ガン開障害出力１９６を生成する。このような障害１９６は、バルブ／ガン開入力１８３が設定バルブ／ガン開時間１８４内で該タイミングに従わない場合に生成される場合もある。
【００４２】
本発明によれば、前記の論理的な条件は必ずしも該スプレー・コントローラの設計者により直接プログラムされる必要はなく、また従来型の制御システムプログラミング言語を用いてプログラムする必要もない。その論理条件自体は該コントローラのプログラミング作業を簡単にするため、ユーザから隠されている。これらの論理的なシナリオ（手順）を記述するために、物理的アドレス情報やその他の特殊制御オプションを含む内部データ１２２を設定することができる。スプレーガン・オブジェクト１７２を単一とすることにより、複数のコード行や複数のノズルや圧力レギュレータなどを組み立てることなく、ユーザは所望のアプリケータ特性をすばやくプログラムすることができる。ユーザがなすべきことはただ、該データ構造に、該当する入力データを入力するだけである。
【００４３】
図３（ａ）に示す該ＰＩＤレギュレータ・オブジェクト１４０と図３（ｂ）に示す該スプレーガン・オブジェクトは該スプレー・コントローラ２０を実行するために用いられるオブジェクトの２つの例である。もちろん、これ以外に多くのソフトウェア・オブジェクトを用いて該スプレー・コントローラ２０を設計することも可能である。これらのソフトウェア・オブジェクトの中にはパラメータ・オブジェクト、デジタルおよびアナログ入力／出力オブジェクト、周波数入力、テーブル、タイミング・ファンクション、メニューライン・ファンクション、スイッチ、その他の機能的、物理的なコンポーネントが含まれるが、これらに限るものではない。詳細には、該スプレー・システムの物理的および論理的特性の数と同数のソフトウェア・オブジェクトが存在する。当業者にとっては、該ソフトウェア・オブジェクトの色々な実施のパターンが可能であり、本書に示したオブジェクトは本発明の範囲を限定するものとして用いられているのではないという点は理解されるものであろう。該オブジェクトはデータ構造として実施されるため、異なる使用目的や特定のユーザの必要に応じて変更することが容易である。
【００４４】
これまで該システムの物理的および論理的特性を図式的にプログラムで表す複数の該ソフトウェア・オブジェクトに関する本発明の説明をした。これらのオブジェクトを用いる該システムの特徴付けを行うため、オブジェクト指向ソフトウェア・プログラムを用い、該コントローラの意図する好適の機能に合わせて、複数のソフトウェア・オブジェクトを相互に接続する。この場合、該オブジェクトは該コントローラによるこの特徴付けに基づき実行される。本発明のこの側面は以下においてさらに説明する。
【００４５】
該システムを構成する複数の該オブジェクトの機能的相互作用（対話）を確実にするため、図４に示すように、該ソフトウェア・オブジェクトはコンフィグレーション・プログラム２００を用いて相互接続される。ある実施形態において、該コンフィグレーション・プログラムはオブジェクト指向アプリケーションであり、このオブジェクト指向アプリケーションは、該コンピュータ３０上で実行し、該コンピュータの該メモリ内、またはその他の記憶媒体に常駐するファンクション・ブロック・ライブラリから複数の該ソフトウェア・オブジェクトにアクセスする機能を有する。該コンフィギュレーション・プログラム２００は、複数ページに渡ることができるドローイング・ボード２０２を有するグラフィカル・ユーザ・インターフェース（ＧＵＩ）を備えている。これらのページは図４に示すタブ２０３などのタブによりアクセスされる。該コンフィギュレーション・プログラムもまた、様々なタイプのファンクション・オブジェクト２０４を選択するためのツールバーやパレットおよび入力オブジェクト２０６、出力オブジェクト２０８、アプリケーション管理のための基本メニューアイテム２１０を表示する。さらに追加的便宜のために、これらの種々のツールバー、パレットおよびコントロールはマウス装置、スクロールボール、タッチパッドやキーボードに付いている標準ファンクションキーを用いて動作させることができる。該コンフィギュレーション・プログラムを実行するには、適正なＡＰＩ（アプリケーション・プログラミング・インタフェース）を持つコンピュータ・オペレーティングシステムや、ユーザ入力コマンド（例えばマウスやキーボード入力）を処理し、画像をコンピュータのディスプレイ・スクリーンに表示させるためのファンクションコールが好適に用いられる。
【００４６】
ソフトウェア・オブジェクトを選択し、それを該ドローイング・ボード２０２上に配置し、コネクタ線２１２を用いて論理的に相互接続し、該コントローラ２０のファンクション・ブロック表現２１８を生成する。マイクロソフト・ウィンドウズのオペレーティングシステム内の線描画機能などを呼び出して、コネクタ線２１２を、接続されたオブジェクトの1つまたは複数の入力／出力線１２４／１２６の間に伸ばす。これによりディスプレイ上に描画線を作成し、該マウスや類似のカーソル配置機構を用いて、該ドローイング・ボード上で適当にこの線の延長や、調整を行うことができる。
【００４７】
該ファンクション・ブロック表現２１８は複数の集積回路が信号線により互いに接続されて表されている回路図と類似している。該コントローラシステムは描画で表されているため、該コンフィギュレーション・プログラムのユーザは、プログラミングの経験無しで、該コントローラ２０の機能を実行することができる。ユーザが必要とするのは該コンピュータ・ハードウエアの機能の基礎的知識と実行する処理の理解のみである。ラダーロジックなどの従来のプログラミング手法と異なり、実行する複雑な操作をユーザが明らかにプログラムする必要はない。該ファンクション・ブロック・ライブラリから該コンフィギュレーション・プログラムに提供される複数の該オブジェクトには、これらの操作を実行するための内部機構が含まれている。これにより実施可能なスプレー制御プログラムを生成するのに必要な時間をさらに減少することができる。
【００４８】
ユーザによる該コントローラのプログラミングの可能性をさらに高めるために、該コンフィギュレーション・プログラム２００は共通のユーザタスクを行うための種々の図像的制御２４０を備えている。この中には、既存のあるいは格納したファンクション・ブロック表現を開いたり（２４２）、該ＰＣ３０と該コントローラ２０の間でファイルをエクスポート２４４したり、インポート２４６したり、生成した表現を格納２４８し、ファイルの内容を再生する（２５０）ための種々のボタン／制御手段が含まれる。該コンフィギュレーション・プログラムのまた別の重要な特徴として、各々のオブジェクトに入力として送られるデータを分析するデータ・バリデーション・コントロール２５２がある。この特徴により、無効なデータや命令やコマンド入力をすぐに特定することにより、スプレー・コントローラのプログラムのデバッグや作成をするための時間が短縮される。該バリデーション・コントロール機能については図５を参照してさらに詳述する。
【００４９】
図５はスプレーガン・オブジェクト１７２用のユーザ入力を受け取るためのディスプレイ・ウィンドウ２６０を示す。該ディスプレイ・ウィンドウ２６０に図示された該線２６２およびデータフィールド２６４の各々は、1つまたは複数のスプレーガン・オブジェクト入力端子１７３に対応する（図３（ｂ）参照）。例えば、線２  ２６３とデータ入力フィールド２６５は、該スプレーガン・オブジェクト１７２の該適用レート入力端子１７５に対応する。ユーザは対応する該データフィールド２６４に各入力データを入力する。該バリデーション・コントロール２５２が起動すると、該コンフィギュレーション・プログラム２００が入力されたデータを分析し、無効な入力があれば拒否する。その後、該コンフィギュレーション・プログラム２００は自動的に、あるいは随意的にデフォルト値を指定し、該コンフィギュレーション・プログラムのユーザに対して必要な変更について指示する。またこの特徴は設計処理を行う間、ユーザを指導し、該コンフィギュレーション・プログラムの使いやすくする。
【００５０】
図６（ａ）では、図４に図示した該ドローイング・ボード２０２上に示した該ファンクション・ブロック表現２１８をさらに詳細に示す。個々の該ソフトウェア・オブジェクトは、送信線２２０（例えば出力）から受信線２２２（例えば入力）までコネクタ線２１２を伸ばすことにより相互接続される。線は相互接続されたオブジェクトの間でデータやコマンドを交換するためのオブジェクトの主要結合点であり、具体的には、オブジェクトのインターフェースの設計により定義される。先に述べたように、個々のオブジェクトは独自のインターフェースによりその内部手続きやデータを他のオブジェクトからアクセス可能としている。オブジェクトが表す物理的および論理的コンポーネントの固有の特性に対応して、ＯＯＰ技術を用いてオブジェクト・インターフェースが生成される。そのため、オブジェクトの入力端子と出力端子の数は表示する物理的および論理的コンポーネントのタイプにより異なる。例えば、オブジェクト２２４は２つの入力端子２２２と２２６から構成される除算を実行するファンクション・オブジェクトである。これらの端子は、各々、被除数と除数データを受け取るための入力として機能する。しかし、図６に示すように、該アナログ入力オブジェクト２２１、ノズル・オブジェクト２２３、パラメータ・オブジェクト２２５はその機能やインターフェースの設計が異なるため、単独の入力端子を備えているだけである。
【００５１】
オブジェクトの固有の特性を定義するため、該コンフィギュレーション・プログラムのユーザが該ファンクション・ブロック表現を生成する間に内部データ１２２が指定される。また別の例では、該スプレー・コントローラのメーカが個々のコンポーネントタイプやアプリケーションの条件により内部データをプリセットする場合もある。この中には、所定オブジェクトの固有名称１３５、入力データや出力データの最大／最小値、特別の制御オプション、その他の特性データなどのデータが含まれる。通常のオブジェクト指向方法によれば、オブジェクトを実行する間にデータは変更、修正されるが、該内部データは終始変化しない。また、内部データに加えて、他のオブジェクトより参照するため、また相互接続されたオブジェクト間のデータの流れを管理するため、個々のオブジェクトには単独または複数の固有の論理的な値が指定される。個々のオブジェクトには固有の論理的な値が指定されるため、各々のオブジェクトによるデータやコマンドの送信、受信を容易に行うことができる。
【００５２】
オブジェクト２２１，２２５，２２４、２２３にはそれぞれ、論理的なアドレス２３８、２３９、２４０、２４４が指定される。好ましくは、オブジェクトの論理的な値は該コンフィギュレーション・プログラム２００により自動的に指定され、該ファンクション・ブロック表現２１８を生成する間、ユーザから隠されている。例として、該除算オブジェクト２２４はその被除数入力「ａ」に対して論理的アドレス２３８を指定し、その除数入力「ｂ」に対してアドレス２３９を指定する（２３０参照）。そのため、論理的アドレス２３８を持つ該アナログ入力オブジェクト２２１の結果「ｒ」２２０と、論理的アドレス２３９を持つ該パラメータ・オブジェクト２２５の結果「ｒ」２２０が入力として提供される。
同様に、該除算オブジェクト２２４の結果「ｒ」は、２３２に表示されているように、論理的に該ノズル・オブジェクト２２３に流入する。そのため、該論理アドレスの指定によりオブジェクト間のデータの論理的な流れが確保される。
【００５３】
論理的アドレスの指定に加えて、ハードウエアを表す個々のオブジェクトは、物理的なアドレスによりそのハードウエア・コンポーネントを表す必要がある。該物理的アドレスは、回路基板またはバスアドレス値、および場合によっては対応するコンポーネントが物理的に接続されているポート番号より構成される。物理的なアドレス方式により該コントローラ２０の該外部コンポーネントを接続するのに適するハードウエア構成は、ＣＡＮ（コントローラ・エリア・ネットワーク）、インターフェース・コネクタ、マルチＩ／Ｏ端子を有する信号ブロック装置、ポートコネクタや標準バス・インターフェース・デバイスなどを含むが、これらに限るものではない。物理的アドレスを参照することにより、その制御と操作を行うため、ハードウエアを表す個々のソフトウェア・オブジェクトはそれに対応する物理的コンポーネントに対してマッピング（対応付け）される。好ましくは、ファンクション・ブロック表現２１８を生成している間に、該コンフィギュレーション・プログラム２００に含まれるアドレスリストからユーザが物理的アドレスを選択して、それを指定する。また別の方法としては、該コンフィギュレーション・プログラムにより自動的にアドレスを指定することもできる。
【００５４】
該スプレー・コントローラの好適なプログラミングを提供するために、場合によっては、該コンフィギュレーション・プログラム２００と併せてスプレー・コントローラ構成ウィザードを用いることができる。ウィザードは、ＧＵＩを用いるソフトウェア・アプリケーションで通常用いられるユーティリティであり、該アプリケーションのユーザが特定のタスクを簡単に行うことができるように助長するアプリケーション関連ユーティリティである。例えば、ワープロ・アプリケーション内の「レターウイザード」は、種々のタイプの通信文を作成する過程でユーザを助け、導く。最終結果を得る（手紙を作成する）には、ユーザはただ、主要メーリングアドレスや受取人情報などの必要な基本的入力パラメータおよび／または入力データを提供するだけでよい。通常、該ウィザードは、一連の質問に対するデータ入力をユーザに促すことによりデータ収集処理を容易にする。提供された情報とユーザの条件に基づき、ウィザードは好適なユーザ出力を生成する。
【００５５】
これと同じ手法をファンクション・ブロック表現２１８の設計に用いることも可能であり、これにより該スプレー・コントローラ２０の設計プロセスを通じてウィザードがユーザを導く。該ウィザードは該コントローラの好適な使用速度、圧力、流速などの基本入力情報をユーザから得る。ユーザによるプログラミングをさらに容易にするため、該ウイザードは、ユーザがノズルやスプレーガンの特性に関するデータベースにアクセスできるような設計とすることが望ましい。このような特性としては、適用フロー／圧力、液滴サイズ、スプレー適用パターン、圧力／噴霧エア圧、および、当業者にとっては一般的に必要と思われるその他の基本特性が含まれる。ユーザは、用いられる特性のリストからユーザの特定の用途に基づき選択を行うだけでよい。この選択のプロセスは、望ましい特性を選択するためのプルダウンメニュー機能を有するダイアログボックスなどのグラフィック・ウィンドウを用いて容易に行うことができる。ユーザの選択に基づき、該ウィザードはそれに応じた情報を推定し、対応するファンクション・ブロック表現を組み立て、好適な結果を達成する。このようなユーティリティにより、多様な制御特性を有する複雑なスプレー・コントローラ・システムの設計やプログラミングに要する時間をかなり短縮することができる。
【００５６】
また本発明のその他の特徴により、該コンフィギュレーション・プログラム２００は複合ファンクション・ブロックへのアクセスを可能とし、さらに該コントロール・プログラム作成プロセスの時間短縮を可能とする。複合ファンクション・ブロックとは個々のファンクション・ブロックを相互接続し、単一のファンクション・ブロックを表すようにグループ化した複数のファンクション・ブロックの集合である。これらのブロックはユーザが生成する場合もあり、該スプレー・コントローラのメーカが該ファンクション・ブロック・ライブラリを用いて提供する場合もある。該複合ファンクション・ブロックをユーザが生成する場合は、ユーザは該複合ファンクション・ブロック内の内部接続、データおよびその他の関連情報を操作することができる。これにより、ユーザは特定の制御条件を満たすようにブロックをカスタマイズすることができる。これらのブロックには固有のファンクション・ブロック名が指定され、後に使用するためにメモリに格納される。
【００５７】
図６（ｂ）は複合ファンクション・ブロック２３２の一般的な例を示す。この例において、オブジェクトＡ２４２、Ｂ２４３、Ｃ２４４およびＤ２４５はそれぞれ，入力および出力線により相互接続されて、物理的および論理的操作を可能にする。該複合ファンクション・ブロックは入力１、入力２、（各２５０および  ２５１）および出力１〜３，  （２５２〜２５４）から構成される。そのため，該複合ファンクション・ブロック２３２を構成する種々のオブジェクトへの入力（すなわち２５６−２５８）は、同時に該複合ファンクション・ブロックへの入力として機能する。該出力２５９〜２６１もまた該複合ファンクション・ブロックの出力を形成する。すなわち、ファンクション・ブロック図２１８の設計に用いる該複合ファンクション・ブロックを選択するに際し、ユーザは該複合ブロックのインターフェースに必要な入力および出力データを提供するだけでよい。先に述べたように，該プログラムの内部の複雑さ（例えばオブジェクトＡ〜Ｄの相互接続）はユーザから隠されており、それによりコントロール・プログラムの設計を容易に行うことができる。複合ファンクション・ブロックにより該コントローラのプログラミングに対して規格的方法を用いることが可能となり、全システム表現を設計する際の機能性が大きく高められる。
【００５８】
該コントローラシステムの、種々のコンポーネントの全てを含む該ファンクション・ブロック・ライブラリは、どのようなスプレー・コントローラ・システムとの接続においても用いることができる。該コントローラの、特定のハードウエアの配置が異なっている場合でも、該当するコンポーネントの実行と表現および該コントローラ用のデータを含むファンクション・ブロック・ライブラリを備えていれば、前記の該コンフィギュレーション・プログラム２００を用いて簡単にそのプログラミングを行うことができる。すなわち，該コンフィギュレーション・プログラムは特定のスプレー・コントローラの実施例に限定されるものではない。むしろ、該スプレー・コントローラのメーカは、データ構造として実行される特定システムに対応する適当なソフトウェア・オブジェクトを提供することができる。
【００５９】
図７は該コントローラ２０の働きを示す。詳細には、該スプレー・コントローラ２０の機能を実行するために、該ファンクション・ブロック表現２１８を実際の命令に翻訳する本発明の方法について以下に記述する。
【００６０】
図７に示すように、ファンクション・ブロック表現２１８の生成が完了すると、アプリケーション・ファイル３０４が生成される。該アプリケーション・ファイル３０４は該コンフィギュレーション・プログラム２００により生成される該ファンクション・ブロック表現２１８のバイナリ・バージョンである。そのため、該アプリケーション・ファイルは、該ファンクション・ブロック表現２１８が表すすべてのオブジェクト３０５、特性データ、論理的な命令を指定する。それゆえ、該コントローラの機能は該アプリケーション・ファイル３０４内のデータにより定義される。該アプリケーション・ファイルが生成されると、それは該通信チャンネル３３を介して該ＰＣ３０から該コントローラ２０に容易に転送され、該コントローラのメモリ１１８に格納される。あるいは、該アプリケーション・ファイルをフロッピーディスク３１などの持ち運びのできる記憶媒体に格納し、その後、該コントローラメモリ１１８にアプロードすることもできる。ファイルを該ＰＣ３０から該コントローラ２０に転送するいずれかの手段は本発明の範囲に含まれる。
【００６１】
本発明の別の実施形態によれば、ランタイム・エンジンは該アプリケーション・ファイルのデータ・コンテンツ（例えばソフトウェア・オブジェクト、内部データ、論理的命令）を解釈し、処理する。該ランタイム・エンジン３００は該コントローラ２０の内部で実行する割込み駆動タイプのオペレーティングシステムである。該ランタイム・エンジン３００は、該アプリケーション・ファイル３０４内に含まれるデータや論理的命令と、メモリ１１８内に格納されたファンクション・ブロック・コード３０６のセットとを統合する中間機構として機能する。該ファンクション・ブロック・コード３０６は、複数のデータ構造／ソフトウェア・オブジェクト３０５の各々を特徴付けるプログラムされた命令の集合である。該アプリケーション・ファイル３０４内に表される個々のオブジェクト３０５に対して、該ランタイム・エンジン３００は、該コントローラ２０の所定の物理的および論理的操作を行うため、対応するファンクション・ブロック・コード３０６の「セット」を実行する。「セット」という用語は、コンピュータにより実行可能な1行または複数行の命令を指す。各セットは該コントローラの個々の特性に対応する。すなわち、該コントローラシステムを構成する物理的および論理的コンポーネントと同数のファンクション・ブロック・コードのセットが存在することになる。このコードは、Ｃ言語などのハイレベルのプログラミング言語を用いて該コントローラのメーカが作成し、該コントローラのメモリ１１８に格納される。全体として、該ファンクション・ブロック・コードは該コントローラの基本的特性を定義し、該コントローラのハードウエア３０２の入力特性および出力特性を直接制御し、あるいはＯＳ３０８と対話するように設計されている。
【００６２】
図８に該ランタイム・エンジンの主要タスクを示す。該アプリケーション・ファイル３０４のコンテンツを解釈する機能に加えて、該ランタイム・エンジン３００は、各ソフトウェア・オブジェクト３０５に対応する該ファンクション・ブロック・コード３０６を初期化（４００）し、実行（４０２）する働きをする。該ランタイム・エンジンはまた、該アプリケーション・ファイル３０４に指定されたデータ４０６およびコマンド４０４を処理する働きをする。さらに該ランタイム・エンジン３００は該スプレー・コントローラ２０の他の内部機構と対話し、該システムの種々の機能を提供する。図７にこれらの機構の一つである該コントローラの該リアルタイム・オペレーティングシステム（ＯＳ）３０８を図示する（該システムを備えている場合）。該ランタイム・エンジン３００は該ＯＳと対話してシステム事象４０８をスケジュールし、同調させ（タイム）、情報ディスプレイ４１０を操作し、ネットワーク化機能４１２やその他の通常のコンピュータのタスクを行うことができる。
【００６３】
当業者にとっては、該ランタイム・エンジン３００は該リアルタイム・オペレーティングシステム３０８とは独立して該コントローラ２０内で動作可能であるという点が理解される。該リアルタイム・オペレーティングシステム３０８は該ランタイム・エンジン３００の前記の主要機能を実行するために、必ずしも該コントローラ内に存在する必要はない。しかし、本発明の該ランタイム・エンジン３００は、両システム３００／３０８がともに存在する状況において、該コントローラの処理、タイミング、管理活動が相応して行われるような形で実施されており、これにより既存のシステムの主要システムをまったく別のものに変換する必要がなくなる。一般にリアルタイムエンジンシステム３０８は、ユーザのキーパッドからの入力を認識し、ディスプレイ・スクリーンに出力を送り、内部メモリ上のファイルやディレクトリを整理し、該システムに接続された周辺装置を管理するなどの基本的なコンピュータのタスクを行うソフトウェア駆動機構に関する。本発明において開示する該ランタイム・エンジン３００はこれらの基本機構を遂行する。さらに該ランタイム・エンジン３００は該コントローラＣＰＵと連動して働き、相対的クロック速度と処理速度によりそのタスクを遂行することが可能である。
【００６４】
フローチャート９（ａ）と９（ｂ）は、ファンクション・ブロック・コードの初期化４００とメインループ処理実行４０２を行うために、該ランタイム・エンジン３００が従う手続きを示す。ユーザが初めて該コントローラを起動し、該ランタイム・エンジン３００による処理を行うために該ファンクション・ブロック・コードを準備する時に該初期化手続き４００が実行される。該コードが初期化されると、該ランタイム・エンジン３００の該メインループ手続き４０２により、この手続きは何度も実行される。またフローチャート９（ｃ）、９（ｄ）、９（ｅ）はそれぞれ、該ランタイム・エンジンが行うコマンド処理４０４、データ処理４０６、タイミング処理４０８のための手続きを示す。コマンド処理４０４により、該ランタイム・エンジンは該アプリケーション・ファイル３０４に指定されたオブジェクト間でコマンドの交換を容易に行うことができる。先に述べたように、オブジェクトは他のオブジェクトを参照して、そのオブジェクトが実行すべきコマンドを送ることができる。この処理により、複数のオブジェクトが互いに対話し、該コントローラ内の外部事象や内部事象をトリガーすることが可能となる。同様に、該ランタイム・エンジンは該データ処理手続き４０６により複数のオブジェクト間でデータ交換を行うことができる。この処理の一例として、図１０に２つの相互接続されたオブジェクト５００、５０２を示す。
【００６５】
図示のように、オブジェクト５００は該コントローラの該ＬＣＤディスプレイ２８に表示されるメニューライン・ファンクションを表す。オブジェクト５００は入力データライン５０２とイネーブル（割込み可能）入力５０３により構成される。また、該メニューライン・オブジェクト５００は該ディスプレイ５０５に書き込みを行うためのキャプション、ディスプレイオプションと設定５０７、および数値設定５０９を含む内部データ５０４を有する。接続された該オブジェクト５０６は、該オブジェクト５０６の実際の出力に影響を与えるセンサスパン入力５０９、最小入力値５１０およびフィルタ値５１２を含むアナログ圧力入力コンポーネントを表す。また、該アナログ入力オブジェクト５０６は、その固有の設定を定義する内部データ５１４を指定する。図示するように、オブジェクト５００への入力はオブジェクト５０６の出力５０８により行われる。すなわち、該コントローラの実行中に、該ランタイム・エンジン３００は、参照された該オブジェクト５０６の出力値５０８を要請し、取得したデータの有効性をチェックし、適宜、データ変換を行い、該メニューライン・オブジェクト５０２を介してこの情報をオブジェクト５００に転送する。この例では、結果として、該ディスプレイ・メニュー・ファンクション５０２により、ＰＳＩにおける圧力としてアナログ入力の出力値がディスプレイ２８にプリントされる（その情報は該コントローラ・ディスプレイの対応する物理的アドレスに出力される）。
【００６６】
図９（ｅ）はタイミング処理４０８を可能にするために該ランタイム・エンジンが行う手順を示す。この手順により、特定のオブジェクトに対応する該ファンクション・ブロック・コードが既定の時間で実行される。
【００６７】
本発明の重要な特徴の一つによれば、さらに該ランタイム・エンジンはランタイムの実行中に生成された割込みを処理することも可能である。図１１に示すように、該アプリケーション・ファイルに示された種々のソフトウェア・オブジェクトは、該ランタイム・エンジンによって呼び出されること無く（例えばそのオブジェクトに対応する該ファンクション・ブロック・コードを呼び出すことなく）それ自体で事象を生成することができる。この動作は、該コントローラのハードウエア・コンポーネントにより検出される外部の影響（事象６００）の結果として、該ＣＰＵ（事象６０２）が生成する割込みによって引き起こされる。上記の影響としては、圧力センサ４０より検出される特定の圧力値、アナログ入力コンポーネント５０６やその他のデテクタ／センサ・コンポーネントの値などがある。割込みが生成されると、その時点で該ランタイム・エンジン３００により実行されている該ファンクション・ブロック・コードは中断する（事象６０４）。すると代わって、該割込みを引き起こした該ハードウエア・コンポーネントに対する該ファンクション・ブロック・コードが実行される（事象６０６）。そのコードの実行が完了すると、制御は中断した該ファンクション・ブロック・コードに復帰し、すぐに実行が再開する（事象６０８）。該ランタイム・エンジン３００により提供されるこの割込み処理能力により、該コントローラは外部事象に速やかに応答することができる（応答時間：１ｍｓ未満）。また、従来のスプレー・システムやその他のＰＬＣ装置は、このように割込みに応答する能力を備えていないため、この能力はプログラム可能な・ロジックを採用するスプレー・コントローラ２０の独自の利点となる。
【００６８】
図１２は、３つの相互接続されたオブジェクトより構成されるファンクション・ブロック表現６１３を示し、該ランタイム・エンジン３００により提供される割込み処理能力の例を示す。３つの相互接続された該オブジェクト６１０、６１２および６１４はそれぞれ、デジタル入力、タイマーファンクション、およびデジタル出力を表す。該ファンクション・ブロック表現６１３により、該デジタル入力オブジェクト６１０は、ハイからに（６１６）、またはローからハイに（６１８）、デジタル入力信号をトリガーするために、その入力端子を介してコマンドを受け取ることができる。コマンド６１５はセンサ４０／４２やユーザ・キーパッド入力２６などの外部ハードウエア・コンポーネントから送られる。入力信号がｌｏｗ−ｔｏ−ｈｉｇｈ６１８として表示されると、この現象は該コントローラ２０のマイクロプロセッサ／ＣＰＵに指示され、割込みが生成される。その結果、該ＣＰＵと連動した該ランタイム・エンジン３００が、現在実行中のファンクション・ブロック・コードを停止し、該デジタル入力オブジェクト６１０のコードを起動させる。当業者にとっては、割込みをトリガーする機能を有する該オブジェクトのコード（この場合はデジタル入力）は必ずしも該割込みが生成された時に該ランタイム・エンジン３００により実行されている必要はないということは明らかであろう。この機能により、該コントローラ２０の全体の性能や運転を妨げることなく、該コントローラの実行時間中、いつでも割込みをトリガーすることができる。
【００６９】
該ファンクション・ブロック表現６１３の論理的なフローは該タイマーファンクション・オブジェクト６１２に関するものである。該デジタル入力オブジェクト６１２に対する該ファンクション・ブロック・コードが起動すると、該ランタイム・エンジン３００が呼び出され、ＳＴＡＲＴコマンド６２０を該タイマーオブジェクト６１２に中継する。該タイマは、該コントローラ内で他のオブジェクトや処理を起動するためのタイマートリガーまたはタイマーリリースとして機能する。実行の際は、該タイマーファンクションはその時間関係入力６２２に表示された値を、最初の割込み時から記録あれた現行時間に加える。この数値は、その後、事象のタイマーキューに格納される。すると、図11に表示された一連の割込みコードにより、制御は割込みが生成される以前に実行されていたプログラムに戻る。
【００７０】
タイマーキュー（待ち行列）に格納された時間が経過すると、再び割込みが生成され、該ランタイム・エンジン３００が該タイマーファンクション・ブロック・コードを実行する。すると該タイマの動作によりデジタル出力オブジェクト６１４にＯｎコマンドが送られる。その結果、該ランタイム・エンジン３００はデジタル出力タイマ６１４に対する該ファンクション・ブロック・コードを実行し、該デジタル出力状態端子６２４がＯＮ状態になる。該デジタル出力オブジェクト６２６の内部データには、該ソフトウェア・オブジェクトを、該コントローラ回路内の対応する物理的なコンポーネントとマッピング（対応付け）させるための関連情報が含まれる。この特定のファンクション・ブロック表現６１３が該ランタイム・エンジン３００によって実行されると、結果として、該コントローラ２０の該デジタル出力信号６１４が起動される。
【００７１】
図１２は該コントローラシステム２０の操作を特徴づけるファンクション・ブロック表現の一例を示す。この技術に習熟した者にとっては、該コントローラシステムの種々の実施の例が可能であり、オブジェクト間の全般的相互作用は、該ファンクション・ブロック表現６１３と提供される特性データに基づき、該コンフィギュレーション・プログラムのユーザにより設定されることが理解できるであろう。同様に、前記の割込み方式は、外部事象に応答して割込みが生成され、その後、該ランタイム・エンジン３００により処理される方法を示す一例に過ぎない。該コントローラの割込み特性は、最終的には該コントローラと関係する該マイクロプロセッサ／ＣＰＵの特性により決定されるものであり、前記の実施の例に限定されるものではない。
【００７２】
全体として、本発明は特定の設計条件を満たすようにユーザがスプレー・コントローラの機能を変更したり、あるいは完全に再設計を行うための簡便な方法を提供する。ＧＵＩベースのコンフィギュレーション・プログラムを用いることにより、利用者本位の操作性が高められ、プログラミングの技能を持たないユーザに利便性を提供する。該スプレー・コントローラをプログラムするのに必要とされるのは、該コントローラのハードウエアの機能の基本知識と、実行する処理やシステムに関する理解だけである。このような知識さえあれば、ユーザはその特定条件に合う該システムのファンクション・ブロック表現２１８を簡単に設計することができる。さらに、該コンフィギュレーション・プログラムは種々の該オブジェクトに対するデフォルト入力値を提供することが可能であり、ユーザの入力する無効な入力値を拒否することができる。この機能により該ファンクション・ブロック表現２１８を作成する間、ユーザを助け、指導する。
【００７３】
本発明の提供する利点をさらに理解するために、該ファンクション・ブロック・コード３０６と該ファンクション・ブロック表現２１８を明確に区別することが重要である。該ファンクション・ブロック・コード３０６は該スプレー・コントローラの固有の特性を定義する実際のビルディング・ブロックを提供する。これらのビルディング・ブロックは該コントローラ内に前もってプログラムされており、通常はユーザが変更することはできない。一方該ファンクション・ブロック表現２１８は、該ビルディング・ブロックの各々が互いにどのように作用しあうか、またこれらが必要とするデータタイプに影響を与えるユーザ定義のテンプレートである。該ファンクション・ブロック図２１８無しでは、該ランタイム・エンジン３００は、該ファンクション・ブロック・コード３０６を意味のある形で実行することができない。すなわち、該ファンクション・ブロック表現２１８は該ファンクション・ブロック・コード３０６が必要とするデータや論理的な命令を提供し、該コントローラ２０の個々の物理的および論理的特性を好適な方法で実行することを可能にする。従来のシステムではユーザが該コントローラの機能を、制御、操作、修正できる機能は定義済みユーザモードや設定に限られていたのに対し、本発明が有するこれらの機能により、本発明がこのような従来のシステムに対し明らかにすぐれた利点を有することは、当業者にとっては明らかであろう。
【００７４】
上記目的に合うオブジェクト指向の環境やシステムについてここまで述べてきた。本発明により、ユーザは、関係するプログラミングの手順の深い知識なくしてスプレー・コントローラを簡単に設定することが可能である。代替え的にユーザが行うのは、制御する処理および採用する該ハードウエアの基本特質を提供することである。動作において、割込み駆動のランタイム環境を用いて該アプリケーションが実行され、低価格のコンポーネントを使用可能とする。
【００７５】
本発明のこの原理は多くの実施例として採用することが可能であり、該図面を参照して本明細書で記述した実施例は説明のための例として述べただけのものであり、発明の範囲を限定するものとみなすべきではないという点を理解すべきである。例えば、当業者にとっては、ソフトウェアとして実施例に図示した要素はハードウエアとして実施することも可能であり、また、その逆も可能であること、あるいは本発明の趣旨を逸脱することなく、図示した実施例の配置や詳細を変更することが可能であることは理解されるであろう。それ故、本明細書に記述した本発明は前記の請求項およびそれに相当する記述の範囲内に含まれるすべての実施例を包含するものと考えられる。
【図面の簡単な説明】
【００７６】
上記の特許請求の範囲に本発明の特徴の詳細を記述しているが、以下の図面と併せて、上述した詳細な説明を参照することにより本発明の目的および利点は明確に理解されるものであろう。
【図１】農業用に用いられる典型的なスプレー・コントローラの全般を示すブロック図である。
【図２】図１のスプレー・コントローラを実施するためのファンクション・ブロック表現の全般を示す。
【図３（ａ）】図１のスプレー・コントローラの機能を実行するために用いられる典型的なソフトウェア・オブジェクトを示す図である。
【図３（ｂ）】図１のスプレー・コントローラの機能を実行するために用いられる典型的なソフトウェア・オブジェクトを示す図である。
【図３（ｃ）】図１のスプレー・コントローラの機能を実行するために用いられる典型的なソフトウェア・オブジェクトを示す図である。
【図３（ｄ）】図１のスプレー・コントローラの機能を実行するために用いられる典型的なソフトウェア・オブジェクトを示す図である。
【図４】該スプレー・コントローラの機能ブロック表現を作成するために用いられるコンフィグレーション・プログラムを示す。
【図５】ユーザからのデータ入力を受け取る、図４のコンフィグレーション・プログラムにより初期化された表示ウィンドウを示す。
【図６（ａ）】図４のコンフィグレーション・プログラムを用いて作成されたファンクション・ブロック表示を示す。
【図６（ｂ）】該スプレー・コントローラのファンクション・ブロック表現を作成するために用いられる複合ブロック・ファンクションを示す。
【図７】図１に図示したスプレー・コントローラのソフトウェア・アーキテクチャを示す。
【図８】本発明によるランタイム・エンジンの主要タスク全般を示すブロック図である。
【図９（ａ）】該スプレー・コントローラの動作を制御するため、該ランタイム・エンジンにより実行される論理的シーケンスを示すフローチャートである。
【図９（ｂ）】該スプレー・コントローラの動作を制御するため、該ランタイム・エンジンにより実行される論理的シーケンスを示すフローチャートである。
【図９（ｃ）】該スプレー・コントローラの動作を制御するため、該ランタイム・エンジンにより実行される論理的シーケンスを示すフローチャートである。
【図９（ｄ）】該スプレー・コントローラの動作を制御するため、該ランタイム・エンジンにより実行される論理的シーケンスを示すフローチャートである。
【図９（ｅ）】該スプレー・コントローラの動作を制御するため、該ランタイム・エンジンにより実行される論理的シーケンスを示すフローチャートである。
【図１０】本発明による２つの相互接続されたオブジェクト間でのデータの交換を示す。
【図１１】該ランタイム・エンジンにより実行される割込み処理手続きを表すフローチャートを示す。
【図１２】複数の相互接続されたソフトウェア・オブジェクトに関し、図１１に図示した割込み処理手続きを示す。
【符号の説明】
【００７７】
２０…スプレー・コントローラ、２２…ユーザ・インターフェース・パネル、２４…入力制御スイッチ、２６…キーパッド、２８…デジタルディスプレイ、３０…パーソナルコンピュータ、３２…コネクタポート、３３…通信チャンネル、３４、３６…マルチ入力コネクタ、３８…流量計、４０…圧力センサ、４２…光学センサ、４４…コネクタ・ケーブル、４５…バッテリ電源、４６，４８…出力コネクタ、５０，５１…コネクタ・ケーブル、５２…アラーム、５４…インジケータ・サイレン／ランプ、５６…圧力調整器、５８…バルブ、６０…リレー、６２…スプレーガン。
【図１】
2004534997.tif 000003
【図２】
2004534997.tif 000004
【図３（ａ）】
2004534997.tif 000005
【図３（ｂ）】
2004534997.tif 000006
【図３（ｃ）】
2004534997.tif 000007
【図３（ｄ）】
2004534997.tif 000008
【図６（ａ）】
2004534997.tif 000009
【図６（ｂ）】
2004534997.tif 000010
【図７】
2004534997.tif 000011
【図８】
2004534997.tif 000012
【図９（ａ）】
2004534997.tif 000013
【図９（ｂ）】
2004534997.tif 000014
【図９（ｃ）】
2004534997.tif 000015
【図９（ｄ）】
2004534997.tif 000016
【図９（ｅ）】
2004534997.tif 000017
【図１０】
2004534997.tif 000018
【図１１】
2004534997.tif 000019
【図１２】
2004534997.tif 000020
【国際公開パンフレット】
2004534997.tif 000021
2004534997.tif 000022
2004534997.tif 000023
2004534997.tif 000024
2004534997.tif 000025
2004534997.tif 000026
2004534997.tif 000027
2004534997.tif 000028
2004534997.tif 000029
2004534997.tif 000030
2004534997.tif 000031
2004534997.tif 000032
2004534997.tif 000033
2004534997.tif 000034
2004534997.tif 000035
2004534997.tif 000036
2004534997.tif 000037
2004534997.tif 000038
2004534997.tif 000039
2004534997.tif 000040
2004534997.tif 000041
2004534997.tif 000042
2004534997.tif 000043
2004534997.tif 000044
2004534997.tif 000045
2004534997.tif 000046
2004534997.tif 000047
2004534997.tif 000048
2004534997.tif 000049
2004534997.tif 000050
2004534997.tif 000051
2004534997.tif 000052
2004534997.tif 000053
2004534997.tif 000054
2004534997.tif 000055
2004534997.tif 000056
2004534997.tif 000057
2004534997.tif 000058
2004534997.tif 000059
2004534997.tif 000060
2004534997.tif 000061
2004534997.tif 000062
2004534997.tif 000063
2004534997.tif 000064
2004534997.tif 000065
2004534997.tif 000066
2004534997.tif 000067
2004534997.tif 000068
2004534997.tif 000069
2004534997.tif 000070
2004534997.tif 000071
2004534997.tif 000072
2004534997.tif 000073
2004534997.tif 000074
2004534997.tif 000075
2004534997.tif 000076
2004534997.tif 000077
【国際公開パンフレット（コレクトバージョン）】
2004534997.tif 000078
2004534997.tif 000079
【国際公開パンフレット（コレクトバージョン）】
2004534997.tif 000080
2004534997.tif 000081
【国際調査報告】
2004534997.tif 000082