(57)【要約】【課題】  プロセスプラント内の制御システム、安全システム等に於いて使用され得る、機能ブロックダイヤグラムプログラミング環境に容易に統合し得る一又はそれ以上の状態マシン機能ブロックを提供する。【解決手段】  この状態マシン機能ブロックは、一又はそれ以上の入力を有し、この入力は、その状態マシン機能ブロックによって実現された状態マシンを状態変化させる。状態マシン機能ブロックは、少なくとも一部分、必要に応じ遷移すべき次の状態を示すデータに基づいてそれが遷移すべき次の状態を決定し得る。コンフィグレーションデータは、状態マシンの現在の状態と入力の少なくとも一つとに基づいて、データベースから検索され得る。状態マシン機能ブロックはまた、状態マシンの現在の状態に基づいて生成される一又はそれ以上の出力を含んでいる。【選択図】  図８
2005085271.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイデバイス及び入力デバイスを有する構成デバイスを介して、プロセスプラントに関連し状態マシンを実現するための機能ブロックを構成するための方法であって、該方法は、
その状態マシンが複数の状態の中でどのように遷移すべきかを、少なくとも部分的に、構成するために、前記ディスプレイデバイスを介してグラフィカルユーザーインターフェースを提供することを含み、
ここで、前記グラフィカルユーザーインターフェースは複数のグラフィカル要素を含み、そのグラフィカル要素の少なくとも幾つかは状態間の所望の遷移を表すのに使用され得、
前記少なくとも一つの入力は、前記プロセスプラントに関連づけられるべきであり、
前記グラフィカルユーザーインターフェースを介して状態遷移データを受け取ることと、
その状態遷移データをその機能ブロックが関連する第１のコンピュータ読み取り可能な媒体上に格納することと
を包含している方法。
【請求項２】
請求項１記載の方法であって、前記複数のグラフィカル要素は、前記機能ブロックに関連する第１の複数のセルを有し、該第１の複数のセルのそれぞれは、前記少なくとも一つの入力のうちの一つと前記状態マシンの前記複数の状態のうちの状態の一つとの可能なペアの少なくとも幾つかのうちの一つに対応しており、
前記状態遷移データを受け取ることは、前記第１の複数のセルの少なくとも幾つかのそれぞれに関連するそれぞれのデータを前記入力デバイスを介して受け取ることを含み、前記それぞれのデータは、前記状態マシンがそのセルに対応する状態にあるとき及び前記セルに対応する入力が特定の値であるときに、前記状態マシンが遷移すべき次の状態を表している、方法。
【請求項３】
請求項２記載の方法であって、前記第１の複数のセルの適当なセルに前記状態遷移データの表示を前記ディスプレイデバイス上に表示することを更に含んでいる方法。
【請求項４】
請求項２記載の方法であって、前記第１の複数のセルを前記ディスプレイデバイス上に表示することは、前記第１の複数のセル、セルの少なくとも一つの行及びセルの複数の列を含むマトリックスを前記ディスプレイデバイス上に表示することを含み、前記少なくとも一つの行のそれぞれの行は前記少なくとも一つの入力のうちの対応する入力に関連し、前記複数の列の各列は前記複数の状態のうちの対応する状態に関連している、方法。
【請求項５】
請求項２記載の方法であって、前記第１の複数のセルを前記ディスプレイデバイス上に表示することは、前記第１の複数のセルを含むマトリックスを前記ディスプレイデバイス上に表示することを含み、該マトリックスはセルの複数の行とセルの少なくとも一つの列とを含み、前記複数の列のそれぞれの列は前記複数の状態のうちの対応する状態に関連し、前記少なくとも一つの列の各列は前記少なくとも一つの入力のうちの対応する入力に関連している、方法。
【請求項６】
請求項２記載の方法であって、前記特定の値は、論理１、論理０、論理ＴＲＵＥ値及び論理ＦＡＬＳＥ値のうちの一つである、方法。
【請求項７】
請求項２記載の方法であって、
前記少なくとも一つの入力に於ける入力の数を表すデータを前記入力デバイスを介して受け取ることと、
前記入力の数に基づいて前記第１の複数のセルに於けるセルの数を決定することと
を更に含んでいる、方法。
【請求項８】
請求項７記載の方法であって、
前記複数の状態に於ける状態の数を表すデータを前記入力デバイスを介して受け取ることを含み、
前記第１の複数のセルに於けるセルの数を決定することは、前記入力の数と前記状態の数とに基づいて前記セルの数を決定することとを含んでいる、方法。
【請求項９】
請求項２記載の方法であって、
前記複数の状態に於ける状態の数を表すデータを前記入力デバイスを介して受け取ることと、
前記状態の数に基づいて前記第１の複数のセルに於けるセルの数を決定することとを更に含んでいる、方法。
【請求項１０】
請求項２記載の方法であって、前記複数のグラフィカル要素は、前記機能ブロックに関連する第２の複数のセルを有し、前記第２の複数のセルのそれぞれのセルは、前記機能ブロックの複数の出力のそれぞれの一つと、前記状態マシンの前記複数の状態のうちのそれぞれの一つとに対応し、
前記第２の複数のセルの少なくとも幾つかに関連する出力コンフィグレーションデータを前記入力デバイスを介して受け取ることを含み、前記第２の複数のセルの少なくとも幾つかのセルのそれぞれに関連するそれぞれの出力コンフィグレーションデータは、前記状態マシンがそのセルに対応する状態にあるときに、そのセルに対応する出力の出力値を表すデータを含み、
前記機能ブロックに関連する第２のコンピュータ読み取り可能な媒体上に前記出力コンフィグレーションデータを格納することを含む、方法。
【請求項１１】
請求項１０記載の方法であって、前記第１のコンピュータ読み取り可能な媒体は、前記第２のコンピュータ読み取り可能な媒体を含んでいる、方法。
【請求項１２】
請求項１記載の方法であって、
不良の状態を有する入力をどのように取り扱うかを表すデータを受け取ることと、
不良の状態を有する入力をどのように取り扱うかを表すデータを格納することとを更に包含している方法。
【請求項１３】
請求項１記載の方法であって、前記少なくとも一つの入力は複数の入力を含み、該方法は、
前記複数の入力に関連する優先度を表すデータを前記グラフィカルユーザーインターフェースを介して受け取ることと、
不良の状態を有する入力をどのように取り扱うかを表すデータを格納することと
を更に包含している方法。
【請求項１４】
請求項１記載の方法であって、もしあれば、前記少なくとも一つの入力の一又はそれ以上が前記状態マシンによって無視されるべきことを表すデータを受け取ることと、
もしあれば、前記少なくとも一つの入力の一又はそれ以上が前記状態マシンによって無視されるべきことを表すデータを格納することとを更に包含している方法。
【請求項１５】
請求項１記載の方法であって、前記少なくとも一つの入力は、プロセス制御システム、プロセス制御システムのシミュレーション、安全システム、安全システムのシミュレーションの少なくとも一つに関連づけられるべきである、方法。
【請求項１６】
請求項１記載の方法であって、前記少なくとも一つの入力は、プロセスプラントに関連する少なくとも一つの他の機能ブロックから受け取られるべきである、方法。
【請求項１７】
請求項１記載の方法であって、前記少なくとも一つの入力は、オペレータインターフェイスから受け取られるべきである、方法。
【請求項１８】
機械的読み取り可能な命令を格納可能な有形の媒体であって、
その状態マシンが複数の状態の中でどのように遷移すべきかを、少なくとも部分的に、構成するために、ディスプレイデバイスを介してグラフィカルユーザーインターフェースを提供するための第１のコードを含み、
ここで、前記グラフィカルユーザーインターフェースは複数のグラフィカル要素を含み、そのグラフィカル要素の少なくとも幾つかは状態間の所望の遷移を表すのに使用され得、
前記少なくとも一つの入力は、前記プロセスプラントに関連づけられるべきであり、
前記グラフィカルユーザーインターフェースを介して状態遷移データを受け取るための第２のコードと、
その状態遷移データをその機能ブロックが関連するコンピュータ読み取り可能な媒体上に格納するための第３のコードと
を包含している媒体。
【請求項１９】
請求項１８記載の有形の媒体であって、前記複数のグラフィカル要素は、前記機能ブロックに関連する第１の複数のセルを有し、該第１の複数のセルのそれぞれは、前記少なくとも一つの入力の一つと、前記状態マシンの前記複数の状態のうちの状態の一つとの少なくとも幾つかの可能なペアの一つに対応しており、
前記第２のコードは、前記第１の複数のセルの少なくとも幾つかのそれぞれに関連するデータを前記コンピュータデバイスの入力デバイスを介して受け取るための第４のコードを含み、前記データのそれぞれは、前記状態マシンがそのセルに対応する状態にあるとき及び前記セルに対応する入力が特定の値であるときに、前記状態マシンが遷移すべき次の遷移を表している、媒体。
【請求項２０】
請求項１９記載の有形の媒体であって、前記第１の複数のセルの適当なセルに前記状態遷移データの表示を前記ディスプレイデバイス上に表示する第５のコードを更に含んでいる、媒体。
【請求項２１】
請求項１９記載の有形の媒体であって、前記第１のコードは、前記第１の複数のセルを有するマトリックスを前記ディスプレイデバイス上に表示する第５のコードを含み、前記マトリックスは、セルの少なくとも一つの行及びセルの複数の列を含み、前記セルの少なくとも一つの行のそれぞれの行は前記少なくとも一つの入力のうちの対応する入力に関連し、前記複数の列の各列は前記複数の状態のうちの対応する状態に関連している、媒体。
【請求項２２】
請求項１９記載の有形の媒体であって、前記第１のコードは、前記第１の複数のセルを含むマトリックスを前記ディスプレイデバイス上に表示する第５のコードを含み、該マトリックスはセルの複数の行とセルの少なくとも一つの列とを含み、前記複数の行のそれぞれの行は前記複数の状態のうちの対応する状態に関連し、前記少なくとも一つの列の各列は前記少なくとも一つの入力のうちの対応する入力に関連している、媒体。
【請求項２３】
請求項１９記載の有形の媒体であって、前記特定の値は、論理１、論理０、論理ＴＲＵＥ値及び論理ＦＡＬＳＥ値のうちの一つである、媒体。
【請求項２４】
請求項１９記載の有形の媒体であって、
前記少なくとも一つの入力に於ける入力の数を表すデータを前記入力デバイスを介して受け取る第５のコードと、
前記入力の数に基づいて前記第１の複数のセルに於けるセルの数を決定する第６のコードとを更に含んでいる、媒体。
【請求項２５】
請求項２４記載の有形の媒体であって、
前記複数の状態に於ける状態の数を表すデータを前記入力デバイスを介して受け取る第７のコードを更に含み、
前記第６のコードは、前記入力の数と前記状態の数とに基づいて前記セルの数を決定することとを含んでいる、媒体。
【請求項２６】
請求項１９記載の有形の媒体であって、
前記複数の状態に於ける状態の数を表すデータを前記入力デバイスを介して受け取る第５のコードと、
前記状態の数に基づいて前記第１の複数のセルに於けるセルの数を決定する第６のコードとを更に含んでいる、媒体。
【請求項２７】
請求項１９記載の有形の媒体であって、前記複数のグラフィカル要素は、前記機能ブロックに関連する第２の複数のセルを有し、前記第２の複数のセルのそれぞれのセルは、前記機能ブロックの複数の出力のそれぞれの一つと、前記状態マシンの複数の状態のうちのそれぞれの一つとに対応し、
前記第２の複数のセルの少なくとも幾つかに関連する出力コンフィグレーションデータを前記入力デバイスを介して受け取る第６のコードを含み、前記第２の複数のセルの少なくとも幾つかのセルのそれぞれに関連するそれぞれの出力コンフィグレーションデータは、前記状態マシンがそのセルに対応する状態にあるときに、そのセルに対応する出力の出力値を表すデータを含み、
前記出力コンフィグレーションデータを格納する第７のコード
を含んでいる、媒体。
【請求項２８】
請求項１８記載の有形の媒体であって、前記少なくとも一つの入力は複数の入力を有し、前記有形の媒体は、
前記複数の入力に関連する優先度を表すデータを前記入力デバイスを介して受け取る第４のコードと、
前記優先度を表す前記データを格納する第５のコードと
を含んでいる、媒体。
【請求項２９】
請求項１８記載の有形の媒体であって、
不良の状態を有する入力をどのように取り扱うかを表すデータを受け取る第４のコードと、
不良の状態を有する入力をどのように取り扱うかを表すデータを格納する第５のコードと
を更に包含している、媒体。
【請求項３０】
請求項１８記載の有形の媒体であって、
もしあれば、前記少なくとも一つの入力の一又はそれ以上を無視すべきかどうかを表すデータを受け取る第４のコードと、
もしあれば、前記少なくとも一つの入力の一又はそれ以上を無視すべきかどうかを表すデータを格納する第５のコードと
を更に包含している、媒体。
【請求項３１】
請求項１８記載の有形の媒体であって、前記少なくとも一つの入力は、プロセス制御システム、プロセス制御システムのシミュレーション、安全システム、安全システムのシミュレーションの少なくとも一つに関連づけられるべきである、媒体。
【請求項３２】
請求項１８記載の有形の媒体であって、前記少なくとも一つの入力は、前記プロセスプラントに関連する少なくとも一つの他の機能ブロックから受け取られるべきである、媒体。
【請求項３３】
請求項１８記載の有形の媒体であって、前記少なくとも一つの入力は、オペレータインターフェイスから受け取られるべきである、媒体。
【請求項３４】
プロセスプラントに於ける一又はそれ以上のフィールドデバイスを制御し又は制御をシミュレートするのに使用するための機能ブロックを実現するための方法であって、該方法は、
その状態マシンが複数の状態の中でどのように遷移すべきかを、少なくとも部分的に、構成するために、ディスプレイデバイスを介してグラフィカルユーザーインターフェースを提供することを含み、ここで、前記グラフィカルユーザーインターフェースは複数のグラフィカル要素を含み、そのグラフィカル要素の少なくとも幾つかは状態間の所望の遷移を表すのに使用され得、
前記少なくとも一つの入力は、前記プロセスプラント内の状態を表すべきであり、
前記グラフィカルユーザーインターフェースを介して前記状態遷移データを受け取ることと、
その状態遷移データをその機能ブロックが関連する第１のコンピュータ読み取り可能な媒体上に格納することと、
前記少なくとも一つの入力を受け取ることとを含み、ここで前記少なくとも一つの入力は前記プロセスプラントに関連し、
前記少なくとも一つの入力の少なくとも一つと、現在の状態と、第１のコンピュータ読み取り可能な媒体上に格納された状態遷移データとに、少なくとも部分的に基づいて、次の状態を決定することと、
前記状態マシンの現在の状態を次の状態に設定することと、
一又はそれ以上のフィールドデバイスの制御に使用するための少なくとも一つの機能ブロック出力を、少なくとも第２の他の機能ブロックに提供することとを含み、ここで、前記少なくとも一つの機能ブロック出力は、前記状態マシンの現在の状態に基づいている、方法。
【請求項３５】
請求項３４記載の方法であって、前記少なくとも一つの入力は、複数の入力を含み、
前記次の状態を決定することは、更に前記複数の入力に関連する優先度に基づいて、次の状態を決定することを含む、方法。
【請求項３６】
請求項３５記載の方法であって、更に前記複数の入力に関連する優先度に基づいて次の状態を決定することは、更に前記複数の入力に関連する順序に基づいて、次の状態を決定することを含む、方法。
【請求項３７】
請求項３４記載の方法であって、
前記少なくとも一つの入力の少なくとも一つと、前記第１のコンピュータ読み取り可能な媒体上に格納された前記状態遷移データとに基づいて、状態遷移が起こるべきかどうかを決定することを更に含み、
前記次の状態を決定することは、もし状態遷移が起こったなら次の状態を決定することを含み、
前記状態マシンの現在の状態を次の状態に設定することは、もし状態遷移が起こったなら前記状態マシンの現在の状態を次の状態に設定することを含んでいる、方法。
【請求項３８】
請求項３４記載の方法であって、前記次の状態を決定することは、もしあれば、特定の値である前記少なくとも一つの入力の一又はそれ以上を決定することを含んでいる、方法。
【請求項３９】
請求項３８記載の方法であって、前記次の状態を決定することは、もしあれば、前記特定の値であって前記第１のコンピュータ読み取り可能な媒体上に格納された前記状態遷移データに基づく状態変化に対応する前記少なくとも一つの入力の前記一又はそれ以上のうちの一又はそれ以上を決定することとを更に含んでいる、方法。
【請求項４０】
請求項３９記載の方法であって、もしあれば、前記特定の値であり状態変化に対応する前記少なくとも一つの入力の前記一又はそれ以上のうちの一つを選択することを更に包含している方法。
【請求項４１】
請求項４０記載の方法であって、前記少なくとも一つの入力は複数の入力を含み、
もしあれば特定の値であり状態変化に対応する前記少なくとも一つの入力の前記一又はそれ以上のうちの一つを選択することは、前記複数の入力に関連する優先度に基づいて選択することを含んでいる、方法。
【請求項４２】
請求項４１記載の方法であって、もしあれば特定の値であり状態変化に対応する前記少なくとも一つの入力の前記一又はそれ以上のうちの一つを選択することは、前記複数の入力に関連する順序に基づいて選択することを含んでいる、方法。
【請求項４３】
請求項３４記載の方法であって、前記次の状態を決定することは、もしあれば、前記第１のコンピュータ読み取り可能な媒体上に格納された前記状態遷移データに基づいて現在の状態からの起こり得る状態変化に関連する前記少なくとも一つの入力の一又はそれ以上を決定することを含んでいる、方法。
【請求項４４】
請求項４３記載の方法であって、前記次の状態を決定することは、もしあれば、特定の値でもある現在の状態からの起こり得る状態変化に関連する前記少なくとも一つの入力の前記一又はそれ以上のうちの一又はそれ以上を決定することを更に含んでいる、方法。
【請求項４５】
請求項３４記載の方法であって、前記少なくとも一つの機能ブロック出力を提供することは、複数の機能ブロック出力を提供することを含む、方法。
【請求項４６】
請求項４５記載の方法であって、前記複数の機能ブロック出力の少なくとも幾つかのそれぞれは、前記状態マシンの現在の状態が前記状態マシンの複数の可能な状態のそれぞれの一つに対応しているかどうかを表している、方法。
【請求項４７】
請求項４５記載の方法であって、前記複数の機能ブロック出力を提供することは、
少なくとも現在の状態に基づいて、前記複数の状態マシン機能ブロック出力の少なくとも幾つかに対する適当な値を表すデータを、出力コンフィグレーションデータベースから検索することと、
前記複数の機能ブロック出力の少なくとも幾つかを適当な値に設定することと
を包含している方法。
【請求項４８】
請求項４５記載の方法であって、前記複数の機能ブロック出力を提供することは、状態マシンの現在の状態を表す一つの機能ブロック出力を提供することを含む方法。
【請求項４９】
請求項３４記載の方法であって、前記少なくとも一つの機能ブロック出力は、状態マシンの現在の状態を表す一つの機能ブロック出力を含んでいる方法。
【請求項５０】
請求項３４記載の方法であって、
前記状態マシン機能ブロックがディスエープルにされるべきかどうかを表す入力を受け取ることと、
もし、前記状態マシン機能ブロックがディスエープルにされるべきかどうかを表す入力が、前記状態マシン機能ブロックはディスエープルにされるべきことを表しているなら、状態マシンの現在の状態をディスエープルの状態に設定すること
を更に包含している方法。
【請求項５１】
請求項５０記載の方法であって、
前記状態マシン機能ブロックが初期状態に強制されるべきかどうかを表す入力を受け取ることと、
もし、前記状態マシン機能ブロックが初期状態に強制されるべきかどうかを表す入力が、前記状態マシン機能ブロックは初期状態に強制されるべきことを表しているなら、状態マシンの現在の状態を初期状態に設定することとを更に包含し、
前記状態マシン機能ブロックがイネープルにされるべきかどうかを表す入力、及び前記状態マシン機能ブロックが初期状態に強制されるべきかどうかを表す入力は、単一の入力を包含している方法。
【請求項５２】
請求項３４記載の方法であって、
前記状態マシン機能ブロックが初期状態に強制されるべきかどうかを表す入力を受け取ることと、
もし、前記状態マシン機能ブロックが初期状態に強制されるべきかどうかを表す入力が、前記状態マシン機能ブロックは初期状態に強制されるべきであることを表しているなら、状態マシンの現在の状態を初期状態に設定することと
を更に包含している方法。
【請求項５３】
請求項３４記載の方法であって、前記状態マシン機能ブロックへ入力された前記少なくとも一つのデータを受け取ることは、プロセス制御システム、プロセス制御システムのシミュレーション、安全システム、安全システムのシミュレーションの少なくとも一つに関連づけられる少なくとも一つの信号を受け取ることを含んでいる、方法。
【請求項５４】
請求項３４記載の方法であって、前記少なくとも一つの入力は、前記プロセスプラントに関連する少なくとも一つの他の機能ブロックから受け取られるべきである、方法。
【請求項５５】
請求項３４記載の方法であって、前記少なくとも一つの入力は、オペレータインターフェイスから受け取られるべきである、方法。
【請求項５６】
請求項３４記載の方法であって、前記少なくとも一つの機能ブロック出力を提供することは、プロセス制御システムの一部に少なくとも一つの機能ブロック出力を提供することを含み、該プロセス制御システムの一部は、少なくとも部分的に、前記少なくとも一つの機能ブロック出力に基づいて前記一又はそれ以上のフィールドデバイスを制御する、方法。
【請求項５７】
請求項３４記載の方法であって、前記少なくとも一つの機能ブロック出力を提供することは、安全システムの一部に少なくとも一つの機能ブロック出力を提供することを含んでおり、該安全システムの一部は、少なくとも部分的に、前記少なくとも一つの機能ブロック出力に基づいて前記一又はそれ以上のフィールドデバイスを制御する、方法。
【請求項５８】
一又はそれ以上のフィールドデバイスの制御又は制御のシミュレートを行うように構成されたプロセッサを有するプロセスプラントに於いて使用するための機能ブロックエンティティであって、該機能ブロックエンティティは、
前記機能ブロックによって実現される状態マシンがどのようにして複数の状態マシンの中へ遷移するかを表す状態遷移データを含む、ユーザが修正可能な状態マシンコンフィグレーションデータベースを含み、前記状態遷移データは、前記複数の状態の少なくとも幾つかのそれぞれと、前記機能ブロックへの少なくとも一つの入力の幾つかのそれぞれとの可能なペアの少なくとも幾つかのそれぞれに対して、前記状態マシンが対応する状態にあるとき及び対応する入力が特定の値にあるときに、その状態マシンが遷移すべき次の状態マシンを表すデータを含んでおり、
第１のコンピュータ読み取り可能な媒体と、
プロセスプラントに関連するデータを含む前記少なくとも一つの入力を受け取るための、前記第１のコンピュータ読み取り可能な媒体上に格納された第１のコードと、
前記状態マシンの次の状態を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第２のコードとを含み、ここで、その決定は、少なくとも部分的に、前記少なくとも一つ入力の少なくとも一つと、状態マシンの現在の状態と、前記状態遷移データとに基づいていて、該第２のコードは固定されており、
前記状態マシンの現在の状態を次の状態に設定するための、前記第１のコンピュータ読み取り可能な媒体上に格納され、固定された第３のコードと、
前記一又はそれ以上のフィールドデバイスの制御に使用するための少なくとも一つの機能ブロック出力を提供するための、前記コンピュータ読み取り可能な媒体上に格納された第４のコードと
を包含しているエンティティ。
【請求項５９】
請求項５８記載の機能ブロックエンティティであって、前記状態マシンコンフィグレーションデータベースは、前記第１のコンピュータ読み取り可能な媒体上に格納されている、エンティティ。
【請求項６０】
請求項５８記載の機能ブロックエンティティであって、前記状態マシンコンフィグレーションデータベースは、前記第１のコンピュータ読み取り可能な媒体とは異なる第２のコンピュータ読み取り可能な媒体上に格納されている、エンティティ。
【請求項６１】
請求項５８記載の機能ブロックエンティティであって、前記少なくとも一つ入力は、複数の入力を有し、
前記第２のコードは、前記複数の入力に関連する優先度に更に基づいて次の状態を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを含んでいる、エンティティ。
【請求項６２】
請求項６１記載の機能ブロックエンティティであって、前記第５のコードは、前記複数の入力に関連する順序に更に基づいて次の状態を決定するためのコードを更に含んでいる、エンティティ。
【請求項６３】
請求項５８記載の機能ブロックエンティティであって、
前記少なくとも一つの入力の少なくとも一つと前記状態遷移データとに基づいて、状態遷移が起こるべきかどうかを決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを更に含み、
前記第２のコードは、もし状態遷移が起こるべきなら、次の状態を決定するためのコードを含み、
前記第３のコードは、もし状態遷移が起こるべきなら、状態マシンの現在の状態を次の状態に設定するためのコードを含んでいる、エンティティ。
【請求項６４】
請求項５８記載の機能ブロックエンティティであって、前記第２のコードは、もしあれば、前記特定の値である前記少なくとも一つの入力の一又はそれ以上を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを含んでいる、エンティティ。
【請求項６５】
請求項６４記載の機能ブロックエンティティであって、前記第２のコードは、もしあれば、前記特定の値であり少なくとも部分的に前記状態遷移データに基づく状態変化に対応する、前記少なくとも一つの入力の前記一又はそれ以上のうちの一又はそれ以上を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第６のコードを含んでいる、エンティティ。
【請求項６６】
請求項６５記載の機能ブロックエンティティであって、もし前記特定の値であり現在の状態からの状態変化に対応する前記少なくとも一つの入力のうちの少なくとも一つが存在するなら、もしあるなら、前記特定の値であって状態変化に対応する前記少なくとも一つ入力の前記一又はそれ以上のうちの一つを選択するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第７のコードを更に含んでいる、エンティティ。
【請求項６７】
請求項６６記載の機能ブロックエンティティであって、前記少なくとも一つの入力は複数の入力を含み、
前記第７のコードは、前記複数の入力に関連する優先度に基づいて前記少なくとも一つ入力の前記一つを選択するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第８のコードを含んでいる、エンティティ。
【請求項６８】
請求項６７記載の機能ブロックエンティティであって、前記第８のコードは、前記複数の入力に関連する順序に基づいて前記複数の入力の前記入力の一つを選択するためのコードを含んでいる、エンティティ。
【請求項６９】
請求項５８記載の機能ブロックエンティティであって、前記第２のコードは、もしあれば、前記第２のコンピュータ読み取り可能な媒体上に格納された状態遷移データに基づいて現在の状態からの状態変化を引き起こす前記少なくとも一つ入力の一又はそれ以上を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを含んでいる、エンティティ。
【請求項７０】
請求項６９記載の機能ブロックエンティティであって、前記第２のコードは、もしあれば、状態変化を引き起こすとともに前記特定の値でもある前記少なくとも一つ入力の前記一又はそれ以上のうちの一又はそれ以上を決定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第６のコードを更に含んでいる、エンティティ。
【請求項７１】
請求項５８記載の機能ブロックエンティティであって、前記第４のコードは、複数の機能ブロック出力を提供するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを含んでいる、エンティティ。
【請求項７２】
請求項７１記載の機能ブロックエンティティであって、前記第５のコードは、状態マシンの現在の状態がその状態マシンの複数の可能な状態の一つのそれぞれに対応しているかどうかを表している前記複数の機能ブロック出力の少なくとも幾つかのそれぞれを提供するコードを含んでいる、エンティティ。
【請求項７３】
請求項７１記載の機能ブロックエンティティであって、前記第５のコードは、
少なくとも現在の状態に基づいて、ユーザが構成可能な出力構成データベースから、複数の状態マシン機能ブロック出力の少なくとも幾つかに対する適当な値を表すデータを検索するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第６のコードと、
前記複数の機能ブロック出力の前記少なくとも幾つかを適当な値に設定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第７のコードと
を含んでいる、エンティティ。
【請求項７４】
請求項７３記載の機能ブロックエンティティであって、前記状態マシン構成データベース及び前記出力構成データベースは、同じコンピュータ読み取り可能な媒体上に格納されている、エンティティ。
【請求項７５】
請求項７３記載の機能ブロックエンティティであって、前記状態マシン構成データベース及び前記出力構成データベースは、異なるコンピュータ読み取り可能な媒体上に格納されている、エンティティ。
【請求項７６】
請求項５８記載の機能ブロックエンティティであって、
前記状態マシン機能ブロックがディスエープルされるべきかどうかを表す入力を受け取るための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードと、
もし、前記状態マシン機能ブロックがディスエープルされるべきかどうかを表す入力が前記状態マシン機能ブロックはディスエープルされるべきであることを表しているなら、その状態マシンの現在の状態をディスエープルされた状態に設定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第６のコードと
を更に含んでいる、エンティティ。
【請求項７７】
請求項５８記載の機能ブロックエンティティであって、
前記状態マシン機能ブロックが初期状態に強制されるべきかどうかをを表す入力を受け取るための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードと、
もし、前記状態マシン機能ブロックが初期状態に強制されるべきかどうかをを表す入力が前記状態マシン機能ブロックは初期状態に強制されるべきことを表しているなら、前記状態マシンの現在の状態を初期状態に設定するための、前記第１のコンピュータ読み取り可能な媒体上に格納された第６のコードと
を更に含んでいる、エンティティ。
【請求項７８】
請求項５８記載の機能ブロックエンティティであって、前記少なくとも一つのデータ入力は、プロセス制御システム、プロセス制御システムのシミュレーション、安全システム、安全システムのシミュレーションの少なくとも一つに関連づけられる少なくとも一つの信号を含んでいる、エンティティ。
【請求項７９】
請求項５８記載の機能ブロックエンティティであって、もしあれば、前記少なくとも一つ入力の一又はそれ以上をマスクするための、前記第１のコンピュータ読み取り可能な媒体上に格納された第５のコードを含んでいる、エンティティ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の開示は、概略的にはプロセスプラントで使用するための機能ブロックに関し、より詳細にはプロセスプラントに関連する状態マシンの構成及び実現に関連する。
【背景技術】
【０００２】
化学、石油や他のプロセスにおいて使用されるようなプロセス制御システムは、少なくとも一つのホスト又はオペレータワークステーションとフィールドデバイスとにアナログ、デジタル、又は結合されたアナログ／デジタルバス若しくはラインを介して通信可能に接続された一又はそれ以上のプロセスコントローラを典型的に含んでいる。例えばバルブ、バルブポジショナ、スイッチ及びトランスミッタ（例えば温度、圧力及びフローのセンサ）であり得るフィールドデバイスは、バルブの開閉、プロセスパラメータの測定のようなプロセスプラント内の機能を実行する。プロセスコントローラは、フィールドデバイスによって作成されるプロセスの測定値を表す信号及び／又はそのフィールドデバイスに関連する他の情報を受け取り、この情報を制御ルーチンを実現するために使用し、及び次に、プロセスの動作を制御するためにフィールドデバイスへのバス又はライン上を送られる制御信号を生成する。フィールドデバイス及びコントローラからの情報は、プロセスを構成し、プロセスの現在の状態を見、プロセスの動作を修正する等のプロセスに関する所望の機能をオペレータが実行するのを可能とするために、オペレータワークステーションによって実行される一又はそれ以上のアプリケーションに典型的に利用可能とされる。
【０００３】
加えて、多くのプロセスでは、プロセスプラント内の問題に関連する重大な安全性を検出し、及び毒性の化学物質の漏れや爆発などのプラント内の重大な障害を引き起こし若しくはこれに繋がる問題が生じた時に、自動的にバルブを閉じ、デバイスから電力を取り去り、プラント内のフローをスイッチする等のために、独立した安全システムが設けられている。これらの安全システムは、標準のプロセス制御コントローラから独立した論理ソルバと称される一又はそれ以上のコントローラを典型的に有しており、これは、プロセスプラント内の独立したバス又は通信ラインを介して安全フィールドデバイスに接続されている。論理ソルバは、プロセスプラント内の「事象」を検出するための、特定の安全スイッチ又はシャットダウンバルブの位置、プラントのオーバーフロー又はアンダーフロー、重要な発電又は制御デバイスの動作、障害検出デバイスの動作等、重大な事象に関連するプロセス状態を検出するために安全フィールドデバイスを使用する。事象（典型的には「原因(cause)」と称される）が検出された時、安全コントローラは、その結果の有害な性質を制限するために、幾つかのアクション（典型的には「結果(effect)」と称される）を採り、その例は、バルブを閉じること、デバイスをオフにすること、プラントのセクションから電力を取り去ること等である。一般的には、これらのアクション又は結果は、安全デバイスを、プロセスプラント内の重大な又は危険な状態を避けように設計された作動した又は「安全」な動作モードにスイッチする。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
プロセス制御システム及び安全システム等のプロセスプラント内のシステムは、典型的には種々のプロセス及び／又はシステムそれ自身の状態を継続して追跡する。システムへの入力信号がそのシステムによって追跡される状態を引き起こし得、そのシステムによって生成される出力信号は、システムへの入力信号に加えて、システムの現在の状態に依存し得る。現時点では、システムの状態は、プログラム言語で記載されたルーチンを使用して追跡され得る。このようなルーチンを記述することは、単調で、時間を要し、エラーに満ちたものである。安全システムでは、このようなエラーは重大であり、その理由は、適正に動作する安全システムの不具合は、重大な損害又はプラント要員の死にも導き、そして、プラント内の装置及び材料の潜在的に数百ドルもの破壊に導きかねない。
【０００５】
また、システムの状態は、国際電気標準会議（ＩＥＣ）によって標準化された、一般的に「シーケンシャルファンクションチャート」（ＩＥＣ６１１３１−３標準に示されている）と称されるプログラマブルコントローラのためのプログラム技術を使用して追跡され得る。しかし、当業者によく知られているように、システムの状態を追跡するためにシーケンシャルファンクションチャートを使用することは困難である。加えて、プログラミング言語で記載されるルーチンと同様に、シーケンシャルファンクションチャートは単調で、時間を要し、エラーに満ちたものである。
【課題を解決するための手段】
【０００６】
プロセスプラント内の制御システム、安全システム等は、それぞれ機能ブロックダイヤグラムプログラミング環境に容易に組み込まれ得る一又はそれ以上の状態マシン機能ブロックを使用する。このような状態マシン機能ブロックは、一又はそれ以上の入力を含み得、これは、状態マシン機能ブロックによって実現される状態マシンが状態を変更するようにするために使用され得る。状態マシン機能ブロックは、もしあれば次の状態を示す状態遷移コンフィギュレーションデータに基づいて遷移すべき次の状態を決定する。状態遷移コンフィギュレーションデータは、状態マシンの現在の状態と少なくとも一つの入力とに基づいてデータベースから検索される。状態マシン機能ブロックはまた、状態マシンの状態に基づいて生成された一又はそれ以上の入力を含み得る。状態マシン機能ブロックの入力は、例えばプロセス制御システム又は安全システムに関連し得、その出力は、例えばプロセス制御システム又は安全システムにおけるフィールドデバイスの制御のために使用され得る。
【０００７】
状態マシン機能ブロックは、その少なくとも一部は、グラフィカルユーザインターフェイスメカニズムを介して構成され得る。グラフィカルユーザインターフェイスメカニズムは複数のグラフィカル要素を含み得、グラフィカル要素の少なくとも幾つかは、状態マシンが状態間をどのように遷移するかを特定するのに使用され得る。一つの実施例では、複数のセルがコンピュータのディスプレイデバイス上に表示され、そこでは、第１の複数のセルの各セルは、前記少なくとも一つの入力のそれと状態マシンの複数の状態のうちの状態のそれとの少なくとも幾つかの可能な組み合わせの一つに対応している。複数のセルはマトリックス状に配され、例えば、そこでは、マトリックスの列は状態マシンの複数の可能な状態に対応し、マトリックスの行は状態マシン入力（又はその逆）に対応している。特定の状態及び特定の入力に対応するセルでは、プログラマーは次の状態を示すコンフィギュレーションデータをコンピュータの入力デバイスを使用して入力し得る。次の状態のコンフィギュレーションデータは、その状態マシンがそのセルに対応する状態にあり及びそのセルに対応する入力が特定の値にある時に、そ状態マシンが遷移する次の状態を表している。
【０００８】
他の実施形態として、グラフィカルユーザインターフェイスはダイヤグラムを有し得、そこではダイヤグラム上のオブジェクトが状態マシンの状態を表している。例えばプログラマーは、一つの状態から他の状態へ矢印を置き、そしてその矢印で入力を関連づける。これは、特定された入力が特定の値であるときに、一つの状態からもう一つの状態へ状態マシンが遷移すべきことを示し得る。
【０００９】
ここでクレームされている状態マシン機能ブロックの実施形態は、制御システム又は安全システムに関連する状態の追跡を継続するという従来技術に比較して、より容易である。例えば、構成の幾つか又は全ては、上述のメカニズムのようなグラフィカルユーザインターフェイスメカニズムを使用して達成される。加えて、状態マシン機能ブロックの実施形態は、コントローラ、ロジックソルバ、フィールドデバイス等に組み込むのが容易であり、これらは機能ブロックロジックを使用している。なぜなら、状態マシン機能ブロックの入力と出力とを他の機能ブロック、制御計画内の要素、オペレータインターフェイス等に相互接続することにより、他のタイプの機能ブロックと同じ又は同様に組み込まれ得るからである。更に、状態マシン機能ブロックの動作は、その動作がマトリックス状のように部分的に図式的に容易にイラスト化され得るので、容易に文書化され得る。状態マシン機能ブロック又は状態マシン機能ブロックの構成のためのメカニズムの異なる実施形態は、上述の利点の一つ若しくはそれ以上を提供し、又はその何れをも提供しない。
【発明を実施するための最良の形態】
【００１０】
本明細書に記載されている方法、装置及びシステムの特徴及び利点は、以下の詳細な記述と添付図面とを参照することにより、最も良く理解されるであろう。
【００１１】
プロセスプラントの実施形態
図１は、一又はそれ以上のノード１２，１６，１８及び２０を含む例示のプロセスプラント１０のブロックダイヤグラムである。図１の実施形態のプロセスプラント１０では、ノード１２及び１６のそれぞれは、例えばFoundation  Fieldbus インターフェイス, HARTインターフェイス等の入力／出力（Ｉ／Ｏ）デバイス２４を介して一又はそれ以上のフィールドデバイス２２及び２３に接続されたプロセスコントローラ１２ａ、１６ａを含んでいる。プロセスコントローラ１２ａ及び１６ａはまた、ノード１８及び２０内の一又はそれ以上のホスト又はオペレータワークステーション１８ａ及び２０ａに、例えば、バス、イーサネット（Ｒ）ＬＡＮ等の結線されたローカルエリアネットワーク（ＬＡＮ）、ワイヤレスＬＡＮ、ワイドエリアネットワーク（ＷＡＮ）、インターネット等の一又はそれ以上を有し得るネットワーク３０を介して接続されている。コントローラノード１２，１６及びＩ／Ｏデバイス２４並びにこれらに関連するフィールドデバイス２２、２３は、その中の下に典型的に配置され、時には過酷なプラント環境の至る所に分散配置され、オペレータワークステーションノード１８及び２０は、コントローラ要員によって容易に評価できるように、通常はコントロール室又は他のより過酷でない環境に配置されている。
【００１２】
一般的に言えば、ノード１８及び２０のワークステーション１８ａ及び２０ａは、プロセスプラント１０を構成し及びモニタし、並びに／又はプロセスプラント１０内のデバイス２２，２３，２４及びコントローラ１２ａ、１６ａを運用するために使用されるアプリケーションを格納し及び実行するために使用される。更に、データベース３２がネットワーク３０に接続され、ノード１２，１６，１８，２０，２２，２３，２４，５０及び７０内にダウンロードされ及び／又は格納されたときのプロセスプラント１０の現在の構成を格納するデータヒストリアン及び／又はコンフィギュレーションデータベースとして動作する。
【００１３】
コントローラ１２ａ及び１６ａのそれぞれは、例示すれば、Emerson Process Managementによって販売されているＤｅｌｔａＶ（商標）コントローラであり得、これは、多くの異なる独立して実行される制御モジュール又はブロックを使用して制御計画を実現するコントローラアプリケーションを格納し及び実行し得る。制御モジュールは、それぞれ機能ブロックと一般的に称されるもので構成され得、各機能ブロックは、全体に亘る制御ルーチンの一部又はサブルーチンであり、他の機能ブロックと関連して（リンクと称される通信により）、プロセスプラント１０内のプロセス制御ループを実現するように動作する。よく知られているように、機能ブロックは、入力機能（トランスミッタ、センサ又は他のプロセスパラメータ測定デバイス等）、制御機能（ＰＩＤ、ファジー論理、制御等を実行する制御ルーチンに関連するようなもの）、又は幾つかのデバイス（例えばバルブ）の動作を制御してプロセスプラント１０内の幾つかの物理的な機能を果たす入力機能の一つを典型的に実行する。もちろん、混成の又は他のタイプの機能ブロックも存在し、それを使用することもできる。Ｆｉｅｌｄｂｕｓプロトコル及びＤｅｌｔａＶ（商標）システムプロトコルは、オブジェクト指向プログラミングプロトコルで設計され及び実現された制御モジュール及び機能ブロックを使用し得るが、制御モジュールは、例えばシーケンシャル機能ブロック、ラダーロジック等の何れの所望の制御プログラミングスキームを使用しても設計され得、そして、機能ブロック又は何れの特定のプログラミング技術を使用して設計されるかに制限されることはない。典型的には、プロセス制御ノード１２及び１６内に格納されたときの制御モジュールの構成は、ワークステーション１８ａ及び２０ａによって実行されるアプリケーションにアクセス可能なコンフィギュレーションデータベース３２に格納され得る。機能ブロックは、例えばコントローラ１２ａ、１６ａに格納され及びこれらによって実行され得、その典型的な場合は、これらの機能ブロックが標準の４〜２０ｍＡデバイス及びHARTデバイスのようなコンピュータ化したフィールドデバイスの幾つかに使用され若しくは関連づけられたとき、又はＦｉｅｌｄｂｕｓデバイスの場合にはそれらのフィールドデバイス自身に格納され及び実現されたときである。
【００１４】
図１に例示されているシステムでは、コントローラ１２ａ及び１６ａに接続されたフィールドデバイス２２及び２３は、標準の４〜２０ｍＡデバイスか、又はプロセッサ及びメモリを含むHART、Profibus、若しくはFoundation Fieldbusフィールドデバイスのようなコンピュータ化したフィールドデバイスであり得る。これらのデバイスの幾つかは、Foundation Fieldbusフィールドデバイスのように（図１では参照符号２３が付されている）、コントローラ１２ａ及び１６ａに実現されている制御計画に関連して、機能ブロックのようなモジュール又はサブモジュールを格納し及び実行する。もちろん、フィールドデバイス２２及び２３は、センサ、バルブ、トランスミッタ、ポジショナ等の何れのタイプのデバイスであってもよく、Ｉ／Ｏデバイス２４は、HART、Foundation Fieldbus、Profibus等の何れの所望の通信又はコントローラプロトコルに合致するＩ／Ｏデバイスのタイプであってもよい。
【００１５】
コントローラー１２ａ及び１６ａは、それぞれ、メモリに格納されその中に格納されるかそれに関連する制御ループを含み得る一又はそれ以上のプロセス制御ルーチンを実現し又は監視するプロセッサを含んでいる。コントローラー１２ａ及び１６ａは、何れかの所望の方法によって、プロセスを制御するために、フィールドデバイス２２，２３、ワークステーション１８ａ、２０ａ及びデータベース３２と通信を行う。コントローラー１２ａ及び１６ａはそれぞれ、何れかの所望の方法によって、制御計画又は制御ルーチンを実現するように構成され得る。
【００１６】
プロセスプラント１０はまた、プロセス制御ノード１２及び１６と統合された安全システム１４（破線で表されている）を含んでいる。安全システム１４は、一般的には、プロセスプラント１０の適切な安全動作を最大化するために、プロセス制御ノード１２及び１６によって提供される制御をモニタし及び最優先する安全装備システム（Safety Instrumented System (SIS)）として動作し得る。
【００１７】
ノード１２及び１６のそれぞれは、一又はそれ以上の安全システムロジックソルバ５０を含み得る。ロジックソルバ５０のそれぞれは、プロセッサ及びメモリを有するＩ／Ｏデバイスであり、メモリに格納されている安全ロジックモジュールを実行するように構成されている。ロジックソルバ５０のそれぞれは、安全システムフィールドデバイス６０及び６２へ制御信号を提供し、及び／又はそれから信号を受け取るために接続されている。加えて、ノード１２及び１６のそれぞれは、少なくとも一つのメッセージ伝達デバイス（ＭＰＤ）７０を含み、これは、リング又はバス接続７４（図１では一部分のみが例示されている）を介して他のＭＰＤに通信可能に接続されている。安全システムロジックソルバ５０、安全システムフィールドデバイス６０及び６２、ＭＰＤ７０並びにバス７４は、一般的に図１の安全システム１４を構成している。
【００１８】
図１のロジックソルバ５０は、プロセッサ及び安全ロジックモジュールを格納するメモリを含む安全システム制御デバイスの何れのタイプであってもよく、安全ロジックモジュールは、フィールドデバイス６０及び６２を使用して安全システム１４に関連する制御機能を提供するためにプロセッサで実行されるように適合している。もちろん、安全システムフィールドデバイス６０及び６２は、上述の公知又は所望の通信プロトコルに従う又は使用するフィールドデバイスの何れのタイプでもあり得る。特に、フィールドデバイス６０及び６２は、独立した専用の安全関連の制御システムによって通常制御されるタイプの安全関連のフィールドデバイスであり得る。図１に例示されているプロセスプラント１０では、安全フィールドデバイス６０は、ＨＡＲＴ又は４〜２０ｍＡプロトコルのような専用又はポイントツーポイント通信プロトコルを使用するように画かれている一方、安全フィールドデバイス６２は、Ｆｉｅｌｄｂｕｓプロトコルのようなバス通信プロトコルを使用するように画かれている。安全フィールドデバイス６０は、バルブのシャットダウン、スイッチのシャットオフ等の何れの所望の機能をも果たし得る。
【００１９】
ノード１２及び１６のそれぞれにおいては、コントローラー１２ａ及び１６ａを、プロセス制御Ｉ／Ｏカード２４、安全ロジックソルバ５０、及びＭＰＤ７０に通信可能に接続するために、共通のバックプレーン（図示せず）が使用され得る。コントローラー１２ａ及び１６ａはまた、ネットワーク３０にも通信可能に接続されている。コントローラー１２ａ及び１６ａ、Ｉ／Ｏデバイス２４、ロジックソルバ５０、ＭＰＤ７０は、ネットワーク３０を介してノード１８及び２０と通信し得る。
【００２０】
以下で当業者に理解されるように、ノード１２及び１６に於けるバックプレーン（図示せず）は、互いにデータを交信するための、及び／又は他の統合された機能を果たすための、これらのデバイスによって実現される安全機能を調整するために、ロジックソルバ５０が局所的に互いに通信することを可能にする。同様に、ノード１６に於けるバックプレーン（図示せず）は、互いにデータを交信するための、及び／又は他の統合された機能を果たすための、これらのデバイスによって実現される安全機能を調整するために、ロジックソルバ５０が局所的に互いに通信することを可能にする。それに対して、ＭＰＤ７０は、プロセスプラント１０の非常に異なる位置に配されている安全システム１４の一部が、それでもプロセスプラント１０の異なるノードで安全動作を調整するために互いに通信を行うのを可能とする。特に、プロセスプラント１０の異なるノード１２及び１６に関連するロジックソルバ５０が、バス７４に関連するＭＰＤ７０は、割り当てられた優先度に従ってプロセスプラント１０内で安全関連の機能の縦続接続を可能とするために互いに通信可能にカスケードされることを可能とする。ＭＰＤ７０及びバス７４は、ネットワーク３０に代わる通信リンクを安全システムに提供する。
【００２１】
あるいは、プロセスプラント１０内の異なる位置での２つ又はそれ以上の安全関連機能は、プロセスプラント１０の別々のエリア又はノード内の個々の安全フィールドデバイスへの専用ラインを走らせることなく、連結又は相互接続され得る。換言すれば、ＭＰＤ７０及び７２並びにバス７４は、現実にプロセスプラント１０内に分散し、しかしその異なる構成要素が、要求に応じて互いに通信するバラバラの安全関連ハードウエアが互いに通信するのを可能とするために、通信可能に相互接続されている安全システム１４を安全エンジニアが設計し及び構成するのを可能としている。この特徴はまた、それらが必要とされ又は新たなプロセス制御ノードがプロセスプラント１０に付加されるときに、安全システム１４に付加されるべき追加の安全ロジックソルバの追加を可能とするという点に於いて、安全システム１４の拡張性をも提供する。
【００２２】
図２は、例示のワークステーション１８ａ（ワークステーション２０ａは同じ又は同様のデバイスを有し得る）のブロックダイヤグラムである。ワークステーション１８ａは少なくとも一つのプロセッサ１００、揮発性メモリ１０４及び不揮発性メモリ１０８を有している。揮発性メモリ１０４は、例えばランダムアクセスメモリ（ＲＡＭ）を含み得る。いくつの実施形態では、ＲＡＭは、停電の際にデータが失われないように、一又はそれ以上のバッテリーによってバックアップされ得る。不揮発性メモリ１０８は、例えば、一又はそれ以上のハードディスク、読み出し専用メモリ（ＲＯＭ）、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリなどを含み得る。ワークステーション１８ａはまた、ワークステーションＩ／Ｏデバイス１１２を含み得る。プロセッサ１００、揮発性メモリ１０４、不揮発性メモリ１０８及びワークステーションＩ／Ｏデバイス１１２は、アドレス／データバス１１６を介して相互接続されている。ワークステーション１８ａはまた、少なくとも一つのディスプレイデバイス１２０及び少なくとも一つのユーザ入力デバイス１２４を含み、これらは、例えば、キーボード、キーパッド、マウス、トラックボール、タッチスクリーン、ライトペン等のうちの一又はそれ以上であり得る。幾つかの実施形態では、揮発性メモリ１０４、不揮発性メモリ１０８及びワークステーションＩ／Ｏデバイス１１２の一又はそれ以上は、アドレス／データバス１１６（図示せず）とは別のバスを介してプロセッサ１００に接続され、又はプロセッサ１００に直接接続されている。
【００２３】
ディスプレイデバイス１２０及びユーザ入力デバイス１２４は、ワークステーションＩ／Ｏデバイス１１２に接続されている。加えて、ワークステーション１８ａはネットワーク３０にワークステーションＩ／Ｏデバイス１１２を介して接続されている。ワークステーションＩ／Ｏデバイス１１２は図２では一つのデバイスとして画かれているが、複数のデバイスを有していてもよい。加えて、幾つかの実施形態では、一又はそれ以上のディスプレイデバイス１２０及びユーザ入力デバイス１２４は、アドレス／データバス１１６に直接又はプロセッサ１００に接続されていてもよい。
【００２４】
図１及び図２を参照すれば、制御ノード１２及び１６の一又はそれ以上と関連するプロセス制御構成アプリケーションは、一又はそれ以上のワークステーション１８ａ及び２０ａに格納され及びそれらによって実行され得る。例えば、プロセス制御構成アプリケーションは、不揮発性メモリ１０８及び／又は揮発性メモリ１０４に格納され得、そして、プロセッサ１００によって実行され得る。しかしながら、所望なら、このアプリケーションは、プロセスプラント１０に関連する他のコンピュータに格納され及び実行されることが可能である。一般的に言えば、プロセス制御構成アプリケーションは、コントローラ１２ａ及び１６ａ、Ｉ／Ｏデバイス２４並びに／又はフィールドデバイス２２、２３によって実現されるべき制御ルーチン、制御モジュール、機能ブロック、プログラム、ロジック等をプログラマーが生成し及び構成することを許容する。これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、ロジック等は、次にコントローラ１２ａ及び１６ａ、Ｉ／Ｏデバイス２４、並びに／又はフィールドデバイス２２、２３の適当な一つに、ネットワーク３０を介してダウンロードされ得る。
【００２５】
同様に、安全システム１４に関連する安全システム構成アプリケーションは、一又はそれ以上のワークステーション１８ａ及び２０ａの一つに格納され及び実行され得る。例えば、安全システム構成アプリケーションは、不揮発性メモリ１０８及び／又は揮発性メモリ１０４に格納され得、そして、プロセッサ１００によって実行され得る。しかしながら、所望なら、このアプリケーションは、プロセスプラント１０に関連する他のコンピュータに格納され実行されることが可能である。一般的に言えば、安全システム構成アプリケーションは、コントローラ１２ａ及び１６ａ、ロジックソルバ５０並びに／又はデバイス６０、６２によって実現されるべき制御ルーチン、制御モジュール、機能ブロック、プログラム、ロジック等をプログラマーが生成し及び構成することを許容する。これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、ロジック等は、次にコントローラ１２ａ及び１６ａ、ロジックソルバ５０、並びに／又はフィールドデバイス６０，６２の適当な一つに、ネットワーク３０を介してダウンロードされ得る。
【００２６】
状態マシン機能ブロック
制御システム又は安全システム構成アプリケーションは、機能ブロックプログラミングパラダイムを使用した制御モジュール及び／又は制御ルーチンのプログラミングを許容する。図３は制御モジュール１５４を表すディスプレイ１５０の一例を示している。ディスプレイ１５０は、構成アプリケーションに関連するユーザインターフェイスの一部であり、ディスプレイ１５０は、例えば、ワークステーション１８ａのディスプレイデバイス１２０を介して、プログラマーに表示されている。ディスプレイ１５０は、プロセスプラントの動作の間の実現のために、ネットワーク３０を介してコントローラ１２ａ及び１６ａ、Ｉ／Ｏデバイス２４、ロジックソルバ５０及び／又はフィールドデバイス２２、２３、６０、６２の適当な一つに生成され及びダウンロードされ得る通信可能に相互接続された機能ブロックのセットを有する制御モジュール１５４を表示している。図３に示すように、制御モジュール１５４は、状態マシン機能ブロック（ＳＭＦＢ）１６０、複数のアナログ入力（ＡＩ）及びデジタル入力（ＤＩ）機能ブロック、複数のアナログ出力（ＡＯ）及びデジタル出力（ＤＯ）機能ブロック並びに他の機能ブロック（ＦＢｓ）を含んでいる。ＳＭＦＢ１６０は、例えばＤＩ機能ブロック又は他のＦＢであり得る機能ブロック１１４と通信可能に相互接続された入力を有している。ＳＭＦＢ１６０はまた、例えばＤＯ機能ブロック又は他のＦＢであり得る機能ブロック１１８と通信可能に相互接続された出力を有している。制御モジュール１５４は、制御システム、安全システム等の一部としてのスイッチ、バルブなどのデバイスを一緒に制御する複数の制御モジュールの一つを制御し又はその一つであり得る。もちろん、制御モジュール１５４は、まさにＳＭＦＢを採用する制御モジュールの単なる一つの例である。一般的に言えば、制御プログラムは、所望の数のＳＭＦＢと所望の何れの方法によっても通信可能に接続される何れのタイプの機能ブロックをも含むように何れの方法によってもプログラムされ得、そして、何れの所望の又は有用な方法で何れの所望の機能も実行し得るように構成され得る。例えば、もしＦｉｅｌｄｂｕｓネットワークで使用されたなら、制御モジュールは何れのフィールドバスのタイプの機能ブロックをも含み得る。
【００２７】
幾つかの実施形態では、ＳＭＦＢ１６０への一又はそれ以上の入力は、機能ブロック以外からも受け取られる。例えば、ＳＭＦＢ１６０への一又はそれ以上の入力は、例えばオペレータインターフェイスを介してオペレータからの入力を受け取るように通信可能に接続され得る。例えば、オペレータは、ノード１８又は２０のようなノードで実現されるオペレータインターフェイスを使用して、ＳＭＦＢ１６０への入力を供給することができる。
【００２８】
ＳＭＦＢは、状態マシンを実現する機能ブロックであり得る。幾つかの実施形態では、状態マシンは、複数の状態の一つに存在し得るエンティティ（即ち、デバイス、プロセッサによって実現されるソフトウエア等）を含み得る。状態マシンは、もしその状態マシンへの特定の入力が出現すると、一つの状態からもう一つの状態に遷移し得る。ＳＭＦＢは、その状態マシンの現在の状態に基づいた出力を提供し得る。ちょうど一つを例示すれば、ＳＭＦＢは、その状態マシンの現在の状態を示す一又はそれ以上の出力を提供し得る。より一般的には、状態マシンは、そのエンティティ又は他の幾つかのエンティティ（即ち、プロセスプラント、プロセスプラントのサブパート、プロセスプラントの構成要素等）の状態を与えられた時間に格納し、並びにその状態を変更し及び／又はその状態マシンへの入力に基づいてアクション若しくは出力が起こるようにするエンティティ（即ち、デバイス、プロセッサによって実現されるソフトウエア等）を含み得る。
【００２９】
構成アプリケーションに関連するユーザインターフェイスを使用して、プログラマーは制御モジュール１５４のような制御モジュールを設計し得る。ちょうど一つを例示すれば、ユーザインターフェイスは、プログラマーに、例えば標準の若しくはカスタマイズされた機能ブロックのステンシルを含むステンシル又はパレットから所望の機能ブロックを選択するためのメカニズムを提供する。加えて、ユーザインターフェイスは、その上にプログラマーが機能ブロックの表示の挿入又は置くことを行い得るグラフィカルダイヤグラムを提供し得る。プログラマーは、ステンシル又はパレットから機能ブロックを選択し、次にその機能ブロックをグラフィカルダイヤグラム上に「ドラッグアンドドロップ」するために、例えば、マウス、トラックボール、キーボード、キーパッド、タッチスクリーン等を使用し得る。プログラマーは、例えば、マウス、トラックボール、キーボード、キーパッド、タッチスクリーン等を使用して、例えば一つの機能ブロックの出力と、もう一つの機能ブロックの入力との間に線を引くことにより、機能ブロックを追加的に通信可能に接続することができる。
【００３０】
一度構成されると、制御モジュール１５４は、例えばコントローラ１２ａ、１４ａ、１６ａ、Ｉ／Ｏデバイス２４、ロジックソルバ５０及びフィールドデバイス２２、２３、６０、６２の一又はそれ以上によって実現され得る。
【００３１】
図４は、例えば図３のディスプレイ１５０のようなユーザインターフェイスディスプレイ上に表示され得るＳＭＦＢ２００の表示の一例を示している。ＳＭＦＢ２００の表示は、ＳＭＦＢ２００が７つのデータ入力（ＩＮ＿Ｄ１からＩＮ＿Ｄ７）と、７つのデータ出力（ＳＴＡＴＥ及びＯＵＴ＿Ｄ１からＯＵＴ＿Ｄ６）とを含むことを示している。データ入力は、一般的には、プロセスプラント内の状態を表す、オペレータコマンドを表す、等を行い、ＳＭＦＢ２００によって実現される状態マシンに状態を変更させる。データ出力は、ＳＭＦＢ２００に対応する状態マシンの状態の一又はそれ以上のインディケータを含み得る。例えば、ＳＴＡＴＥ出力は、状態マシンの状態（例えば、状態１、状態２、状態３等）のインディケータであり得る。出力ＯＵＴ＿Ｄ１は、状態マシンが「状態１」の状態にあるかどうかを示すインディケータであり得る。同様に、ＯＵＴ＿Ｄ２、ＯＵＴ＿Ｄ３…ＯＵＴ＿Ｄ６は、それぞれ状態マシンが「状態２」、「状態３」、…、「状態６」の状態にあるかどうかを示すインディケータであり得る。ＳＭＦＢはまた、ＥＮＡＢＬＥ入力、ＴＲＫ＿ＶＡＬ入力、及びＴＲＫ＿ＩＮ＿Ｄ入力のようなデータ入力以外の他の入力を含み、そして、状態を表す出力以外の他の出力を含み得る。ＥＮＡＢＬＥ入力、ＴＲＫ＿ＶＡＬ入力、及びＴＲＫ＿ＩＮ＿Ｄ入力は、以下に詳述される。ＳＭＦＢ２００は７つのデータ入力と７つのデータ出力を有するように図４に示されているが、他の実施形態では、所望の数のデータ入力及びデータ出力を含み得る。ＳＭＦＢ２００のデータ入力の数及びデータ出力の数は、構成し得又は構成不可である。一つの実施形態では、出力ＯＵＴ＿Ｄｘの数は、一般的にはＳＭＦＢによって実現される状態マシンの可能な状態の数に対応し、可能な状態の数は構成可能である。しかしながら、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等は、状態マシンの可能な状態の数に必ずしも対応している必要はない。例えば、もし、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の数より状態の数が少なければ、余分な出力は使用されないままとなる。
【００３２】
構成プログラムに関連するユーザインターフェイスを使用して、プログラマーはＳＭＦＢ２００のような一又はそれ以上の機能ブロックを構成し得る。ＳＭＦＢの構成に関しては、プログラマーは可能な状態の数を特定し得、入力がどのようにして状態マシンに状態間を遷移させるかを特定し得る。プログラマーがＳＭＦＢを構成するのを許容するために、構成アプリケーションは、ディスプレイデバイス１２０上に、その機能ブロックに関連する構成ウインドウ、スクリーン等のようなユーザインターフェイスメカニズムを表示し得る。
【００３３】
図５は、図４のＳＭＦＢ２００のようなＳＭＦＢの少なくとも一部を構成するために使用され得るユーザインターフェイスメカニズムの一例を示している。ユーザインターフェイスメカニズムは、ＳＭＦＢに関連する構成ウインドウ、スクリーン等の一部として表示され得る表又はマトリックス３００（以下では「マトリックス３００」と称する）を有している。マトリックス３００は、行及び列に配された複数のセル３０４を有している。各列はその状態マシンの複数の可能な状態の一つに対応しており、各行はその状態マシンへの入力に対応している。従って、各セル３０４は状態と入力とに対応している。マトリックス３００の例では７つの入力に対応する行及び６つの状態を含んでいるが、状態及び出力の異なる数を有する同様のマトリックスが、異なる数の入力及び状態を有するＳＭＦＢについて使用され得る。入力と状態の数は構成可能である。換言すれば、各行は、状態マシンの複数の可能な状態の一つに対応し得、各列は、状態マシンへの入力に対応し得る。
【００３４】
図４を参照すれば、マトリックス３００の入力「１」から「７」が、ＳＭＦＢ２００の入力ＩＮ＿Ｄ１からＩＮ＿Ｄ７に対応している。同様に、マトリックス３００の状態「１」〜「６」が、ＳＭＦＢ２００の出力ＯＵＴ＿Ｄ１からＯＵＴ＿Ｄ６に対応している。加えて、この実施形態では、プログラマーは、可能な状態のそれぞれ及び／又は入力のそれぞれにラベルを付すことができる。例えば、図５の「状態１」は「作動中」とラベルされ、入力１は「初期」とラベルされる。入力及び／又は状態のラベルは、状態マシンの動作を理解するのを容易にする。
【００３５】
プログラマーは、構成情報をセル３０４に入力することにより、ＳＭＦＢを構成することができる。特に、状態の一つと入力の一つとに対応する特定のセル３０４については、プログラマーはそのＳＭＦＢが遷移すべき状態を示すセルに構成情報を入力することができる。図６は、セル３０４の幾つかに入力されたコンフィギュレーションデータを有するマトリックス３００の例である。例えば、セル３０４Ａは、状態マシンが「実行中」の状態のとき及び「初期」の入力がアサートされたときに、その状態マシンが遷移すべき次の状態を表すコンフィギュレーションデータを含んでいる。特に、セル３０４Ａのコンフィギュレーションデータは、その状態マシンが「リセット待ち」の状態に遷移することを示している。同様に、セル３０４Ｂは、状態マシンが「リセット待ち」の状態にあるとき及び「リセット許容」入力がアサートされたときに、その状態マシンが「リセット準備完了」の状態に遷移すべきことを示すコンフィギュレーションデータを含んでいる。また、セル３０４Ｃは、状態マシンが「リセット待ち」の状態にあるとき及び「作動要求」入力がアサートされたときに、その状態マシンが「実行中」の状態に遷移すべきことを示すコンフィギュレーションデータを含んでいる。
【００３６】
この特定の実施形態では、もし、プログラマーがセル３０４にコンフィギュレーションデータを入力しなければ、その特定の状態と入力に対しては、状態遷移は起こらないであろう。例えば、セル３０４Ｄはコンフィギュレーションデータを含んでおらず、これは、状態マシンが「作動中」の状態にあるとき及び「スタート復帰」入力がアサートされたときに、その状態マシンが「実行中」の状態に留まるべきことを示している。他の実施形態では、プログラマーは、状態マシンがその特定の状態／入力の組合せに対する状態を変更すべきでないことを示すコンフィギュレーションデータを入力し得る。
【００３７】
プログラマーは、当業者によく知られている技術を含む種々の技術の何れかを使用して、マトリックス３００にコンフィギュレーションデータを入力し得る。例えば、セル３０４にコンフィギュレーションデータを入力するために、プログラマーは、マウス、トラックボール、タッチスクリーン等を使用してセル３０４を選択し得る。次に、ユーザは、例えばキーボードを介してセル３０４に直接コンフィギュレーションデータを入力することができる。あるいは、プログラマーは、セル３０４を選択し、次に「編集」、「変更」等をプルダウンメニューから選択し、又は「編集」ボタン、「変更」ボタン等を選択することができる。次に、ユーザインターフェイスは、プルダウンメニュー、ウインドウ、ディスプレイスクリーン等を介して状態のリストをプログラマーに表示する。状況に応じて、状態のリストは、セルが対応する状態又は「遷移なし」の選択肢を含み得る。次に、プログラマーは、例えばキーボード、マウス、トラックボール、タッチスクリーン等を使用して、状態の一つを選択し得る。もし、プログラマーがセルに対応する状態又は「遷移なし」の選択肢を選択したなら、コンフィギュレーションデータは、その状態及び入力の組み合わせに対しては、遷移が起こらないことを示すであろう。
【００３８】
マトリックス３００等のマトリックスを含むユーザインターフェイスを使用するＳＭＦＢの構成は、例えば、シーケンシャルファンクションチャート又はＣ＋＋のようなプログラミング言語を使用することに比較して、状態マシンの実現を有利にする。例えば、Ｃ＋＋プログラムを使用して状態マシンを実現することは、おそらく最初に状態遷移ダイヤグラムを生成し、次にそのダイヤグラムを実現するためのプログラムを記述することを含むであろう。次に、そのプログラムはテストされデバグされるであろう。しかし、マトリックス３００のよなマトリックスを使用して構成されたＳＭＦＢでは、プログラムを記述する必要はない。どちらかと言えば、「プログラミング」はマトリックスを満たすことを単に意味するであろう。加えて、どのようなソフトウエアコードも記述される必要がないので、そのコードのデバグ及びテストは必要ない。どちらかと言えば、テストすることは、ＳＭＦＢが正しい次の状態に移行したことを検証するために状態及び入力の種々の組合せテストすることを意味する。
【００３９】
更に、ＳＭＦＢの機能は、マトリックス３００を単に調べることにより容易に理解され得る。従って、構成されたＳＭＦＢの機能は、例えばマトリックスの表現を印刷することにより、容易に文書化することができる。
【００４０】
マトリックス３００のようなマトリックスに従って構成されたＳＭＦＢは、例えば安全システム又はプロセス制御システムに於いて使用され得る。例示の一つに過ぎないものとして、マトリックス３００のようなマトリックスに従って構成されたＳＭＦＢは、プロセスプラント内のバーナーを管理するための安全システムの一部として使用され得る。例えば、ＳＭＦＢは、「点火」、「ガス遮断」及び「排気」のような状態を含み得る。バーナーが始動したとき、ＳＭＦＢは最初にバーナーに於けるどのようなガスも排気されるようにする排気の状態に移行することができる。次に、ＳＭＦＢは、バーナーを点火する点火の状態に移行することができる。また、もしバーナーの炎が消えたなら、ＳＭＦＢはバーナーへのガスを遮断するガス遮断の状態に移行することができる。次に、ＳＭＦＢは排気の状態に移行することができる。
【００４１】
マトリックス３００のようなマトリックスに従って構成されたＳＭＦＢは、コントローラ１２ａ、１６ａ、Ｉ／Ｏデバイス２４、ロジックソルバ５０及びフィールドデバイス２２、２３、６０、６２の一又はそれ以上によって実現され得る。幾つかの実施形態では、ＳＭＦＢは、ソフトウエアによって構成されたプロセッサや、例えば一又はそれ以上のゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＦＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、プログラマブルアレイロジック（ＰＡＬ）、プログラマブルロジックアレイ（ＰＬＡ）等の一又はそれ以上を有するデバイスのようなプログラマブルロジックデバイスによって実現され得る。
【００４２】
ＳＭＦＢに関連するコンフィギュレーションデータ（例えば、マトリックス３００のようなマトリックスに入力されたデータ及び任意の他のコンフィギュレーションデータ）は、ハードディスク、ＲＡＭ、ＲＯＭ、ＣＤ−ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＶＤ、フラッシュメモリ等及び／又はプロセッサに付随するメモリのようなコンピュータ読み取り可能な媒体上に格納され得る。
【００４３】
図７は、構成されたＳＭＦＢの動作の例示の方法のフローダイヤグラムである。方法３５０は、例えば周期的に及び／又はきっかけとなるイベントに応答して実現され得る。ブロック３５４では、ＳＭＦＢはそのデータ入力を受け取る。例えば図４を参照すれば、ＳＭＦＢは入力ＩＮ＿Ｄ１からＩＮ＿Ｄ７までを受け取る。ブロック３５８では、データ入力、現在のＳＭＦＢの状態及びコンフィギュレーションデータベースに格納されているコンフィギュレーションデータに基づいて、必要ならその状態マシンの状態を変更する。コンフィギュレーションデータベースのデータは、マトリックス３００のようなマトリックスを介して入力されたデータを含み得る。状態は、他のファクターによっても同様に変更され得る。例えば、以下に詳述するが、ＳＭＦＢは一又はそれ以上のデータ入力を無視するように構成され得る。このように、状態の変更は、必要に応じて、どのデータ入力が無視されるべきかを表すコンフィギュレーションデータにも基づいている。もう一つの例として、２つ又はそれ以上のデータ入力は、現在の状態から２つ又はそれ以上の次の状態への状態変化を示し得る。従って、ＳＭＦＢは、データ入力の優先順位を決定する優先データに基づいてＳＭＦＢが遷移すべき可能な次の状態はどれかを決定するために、データ入力の一つを選択し得る。更なる例として、幾つかの実施形態では、ＳＭＦＢへの入力は、状態（例えば、ＧＯＯＤ（良好）の状態、ＢＡＤ（不良）の状態）を含み得る。このように、状態の変更はまた、例えば、ＢＡＤの状態を有する入力をどのように取り扱うかを示すコンフィギュレーションデータにも基づき得る。
【００４４】
次に、ブロック３６６では、ＳＭＦＢは状態マシンの現在の状態に基づいて、そのデータ出力を設定し得る。例えば、もし、データ出力が現在の状態を示すべきであるなら、次にデータ出力はそれに応じて設定され得る。
【００４５】
図４に戻って再び参照すれば、ＳＭＦＢは任意的に「ＥＮＡＢＬＥ」の入力を含み得る。一実施形態では、もし、ＥＮＡＢＬＥ入力がアサート停止であるなら、ＳＭＦＢは使用禁止の状態（例えば状態０）に強制され、ＥＮＡＢＬＥ入力がアサートされるまでその状態を続ける。次に、ＥＮＡＢＬＥ入力がアサートされると、ＳＭＦＢは初期状態（例えば状態１）に強制され、その後、ＳＭＦＢは、図５のマトリックス３００のような構成マトリックスに入力されたコンフィギュレーションデータに従って他の状態に遷移し得る。
【００４６】
ＳＭＦＢは、状態マシンを所望の状態に強制する単一又は複数の入力を付加的に含み得る。例えば、ＳＭＦＢ２００は、ＴＲＫ＿ＩＮ＿Ｄ入力及びＴＲＫ＿ＶＡＬ入力を含んでいる。ＴＲＫ＿ＩＮ＿Ｄ入力がアサートされたとき、ＳＭＦＢはＴＲＫ＿ＶＡＬ入力によって特定された状態に入るように強制される。例えば、もし、ＴＲＫ＿ＶＡＬ入力が「６」でＴＲＫ＿ＩＮ＿Ｄ入力がアサートされたなら、ＳＭＦＢは状態「６」に入るように強制される。
【００４７】
ＳＭＦＢは、追加の方法のより任意に構成され得る。例えば、ＳＭＦＢは、もしあれば入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等の一又はそれ以上が無視されるべきかどうかを示す入力（又は遷移）マスクを含み得る。また、ＳＭＦＢは、複数の状態を有する入力に応答するように構成し得る。例えば、ＳＭＦＢへの一又は全ての入力は、「良好」又は「不良」の状態を有し得、ＳＭＦＢは入力の状態への依存とは異なるように応答するように構成し得る。特定の実施形態では、ＳＭＦＢは「不良」である入力を無視し、たとえそれが「不良」でもその入力を使用し、又はその入力の最後の「良好」の値を使用するように構成し得る。更に、ＳＭＦＢはリセットパラメータを含み得、それは、真のときにＳＭＦＢを「１」の状態に入るように強制する。
【００４８】
上述の種々のコンフィギュレーションデータ及び次の状態のコンフィギュレーションデータは、同じコンピュータ読み取り可能な媒体又は異なるコンピュータ読み取り可能な媒体に格納され得る。
【００４９】
図８は、ＳＭＦＢの一例のブロックダイヤグラムである。ＳＭＦＢ４００は、入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等とＳＭＦＢ４００の現在の状態との少なくとも一部に基づいて次の状態を決定するロジック４０４含んでいる。特に、ロジック４０４は、次の状態のコンフィグレーションデータベース４０６に格納されている次の状態コンフィグレーションデータにアクセスする。データベース４０６は、上述のようなコンピュータ読み取り可能な媒体に格納され得る。次の状態のコンフィグレーションデータは、図５のマトリックス３００のようなマトリックスに入力されたコンフィグレーションデータを含み得る。
【００５０】
ロジック４０４の出力は、スイッチングロジック４０８に供給される。スイッチングロジック４０８は、ロジック４０４の出力と入力ＴＲＫ＿ＶＡＬから、ＴＲＫ＿ＩＮ＿Ｄ入力に基づいて選択する。例えば、もし、ＴＲＫ＿ＩＮ＿Ｄ入力がアサートされたなら、スイッチングロジック４０８はＴＲＫ＿ＶＡ入力を選択し得る。さもなければ、スイッチングロジック４０８はロジック４０４の出力を選択し得る。
【００５１】
スイッチングロジック４０８の出力は、スイッチングロジック４１２に供給され、これは、イネープル及びリセットロジック４１６の出力に基づいて、スイッチングロジック４０８の出力、値０及び値１の中から選択する。イネープル及びリセットロジック４１６の出力は、その状態がディスエーブルの状態（状態０）又は初期状態（状態１）に強制されるべきかどうかを示している。イネープル及びリセットロジック４１６は、この出力をＥＮＡＢＬＥ入力に基づいて生成する。例えば、もし、ＥＮＡＢＬＥ入力がアサート停止であるなら、イネープル及びリセットロジック４１６の出力は、その状態が０に強制されるべきことを示し得る。もし、ＥＮＡＢＬＥ入力がアサート停止からアサートに変化したなら、イネープル及びリセットロジック４１６の出力は、その状態が１に強制されるべきことを示し得る。もし、ＥＮＡＢＬＥがアサートされ及び先にアサートされていたなら、イネープル及びリセットロジック４１６の出力は、その状態が０又は１に強制されるべきではないことを示し得る。
【００５２】
スイッチングロジック４１２の出力は、ＳＭＦＢ４００の現在の状態であり、ＳＭＦＢ４００の出力として供給され得る。スイッチングロジック４１２の出力はまた、そのＳＭＦＢの現在の状態に相当する適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等を設定するロジック４２０に供給され得る。
【００５３】
ブロック４０４，４０８，４１２，４１６及び４２０のそれぞれは、ハードウエア、ソフトウエア及びファームウエアの一又はそれ以上によって実現され得る。加えて、これらのブロックの幾つかは、結合され、並べ替え、改変され又は省略され得、及び追加のブロックが付加され得る。単なる一つの例として示したブロック４０８及び４１２は、一つのブロックに統合し得る。
【００５４】
図９は、ＳＭＦＢ４００の実施例の動作の方法のフローダイヤグラムである。図９の方法４５０は、例えば周期的及び／又はきっかけとなるイベントに応答して実現され得る。ブロック４５４では、ＳＭＦＢ４００のデータ入力が処理される。例えば、データ入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等の何れかがアサートされたか否かが決定され得る。他の実施形態では、一又はそれ以上のデータ入力が「ＢＡＤ」の状態を有しているなら、その「ＢＡＤ」の状態をどのように取り扱うかが決定され得る。ブロック４５８では、ＳＭＦＢ４００のＥＮＡＢＬＥ入力が処理される。例えば、そのＥＮＡＢＬＥ入力がアサートされたかどうか、及び／又はそれが以前に処理されてから変更されたかどうかが決定される。
【００５５】
ブロック４６２では、ＳＭＦＢ４００の状態が、必要に応じて変更され得る。加えて、ＳＭＦＢ４００の一又はそれ以上のデータ出力が、必要に応じて変更され得る。例えば、データ入力に於ける変更が、ＳＭＦＢ４００の状態が変更されるべきことを示していることが決定され得る。加えて、もし状態が変化したなら、ＳＭＦＢ４００の一又はそれ以上のデータ出力が変更されるべきである。
【００５６】
方法４５０を実現するのに使用され得る幾つかの例示のルーチンは、少なくとも一部分は、ここに記述される。例えば、図１０は、ＳＭＦＢへのデータ入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等を処理するために使用され得る例示のルーチン５００のフローダイヤグラムである。ブロック５４０では、変数ｚが１に設定される。ブロック５０８では、データ入力ＩＮ＿Ｄｚの状態が「不良（ＢＡＤ）」であるか否かが決定される。もしその状態が不良でないなら、変数ＴＲＡＮＳＩＴＩＯＮＳのビット番号ｚが、データ入力ＩＮ＿Ｄｚの値に設定される。もしその状態が不良なら、次にそのデータ入力がどのように取り扱われるべきかが決定され得る。一実施形態では、ＳＭＦＢは「ＢＡＤ」入力を３つの方法の一つによって取り扱い得る：即ち、ＢＡＤ入力をとにかく使用する（ＡＬＷＡＹＳ＿ＵＳＥ）、無視する（ＩＧＮＯＲＥ＿ＩＦ＿ＢＡＤ）、又は最後に「ＧＯＯＤ」であった入力値を使用する（ＵＳＥ＿ＬＡＳＴ＿ＧＯＯＤ）、の何れかである。従って、ブロック５１６では、ＳＭＦＢが最後の「ＧＯＯＤ」のデータ入力を使用すべきかどうかが決定され得る。もし、ＳＭＦＢが最後の「ＧＯＯＤ」の値を使用すべきなら、ブロック５１２はスキップされ得る。そうでなければ、次にブロック５２０で、ＳＭＦＢはＢＡＤ入力値を無視すべきかどうかを決定する。もし、ＳＭＦＢがＢＡＤ値を無視すべきでないなら、次にルーチンはブロック５１２に進み得る。もし、ＳＭＦＢがＢＡＤ値を無視すべきなら、次にルーチンはブロック５２４に進み得る。ブロック５２４では、変数ＴＲＡＮＳＩＴＩＯＮのビット番号「ｘ」が、０に設定される。
【００５７】
ブロック５２８では、変数ｚがインクリメントされ、ブロック５３２で変数ｚがＳＭＦＢへのデータ入力の数より大きいか否かが決定され得る。もし、ｚがＳＭＦＢへのデータ入力の数より大きくなければ、ルーチンはブロック５０８に戻って次のデータ入力を処理する。そうでなければ、ルーチンは終了する。
【００５８】
図１１は、ＳＭＦＢへのＥＮＡＢＬＥ入力を処理するのに使用され得る例示のルーチン５４５のフローダイヤグラムである。ブロック５５０では、変数ＬＡＳＴＥＮＡＢＬＥの値がＥＮＡＢＬＥ入力の値と同じであるかどうかが決定され得る。ＬＡＳＴＥＮＡＢＬＥの値は、一般的には先の時間でのＥＮＡＢＬＥの値（例えば、ＥＮＡＢＬＥ変数の値は、先のルーチン５４５の実行中のＥＮＡＢＬＥ変数の値）を示している。もし、ＬＡＳＴＥＮＡＢＬＥ及びＥＮＡＢＬＥの値が同じなら、ルーチン５４５は終了する。そうでなければ、ルーチンはブロック５５４に進み、そこでＥＮＡＢＬ入力がアサートされているかどうかが決定され得る。もし、ＥＮＡＢＬ入力がアサートされていれば、次にブロック５５８で変数ＲＥＳＥＴがＴＲＵＥ（真）に設定される。
【００５９】
もし、ブロック５５５４でＥＮＡＢＬ入力がアサートされていないことが決定されると、次にブロック５６２で、ＳＴＡＴＥ変数の現在の値に対応する出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等がアサート停止にされる。次にブロック５６６で、ＳＴＡＴＥ変数が０に設定される。ブロック５５８及び５６６の後、ルーチンはブロック５７０に進み、そこで変数ＬＡＳＴＥＮＡＢＬＥがＥＮＡＢＬ入力の値に設定される。ブロック５７０の後、ルーチンは終了する。
【００６０】
図１２は、ＳＴＡＴＥ変数の次の状態を決定するため、及び必要に応じて適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等を設定するために使用され得る例示のルーチン６００のフローダイヤグラムである。ブロック６０４に於いて、ＥＮＡＢＬ入力がアサートされたかどうかが決定され得る。もしアサートされていなければ、ルーチンは終了する。もし、ＥＮＡＢＬ入力がアサートされているなら、ルーチンはブロック６０８に進み、そこで変数ＮＥＷＳＴＡＴＥが０に設定される。次に、ブロック６１２に於いて、ＴＲＫ＿ＩＮ＿Ｄがアサートされているかどうかが決定され得る。もし、それがアサートされているなら、ルーチンはブロック６１６に進み、そこでＮＥＷＳＴＡＴＥ変数が入力ＴＲＫ＿ＶＡＬの値に設定される。
【００６１】
もし、入力ＴＲＫ＿ＩＮ＿Ｄがアサートされていないことがブロック６１２で決定されると、ルーチンはブロック６２０に進む。ブロック６２０では、変数ＲＥＳＥＴがＴＲＵＥ（真）であるかどうかが決定される。もしそうなら、ルーチンはブロック６２４に進み、そこでＮＥＷＳＴＡＴＥ変数が１に設定される。次に、ブロック６２６で、ＲＥＳＥＴ変数がＦＡＬＳＥ（偽）に設定される。
【００６２】
もし、ブロック６２０で変数ＲＥＳＥＴがＴＲＵＥでないことが決定されると、次にルーチンはブロック６２８に進み得る。ブロック６２８では、ＴＲＡＮＳＩＴＩＯＮ＿ＭＡＳＫ変数、ＴＲＡＮＳＩＴＩＯＮ変数及び変数ＳＴＡＴＥによって指示されるＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫをビット毎にＡＮＤ演算することにより、変数ＴＥＭＰが決定され得る。ＴＲＡＮＳＩＴＩＯＮ＿ＭＡＳＫ変数は、特定の入力ＩＮ＿Ｄｘが状態変化を生ずるのを抑制するのに使用されることができる構成可能な変数である。例えば、もし、プログラマーが、入力ＩＮ＿Ｄ３が状態マシンを状態変化させるのを妨げることを望むなら、プログラマーは変数ＴＲＡＮＳＩＴＩＯＮ＿ＭＡＳＫの第３ビットを０に設定することができる。もし、プログラマーが、入力Ｄ３が状態マシンを状態変化させるのを許容することを望むなら、プログラマーは、変数ＴＲＡＮＳＩＴＩＯＮ＿ＭＡＳＫの第３ビットを１に設定することができる。
【００６３】
ＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫ配列の要素のそれぞれは、状態の対応する一つについて、入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等のどの入力が状態変化を引き起こすかを示す変数であり得る。特に、配列の各要素は、状態マシンの状態の一つに対応し得る。例えば、ＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫ［１］は状態１に対応し、ＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫ［２］は状態２に対応する、等である。加えて、各要素の各ビットは、入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２等の一つに対応し得る。例えば、ビット１はＩＮ＿Ｄ１に対応し、ビット２はＩＮ＿Ｄ２に対応する、等である。例えば図６を参照すれば、マトリックス３００についてＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫ配列は６つの要素を有しており、ＳＴＡＴＥＣＨＡＮＧＥＭＡＳＫ［３］は０ｘ４４である。
【００６４】
ブロック６２８の後、ルーチンはブロック６３２に進み、そこで変数ＴＥＭＰが０であるかどうかが決定される。もしそれが０でなければ、ルーチンはブロック６３６に進み、そこで変数ｚが、変数ＴＥＭＰに於けるゼロではない第１ビットの数（即ち、最下位ビットから開始）に設定され得る。実際には、これは、ＩＮ＿Ｄ１が最も高い優先度であり、ＩＮ＿Ｄ２が次に高い優先度であり、ＩＮ＿Ｄ３がその次に高い優先度である、等となるような順序に基づいて、入力の優先度を設定する。他の実施形態では、他の優先順位スキームが採用され得る。例えば、プログラマーは、入力に優先度を割り当てること、又は異なる優先順位を使用すること（例えば、ＩＮ＿Ｄ１が最も低い優先度、ＩＮ＿Ｄ２が次に低い優先度等）が許容される。優先度はＳＭＦＢの全体に又は各状態に対して設定し得る。
【００６５】
次に、ブロック６４０で、変数ＮＥＷＳＴＡＴＥが状態マトリックスの行ｚ及び列ＳＴＡＴＥの値に設定され得る。
【００６６】
ブロック６１６、６２６及び６４０の後、ルーチンはブロック６４４に進む。また、もし、ブロック６３２で、変数ＴＥＭＰが０であると決定されると、ルーチンはブロック６４４に進み得る。ブロック６４４では、変数ＮＥＷＳＴＡＴＥが０であるかどうかが決定される。もしそれが０なら、ルーチンは終了する。もしそれが０でないなら、ルーチンはブロック６４８に進み、そこで、ＳＴＡＴＥ変数に対応する出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等がアサート停止にされる。次に、ブロック６５２では、変数ＳＴＡＴＥが変数ＮＥＷＳＴＡＴＥの値に設定される。ブロック６５６では、ＳＴＡＴＥ変数に対応する出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等がアサートにされ、ルーチンは終了する。
【００６７】
図９の方法４５０及び図１０−１２のルーチンが単なる例示であり、他の実施例では、ブロックが改変され、新たなブロックが追加され、ブロックの順序が変更され、ブロックが省略され、及び／又は結合され得ることが理解されるべきである。単なる例示としての図１０を参照すれば、ブロック５０８、５１６，５２０及び５２４は、もし「ＢＡＤ」の状態を有する入力の特別な取り扱いが必要とされず又は望まれていないなら、省略され得る。
【００６８】
他の実施形態でとして、ブロック６３６は、変数ｚが０ではないＴＥＭＰの最後のビットの数に設定されるように、改変され得る。更なる実施形態として、ブロック６３６は、幾つかの優先度データに基づいて、０ではないＴＥＭＰのビットの一つに対応する数にｚを設定するように改変され得る。
【００６９】
図４を再び参照すれば、データ出力の全てがＳＭＦＢ２００に対応する状態マシンの状態のインディケータである必要はない。例えば、一実施形態では、状態マシンの種々の状態に対応する出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の値は、構成可能である。従って、例えば、特定の状態に対しては、複数の出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等がアサートされ得る。プログラマーがＳＭＦＢを構成するのを許容するために、構成アプリケーションはディスプレイデバイス１２０上に、その機能ブロックに関連する構成ウインドウ、スクリーン等のユーザインターフェイスメカニズムを表示し得る。
【００７０】
図１３は、図４のＳＭＦＢ２００のようなＳＭＦＢの少なくとも一部を構成するために使用され得るユーザインターフェイスメカニズムの一例である。このユーザインターフェイスメカニズムは、そのＳＭＦＢに関連する構成ウインドウ、スクリーン等の一部として表示される表又はマトリックス７００（以下では「マトリックス７００」と称する）を含んでいる。マトリックス７００は、行及び列に配された複数のセル７０４を有している。各列は、状態マシン機能ブロックの複数の出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の一つに対応し、各行は、状態マシンの可能な状態の一つに対応している。従って、各セル７０４は状態及び出力に対応している。他の実施形態では、各列は複数の出力の一つに対応し得、各列は状態マシンの可能な状態の一つに対応し得る。
【００７１】
マトリックス７００の出力「１」から「４」までは、ＳＭＦＢの出力ＯＵＴ＿Ｄ１からＯＵＴ＿Ｄ４にそれぞれ対応し得る。同様に、マトリックス７００の状態「１」から「６」は、状態マシンの可能な状態に対応し得る。加えて、この例では、ユーザは出力のそれぞれにラベルを付すことが可能である。例えば、図１３では、「出力１」は「バルブ−１０１を開ける」とラベルされている。出力のラベリングは、状態マシンの動作の理解及び／又はその状態マシンのプロセスプラントとの結び付けを容易にする。
【００７２】
プログラマーは、セル７０４に構成情報を入力することにより、ＳＭＦＢを構成し得る。特に、状態の一つと出力の一つとに対応する特定のセル７０４について、プログラマーは、その状態マシンがその状態にあるときに、その出力がアサートされるべきであることを示しているセルにコンフィグレーションデータを入力することができる。マトリックス７００の例では、コンフィグレーションデータはセル７０４の幾つかに入力されている。例えば、セル７０４Ａは、状態マシンが「作動中」の状態にあるときに、出力ＯＵＴ＿Ｄ３がアサートされるべきことを示すコンフィグレーションデータを含んでいる。同様に、セル７０４Ｂは、状態マシンが「作動中」の状態にあるときに、出力ＯＵＴ＿Ｄ４がアサートされるべきことを示すコンフィグレーションデータを含んでいる。
【００７３】
この特定の実施形態では、もし、プログラマーがセル７０４にコンフィグレーションデータを入力しなかったなら、その特定の状態については、対応する出力はアサートされるべきでないとみなされる。例えば、セル７０４Ｃ及び７０４Ｄは「×」が付けられておらず、状態マシンが「作動中」の状態にあるときに、出力ＯＵＴ＿Ｄ１及びＯＵＴ＿Ｄ２はアサートされるべきでないことを示している。他の実施形態では、プログラマーは、その状態マシンがもし特定の状態にあるなら特定の出力をアサートすべきではないことを示すコンフィグレーションデータを入力し得る。同様に、特定の状態及び出力に対して、その出力がアサートされるか否かは問題ではないことを示すことも可能である。
【００７４】
プログラマーは、当業者によく知られている技術を含む種々の技術の何れをも使用して、マトリックス７００にコンフィギュレーションデータを入力し得る。例えば、セル７０４にコンフィギュレーションデータを入力するために、プログラマーは、マウス、トラックボール、タッチスクリーン等を使用してセル７０４を選択し得る。次に、ユーザは、例えばキーボードを介してセル７０４に直接コンフィギュレーションデータを入力することができる。あるいは、プログラマーは、セル７０４を選択し、次に「編集」、「変更」等をプルダウンメニューから選択し、又は「編集」ボタン、「変更」ボタン等を選択することができる。次に、ユーザインターフェイスは、プルダウンメニュー、ウインドウ、ディスプレイスクリーン等を介して選択肢のリストをプログラマーに表示する。例えば、選択肢のリストは、「出力をアサートする」、「出力をアサート停止にする」選択肢、状況に応じて「無関係」の選択を含み得る。次に、プログラマーは、例えばキーボード、マウス、トラックボール、タッチスクリーン等を使用して、選択肢の一つを選択し得る。もし、プログラマーが「出力をアサートする」の選択肢を選択したなら、コンフィギュレーションデータは、その対応する状態に対しては、対応する出力がアサートされるべきことを示すであろう。例えば、「×」がセルに表示される、「１」がセルに表示される、「ＴＲＵＥ」がセルに表示される、「アサート」がセルに表示される、等である。もし、プログラマーが「出力をアサート停止にする」の選択肢を選択したなら、コンフィギュレーションデータは、その対応する状態に対しては、対応する出力がアサートされるべきではないを示すであろう。例えば、セルがブランクのままにされる、「０」がそのセルに表示される、「ＦＡＬＳＥ」という語がセルに表示される、「アサート停止」という語がセルに表示される、等である。
【００７５】
マトリックス７００は６つの状態及び４つの出力に対する行を含んでいるけれど、異なる数の状態及び出力を有する同様のマトリックスが、異なる数の状態及び出力を有するＳＭＦＢについて使用され得る。状態及び出力の数は構成可能である。
【００７６】
図７を再び参照すれば、前述のように、現在の状態がブロック３６２で決定された後ＳＭＦＢのデータ出力が現在の状態（ブロック３６６）に基づいて設定され得る。例えば、データ出力は、図１３のマトリックス７００のようなマトリックスに入力されたコンフィグレーションデータに従って設定され得る。図１４は、ＳＭＦＢの他の実施形態のブロックダイヤグラムである。ＳＭＦＢ７５０は、図８のＳＭＦＢ４００と同様であるが、状態マシンの現在の状態に基づいて適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等を設定するロジック７５４を含んでいる。特に、ロジック７５４は、出力コンフィグレーションデータベース７５８に格納されている状態／出力コンフィグレーションデータにアクセスする。データベース７５８及びデータベース４０６は、同じコンピュータ読み取り可能な媒体又は異なるコンピュータ読み取り可能な媒体上に格納され得る。出力コンフィグレーションデータベースは、図１３のマトリックス７００のようなマトリックスに入力されたコンフィグレーションデータを含んでいる。
【００７７】
図１５は、ＳＭＦＢの次の状態を決定し、及び必要に応じて適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等をアサートするのに使用され得る例示のルーチン８００のフローダイヤグラムである。ルーチン８００は、図１２のルーチン６００と同様である。しかし、ブロック６５２の後、フローはブロック８０４に進み、そこで適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等がアサートされる。
【００７８】
図１６は、適当な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等をアサートするために使用され得る例示のルーチン８５０のフローダイヤグラムである。ブロック８５４では、変数ｚが１に設定される。ブロック８５８では、出力ＯＵＴ＿Ｄｚが、変数ＳＴＡＴＥによって指示されている配列変数ＯＵＴＰＵＴの要素のビットナンバーｚの値に設定される。ＯＵＴＰＵＴ配列の各要素は、対応する状態の一つに対して、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の値を指示する変数であり得る。例えば、ＯＵＴＰＵＴ［１］は状態１に対応し、ＯＵＴＰＵＴ［２］は状態２に対応する、等である。加えて、各要素の各ビットは、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の一つに対応し得る。例えば、ビット１はＯＵＴ＿Ｄ１に対応し、ビット２はＯＵＴ＿Ｄ２に対応する、等である。例えば図１３を参照すれば、マトリックス７００については、ＯＵＴＰＵＴ配列は６つの要素を有し、要素ＯＵＴＰＵＴ［１］は０ｘ０６である。
【００７９】
ブロック８６２では、変数ｚはインクリメントされ、ブロック８６６では、ｚの値が出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の数より大きいか否かがどうかが決定される。もし、ｚが出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２等の数より大きくなければ、ルーチンはブロック８５８に戻り得る。そうでなければ、ルーチンは終了する。
【００８０】
ＳＭＦＢに対するコンフィグレーションデータは、上述のものに加えて他のタイプのグラフィカルユーザーインターフェースを介して入力され得る。例えば、コンフィグレーションデータは、状態遷移ダイヤグラムと同様のグラフィカルユーザーインターフェースを介して入力され得る。図１７は、ＳＭＦＢを構成するために使用され得る例示の状態遷移ダイヤグラム９００である。ダイヤグラム９００は、複数のグラフィカル要素９０４，９０８，９１２，９１６，９２０，９２４，９２８及び９３２を含んでいる。要素９０４，９０８及び９１２は、状態マシンの状態１，２及び３をそれぞれ表している。要素９１６は、状態マシンが状態１にあるときに、もし入力２がアサートされているなら状態２に遷移すべきことを表している。要素９２０は、状態マシンが状態１にあるときに、もし入力３がアサートされているなら状態３に遷移すべきことを表している。要素９２４は、状態マシンが状態２にあるときに、もし入力１がアサートされているなら状態１に遷移すべきことを表し、そして、要素９２８は、状態マシンが状態３にあるときに、もし入力１がアサートされているなら状態１に遷移すべきことを表している。同様に、要素９３２は、状態マシンが状態３にあるときに、もし入力４がアサートされているなら状態２に遷移すべきことを表している。
【００８１】
一般的には、ＳＭＦＢは、ソフトウエア、ファームウエア若しくはハードウエア、又はソフトウエア、ファームウエア及び／若しくはハードウエアの幾つかの組合せによって実現され得る。例えば、ＳＭＦＢは、コントローラ１２ａ、１６ａ、Ｉ／Ｏデバイス２４、ロジックソルバ５０、及びデバイス２２，２３，６０及び６２の一又はそれ以上によって実現され得る。他の実施形態として、ＳＭＦＢは、ワークステーション１８ａ及び２０ａの一又はそれ以上によって実現され得る。例えば、ＳＭＦＢは、プロセスプラントの動作をテストし又はオペレータを訓練するためのシュミレーションの一部として、ワークステーション１８ａ及び／又はワークステーション２０ａによって実現され得る。幾つかの実施形態では、ＳＭＦＢは、ソフトウエアに従って構成されたプロセッサによって実現され、あるいは、例えばゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、プログラマブルアレイロジック（ＰＡＬ）、プログラマブルロジックアレイ（ＰＬＡ）等の一又はそれ以上を有するデバイスのようなプログラマブルロジックデバイスによって実現され得る。
【００８２】
図８のブロック４０４，４０８，４１２，４１６及び４２０と、図１４のブロック７５４は、ソフトウエア、ファームウエア、若しくはハードウエア、又はソフトウエア、ファームウエア及び／若しくはハードウエアの幾つかの組合せによって実現され得る。加えて、図１０〜１２，図１５及び図１６のフローダイヤグラムはルーチンとして記載されているけれども、これらのフローダイヤグラムは、ソフトウエア、ハードウエア、若しくはファームウエア、又はソフトウエア、ハードウエア及び／若しくはファームウエアの幾つかの組合せによって実現され得る。
【００８３】
上述のユーザインターフェイスのようなユーザインターフェイスの実施形態は、プロセッサによって全部又は一部が、例えばソフトウエアプログラムに従って構成される。例えば、ワークステーション１８ａ若しくは２０ａ、又は幾つかのコンピュータは、上述のユーザインターフェイスの全部又は一部を実現し得る。ユーザインターフェイスの実施形態を実現するためのソフトウエアプログラムは、ハードディスク、ＲＡＭ、バッテリーによってバックアップされたＲＡＭ、ＲＯＭ、ＣＤ−ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＶＤ、フラッシュメモリ等の有形の媒体上、又はＲＡＭのようなプロセッサに関連するメモリ上に格納されたソフトウエアに埋め込まれ得るが、当業者は、プログラムの全体又はその一部は、これに代えてプロセッサ以外の、並びに／又はファームウエア及び／若しくは公知の方法で専用のハードウエアに埋め込まれたデバイスによって実行され得ることを容易に理解するであろう。
【００８４】
本発明は、種々の改変及び代替の構成を容易に適用し得るが、その特定の例示された実施形態は、図面に示され及びここに詳述されている。しかしながら、開示を上述の特定の形式に限定することを意図しているのではなく、それとは反対に、添付の特許請求の範囲に規定される開示の精神及び範囲内にある全ての改変、代替構成及び装置を意図していることを理解すべきである。
【図面の簡単な説明】
【００８５】
【図１】プロセスプラントの一例を示すブロックダイヤグラムである。
【図２】図１に図示的に例示したワークステーションの一例を示すブロックダイヤグラムである。
【図３】制御モジュールを表すディスプレイの一例である。
【図４】状態マシン機能ブロックの一例である。
【図５】状態マシン機能ブロックに対する次の状態の構成を入力するための例示のマトリックスである。
【図６】次の状態のコンフィギュレーションデータがマトリックス状に表示されている図５の例示のマトリックスである。
【図７】状態マシン機能ブロックの動作方法の一例を示すフローダイヤグラムである。
【図８】状態マシン機能ブロックの一例のブロックダイヤグラムである。
【図９】状態マシン機能ブロックのもう一つの例示の方法を表すフローダイヤグラムである。
【図１０】状態マシン機能ブロックへのデータ入力を処理するための例示のルーチンを表すフローダイヤグラムである。
【図１１】状態マシン機能ブロックへのイネープル入力を処理するための例示のルーチンを表すフローダイヤグラムである。
【図１２】状態を変更し及び状態マシン機能ブロックの出力を設定するための例示のルーチンを表すフローダイヤグラムである。
【図１３】状態マシン機能ブロックに対する出力コンフィギュレーションデータを入力するためのマトリックスの一例である。
【図１４】状態マシン機能ブロック他の例を表すブロックダイヤグラムである。
【図１５】状態を変更し及び状態マシン機能ブロックの出力を設定するためのも一つの例示のルーチンを表すフローダイヤグラムである。
【図１６】状態マシン機能ブロックの適当な出力値を設定するための例示のルーチンのフローダイヤグラムである。
【図１７】状態マシン機能ブロックに対する次の状態のコンフィギュレーションデータを入力するための例示の状態遷移ダイヤグラムである。
【符号の説明】
【００８６】
１０  プロセスプラント
１２  コントローラノード
１２ａ  プロセスコントローラ
１４  安全システム
１４ａ  コントローラ
１６  コントローラノード
１６ａ  プロセスコントローラ
１８  オペレータワークステーションノード
１８ａ  ワークステーション
２０  オペレータワークステーションノード
２０ａ  ワークステーション
２２  フィールドデバイス
２３  フィールドデバイス
２４  プロセス制御Ｉ／Ｏカード
３０  ネットワーク
３２  コンフィギュレーションデータベース
５０  安全システムロジックソルバ
６０  安全システムフィールドデバイス
６２  安全システムフィールドデバイス
７０  ＭＰＤ
７４  バス
１００  プロセッサ
１０４  揮発性メモリ
１０８  不揮発性メモリ
１１２  ワークステーションＩ／Ｏデバイス
１１４  機能ブロック
１１６  アドレス／データバス
１１８  機能ブロック
１２０  ディスプレイデバイス
１２４  ユーザ入力デバイス
１５０  ディスプレイ
１５４  制御モジュール
１６０  ＳＭＦＢ
２００  ＳＭＦＢ
３００  マトリックス
４００  ＳＭＦＢ
４０６  コンフィグレーションデータベース
４０８  スイッチングロジック
４１２  スイッチングロジック
４１６  リセットロジック
４２０  ロジック
７００  マトリックス
７５０  ＳＭＦＢ
７５４  ロジック
７５８  データベース
７５８  出力コンフィグレーションデータベース
９００  状態遷移ダイヤグラム
９０４  グラフィカル要素
９０８  グラフィカル要素
９１２  グラフィカル要素
９１６  グラフィカル要素
９２０  グラフィカル要素
９２４  グラフィカル要素
９２８  グラフィカル要素
９３２  グラフィカル要素
【図１】
2005085271.tif 000003
【図２】
2005085271.tif 000004
【図３】
2005085271.tif 000005
【図４】
2005085271.tif 000006
【図５】
2005085271.tif 000007
【図６】
2005085271.tif 000008
【図７】
2005085271.tif 000009
【図８】
2005085271.tif 000010
【図９】
2005085271.tif 000011
【図１０】
2005085271.tif 000012
【図１１】
2005085271.tif 000013
【図１２】
2005085271.tif 000014
【図１３】
2005085271.tif 000015
【図１４】
2005085271.tif 000016
【図１５】
2005085271.tif 000017
【図１６】
2005085271.tif 000018
【図１７】
2005085271.tif 000019
【外国語明細書】
2005085271000001.pdf