(57)【特許請求の範囲】
【請求項１】
プロセスプラントに組み込まれたプロセス制御システムにユーザ定義・カスタム・ファンクション・ブロックを統合する方法であって、
前記プロセス制御システム内のデータ・ソースのテーブルを提供することであって、前記テーブルは、１又は複数の属性を前記プロセス制御システムの前記データ・ソースにマップするものであって、前記属性の各々は、前記プロセス制御システムのデータ・ソースへ当該属性をマップする前記データ・ソースの前記テーブルの特定の部分を参照するポインタを包含するものであって、前記データ・ソースの各々は、（１）プロセス制御システムのアプリケーションに関連するファンクション・ブロック、デバイス、若しくはパラメータ、又は（２）プロセス制御システムのアプリケーションの外部にあるシステム、デバイス、アルゴリズム、若しくはアプリケーションである、前記テーブルを提供することと、
前記ユーザ定義・カスタム・ファンクション・ブロックに１又は複数の属性を含むことであって、各属性が、前記プロセス制御システム内で任意のカスタム若しくは標準ファンクション・ブロックによる使用が可能な公衆データ（ａ）、又は、他のファンクション・ブロックによるアクセスができないプライベート・データ（ｂ）にマップされていることと、
前記ユーザ定義・カスタム・ファンクション・ブロックに関連付けられた前記公衆データ及び前記プライベート・データの値を初期化することと、
前記１又は複数の属性を含んだユーザ定義・カスタム・ファンクション・ブロックをコンパイルし且つリンクして、コンパイルおよびリンクされたコードを生むことと、
前記コンパイルおよびリンクされたコードを前記プロセス制御システムのコントローラへ転送することとを含み、
前記カスタム・ファンクション・ブロックは、標準ファンクション・ブロックの方法と類似又は同一の方法でコントローラ又はフィールドデバイスへとコンパイルされ、且つダウンロードされるので、前記カスタム・ファンクション・ブロックと前記プロセス制御システム内のその他の標準ファンクション・ブロックとの間の通信が同期的に発生することを可能にする、方法。
【請求項２】
前記ユーザ定義・カスタム・ファンクション・ブロックによって使用されるデータをプライベート・データ及び公衆データのうちの一方であると定義することをさらに含む請求項１記載の方法。
【請求項３】
前記ユーザ定義・カスタム・ファンクション・ブロックを創成することが、
このユーザ定義・カスタム・ファンクション・ブロックに関連づけられたファイルを形成するために、上記プロセス制御システムに付随したコンピュータを用いて、上記プロセス制御システムのプロバイダによって生成されたファイル・グループからの複数のファンクション・ブロック・コンポーネントを組み合わせることと、
上記プロセス制御システムに付随したコンピュータを用いて、上記ファイル内の上記複数のファンクション・ブロック・コンポーネントのうちの１つを修正することと、
前記ユーザ定義・カスタム・ファンクション・ブロックを記憶することと、を含む請求項１記載の方法。
【請求項４】
前記コンパイルおよびリンクされたコードが、前記プロセス制御システムの許可要件または運転特性に適合しているか否かを決定することをさらに含む請求項１記載の方法。
【請求項５】
前記コンパイルおよびリンクされたコードに安全措置情報を付加することをさらに含む請求項１記載の方法。
【請求項６】
前記コンパイルおよびリンクされたコードが有効であるときに、前記安全措置情報と、前記コンパイルおよびリンクされたコードとをユーザに送ることをさらに含む請求項５記載の方法。
【請求項７】
プロセス制御アプリケーションと該アプリケーションの外部のデータ・ソースとの間に、前記コンパイルおよびリンクされたコードを通信可能に配置することと、
前記コンパイルおよびリンクされたコードによって実行される新たな機能性に基づいて、前記プロセス制御アプリケーションと該アプリケーションの外部のデータ・ソースとの間で情報を伝達することとを含む請求項１記載の方法。
【請求項８】
上記プロセス制御アプリケーションと該アプリケーションの外部のデータ・ソースとの間に、前記コンパイルおよびリンクされたコードを通信できるように配置することは、
上記プロセス制御アプリケーションと、システムおよび、デバイスおよび上記プロセス制御アプリケーションの外部のアプリケーションのうちの１つとの間に前記コンパイルおよびリンクされたコードを通信可能に配置することを含む請求項７記載の方法。
【請求項９】
前記コンパイルおよびリンクされたコードによって実行される上記新たな機能性に基いて上記プロセス制御アプリケーションと該アプリケーションの外部のデータ・ソースとの間で上記情報を伝達することは、
少なくとも幾分かの上記情報を上記プロセス制御アプリケーションによって使用されるパラメータへマップすることを含む請求項７記載の方法。
【請求項１０】
前記コンパイルおよびリンクされたコードによって実行される上記新たな機能性に基いて上記プロセス制御アプリケーションと該アプリケーションの外部のデータ・ソースとの間で上記情報を伝達することは、
少なくとも幾分かの上記情報を基礎として値を計算することと、上記値を上記プロセス制御アプリケーションによって使用されるパラメータに関連づけることを含む請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してプロセス制御システムにユーザ定義・カスタム・ファンクション・ブロックを統合する方法に関し、より特定的には、プロセス制御システムのユーザまたはオペレータがそのプロセス制御システムにおける制御アクティビティを実行するためのカスタム・ファンクション・ブロックを生成できるようにする技術に関する。
【背景技術】
【０００２】
最新式のプロセス制御システムは、典型的には、マイクロプロセッサを基礎とする分散形制御システム（DCS）である。伝統的なDCS構成は、データバス（イーサネット（登録商標）等）で１つまたは複数のコントローラに接続されたワークステーションのような１つまたは複数のユーザ・インタフェース・デバイスを含んでいる。コントローラは、概して制御されたプロセスの近くに物理的に位置づけられ、プロセス全体に渡って配置された電子センサ、送信機、電流−圧力変換器、バルブ・ポジショナ、他等の多くの電子監視デバイス及びフィールド・デバイスに接続されている。
【０００３】
伝統的なDCSでは、制御タスクは、各コントローラ内部に制御アルゴリズムを供給することによって分散される。コントローラは、制御アルゴリズムを独立して実行し、コントローラに結合されたフィールド・デバイスを制御する。制御タスクのこの分散化は、システム全体により大きなフレキシブルさをもたらす。例えば、ユーザがDCSに新しいプロセスまたはプロセスの一部を付け加えることを希望する場合、ユーザは、適切なセンサ、アクチュエータ他に接続された（適切な制御アルゴリズムを有する）追加的コントローラを付加することができる。代替として、ユーザが既に存在しているプロセスを変更することを希望すれば、例えば、新しい制御パラメータまたは制御アルゴリズムを、ユーザ・インタフェースからデータバスを介して適切なコントローラへダウンロードすることができる。
【０００４】
改良されたモジュール方式及び製造者間の互換性に備えるため、プロセス制御の製造者は最近、プロセス内部におけるさらに進んだ制御の分散化へと移行している。つい最近のこれらのアプローチは、HART（登録商標）、PROFIBUS（登録商標）、WORLDFIP（登録商標）、Device−Net（登録商標）、CAN及びFieldbusの各プロトコルのようなオープン・プロトコルを使用して互いに、及び／またはコントローラと通信することのできるスマート・フィールド・デバイスを基礎としている。これらのスマート・フィールド・デバイスは、本質的には、ケースによりFieldbusデバイスの場合のように、DCSコントローラによって伝統的に実行されている制御ループ・ファンクションも実行するセンサ、アクチュエータ他等のマイクロプロセッサを基礎とするデバイスである。スマート・フィールド・デバイスの中には、制御ケイパビリティを供給しかつオープン・プロトコルを使用して通信するものがあるため、様々な製造者が製造したフィールド・デバイスは共有のデータバス上で互いに通信することが可能であり、かつ伝統的なDCSコントローラの介入なしに相互に作動して制御ループを実行することができる。
【０００５】
周知のように、プロセス制御システムのコントローラ及び例えばFieldbusデバイスのようなスマート・フィールド・デバイスは、制御ファンクションまたは制御ファンクションの一部を実行する１つまたは複数のファンクション・ブロックを含むことが可能である。これらのファンクション・ブロックは、例えばアナログ入力ファンクション、アナログ出力ファンクション、比例積分微分（PID）制御ファンクションまたは他の任意の所望の制御ファンクションを実行することができる。ファンクション・ブロックは、コントローラまたはスマート・フィールド・デバイス内の他のファンクション・ブロックと、または他のコントローラまたはスマート・フィールド・デバイス内のファンクション・ブロックと通信できるようにリンクされていて、任意の所望の制御ファンクションを実行することができる。例えば、アナログ入力ブロックは流量センサを介する流体の流れの監視に使用されることが可能であり、PIDブロックは、アナログ入力ブロックによって供給される流体流量値を処理し、アナログ出力ブロックを介して応答信号をバルブ・プラグの位置を修正するアクチュエータへ供給することができる。このように、これらのファンクション・ブロックは、バルブを介して流体の流れを制御するPIDベースの制御ループを形成すべく互いに通信できるようにリンクされることが可能である。
【０００６】
プロセス制御の製造者またはプロバイダは、典型的には、システムのユーザに様々なタイプの予め画定されたファンクション・ブロックを含む１つまたは複数の標準ライブラリを提供する。典型的には、予め画定された本ファンクション・ブロックは、システムのユーザの指示に従って、全体的なプロセス制御スキームを実行するように選択されかつ互いに組み合わされることが可能である。プロセス制御の製造者の中には、ユーザがファンクション・ブロック間の論理関係をビジュアル化できるようにするグラフィックなユーザ・インタフェースをも提供するものがあるが、これは、特にプロセス制御スキームが複雑であるような状況において、全体的なプロセス制御スキームの作成を大幅に促進させる。
【０００７】
ユーザが、どのファンクション・ブロックを実行すべきかを選択しかつ選択されたファンクション・ブロック間の論理関係を画定することによって全体的なプロセス制御スキームを作成すると、全体的なプロセス制御スキームを実行するために、プロセス制御システム内で１つまたは複数のファンクション・ブロックのインスタンスを作成することができる。予め画定されたファンクション・ブロックは典型的にはプロセス制御システム全体に分散されたコントローラ及び／またはスマート・フィールド・デバイス内でインスタンスを作成されるため、予め画定されたファンクション・ブロックは、比較的高速で同時的に実行されることが可能である。
【０００８】
プロセス制御システムが、ファンクション・ブロックの標準ライブラリにおいて制御システムの製造者またはプロバイダによって提供されていない特殊なファンクション、アプリケーションまたはアルゴリズムの実行を要求する場合、システムのユーザは、典型的には、その特殊なファンクション、アプリケーションまたはアルゴリズムを実行する独立したプロセスを創成し、インスタンスを作成する。実際には、この独立したプロセスは通常、例えばローカル・エリア・ネットワークのような通信ネットワークを介してプロセス制御システム全体に分散されたコントローラ及び他のデバイスと通信できるように結合されているワークステーションまたは他の何らかのコンピュータ・システム内で創成されかつインスタンスを作成される。その結果、特殊なファンクション、アプリケーションまたはアルゴリズムを実行する独立したプロセスと全体的なプロセス制御スキームとの統合により、典型的には、通信ネットワークを介して全体的な制御プロセスの他の部分と通信するための独立したプロセスが必要になる。
【０００９】
特殊なファンクション、アプリケーションまたはアルゴリズムを実行するユーザによって創成された、または画定された特殊なプロセスと全体的なプロセス制御スキームとを統合させる困難さは、ワークステーションと、ローカル・エリア・ネットワークと通信できるように結合されたコントローラまたは他の何らかのプロセス制御システム・デバイスとの間の通信が通常、システムのユーザには周知でない専有のメッセージ・フォーマットまたはプロトコルを基礎としているという事実によって倍加される。統合上のこの困難さを緩和するために、プロセス制御の製造者の中には、例えばプロセス制御用OLE（OPC）のような共通のデータ言語を基礎とする通信を使用してそれらの制御プロセスと他のプロセスまたはシステムとの間の通信を許容できるものがある。例えばOPCのような共通データ言語は、典型的には、システムのユーザが（特殊なファンクション、アプリケーションまたはアルゴリズムを実行する）ユーザによって特別に創成されたプロセスまたはカスタム・プロセスからの情報またはメッセージを全体的なプロセス制御スキームを実行するシステムによって解釈されることが可能なスキーマまたはフォーマットでワードラップできるようにする、拡張可能なマークアップ言語（例えばXML）またはこれに類するものを基礎としている。同様に、ユーザによって画定されたカスタム・プロセスも、スキーマを習得していることにより拡張可能なマークアップ言語スキーマを使用してワードラップされている、またはフォーマットされているプロセス制御システムから受信された情報またはメッセージを解釈しかつ処理することができる。こうした方法により、プロセス制御の製造者またはプロバイダは、ユーザが、そのうちの幾つかは特殊なファンクション、アプリケーションまたはアルゴリズムを実行するようにユーザによって創成されることが可能な他のシステム及びプロセスを、ワークステーションまたは他のコンピュータ・システムとプロセス制御システム全体に分散されたコントローラとの間の通信の実行に使用される専有のメッセージ・フォーマットまたはプロトコルを明らかにする必要なしに統合できるようにすることが可能である。
【００１０】
ユーザによって画定されたプロセスまたはシステムもしくは他の何らかのプロセスまたはシステムと、全体的なプロセス制御システムとの統合または両者間の通信を可能にするための周知技術は、典型的には、ユーザによって画定されたプロセスとプロセス制御システム内のコントローラ及び／またはスマート・フィールド・デバイスとの間の直接通信を許容しない。反対に、（XMLを基礎とするものもある）これらの周知技術では、ユーザによって画定されたプロセスまたはシステムは、通信ネットワークを介してコントローラ及び他のデバイスに結合されたワークステーションまたは他のコンピュータ・システムを介してコントローラ及び／またはスマート・フィールド・デバイスと通信しなければならない。残念ながら、通信ネットワーク（例えばLAN）を介する通信は、特にコントローラとスマート・フィールド・デバイスとの間で行われる通信に比べると比較的遅い。さらに、プロセス制御システム内のコントローラ及び他のデバイスとユーザによって画定されたプロセスまたはシステムとの間の情報交換を可能にする拡張可能なマークアップ言語またはこれに類するものの使用は、追加の通信オーバーヘッドを発生させる。このような追加的な通信オーバーヘッドはさらに、ユーザによって画定されたプロセスまたはシステムとプロセス制御システムのコントローラ及び／または他のデバイスとの間で伝達されることが可能な情報またはメッセージの有効速度を遅くする。
【００１１】
ユーザによって画定されたプロセスとプロセス制御システムによって実行されている全体的なプロセス制御ルーチンとの間で情報を伝達しなければならないことによるさらなる不利益は、ユーザによって画定されたプロセスまたはシステムによって供給される、または使用される情報またはメッセージがコントローラ及び／またはコントローラに接続されたスマート・フィールドによって実行されている活動と典型的には同期されない点にある。従って、全てではないにしてもプロセス制御システムの大部分においては、ワークステーションとコントローラとを通信できるように結合している通信ネットワークを介して発生する通信は、比較的低いデータ・スループットを有し、かつコントローラとフィールド・デバイスとの間に発生する通信とは同期されない。アプリケーションによっては、ユーザによって画定された特殊なプロセスまたはシステムと全体的なプロセス制御システムのオペレーションとを、例えば２つのシステム間のより迅速な情報交換を可能にすることにより、かつ２つのシステム間の同期を可能にすることによりさらに厳密に統合する、または結合させることができないことが、ユーザによって画定されたプロセスまたはシステムが非実用的なものにする、または場合によっては不能にする可能性のあるものがある。
【発明の概要】
【課題を解決するための手段】
【００１２】
本明細書に記述されているカスタム・ファンクション・ブロック及びカスタム・ファンクション・ブロックを創成する方法は、プロセス制御システムのユーザが、ユーザによって画定されることが可能な特殊なファンクション、アプリケーション、アルゴリズム及び／またはプロセスを全体的なプロセス制御システムのオペレーションに厳密に統合または結合できるようにする。特に、本明細書に記述されているカスタム・ファンクション・ブロックの創成技術は、ユーザによって選択され、修正されかつ／または組み合わされることが可能なテンプレート、ルーチン、プロシージャ、テーブル他を含む予め画定されたライブラリを使用して、その各々が１つまたは複数のカスタム・ファンクション・ブロックを包含することが可能な１つまたは複数のファンクション・ブロック・ライブラリを組み立てる、生成する、または画定することができる。テキストのエディタ、グラフィック・ユーザ・インタフェース、ファンクション・ブロックのウィザードまたはバーチャル・エキスパート他を使用すれば、カスタム・ファンクション・ブロックの生成を促進することができる。
【００１３】
本明細書に記述されているシステム及び技術によって使用される予め画定されたライブラリは、様々なタイプのファンクション・ブロック・コンポーネントを含んでいるが、その中にはプロセス制御システムがファンクション・ブロックを全体的なプロセス制御ルーチンに統合するために必要なものもあれば、必要でないものもある。ユーザは、本明細書に記述されているシステム及び技術を使用して、プロセス制御システムのプロバイダまたは製造者によってファンクション・ブロックの標準ライブラリに提示されていないファンクション、アプリケーション、アルゴリズムまたはプロセスを実行する１つまたは複数のカスタム・ファンクション・ブロックを創成し、生成し、もしくは画定することができる。一般に、ユーザは、ファンクション・ブロック・コンポーネントを含む予め画定されたライブラリから必要なファンクション・ブロック・コンポーネントを選択し、かつ所望されればこれを修正し、選択されたコンポーネントをカスタム・ファンクション・ブロックに包含する。ユーザはまた、適切な追加のコードまたはソフトウェアを入力することによるカスタム・ファンクション・ブロックが実行する追加のファンクションまたはアルゴリズムをカスタム・ファンクション・ブロックの定義に包含することもできる。
【００１４】
本明細書に記述されているシステム及び技術は、ファンクション・ブロックの標準ライブラリに提示されているファンクション・ブロックに構造が似ている、または同じ構造の新たなファンクション・ブロックまたはカスタム・ファンクション・ブロックを生成することにより、ユーザが、プロセス制御システムのプロバイダまたは製造者によってファンクション・ブロックの標準ライブラリに提示されていないカスタム・ファンクション、アプリケーションまたはアルゴリズム他を実行できるようにする。その結果、カスタム・ファンクション（即ち、カスタム・ファンクション・ブロック）は、標準的なファンクション・ブロックのようなプロセス制御システム内にコンパイルされて使用されることが可能である。このように、カスタム・ファンクション、アプリケーションまたはプロセスは、例えば拡張可能なマークアップ言語を使用してワークステーション及びLANを介して通信する必要がないことから、カスタム・ファンクション・ブロック内に画定されたプロセス、アプリケーション、アルゴリズム他が全体的なプロセス制御ルーチン内で比較的高速で通信できる。さらに、カスタム・ファンクション・ブロックは標準的なファンクション・ブロックの場合に似た方法で、もしくはこれと同一の方法でコントローラ及び／またはスマート・フィールド・デバイスへとコンパイルされかつダウンロードされることが可能であるため、カスタム・ファンクション・ブロックとプロセス制御システム内の他の標準的なファンクション・ブロックとの間の通信は同期的に発生することが可能である（即ち、カスタム・ファンクション・ブロックのオペレーションを標準的なファンクション・ブロックのオペレーションと合わせてスケジュールすることができる）。
【００１５】
ある態様によれば、プロセス制御システムとともに用いるためのファンクション・ブロックを創成する方法は、複数のソース・ファイルから初期化ルーチンを選択することが可能であり、複数のソース・ファイルから周期的な実行ルーチンを選択することが可能であり、かつ複数のソース・ファイルから書込みチェック・ルーチンを選択することが可能である。さらに、本方法は、初期化ルーチン、周期的な実行ルーチン及び書込みチェック・ルーチンをファンクション・ブロックに関連づけることが可能であり、かつ初期化ルーチン、周期的な実行ルーチン及び書込みチェック・ルーチンのうちの１つをプロセス制御システムには供給されていないプロシージャを包含するように修正することができる。
【００１６】
他の態様によれば、プロセス制御システムにおいて使用するためのファンクション・ブロックを創成する方法は、プロセス制御システムのプロバイダによって生成されたファイル・グループからの複数のファイルを組み合わせて、そのファンクション・ブロックに関連づけられたファイルを形成することが可能であり、かつファンクション・ブロックに関連づけられたファイル内部の複数のファイルのうちの１つをファイル・グループ内部に含まれていないプロシージャを包含するように修正することができる。
【００１７】
さらに他の態様によれば、プロセス制御システムとともに用いるためのファンクション・ブロックを創成するためのシステムは、コンピュータ読取り可能な媒体と、コンピュータ読取り可能な媒体に記憶されかつ複数のソース・ファイルから初期化ルーチンを選択するようにプロセス制御システムによって実行されるべく適合化された第１のソフトウェアと、コンピュータ読取り可能な媒体に記憶されかつ複数のソース・ファイルから周期的実行ルーチンを選択するようにプロセス制御システムによって実行されるべく適合化された第２のソフトウェアとを含むことが可能である。本システムはまた、コンピュータ読取り可能な媒体に記憶されかつ複数のソース・ファイルから書込みチェック・ルーチンを選択するようにプロセス制御システムによって実行されるべく適合化された第３のソフトウェアと、コンピュータ読取り可能な媒体に記憶されかつ初期化ルーチン、周期的実行ルーチン及び書込みチェック・ルーチンをファンクション・ブロックに関連づけるようにプロセス制御システムによって実行されるべく適合化された第４のソフトウェアと、コンピュータ読取り可能な媒体に記憶されかつ初期化ルーチン、周期的実行ルーチン及び書込みチェック・ルーチンのうちの１つを修正してプロセス制御システムに供給されていないプロシージャを包含させるようにプロセス制御システムによって実行されるべく適合化された第５のソフトウェアとを含むことが可能である。
【００１８】
さらなる他の態様によれば、カスタム・ファンクション・ブロックをプロセス制御システム内に組み込む方法は、プロセス制御システムのプロバイダが生成したファイル・グループからの複数のファイルを組み合わせてファンクション・ブロックに関連づけられたソース・コード・ファイルを形成することによってカスタム・ファンクション・ブロックを生成することが可能であり、かつソース・コード・ファイル内の複数のファイルの１つを、ファイル・グループ内に含まれていないプロシージャを包含するように修正することができる。本方法はまた、ソース・コード・ファイルをコンパイルしかつリンクしてコンパイル／リンクされたカスタム・ファンクション・ブロック・ファイルを形成することが可能であり、かつコンパイル／リンクされたカスタム・ファンクション・ブロック・ファイルをプロセス制御システムのプロバイダへ転送することができる。さらに、本方法は、コンパイル／リンクされたカスタム・ファンクション・ブロック・ファイルの妥当性を確認することが可能であり、コンパイル／リンクされたカスタム・ファンクション・ブロック・ファイルに安全措置を付加して妥当性を確認されたカスタム・ファンクション・ブロック・ファイルを形成することが可能であり、かつ妥当性を確認されたカスタム・ファンクション・ブロック・ファイルをプロセス制御システムのユーザへ転送することが可能である。さらに、本方法は、妥当性を確認されたカスタム・ファンクション・ブロック・ファイルをプロセス制御システム内へ組み込むことができる。
【００１９】
さらに他の態様によれば、カスタム・ファンクション・ブロックを使用する方法は、情報をデータ・ソースからカスタム・ファンクション・ブロックへ伝達し、データ・ソースからの情報をカスタム・ファンクション・ブロック内のファンクションを基礎として処理し、かつ処理された情報の少なくとも幾分をプロセス制御システムのアプリケーションへ伝達する。
【図面の簡単な説明】
【００２０】
【図１】カスタム・ファンクション・ブロックの構造及び生成技術の概要を描いた例示的なブロック図である。
【図２】制御システムのプロバイダまたは製造者がその制御システム内のカスタム・ファンクション・ブロックの使用を制御することのできる一方法を描いた例示的なフローチャートである。
【発明を実施するための形態】
【００２１】
本明細書に記述されているカスタム・ファンクション・ブロック及びカスタム・ファンクション・ブロックを創成する方法は、プロセス制御システムのユーザが、ユーザによって画定されることが可能な特殊なファンクション、アプリケーション、アルゴリズム及び／またはプロセスを全体的なプロセス制御システムのオペレーションに厳密に統合または結合できるようにする。より特定的には、本明細書に記述されているカスタム・ファンクション・ブロックの創成技術は、ユーザによって選択され、修正されかつ／または組み合わされることが可能なテンプレート、ルーチン、プロシージャ、テーブル他を含む予め画定されたライブラリを使用して、その各々が１つまたは複数のカスタム・ファンクション・ブロックを包含することが可能な１つまたは複数のファンクション・ブロック・ライブラリを組み立てる、生成する、または画定することができる。テキストのエディタ、グラフィック・ユーザ・インタフェース、ファンクション・ブロックのウィザードまたはバーチャル・エキスパート他を使用すれば、カスタム・ファンクション・ブロックの生成を促進することができる。
【００２２】
本明細書に記述されているシステム及び技術によって使用される予め画定されたライブラリは、様々なタイプのファンクション・ブロック・コンポーネントを含んでいるが、その中にはプロセス制御システムがファンクション・ブロックを全体的なプロセス制御ルーチンに統合するために必要なものもあれば、必要でないものもある。ユーザは、本明細書に記述されているシステム及び技術を使用して、プロセス制御システムのプロバイダまたは製造者によってファンクション・ブロックの標準ライブラリに提示されていないファンクション、アプリケーション、アルゴリズムまたはプロセスを実行する１つまたは複数のカスタム・ファンクション・ブロックを創成し、生成し、もしくは画定することができる。一般に、ユーザは、ファンクション・ブロック・コンポーネントを含む予め画定されたライブラリから必要なファンクション・ブロック・コンポーネントを選択し、かつ所望されればこれを修正し、選択されたコンポーネントをカスタム・ファンクション・ブロックに包含する。ユーザはまた、適切な追加のコードまたはソフトウェアを入力することによるカスタム・ファンクション・ブロックが実行する追加のファンクションまたはアルゴリズムをカスタム・ファンクション・ブロックの定義に包含することもできる。
【００２３】
本明細書に記述されているシステム及び技術は、ファンクション・ブロックの標準ライブラリに提示されているファンクション・ブロックに構造が似ている、または同じ構造の新たなファンクション・ブロックまたはカスタム・ファンクション・ブロックを生成することにより、ユーザが、プロセス制御システムのプロバイダまたは製造者によってファンクション・ブロックの標準ライブラリに提示されていないカスタム・ファンクション、アプリケーションまたはアルゴリズム他を実行できるようにする。その結果、カスタム・ファンクション（即ち、カスタム・ファンクション・ブロック）は、標準的なファンクション・ブロックのようなプロセス制御システム内にコンパイルされて使用されることが可能である。このように、カスタム・ファンクションまたはプロセスは、例えば拡張可能なマークアップ言語を使用してワークステーション及びLANを介して通信する必要がないことから、カスタム・ファンクション・ブロック内に画定されたプロセス、アルゴリズム他が全体的なプロセス制御ルーチン内で比較的高速で通信できる。さらに、カスタム・ファンクション・ブロックは標準的なファンクション・ブロックの場合に似た方法で、もしくはこれと同一の方法でコントローラ及び／またはスマート・フィールド・デバイスへとコンパイルされかつダウンロードされることが可能であるため、カスタム・ファンクション・ブロックとプロセス制御システム内の他の標準的なファンクション・ブロックとの間の通信は同期的に発生することが可能である（即ち、カスタム・ファンクション・ブロックのオペレーションを標準的なファンクション・ブロックのオペレーションと合わせてスケジュールすることができる）。
【００２４】
図１は、概してカスタム・ファンクション・ブロック１０２の構造及び生成技術を描いた例示的なブロック図１００である。図１が示すように、カスタム・ファンクション・ブロック１０２は、初期化プロシージャまたはルーチン１０４と、周期的実行ルーチン１０６と、書込みチェック・ルーチン１０８とを含んでいる。ルーチン１０４乃至１０８は、概してカスタム・ファンクション・ブロック１０２の行動または方法と呼ぶことができる。ルーチン１０４乃至１０８は、公衆データ１１０及び／またはプライベート・データ１１２を使用する様々な属性を含むことが可能である。属性及び必然的に属性に関連づけられた公衆データ１１０及び／またはプライベート・データ１１２は、カスタム・ファンクション・ブロックが属性テーブル１１４を介してインスタンスを作成されるプロセス制御システム（図示されていない）から取得されることが可能である。同じく図１が示すように、かつ後により詳細に説明されるように、カスタム・ファンクション・ブロック１０２は、ヘッダ・ファイルの集合１１６、ソース・ファイルの集合１１８及び／またはライブラリ・ファイルの集合１２０を使用して生成される、もしくは画定されることが可能である。さらにカスタム・ファンクション・ブロック１０２は、関連づけられた名前１２２を有することが可能であり、かつ複数のカスタム・ファンクション・ブロック１２６を含むカスタム・ファンクション・ブロック・ライブラリ１２４の一部であることが可能である。
【００２５】
初期化ルーチン１０４は、実行されると、カスタム・ファンクション・ブロック１０２に関連づけられた公衆データ１１０とプライベート・データ１１２とを初期化するように適合化される。データ１１０及び１１２の初期設定値は、好適にはデフォルト値または初期値であって、この場合、初期化ルーチン１０４は、周期的実行ルーチン１０６の実行に先行して一度実行されるが、必ずしもこの限りではない。当然ながら、所望されれば、初期化ルーチン１０４をユーザが必要とする特定のアプリケーションまたはファンクションに合わせて複数回実行することもできる。
【００２６】
書込みチェック・ルーチン１０８は、実行されると、外部ソース（即ち、ファンクション・ブロック１０２の外側）からカスタム・ファンクション・ブロック１０２の公衆データ１１０へ書き込まれるデータの妥当性を確認するように適合化される。書込みチェック・ルーチン１０８は、好適には、外部ソースによる公衆データ１１０へのデータまたは情報の書込みの試行に応答して呼び出される。書込みチェック・ルーチン１０８は、ファンクション・ブロック１０２のカレント・ステートがターゲット・データへの外部からの書込みの実行を許容するかどうか、外部ソースによるターゲット・データの書き込みが可能であるかどうか、及び／またはターゲット・データに書き込まれている情報またはデータが１つまたは複数の予め決められた許容限界内にあるかどうかを決定することができる。例えば、ブロック１０２は、その時点でターゲット・データを使用している可能性があり、間違いの多い結果または間違った結果をもたらす可能性のある幾つかのプロシージャ、一連のステップ他を完了する前に外部ソースにターゲット・データを変更させる。当然ながら、書込みチェック・ルーチン１０８によって他の任意の異なるタイプ、または追加タイプのチェックを実行することも可能である。
【００２７】
周期的実行ルーチン１０６は、実行されると、ユーザが制御システム内で実施する必要のある、かつ制御システムのプロバイダまたは製造者によって供給された標準ファンクション・ブロックを介しては利用され得ない可能性のある特殊なファンクションまたはアルゴリズムを実行するように適合化される。例示的なものとして、周期的実行ルーチン１０６は、制御システムと、そうでなければ制御システムが通信し得なかった先である他の何らかのアプリケーション、システムまたはデバイスとの間で情報またはデータを交換できるようにするマッピング・ファンクションまたはアルゴリズムを含むことが可能である。代替として、またはこれに加えて、周期的実行ルーチン１０６は、典型的には標準ファンクション・ブロック内に供給されることのないプロセス制御システムに関連づけられた収益性の計算及び／または他の何らかの財務計算を含むことが可能である。当然ながら、周期的実行ルーチン１０６内に包含できるファンクションまたはアルゴリズムの数及びタイプは、実質的には無制限である。実際には、周期的実行ルーチン１０６によって実行される特殊なファンクションまたはアルゴリズムは、典型的にはカスタム・ファンクション・ブロック１０２の全体的な行動を画定し、よってカスタム・ファンクション・ブロック１０２の名前はその特殊な行動を反映することができる。例えば、周期的実行ルーチン１０６が収益性の計算のファンクションまたはアルゴリズムを含んでいれば、ファンクション・ブロックの名前１２２は、そのファンクションまたはアルゴリズムを反映して「FB＿PROFITCALC」であることが可能である。
【００２８】
周期的実行ルーチン１０６は、公衆データ１１０及び／またはプライベート・データ１１２を使用するアルゴリズムを包含することが可能である。公衆データ１１０は概して、制御システム内でインスタンスを作成された任意のカスタムまたは標準ファンクション・ブロックによる使用が可能であるが、公衆データ１１０の幾分か、または全てをカスタム・ファンクション・ブロック１０２によって独占使用することも可能である。公衆データ１１０は、例えば、カスタム・ファンクション・ブロック１０２が外部のデータ・エリア（即ち、カスタム・ファンクション・ブロック１０２の外側の任意のデータ・エリア）からカスタム・ファンクション・ブロック１０２の公衆データ１１０へ転送する外部データを包含することができる。公衆データ１１０はまた、例えば、周期的実行ルーチン１０６が実行の間に公衆データ１１０及び／またはプライベート・データ１１２を使用して導出するデータを包含することができる。
【００２９】
これに対して、プライベート・データ１１２は、他のファンクション・ブロックによるアクセスができないデータである。典型的には、プライベート・データ１１２は、カスタム・ファンクション・ブロック１０２に関連づけられたブロック実行の情報またはデータの履歴を追跡するために使用され、かつブロック１０２の後続の実行において使用可能である、もしくは１つまたは複数の異常なイベントに対応してブロック１０２の行動を制御するために使用可能である。公衆データ１１０と同様に、プライベート・データ１１２は、周期的実行ルーチン１０６が外部のデータ・エリアプライベート・データ１１２へ転送する外部データを包含することが可能であり、かつ／または周期的実行ルーチン１０６が公衆データ１１０及び／またはプライベート・データ１１２から導出するデータを包含することができる。
【００３０】
公衆データ１１０及びプライベート・データ１１２は、所望の任意の計算タイプであることが可能である。例えば、浮動小数点、浮動小数点アレイ、８ビット、１６ビット及び／または３２ビットの符号付き、または符号のない整数（シングルまたはダブル・ディメンション）、ASCIIストリング、ユニコード・ストリング、他を所望の任意の組合せで使用することができる。さらに、公衆データ１１０及びプライベート・データ１１２内のデータ・アイテムの各々には、周期的実行ルーチン１０６または他のファンクション・ブロック内の他の周期的実行ルーチンによって参照されることが可能な名前を付けることができる。
【００３１】
属性テーブル１１４は、カスタム・ファンクション・ブロック１０２によって使用される属性を、カスタム・ファンクション・ブロック１０２がインスタンスを作成されている制御システム内の情報またはデータへマップする。特に、カスタム・ファンクション・ブロック１０２内に画定されている属性の各々は、例えば、制御システム内のデータ・ソースへ属性をマップする属性テーブル１１４の特定の行または部分を参照するポインタを包含することができる。好適には、カスタム・ファンクション・ブロック１０２内の属性の各々と属性テーブル１１４の行との間に唯一の対応が存在するが、他のファンクション・ブロックもまた、属性テーブル１１４によって供給されるマッピング・ファンクションを使用するポインタを包含することができる。言い替えれば、属性テーブル１１４内の各行は、複数のファンクション・ブロックによって属性テーブル１１４の各行が参照またはポイントされ得るように、１対多数の関係を有することが可能である。
【００３２】
カスタム・ファンクション・ブロック１０２を構築し、創成しかつ生成するために、ユーザは、ソフトウェア・ソースのコード・ファイル及び／またはその表示の目視及び操作を可能にするテキスト・エディタ、グラフィック・ユーザ・インタフェースまたは他の任意の技術を使用することができる。図１が示すように、ユーザは、ヘッダ・ファイル１１６、ソース・ファイル１１８及びライブラリ・ファイル１２０から選択されたファイルを組み合わせてカスタム・ファンクション・ブロック１０２を創成させることが可能である。
【００３３】
ヘッダ・ファイル１１６は、ターゲットプロセス制御システム（即ち、カスタム・ファンクション・ブロック１０２のインスタンスが作成されるプロセス制御システム）内のファンクション・ブロックによって使用されることが可能な異なるタイプの構造及び呼出しインタフェースの定義を含んでいる。これに対して、ライブラリ・ファイル１２０は、ターゲット制御システム内のルーチン・アクティビティの実行に必要であると思われるヘルパ・ルーチンを含んでいる。例えば、ライブラリ・ファイル１２０は、ターゲット・プロセス制御システム内での所望のオペレーション・モードの確立を促進する１つまたは複数のルーチンを含むことが可能である。
【００３４】
ソース・ファイル１１８は、初期化ルーチン１０４、周期的実行ルーチン１０６及び書込みチェック・ルーチン１０８を含むソフトウェア・ソースのコード・ファイルである。ソース・ファイル１１８は、例えばC＋＋のような高レベルのプログラミング言語を基礎とする場合もあり、他の任意の所望のプログラミング言語を基礎とする場合もある。ユーザによる、例えばカスタム・ファンクション・ブロック１０２のようなカスタム・ファンクション・ブロックの創成を促進するために、各ソース・ファイル１１８は、ソース・ファイル１１８内に含まれる様々なソフトウェア・コード部分の目的及びファンクションを明確に説明する広範なコメントを包含することが可能である。例えば本コメントは、ソース・ファイル１１８のどれが、もしくはどの部分がルーチン１０４乃至１０８の各々に対応しているかを明確に示すことができる。さらに、ソース・ファイル１１８におけるコメントは、ユーザが所望のカスタム・アルゴリズムまたはファンクションのソース・コードを周期的実行ルーチン１０６内のどこに挿入すべきであるかを明示的に指摘することができる。またさらに、本コメントは、ライブラリ・ファイル１２０内に含まれる１つまたは複数のヘルパ・ルーチンの使用を示唆することが可能であり、かつさらに、これらのヘルパ・ルーチンがカスタム・ファンクション・ブロック１０２内に統合され得る方法を示唆または説明することができる。好適には、ソース・ファイル１１８は、ヘッダ・ファイル１１６のうちでカスタム・ファンクション・ブロック１０２の創成、構築または生成に必要とされ得るものを示す参照またはポインタをも含むが、必ずしもこの限りではない。
【００３５】
図１は、ヘッダ・ファイル１１６、ソース・ファイル１１８及び／またはライブラリ・ファイル１２０から生成され、創成され、もしくは構築された単一のカスタム・ファンクション・ブロック１０２を描いているが、所望されれば、複数のカスタム・ファンクション・ブロックを創成することも可能である。複数のカスタム・ファンクション・ブロックが創成される場合は、これらのファンクション・ブロックをカスタム・ファンクション・ブロックの１つまたは複数のライブラリ内に集めることができる。
【００３６】
さらに、ヘッダ・ファイル１１６及びソース・ファイル１１８に使用される特定のプログラミング言語は、ユーザによるカスタム・ファンクション・ブロックの生成を促進するように選択され得る点を認識することが重要である。例えば、C＋＋は、オブジェクト指向技術を使用するプログラミングに特によく適合しているが、これは、比較的複雑なプロセス制御システム用のソフトウェア・アルゴリズムを生成するための直観的フレームワークを提供する。当然ながら、他の任意のプログラミング言語及び／またはプログラミング技術を代用することも可能である。
【００３７】
ヘッダ・ファイル１１６、ソース・ファイル１１８及びライブラリ・ファイル１２０のコンテンツは、ターゲット制御システムの特定要件を満足させるように構成される。言い替えれば、ライブラリ・ファイル１２０は、例えばモード制御アクティビティ、ステータス・アクティビティ、デバッギング・アクティビティ他のようなアクティビティをターゲット制御システムの特定要件に適合する方法で実行するヘルパ・ルーチンを包含することができる。同様に、ヘッダ・ファイル１１６及びソース・ファイル１１８は、制御システムによってコンパイルされ、リンクされかつ実行されるとターゲット制御システムの特定要件に適合するようになるソース・コードを包含することができる。
【００３８】
従って、本明細書に記述されているカスタム・ファンクション・ブロックを使用すれば、ユーザによって画定されることが可能な特殊なファンクション、アプリケーション、アルゴリズム及び／またはプロセスを全体的なプロセス制御システムのオペレーションに厳密に統合または結合することができる。より特定的には、制御システムのユーザまたはオペレータは、１つまたは複数のカスタム・ファンクション・ブロックまたはカスタム・ファンクション・ブロックのライブラリを創成し、生成し、もしくは画定して、そうでなければ制御システムの製造者または供給者によってファンクション・ブロックの標準ライブラリに提示されることのない新たな機能性を制御システムに付加することができる。特に、プロセス制御システムのユーザまたはオペレータは、プロセス制御システムが制御システムの製造者または供給者によって提供される標準ファンクション・ブロックを使用した場合には実行され得ない解析または計算を実行できるようにする１つまたは複数のカスタム・ファンクション・ブロックを創成する、もしくは画定することができる。例えば、プロセス制御システムのユーザまたはオペレータは、プロセス制御システム内の１つまたは複数のパラメータ値を基礎として利益計算を実行するカスタム・ファンクション・ブロックを創成することができる。当然ながら、１つまたは複数のカスタム・ファンクション・ブロックは、システムのユーザまたはオペレータにより、プロセス制御システム内から取得されたパラメータ値を基礎として、かつ後に詳しく述べるように、通常はプロセス制御システムには統合され得ない、よって通常はこれと通信することができない他のデバイス及び／またはシステムから取得されたパラメータ値を基礎として任意の所望される計算を行うように画定され、または創成されることが可能である。
【００３９】
本明細書に記述されているカスタム・ファンクション・ブロックは、旧プロセス制御システムの機能性をアップグレードするために使用可能である。例えば、基本的な制御ケイパビリティしか供給しない旧制御システムには、高度な制御ファンクションを実行するカスタム・ファンクション・ブロックを創成することによって、高度な制御ケイパビリティを付加することができる。同様に、本明細書に記述されているカスタム・ファンクション・ブロックは、例えばプログラマブル論理コントローラのような基本的な制御システムまたはコントローラの機能性をアップグレードする、または高めるために使用可能である。基本的なコントローラまたは制御システムへは、例えば、基本的なコントローラまたは制御システムと他のより複雑なプロセス制御システム、オペレータ端末、他との間に入るカスタム・ファンクション・ブロック層を構築することにより、さらなる機能性を付加することができる。
【００４０】
代替として、または追加的に、システムのユーザまたはオペレータは、プロセス制御システムが他の製造者によって供給された他のデバイス、機器及び／またはシステムとインタフェースできるように、またはこれらと統合できるようにするカスタム・ファンクション・ブロックまたはカスタム・ファンクション・ブロックのライブラリを創成することができる。本明細書に記述されているカスタム・ファンクション・ブロックを使用して一製造者または供給者に関係づけられたプロセス制御システムが他の製造者または供給者に関連づけられたシステムまたはデバイスとインタフェースされる、または統合される場合、このカスタム・ファンクション・ブロックは、プロセス制御システムのユーザによって、他のシステムまたはデバイスにより供給されたデータまたはパラメータをプロセス制御システムによる使用のためにルーティングし、マップし、翻訳し、かつ／または再フォーマットするように画定される、または創成されることが可能である。同様に、カスタム・ファンクション・ブロックは、プロセス制御システムによって供給されたデータまたはパラメータを他のシステムまたはデバイスによる使用のためにルーティングし、マップし、翻訳し、かつ／または再フォーマットすべく機能することもできる。
【００４１】
例示として、本明細書に記述されているカスタム・ファンクション・ブロックは、第１のプロセス制御システムに関連づけられたファンクション・ブロックを第２のプロセス制御システムに関連づけられたファンクション・ブロックにリンクするために使用可能である。但し、この第１及び第２のプロセス制御システムは、異なる製造者または供給者によって供給されることが可能である。第１及び第２のプロセス制御システムの各々におけるPID制御ループは、例えばこの方法でカスケードされることが可能である。無論、本明細書に記述されているカスタム・ファンクション・ブロックは、多数の異なるプロセス制御システムに関連づけられた多数のファンクション・ブロック間に、より複雑なリンクを作り上げるために使用可能である。例えば、異なる個々の制御システム、デバイスまたは機器に関連づけられた２つ以上のファンクション・ブロックを互いに通信できるようにリンクすれば、１つまたは複数のプロセス制御アクティビティを実行することができる。
【００４２】
先行システム及び技術とは対照的に、本明細書に記述されているカスタム・ファンクション・ブロックは、起点の異なるファンクション・ブロックがリンクされることを可能にする点を認識することは重要である。言い替えれば、Fieldbusシステムに関連づけられたファンクション・ブロックは、１つまたは複数のカスタム・ファンクション・ブロックを介して、例えばPROVOXシステムに関連づけられたファンクション・ブロックへリンクされることが可能である。上述のように、本明細書に記述されているカスタム・ファンクション・ブロックは、情報を１つのタイプの制御システムまたはデバイスから他のタイプの制御システムまたはデバイスへシームレスに伝達するために使用されることが可能な標準シェルまたはパラメータ・インタフェースを供給する。例えば、Fieldbusファンクション・ブロックのモード、ステータス及びBLOCK＿ERRの各パラメータに関連づけられた規約は、非Fieldbusファンクション・ブロックに関連づけられた規約及び／または対応するパラメータとは大幅に異なる可能性がある。本明細書に記述されている１つまたは複数のカスタム・ファンクション・ブロックは、Fieldbusファンクション・ブロックと非Fieldbusファンクション・ブロックとの間で伝達されるデータまたは情報をマップし、翻訳しかつ／またはミュートするように創成されることが可能である。このようにして、例えばモード、ステータス及びBLOCK＿ERRのようなFieldbusパラメータは、非Fieldbusファンクション・ブロックによる適切なパラメータへマップされる、もしくは関連づけられることが可能である。
【００４３】
本明細書に記述されているカスタム・ファンクション・ブロックはまた、プロセス制御システム実装の外部にある（即ち、プロセス制御アクティビティを実行しているソフトウェアの一部として、もしくはこれに統合されたものとしては実行されない）アプリケーション及びアルゴリズムがプロセス制御システム実装に密に、またはシームレスに統合され得るようにする。本明細書に記述されているカスタム・ファンクション・ブロックは標準的なファンクション・ブロックのように処理される、または使用されるため、カスタム・ファンクション・ブロックは、外部のシステム、アプリケーションまたはアルゴリズムがプロセス制御システムのソフトウェアの一部であるように見えることを可能にし、かつ外部のシステム、アプリケーションまたはアルゴリズムの実行が全体のプロセス制御システムの実行と同期され得るようにする。
【００４４】
本明細書に記述されているカスタム・ファンクション・ブロックを介する外部のシステム、アプリケーションまたはアルゴリズムとプロセス制御システムとの密でシームレスな統合は、これらの外部のシステム、アプリケーションまたはアルゴリズムがプロセス制御システムによって実行されるアラーム管理アクティビティに統合されることを可能にし、システムのユーザまたはオペレータが、カスタム・ファンクション・ブロックとの関連で、かつ必然的にこれらが対応する外部のシステム、アプリケーションまたはアルゴリズムとの関連で、プロセス制御システムを供給されている標準的な構成ツール、デバッギング・ツール、シミュレーション・ツール、他を使用できるようにする。例示として、回転機器の監視アプリケーションのような状態監視アプリケーションは、状態監視アプリケーションによって監視されるパラメータがプロセス制御システム内にデバイス警告を発生させるために使用され得るように、１つまたは複数のカスタム・ファンクション・ブロックを介してプロセス制御システムに統合されることが可能である。さらに、本明細書に記述されているカスタム・ファンクション・ブロックを使用する外部のシステム、アプリケーションまたはアルゴリズムの統合は、これらの外部のシステム、アプリケーションまたはアルゴリズムがプロセス制御システムによって供給された冗長ファンクションに関与できるようにし、かつプロセス制御システム内に供給されたオペレータ・インタフェース及び／またはドキュメンテーション・システムを使用して外部のシステム、アプリケーションまたはアルゴリズムに関連づけられたファンクション・ブロックに関する情報のビューイングを促進する。またさらに、プロセス制御システムと、本明細書に記述されているカスタム・ファンクション・ブロックによって供給されることが可能な外部のシステム、アプリケーションまたはアルゴリズムとの間の密な統合は、構成のダウンロードの間のプロセス制御システムの状態の管理を促進するために使用可能である。例えば、外部のシステム、アプリケーションまたはアルゴリズムに関連づけられたカスタム・ファンクション・ブロックを使用すれば、ダウンロードの間に外部のシステム、アプリケーションまたはアルゴリズムに関連づけられた最終値を保持することができる。
【００４５】
従って、本明細書に記述されているカスタム・ファンクション・ブロックは、プロセス制御システムのアプリケーションとデータ・ソースとの間に通信できるように置かれることが可能である。より特定的には、プロセス制御の情報である可能性のあるデータ・ソースからの情報はカスタム・ファンクション・ブロックへ伝達されることが可能であり、ファンクション・ブロックは、データ・ソースからの情報の少なくとも幾分かをカスタム・ファンクション・ブロック内のファンクションを基礎として処理することができる。処理された情報の少なくとも幾分かは、次に、プロセス制御システムのアプリケーションに伝達されることが可能である。データ・ソースは、プロセス制御システムのアプリケーションに関連づけられたファンクション・ブロック、デバイスまたはパラメータであることが可能である。代替として、データ・ソースは、プロセス制御システムのアプリケーションの外部にあるシステム、デバイス、アルゴリズムまたはアプリケーションであることが可能である。
【００４６】
カスタム・ファンクション・ブロックによるデータ・ソースから受信された情報の処理は、データ・ソースから受信された情報の幾分か、及び／または処理された情報の幾分かをプロセス制御システムのアプリケーションに関連づけられた、もしくは同アプリケーションによって使用された１つまたは複数のパラメータへマップすることを包含する可能性がある。代替として、または追加的に、カスタム・ファンクション・ブロックは、プロセス制御システムのアプリケーションに関連づけられたパラメータによって使用される値を計算することができる。カスタム・ファンクション・ブロックによって実行される計算は、典型的には、本明細書に記述されているカスタム・ファンクション・ブロックを使用しなければ実行されない、もしくは実行され得ない計算である可能性がある。従って、一般的には、本明細書に記述されているカスタム・ファンクション・ブロックは、カスタム・ファンクション・ブロックによって実行されるファンクションを基礎としてプロセス制御システムのアプリケーションとデータ・ソースとの間で情報を伝達するために使用可能である。こうして、本明細書に記述されているカスタム・ファンクション・ブロックは、プロセス制御アプリケーションの外部にあるデータ・ソースとプロセス制御アプリケーションとの機能的統合を可能にする。所望されれば、本明細書に記述されているカスタム・ファンクション・ブロックは、データ・ソースから受信された情報を基礎として値を計算し、その値をファンクション・ブロックが関連しているプロセス制御システムのアプリケーションによって使用されるパラメータに関連づけることができる。より一般的には、本明細書に記述されているカスタム・ファンクション・ブロックは、例えばデータ・マッピング・ファンクション、データ変換ファンクション、データ翻訳ファンクション、他のような１つまたは複数のファンクションを実行することができる。
【００４７】
図２は、制御システムのプロバイダまたは製造者がその制御システム内のカスタム・ファンクション・ブロックの使用を制御することのできる一方法を描いた例示的なフローチャート２００である。ブロック２０２において、制御システムのユーザまたはオペレータは、例えば図１が示すカスタム・ファンクション・ブロック１０２のようなカスタム・ファンクション・ブロックを生成し、創成し、または構築することができる。ユーザによるこのカスタム・ファンクション・ブロックの生成は、例えばユーザが、ライブラリ・ファイルまたは他のファイルからファンクション・ブロックのコンポーネントを表すアイコンをクリックしてドラッグし、アイコン及び必然的にそれらが表すファイルを組み合わせてファンクション・ブロックを形成できるようにすることが可能な、グラフィックなユーザ・インタフェース、テキスト・エディタまたはこれらに類似するものによって促進されることが可能である。さらに、ユーザは、標準ファンクション・ブロックによって提供されない特殊なファンクション、アルゴリズムまたはプロシージャを包含するようにソース・コード・ファイルを編集する、または変更し得る可能性がある。
【００４８】
ブロック２０４では、ブロック２０２で生成され、創成され、または構築されて完成した１つまたは複数のソース・コード・ファイルがコンパイルされてリンクされ、対応する１つまたは複数のオブジェクト・コード・ファイル（例えば、１つまたは複数のダイナミック・リンク・ライブラリ（DLL））を生成することができる。好適には、１つまたは複数のソース・コード・ファイルのこのコンパイル及びリンクはユーザによって実行されることが可能であり、もしくは所望されれば他の何らかのエンティティが代わりに実行することも可能であるが、この限りではない。ブロック２０６では、カスタム・ファンクション・ブロックに関連してコンパイルされかつリンクされた１つまたは複数のソース・コード・ファイルは、ターゲット・プロセス制御システムのプロバイダに転送されることが可能である。プロバイダは、ターゲット・プロセス制御システムに関連づけられたインストーラ、製造者及び／またはユーザ以外の任意のエンティティであることが可能である。さらに、コンパイルされてリンクされた１つまたは複数のソース・コード・ファイルの転送は、例えばインターネットの使用を含む可能性のある無線及び／または結線接続の通信ネットワークを介する電送、例えば磁気または光学的な記憶ディスクまたは他のデバイスのような何らかのタイプの有形記憶媒体を介する送信、印刷されたハードコピーを介する送信、他、のような所望される任意の技術を使用して実行されることが可能である。
【００４９】
ブロック２０８において、カスタム・ファンクション・ブロック用のコンパイルされてリンクされたソース・コードを受信するエンティティは、ターゲット制御システムにおいてカスタム・ファンクション・ブロックが適正に作動するかどうかの妥当性を検査することができる。また、受信するエンティティは、カスタム・ファンクション・ブロックが、実行されると、受信するエンティティとカスタム・ファンクション・ブロックの創成を担当するエンティティとの間で発効している可能性のある任意のライセンス契約の契約条件に違反しないものであることを決定することが可能である。カスタム・ファンクション・ブロックが有効でなければ、ブロック２１０は制御をブロック２１２へ送り、ブロック２１２においてユーザは、カスタム・ファンクション・ブロックが契約条件に適合しないこと、及び／またはカスタム・ファンクション・ブロックがターゲットプロセス制御システム内で適正に機能しないことを通知されることが可能である。
【００５０】
これに対して、カスタム・ファンクション・ブロックが有効であれば（即ち、ライセンス及び／または機能上の要件が満足されている、または違反されていなければ）、ブロック２１０は制御をブロック２１４へ送る。ブロック２１４では、カスタム・ファンクション・ブロック用のコンパイルされてリンクされたソース・コード・ファイルを受信するエンティティが、デジタル・サインをこのコンパイルされてリンクされたカスタム・ファンクション・ブロック・ファイルへ添付する、または追加することができる。当然ながら、デジタル・サインの代わりに他の任意のタイプの安全または妥当性検査措置を使用することも可能である。代替として、デジタル・サインまたは他の安全／妥当性検査措置を、別個の記憶デバイスまたは媒体として具現されることが可能な別個のデジタル・ファイル内に供給することも可能である。
【００５１】
ブロック２１６では、検証されたカスタム・ファンクション・ブロック・ファイルが、ユーザまたはカスタム・ファンクション・ブロックの創成または構築を担当するエンティティへ転送して戻される。カスタム・ファンクション・ブロック・ファイルは、デジタル・サインまたは上述のような他の何らかの安全措置を伴って転送し戻されることが可能である。ブロック２０６におけるファイル転送の場合と同様に、ブロック２１６におけるファイルの転送は、無線及び／または結線接続された電子転送を含む所望の任意の通信技術を使用して実行されることが可能である。
【００５２】
ブロック２１８において、ユーザまたはカスタム・ファンクション・ブロックの創成を担当するエンティティは、システムのユーザが、プロセス制御のプロシージャ、アルゴリズム他の設計及び実行に標準ファンクション・ブロックを使用することができる方法に類似する方法、またはこれと同一の方法でカスタム・ファンクション・ブロックを選択しかつ使用できるように、カスタム・ファンクション・ブロックをターゲット制御システムへ組み込むことができる。好適には、リリースされたファンクション・ブロックまたは生産ファンクション・ブロックとして使用されるカスタム・ファンクション・ブロックに関して、図２で例示的に示された技術が使用されるが、この限りではない。従って、図２で例示的に示された技術が、必ずしも設計開発をデバッギング・モードまたは他の何らかの開発モードにおいて実行するために使用されなければならないわけではない。こういった方法でユーザは、制御システムのプロシージャの開発プロセスの間、時間のかかるファイルの転送、妥当性検査プロシージャ、他に携わる必要なしに、カスタム・ファンクション・ブロックを使用して自由に実験を行うことができる。但し、ユーザが、制御システムに組み込まれかつ、あるリリースされたキャパシティ、または生産キャパシティで使用されるカスタム・ファンクション・ブロックまたはカスタム・ファンクション・ブロックのライブラリを開発し終えると、ユーザは、図２に関連して示されかつ説明されたものに類似する、もしくはこれと同一のプロシージャに従わざるを得なくなる可能性がある。
【００５３】
図２で例示的に描かれている技術は、単一のカスタム・ファンクション・ブロックの創成及び妥当性検査に関連して説明されているが、図２に描かれた技術は、より一般的に適用可能である。例えば、図２が示す技術を実質的に同時に使用すれば、複数のカスタム・ファンクション・ブロックを創成しかつ検証することができる。さらに、所望されれば、単一のライブラリまたは複数のライブラリ内に複数のカスタム・ファンクション・ブロックの幾つか、または全てを包含することができる。
【００５４】
単なる例示としては、本明細書に記述されているカスタム・ファンクション・ブロック及びカスタム・ファンクション・ブロックを創成する方法を使用して、例えば食品医薬品局（FDA）が要求する可能性のある妥当性検査のような検証プロシージャを促進することができる。さらに、所望されれば、本明細書に記述されているカスタム・ファンクション・ブロック及び創成技術は、カスタム・ファンクション・ブロックがコンパイルされた形で開発されて配置されることを可能にし、これにより、ファンクション・ブロックの創成者以外のエンティティがエンジニアを覆す、もしくはカスタム・ファンクション・ブロックの機能方法を決定することをより困難にし、おそらくは不可能にする。その結果、本明細書に記述されているカスタム・ファンクション・ブロックは、開発者が開発されたファンクション・ブロックを専有者として保持できるように、コンパイルされた形で開発され、配置されることが可能である。
【００５５】
ソフトウェアに実装される場合、本明細書において論じたファンクション・ブロック及びソフトウェア・ルーチンは、コンピュータ、コントローラ、フィールド・デバイス、他のRAMまたはROMにおける磁気ディスク、レーザ・ディスクまたは他の記憶媒体上のような任意のコンピュータ読取り可能メモリに記憶されることが可能である。同様に、このソフトウェアは、例えば電話回線、インターネット、他等の通信チャネル経由を含む任意の周知の伝達方法または所望の伝達方法を介してユーザまたはデバイスに伝達されることが可能である。
【００５６】
単なる例示であることが意図された、本発明を限定する意図のない特定例に関連して本発明を説明してきたが、一般的な当業者には、開示された実施形態に本発明の精神及び範囲を逸脱することなく変更、追加または削除を実行し得ることが明らかとなるであろう。
【図１】
0005253277.tif 000002
【図２】
0005253277.tif 000003