(57)【特許請求の範囲】
【請求項１】
プロセスプラントに関連し状態マシンを実現する機能ブロックを、表示デバイスおよび入力デバイスを備えるコンピューティングデバイスを用いて設定する方法であって、
前記状態マシンの複数の状態のうちの少なくとも一部の状態の各々に対して、前記機能ブロックの複数の出力のうちの少なくとも一部の出力の値を設定すべく前記表示デバイスを介して第一のグラフィカルユーザインターフェイスを提供することと、
前記第一のグラフィカルユーザインターフェイスを通じて、第一の図形要素の少なくとも一つに対応する、出力コンフィギュレーションデータを受信することと、
前記機能ブロックに関連する第一のコンピュータ読み取り可能媒体に前記出力コンフィギュレーションデータを格納することと、
プロセスプラントにおいて実施される制御戦略の一部として、状態マシンの現在の状態に基づく出力、ならびに格納されている前記出力コンフィギュレーションデータのうちの少なくとも１つを設定する機能ブロックを実行することとを含んでおり、
前記第一のグラフィカルユーザインターフェイスを提供することにおいて、
前記少なくとも一部の出力が、前記プロセスプラント内の一または複数の物理的機能を達成すべく少なくとも部分的に用いられており、
前記第一のグラフィカルユーザインターフェイスが複数の第一の図形要素を備えており、該複数の第一の図形要素のうちの少なくとも一部の第一の図形要素それぞれが、前記少なくともいくつかの状態のうちの対応する状態と前記少なくともいくつかの出力のうちの一つの出力とからなるペアそれぞれを表しており、
前記出力コンフィギュレーションデータを受信することにおいて、
受信した出力コンフィギュレーションデータは、少なくともいくつかの状態のうちの一つと、前記出力のうちの一つとからなる一以上のペアに対応しており、このいくつかの状態のうちの一つが、前記出力コンフィギュレーションデータを受信するためのものであるとともに、前記状態マシンがその対応する状態にあるときの、前記出力のうちの各出力値を示す、少なくとも一つの第一の図形要素と関連づけられている方法。
【請求項２】
前記複数の第一の図形要素が複数のセルを備えており、該複数のセルのうちのセルが、前記少なくとも一部の状態のうちの状態と前記少なくとも一部の出力のうちの出力とからなるペアそれぞれと対応するように関連づけられており、
前記出力コンフィギュレーションデータを受信することが、前記入力デバイスを通じて、前記複数のセルのうちの少なくとも一部と関連づけられている出力コンフィギュレーションデータを受信することを含んでおり、前記複数のセルのうちの少なくとも一部のセルの各々の前記出力コンフィギュレーションデータが、その対応する状態に前記状態マシンがある場合にその対応する出力の要求値を示す、請求項１記載の方法。
【請求項３】
前記複数のセルのうちの適切なセルの前記出力コンフィギュレーションデータの標記を前記表示デバイス上に表示することをさらに含んでいる、請求項２記載の方法。
【請求項４】
前記複数のセルを前記表示デバイス上に表示することが、前記表示デバイス上に、前記複数のセルからなりかつ複数行のセルおよび複数列のセルを有するマトリクスを表示することを含んでおり、前記複数の行の各行が、前記少なくとも一部の出力のうちの対応する出力に関連づけされており、前記複数の列の各列が、前記少なくとも一部の状態のうちの対応する状態に関連づけされている、請求項２記載の方法。
【請求項５】
前記複数のセルを前記表示デバイス上に表示することが、前記表示デバイス上に、前記複数のセルからなりかつ複数行のセルおよび複数列のセルを有するマトリクスを表示することを含んでおり、前記複数の行の各行が、前記少なくとも一部の状態のうちの対応する状態に関連づけされており、前記複数の列の各列が、前記少なくとも一部の出力のうちの対応する出力に関連づけされている、請求項２記載の方法。
【請求項６】
前記入力デバイスを介して、前記複数の出力の出力数を表すデータを受信することと、該出力数に基づいて、前記複数のセルのセル数を決定することとをさらに含んでいる、請求項２記載の方法。
【請求項７】
前記入力デバイスを介して、前記複数の状態の状態数を表すデータを受信することをさらに含んでおり、前記複数のセルのセル数を決定することが、前記出力数および前記状態数に基づいて、前記セル数を決定することを含んでいる、請求項６記載の方法。
【請求項８】
前記入力デバイスを介して、前記複数の状態の状態数を表すデータを受信することと、該状態数に基づいて、前記複数のセルのセル数を決定することとをさらに含んでいる、請求項２記載の方法。
【請求項９】
前記状態マシンの現時点の状態に関係なく、前記少なくとも一部の出力のうちの一または複数を特定の値にさせるべきか否かを表すデータを、前記第一のグラフィカルユーザインターフェイスを介して受信することをさらに含んでいる、請求項１記載の方法。
【請求項１０】
前記状態マシンが前記複数の状態の状態間をどのように遷移するかを指定するための、前記表示デバイスを介した第二のグラフィカルユーザインターフェイスを提供することと、
該第二のグラフィカルユーザインターフェイスを介して状態遷移データを受信することと、
前記機能ブロックに関連する第二のコンピュータ読み取り可能媒体上に前記状態遷移データを格納することとをさらに含んでおり、
前記第二のグラフィカルユーザインターフェイスが複数の第二の図形要素を有しており、該第二の図形要素のうちの少なくとも一部が、前記状態マシンが前記機能ブロックへの少なくとも一つの入力に基づいて状態間で遷移することを指定すべく用いられ、該少なくとも一つの入力が前記プロセスプラントに関連付けされる、請求項１記載の方法。
【請求項１１】
前記少なくとも一つの入力が、前記プロセスプラントに関連する少なくとも一つの他の機能ブロックから受信される、請求項１０記載の方法。
【請求項１２】
前記少なくとも一つの入力が、オペレータインターフェイスから受信される、請求項１０記載の方法。
【請求項１３】
前記第一のコンピュータ読み取り可能媒体が前記第二のコンピュータ読み取り可能媒体を含んでいる、請求項１０記載の方法。
【請求項１４】
前記少なくとも一つの入力のうちの一または複数がＢＡＤステータスを有している場合に、前記状態マシンが、前記複数の状態のうちの状態間でどのように遷移すべきかを表すデータを前記第二のグラフィカルユーザインターフェイスを介して受信することさらに含んでいる、請求項１０記載の方法。
【請求項１５】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連するプロセス制御システムに提供される、請求項１０記載の方法。
【請求項１６】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連する安全システムに提供される、請求項１０記載の方法。
【請求項１７】
マシン読み取り可能インストラクションを格納する有形の媒体であって、
プロセスプラントに関連する機能ブロックの複数の出力のうちの少なくとも一部の出力の値を、前記機能ブロックにより実行される状態マシンの複数の状態のうちの少なくとも一部の状態の各々に対して設定すべく、コンピューティングデバイスの表示デバイスを介して第一のグラフィカルユーザインターフェイスを提供するための第一のコードと、
前記第一のグラフィカルユーザインターフェイスを通じて出力コンフィギュレーションデータを受信するための第二のコードであって、受信した該出力コンフィギュレーションデータが、前記出力のうちの一つと、少なくともいくつかの状態のうちの一つとからなる一以上のペアに対応しているとともに、前記状態マシンがその対応する状態にあるときの、各出力値を示している第二のコードと、
前記機能ブロックに関連する第一のコンピュータ読み取り可能媒体に前記出力コンフィギュレーションデータを格納するための第三のコードと、
プロセスプラントにおいて実施される制御戦術の一部として、該機能ブロックの現在の状態と格納された出力コンフィギュレーションデータとに基づく少なくとも１つの出力を設定する機能ブロックを実行するための第四のコードと、を有しており、
前記第一のコードにおける、前記少なくとも一部の出力の値が、前記プロセスプラント内の一または複数の物理的機能を達成すべく少なくとも部分的に用いられてなる、有形の媒体。
【請求項１８】
前記第一のコードが、前記機能ブロックに関連する複数のセルを前記表示デバイス上に表示するための第五のコードを含んでおり、前記複数のセルのうちの各セルが、前記少なくとも一部の出力のうちの対応する出力と、前記状態マシンの前記複数の状態の前記少なくとも一部の状態のうちの対応する状態とに対応づけされており、
前記第二のコードが、前記コンピューティングデバイスの入力デバイスを介して、前記複数のセルの少なくとも一部に関連する出力コンフィギュレーションデータを受信するための第六のコードを含んでおり、前記複数のセルの前記少なくとも一部の各セルの前記出力コンフィギュレーションデータが、その対応する状態に前記状態マシンがある場合の、その対応する出力の要求値を表してなる、請求項１７記載の有形の媒体。
【請求項１９】
前記表示デバイス上に、前記複数のセルのうちの適切なセルの前記出力コンフィギュレーションデータの標記を表示するための第七のコードをさらに有してなる、請求項１８記載の有形の媒体。
【請求項２０】
前記第五のコードが、前記表示デバイス上に、前記複数のセルからなりかつ複数行のセルおよび複数列のセルを有するマトリクスを表示するための第七のコードを含んでおり、前記複数行の各行が、前記少なくとも一部の出力のうちの対応する出力に関連づけされており、前記複数列の各列が、前記少なくとも一部の状態のうちの対応する状態に関連づけされてなる、請求項１８記載の有形の媒体。
【請求項２１】
前記第五のコードが、前記表示デバイス上に、前記複数のセルからなりかつ複数行のセルおよび複数列のセルを有するマトリクスを表示するための第七のコードを含んでおり、前記複数行の各行が、前記少なくとも一部の状態のうちの対応する状態に関連づけされており、前記複数列の各列が、前記少なくとも一部の出力のうちの対応する出力に関連づけされてなる、請求項１８記載の有形の媒体。
【請求項２２】
前記入力デバイスを介して前記複数の出力の出力数を表すデータを受信するための第七のコードと、
該出力数に基づいて前記複数のセルのセル数を決定するための第八のコードとをさらに有してなる、請求項１８記載の有形の媒体。
【請求項２３】
前記入力デバイスを介して前記複数の状態の状態数を表すデータを受信するための第九のコードをさらに有しており、
前記第八のコードが、前記出力数および前記状態数に基づいて前記セル数を決定するための第十のコードを有してなる、請求項２２記載の有形の媒体。
【請求項２４】
前記入力デバイスを介して前記複数の状態の状態数を表すデータを受信するための第七のコードと、
前記状態数に基づいて前記複数のセルのセル数を決定するための第八のコードとをさらに有してなる、請求項１８記載の有形の媒体。
【請求項２５】
前記状態マシンの現時点の状態に関係なく、前記少なくとも一部の出力のうちの一または複数を特定の値にさせるべきか否かを表すデータを前記第一のグラフィカルユーザインターフェイスを介して受信するための第五のコードをさらに含んでなる、請求項１７記載の有形の媒体。
【請求項２６】
前記状態マシンが前記複数の状態の状態間をどのように遷移するかを指定する、前記表示デバイスを介した第二のグラフィカルユーザインターフェイスを提供するための第五のコードと、
前記第二のグラフィカルユーザインターフェイスを介して状態遷移データを受信するための第六のコードと、
前記機能ブロックに関連する第二のコンピュータ読み取り可能媒体上に前記状態遷移データを格納するための第七のコードとをさらに有しており、
前記第二のグラフィカルユーザインターフェイスが複数の第二の図形要素を有しており、前記機能ブロックへの少なくとも一つの入力に基づいて前記状態マシンが状態間で遷移する必要があること指定すべく前記第二の図形要素のうちの少なくとも一部を利用することができ、前記少なくとも一つの入力が前記プロセスプラントに関連づけされてなる、請求項１７記載の有形の媒体。
【請求項２７】
前記少なくとも一つの入力が、前記プロセスプラントに関連する少なくとも一つの他の機能ブロックから受信されてなる、請求項２６記載の有形の媒体。
【請求項２８】
前記少なくとも一つの入力が、オペレータインターフェイスから受信されてなる、請求項２６記載の有形の媒体。
【請求項２９】
前記第一のコンピュータ読み取り可能媒体が前記第二のコンピュータ読み取り可能媒体を含んでなる、請求項２６記載の有形の媒体。
【請求項３０】
前記少なくとも一つの入力のうちの一または複数がＢＡＤステータスである場合に、前記複数の状態のうちの状態間で前記状態マシンがどのように遷移すべきかを表すデータを前記第二のグラフィカルユーザインターフェイスを介して受信するための第八のコードをさらに有してなる、請求項２６記載の有形の媒体。
【請求項３１】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連するプロセス制御システムに提供されてなる、請求項２６記載の有形の媒体。
【請求項３２】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連する安全システムに提供されてなる、請求項２６記載の有形の媒体。
【請求項３３】
プロセスプラント内の一または複数のフィールドデバイスの制御に用いられる機能ブロックを実行する方法であって、
前記機能ブロックにより実行される状態マシンの複数の状態のうちの少なくとも一部の状態の各々に対して前記機能ブロックの複数の出力のうちの少なくとも一部の出力の値を設定すべく、コンピューティングデバイスの表示画面を介してグラフィカルユーザインターフェイスを提供することと、
前記グラフィカルユーザインターフェイスを通じて出力コンフィギュレーションデータを受信することと、
前記機能ブロックに関連する第一のコンピュータ読み取り可能媒体に前記出力コンフィギュレーションデータを格納することと、
前記プロセスプラントに関連する少なくとも一つの入力を受信することと、
前記少なくとも一つの入力に少なくとも部分的に基づいて、必要に応じて前記状態マシンの現時点の状態を変更することと、
少なくとも前記現時点の状態に基づいて、前記第一のコンピュータ読み取り可能媒体から前記現時点の状態に関連する出力コンフィギュレーションデータを検索することと、
前記状態マシンの現在の状態と、検索された前記出力コンフィギュレーションデータとに少なくとも部分的に基づいて前記少なくとも一部の出力を設定することとを含んでおり、  前記グラフィカルユーザインターフェイスを提供することにおいて、
前記少なくとも一部の出力が、前記プロセスプラント内の一または複数の物理的機能を達成すべく少なくとも部分的に用いられ、
出力コンフィギュレーションデータを受信することにおいて、
受信した出力コンフィギュレーションデータが、前記出力のうちの一つと、少なくともいくつかの状態のうちの一つとからなる一以上のペアに対応しているとともに、前記状態マシンがその対応する状態にあるときの、出力の値を示す、方法。
【請求項３４】
前記少なくとも一つの入力が、前記プロセスプラントに関連する少なくとも一つの他の機能ブロックから受信される、請求項３３記載の方法。
【請求項３５】
前記少なくとも一つの入力が、オペレータインターフェイスから受信される、請求項３３記載の方法。
【請求項３６】
前記出力コンフィギュレーションデータは、前記状態マシンの現時点の状態に関係なく前記少なくとも一部の出力のうちの一または複数が特定の値に設定されるべきか否かを表すデータを含んでおり、
前記少なくとも一部の出力を設定することが、前記少なくとも一部の出力のうちの一または複数が前記特定の値に設定されるべきか否かを表すデータに少なくとも部分的に基づいている、請求項３３記載の方法。
【請求項３７】
前記少なくとも一つの入力が増分入力および減分出力を含んでおり、
前記状態マシンの現時点の状態を変更することが、前記増分入力が該現時点の状態を増分すべきであることを表す場合に該現時点の状態を増分させることを含んでおり、
前記状態マシンの現時点の状態を変更することが、前記減分入力が該現時点の状態を減分すべきであることを表している場合に該現時点の状態を減分させることをさらに含んでいる、請求項３３記載の方法。
【請求項３８】
前記少なくとも一つの入力は、前記現時点の状態が最高位実行可能状態にある場合に前記現時点の状態を増分させることが前記現時点の状態を最低位実行可能状態に設定することを含むか否かを表す入力を含んでおり、
前記少なくとも一つの入力は、前記現時点の状態が前記最低位実行可能状態にある場合に前記現時点の状態を減分させることが前記現時点の状態を前記最高位実行可能状態に設定することを含むか否かを表す入力をさらに含んでいる、請求項３７記載の方法。
【請求項３９】
前記現時点の状態が最高位実行可能状態にある場合に前記現時点の状態を増分させることが前記現時点の状態を前記最低位実行可能状態に設定することを含むか否かを表す入力と、前記現時点の状態が最低位実行可能状態にある場合に前記現時点の状態を減分させることが前記最高位実行可能状態に前記現時点の状態を設定することを含むか否かを表す入力とが単一の入力からなる、請求項３８記載の方法。
【請求項４０】
前記機能ブロックを実行不能状態にさせるか否かを表す入力を受信することと、
前記機能ブロックを実行不能状態にさせる否かを表す入力が前記機能ブロックを実行不可能にさせることを表す場合に、前記状態マシンの前記現時点の状態を実行不可能状態に設定することとをさらに含んでいる、請求項３３記載の方法。
【請求項４１】
前記状態マシンを初期状態に設定すべきか否かを表す入力を受信することと、
前記状態マシンを初期状態に設定すべきか否かを表す入力が前記状態マシンを初期状態に設定する必要があることを表している場合に前記状態マシンの現時点の状態を初期状態に設定することとをさらに含んでおり、
前記状態マシン機能ブロックを実行可能状態にすべきであるか否かを表す入力と、前記状態マシン機能ブロックを初期状態に設定すべきか否かを表す入力とが単一入力からなる、請求項４０記載の方法。
【請求項４２】
前記状態マシンを初期状態に設定すべきか否かを表す入力を受信することと、
前記状態マシンを初期状態に設定すべきか否かを表す入力が前記状態マシンを初期状態に設定する必要があることを表している場合に前記状態マシンの前記現時点の状態を初期状態に設定することとをさらに含んでいる、請求項３３記載の方法。
【請求項４３】
前記状態マシン機能ブロックを要求状態に設定すべきか否かを表す入力を受信することと、
前記要求状態を表す入力を受信することと、
前記状態マシン機能ブロックを要求状態に設定すべきか否かを表す入力が前記状態マシン機能ブロックを要求状態に設定する必要があることを表している場合に、前記状態マシンの前記現時点の状態を前記要求状態に設定することとをさらに含んでいる、請求項３３記載の方法。
【請求項４４】
前記状態マシンの前記現時点の状態を表す、前記複数の出力のうちの少なくとも一つの出力を提供することをさらに含んでいる、請求項３３記載の方法。
【請求項４５】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連するプロセス制御システムに提供される、請求項３３記載の方法。
【請求項４６】
前記機能ブロックの前記複数の出力が、前記プロセスプラントに関連する安全システムに提供される、請求項３３記載の方法。
【請求項４７】
プロセスプラントにおける一または複数のフィールドデバイスの制御シミュレーションに用いられる機能ブロックを実行する方法であって、
前記機能ブロックにより実行される状態マシンの複数の状態のうちの少なくとも一部の状態の各々に対して、前記機能ブロックの複数の出力のうちの少なくとも一部の出力の値を設定すべく、コンピューティングデバイスの表示画面を介して、グラフィカルユーザインターフェイスを提供することと、
前記グラフィカルユーザインターフェイスを通じて出力コンフィギュレーションデータを受信することと、
前記機能ブロックに関連する第一のコンピュータ読み取り可能媒体に前記出力コンフィギュレーションデータを格納することと、
前記プロセスプラントに関連する少なくとも一つの入力を受信することと、
前記少なくとも一つの入力に少なくとも部分的に基づいて、前記状態マシンの現時点の状態を必要に応じて変更することと、
少なくとも前記現時点の状態に基づいて、前記第一のコンピュータ読み取り可能媒体から前記現時点の状態に関連する出力コンフィギュレーションデータを検索することと、
前記状態マシンの現在の状態と検索された前記出力コンフィギュレーションデータとに少なくとも部分的に基づいて前記少なくとも一部の出力を設定することとを含んでおり、
前記グラフィカルユーザインターフェイスを提供することにおいて、
前記少なくとも一部の出力が、前記プロセスプラントに関連するプロセス制御システムおよび安全システムのうちの少なくとも一つの動作シミュレーションに少なくとも部分的に用いられ、
前記出力コンフィギュレーションデータを受信することにおいて、
受信した出力コンフィギュレーションデータが、前記出力のうちの一つと、少なくともいくつかの状態のうちの一つとからなる一以上のペアに対応しているとともに、前記状態マシンがその対応する状態にあるときの、前記出力のうちの各出力値を示す、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、プロセスプラントにおいて利用される機能ブロックに関するものであり、さらに詳細には、プロセスプラントに関連する状態マシンの構築および実装に関するものである。
【背景技術】
【０００２】
本出願は、同一出願人によるものであるとともに本明細書において参照することによりここで明示的にその全内容を援用する、表題が「ユーザによる修正可能なプ状態遷移コンフィギュレーションデータベース」（ＳＴＡＴＥ  ＭＡＣＨＩＮＥ  ＦＵＮＣＴＩＯＮ  ＢＬＯＣＫ  ＷＩＴＨ  Ａ  ＵＳＥＲ  ＭＯＤＩＦＩＡＢＬＥ  ＳＴＡＴＥ  ＴＲＡＮＳＩＴＩＯＮ  ＣＯＮＦＩＧＵＲＡＴＩＯＮ  ＤＡＴＡＢＡＳＥ）である米国特許出願に関連するものである。
【０００３】
化学プロセス、石油プロセス、または他のプロセスにおいて利用されるプロセス制御システムは、アナログバスもしくはアナログ回線、デジタルバスもしくはデジタル回線、またはアナログとデジタルとを組み合わせたバスもしくは回線を介して、少なくとも一つのホストワークステーションもしくはオペレータワークステーションと、一または複数のフィールドデバイスとに通信可能に接続されている一または複数のプロセスコントローラを備えていることが一般的である。これらのフィールドデバイスには、たとえば、バルブ、バルブポジショナ、スイッチ、トランスミッタ（たとえば、温度センサ、圧力センサ、および流量センサ）などが含まれ、バルブの開閉およびプロセスパラメータの測定の如きプロセスプラント内の機能を実行する。プロセスコントローラは、フィールドデバイスにより計測されたプロセス測定値および／またはそれらのフィールドデバイスに関する他の情報を表す信号を受信し、これらの情報を用いて制御ルーチンを実行し、次いで、制御信号を生成する。この制御信号は、プロセス動作を制御すべく上記のバスまたは回線を介してフィールドデバイスに送信される。フィールドデバイスおよびプロセスコントローラからの情報は、通常、オペレータワークステーションにより実行される一または複数のアプリケーションを利用できるようになっており、これにより、オペレータは、プロセスの設定、プロセスの現在の状況の閲覧、プロセス動作の修正などの如き、プロセスに対する所望の機能を実行することができる。
【０００４】
さらに、プラント内で有毒薬品の流出、爆発などの如き深刻な災害になるまたはそれを引き起こすおそれのある問題が発生した場合に、プロセスプラント内における重要な安全に関する問題を検出し、プラント内のバルブの閉鎖、デバイス電力の停止、フローの切換えなどを自動的に行う個別の安全システムがほとんどのプロセスにおいて設けられている。これらの安全システムは、通常、標準のプロセス制御コントローラ以外に、ロジックソルバと呼ばれる一または複数の別々のコントローラを備えている。これらのロジックソルバは、プロセスプラント内において設置されている別々のバスまたは通信回線を介して、安全フィールドデバイスに接続されている。ロジックソルバは、安全フィールドデバイスを用いて、特定の安全スイッチまたはシャットダウンバルブの位置、プロセス内のオーバフローまたはアンダーフロー、重要な電力発生デバイスまたは電力制御デバイスの動作、不良検出デバイスの動作などの如き、重要なイベントに関連したプロセス状態を検出することにより、プロセスプラント内の「イベント」を検出する。（通常、「原因」と呼ばれる）イベントが検出された場合、安全コントローラは、バルブの閉鎖、デバイスの停止、プラント内の領域の電力停止などの如き、そのイベントの有害性を制限するようななんらかの（通常、「結果」と呼ばれる）アクションを取る。一般的に、これらのアクションまたは結果には、プロセスプラント内の深刻なまたは危険な状態の防止を目的としたトリップモード運転または安全モード運転に安全デバイスを切換えることが含まれる。
【０００５】
プロセス制御システムおよび安全システムの如き、プロセスプラント内のシステムは、通常、さまざまなプロセスおよび／またはシステムそれ自体のステータスを追跡しうる。システムに対する入力信号は、システムにより追跡されたステータスを変更させうるし、システムにより生成される出力信号は、そのシステムへの入力信号に加えてそのシステムの現時点のステータスに依存しうる。現在、システムのステータスは、プログラミング言語で書かれたルーチンを用いて追跡されうる。このようなルーチンを書くことは、単調であり、時間がかかり、エラーを伴うものでありうる。このようなエラーは、安全システムにおいて発生すると、当該安全システムの正常動作を妨げ、その結果、プラント作業員に深刻な怪我または死をもたらすこともあれば、プラント内の数百万ドルもしうるような装置または材料をだめにしてしまうこともあるため、深刻である。
【０００６】
また、システムのステータスは、国際電気標準委員会（ＩＥＣ）により標準化されているプログラマブルコントローラのプログラミング技術、通常、（ＩＥＣ６１１３１−３規格に定められている）「シーケンシャル機能チャート」と呼ばれる技術を用いて追跡されうる。当業者にとって明らかなように、システムステータスの追跡にシーケンシャル機能チャートを用いるのは困難なことである。さらに、プログラミング言語で書かれたルーチンと同様に、シーケンシャル機能チャートの作成は、単調で、時間がかかり、かつエラーを伴うものである。
【発明の開示】
【課題を解決するための手段】
【０００７】
プロセスプラント内の制御システム、安全システムなどは、それぞれ、機能ブロックダイアグラムプログラミング環境と容易に一体化させられうる一または複数の状態マシン機能ブロックを用いうる。かかる状態マシン機能ブロックは、一または複数の入力を有しうる。この入力は、かかる状態マシン機能ブロックにより実現されうる状態マシンに状態を変更させてもよいしさせなくともよい。また、かかる状態マシン機能ブロックは、複数の出力を有しうる。かかる機能ブロックに関連する出力コンフィギュレーションデータは、状態マシンの状態の各々に対する、かかる機能ブロックの出力を示しうる。かかる機能ブロックは、この出力コンフィギュレーションデータを用いて、特定の状態のときの出力を決定しうる。かかる状態マシン機能ブロックの入力は、たとえばプロセス制御システムまたは安全システムと関連づけされうるし、その出力は、たとえばプロセス制御システムまたは安全システムのフィールドデバイスの制御に用いられうる。
【０００８】
かかる状態マシン機能ブロックは、少なくとも部分的に、グラフィカルユーザインターフェイス機構を通じて設定されうる。このグラフィカルユーザインターフェイス機構は、複数の図形要素を有しうる。これらの図形要素のうちの少なくとも一部は、状態マシンのさまざまな状態におけるかかる機能ブロックの出力を指定すべく用いられうる。一例では、上記の図形エレメントは、複数のセルを有しており、各セルは、出力と状態とからなる各ペアに対応している。上記の複数のセルはマトリクス状に構成されうる。たとえば、
ここでは、マトリクスの行が状態マシンのありうる状態に対応しており、マトリクスの列が状態マシンの出力に対応しうる（または、その逆でもよい）。ある状態とある出力とに対応するセルに対して、プログラマは、コンピュータの入力デバイスを用いて、上記の状態マシンがそのある状態に存在するときのそれに対応する出力としての要求値を表すコンフィギュレーションデータを入力しうる。
【０００９】
本明細書記載の状態マシン機能ブロックの実施例は、制御システムまたは安全システムに関するステータスを追跡する従来の技術と比較して設定が容易でありうる。たとえば、コンフィギュレーションの一部または全部を、上記の機構のごときグラフィカルユーザインターフェイス機構を用いて達成しうる。さらに、状態マシン機能ブロックの実施例は、機能ブロック論理を用いるコントローラ、論理ソルバ、フィールドデバイスなどに容易に統合されうる。というのは、状態マシン機能ブロックの入力部および出力部を他の機能ブロック、制御戦略内のエレメントなどと相互に接続することにより、他のタイプの機能ブロックと同一のまたは同等の方法で、この状態マシン機能ブロックを統合することができるからである。さらに、状態マシン機能の動作を容易にドキュメント化することが可能である。というのは、少なくとも一部をマトリクス形式の如き図式によりその動作を示すことが可能であるからである。状態マシン機能ブロックを設定するための状態マシン機能ブロックまたは状態マシン機能機構の実施例は、上記の利点のうちの一または複数を備えていてもよいし、それらのいずれをも備えていなくともよい。
【発明を実施するための最良の形態】
【００１０】
（プロセスプラントの一例）
図１は、一または複数のノード12、16、18、20を備えるプロセスプラント10の一例を示すブロック線図である。図１のプロセスプラント10の一例では、ノード12、16の各々は、それに対応するプロセスコントローラ12a、16aを備えており、各プロセスコントローラは、たとえばＦｏｕｎｄａｔｉｏｎ  Ｆｉｅｌｄｂｕｓインターフェイス、ＨＡＲＴインターフェイスなどでありうる入力／出力（Ｉ／Ｏ）デバイス24を介して、一または複数のフィールドデバイス22、23に接続されている。また、コントローラ12a、16aは、ネットワーク30を介して、ノード18、20における一または複数のホストワークステーションまたはオペレータワークステーション18a、20aに接続されている。このネットワーク30は、たとえば、バス、イーサネットＬＡＮの如き有線式ローカルエリアネットワーク（ＬＡＮ）、無線式ＬＡＮ、ワイドエリアネットワーク（ＷＡＮ）、イントラネットなどのうちの一または複数を備えうる。コントローラノード12、16ならびに、それらに関連付けされているＩ／Ｏデバイス24およびフィールドデバイス22、23は、一般的に、過酷な状態になりうるプラント環境内に設置され、その全体にわたり分散されているが、オペレータワークステーションノード18、20は、通常、コントローラ作業員が容易にアクセス可能な制御室または他のそれほど過酷ではない環境に設置されている。
【００１１】
一般的にいえば、ノード18、20のワークステーション18a、20aは、プロセスプラント10を設定・監視すべく用いられるアプリケーションを格納・実行するために、ならびに／または、プロセスプラント10におけるデバイス22、23、24およびコントローラ12a、16aを管理するために用いられうる。さらに、データベース32は、ネットワーク30に接続されて、ノード12、16、18、20、22、23、24、50、70にダウンロードされるおよび／または格納されるプロセスプラント10の現時点の設定を格納するデータヒストリアンおよび／またはコンフィギュレーションデータベースとして動作してもよい。
【００１２】
たとえばエマーソンプロセスマネージメント（Ｅｍｅｒｓｏｎ  Ｐｒｏｃｅｓｓ  Ｍａｎａｇｅｍｅｎｔ）社により販売されているＤｅｌｔａＶ（登録商標）コントローラでありうるコントローラ12a、16aの各々は、複数の異なるかつ別々に実行される制御モジュールまたは制御ブロックを用いて制御戦略を実行するコントローラアプリケーションを格納・実行しうる。制御モジュールの各々は、一般的に機能ブロックと呼ばれるブロックから構成されている。ここでは、制御ルーチン全体の一部またはサブルーチンであり、プロセスプラント10内のプロセス制御ループを実現するために、（リンクと呼ばれる通信を介して、）他の機能ブロックとともに動作する。周知のように、機能ブロックは、通常、プロセスプラント10内のなんらかの物理的機能を実行するために、（トランスミッタ、センサ、または他のプロセスパラメータ計測デバイスに関連する）入力機能、（ＰＩＤ制御、ファジー論理制御などを実行する制御ルーチンに関連する）制御機能、または（バルブの如き）何らかのデバイスの動作を制御する出力機能のうちの一つを実行する。もちろん、機能ブロックのハイブリッドおよび他のタイプを設けて用いてもよい。ｆｉｅｌｄｂｕｓプロトコルおよびＤｅｌｔａＶ（登録商標）システムプロトコルは、オブジェクト指向型プログラミングプロトコルで設計・実現される制御モジュールおよび機能ブロックを用いてもよいが、これらの制御モジュールを、機能ブロックまたはその他の特定のプログラミング技術を用いて設計する必要はなく、たとえばシーケンシャル機能ブロック、ラダー論理などを含むいかなる所望の制御プログラミングスキームを用いて設計してもよい。従来と同様に、プロセス制御モジュール12、16内に格納される制御モジュールのコンフィギュレーションは、ワークステーション18a、20aにより実行されるアプリケーションによってアクセスが可能なコンフィギュレーションデータベース32内に格納されてもよい。機能ブロックが標準型４〜２０ｍａデバイスおよびＨＡＲＴデバイスの如きある種のスマートフィールドデバイスに対して用いられるかまたはそれらに関連付けられている場合には、通常、その機能ブロックは、たとえばコントローラ12a、16aに格納され、それにより実行される。これに代えて、機能ブロックがＦｉｅｌｄｂｕｓデバイスの如きある種のスマートフィールドデバイスに対して用いられるかまたはそれに関連付けられている場合には、その機能ブロックは、たとえばそのスマートフィールドデバイスに格納され、それにより実行される。
【００１３】
図１に例示されているシステムでは、コントローラ12a、16aに接続されているフィールドデバイス22、23は、標準型４〜２０ｍａデバイスであってもよく、または、プロセッサおよびメモリを備えるＨＡＲＴフィールドデバイス、Ｐｒｏｆｉｂｕｓフィールドデバイス、もしくはＦｏｕｎｄａｔｉｏｎ  Ｆｉｅｌｄｂｕｓフィールドデバイスの如きスマートフィールドデバイスであってもよい。（図１で参照番号23の符号が付けられている）Ｆｏｕｎｄａｔｉｏｎ  Ｆｉｅｌｄｂｕｓフィールドデバイスの如き、上述のデバイスのうちの一部のデバイスが、コントローラ12a、16aで実行される制御戦略に関連するモジュールまたは機能ブロックの如きサブモジュールを格納し、実行してもよい。もちろん、これらのフィールドデバイス22、23は、センサ、バルブ、トランスミッタ、ポジショナなどの如きいかなるタイプのデバイスであってもよく、また、Ｉ／Ｏデバイス24は、ＨＡＲＴ、Ｆｏｕｎｄａｔｉｏｎ  Ｆｉｅｌｄｂｕｓ、Ｐｒｏｆｉｂｕｓなどの如き任意の所望の通信プロトコルまたはコントローラプロトコルに準拠するいかなるタイプのＩ／Ｏデバイスであってもよい。
【００１４】
コントローラ12a、16aの各々は、その内部に格納されるかまたはそれに関連付けされるプロセッサを備えており、このプロセッサは、コントロールループを含みうる一または複数のプロセス制御ルーチンを実行・監視する。これらのルーチンは、メモリに格納されている。コントローラ12a、16aは、フィールドデバイス22、23、ワークステーション18a、20a、およびデータベース32と通信し、任意の所望の方法でプロセスを制御する。コントローラ12a、16aの各々は、制御戦略または制御ルーチンを実行すべく、いかなる所望の方法により設定されてもよい。
【００１５】
また、プロセスプラント10は、プロセス制御ノード12、16と統合される（破線により示されている）安全システム14を備えている。安全システム14は、プロセスプラント10の可能な安全運転を最大化するためにプロセス制御ノード12、16により提供される制御を監視・オーバライドする安全計装システム（ＳＩＳ）として概ね動作する。
【００１６】
ノード12の各々は、一または複数の安全システム論理ソルバ50を備えている。ロジックソルバ50の各々は、プロセッサおよびメモリを備えるＩ／Ｏデバイスでありうるし、メモリに格納されている安全ロジックモジュールを実行するように構成されている。各論理ソルバ50は、安全システムフィールドデバイス60、62に制御信号を送信するように、および／またはそれらからの信号を受信するように、通信可能に接続されている。さらに、ノード18、20の各々は、少なくとも一つのメッセージ伝送デバイス（ＭＰＤ）70を備えている。このＭＰＤは、リング型接続またはバス型接続74を介して、他のＭＰＤ70と通信可能に接続されている（図１にはその一部のみが例示されている）。安全システム論理ソルバ50、安全システムフィールドデバイス60、62、ＭＰＤ70、およびバス74により、概ね、図１の安全システム14が形成されている。
【００１７】
図１の論理ソルバ50は、プロセッサおよびメモリを備える、いかなる所望のタイプの安全システム制御デバイスであってもよい。当該メモリは、フィールドデバイス60、62を用いて、安全システム14に関連する制御機能を提供すべくプロセッサにより実行されるように構成された安全ロジックモジュール84を格納する。もちろん、安全フィールドデバイス60、62は、上述の通信プロトコルの如きいかなる公知のまたは所望の通信プロトコルに準拠するまたは用いるいかなる所望のタイプのフィールドデバイスであってもよい。具体的にいえば、フィールドデバイス60、62は、安全に関連する個別かつ専用の制御システムにより制御される従来タイプの、安全に関連するフィールドデバイスであってもよい。図１に例示されているプロセスプラント10では、安全フィールドデバイス60は、ＨＡＲＴプロトコルまたは４〜２０ｍａプロトコルの如き専用のまたはポイント・ツー・ポイント形式の通信プロトコルに準拠するものとして例示されているが、その一方、安全フィールドデバイス62は、Ｆｉｅｌｄｂｕｓプロトコルの如きバス通信プロトコルに準拠しているものとして例示されている。安全フィールドデバイス60は、シャットダウンバルブ、シャットオフスイッチなどの機能の如きいかなる所望の機能を実行してもよい。
【００１８】
プロセス制御Ｉ／Ｏカード24、安全論理ソルバ50、およびＭＰＤ70にコントローラ12a、16aを通信可能に接続するために、共通バックプレーン（図示せず）がノード12、16の各々において用いられうる。また、コントローラ12a、16aは、ネットワーク30と通信可能に接続されている。このネットワーク30を介して、コントローラ12a、16a、Ｉ／Ｏデバイス24、論理ソルバ50、およびＭＰＤ70は、ノード18、20と通信しうる。
【００１９】
当業者にとり明らかなように、ノード12、16のバックプレーン（図示せず）により、論理ソルバ50は、それらのデバイスにより実行される安全機能の調整のためのローカルな相互通信、データの相互伝送、および／または他の統合化された機能の実行を行うことが可能となる。同様に、ノード16のバックプレーン（図示せず）により、論理ソルバ50は、それらのデバイスにより実行される安全機能の調整のためのローカルな相互通信、データの相互伝送、および／または他の統合化された機能の実行を行うことが可能となる。その一方、ＭＰＤ70は、安全システム14の部分がプロセスプラント10のさまざまな異なる場所に配置されているにも関わらずプラント10のさまざまなノードにおいて調整された安全動作を提供すべく相互通信することを可能とするように動作する。具体的にいえば、バス74およびＭＰＤ70により、プロセスプラント10の異なるノード12、16に関連する論理ソルバ50が、指定された優先順位に従って相互にカスケード式に通信し、プロセスプラント10内の安全に関する機能をカスケード式に実行することが可能となる。ＭＰＤ70およびバス74は、上記の安全システムにネットワーク30に代わる通信リンクを提供する。
【００２０】
他の方法では、プロセスプラント10内の異なる場所における二またはそれ以上の安全に関連する機能を、そのプラント10の別々の領域またはノード内の個々の安全フィールドデバイスに専用回線を引くことなくインターロックまたは相互接続しうる。換言すれば、ＭＰＤ70、72およびバス74を利用することにより、安全エンジニアは、プロセスプラント10全体にわたり実質的に分散しているにも関わらずそのさまざまなコンポーネントが通信可能に相互に接続されており、必要に応じて、異なる安全に関連するハードウェアが相互に通信することが可能であるような安全システム14を設計・構築することが可能となる。また、この特徴により、安全システム14が拡張可能となり、必要に応じてまたは新規のプロセス制御ノードをプロセスプラント10に追加する場合に、当該安全システム14にさらなる安全論理ソルバを追加することができる。
【００２１】
図２は、ワークステーションの18aの一例を示すブロック線図である（ワークステーション20aは同一のまたは同等のデバイスから構成されうる）。このワークステーション18aは、少なくとも一つのプロセッサ100と、揮発性メモリ104と、非揮発性メモリ108とを備えている。この揮発性メモリ104は、たとえば、ランダムアクセスメモリ（ＲＡＭ）を含みうる。一部の実施例では、ＲＡＭは、電源が故障したときにデータを消失しないように、一または複数のバッテリによりバックアップされている。非揮発性メモリ108は、たとえばハードディスク、リードオンリメモリ（ＲＯＭ）、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリなどを含みうる。また、ワークステーション18aは、ワークステーションＩ／Ｏデバイス112を備えうる。プロセッサ100、揮発性メモリ104、非揮発性メモリ108、およびワークステーションＩ／Ｏデバイス112は、アドレス／データバス116を介して相互に接続されうる。またワークステーション18aは、少なくとも一つの表示デバイス120と少なくとも一つのユーザ入力デバイス124とを備えており、これらは入力デバイスは、たとえば、キーボード、キーパッド、マウス、トラックボール、タッチスクリーン、ライトペンなどのうちの一または複数でありうる。実施例によっては、揮発性メモリ104、非揮発性メモリ108、およびワークステーションＩ／Ｏデバイス112のうちの一または複数が、アドレス／データバス116から分離されているバス（図示せず）を介してプロセッサ100に接続されている場合もあればまたはプロセッサ100に直接接続されている場合もある。
【００２２】
表示デバイス120およびユーザ入力デバイス124は、ワークステーションＩ／Ｏデバイス112と接続されている。さらにワークステーション18aは、ワークステーションＩ／Ｏデバイス112を介して、ネットワーク30に接続されている。ワークステーションＩ／Ｏデバイス112は、一つのデバイスであるものとして図２に例示されているが、複数のデバイスから構成されていてもよい。さらに、実施例によっては、表示デバイス120およびユーザ入力デバイス124のうちの一または複数が、アドレス／データバス116またはプロセッサ100に直接に接続されている場合もある。
【００２３】
ここで、図１および図２を参照して説明すると、制御ノード12、16のうちの一または複数に関連するプロセス制御コンフィギュレーションアプリケーションは、ワークステーション18a、20aのうちの一または複数に格納されうるし、それらにより実行されうる。たとえば、プロセス制御コンフィギュレーションアプリケーションは、非揮発性メモリ108および／または揮発性メモリ104に格納され、プロセッサ100により実行されうる。しかしながら、所望ならば、このアプリケーションは、プロセスプラント10に関連する他のコンピュータに格納されて、それにより実行されてもよい。一般的にいえば、このプロセス制御コンフィギュレーションアプリケーションにより、プログラマは、コントローラ12a、16a、Ｉ／Ｏデバイス24、および／またはフィールドデバイス22、23により実行される制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などを作成・構築することが可能となる。これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などは、次に、ネットワーク30を介して、コントローラ12a、16a、Ｉ／Ｏデバイス24、および／またはフィールドデバイス22、23のうちの適切な装置にダウンロードされうる。
【００２４】
同様に、安全システム14に関連する安全システムコンフィギュレーションアプリケーションは、ワークステーション18a、20aのうちの一または複数に格納されうるし、それらにより実行されうる。たとえば、安全システムコンフィギュレーションアプリケーションは、非揮発性メモリ108および／または揮発性メモリ104に格納され、プロセッサ100により実行されうる。しかしながら、所望ならば、このアプリケーションは、プロセスプラント10に関連する他のコンピュータに格納されて、それにより実行されてもよい。一般的にいえば、この安全システムコンフィギュレーションアプリケーションにより、プログラマは、コントローラ12a、16a、論理ソルバ50、および／またはデバイス60、62により実行される制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などを作成・構築することが可能となる。これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などは、次に、ネットワーク30を介して、コントローラ12a、16a、論理ソルバ50、および／またはデバイス60、62のうちの適切な装置にダウンロードされうる。
（状態マシン機能ブロック）
制御システムコンフィギュレーションアプリケーションまたは安全システムコンフィギュレーションアプリケーションにより、機能ブロックプログラミングパラダイムを用いた制御モジュールおよび／または制御ルーチンのプログラミングが可能となる。図３は、制御モジュール154を示す表示画面150の一例を示している。この表示画面150は、上記のコンフィギュレーションアプリケーションに関連するユーザインターフェイスの一部でありうるし、また、表示画面150は、たとえばワークステーション18aの表示デバイス120を介して、プログラマに対して提示されうる。表示画面150は、一組の通信可能に相互接続された機能ブロックを有する制御モジュール154を示している。この制御モジュールは、作成され、ネットワーク30を介してコントローラ12a、16a、Ｉ／Ｏデバイス24、論理ソルバ50、および／またはデバイス22、23、60、62のうちの適切な装置にダウンロードされ、プロセスプラントの運転中に実行されうる。図３に例示されているように、制御モジュール154は、状態マシン機能ブロック（ＳＭＦＢ）160と、複数のアナログ入力（ＡＩ）機能ブロックおよびデジタル入力（ＤＩ）機能ブロックと、複数のアナログ出力（ＡＯ）機能ブロックおよびデジタル出力（ＤＯ）機能ブロックと、他の機能ブロック（ＦＢ）とを備えている。ＳＭＦＢ160は、たとえばＤＩ機能ブロックまたは他のＦＢでありうる機能ブロック114と通信可能に相互接続される入力部を有している。また、ＳＭＦＢ160は、たとえばＤＯ機能ブロックまたは他のＦＢでありうる機能ブロック118と接続される出力部を有している。この制御モジュール104は、制御システム、安全システムなどの一部として、スイッチ、バルブなどの如きデバイスを制御しうるし、それらを一緒に制御する複数の制御モジュールのうちの一つであってもよい。もちろん、制御モジュール154は、ＳＭＦＢを採用する制御モジュールのほんの一例である。一般的に、制御モジュールは、任意の所望の方法で任意の数のＳＭＦＢと通信可能に接続される任意のタイプの機能ブロックを含むように、任意の所望の方法でプログラムされてもよく、また、任意の所望の機能を実行するために任意の所望のまたは有益な方法で構築されてもよい。たとえばＦｉｅｌｄｂｕｓネットワークに用いられる場合、制御モジュールは、いかなるｆｉｅｌｄｂｕｓタイプの機能ブロックを有してもよい。
【００２５】
実施例によっては、ＳＭＦＢ160への入力のうちの一または複数が、機能ブロック以外から受信される場合もある。たとえば、ＳＭＦＢ160への入力のうちの一または複数が、たとえばオペレータインターフェイスを介して、オペレータからの入力を受信するように通信可能に接続されうる。たとえば、オペレータは、ノード18、20の如きあるノード上に実装されたオペレータインターフェイスを用いて、ＳＭＦＢ160に対して入力を提供しうる。
【００２６】
上記のＳＭＦＢは、状態マシンを実行する機能ブロックでありうる。一部の実施例では、状態マシンは、複数の状態のうちの一つの状態にありうるエンティティ（たとえば、デバイス、プロセッサにより実行されるソフトウェアなど）を備えうる。このような状態マシンは、当該状態マシンに対して特定の入力が行われた場合、一つの状態から他の状態へと遷移する。上記のＳＭＦＢは、当該状態マシンの現時点の状態に基づく出力を提供しうる。ほんの一例として、上記のＳＭＦＢは、当該状態マシンの現時点の状態を示す一または複数の出力を提供しうる。さらに一般的にいえば、状態マシンは、（たとえば、デバイス、プロセッサにより実行されるソフトウェアなどのごとき）エンティティを備えうる。このエンティティは、当該エンティティまたは他のエンティティ（たとえば、プロセスプラント、プロセスプラントのサブパート、プロセスプラントのコンポーネントなど）に関する所与の時間におけるステータスを格納し、状態マシンに対する入力に基づいて、ステータスの変更し、および／またはアクションもしくは出力を生じさせうる。
【００２７】
上記のコンフィギュレーションアプリケーションに関連するユーザインターフェイスを用いて、プログラマは、制御モジュール154の如き制御モジュールを設計しうる。ほんの一例としては、このユーザインターフェイスは、複数の標準型機能ブロックステンシルまたはカスタム機能ブロックステンシルなどを含むステンシルまたはパレットから所望の機能ブロックを選択するメカニズムをプログラマに提供する。さらに、このユーザインターフェイスは、プログラマが機能ブロックの図を挿入または掲載しうるグラフィカルダイアグラムを提供しうる。プログラマは、たとえばマウス、トラックボール、キーボード、キーパッド、タッチスクリーンなどを使用し、ステンシルまたはパレットから機能ブロックを選択し、次いで、その機能ブロックを上記のグラフィカルダイアグラム上にドラッグ・アンド・ドロップしうる。さらに、プログラマは、マウス、トラックボール、キーボード、キーパッド、タッチスクリーンなどを用いて一つの機能ブロックの出力部と他の機能ブロックの入力部との間にたとえば線を引くことにより、機能ブロック同士を通信可能に接続しうる。
【００２８】
いったん設定されると、制御モジュール154は、たとえば、コントローラ12a、14a、16a、Ｉ／Ｏデバイス24、論理ソルバ50、およびデバイス22、23、60、62のうちの一または複数により実行されうる。
【００２９】
図４は、たとえば図３の表示画面の如きユーザインターフェイス表示画面上に表示されうるＳＭＦＢ200の図の一例である。ＳＭＦＢ200の図から、ＳＭＦＢ200が複数の入力と出力とを備えていることが分かる。これらの入力には、ＳＭＦＢ200により実行される状態マシンにその状態を一定量増加させる（たとえば、状態４の場合は、状態５に遷移させる）ために用いられうるＩＮＣＲＥＭＥＮＴ入力が含まれている。同様に、入力ＤＥＣＲＥＭＥＮＴは、状態マシンにその状態を一定量減少させる（たとえば、状態４の場合は、状態３に遷移させる）ために用いられうる。ＳＭＦＢ200は、任意選択的に、入力ＷＲＡＰを備えうる。この入力ＷＲＡＰは、状態マシンが実行可能な最高位の状態にいる場合の入力ＩＮＣＲＥＭＥＮＴの処理方法、および、状態マシンが実行可能な最低位の状態にいる場合の入力ＤＥＣＲＥＭＥＮＴの処理方法を示す。一例としては、入力ＷＲＡＰがアクティブであり、状態マシンが実行可能な最高位の状態にあり、入力ＩＮＣＲＥＭＥＮＴがアクティブである場合、その状態マシンは、実行可能な最低位の状態に遷移すべきである（たとえば、状態６の場合、状態１に遷移する）。しかしながら、入力ＷＲＡＰがアクティブでなく、状態マシンが実行可能な最高位の状態にあり、入力ＩＮＣＲＥＭＥＮＴがアクティブである場合、その状態マシンは、他の状態に遷移すべきでない（たとえば、状態６の場合、状態６に留まる）。同様に、入力ＷＲＡＰがアクティブであり、状態マシンが実行可能な最低位の状態にあり、入力ＤＥＣＲＥＭＥＮＴがアクティブである場合、その状態マシンは、実行可能な最高位の状態に遷移すべきである（たとえば、状態１の場合、状態６に遷移する）。しかしながら、入力ＷＲＡＰがアクティブでなく、状態マシンが実行可能な最低位の状態にあり、入力ＤＥＣＲＥＭＥＮＴがアクティブである場合、その状態マシンは、他の状態に遷移すべきでない（たとえば、状態１の場合、状態１に留まる）。
【００３０】
また、ＳＭＦＢ200は、入力ＳＴＡＴＥ＿ＩＮと入力ＳＴＡＴＥ＿ＩＮ＿Ｄとを備えうる。これらの入力は、ＳＭＦＢ200により実行される状態マシンを所望の状態に遷移させるために用いられうる。また、入力ＥＮＡＢＬＥは、状態マシンを実行不能状態および／または初期状態に遷移させるために用いられうる。これらの入力を以下でさらに詳細に記載する。
【００３１】
また、ＳＭＦＢ200は、状態マシンの状態（たとえば、状態１、状態２、状態３など）の表示である出力ＳＴＡＴＥを備えている。また、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２…ＯＵＴ＿Ｄ６は、状態マシンの現時点の状態に基づく出力である。出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２…ＯＵＴ＿Ｄ６の生成を以下でさらに詳細に記載する。
【００３２】
ＳＭＦＢ200は状態マシン機能ブロックの一例にすぎない。その他の例は、ＳＭＦＢ200の入力および出力の一部を有してもよいし、いずれをも有しなくてもよいし、または全てを有してもよい。さらに、他の入力および／または出力を同様に設けてもよい。入力および出のタイプおよび／または数が設定可能であっても設定可能でなくてもよい。一例では、出力ＯＵＴ＿Ｄｘの数が設定可能でありうる。他の例では、出力ＯＵＴ＿Ｄｘの数が設定することができない。たとえば、ＳＭＦＢ200により提供される出力ＯＵＴ＿Ｄｘの数よりも必要な出力の数が少ない場合、余分な出力ＯＵＴ＿Ｄｘを使わないままとなりうる。（たとえば、他の機能ブロックに接続しない、ダミー機能ブロックに接続するなど）。
【００３３】
コンフィギュレーションプログラムに関連するグラフィカルユーザインターフェイスを用いて、プログラマは、ＳＭＦＢ200の如き一または複数の機能ブロックを設定しうる。ＳＭＦＢ200の如きＳＭＦＢの設定に関していえば、プログラマは、ＳＭＦＢにより実行される状態マシンの状態の数を指定しうる。また、プログラマは、出力ＯＵＴ＿Ｄｘの数およびこれらの出力が状態マシンのさまざまな状態に対していかなる値を取りうるかを指定しうる。プログラマによるＳＭＦＢの設定を可能とするために、コンフィギュレーションアプリケーションは、その機能ブロックに関連するコンフィギュレーション用のウィンドウ、スクリーンなどの如きユーザインターフェイス機構を表示デバイス120上に表示しうる。
【００３４】
図５は、図４のＳＭＦＢの如きＳＭＦＢを少なくとも部分的に設定するために用いられうるユーザインターフェイス機構の一例である。このユーザインターフェイス機構は、ＳＭＦＢに関連するコンフィギュレーション用のウィンドウ、スクリーンなどの一部として表示されうるテーブルまたはマトリクス300（以下、「マトリクス300」と呼ぶ）を備えている。マトリクス300は、行方向および列方向に配置された複数のセル304を有している。各行は、状態マシンの複数の起こりうる状態のうちの一つに対応し、各列は、その状態マシンの出力ＯＵＴ＿Ｄｘに対応する。したがって、各セル304は、状態と出力に対応する。例示されているマトリクス300は７つの状態に対応する行と６つの出力に対応する列とを有しているが、異なる数の状態および出力を有する同等のマトリクスを、異なる数の出力および状態を有するＳＭＦＢに対して用いてもよい。たとえば、セル304Aは状態１および出力ＯＵＴ＿Ｄ５に対応している。セル304Bは状態２およびＯＵＴ＿Ｄ３に対応しており、セル304Cは状態２および出力ＯＵＴ＿Ｄ５に対応している。
【００３５】
出力および状態の数は設定可能であってもよい。他の例では、各列が、状態マシンの複数の起こりうる状態のうちの一つに対応してもよく、各行が、その状態マシンの出力に対応してもよい。
【００３６】
図４を参照すると、マトリクス300の出力の「１」から「６」までが図４のＳＭＦＢ200の出力のＯＵＴ＿Ｄ１からＯＵＴ＿Ｄ６までにそれぞれ対応している。これに加えて、この例では、プログラマは、可能な状態の各々および／またはその出力の各々にラベリングすることが可能であってもよい。たとえば、図５では、「状態１」が「ＢＵＲＮＥＲ  ＯＦＦ」とラベリングされており、入力１が「ＯＰＥＮ  ＶＡＬＶＥ１０１」とラベリングされている。出力および／または状態をラベリングすることにより、状態マシンの動作の理解が容易になる。
【００３７】
プログラマは、セル304にコンフィギュレーション情報を入力することによりＳＭＦＢを設定しうる。具体的にいえば、状態のうちの一つおよび出力のうちの一つに対応する特定のセル304に対して、プログラマは、状態マシンがその対応する状態にあるときにその対応する出力の値を示すコンフィギュレーションデータを上記のセルに入力することができる。図６は、コンフィギュレーションデータがセル304の一部に入力されているマトリクス300の一例である。たとえば、セル304Aは、状態マシンが「ＢＵＲＮＥＲ  ＯＦＦ」の状態にあるときの出力「ＦＡＮ１４５」の値を示すコンフィギュレーションデータを有している。具体的にいえば、セル304Aは、「Ｘ」を有している。このことは、対応する出力がアクティブにされる必要があることを示しうる。「Ｘ」を有していないセル304Aは、これらの出力が、その対応する状態においてアクティブでないようにする必要があることを示しうる。これに代えて、「Ｘ」は、対応する出力がアクティブでないようにされる必要があることを示してもよく、「Ｘ」が存在しない場合には、対応する出力がアクティブにされる必要があることを示してもよい。一部の例においては、異なるコンフィギュレーションデータにより、出力がアクティブにされる必要があるかまたはアクティブでないようにされる必要があるかが示される場合もある。たとえば、「０」、「ＦＡＬＳＥ」、「ＤＥＡＳＳＥＲＴ」などにより、出力をアクティブでないようにする必要があることが示され、および／または「１」、「ＴＲＵＥ」、「ＡＳＳＥＲＴ」などにより、出力をアクティブする必要があることが示される場合もある。他の例では、コンフィギュレーションデータが、出力を３以上の値のうちの一つに設定する必要があることを示す場合もある。「Ｘ」以外に、他の文字、単語、数、シンボル、パターン、アイコン、塗りつぶされたセルなどの如きいかなる適切なインディケータを使用してもよい。
【００３８】
同様に、セル304Bは、状態マシンが状態２にある場合、出力「ＯＰＥＮＴ  ＶＥＮＴ  １２０」をアクティブにさせる必要があることを示すコンフィギュレーションデータを有している。また、セル304Cは、状態マシンが状態２にある場合、出力「ＦＡＮ  １４５」をアクティブにさせる必要があることを示すコンフィギュレーションデータを有している。
【００３９】
プログラマは、当業者の間で周知されている技術を含むさまざまな技術のうちのいずれかを用いて、コンフィギュレーションデータをマトリクス300に入力しうる。たとえば、セル304にコンフィギュレーションデータを入力するために、プログラマは、マウス、トラックボール、タッチスクリーンなどを用いてセル304を選択しうる。次いで、ユーザは、たとえばキーボードを用いて、そのセル304にコンフィギュレーションデータを直接入力しうる。これに代えて、プログラマは、セル304を選択し、次いで、プルダウンメニューの選択肢である「ｅｄｉｔ」、「ｍｏｄｉｆｙ」などを選択してもよいし、または「ｅｄｉｔ」ボタン、「ｍｏｄｉｆｙ」ボタンなどを選択してもよい。次いで、ユーザインターフェイスは、プルダウンメニュー、ウィンドウ、表示スクリーンなどを介して、出力値のリストをプログラマに対して表示してもよい。次いで、プログラマは、たとえばキーボード、マウス、トラックボール、タッチスクリーンなどを用いて上記の出力値のうちの一つを選択してもよい。
【００４０】
マトリクス300のごときマトリクスを備えるユーザインターフェイスを用いてＳＭＦＢを設定することにより、シーケンシャル機能チャートまたはＣ＋＋の如きプログラミング言語の利用に比べて、状態マシンの実現をさらに容易なものとする。たとえば、Ｃ＋＋プログラムを用いて状態マシンを実現するには、状態遷移図をまず作成し、次いで、それをプログラムに変換することを含みうる。そのあと、そのプログラムは、検査され、ディバギングされなければならないことになる。しかしながら、マトリクス300の如きマトリクス用いて設定されるＳＭＦＢの場合、プログラムを書く必要がない。さらに正確にいえば、「プログラミング」には、マトリクスに記入することのみが含まれうる。さらに、ソフトウェアコードを書き込む必要がないので、そのコードのディバギングおよび検査を必要としない。さらに正確にいえば、試験は、ＳＭＦＢが正しい次の状態に遷移することおよび各状態に対して正しい出力が生成されることを検証すべく、状態、入力、および出力のさまざまな組み合わせを検査することのみが含まれうる。
【００４１】
さらに、マトリクス300を検査するだけで、ＳＭＦＢの機能を容易に理解することができる。したがって、そのマトリクスの図をたとえば出力することにより、設定済のＳＭＦＢの機能を容易にドキュメント化することができる。
【００４２】
マトリクス300の如きマトリクス従って設定されたＳＭＦＢを、安全システムまたはプロセス制御システムなどにおいて用いることができる。ほんの一例として、プロセスプラントのバーナの管理のために、マトリクス300の如きマトリクス従って設定されたＳＭＦＢを安全システムの一部として用いることができる。たとえば、図６を参照して説明すると、ＳＭＦＢは、「ＮＯＲＭＡＬ  ＯＰＥＲＡＴＩＯＮ」、「ＴＵＲＮ  ＯＦＦ  ＧＡＳ」、および「ＶＥＮＴ」の如き状態を含みうる。バーナの炎が消えたことを検出した場合、ＳＭＦＢは、「ＮＯＲＭＡＬ  ＯＰＥＲＡＴＩＯＮ」状態から「ＴＵＲＮ  ＯＦＦ  ＧＡＳ」状態に遷移するように制御されうる。「ＴＵＲＮ  ＯＦＦ  ＧＡＳ」状態では、ＳＭＦＢは、ガスを止めるために、出力ＯＵＴ＿Ｄ２を生成しうる。次いで、ＳＭＦＢは、「ＶＥＮＴ」状態へ遷移するように制御されうる。このことにより、出力ＯＵＴ＿Ｄ３およびＯＵＴ＿Ｄ５が生成され、通気口が開かれ、送風機がオンにされうる。これは、バーナ内の残留ガスを排気するために用いられうる。
【００４３】
マトリクス300の如きマトリクス従って設定されたＳＭＦＢは、コントローラ12a、16a、Ｉ／Ｏデバイス24、論理ソルバ50、デバイス22、23、60、62のうちの一または複数により実行されうる。一部の実施例では、このようなＳＭＦＢが、ソフトウェアに従って設定されるプロセッサにより、ゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、プログラマブルアレイ論理（ＰＡＬ）、プログラマブル論理アレイ（ＰＬＡ）などのうちの一または複数を有するデバイスなどの如きプログラマブル論理デバイスにより実行される場合もある。
【００４４】
ＳＭＦＢに関連するコンフィギュレーションデータ（たとえば、マトリクス300の如きマトリクスに入力されたデータおよび、任意選択的に、他のコンフィギュレーションデータ）は、ハードディスク、ＲＡＭ、ＲＯＭ、ＣＤ−ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＶＤ、ＦＬＡＳＨメモリなどの如きコンピュータ読み取り可能媒体上に、および／またはプロセッサに付随するメモリ上に格納されうる。
【００４５】
図７は、設定済ＳＭＦＢの動作方法の一例を示すフローダイアグラムである。このメソッド350は、たとえば周期的におよび／またはトリガイベントに応答して実行されうる。ブロック354で、ＳＭＦＢは、たとえば他の機能ブロック、オペレータインターフェイス、制御戦略などからの入力を受信する。たとえば図４を参照すると、ＳＭＦＢは、ＩＮＣＲＥＭＥＮＴ、ＤＥＣＲＥＭＥＮＴ、ＳＴＡＴＥ＿ＩＮ、ＳＴＡＴＥ＿ＩＮ＿Ｄなどの如き入力を受信する。ブロック358では、ＳＭＦＢは、必要に応じて、現時点の状態から他の状態へ遷移しうる。状態遷移があるならば、その状態遷移は、ブロック354で受信した入力に基づいたものでありうるし、任意選択的に、他の因子に基づいたものであってもよい。たとえば、一部の実施例では、ＳＭＦＢへの入力は、ステータス（たとえば、ＧＯＯＤステータスまたはＢＡＤステータス）を有している場合がある。したがって、次の状態の決定は、たとえばＢＡＤステータスを有する入力の処理方法を示すコンフィギュレーションデータに基づいたものであってもよい。ステータス情報を有する入力を以下でされに詳細に記載する。
【００４６】
次いで、ブロック362では、ＳＭＦＢは、状態マシンの現時点の状態に基づいて出力（たとえば、ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２など）を生成しうる。任意選択的に、それらの出力は他の因子に基づいて生成されてもよい。たとえば、一部の実施例では、状態マシンの状態に関係なく、出力の一部または全部が特定の値をとるようにＳＭＦＢを設定している場合もある。
【００４７】
図４をさらに参照して説明すると、ＳＭＦＢは、任意選択的に、入力「ＥＮＡＢＬＥ」を有しうる。一つの実施例では、入力ＥＮＡＢＬＥがアクティブでないようにされた場合、ＳＭＦＢは、動作不能状態（たとえば、状態０）に遷移させられ、入力ＥＮＡＢＬＥがアクティブにさせられるまでそこの状態に留まる必要がある。次いで、入力ＥＮＡＢＬＥがアクティブにさせられると、ＳＭＦＢは、初期状態（たとえば、状態１）に遷移させられ、この後、ＳＭＦＢは、当該ＳＭＦＢへの入力に基づいておよび、任意選択的に、他の因子に基づいて、他の状態に遷移しうる。
【００４８】
ＳＭＦＢは、状態マシンを所望の状態に遷移させる一または複数の入力をさらに有しうる。たとえば、ＳＭＦＢ200は、入力ＳＴＡＴＥ＿ＩＮ＿Ｄおよび入力ＳＴＡＴＥ＿ＩＮを有している。入力ＳＴＡＴＥ＿ＩＮ＿Ｄがアクティブにされた場合、ＳＭＦＢは、入力ＳＴＡＴＥ＿ＩＮにより指定される状態へ遷移させられうる。たとえば、入力ＳＴＡＴＥ＿ＩＮが「６」であり、入力ＳＴＡＴＥ＿ＩＮ＿Ｄがアクティブにされている場合、ＳＭＦＢは、状態６へ遷移させられうる。
【００４９】
任意選択的に、ＳＭＦＢはさらなる方法で設定されうる。たとえば、ＳＭＦＢは、状態マシンの状態およびコンフィギュレーションマトリクスへ入力されたコンフィギュレーションデータに関係なく出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などのうちのいずれかを特定の状態に遷移させるべきか否かを示す出力「マスク」を有しうる。たとえば、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などのうちの一または複数をアクティブでないようにさせるべく、出力マスクが用いられうる。また、ＳＭＦＢは、複数のステータスを有しうる入力に応答するように設定されうる。たとえば、ＳＭＦＢへの入力のうちの一つまたは全部が、「ｇｏｏｄ」ステータスまたは「ｂａｄ」ステータスを有し、ＳＭＦＢが入力のステータスに応じて異なる方法で応答するように設定されうる。一つの特定の例では、ＳＭＦＢは、「ｂａｄ」であれば入力を無視するように、「ｂａｄ」であってもその入力を使用するように、またはその入力の最近の「ｇｏｏｄ」の値を用いるように設定されうる。さらに、ＳＭＦＢは、真の場合にＳＭＦＢを「１」の状態に遷移させるＲＥＳＥＴパラメータを有しうる。
【００５０】
図８は、ＳＭＦＢの一例を示すブロック線図である。このＳＭＦＢ400は、入力ＩＮＣＲＥＭＥＮＴ、ＤＥＣＲＥＭＥＮＴ、ＷＲＡＰとＳＭＦＢ400の現時点の状態とに少なくとも部分的に基づいて次の状態を決定する論理404を有している。たとえば、入力ＩＮＣＲＥＭＥＮＴがアクティブにされた場合、論理404は、現時点の状態をその次に高位の状態に遷移させうる。現時点の状態がすでに最高位の実行可能な状態にあり、入力ＷＲＡＰがアクティブにされている場合には、論理404は、現時点の状態を最低位の実行可能な状態に設定しうる（たとえば、現時点の状態が７である場合には、状態を１に設定しうる）。現時点の状態がすでに最高位の実行可能な状態にあり、入力ＷＲＡＰがアクティブでない場合には、論理404は、その状態を変更せずにそのままにしうる（たとえば、現時点の状態が７である場合には、７のままにしておく）。同様に、入力ＤＥＣＲＥＭＥＮＴがアクティブにされている場合は、論理404は、現時点の状態をその次に低位の状態に遷移させうる。現時点の状態がすでに最低位の実行可能な状態にあり、入力ＷＲＡＰがアクティブにされている場合には、論理404は、現時点の状態を最高位の実行可能な状態に設定しうる（たとえば、現時点の状態が１である場合には、状態を７に設定しうる）。現時点の状態がすでに最低位の実行可能な状態にあり、入力ＷＲＡＰがアクティブでない場合には、論理404は、その状態を変更せずにそのままにしうる（たとえば、現時点の状態が１である場合には、１のままにしておく）。
【００５１】
論理404の出力はスイッチング論理408に提供される。このスイッチング論理408は、入力ＳＴＡＴＥ＿ＩＮ＿Ｄに基づいて、論理404の出力および入力ＳＴＡＴＥ＿ＩＮのうちのいずれかを選択する。たとえば、入力ＳＴＡＴＥ＿ＩＮ＿Ｄがアクティブにされている場合、スイッチング論理408は、入力ＳＴＡＴＥ＿ＩＮを選択しうる。その他の場合には、スイッチング論理408は、論理404の出力を選択しうる。
【００５２】
スイッチング論理408の出力はスイッチング論理412に提供され、このスイッチング論理412は、実行可能・リセット論理416の出力に基づいて、スイッチング論理408の出力と、０の値と、１の値とのうちのいずれかを選択する。実行可能・リセット論理416の出力は、状態を実行不能状態（たとえば、状態０）または初期状態（たとえば、状態１）うちのいずれに遷移させるべきかを示す。実行可能・リセット論理416は、この出力を入力ＥＮＡＢＬＥに基づいて生成する。たとえば、入力ＥＮＡＢＬＥがアクティブでない場合、実行可能・リセット論理416の出力は、状態を状態０に遷移させるべきであると示しうる。入力ＥＮＡＢＬＥがアクティブない状態からからアクティブの状態に変更された場合、実行可能・リセット論理416の出力は、状態を状態１に遷移させるべきであると示しうる。入力ＥＮＡＢＬＥがアクティブにされ、その以前もアクティブな状態であった場合、実行可能・リセット論理416の出力は、状態を状態０または状態１に遷移させる必要がないことを示しうる。
【００５３】
スイッチング論理412の出力は、ＳＭＦＢ400の現時点の状態を示し、ＳＭＦＢ400の出力として提供されうる。また、スイッチング論理412の出力は、状態マシンの現時点の状態に基づいて適切な出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などを設定する論理420に提供されうる。具体的にいえば、論理420は、出力コンフィギュレーションデータベース424に格納されている出力コンフィギュレーションデータにアクセスする。このデータベース424は、ハードディスク、ＲＡＭ，ＲＯＭ，ＣＤ−ＲＯＭ、ＥＰＲＯＭ，ＥＥＰＲＯＭ，ＤＶＤ、ＦＬＡＳＨメモリなどの如きコンピュータ読み取り可能媒体上に、および／またはプロセッサに付随するメモリ上に格納されうる。この出力コンフィギュレーションデータは、図５のマトリクス300の如きマトリクスに入力されたコンフィギュレーションデータを有している。
【００５４】
ブロック404、408、412、416、420の各々は、ハードウェア、ソフトウェア、およびファームウェアのうちの一または複数により実現されうる。さらに、これらのブロックの一部を組み合わせても、再編成しても、修正しても、または削除してもよく、さらにブロックを追加してもよい。単なる一例として、ブロック408とブロック412とを組み合わせて単一のブロックにしてもよい。
【００５５】
図９は、上記のＳＭＦＢ400の一例の動作方法を示すフローダイアグラムである。図９のメソッド450は、たとえば周期的におよび／またはトリガイベントに応じて、実行されうる。ブロック454では、ＳＭＦＢ400の入力ＥＮＡＢＬＥが処理される。たとえば、入力ＥＮＡＢＬＥがアクティブにされているか否かおよび／または入力ＥＮＡＢＬＥが以前に処理されてから変更されているか否かが判定されうる。
【００５６】
ブロック458では、ＳＭＦＢ400の状態が必要に応じて変更されうる。ブロック262では、ＳＭＦＢ400の一または複数のデータ出力が必要に応じて変更されうる。たとえば、ＳＭＦＢ400の状態が変更されたのでＳＭＦＢ400の一または複数のデータ出力を変更する必要があるか否かが決定されうる。
【００５７】
ここで、上記のメソッド450を実行するために少なくとも部分的に用いられうるルーチンの一例を記載する。たとえば、図１０は、ＳＭＦＢへの入力ＥＮＡＢＬＥの処理に用いられうるルーチン500の一例を示すフローダイアグラムである。ブロック504では、変数ＬＡＳＴＥＮＡＢＬＥの値が入力ＥＮＡＢＬＥの値と同一か否かが判定される。この変数ＬＡＳＴＥＮＡＢＬＥは、通常、前回のＥＮＡＢＬＥの値（たとえば、ルーチン500の前回の実行中における変数ＥＮＡＢＬＥの値）を示している。ＬＡＳＴＥＮＡＢＬＥの値とＥＮＡＢＬＥの値が一致する場合、ルーチン500は終了しうる。その他の場合、ルーチンは、ブロック508に進みうる。ここで、入力ＥＮＡＢＬＥがアクティブにされているか否かが判定されうる。入力ＥＮＡＢＬＥがアクティブにされている場合、ブロック512で、変数ＲＥＳＥＴがＴＲＵＥに設定されうる。ブロック508において入力ＥＮＡＢＬＥがアクティブにされていないと判定された場合、ブロック516で、出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２など全てをアクティブでないようにさせる。そのあと、ルーチンは、ブロック520に進みうる。ここで、変数ＳＴＡＴＥが０に設定される。
【００５８】
ブロック512、520のあと、ルーチンは、ブロック524に進みうる。ここで、変数ＬＡＳＴＥＮＡＢＬＥが入力ＥＮＡＢＬＥの値に設定される。ブロック524のあと、ルーチンは終了しうる。
【００５９】
図１１は、必要に応じてＳＭＦＢの状態を変更しＳＭＦＢの出力を設定するために用いられうるルーチン600の一例を示すフローダイアグラムである。ブロック604では、入力ＥＮＡＢＬＥがアクティブにされているか否かが判定されうる。アクティブにされていない場合、ルーチンは終了する。入力ＥＮＡＢＬＥがアクティブにされている場合、ルーチンはブロック608に進みうる。ここで、入力ＳＴＡＴＥ＿ＩＮ＿Ｄがアクティブにされているか否かが判定されうる。アクティブにされている場合、ルーチンはブロック612に進みうる。ここで、変数ＳＴＡＴＥが入力ＳＴＡＴＥ＿ＩＮ＿Ｄの値に設定される。ブロック608において入力ＳＴＡＴＥ＿ＩＮ＿Ｄがアクティブにされていないと判定された場合、ルーチンはブロック616に進みうる。
【００６０】
ブロック616では、変数ＲＥＳＥＴが真か否かが判定されうる。真である場合、ルーチンはブロック620に進みうる。ここで、変数ＳＴＡＴＥが１に設定される。次いで、ブロック624において、変数ＲＥＳＥＴがＦＡＬＳＥに設定される。ブロック616において変数ＲＥＳＥＴが真ではないと判定された場合、ルーチンはブロック628に進みうる。
【００６１】
ブロック628では、入力ＩＮＣＲＥＭＥＮＴがアクティブにされているか否かが判定される。アクティブにされている場合、ルーチンはブロック632に進みうる。ここで、変数ＳＴＡＴＥが適切に増分される。たとえば、変数ＳＴＡＴＥは、上述のように、入力ＷＲＡＰの値に基づいて適切に増分されうる。ブロック628において入力ＩＮＣＲＥＭＥＮＴがアクティブにされていないと判定された場合、ルーチンはブロック636に進みうる。ブロック636では、変数ＳＴＡＴＥが適切に減分されうる。たとえば、変数ＳＴＡＴＥは、上述のように、入力ＷＲＡＰの値に基づいて適切に減分されうる。
【００６２】
ブロック612、624、632、640のあとであってブロック636において入力ＤＥＣＲＥＭＥＮＴがアクティブにされていないと判定された場合、ルーチンはブロック644に進みうる。ブロック644では、ＳＭＦＢの出力が設定されうる。ブロック644を実現するルーチンの一例が図１２に示されている。そのあと、ルーチン600は終了しうる。
【００６３】
図１２は、ＳＭＦＢの出力の設定に用いられうるルーチン700の一例を示すフローダイアグラムである。ブロック704では、変数ｚが１に設定される。ブロック708では、出力ＯＵＴ＿Ｄｚ（たとえば、ｚが１の場合、ＯＵＴ＿Ｄｚ＝ＯＵＴ＿Ｄ１）は、変数ＳＴＡＴＥにより指される、配列変数ＯＵＴＰＵＴの要素のビット数ｚの値に設定される。配列ＯＵＴＰＵＴの各要素は、状態のうちの対応する一つに対するＳＭＦＢの出力の値を示す変数でありうる。具体的にいえば、この配列の要素は、状態マシンの状態に対応しうる。たとえば、ＯＵＴＰＵＴ［１］は状態１に対応しうるし、ＯＵＴＰＵＴ［２］は状態２に対応しうる。これに加えて、各エレメントの各ビットは、ＳＭＦＢの出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などに対応しうる。たとえば、ビット１〜５は、出力ＯＵＴ＿Ｄ１からＯＵＴ＿Ｄ５にそれぞれ対応しうる。たとえば、図６を参照すると、マトリクス300の場合、配列ＯＵＴＰＵＴは、７つの要素を有しうるし、要素ＯＵＴＰＵＴ［１］は、０ｘ１０でありうる。
【００６４】
ブロック712では、変数ｚは増分され、ブロック716では、ｚの値が出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などの数よりも大きいか否かが判定されうる。ｚが出力ＯＵＴ＿Ｄ１、ＯＵＴ＿Ｄ２などの数よりも大きくない場合、ルーチンはブロック708に進みうる。そのほかの場合は、ルーチンは終了しうる。
【００６５】
なお、図９のメソッド450および図１０から図１２のルーチンは一例にすぎず、他の例において、ブロックを修正してもよいし、新規のブロックを追加してもよいし、ブロックを再編成してもよいし、ブロックを削除してもよいし、および／またはブロックを組み合わせてもよい。
【００６６】
図４および図８を参照すると、ＳＭＦＢの他の例は、入力ＩＮＣＲＥＭＥＮＴおよびＤＥＣＲＥＭＥＮＴに加えてまたはそれらに代えて、他のタイプの入力を有しうる。たとえば、図１３は、ＳＭＦＢの他の一例を示すブロック線図である。このＳＭＦＢ800は、入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２などを有している。これらの入力は、状態変更を行うべきか否か、変更すべき場合は、いずれの状態に状態マシンが遷移すべきであるかを判定するために用いられうる。ＳＭＦＢ800は、入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２などを受信することに加えてこれらの入力ＩＮ＿Ｄ１、ＩＮ＿Ｄ２などと状態マシンの現時点の状態とに少なくとも部分的に基づいて状態マシンの次の状態を決定する論理804を有している。具体的にいえば、論理804は、データベース808に格納されている次の状態コンフィギュレーションデータにアクセスする。このデータベース808は、上述したコンピュータ読み取り可能媒体上に格納されうる。データベース808およびデータベース424は、同一のコンピュータ読み取り可能媒体上に格納されてもよいしまたは異なるコンピュータ読み取り可能媒体上に格納されてもよい。上述した次の状態コンフィギュレーションデータは、状態および入力の少なくとも一部を組み合わせた各々に対してそれに対応する状態に状態マシンがありかつそれに対応する入力が特定の値である場合に、当該状態マシンがいずれの状態に遷移すべきかを示すコンフィギュレーションデータを有している。このようなコンフィギュレーションデータは、たとえば状態遷移マトリクスまたは状態遷移図を提供するグラフィカルユーザインターフェイスにより受信されうる。このような例では、プログラマは、上記の状態遷移マトリクスまたは状態遷移図を介して、状態遷移データを入力することができる。
【００６７】
一般的に、ＳＭＦＢは、ソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェア、および／もしくはハードウェアを組み合わせたものにより実行されうる。図１を参照すると、ＳＭＦＢは、たとえばコントローラ12a、16a、Ｉ／Ｏデバイス24、論理ソルバ50、およびデバイス22、23、60、62のうちの一または複数により実現されうる。他の例では、ＳＭＦＢは、ワークステーション18a、20aのうちの一または複数により実現されうる。たとえば、ＳＭＦＢは、プロセスプラントの動作試験またはオペレータトレーニングの提供のためのシミュレーションの一部としてワークステーション18aおよび／またはワークステーション20aにより実現されうる。一部の実施例では、ＳＭＦＢは、ソフトウェアに従って設定されたプロセッサにより、ゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、プログラマブルアレイ論理（ＰＡＬ）、プログラマブル論理アレイ（ＰＬＡ）などのうちの一または複数を備えるデバイスの如きプログラマブル論理デバイスにより実現される場合もある。
【００６８】
図８のブロック404、408、412、416、420および図１３のブロック804は、ソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェア、および／もしくはハードウェアを組み合わせたものにより実行されうる。さらに、図１０〜図１２のフローダイアグラムがルーチンとして記載されたが、これらのフローダイアグラムは、ソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェア、および／もしくはハードウェアを組み合わせたものにより実行されてもよい。
【００６９】
上述のユーザインターフェイスの如きユーザインターフェイスの実施例は、たとえばソフトウェアプログラムに従って設定されるプロセッサにより、全体的にまたは部分的に実現されうる。たとえば、ワークステーション18a、20aまたはある種の他のコンピュータは、上述のユーザインターフェイスを全体的にまたは部分的に実現しうる。ユーザインターフェイスの実施例を実現するソフトウェアプログラムは、ハードディスク、ＲＡＭ、バッテリバックアップ式ＲＡＭ、ＲＯＭ、ＣＲ＿ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ，ＥＥＰＲＯＭ、ＤＶＤ、フラッシュメモリなどの如き有形の媒体上に、または、プロセッサに付随するＲＡＭの如きメモリ上に格納されるソフトウェアにより具象化されうるが、これに代えて、当業者にとって明らかなように、そのプログラムの全体または一部が、プロセッサ以外のデバイスにより実行されてもよいし、および／または周知の方法でファームウェアおよび／または専用ハードウェアにより具象化されてもよい。
【００７０】
本発明に対するさまざまな変形および他の構成が可能であるが、特定の例が、図面に示され、本明細書に詳細に記載されている。しかしながら、重要なことは、これらの例が、開示された特定の形態に本発明を限定することを意図したものではなく、添付のクレームにより定義される本発明の精神および範疇から逸脱しない変形、他の構成、およびそれらの均等物を全て網羅することを意図したものであるということである。
【図面の簡単な説明】
【００７１】
本明細書記載の方法、装置、およびシステムの特徴および利点は、以下の詳細な記載および添付の図面を参照することにより最も明らかなものとなる。
【図１】プロセスプラントの一例を示すブロック線図である。
【図２】図１に模式的に示されているワークステーションの一例を示すブロック線図である。
【図３】制御モジュールを示す表示画面の一例である。
【図４】状態マシン論理ブロックの図の一例である。
【図５】状態マシン機能ブロックの出力コンフィギュレーションデータを入力するためのマトリクスの一例である。
【図６】出力コンフィギュレーションデータが上記のマトリクス形式で表示されている、図５のマトリクスの一例である。
【図７】状態マシン機能ブロックの動作方法の一例を示すフローダイアグラムである。
【図８】状態マシン機能ブロックの一例を示すブロック線図である。
【図９】状態マシン機能ブロックの動作方法の他の一例を示すフローダイアグラムである。
【図１０】状態マシン機能ブロックへの実行可能入力を処理するルーチンの一例を示すフローダイアグラムである。
【図１１】状態マシン機能ブロックの状態変更および出力設定を行うルーチンの一例を示すフローダイアグラムである。
【図１２】状態マシン機能ブロックの適切な出力を設定するルーチンの一例を示すフローダイアグラムである。
【図１３】状態マシン機能ブロックの他の一例を示すブロック線図である。
【符号の説明】
【００７２】
10  プロセスプラント
12、16、18、20、22、23、24、50、70  ノード
12a、16a  プロセスコントローラ
14  安全システム
18a、20a  オペレータワークステーション
22、23  フィールドデバイス
24  入力／出力（Ｉ／Ｏ）デバイス
30  ネットワーク
32  コンフィギュレーションデータベース
50  安全システム論理ソルバ
60、62  安全システムフィールドデバイス
70、72  ＭＰＤ
74  バス
84  安全論理モジュール
100  プロセッサ
104  揮発性メモリ
108  非揮発性メモリ
112  ワークステーションＩ／Ｏデバイス
116  アドレス／データバス
118  機能ブロック
120  表示デバイス
124  ユーザ入力デバイス
150  表示画面
154  制御モジュール
160、200、400、800  状態マシン機能ブロック（ＳＭＦＢ）
300  テーブルまたはマトリクス
304  セル
350、450  メソッド
404、420、804  論理
408、412  スイッチング論理
416  実行可能・リセット論理
424  出力コンフィギュレーションデータベース
500、600、700  ルーチン
808  データベース
【図１】
0004754793.tif 000002
【図２】
0004754793.tif 000003
【図３】
0004754793.tif 000004
【図４】
0004754793.tif 000005
【図５】
0004754793.tif 000006
【図６】
0004754793.tif 000007
【図７】
0004754793.tif 000008
【図８】
0004754793.tif 000009
【図９】
0004754793.tif 000010
【図１０】
0004754793.tif 000011
【図１１】
0004754793.tif 000012
【図１２】
0004754793.tif 000013
【図１３】
0004754793.tif 000014