(58)【調査した分野】(Int.Cl.,DB名)
前記現在の状態を前記次の状態に設定することに応答して、前記現在の状態と関連付けられた少なくとも1つの出力を設定することをさらに含む、請求項1〜請求項3の何れか1項に記載の方法。
プロセスプラントのプロセスコントロールシステムで使用し、一組のフィールドデバイスに通信可能に連結され、遷移表および現在の状態を有する状態マシンを実装するための状態マシンコントローラユニットであって、
状態マシン機能ブロック(SMFB)を実行するコントローラを備え、
前記コントローラは、
前記プロセスプラントに関連する第1の機能ブロックから、前記プロセスプラント内の条件を示す入力を受信し、
前記現在の状態および前記入力に基づいて前記遷移表から、次の状態、前記現在の状態と関連付けられた出遷移動作、および前記次の状態と関連付けられた入遷移動作を識別し、前記入遷移動作及び前記出遷移動作は、前記遷移表の入力/状態対に関連付けられている遷移動作データから識別され、前記入力/状態対は、(i)グラフィカルユーザーインターフェイスの遷移動作データと共に、表示デバイスによって、表示され、(ii)前記状態マシンおよび前記現在の状態の前記入力に対応し、
前記プロセスプラントの第1フィールドデバイスおよび前記プロセスプラントのワークステーションのうちの少なくとも1つに前記出遷移動作で示される第1の機能を実行させる前記出遷移動作を開始し、
前記出遷移動作を開始することの後に、前記入遷移動作で示される第2の機能を実行させるために、前記SMFBによって、前記入遷移動作を開始し、
前記入遷移動作を開始することの後に、前記状態マシンの前記現在の状態を前記次の状態に、コントローラによって、設定し、
前記状態マシンの前記現在の状態を設定すると、前記プロセスプラントの第2のフィールドデバイスを制御するのに使用するための出力を第2の機能ブロックに提供し、
前記出力は、前記状態マシンの前記現在の状態に基づいている、
状態マシンコントローラユニット。
【発明を実施するための形態】
【0012】
図1は、1つ以上のノード12、16、18、および20を含む例示的なプロセスプラント10のブロック図である。
図1の例示的なプロセスプラント10では、ノード12および16の各々は、例えば、Foundation Fieldbusインターフェース、HARTインターフェースなどであり得る入力/出力(I/O)デバイス24を介して1つ以上のフィールドデバイス22および23に接続されたプロセスコントローラ12a、16aを含む。コントローラ12aおよび16aはまた、例えば、バス、イーサネットLANなどの有線のローカルエリアネットワーク(LAN)、無線LAN、広域ネットワーク(WAN)、イントラネットなどのうちの1つ以上を含み得るネットワーク30を介してノード18および20における1つ以上のホストまたはオペレータワークステーション18aおよび20aに連結される。コントローラノード12、16およびI/Oデバイス24ならびにそれと関連付けられたフィールドデバイス22、23は典型的に、時に厳しいプラント環境内の下に位置し、かつそれにわたって分布されるが、オペレータワークステーションノード18および20は通常、制御室またはコントローラの人員によって容易に評価可能な他のあまり厳しくない環境に位置する。
【0013】
一般的に言えば、ノード18および20のワークステーション18aおよび20aは、プロセスプラント10を構成および監視し、ならびに/またはプロセスプラント10内のデバイス22、23、24およびコントローラ12a、16aを管理するために使用されるアプリケーションを記憶および実行するために使用されてもよい。さらに、データベース32は、ネットワーク30に接続され、ノード12、16、18、20、22、23、24、50、および70にダウンロードされ、および/またはそれらの中に記憶されるときにプロセスプラント10の現在の構成を記憶するデータヒストリアンおよび/または構成データベースとして動作することができる。
【0014】
例としてEmerson Process Managementによって販売されるDeltaV(商標)コントローラであり得るコントローラ12aおよび16aの各々は、多くの異なる独立して実行される制御モジュールまたはブロックを使用して制御戦略を実装するコントローラアプリケーションを記憶および実行することができる。制御モジュールは各々、各機能ブロックが制御ルーチン全体の一部またはサブルーチンであり、プロセスプラント10内のプロセス制御ループを実装する他の機能ブロック(リンクと呼ばれる通信を介する)とともに動作する機能ブロックと一般に称されるもので構成されてもよい。周知であるように、機能ブロックは典型的に、プロセスプラント10内のいくつかの物理的機能を実行するために、入力機能(トランスミッタ、センサ、または他のプロセスパラメータ測定デバイスと関連付けられたものなど)、制御機能(PID、ファジー論理などの様々な制御を実行する制御ルーチンと関連付けられたものなど)またはいくつかのデバイス(バルブなど)の動作を制御する出力機能のうちの1つを実行する。当然のことながら、ハイブリッドおよび他のタイプの機能ブロックが存在し、利用され得る。FieldbusプロトコルおよびDeltaV(商標)システムプロトコルは、オブジェクト指向プログラミングプロトコルで設計および実装された制御モジュールおよび機能ブロックを使用することができるが、制御モジュールは、例えば、シーケンシャル機能ブロック、ラダー論理などを含む任意の所望の制御プログラミング方式を使用して設計される可能性があり、機能ブロックまたは任意の他の特定のプログラミング技術を使用して設計されることに限定されない。典型的には、プロセス制御ノード12および16内に記憶されるような制御モジュールの構成は、ワークステーション18aおよび20aによって実行されるアプリケーションにアクセス可能である構成データベース32内に記憶されてもよい。機能ブロックは、これらの機能ブロックが標準的な4〜20mAデバイスおよびHARTデバイスなどのいくつかのタイプのスマートフィールドデバイスに使用され、または標準的な4〜20mAデバイスおよびHARTデバイスなどのいくつかのタイプのスマートフィールドデバイスと関連付けられるときに典型的な場合である、例えば、コントローラ12a、16a内に記憶され、それらによって実行されてもよく、あるいは、Fieldbusデバイスを有する場合であり得るフィールドデバイス自体の中に記憶され、それらによって実装されてもよい。
【0015】
図1に示されるシステムでは、コントローラ12aおよび16aに連結されたフィールドデバイス22および23は、標準的な4〜20mAデバイスであってもよく、あるいは、プロセッサおよびメモリを含むHART、Profibus、またはFoundation Fieldbusのフィールドデバイスなど、スマートフィールドデバイスであってもよい。Foundation Fieldbusのフィールドデバイスなど、これらのデバイスのうちのいくつか(
図1に参照番号23で付される)は、コントローラ12aおよび16aに実装された制御戦略と関連付けられた機能ブロックなどのモジュールまたはサブモジュールを記憶および実行することができる。当然のことながら、フィールドデバイス22、23は、センサ、バルブ、トランスミッタ、ポジショナなど、任意のタイプのデバイスであってもよく、I/Oデバイス24は、任意の所望の通信またはHART、Foundation Fieldbus、Profibusなどのコントローラプロトコルに適合する任意のタイプのI/Oデバイスであってもよい。
【0016】
コントローラ12aおよび16aは各々、メモリ内に記憶された1つ以上のプロセス制御ルーチンを実装または監視するプロセッサを含み、これらは、その中に記憶され、または別の方法でそれと関連付けられた制御ループを含むことができる。コントローラ12aおよび16aは、任意の所望の様式でプロセスを制御するためにフィールドデバイス22、23、ワークステーション18a、20a、およびデータベース32と通信する。コントローラ12aおよび16aは各々、任意の所望の様式で制御戦略または制御ルーチンを実装するように構成されてもよい。コントローラ12aおよび16aは、無線接続を介してフィールドデバイス22、23、ワークステーション18a、20a、およびデータベース32と通信することができることを理解されるべきである。
【0017】
プロセスプラント10はまた、プロセス制御ノード12および16と統合された安全システム14(点線で示される)を含むことができる。安全システム14は一般的に、プロセスプラント10の安全であり得る動作を最大化するために、プロセス制御ノード12および16によって提供される制御を監視および無効化する安全装備システム(SIS)として動作することができる。
【0018】
ノード12および16の各々は、1つ以上の安全システムロジックソルバ50を含むことができる。ロジックソルバ50の各々は、プロセッサおよびメモリを有するI/Oデバイスであり、メモリ内に記憶された安全論理モジュールを実行するように構成される。各ロジックソルバ50は、安全システムフィールドデバイス60および62に制御信号を提供し、および/または安全システムフィールドデバイス60および62からの信号を受信するように通信可能に連結される。加えて、ノード12および16の各々は、少なくとも1つのメッセージ伝達デバイス(MPD)70を含み、これは、リングまたはバス接続74(一部のみ
図1に示される)を介して他のMPD70に通信可能に連結される。安全システムのロジックソルバ50、安全システムのフィールドデバイス60および62、MPD70、ならびにバス74は一般的に、
図1の安全システム14を構成する。
【0019】
図1のロジックソルバ50は、フィールドデバイス60および62を使用して安全システム14と関連付けられた制御機能性を提供するためにプロセッサ上で実行されるように適合された安全論理モジュールを記憶するプロセッサおよびメモリを含む任意の所望のタイプの安全システム制御デバイスであってもよい。当然のことながら、安全フィールドデバイス60および62は、上述されるものなど、任意の既知もしくは所望の通信プロトコルに適合するか、またはそれを使用する任意の所望のタイプのフィールドデバイスであってもよい。具体的には、フィールドデバイス60および62は、別個の専用の安全関連の制御システムによって従来制御されるタイプの安全関連のフィールドデバイスであってもよい。
図1に示されるプロセスプラント10では、安全フィールドデバイス60は、HARTまたは4−20mAプロトコルなど、専用またはポイントツーポイント通信プロトコルを使用するように示されるが、安全フィールドデバイス62は、Fieldbusプロトコルなど、バス通信プロトコルを使用するように示される。安全フィールドデバイス60は、遮断バルブ、遮断スイッチなどのものなど、任意の所望の機能を実行することができる。
【0020】
共通のバックプレーン(図示せず)は、コントローラ12aおよび16aをプロセス制御I/Oカード24、安全ロジックソルバ50、およびMPD70に通信可能に連結するためにノード12および16の各々で使用されてもよい。コントローラ12aおよび16aはまた、ネットワーク30に通信可能に連結される。コントローラ12aおよび16a、I/Oデバイス24、ロジックソルバ50、およびMPD70は、ネットワーク30を介してノード18および20と通信することができる。
【0021】
当業者に理解されるように、ノード12、16におけるバックプレーン(図示せず)は、ロジックソルバ50がこれらのデバイスによって実装された安全機能を調整し、互いにデータを通信し、および/または他の統合された機能を実行するように互いに局所的に通信することを可能にする。同様に、ノード16におけるバックプレーン(図示せず)は、ロジックソルバ50がこれらのデバイスによって実装された安全機能を調整するため互いにローカルに通信し、互いにデータを通信し、および/または他の統合された機能を実行することを可能にする。一方、MPD70は、プロセスプラント10の異なるノードで調整された安全操作を提供するように互いにさらに通信するプラント10の大きく異なる位置で配設される安全システム14の部分を有効にするように動作する。具体的には、バス74とともにMPD70は、プロセスプラント10の異なるノード12および16と関連付けられたロジックソルバ50が割り当てられた優先度に従ってプロセスプラント10内の安全関連機能のカスケーディングを可能にするようにともに通信可能にカスケードされることを可能にする。MPD70およびバス74は、安全システムにネットワーク30の代替である通信リンクを提供する。
【0022】
あるいは、プロセスプラント10内の異なる位置における2つ以上の安全関連機能は、プラント10の別個の区域またはノード内の個々の安全フィールドデバイスへの専用回線を動作させる必要なしに連動または相互接続されてもよい。換言すれば、MPD70および72ならびにバス74の使用は、プロセスプラント10にわたって本質的に分布されるが、異なる安全関連ハードウェアが必要に応じて互いに通信することを可能にするように通信可能に相互接続されたその異なる構成要素を有する安全システム14を安全技術者が設計および構成することを可能にする。この特徴はまた、さらなる安全ロジックソルバが必要とされるか、または新しいプロセス制御ノードがプロセスプラント10に追加されるときに、さらなる安全ロジックソルバが安全システム14に追加されることを可能にする安全システム14の拡張性を提供する。
【0023】
図2は、例示的なワークステーション18a(ワークステーション20aが同じまたは類似のデバイスを備えることができる)のブロック図である。ワークステーション18aは、少なくとも1つのプロセッサ100と、揮発性メモリ104と、不揮発性メモリ108とを含むことができる。揮発性メモリ104は、例えば、ランダムアクセスメモリ(RAM)を含むことができる。いくつかの実施形態では、RAMは、停電が発生した場合にデータが失われないように1つ以上のバッテリによってバックアップされてもよい。不揮発性メモリ108としては、例えば、ハードディスク、読み取り専用メモリ(ROM)、コンパクトディスクROM(CD−ROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、デジタル多用途ディスク(DVD)、フラッシュメモリなどのうちの1つ以上が挙げられ得る。ワークステーション18aはまた、ワークステーションI/Oデバイス112を含むことができる。プロセッサ100、揮発性メモリ104、不揮発性メモリ108、およびワークステーションI/Oデバイス112は、アドレス/データバス116を介して相互接続されてもよい。ワークステーション18aはまた、少なくとも1つの表示デバイス120と、少なくとも1つのユーザ入力デバイス124とを含むことができ、これらは、例えば、キーボード、キーパッド、マウス、トラックボール、タッチスクリーン、ライトペンなどのうちの1つ以上であってもよい。いくつかの実施形態では、揮発性メモリ104、不揮発性メモリ108、およびワークステーションI/Oデバイス112のうちの1つ以上は、アドレス/データバス116(図示せず)とは異なるバスを介してプロセッサ100に連結されてもよく、またはプロセッサ100に直接連結されてもよい。
【0024】
表示デバイス120およびユーザ入力デバイス124は、ワークステーションI/Oデバイス112と連結される。加えて、ワークステーション18aは、ワークステーションI/Oデバイス112を介してネットワーク30に連結される。ワークステーションI/Oデバイス112は、1つのデバイスとして
図2に示されるが、それは、いくつかのデバイスを含むことができる。加えて、いくつかの実施形態では、表示デバイス120およびユーザ入力デバイス124のうちの1つ以上は、アドレス/データバス116またはプロセッサ100に直接連結されてもよい。
【0025】
ここで
図1および2を参照すると、制御ノード12、16のうちの1つ以上と関連付けられたプロセス制御構成アプリケーションは、ワークステーション18aおよび20aのうちの1つ以上に記憶され、それらによって実行されてもよい。例えば、プロセス制御構成アプリケーションは、不揮発性メモリ108および/または揮発性メモリ104上に記憶され、プロセッサ100によって実行され得る。しかしながら、必要に応じて、このアプリケーションは、プロセスプラント10と関連付けられた他のコンピュータ内に記憶され、実行され得る。一般的に言えば、プロセス制御構成アプリケーションは、プログラマがコントローラ12a、16a、I/Oデバイス24、および/またはフィールドデバイス22、23によって実装されるように、制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などを生成および構成することを可能にする。次に、これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などは、ネットワーク30を介してコントローラ12a、16a、I/Oデバイス24、および/またはフィールドデバイス22、23のうちの適切なものにダウンロードされてもよい。
【0026】
同様に、安全システム14と関連付けられた安全システム構成アプリケーションは、ワークステーション18aおよび20aのうちの1つ以上の上に記憶され、それらによって実行されてもよい。例えば、安全システム構成アプリケーションは、不揮発性メモリ108および/または揮発性メモリ104上に記憶され、プロセッサ100によって実行され得る。しかしながら、必要に応じて、このアプリケーションは、プロセスプラント10と関連付けられた他のコンピュータ内に記憶され、実行され得る。一般的に言えば、安全システム構成アプリケーションは、プログラマがコントローラ12a、16a、ロジックソルバ50、および/またはデバイス60、62によって実装されるように、制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などを生成および構成することを可能にする。次に、これらの制御ルーチン、制御モジュール、機能ブロック、プログラム、論理などは、ネットワーク30を介してコントローラ12a、16a、ロジックソルバ50、および/またはデバイス60、62のうちの適切なものにダウンロードされてもよい。
【0028】
制御システムまたは安全システム構成アプリケーションは、機能ブロックのプログラミングパラダイムを使用して制御モジュールおよび/または制御ルーチンをプログラムすることを可能にすることができる。
図3は、制御モジュール154を描写するディスプレイ150の一例を示す。ディスプレイ150は、構成アプリケーションと関連付けられたユーザインターフェースの一部であってもよく、ディスプレイ150は、例えば、ワークステーション18aの表示デバイス120を介して、プログラマに提示されてもよい。ディスプレイ150は、プロセスプラントの動作中の実装のために、ネットワーク30を介してコントローラ12a、16a、I/Oデバイス24、ロジックソルバ50、および/またはフィールドデバイス22、23、60、62のうちの適切なものに生成され、ダウンロードされ得る通信可能に相互接続された機能ブロックのセットを有する制御モジュール154を描写する。
図3に示されるように、制御モジュール154は、状態マシン機能ブロック(SMFB)160と、複数のアナログ入力(AI)およびデジタル入力(DI)機能ブロックと、複数のアナログ出力(AO)およびデジタル出力(DO)機能ブロックと、他の機能ブロック(FB)とを含む。SMFB160は、例えば、DI機能ブロックまたは他のFBであり得る機能ブロック114と通信可能に相互接続された入力を有する。SMFB160はまた、例えば、DO機能ブロックまたは他のFBであり得る機能ブロック118に接続された出力を有する。制御モジュール154は、制御することができるか、または制御システム、安全システムなどの一部として、スイッチ、バルブなどのデバイスをともに制御する複数の制御モジュールのうちの1つであってもよい。当然のことながら、制御モジュール154は、SMFBを用いる制御モジュールの一例である。一般に、制御モジュールは、任意の所望の様式で任意の数のSMFBと通信可能に連結された任意のタイプの機能ブロックを含むように任意の所望の様式でプログラムされてもよく、任意の所望の機能を実行するため、任意の所望の、または有用な様式で構成されてもよい。例えば、Fieldbusネットワークで使用される場合、制御モジュールは、任意のFieldbusタイプの機能ブロックを含むことができる。
【0029】
いくつかの実施形態では、SMFB160への入力の1つ以上は、機能ブロック以外から受信されてもよい。例えば、SMFB160への入力の1つ以上は、例としてオペレータインターフェースを介してオペレータからの入力を受信するように通信可能に連結されてもよい。例えば、ノード18または20などのノード上に実装されたオペレータインターフェースを使用するオペレータは、SMFB160に入力を提供することができる。
【0030】
SMFBは、状態マシンを実装する機能ブロックであってもよい。いくつかの実施形態では、状態マシンは、複数の状態のうちの1つの中にあり得るエンティティ(例えば、プロセッサによって実装されたデバイス、ソフトウェアなど)を含むことができる。状態マシンは、状態マシンへの特定の入力が生じる場合に1つの状態からもう1つの状態に遷移することができる。SMFBは、状態マシンの現在の状態に基づいている出力を提供することができる。ほんの一例として、SMFBは、状態マシンの現在の状態を示す1つ以上の出力を提供することができる。より一般的に、状態マシンは、所定の時間におけるエンティティ(例えば、プロセッサによって実装されたデバイス、ソフトウェアなど)またはいくつかの他のエンティティ(例えば、プロセスプラント、プロセスプラントのサブパート、プロセスプラントの構成要素など)の状態を記憶するエンティティを含むことができ、状態マシンは、状態マシンへの入力に基づいて、状態を変化させ、および/または動作もしくは出力を生じさせ得る。
【0031】
構成アプリケーションと関連付けられたユーザインターフェースを使用して、プログラマは、制御モジュール154などの制御モジュールを設計することができる。ほんの一例として、ユーザインターフェースは、例えば、複数の規格またはカスタマイズされた機能ブロックのステンシルを含むステンシルまたはパレットから所望の機能ブロックを選択する機構をプログラマに提供することができる。加えて、ユーザインターフェースは、プログラマが機能ブロックの描写を挿入または配置し得る回路図を提供することができる。プログラマは、例えば、マウス、トラックボール、キーボード、キーパッド、タッチスクリーンなどを使用して、ステンシルまたはパレットから機能ブロックを選択肢、次いで機能ブロックを回路図上に「ドラッグアンドドロップ」を選択することができる。加えて、プログラマは、例えば、マウス、トラックボール、キーボード、キーパッド、タッチスクリーンなどを使用して、例えば、1つの機能ブロックの出力ともう1つの機能ブロックの入力との間に線を引くことによって機能ブロックを通信可能に連結することができる。
【0032】
構成されると、制御モジュール154は、例えば、コントローラ12a、14a、16a、I/Oデバイス24、ロジックソルバ50、およびデバイス22、23、60、62のうちの1つ以上によって実装されてもよい。
【0033】
図4は、例えば、
図3のディスプレイ150などのユーザインターフェースディスプレイ上に表示され得るSMFB200の表現の一例である。SMFB200の表現は、SMFB200が7つのデータ入力(IN_D1〜IN_D7)と、9つのデータ出力(TRANS_OUT、TRANS_IN、STATE、およびOUT_D1〜OUT_D6)とを含むことを示す。データ入力は一般的に、プロセスプラント内の条件を示し、オペレータコマンドを示すなどであってもよく、それは、SMFB200によって実装された状態マシンに状態を変化させることができる。データ出力は、SMFB200に対応する状態マシンの状態ならびに状態に基づいて実行される機能または動作に対応する構成項目のうちの1つ以上の指標を含むことができる。例えば、STATE出力は、状態マシンの状態(例えば、状態1、状態2、状態3など)の指標であってもよい。出力OUT_D1は、状態マシンが状態「状態1」であるかどうかの指標であってもよい。同様に、出力OUT_D2、OUT_D3、〜OUT_D6は、状態マシンが状態「状態2」、「状態3」、〜「状態6」でそれぞれあるかどうかの指標であってもよい。加えて、出力TRANS_OUTは、与えられた状態の一つから遷移する状態マシンに従って実行される構成項目を示すことができ、出力TRANS_INは、与えられた状態に遷移する状態マシンに従って実行される構成項目を示すことができる。いくつかの実施形態では、SMFB200は、複数のTRANS_OUT出力および複数のTRANS_IN出力を含むことができる。例えば、SMFB200は、状態の数に等しいいくつかのTRANS_OUT出力およびいくつかのTRANS_IN出力を含むことができる(すなわち、1つの状態につき1つのTRANS_OUT出力および1つのTRANS_IN出力)。SMFB200は、任意の数のTRANS_OUTおよびTRANS_IN出力を含み得ることを理解されるべきである。
【0034】
SMFB200はまた、ENABLE入力、TRK_VAL入力、およびTRK_IN_D入力など、データ入力以外の他の入力を含むことができる。例えば、SMFB200は、別のSMFBからの入力を有することができる。さらに、SMFB200はまた、状態またはそれと関連付けられた構成項目を示す出力以外の他の出力を含むことができる。ENABLE、TRK_VAL、およびTRK_IN_D入力は、より詳細に後述される。7つのデータ入力および9つのデータ出力を有するSMFB200は
図4に示されるが、他の実施形態は、任意の所望の数のデータ入力およびデータ出力を含むことができる。SMFB200のデータ入力の数およびデータ出力の数は、構成可能であってもよく、または構成不可であってもよい。一実施形態では、出力OUT_Dxの数は一般的に、SMFB200によって実装された状態マシンの可能な状態の数に対応し、可能な状態の数は構成可能であってもよい。しかしながら、出力OUT_D1、OUT_D2などの数は、状態マシンの可能な状態の数に対応する必要はない。例えば、出力OUT_D1、OUT_D2などの数より少ない状態がある場合、余分な出力は使用されないままであり得る。
【0035】
構成プログラムと関連付けられたユーザインターフェースを使用して、プログラマは、SMFB200などの1つ以上の機能ブロックを構成することができる。SMFBを構成することに関して、プログラマは、いくつかの可能な状態、いかに入力が状態マシンを状態間で遷移させるか、および状態マシンが状態間で遷移する前、その間、またはその後に実行する任意の機能もしくは動作を指定することができる。プログラマがSMFB200を構成することを可能にするために、構成アプリケーションは、機能ブロックと関連付けられた構成ウィンドウ、スクリーンなど、ユーザインターフェース機構を表示デバイス120上に表示することができる。
【0036】
図5は、
図4のSMFB200など、SMFBを少なくとも一部構成するために使用され得るユーザインターフェース機構の一例である。ユーザインターフェース機構は、SMFBと関連付けられた構成ウィンドウ、スクリーンなどの一部として表示され得る表またはマトリクス300(以下、「マトリクス300」と称される)を含む。マトリクス300は、行および列で配列された複数のセル(302、303、304)を含む。したがって、列は、各グループが状態マシンの複数の可能な状態のうちの1つに対応することができる3つのグループに配列される。具体的には、各グループにおける中央の列は、従来の状態図に含まれるように、状態マシンの特定の状態に対応する。例えば、
図5に示されるように、「1」とラベル付けされた状態は、「作動中」状態であり、「2」とラベル付けされた状態は、「リセット待ち」状態であり、以下同様である。実施形態によれば、各グループにおける左の列は、次の状態に遷移(「入遷移動作」)するときに実行する状態マシンに対する構成項目に対応し、各グループにおける右の列は、現在の状態から遷移(「出遷移動作」)するときに実行する状態マシンに対する構成項目に対応する。さらに、各行は、状態マシンへの入力(例えば、「初期」「リセット許容」など)に対応する。したがって、セル302の各々(各行および列のグループに対する反復)が入遷移動作を指定し、セル303の各々(各行および列のグループに対する反復)が入力/状態対を指定し、セル304の各々(各行および列のグループに対する反復)が出遷移動作を指定する。セル302、303、304のグループは、単一のセルにグループ化され得ることを理解されるべきである。さらに、セル302、303、304の各々は、特定の状態に対応するセルに対するサブセルであり得ることを理解されるべきである。例示的なマトリクス300は、7つの入力および状態の6つのグループに対する行を含むが、状態および出力の異なる数のグループを有する類似のマトリクスは、異なる数の入力および状態のグループを有するSMFBに使用されてもよい。状態の入力およびグループの数は構成可能であってもよい。他の例では、行は、状態マシンの複数の可能な状態(ならびに入遷移動作およびそれと関連付けられた出遷移動作)のうちの1つに対応してもよく、各列は、状態マシンへの入力に対応する。
【0037】
動作中、状態マシンは、それが現在の状態であるときに状態マシン上にアサートされた入力に応じて現在の状態から次の状態に遷移することができる。例えば、マトリクス300は、状態マシンが「通常動作」状態(現在の状態)にあり、かつ「作動要求」入力がアサートされる場合に、状態マシンが「作動中」状態(次の状態)に遷移するべきであることを指定することができる。いくつかの場合では、ある特定の状態は、ある特定の入力に対して次の状態遷移を指定しない場合がある。
【0038】
実施形態によれば、各グループにおける右の列によって指定された出遷移動作は、SMFBが現在の状態から外へ遷移することに従って実行する1つ以上の構成項目であってもよく、各グループにおける左の列によって指定された入遷移動作は、SMFBが次の状態への遷移に従って実行する1つ以上の構成項目であってもよい。いくつかの実施形態では、1つ以上の構成項目は、実行する動作を定義する構造化テキストまたは上位レベルのコンピュータ構築物(例えば、C、C++、JAVAなど)の形態の論理であり得る。1つ以上の構成項目は、任意のタイプのコードまたは実行可能な論理の形態であり得ることを理解されるべきである。1つ以上の構成項目は、現在の状態から次の状態への遷移でSMFBが実行する単一の「ワンショット」項目であり得、それによって、場合によっては、その1つ以上の構成項目は、次の状態が達成されると動作し続けない。SMFBは最初に、SMFBがどこに遷移しているかにかかわらず、出遷移動作を実行する(すなわち、現在の状態を離れることがSMFBに出遷移動作を実行させる)ことができ、SMFBは、SMFBがどこから遷移しているかにかかわらず、次の状態に安定する前に入遷移動作を実行する(すなわち、次の状態に入ることがSMFBに入遷移動作を実行させる)ことできる。いくつかの場合では、構成項目(すなわち、入遷移および出遷移動作)は、SMFBの外側の他の構成要素またはエンティティ(例えば、別の機能ブロック)に作用することができる。入遷移動作、出遷移動作、および状態変化と関連付けられた他の時間的な構成要素が想起されることを理解されるべきである。
【0039】
図4を参照すると、マトリクス300の入力「1」〜「7」は、SMFB200の入力IN_D1〜IN_D7にそれぞれ対応する。同様に、マトリクス300の状態「1」〜「6」は、SMFB200の出力OUT_D1〜OUT_D6にそれぞれ対応する。加えて、この例では、プログラマは、各可能な状態および/または入力の各々をラベル付けすることができる場合がある。例えば、
図5では、「状態1」は、「作動中」とラベル付けされ、入力1は、「初期」とラベル付けされる。入力および/または状態をラベル付けすることは、状態マシンの動作を理解することを容易にするのに役立つことができる。
【0040】
プログラマは、構成情報をセル302、303、304に入力することによってSMFB200を構成することができる。具体的には、入力/状態対に対応する特定のセルの場合、プログラマは、SMFB200が遷移するべきである状態を示す特定のセルに構成データを入力することができる。さらに、入遷移動作に対応する特定のセルの場合、プログラマは、次の状態に遷移するときに実行するSMFB200に対する動作を示す特定のセルに構成データを入力することができる。その上さらに、出遷移動作に対応する特定のセルの場合、プログラマは、現在の状態から遷移するときに実行するためにSMFB200に対する動作を示す特定のセルに構成データを入力することができる。
【0041】
SMFB200は、状態マシンが現在の状態から遷移した後に機能を実行するために対応する出遷移構成データに基づいてTRANS_OUT出力をアサートすることができる。いくつかの実施形態では、SMFB200は、状態マシンが現在の状態から遷移する前にTRANS_OUT出力をアサートすることができる。SMFB200は、状態マシンが現在の状態から遷移した後に(または別の方法で現在の状態から遷移する前に)、かつ状態マシンが次の状態に落ち着く前に、対応する入遷移構成データに基づいてTRANS_IN出力をアサートすることができる。いくつかの実施形態では、SMFB200は、状態マシンが次の状態に落ち着いた後にTRANS_IN出力をアサートすることができる。いくつかの場合では、SMFB200は、さらなるSMFBまたはプロセス制御デバイスへの入力として、出遷移動作または入遷移動作に対応する構成項目を提供することにより、SMFB200が現在の状態から遷移しているか、または次の状態に遷移しているかのいずれかである間に、さらなるSMFBまたはプロセス制御デバイスに機能を実行させることができる。したがって、第1のSMFBのTRANS_OUT出力の起動は、第2のSMFBを次の状態に遷移させることができる。第1のSMFBが蒸気ボイラを制御するプロセスプラントでは、停止状態から点火状態に遷移する第1のSMFBを示す第1のSMFBのTRANS_OUT出力は、第1のSMFBがボイラを点火する前に一時期、ボイラ排出ファンを制御する第2のSMFBをファン停止状態からファン運転状態に遷移させることができる。したがって、ボイラ内の爆発性ガスのあらゆる蓄積は、ボイラが点火される前に排出される。
【0042】
図6は、セルのうちのいくつかに入力された構成データを有するマトリクス300の一例である。例えば、セル303Aは、状態マシンが「作動中」状態にあり、かつ「リセット許容」入力がアサートされるときに状態マシンが遷移するべき次の状態を示す構成データを含む。具体的には、セル303Aの構成データは、状態マシンが「リセット準備完了」状態に遷移するべきであることを示す。さらに、セル302Aは、SMFBが「リセット準備完了」状態に遷移するときに実行するべきである「動作A」に対応する構成データを含み、セル304Aは、SMFBが「作動中」状態から遷移するときに実行するべきである「動作B」に対応する構成データを含む。同様に、セル303Bは、状態マシンが「リセット」入力がアサートされるときに「開始待ち」状態に(「リセット準備完了」から)遷移するべきであることを示す構成データを含み、セル302Bは、状態マシンが「開始待ち」状態に遷移するときに実行するべきである「動作C」に対応する構成データを含み、セル304Bは、状態マシンが「リセット準備完了」状態から遷移するときに実行するべきである「動作D」に対応する構成データを含む。動作A、動作B、動作C、動作Dなどは、本明細書で考察されるように、SMFBまたは他の構成要素によって実行されたあらゆる機能または動作に対応することができることを理解されるべきである。
【0043】
加えて、特定のセルまたはセルのグループは、出遷移動作のない入遷移動作を含み、または逆も同様である。例えば、セル303Cは、「作動要求」入力がアサートされるときに状態マシンが(「開始待ち」から)「作動中」状態に遷移するべきであることを示す構成データを含み、セル302Cは、状態マシンが「作動中」状態に遷移するときに実行するべきである「動作E」に対応する構成データを含む。しかしながら、セル303Cは、対応するTRANS_OUT構成項目を有しない。したがって、状態マシンが「開始待ち」状態にあり、かつ「作動要求」入力がアサートされる場合、SMFBは、「開始待ち」から「作動中」に遷移することに従って「動作E」を実行することができる。同様に、入力/状態対(セル303D内のものなど)」は、対応するTRANS_INまたはTRANS_OUT構成項目のいずれも有しなくてもよい。したがって、状態マシンは、対応するTRANS_INまたはTRANS_OUT構成項目のいずれかを実行せずに現在の状態から次の状態に遷移することができる。
【0044】
いくつかの実施形態では、プログラマが構成データをセルに入力しない場合、その特定の状態および入力に対して状態遷移が生じるべきではないことを想定され得る。例えば、セル302E、303E、および304Eは、状態マシンが「作動中」状態にあり、かつ「開始回復」入力がアサートされるときに示す構成データを含まず、状態マシンは、「作動中」状態にとどまり、あらゆる動作を実行するべきではない。他の実施形態では、プログラマは、状態マシンがその特定の状態/入力の組み合わせに対する状態を変化させるべきではないことを示す構成データを入力することができる。
【0045】
プログラマは、当業者に周知の技術を含む多様な技術のいずれかを使用して構成データをマトリクス300に入力することができる。例えば、構成データをセルに入力するために、プログラマは、マウス、トラックボール、タッチスクリーンなどを使用してセルを選択することができる。次に、ユーザは、例えば、キーボードまたは他の入力デバイスを介して構成データを直接セルに入力することができる。あるいは、プログラマは、セルを選択し、次いで「編集」「修正」など、プルダウンメニューから選択を選択するか、または「編集」ボタン、「修正」ボタンなどを選択することができる。次に、ユーザインターフェースは、プルダウンメニュー、ウィンドウ、表示スクリーンなどを介して状態のリストをプログラマに表示することができる。任意に、状態のリストは、セルが対応する状態または「遷移なし」選択を含むことができる。次に、プログラマは、例えば、キーボード、マウス、トラックボール、タッチスクリーンなどを使用して状態のうちの1つを選択することができる。セルが対応する状態または「遷移なし」選択をプログラマが選択する場合、構成データは、状態および入力の組み合わせに対して、遷移を生じるべきではないことを示すであろう。
【0046】
マトリクス300などのマトリクスを含むユーザインターフェースを使用してSMFBを構成することは、例えば、シーケンシャル機能チャートまたはC++などのプログラミング言語を使用して比較されるように、状態マシンをより容易に実装させることができる。例えば、C++プログラムを使用して状態マシンを実装することは、最初に関連する遷移動作で状態遷移図を作成し、次いでその図を実装するプログラムを記述することを含むであろう。次に、プログラムは、プロセス制御システムに実装される前に場合によっては、テストされ、デバッグされる必要があるであろう。しかしながら、SMFBがマトリクス300などのマトリクスを使用して構成されると、プログラムの記述は必要とされない。どちらかと言えば、「プログラミング」は、状態およびそれと関連付けられた遷移動作でマトリクスに記入することを単純に含むであろう。加えて、ソフトウェアコードが記述される必要がないため、コードのデバッグおよびテストは必要とされない。どちらかと言えば、テストは、SMFBが正しい次の状態に進み、所望の遷移動作を実行することを検証するために状態、入遷移動作、出遷移動作、および入力の様々な組み合わせをテストすることを単純に含むことができる。いくつかの場合では、SMFBの機能は、マトリクス300を単純に調査することによって容易に理解され得る。したがって、構成されたSMFBの機能は、例えば、マトリクスの表現を印刷することによって容易に文書化され得る。
【0047】
マトリクス300などのマトリクスに従って構成されたSMFBは、例えば、安全システムまたはプロセス制御システムに使用され得る。ほんの一例として、マトリクス300などのマトリクスに従って構成されたSMFBは、プロセスプラント内のバーナーを管理するための安全システムの一部として使用され得る。例えば、SMFBは、「点火」、「ガス遮断」、および「排気」などの状態を含み得る。バーナーを始動すると、SMFBは、最初に排気状態に進んで、バーナー内のガスを排気させ得る。次いで、SMFBは、点火状態に進んで、バーナーを発火させ得る。また、バーナーの炎が消えた場合、SMFBは、ガス遮断状態に進んで、バーナーへのガスを遮断し得る。次いで、SMFBは、排気状態に進み得る。加えて、SMFBは、安全システムを容易にする入遷移動作および出遷移動作を含むことができる。例えば、SMFBは、排気状態に遷移することと関連付けられた入遷移動作を含むことができ、それによって入遷移動作は、バーナーが排気されていることをオペレータに通知するオペレータ指標を起動する。加えて、SMFBは、排気状態から遷移することと関連付けられた出遷移動作を含むことができ、それによって出遷移動作は、バーナーが適切に排気されていることをオペレータに通知する。あるいは、第1のSMFB(例えば、ボイラ制御SMFB)のTRANS_OUTまたはTRANS_IN出力は、第1のSMFBが現在の状態から遷移し、および/または次の状態に遷移する間に、他のSMFBまたはプロセス制御デバイスに機能を実行させるために、別のSMFBへの入力(例えば、ボイラ換気システム制御SMFB)または別のプロセス制御デバイスとして提供されてもよい。
【0048】
マトリクス300などのマトリクスに従って構成されたSMFBは、コントローラ12a、16a、I/Oデバイス24、ロジックソルバ50、およびデバイス22、23、60、62のうちの1つ以上によって実装され得る。いくつかの実施形態では、SMFBは、ソフトウェアに従って構成されたプロセッサによって、プログラマブル論理デバイス、例えば、ゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ(FPGA)、PROM、EPROM、EEPROM、プログラマブルアレイ論理(PAL)、プログラマブル論理アレイ(PLA)などのうちの1つ以上を含むデバイスによって実装されてもよい。
【0049】
SMFBと関連付けられた構成データ(例えば、マトリクス300などのマトリクスに入力されたデータ、および任意に他の構成データ)は、ハードディスク、RAM、ROM、CD−ROM、EPROM、EEPROM、DVD、フラッシュメモリなどのコンピュータ可読媒体、および/またはプロセッサと関連付けられたメモリ上に記憶されてもよい。
【0050】
図7は、構成されたSMFBの動作の例示的な方法350のフロー図である。方法350は、例えば、定期的および/またはトリガイベントに応答して実装されてもよい。ブロック354では、SMFBは、そのデータ入力(複数可)を受信する。
図4を参照すると、例えば、SMFBは、入力IN_D1〜IN_D7のいずれかを受信する。ブロック356では、SMFBは、現在の状態および/またはデータ入力(複数可)に基づいて適切な出遷移動作を実行する。具体的には、SMFBは、構成データベース内に記憶された関連する出遷移構成データを使用して出遷移動作を実行することができる。ブロック357では、SMFBは、次の状態に基づいて(現在の状態およびデータ入力(複数可)によって示されるように)適切な入遷移動作を実行する。具体的には、SMFBは、構成データベース内に記憶された関連する入遷移構成データを使用して入遷移動作を実行することができる。
【0051】
ブロック358では、SMFBは、必要である場合、データ入力(複数可)、SMFBの現在の状態、および構成データベース内に記憶された構成データに基づいてその状態マシンの状態を変化させる。例えば、SMFBは、現在の状態を決定された次の状態とする。構成データベースのデータは、マトリクス300などのマトリクスを介して入力されたデータを含むことができる。状態は、同様に他の因子に基づいて変化させてもよい。例えば、より詳細に後述されるように、SMFBは、データ入力(複数可)のうちの1つ以上を無視するように構成されてもよい。したがって、状態を変化させることはまた、存在する場合、どのデータ入力(複数可)が無視されるかを示す構成データに基づいてもよい。別の例として、2つ以上のデータ入力は、状態変化が現在の状態から2つ以上の次の状態に生じるべきであることを示すことができる。したがって、SMFBは、データ入力を優先付けする優先データに基づいて、データ入力のうちの1つを選択して、SMFBがとり得る次の状態のうちのどれに遷移するべきか決定することができる。さらに別の例として、いくつかの実施形態では、SMFBに対するデータ入力(複数可)は、状態(例えば、良好(GOOD)状態または不良(BAD)状態)を含むことができる。したがって、状態を変化させることはまた、例えば、BAD状態を有する入力がいかに処理されるべきであるかを示す構成データに基づいてもよい。
【0052】
次に、ブロック366では、SMFBは、状態マシンの現在の状態に基づいてそのデータ出力を設定することができる。例えば、SMFBは、STATE出力(ならびに適切なOUT_Dx)を状態マシンの現在の状態に設定することができる。さらに、SMFBは、現在の状態から遷移する状態マシンに従って実行される出遷移動作を示すTRANS_OUT出力を設定することができ、状態マシンが次の状態に遷移することに従って実行される入遷移動作を示すTRANS_IN出力を設定することができる。
【0053】
再び
図4を参照すると、SMFBは、「ENABLE」入力を任意に含むことができる。一実施形態では、ENABLE入力がデアサートされる場合、SMFBは、動作不能状態(例えば、状態0)に強制されてもよく、ENABLE入力がアサートされるまでその状態にとどまるべきである。ENABLE入力がアサートされると、SMFBは、SMFBが
図5のマトリクス300などの構成マトリクスに入力された構成データに従って他の状態に遷移し得る後、初期の状態(例えば、状態1)に強制されてもよい。
【0054】
SMFBは、1つの入力または状態マシンを所望の状態に強制する入力をさらに含むことができる。例えば、SMFB200は、TRK_IN_D入力と、TRK_VAL入力とを含む。TRK_IN_D入力がアサートされると、SMFBは、TRK_VAL入力によって指定された状態に強制されてもよい。例えば、TRK_VAL入力が「6」であり、TRK_IN_D入力がアサートされる場合、SMFBは、状態「6」に強制されてもよい。
【0055】
SMFBは任意に、さらなる方法で構成されてもよい。例えば、SMFBは、存在する場合、入力IN_D1、IN_D2などのうちの1つ以上が無視されるべきであるか示す入力(または遷移)マスクを含むことができる。また、SMFBは、複数の状態を有し得る入力に応答するように構成されてもよい。例えば、SMFBへの入力のうちの1つまたはすべては、「良好」状態または「不良」状態を有することができ、SMFBは、入力の状態に応じて異なる応答をするように構成されてもよい。特定の一例では、SMFBは、「BAD」入力を無視し、それが「BAD」の場合であっても入力を使用し、または入力の最後の「GOOD」値を使用するように構成されてもよい。さらに、SMFBは、真であるとき、SMFBを「1」の状態に強制するリセットパラメータを含むことができる。
【0056】
上述される様々な構成データおよび次の状態の構成データは、同じコンピュータ可読媒体または異なるコンピュータ可読媒体上に記憶され得る。
【0057】
図8は、SMFB400の一例のブロック図である。SMFB400は、入力IN_D1、IN_D2などとSMFB400の現在の状態とに少なくとも一部基づいて次の状態を決定する論理404を含む。具体的には、論理404は、次の状態の構成データベース406内に記憶された次の状態の構成データにアクセスする。論理404はまた、SMFB400によって実行される入遷移動作および出遷移動作を決定する。入遷移動作は、出遷移構成データベース405からの入遷移構成データに少なくとも一部基づいてもよい。出遷移動作は、出遷移構成データベース407からの出遷移構成データに少なくとも一部基づいてもよい。本明細書で考察されるような実施形態によれば、入遷移構成データは、SMFBが次の状態に落ち着く前にSMFBが実行する機能を定義することができ出遷移構成データは、SMFBが現在の状態から遷移する前に(または別の方法で次の状態に遷移する前に)実行する機能を定義することができる。データベース405、406、407は、本明細書に記載されるようなコンピュータ可読媒体上に記憶されてもよい。次の状態、入遷移構成データ、および出遷移構成データは、
図5のマトリクス300などのマトリクスに入力された構成データを含むことができる。様々な構成要素、論理、またはモジュールが入遷移構成データおよび/または出遷移構成データを実行し得ることを理解されるべきである。例えば、SMFB400は、入遷移構成データおよび/または出遷移構成データを実行することができる。さらなる例として、SMFB400は、別個の構成要素またはモジュールにコマンドを送信して、入遷移構成データおよび/または出遷移構成データを実行することができる。
【0058】
いくつかの実施形態によれば、論理404の出力は、切り替え論理408に提供される。切り替え論理408は、TRK_IN_D入力に基づいて論理404の出力と入力TRK_VALとの間で選択する。例えば、TRK_IN_D入力がアサートされる場合、切り替え論理408は、TRK_VAL入力を選択することができる。そうでなければ、切り替え論理408は、論理404の出力を選択することができる。
【0059】
切り替え論理408の出力は、切り替え論理412に提供され、これは、イネーブルおよびリセット論理416の出力に基づいて、切り替え論理408の出力と値0と値1との間で選択する。イネーブルおよびリセット論理416の出力は、状態が動作不能状態(状態0)または初期状態(状態1)に強制されるべきであるかを示す。イネーブルおよびリセット論理416は、ENABLE入力に基づいてこの出力を生成する。例えば、ENABLE入力がアサート停止される場合、イネーブルおよびリセット論理416の出力は、状態が0に強制されるべきであることを示すことができる。ENABLE入力がアサート停止からアサートに変化させる場合、イネーブルおよびリセット論理416の出力は、状態が1に強制されるべきであることを示すことができる。ENABLEがアサートされ、以前にアサートされた場合、イネーブルおよびリセット論理416の出力は、状態が0または1に強制されるべきではないことを示すことができる。
【0060】
切り替え論理412の出力は、SMFB400の現在の状態であり、SMFB400の出力として提供されてもよい。切り替え論理412の出力はまた、SMFBの現在の状態に対応する適切な出力OUT_D1、OUT_D2、TRANS_IN、TRANS_OUTなどを設定する論理420に提供されてもよい。
図8に描写されるように、論理420は任意に、任意の出力構成データベース458内に記憶された状態/出力構成データにアクセスすることができる。データベース458およびデータベース406は、同じコンピュータ可読媒体または異なるコンピュータ可読媒体上に記憶されてもよい。出力構成データは、本明細書で考察されるように
図13のマトリクス700などのマトリクスに入力された構成データを含むことができる。
【0061】
ブロック404、408、412、416、および420の各々は、1つ以上のハードウェア、ソフトウェア、およびファームウェアによって実装されてもよい。加えて、ブロックのうちのいくつかは、組み合わされ、並べ替えられ、修正され、または省略されてもよく、さらなるブロックが追加されてもよい。単に一例として、ブロック408および412は、単一ブロックに組み合わされ得る。
【0062】
図9は、例示的なSMFB400の動作の方法450のフロー図である。
図9の方法450は、例えば、定期的および/またはトリガイベントの際に実装されてもよい。ブロック454では、SMFB400のデータ入力が処理される。例えば、データ入力IN_D1、IN_D2などのいずれかがアサートされたか決定されてもよい。別の例として、データ入力のうちの1つ以上が「BAD」状態を有する場合、それは「BAD」入力(複数可)をいかに処理するべきか決定されてもよい。ブロック458では、SMFB400のENABLE入力が処理される。例えば、それは、ENABLE入力がアサートされるか、および/またはそれが以前に処理された後にそれが変化されたか決定されてもよい。
【0063】
ブロック459では、SMFBは、現在の状態および/またはデータ入力に基づいて、例えば、構成データベース内に記憶された関連する出遷移構成データにアクセスすることによって、適切な出遷移動作を実行する。ブロック460では、SMFBは、次の状態および/またはデータ入力に基づいて、例えば、構成データベース内に記憶された関連する入遷移構成データにアクセスすることによって、適切な入遷移動作を実行する。例えば、SMFBは、プロセスプラント内の1つの設備を制御するように構成されてもよい。この1つの設備が遮断状態(すなわち、現在の状態)にあるとき、次の状態の構成データは、設備起動入力が作動させられ、1つの設備が動作状態(すなわち、次の状態)に遷移するときに実行されてもよい。遮断状態から実際に遷移する前に、SMFBは、1つの設備が起動しようとしていることを示す警報を作動させるために出遷移構成データを実行することができる。加えて、動作状態に落ち着く前に、SMFBは、警報を止めさせるために入遷移構成データを実行することができる。
【0064】
さらなる例として、SMFBは、倉庫内の複数の暖房設備を制御するように構成されてもよい。プロセスプラントが加熱状態(すなわち、現在の状態)にあるとき、換気状態への遷移に対応する換気装置を開始するために入力がアサートされ得る。加熱状態からの遷移中、SMFBは、加熱源がより多くの熱を生成するのを防ぐために加熱炉または他の加熱源を自動的にロックすることができる。したがって、加熱炉は、換気状態への遷移後、動作することができない。さらに、換気状態に遷移する前、SMFBは、対応するマシンの排気に役立つために換気装置と関連付けられた一連の換気を自動的に作動させることができる。
【0065】
ブロック462では、SMFB400の状態は、必要である場合、変化されてもよい。加えて、SMFB400の1つ以上のデータ出力は、必要である場合、変化または設定されてもよい。例えば、それは、SMFB400の状態が変化されるべきであることをデータ入力の変化が示すことを決定されてもよい。加えて、状態が変化される場合、それは、SMFB400のTRANS_INおよびTRANS_OUT出力などの1つ以上のデータ出力が変化されるべきであることであってもよい。
【0066】
少なくとも一部、方法450を実装するために使用され得るいくつかの例示的なルーチンが記載される。例えば、
図10は、SMFBへのデータ入力IN_D1、IN_D2などを処理するために使用され得る例示的なルーチン500のフロー図である。ブロック504では、変数zは、1に設定される。ブロック508では、データ入力IN_Dzの状態が「BAD」であるか決定される。状態が不良ではない場合、変数TRANSITIONSのビット数zは、データ入力IN_Dzの値に設定される。状態が不良である場合、データ入力がいかに処理されるべきであるかを決定されてもよい。一例では、SMFBは、BAD入力がとにかく使用されてもよく(ALWAYS_USE)、それが無視されてもよく(IGNORE_IF_BAD)、または最後に「GOOD」であった入力値が使用されてもよい(USE_LAST_GOOD)という3つの手法のうちの1つで「BAD」入力を処理することができる。したがって、ブロック516では、SMFBが最後の「GOOD」データ入力を使用するべきであるか決定されてもよい。SMFBが最後の「GOOD」値を使用するべきである場合、ブロック512は省略されてもよい。そうでなければ、SMFBがBAD入力値を無視するべきであるかブロック520で決定されてもよい。SMFBがBAD値を無視しない場合、ルーチンは、ブロック512に進むことができる。SMFBがBAD値を無視する場合、ルーチンは、ブロック524に進むことができる。ブロック524では、変数TRANSITIONSのビット数「z」は、0に設定される。
【0067】
ブロック528では、変数zは増やされ、ブロック532では、変数zがSMFBのデータ入力の数より大きいか決定されてもよい。zがSMFBへのデータ入力の数より大きくない場合、ルーチンは、ブロック508に戻って、次のデータ入力を処理することができる。そうでなければ、ルーチンは終了することができる。
【0068】
図11は、SMFBへのENABLE入力を処理するために使用され得る例示的なルーチン545のフロー図である。ブロック550では、変数LASTENABLEの値がENABLE入力の値と同じであるか決定されてもよい。LASTENABLE変数は一般的に、前回のENABLEの値(例えば、ルーチン545の前回動作中のENABLE変数の値)を示す。LASTENABLEおよびENABLEの値が同じである場合、ルーチン545は終了することができる。そうでなければ、ルーチンは、ENABLE入力がアサートされるか決定され得るブロック554に進むことができる。ENABLE入力がアサートされる場合、ブロック558では、変数リセットは、TRUEに設定されてもよい。
【0069】
ブロック554では、ENABLE入力がアサートされないことを決定される場合、ブロック562では、STATE変数の現在の値に対応する出力OUT_D1、OUT_D2などはアサート停止にされる。次に、ブロック566では、STATE変数は、0に設定される。ブロック558および566の後、ルーチンは、変数LASTENABLEがENABLE入力の値に設定されるブロック570に進むことができる。ブロック570の後、ルーチンは終了することができる。
【0070】
図12は、SMFBの次の状態を決定し、かつ必要である場合、適切な出力OUT_D1、OUT_D2、TRANS_IN、TRANS_OUTなどを設定するために使用され得る例示的なルーチン600のフロー図である。ブロック604では、ENABLE入力がアサートされるか決定されてもよい。それがアサートされない場合、ルーチンは終了することができる。ENABLE入力がアサートされる場合、ルーチンは、変数NEWSTATEが0に設定されるブロック608に進むことができる。次に、ブロック612では、入力TRK_IN_Dがアサートされるか決定されてもよい。それがアサートされる場合、ルーチンは、NEWSTATE変数が入力TRK_VALの値に設定されるブロック616に進むことができる。
【0071】
TRK_IN_D入力がアサートされないことをブロック612で決定される場合、ルーチンは、ブロック620に進むことができる。ブロック620では、変数リセットがTRUEであるか決定されてもよい。それがTRUEである場合、ルーチンは、NEWSTATE変数が1に設定され得るブロック624に進むことができる。次に、ブロック626では、リセット変数は、FALSEに設定されてもよい。
【0072】
変数リセットがTRUEではないブロック620で決定される場合、ルーチンは、ブロック632に進むことができる。ブロック632では、変数TEMPは、TRANSITION_MASK変数、TRANSITIONS変数、および変数STATEによって指示された配列STATECHANGEMASKの要素をビット単位「AND演算」することによって決定されてもよい。TRANSITION_MASK変数は、ある特定の入力IN_Dxが状態変化を生じさせるのを防ぐために使用され得る構成可能な変数であってもよい。例えば、入力IN_D3が状態マシンに状態を変化させるのを防ぐことをプログラマが望む場合、プログラマは、変数TRANSITION_MASKの第3のビットを0に設定することができる。入力D3が状態マシンに状態を変化させるのを可能にすることをプログラマが望む場合、プログラマは、変数TRANSITION_MASKの第3のビットを1に設定することができる。
【0073】
STATECHANGEMASK配列の各要素は、入力IN_D1、IN_D2などが状態変化を引き起こす状態の対応する1つに対して示す変数であってもよい。具体的には、配列の各要素は、状態マシンの状態のうちの1つに対応することができる。例えば、STATECHANGEMASK[1]が状態1に対応することができ、STATECHANGEMASK[2]が状態2に対応することができ、以下同様である。加えて、各要素の各ビットは、入力IN_D1、IN_D2などのうちの1つに対応することができる。例えば、ビット1がIN_D1に対応することができ、ビット2がIN_D2に対応することができ、以下同様である。
図6を参照すると、例えば、マトリクス300の場合、STATECHANGEMASK配列は、6つの要素を有し、要素STATECHANGEMASK[3]は、0×44であろう。
【0074】
ブロック628の後、ルーチンは、変数TEMPが0であるか決定され得るブロック632に進むことができる。それが0ではない場合、ルーチンは、変数zが0ではない変数TEMPにおける第1のビット(すなわち、最下位ビットから開始する)の数に設定され得るブロック636に進むことができる。実際には、これは、IN_D1が最優先であり、IN_D2が次の最優先であり、IN_D3が次の最優先であり、以下同様であるようにそれらの順に基づいて入力の優先度を設定する。他の実施形態では、他の優先順位付け方式が使用され得る。例えば、プログラマは、入力への優先度を割り当てることを許可され得るか、または異なる優先順位が使用され得る(例えば、IN_D1が最下位優先度であり、IN_D2が次の最下位優先度であり、以下同様である)。優先度は、全体としてまたは各状態にSMFBに設定され得る。次に、ブロック640では、変数NEWSTATEは、行zおよび列STATEで状態遷移マトリクスの値に設定されてもよい。
【0075】
ブロック616、626、および640の後、ルーチンは、ブロック644に進むことができる。ブロック632では、変数TEMPが0であることを決定される場合、ルーチンはまた、ブロック644に進むことができる。ブロック644では、変数NEWSTATEが0であるか決定されてもよい。それが0である場合、ルーチンは終了することができる。それが0ではない場合、ルーチンは、出遷移動作が実行され得るブロック645に進むことができる。次に、ブロック646では、入遷移動作は実行され得る。ブロック648では、STATE変数に対応する出力OUT_D1、OUT_D2、TRANS_IN、TRANS_OUTなどはアサート停止にされる。アサート停止にされる出力は、STATE変数に対応する必要がないことを理解されるべきである。ブロック652では、変数STATEは、変数NEWSTATEの値に設定される。ブロック656では、STATE変数に対応する出力OUT_D1、OUT_D2、TRANS_IN、TRANS_OUTなどはアサートされ、ルーチンは終了することができる。アサートされる出力は、STATE変数に対応する必要がないことを理解されるべきである。
【0076】
図9の方法450および
図10〜12のルーチンは例示にすぎず、他の例では、ブロックが修正されてもよく、新しいブロックが追加されてもよく、ブロックが並べ替えられてもよく、ブロックが省略されてもよく、および/またはブロックが組み合わされてもよいことを理解されるべきである。
図10を参照すると、ほんの一例として、ブロック508、516、520、および524は、「BAD」状態を有する入力の特別な処理が必要とされず、または所望されない場合に省略されてもよい。
【0077】
別の例として、ブロック636は、変数zが0ではないTEMPにおける最後のビットの数に設定されるように修正され得る。さらに別の例として、ブロック636は、いくつかの優先度データに基づいて0ではないTEMPにおけるビットのうちの1つに対応する数にzを設定するように修正され得る。
【0078】
再び
図4を参照すると、データ出力のすべては、SMFB200に対応する状態マシンの状態の指標である必要はない。例えば、一実施形態では、状態マシンの様々な状態に対応する出力OUT_D1、OUT_D2などに対する値は構成可能であってもよい。したがって、例えば、ある特定の状態の場合、複数の出力OUT_D1、OUT_D2などはアサートされてもよい。プログラマがSMFBを構成することを可能にするために、構成アプリケーションは、機能ブロックと関連付けられた構成ウィンドウ、スクリーンなど、ユーザインターフェース機構を表示デバイス120上に表示することができる。
【0079】
図13は、
図4のSMFB200などのSMFBを少なくとも一部構成するために使用され得るユーザインターフェース機構の一例である。ユーザインターフェース機構は、SMFBと関連付けられた構成ウィンドウ、スクリーンなどの一部として表示され得る表またはマトリクス700(以下、「マトリクス700」と称される)を含む。マトリクス700は、行および列で配列された複数のセル704を含む。各列は、状態マシン機能ブロックの複数の出力OUT_D1、OUT_D2など、TRANS_INおよびTRANS_OUTのうちの1つに対応し、各行は、状態マシンの可能な状態のうちの1つに対応する。したがって、各セル704は、状態および出力に対応する。他の例では、各列は、複数の出力のうちの1つに対応することができ、各列は、状態マシンの可能な状態のうちの1つに対応することができる。
【0080】
マトリクス700の出力「1」〜「4」は、SMFBの出力OUT_D1〜OUT_D4にそれぞれ対応することができ、出力「5」および「6」は、出力TRANS_INおよびTRANS_OUTにそれぞれ対応することができる。同様に、マトリクス700の状態「1」〜「6」は、状態マシンの可能な状態に対応することができる。加えて、この例では、ユーザは、出力の各々をラベル付けすることができる場合がある。例えば、
図13では、「出力1」は、「バルブ開放VLV−101」とラベル付けされる。出力をラベル付けすることは、状態マシンの動作を理解し、および/または状態マシンをプロセスプラントとインターフェース接続することを容易にするのに役立ち得る。
【0081】
プログラマは、構成情報をセル704に入力することによってSMFBを構成することができる。具体的には、状態のうちの1つおよび出力のうちの1つに対応する特定のセル704の場合、プログラマは、状態マシンがその状態にあるときにその出力がアサートされるべきであることを示す構成データをセルに入力することができる。例示的なマトリクス700では、構成データは、セル704のうちのいくつかに入力された。例えば、セル704Aは、状態マシンが「作動中」状態にあるときに出力OUT_D3がアサートされるべきであることを示す構成データを含み、セル704Bは、状態マシンが「作動中」状態にあるときに出力TRANS_INがアサートされるべきであることを示す構成データを含み、セル704Cは、状態マシンが「回復済み」状態にあるときに出力TRANS_OUTがアサートされるべきであることを示す構成データを含む。
【0082】
この特定の例では、プログラマがセル704に構成データを入力しない場合、特定の状態の場合、対応する出力はアサートされるべきではないことを想定され得る。例えば、セル704Dおよび704EはXを含まず、このことは、状態マシンが「作動中」状態にあるときに出力OUT_D1およびOUT_D2がアサートされるべきではないことを示す。他の実施形態では、プログラマは、状態マシンが特定の状態にある場合に特定の出力をアサートするべきではないことを示す構成データを入力することができる。同様に、特定の状態および出力の場合、出力がアサートされるか、またはアサートされないかは問題ではないことを示す可能性がある。
【0083】
プログラマは、当業者に周知の技術を含む多様な技術のいずれかを使用してマトリクス700に構成データを入力することができる。例えば、構成データをセル704に入力するために、プログラマは、マウス、トラックボール、タッチスクリーンなどを使用してセル704を選択することができる。次に、ユーザは、例えば、キーボードを介して構成データを直接セル704に入力することができる。あるいは、プログラマは、セル704を選択し、次いで「編集」「修正」など、プルダウンメニューから選択を選択するか、または「編集」ボタン、「修正」ボタンなどを選択することができる。次に、ユーザインターフェースは、プルダウンメニュー、ウィンドウ、表示スクリーンなどを介して選択のリストをプログラマに表示することができる。例えば、選択のリストは、「出力をアサートする」選択、「出力をアサート停止にする」選択、および任意に「指定なし」選択を含むことができる。次に、プログラマは、例えば、キーボード、マウス、トラックボール、タッチスクリーンなどを使用して選択のうちの1つを選択することができる。プログラマが「出力をアサートする」選択を選択する場合、構成データは、対応する状態の場合、対応する出力がアサートされるべきであることを示すことができる。例えば、「X」がセル内に表示されてもよく、「1」がセル内に表示されてもよく、用語「TRUE」がセル内に表示されてもよく、用語「ASSERT」がセル内に表示されてもよく、以下同様である。プログラマが「出力をアサート停止にする」選択を選択する場合、構成データは、対応する状態の場合、対応する出力がアサートされるべきではないことを示すことができる。例えば、セルが空白のままにされてもよく、「0」がセル内に表示されてもよく、用語「FALSE」がセル内に表示されてもよく、用語「DEASSERT」がセル内に表示されてもよく、以下同様である。
【0084】
例示的なマトリクス700は、6つの状態および6つの出力に対する行を含むが、異なる数の状態および出力を有する類似のマトリクスは、異なる数の状態および出力を有するSMFBに使用されてもよい。状態および出力の数は構成可能であってもよい。
【0085】
再び
図7を参照すると、以前に記載されたように、現在の状態が決定された後、SMFBのデータ出力は、現在の状態(ブロック366)に基づいて設定されてもよい。例えば、データ出力は、
図13のマトリクス700などのマトリクスに入力された構成データに従って設定されてもよい。
【0086】
図14は、適切な出力OUT_D1、OUT_D2などをアサートするために使用され得る例示的なルーチン850のフロー図である。ブロック854では、変数zが1に設定される。ブロック858では、出力OUT_Dzは、変数STATEによって指示された配列変数OUTPUTの要素のビット数zの値に設定される。OUTPUT配列の各要素は、状態の対応する1つに対して、出力OUT_D1、OUT_D2などの値を示す変数であってもよい。例えば、OUTPUT[1]が状態1に対応することができ、OUTPUT[2]が状態2に対応することができ、以下同様である。加えて、各要素の各ビットは、出力OUT_D1、OUT_D2などのうちの1つに対応することができる。例えば、ビット1がOUT_D1に対応することができ、ビット2がOUT_D2に対応することができ、以下同様である。
図13を参照すると、例えば、マトリクス700に対して、OUTPUT配列は、6つの要素を有し、要素OUTPUT[1]は、0×06であってもよい。
【0087】
ブロック862では、変数zは増やされ、ブロック866では、zの値が出力OUT_D1、OUT_D2などの数より大きいか決定され得る。zが出力OUT_D1、OUT_D2などの数以下の場合、ルーチンは、ブロック858に戻って進むことができる。そうでなければ、ルーチンは終了することができる。
【0088】
SMFBに対する構成データは、上述されるものに加えて他のタイプのグラフィカルユーザインターフェースを介して入力されてもよい。例えば、構成データは、状態遷移図に類似するグラフィカルユーザインターフェースを介して入力されてもよい。
図15は、
図4に関して記載されるようにSMFB200などのSMFBを構成するために使用され得る例示的な状態遷移
図900である。
図900は、複数のグラフィカル要素904、908、912、916、920、924、928、および932を含む。要素904、908、および912は、状態マシンの状態1、2、および3をそれぞれ表す。要素916は、状態マシンが状態1にあるときに入力2がアサートされる場合にそれが状態2に遷移するべきであることを示す。要素920は、状態マシンが状態1にあるときに入力3がアサートされる場合にそれが状態3に遷移するべきであることを示す。要素924は、状態マシンが状態2にあるときに入力1がアサートされる場合にそれが状態1に遷移するべきであることを示し、要素928は、状態マシンが状態3にあるときに入力1がアサートされる場合にそれが状態1に遷移するべきであることを示す。同様に、要素932は、状態マシンが状態3にあるときに入力4がアサートされる場合にそれが状態2に遷移するべきであることを示す。
【0089】
状態遷移
図900は、状態1と関連付けられた入遷移要素902、903、および出遷移要素905と、状態2と関連付けられた入遷移要素906、907、および出遷移要素909と、状態3と関連付けられた入遷移要素911、および出遷移要素913、914とをさらに含む。具体的には、状態マシンが状態1にあり、入力3がアサートされる場合、状態マシンは、出遷移要素905を実行し、状態3に遷移し、状態3の入遷移要素911を実行するべきである。さらに、状態マシンが状態2にあり、入力1がアサートされる場合、状態マシンは、出遷移要素909を実行し、状態1に遷移し、入遷移要素902を実行するべきである。入遷移要素および/または出遷移要素は、状態のいずれかの間で共通であり得ることを理解されるべきである。例えば、入遷移要素902、903は同じであり得、それによって状態マシンは、状態マシンが状態2または状態3のいずれかから状態1に遷移することに応答して関連する入遷移動作を実行する。さらなる例として、出遷移要素913、914は同じであり得、それによって状態マシンは、状態マシンが状態1(アサートされる入力1に応答して)または状態2(アサートされる入力4に応答して)のいずれかに遷移することに応答して関連する出遷移動作を実行する。
【0090】
一般的に、SMFBは、ソフトウェア、ファームウェア、もしくはハードウェア、またはソフトウェア、ファームウェア、および/もしくはハードウェアのいくつかの組み合わせによって実装されてもよい。例えば、SMFBは、コントローラ12a、16a、I/Oデバイス24、ロジックソルバ50、およびデバイス22、23、60、62のうちの1つ以上によって実装されてもよい。別の例として、SMFBは、ワークステーション18aおよび20aのうちの1つ以上によって実装されてもよい。例えば、SMFBは、プロセスプラントの動作をテストするか、またはオペレータのトレーニングを提供するシミュレーションの一部としてワークステーション18aおよび/またはワークステーション20aによって実装されてもよい。いくつかの実施形態では、SMFBは、ソフトウェアに従って構成されたプロセッサによって、プログラマブル論理デバイス、例えば、ゲートアレイ、標準セル、フィールドプログラマブルゲートアレイ(FPGA)、PROM、EPROM、EEPROM、プログラマブルアレイ論理(PAL)、プログラマブル論理アレイ(PLA)などのうちの1つ以上を含むデバイスによって実装されてもよい。
【0091】
図8のブロック404、408、412、416、420、および458の各々は、ソフトウェア、ファームウェア、もしくはハードウェア、またはソフトウェア、ファームウェア、および/もしくはハードウェアのいくつかの組み合わせによって実装されてもよい。加えて、
図10〜12および14のフロー図は、ルーチンとして記載されたが、これらのフロー図は、ソフトウェア、ハードウェア、ファームウェア、またはソフトウェア、ファームウェア、および/もしくはハードウェアの組み合わせによって実装され得る。
【0092】
上述されるユーザインターフェースなどのユーザインターフェースの実施形態は、全体または一部において、例えば、ソフトウェアプログラムに従って構成されたプロセッサによって実装されてもよい。例えば、ワークステーション18aもしくは20aまたはいくつかの他のコンピュータは、全体または一部において、上述されるユーザインターフェースを実装することができる。ユーザインターフェースの実施形態を実装するためのソフトウェアプログラムは、ハードディスク、RAM、バッテリバックアップされたRAM、ROM、CD−ROM、PROM、EPROM、EEPROM、DVD、フラッシュメモリなどの有形媒体、またはプロセッサと関連付けられたRAMなどのメモリ上に記憶されたソフトウェアに具現化されてもよいが、当業者であれば、このプログラム全体または一部が代わりに、プロセッサ以外のデバイスによって実行され、ならびに/または周知の様式でファームウェアおよび/もしくは専用のハードウェアに具現化され得ることを容易に理解するであろう。
【0093】
本発明は、様々な修正および代替的構築物の影響を受けやすいが、このある特定の例示的な実施形態は、図面に示され、本明細書に詳細に記載される。しかしながら、開示される特定の形態に本開示を限定することを意図していないが、それとは反対に、添付の特許請求の範囲によって定義されるような本開示の趣旨および範囲内に入るすべての修正、代替的構築物、および均等物を網羅するのを意図することを理解されるべきである。