(57)【特許請求の範囲】
【請求項１】
制御モジュールの機能ブロックを、プロセス制御ネットワーク内の装置内で実行されるように自動的に割り当てるための、プロセッサ上で動作可能なシステムであって、前記プロセス制御ネットワークは、１つ以上のフィールド装置にデータバスを介して接続された入出力装置に通信可能に結合されたプロセスコントローラを有し、
前記システムは、コンピュータ読み取り可能メモリと、前記プロセッサ上で実行するための、前記コンピュータ読み取り可能メモリ上に記憶されたルーチンとを具備し、
前記ルーチンは、前記プロセッサ上で実行される場合、
前記制御モジュールのフォワードフロー経路上に配置された機能ブロックの組であって、入力機能ブロックと出力機能ブロックと１つ以上の中間機能ブロックとを含む、機能ブロックの組を決定し、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとのそれぞれが、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるかどうかを判定し、及び、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるならば、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックを、前記入出力装置内で実行されるように割り当て、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行するように割り当てられていないならば、前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックを前記コントローラ内で実行するように割り当てる、
システム。
【請求項２】
前記ルーチンは、前記プロセッサ上で実行される場合、前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとのうちの１つ以上が、前記データバス上の前記１つ以上のフィールド装置のうちのいずれかの中で実行されるように割り当てられないならば、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックのそれぞれを、前記プロセスコントローラ内で実行されるように割り当てる、
請求項１に記載のシステム。
【請求項３】
事前に確立される通信スケジュールに従って、前記データバスを介して通信が行われ、及び、
前記ルーチンは、前記プロセッサ上で実行される場合、さらに、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのそれぞれを、前記事前に確立される通信スケジュール内で同期して動作するようにスケジュールする、
請求項２に記載のシステム。
【請求項４】
前記事前に確立される通信スケジュールは、繰り返されるマクロサイクルを含み、及び、
前記ルーチンは、前記プロセッサ上で実行される場合、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのそれぞれが、各マクロサイクルの間に少なくとも１回、前記データバスを介して通信するようにスケジュールされる、前記データバスのためのマクロサイクルを作成することによって、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのそれぞれを、前記事前に確立される通信スケジュール内でスケジュールする、
請求項３に記載のシステム。
【請求項５】
前記ルーチンは、前記プロセッサ上で実行される場合、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの１つが、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの別の１つよりも速いレートで実行されるようにスケジュールする、
請求項４に記載のシステム。
【請求項６】
前記ルーチンは、前記プロセッサ上で実行される場合、さらに、前記事前に確立される通信スケジュールのための前記マクロサイクルを作成し、前記マクロサイクルの中では、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記１つが、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記別の１つよりも多くの回数、前記マクロサイクルの間に動作するようにスケジュールされる、
請求項５に記載のシステム。
【請求項７】
マルチプライヤを指定する、前記制御モジュールの前記機能ブロックのうちの少なくとも１つのためのインジケータをさらに含み、前記マルチプライヤは、前記制御モジュールの前記機能ブロックのうちの前記少なくとも１つについての、相対的な実行レートを指示し、及び、
前記ルーチンは、前記プロセッサ上で実行される場合、前記インジケータを使用して、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記１つが、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記別の１つよりも速いレートで実行されるようにスケジュールする、
請求項６に記載のシステム。
【請求項８】
前記制御モジュールの前記機能ブロックが前記入出力装置に割り当てられることが可能かどうかを示す、前記制御モジュールに関連付けられたユーザ設定可能なプロパティをさらに含み、及び、
前記ルーチンは、前記プロセッサ上で実行される場合、前記制御モジュールの前記ユーザ設定可能なプロパティが、前記制御モジュールの機能ブロックは前記入出力装置に割り当てられるべきではないということを指示するならば、たとえ、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるとしても、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックを、前記プロセスコントローラ内で実行されるように割り当てる、
請求項７に記載のシステム。
【請求項９】
任意の制御モジュールの機能ブロックが前記入出力装置に割り当てられることが可能かどうかを示す、前記入出力装置に関連付けられたユーザ設定可能なプロパティをさらに含み、及び、
前記ルーチンは、前記プロセッサ上で実行される場合、前記入出力装置の前記ユーザ設定可能なプロパティが、機能ブロックは前記入出力装置に割り当てられるべきではないということを指示するならば、たとえ、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるとしても、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックを、前記プロセスコントローラ内で実行されるように割り当てる、
請求項７に記載のシステム。
【請求項１０】
前記ルーチンは、前記プロセッサ上で実行される場合、前記入出力装置が、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックのそれぞれをサポートするかどうかを調べて判定し、
前記入出力装置が、前記１つ以上の中間機能ブロックのうちのいずれか１つでもサポートしないならば、たとえ、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるとしても、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックのそれぞれを、前記プロセスコントローラ内で実行されるように割り当てる、
請求項７に記載のシステム。
【請求項１１】
前記ルーチンは、前記プロセッサ上で実行される場合、前記入出力装置が、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックのうちのすべてを実行するための十分な容量を有するかどうかを調べて判定し、
前記入出力装置が、前記１つ以上の中間機能ブロックのうちのすべてを実行するための十分な容量を有さないならば、たとえ、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるとしても、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックを、前記プロセスコントローラ内で実行されるように割り当てる、
請求項７に記載のシステム。
【請求項１２】
前記ルーチンは、前記プロセッサ上で実行される場合、前記ルーチンが、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックを、前記入出力装置内で実行されるように割り当てないならば、ユーザに通知する、
請求項１１に記載のシステム。
【請求項１３】
制御モジュールの機能ブロックを、プロセス制御ネットワーク内での実行のために装置に割り当てる方法であって、前記プロセス制御ネットワークは、１つ以上のフィールド装置にデータバスを介して接続された入出力装置に通信可能に結合されたプロセスコントローラを有し、前記方法は、
前記制御モジュールのフォワードフロー経路上に配置された機能ブロックの組を決定することであって、機能ブロックの前記組は、入力機能ブロックと、出力機能ブロックと、１つ以上の中間機能ブロックとを含む、ことと、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとのそれぞれが、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるかどうかを判定することと、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるならば、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックのうちの少なくとも１つを、前記入出力装置内で実行されるように割り当て、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行するように割り当てられていないならば、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックの少なくとも１つを前記コントローラ内で実行するように割り当てることとを含む、方法。
【請求項１４】
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとのうちの１つ以上が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられないならば、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックのそれぞれを、前記プロセスコントローラ内で実行されるように割り当てることをさらに含む、
請求項１３に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項１５】
前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックのうちの少なくとも１つを、前記入出力装置内で実行されるように割り当てることは、前記制御モジュールの前記フォワードフロー経路上の、前記１つ以上の中間機能ブロックのうちのそれぞれを、前記入出力装置内で実行されるように割り当てることを含む、
請求項１３に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項１６】
事前に確立される通信スケジュールに従って、前記データバスを介して通信が行われ、及び、
前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックのうちの前記少なくとも１つとのそれぞれを、前記事前に確立される通信スケジュール内で同期して動作するようにスケジュールすることをさらに含む、
請求項１５に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項１７】
前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックのうちの前記少なくとも１つとのそれぞれをスケジュールすることは、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの１つが、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの別の１つよりも速いレートで実行されるようにスケジュールすることを含む、
請求項１６に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項１８】
前記事前に確立される通信スケジュールのためのマクロサイクルを作成することであって、前記マクロサイクルの中では、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記１つが、前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの前記別の１つよりも多くの回数、前記マクロサイクルの間に動作するようにスケジュールされる、ことをさらに含む、
請求項１７に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項１９】
前記入力機能ブロックと前記出力機能ブロックと前記１つ以上の中間機能ブロックとのうちの１つ以上のための、マルチプライヤをユーザが指定することを可能にすることであって、前記マルチプライヤは、関連する機能ブロックについての相対的な実行レートを指示する、ことをさらに含む、
請求項１８に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項２０】
前記入出力装置が、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックのうちの前記少なくとも１つを実行するための十分な容量を有するかどうかを調べて判定することと、
前記入出力装置が、前記１つ以上の中間機能ブロックのうちの前記少なくとも１つを実行するための十分な容量を有さないならば、たとえ、前記制御モジュールの前記フォワードフロー経路上の前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールド装置内で実行されるように割り当てられるとしても、前記制御モジュールの前記フォワードフロー経路上の前記１つ以上の中間機能ブロックのうちの前記少なくとも１つを、前記プロセスコントローラ内で実行されるように割り当てることとをさらに含む、
請求項１３に記載の、制御モジュールの機能ブロックを割り当てる方法。
【請求項２１】
ユーザインタフェース装置と、
第１の通信ネットワークを介して前記ユーザインタフェース装置に通信可能に結合された、プロセスコントローラと、
データバスと、前記データバスに通信可能に接続された１つ以上のフィールドバスフィールド装置とを含む、フィールドバスセグメントであって、前記１つ以上のフィールドバスフィールド装置は、事前に確立される通信スケジュールを使用して、前記データバスを介して通信する、フィールドバスセグメントと、
前記データバスに直接接続され、そして、前記プロセスコントローラと前記データバスとの間に通信可能に接続された、入出力装置と、
プロセス制御ループを実行するために一緒に動作する複数の通信可能にリンクされた機能ブロックを有する、制御モジュールであって、前記複数の通信可能にリンクされた機能ブロックは、入力機能ブロックと出力機能ブロックと少なくとも１つの中間機能ブロックとを含み、前記入力機能ブロックと前記出力機能ブロックとは前記１つ以上のフィールドバスフィールド装置内に配置され、前記少なくとも１つの中間機能ブロックは前記入出力装置内に配置され、及び、前記入力機能ブロックと前記出力機能ブロックと前記少なくとも１つの中間機能ブロックとのそれぞれは、前記事前に確立される通信スケジュールを使用して前記データバスを介して通信する、制御モジュールとを具備する、
プロセス制御ネットワークであって、
プロセッサと、コンピュータ読み取り可能メモリと、前記コンピュータ読み取り可能メモリ内に記憶されたルーチンとをさらに含み、前記ルーチンは、前記制御モジュールの前記機能ブロックを、前記プロセス制御ネットワーク内の特定の装置内での実行のために、自動的に割り当てるために、前記プロセッサ上で実行され、
前記ルーチンは、
前記制御モジュールのフォワードフロー経路上に配置された機能ブロックの組であって、前記入力機能ブロックと前記出力機能ブロックと前記少なくとも１つの中間機能ブロックとを含む、機能ブロックの組を決定し、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとのそれぞれが、前記データバス上の前記１つ以上のフィールドバスフィールド装置内で実行されるように割り当てられるかどうかを判定し、及び、
前記制御モジュールの前記フォワードフロー経路上の、前記入力機能ブロックと前記出力機能ブロックとの両方が、前記データバス上の前記１つ以上のフィールドバスフィールド装置内で実行されるように割り当てられるならば、前記制御モジュールの前記フォワードフロー経路上の、前記少なくとも１つの中間機能ブロックを、前記入出力装置内で実行されるように割り当て、第２の制御モジュールのフォワードフロー経路上の入力機能ブロックと出力機能ブロックの１つ以上が、前記データバス上の前記１つ以上のフィールド装置内で実行するように割り当てられていないならば、前記第２の制御モジュールの前記フォワードフロー経路上の、少なくとも１つの中間機能ブロックを前記プロセスコントローラ内で実行するように割り当てる、
プロセス制御ネットワーク。
【請求項２２】
前記ルーチンは、前記プロセッサ上で実行される場合、前記入力機能ブロックと前記出力機能ブロックと前記少なくとも１つの中間機能ブロックとのうちの１つが、前記入力機能ブロックと前記出力機能ブロックと前記少なくとも１つの中間機能ブロックとのうちの別の１つよりも速いレートで、前記データバス上で実行されるようにスケジュールする、
請求項２１に記載のプロセス制御ネットワーク。
【請求項２３】
前記制御モジュールの前記機能ブロックが前記入出力装置に割り当てられることが可能かどうかを示す、前記制御モジュールに関連付けられたユーザ設定可能なプロパティをさらに含む、
請求項２２に記載のプロセス制御ネットワーク。
【請求項２４】
任意の制御モジュールの機能ブロックが前記入出力装置に割り当てられることが可能かどうかを示す、前記入出力装置に関連付けられたユーザ設定可能なプロパティをさらに含む、
請求項２２に記載のプロセス制御ネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００６年９月２９日に出願された、「プロセス制御システムにおける機能を実行するためのスケジュールを生成する方法および装置（Ｍｅｔｈｏｄｓ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ｇｅｎｅｒａｔｅ  Ｓｃｈｅｄｕｌｅｓ  ｔｏ  Ｅｘｅｃｕｔｅ  Ｆｕｎｃｔｉｏｎｓ  ｉｎ  ａ  Ｐｒｏｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）」と題された、米国特許出願第１１／５３７，３０３号の一部継続出願であり、かつ、当該出願の優先権を主張するものである。当該出願の全開示内容は、参照により本明細書に明示的に援用される。
【０００２】
本発明は、一般に、プロセス制御システムに関し、より詳細には、制御モジュールのさまざまな機能ブロックをフィールドバス（Ｆｉｅｌｄｂｕｓ）セグメント上の入出力カードに割り当てるシステムであって、制御モジュールの機能ブロックをフィールドバスセグメント内で同期式に実行するためのスケジュールを生成する、システムに関する。
【背景技術】
【０００３】
化学プロセス、石油プロセス、またはその他のプロセスにおいて使用されるもののような、プロセス制御システムは、一般に、アナログバス、デジタルバス、またはアナログ／デジタルを組み合わせたバスを介して、少なくとも１つのホストまたはオペレータワークステーションに、および、１つ以上のフィールド装置に通信可能に結合された、１つ以上の集中型プロセスコントローラを含む。バルブ、バルブポジショナ、スイッチ、トランスミッタ（例えば、温度センサ、圧力センサ、および流量センサ）などであってもよい、フィールド装置は、バブルの開閉、およびプロセスパラメータの測定などの、プロセス内の機能を実行する。プロセスコントローラは、フィールド装置によって作成されたプロセス測定値を表す信号、および／またはフィールド装置に関連するその他の情報を表す信号を受信し、この情報を使用して制御ルーチンまたは制御モジュールを実施し、そして、次に、プロセスの動作を制御するためにバスまたはその他の通信線を介してフィールド装置に送信される、制御信号を生成する。プロセスの現在の状態を表示すること、プロセスの動作を変更することなどの、プロセスに関する所望の機能をオペレータが実行することを可能にするために、フィールド装置およびコントローラからの情報は、オペレータワークステーションによって実行される１つ以上のアプリケーションで利用できるようにされる場合がある。
【０００４】
プロセス制御システムアプリケーションは、一般に、プロセス制御システム内のさまざまな機能または動作を実行するために構成されることが可能な、プロセス制御ルーチンを含む。例えば、プロセス制御ルーチンは、バルブ、モータ、ボイラ、ヒータなどを制御するために使用される場合がある。プロセス制御ルーチンは、さらに、フィールド装置、プラントエリアなどを監視するため、および、プロセス制御システムに関連付けられた情報を収集するために使用される場合がある。プロセス制御ルーチンを実施するために使用されるフィールド装置は、通常、データバスを介して、相互に、およびプロセスコントローラに結合される。しかし、それらのデータバスには、フィールド装置およびプロセスコントローラが相互に情報を通信するために利用可能な帯域幅の制限をはじめとする、資源の制限がある。場合によっては、すべてのフィールド装置とコントローラとが、それらのそれぞれの機能を実行し、そしてそれらの間で情報を通信するための、十分な時間をデータバス上で得られることを確実にするために、コントローラとフィールド装置とが、いつ、それらのそれぞれの機能を実行し、そしてデータバス上で通信すべきかを示す、スケジュールが生成される。
【０００５】
プロセス制御システムの技術分野において周知の、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）（ＦＦ）通信プロトコルおよび仕様は、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）（ＦＦ）機能ブロックとして一般に知られている機能ブロックが、制御ループを実施するために、バルブ、トランスミッタなどのさまざまなフィールド装置内に配置され、そして通信リンクまたはバスを介して相互に通信することを可能にする、全デジタルの通信プロトコルである。特定の制御ループまたは機能を実施する、相互接続された機能ブロックの組は、一般に、プロセス制御モジュールと呼ばれ、そして、そのようなプロセス制御モジュールは、フィールドバスセグメントとも呼ばれるフィールドバス通信バスに接続された、さまざまな異なる装置内に配置される、機能ブロックを有する場合がある。一般に知られているように、特定のフィールドバスセグメント上の通信は、一般にオペレータまたは構成エンジニアによって、フィールドバスセグメントのセットアップ時または構成時に、セグメントのために生成される、通信スケジュールによって決定される。一般的に言えば、特定のフィールドバスセグメントのための通信スケジュールは、一組の繰り返されるマクロサイクルのそれぞれの間に、フィールドバスセグメントのバスを介して行われる、同期通信のそれぞれを定義する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６,７３８,３８８号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、モジュールを構成する機能ブロックのすべて、または少なくともいくつかを、フィールドバスセグメントに接続されたＦＦフィールド装置内に配置することによって、そして、制御ループを実行するために、それらのブロックが正確にスケジュールされた方法で通信可能に相互作用することを可能にすることによって、特定の制御モジュールをＦＦプロトコルの機能を使用して分散して動作するように構成することが知られている。残念なことに、多くの場合、特定の制御モジュールを構成する機能ブロックのすべてが、フィールドバスセグメントに接続された実際のフィールド装置内で実行されることが可能とは限らず、その理由は、機能ブロックの多くがフィールドバスセグメントに接続された特定のフィールド装置によって単にサポートされていなかったためである。これらの場合、機能ブロックのいくつか（通常は、制御計算（例えば、比例、積分、および微分（ＰＩＤ）制御ルーチン）を実施する制御機能ブロック）を、入出力装置を介してフィールドバスセグメントに接続されたコントローラ内に配置することが必要であったか、または標準的に実施されていた。ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）は、多数のそのような入出力装置を定義およびサポートし、それらのうちで最も一般的なものは、Ｈ１カードまたはＨ１装置と呼ばれる。
【０００８】
しかし、特定の制御モジュールの機能ブロックが、コントローラ内に配置されて実行される場合、この機能ブロックは、フィールドバスセグメントに接続されたＦＦフィールド装置内に配置された機能ブロックの実行および動作に対して非同期に実行され、その理由は、コントローラは、フィールドバスセグメントに直接には接続されず、したがってフィールドバスセグメントの通信スケジュールに直接には参加しないからである。結果として、この場合、制御モジュール自体の全体的な実行レートは、フィールドバスセグメント内で全体が動作する制御モジュールに比較して遅くなり、これは、（制御モジュールの機能ブロックのうちの１つを実行している）コントローラと（制御モジュールの機能ブロックのうちのその他のものを実行している）ＦＦフィールド装置との間の信号の受け渡しを確実なものにするために、コントローラとフィールドバスセグメント上のフィールド装置との間の通信が、入出力装置によってフィールドバスセグメントスケジュールの外部で管理されなければならないという事実による。したがって、残念なことに、ＦＦフィールド装置とコントローラとの両方の中に配置された機能ブロックを有する制御モジュールは、フィールドバスセグメントスケジュールによって定義される１つのマクロサイクル内で実行することは一般に不可能であり、その代わりに、コントローラとＦＦフィールド装置との間の入出力装置を介した適切な通信を可能にするために、フィールドバスセグメントスケジュールの一連のマクロサイクルにわたって動作する必要がある。
【０００９】
したがって、現在のところ、制御ループを実施するために必要とされる機能ブロックのいくつかまたはすべては、顧客が購入してプロセス制御システム内にインストールした実際のＦＦフィールド装置の識別情報に基づいて、フィールドバス装置に割り当てられる場合がある。しかし、特定の制御ループ（または制御モジュール）を実施するために必要とされるブロックのうちの１つ以上が、フィールドバス装置に割り当てられない場合、それらのブロックは、フィールドバスセグメント上にはない、コントローラ内で実行される。このようにブロックを分割することは、制御ループ内に大幅な遅延を導入し、なぜなら、コントローラ内のブロックの実行は、フィールドバスセグメント上のブロックの実行と同期されないからである。
【課題を解決するための手段】
【００１０】
ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバスプロトコルを実施するものなどの、通信ネットワークの入出力（Ｉ／Ｏ）装置が、（例えば、そのＩ／Ｏ装置に接続されたフィールドバスセグメント上の）フィールド装置によってはサポートされない機能ブロックの実行をサポートするように構成される。この機能の結果として、ＦＦ  Ｈ１カードであってもよいＩ／Ｏ装置は、従来はプロセスコントローラ内で実行されなければならなかった制御ブロックまたはその他の機能ブロックを実行することが可能になる。Ｉ／Ｏ装置の、この追加機能は、Ｉ／Ｏ装置に割り当てられた機能ブロックが、バルブ、またはトランスミッタ装置などの、従来のフィールドバスフィールド装置には割り当てられていないとはいえ、フィールドバスセグメントの通信スケジュール内に同期式に参加することを可能にする。
【００１１】
さらに、装置または方法は、特定の制御モジュールのクリティカルな機能ブロックのすべてが、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバスフィールド装置に、または、特定のフィールドバスセグメントに関連付けられたＩ／Ｏ装置に、割り当てられることが可能かどうかを判定することによって、フィールドバスセグメント上での同期実行のために制御モジュールを自動的に構成する。割り当てられることが可能である場合、装置または方法は、さもなければコントローラ内で実行されるようにスケジュールされるであろう、制御モジュールの機能ブロックを、フィールドバスセグメントのためのＩ／Ｏ装置に、自動的に割り当てる。この技術は、それにより、制御モジュール内の機能ブロックのすべて（あるいは、少なくとも、制御モジュール内のクリティカルな、または必要な機能ブロックのすべて）が、フィールドバスセグメントの１マクロサイクル内で実行され、それにより、フィールドバスセグメント上で同期して実行されることを可能にする。この動作は、さらに、制御モジュールの全体的な実行レートを増加させる。言い換えると、開示された装置および方法は、例えば制御機能ブロックを含む、制御モジュールの機能ブロックが、フィールドバスセグメントの１つのスケジュールされたマクロサイクル内で、実行され、かつフィールドバスセグメント上で相互に通信することを可能にし、それにより、コントローラと、フィールドバスセグメント上のフィールド装置との間で分割された機能ブロックを有する制御モジュールよりも速い、制御モジュールの動作を可能にする。
【００１２】
開示された装置および方法は、さらに、１つ以上の制御モジュールの機能ブロックが、Ｉ／Ｏ装置を含む、フィールドバスセグメント上のさまざまな装置に割り当てられる方法に基づいて、フィールドバスセグメントのための通信および実行スケジュールを自動的に生成してもよい。このスケジュールは、フィールドバスセグメント上で動作するさまざまな異なる制御モジュールからの機能ブロックを含んでもよく、そして、さまざまな走査または実行レートを有する、同じ、または異なる制御モジュールからの機能ブロックを含んでもよい。
【発明の効果】
【００１３】
フィールドバスセグメント上の装置への機能ブロックの自動割り当てと、フィールドバスセグメント上の通信および実行スケジュールの自動生成とは、オペレータまたは構成エンジニアが、機能ブロックをどこに割り当てるべきかについて、またはフィールドバスセグメントを構成する際に使用すべき最良のスケジュールについて、心配する必要なしに、特定のフィールドバスセグメント上で実行される制御ループ（制御モジュール）を単に指定することを可能にする。この動作は、それにより、プロセス制御システム資産のより容易かつより最適な使用を可能にし、一方でそれと同時に、特定の制御モジュールに関連付けられた機能ブロックのうちのなるべく多くを、フィールドバスセグメント上のＩ／Ｏ装置内に配置することによって、可能な場合にはより高速に実行されるように、制御モジュールを構成することを可能にする。
【図面の簡単な説明】
【００１４】
【図１】フィールドバスＩ／Ｏ装置を介してフィールドバスセグメントに通信可能に結合された分散型プロセスコントローラを含む、分散型プロセス制御ネットワークのブロック図である。
【図２】フィールドバスセグメント上での、制御モジュールの機能ブロックの同期した動作を可能にするために、制御モジュールの機能ブロックが、特定のフィールドバスセグメント上のフィールド装置およびＩ／Ｏ装置に割り当てられる方法を示すブロック図である。
【図３Ａ】制御モジュールの機能ブロックを、フィールドバスセグメント上のフィールドバスＩ／Ｏ装置に割り当てるか、またはコントローラ装置に割り当てるかを決定する、例示的な機能ブロック割り当てルーチンの動作を示すフローチャートである。
【図３Ｂ】制御モジュールの機能ブロックを、フィールドバスセグメント上のフィールドバスＩ／Ｏ装置に割り当てるか、またはコントローラ装置に割り当てるかを決定する、例示的な機能ブロック割り当てルーチンの動作を示すフローチャートである。
【図４】機能ブロックを割り当てる開示された方法に従って、１つ以上の制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置には割り当てられず、しかし、その代わりに、コントローラに割り当てられる、従来の制御モジュールを示すブロック図である。
【図５】機能ブロックを割り当てる開示された方法に従って、１つ以上の制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置には割り当てられず、しかし、その代わりに、コントローラに割り当てられる、従来の制御モジュールを示すブロック図である。
【図６】機能ブロックを割り当てる開示された方法に従って、制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置に割り当てられる、従来の制御モジュールを示すブロック図である。
【図７】機能ブロックを割り当てる開示された方法に従って、複数の制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置に割り当てられる、制御モジュールを示すブロック図である。
【図８】機能ブロックを割り当てる開示された方法に従って、制御機能ブロックおよび入力／出力機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置には割り当てられず、しかし、その代わりに、コントローラに割り当てられる、制御モジュールを示すブロック図である。
【図９】機能ブロックを割り当てる開示された方法に従って、複数の制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置に割り当てられる、制御モジュールを示すブロック図である。
【図１０】機能ブロックを割り当てる開示された方法に従って、制御モジュールの複数の制御機能ブロックが、フィールドバスセグメント上のＩ／Ｏ装置に割り当てられる、制御モジュールを示すブロック図であり、ここで、いくつかの機能ブロックは、フィールドバスセグメント上のその他の機能ブロックよりも速いレートで実行される。
【図１１】図１０の制御モジュールの複数の機能ブロックの動作を示す、フィールドバスセグメントのためのマクロサイクルの図であり、ここで、いくつかの機能ブロックは、フィールドバスセグメント上で、その他の機能ブロックよりも速いレートで動作する、または実行される。
【図１２】フィールドバスセグメント上で動作している複数の異なる制御モジュールに関連付けられた機能ブロックの動作を示す、フィールドバスセグメントのためのマクロサイクルの図であり、ここで、いくつかの機能ブロックは、その他の機能ブロックとは異なるレートで実行される。
【図１３】フィールドバスセグメントに結合されたコントローラを有する、別の例示的なプロセス制御システムを示すブロック図である。
【図１４】図１３の例示的なプロセス制御システム内でプロセス制御ルーチンを実施するために使用される機能ブロック、および機能ブロックの間の相互接続の、グラフィカルユーザインタフェース（ＧＵＩ）表示を示す。
【図１５】図１３のプロセス制御システムの、異なるフィールド装置に関連付けられた機能ブロックを、通信バスを介して結合する、例示的な機能ブロック結合構成である。
【図１６】２つの連続した５００ミリ秒ループの実行中における、図１３および図１４の機能ブロックのうちのいくつかの、実行の間のタイミング関係を示す、例示的な実行シーケンス図である。
【図１７】２つの連続した２０００ミリ秒ループの実行中における、図１３および図１４の機能ブロックのうちのいくつかの、実行の間のタイミング関係を示す、別の例示的な実行シーケンス図である。
【図１８】異なるブロック走査レートを有し、かつ、図１３の例示的なプロセス制御システムの同じ通信バスに通信可能に結合されたフィールド装置に割り当てられた、機能ブロックを実行するための方法に従って実施される、例示的な実行シーケンス図である。
【図１９】機能ブロックが、それらのブロック走査レートと、それぞれのループ実行周期とを使用して実行されることを可能にする、本明細書に記載された例示的な方法および装置に従って実施される、例示的な実行シーケンス図である
【図２０】機能ブロックのブロック未加工実行周期を切り上げるために使用されてもよい、例示的な丸めテーブルである。
【図２１】図１３および図１４の機能ブロックによって、それぞれのサブスケジュールの間の実行のために必要とされる、開始時間オフセットの数量を示す、例示的な、開始時間オフセットの数量テーブル９００である。
【図２２】複数のフィールド装置がプロセス制御システムの通信バスに通信可能に結合され、それぞれの機能ブロックを実行するように構成された、別の例示的な機能ブロック構成を示す。
【図２３】図２２の例示的な機能ブロック構成の、それぞれの機能ブロックについて必要とされる、開始時間の数量を示す、別の例示的な、開始時間オフセットの数量テーブルを示す。
【図２４】本明細書に記載された例示的な方法および装置を使用して生成される、図２２の機能ブロックに関連付けられたスケジュールを示す、別の例示的な実行シーケンス図である。
【図２５】図１３のフィールド装置と、図１３の機能ブロックと、機能ブロックに対応する開始時間オフセットとを表すオブジェクトの間の関係を示す、例示的なオブジェクト指向ソフトウェア実行環境である。
【図２６】図２２のフィールド装置と、図２２の機能ブロックと、機能ブロックに対応する開始時間オフセットとを表すオブジェクトの間の関係を示す、別の例示的なオブジェクト指向ソフトウェア実行環境である。
【図２７】図２２の機能ブロックに関連付けられた、図２６の開始リストが、ワークステーションから、図２２の対応するフィールド装置にコピーされる、例示的な方法を示す。
【図２８】本明細書に記載された例示的な方法および装置を使用して、図１９および図２４のスケジュールを生成するように構成された、複数のクラスを有する、例示的なオブジェクト指向プログラミング環境を示す。
【図２９】本明細書に記載された例示的な方法に従ってスケジュールを生成するために使用されてもよい、例示的な装置の詳細なブロック図である。
【図３０】本明細書に記載されたようにスケジュールを生成するための、図２９の例示的な装置を実施するために使用されてもよい、例示的な方法のフロー図である。
【図３１】機能ブロックによって必要とされる、開始時間オフセットの数量を決定するために、図３０の例示的な方法に関連して実施されてもよい、例示的な方法のフロー図である。
【図３２Ａ】サブスケジュールを生成するため、および生成されたサブスケジュールに基づいてスケジュールを生成するために、図３０の例示的な方法に関連して実施されてもよい、例示的な方法のフロー図である。
【図３２Ｂ】サブスケジュールを生成するため、および生成されたサブスケジュールに基づいてスケジュールを生成するために、図３０の例示的な方法に関連して実施されてもよい、例示的な方法のフロー図である。
【図３３】機能ブロックについての開始時間オフセット値を決定するために、図３２の例示的な方法に関連して実施されてもよい、例示的な方法のフロー図である。
【図３４】図２４のスケジュールの、例示的な機能実行およびデータ転送シーケンス図である。
【図３５】本明細書に記載された例示的なシステムおよび方法を実施するために使用されてもよい、例示的なプロセッサシステムのブロック図である。
【発明を実施するための形態】
【００１５】
ここで、図１を参照すると、プロセス制御システム１０は、データヒストリアン１２と、それぞれが表示画面１４を有する１つ以上のホストワークステーションまたはコンピュータ１３（任意のタイプのパーソナルコンピュータ、ワークステーションなどであってもよい）とに通信可能に接続された、プロセスコントローラ１１を含む。コントローラ１１は、さらに、入出力（Ｉ／Ｏ）装置またはカード２６および２８を介して、フィールド装置１５〜２２に接続される。データヒストリアン１２は、データを記憶するための、任意の所望のタイプのメモリと、任意の所望のまたは公知のソフトウェア、ハードウェア、またはファームウェアとを有する、任意の所望のタイプのデータ収集ユニットであってもよく、及び、（図１に示すように）ワークステーション１３とは別個であるか、またはワークステーション１３のうちのいずれかの一部であってもよい。例として、エマーソンプロセスマネジメント（Ｅｍｅｒｓｏｎ  Ｐｒｏｃｅｓｓ  Ｍａｎａｇｅｍｅｎｔ）によって販売されているデルタＶ（ＤｅｌｔａＶ（登録商標））コントローラであってもよい、コントローラ１１は、例えば、イーサネット（登録商標）通信リンクまたは任意のその他の所望の通信ネットワーク２９を介して、ホストコンピュータ１３およびデータヒストリアン１２に通信可能に接続される。通信ネットワーク２９は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、電気通信ネットワーク、インターネット（例えば、ワールドワイドウェブ）などの形態であってもよく、そして、ハードワイヤードおよび／またはワイヤレス技術を使用して実施されてもよい。コントローラ１１は、例えば、標準的な４〜２０ｍＡ装置、および／または任意のスマート通信プロトコル（ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）プロトコル、ハート（ＨＡＲＴ）プロトコル、プロフィバス（Ｐｒｏｆｉｂｕｓ）プロトコル、あるいはプロセス制御業界で使用される任意のその他の周知のまたは標準的な通信プロトコルなど）と関連付けられた、任意の所望のハードウェアおよびソフトウェアを使用して、フィールド装置１５〜２２に通信可能に接続される。
【００１６】
フィールド装置１５〜２２は、センサ、バルブ、トランスミッタ、ポジショナなどの、任意のタイプの装置であってもよく、一方、Ｉ／Ｏカード２６および２８は、任意の所望の通信プロトコルまたはコントローラプロトコルに準拠するか、あるいはそれらのプロトコルをサポートする、任意のタイプのＩ／Ｏ装置であってもよい。図１に示す実施形態では、フィールド装置１５〜１８は、アナログ回線（またはアナログ回線とデジタル回線との組み合わせ）を介してＩ／Ｏカード２６との通信を行う、標準的な４〜２０ｍＡ装置またはハート（ＨＡＲＴ）装置であり、一方、フィールド装置１９〜２２は、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）プロトコル通信を使用して、デジタルバス２８Ａを介してＩ／Ｏカード２８との通信を行う、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）（ＦＦ）装置として示されている。この場合、Ｉ／Ｏカード２８は、ＦＦプロトコルをサポートするフィールドバスポートを有するＨ１カードである。理解されるように、デジタルバス２８Ａと、それに接続されたフィールド装置１９〜２２と、Ｉ／Ｏカード２８とは、フィールドバスセグメントを形成する。もちろん、所望される場合には、Ｉ／Ｏカード２８は、他のフィールドバスセグメント（図示せず）に接続されてもよく、フィールドバスセグメントは、それに接続された、ＦＦプロトコルをサポートする任意の数およびタイプの装置を含んでもよい。あるいは、フィールド装置１５〜２２は、任意のその他の公知のフィールドバスプロトコル、あるいは、現在知られている、または将来開発される可能性がある、任意のその他の通信規格またはプロトコルを含む、任意のその他の所望の規格またはプロトコルに準拠してもよい。
【００１７】
コントローラ１１は、プラント１０内の多数の分散型コントローラのうちの１つであってもよく、それらの分散型コントローラのそれぞれは、通信リンク２９に接続されてもよく、かつ、それらの分散型コントローラのそれぞれは、ＦＦプロトコルをサポートするＩ／Ｏ装置（本明細書では、ＦＦ  Ｉ／Ｏ装置またはフィールドバスＩ／Ｏ装置とも呼ばれる）を介して、１つ以上のフィールドバスセグメントに接続されてもよい。コントローラ１１は、少なくとも１つのプロセッサをその中に含み、工業プロセスプラント内の制御ループを実行する１つ以上のプロセス制御モジュールを、実施または監視するように動作する。制御モジュールは、複数の通信可能に相互接続された機能ブロックを含んでもよく、それらの機能ブロックは、コントローラ１１の中に、および／またはフィールド装置１９〜２２のうちのいくつかの中に、および、以下で述べるようにＩ／Ｏ装置２８の中に記憶されて、それらの中で実行されてもよい。コントローラ１１は、任意の所望の方法でプロセスを制御および監視するために、装置１５〜２２、ホストコンピュータ１３、およびデータヒストリアン１２と通信する。本明細書に記載された任意の制御ルーチンまたは要素は、所望される場合には、さまざまなコントローラまたはその他の装置によって実施または実行される、その部分を有してもよいということに留意すべきである。同様に、プロセス制御システム１０内で実施される、本明細書に記載された制御ルーチンまたは要素は、ソフトウェア、ファームウェア、ハードウェアなどを含む、任意の形態を取ってもよい。モジュールであってもよく、または、サブルーチン、（コード行などの）サブルーチンの部分などの、制御手順の任意の部分であってもよい、制御ルーチンは、ラダーロジック、シーケンシャルファンクションチャート、機能ブロック図、オブジェクト指向プログラミング、あるいは、任意のその他のソフトウェアプログラミング言語または設計パラダイムを使用するなどの、任意の所望のソフトウェア形式で実施されてもよい。同様に、制御ルーチンは、例えば、１つ以上のＥＰＲＯＭ、ＥＥＰＲＯＭ、特定用途向け集積回路（ＡＳＩＣ）、または任意のその他のハードウェアまたはファームウェア要素の中にハードコートされてもよい。さらに、制御ルーチンは、グラフィカル設計ツールまたは任意のその他のタイプのソフトウェア／ハードウェア／ファームウェアプログラミングまたは設計ツールを含む、任意の設計ツールを使用して設計されてもよい。したがって、コントローラ１１は、本明細書に具体的に記載された手法以外の任意の所望の手法で、制御戦略または制御ルーチンを実施するように構成されてもよい。
【００１８】
一実施形態では、コントローラ１１は、プロセス制御モジュールと一般に呼ばれるものを使用する制御戦略（ストラテジー）を実施し、プロセス制御モジュールのそれぞれは、相互接続された機能ブロックの組から構成されてもよい。この場合、各機能ブロックは、全体的な制御モジュールの一部、または全体的な制御モジュール内のオブジェクトであり、プロセス制御システム１０内のプロセス制御ループを実施するために（リンクと呼ばれる通信を介して）他の機能ブロックと協働して動作する。機能ブロックは、一般に、トランスミッタ、センサ、またはその他のプロセスパラメータ測定装置に関連付けられるものなどの、入力機能、あるいは、比例／積分（ＰＩ）、比例／微分（ＰＤ）、比例／積分／微分（ＰＩＤ）、ファジーロジックなどの制御を実行する制御ルーチンに関連付けられるものなどの、制御機能、あるいは、プロセス制御システム１０内の何らかの物理的機能を実行するためにバルブなどの何らかの装置の動作を制御する、出力機能のうちの１つを実行する。もちろん、ハイブリッドおよびその他のタイプの機能ブロックが存在する。機能ブロックは、コントローラ１１内に記憶されて、コントローラ１１によって実行されてもよく、これは、それらの機能ブロックが、標準的な４〜２０ｍＡ装置、ならびに、ハート装置および場合によってはフィールドバス装置などの、何らかのタイプのスマートフィールド装置のために使用される場合、またはそれらの装置に関連付けられる場合に一般的に当てはまる。しかし、場合によっては、それらの機能ブロックは、フィールド装置自体の中に記憶されて、フィールド装置自体によって実行されてもよく、これは、フィールドバス装置の場合に当てはまる可能性がある。制御システムの説明は、本明細書では、オブジェクト指向プログラミングパラダイム使用する機能ブロック制御戦略を用いて提供されているが、制御戦略、あるいは制御ループまたはモジュールは、ラダーロジック、シーケンシャルファンクションチャートなどの、その他の規定を使用して、あるいは、任意のその他の所望のプログラミング言語またはパラダイムを使用して、実施または設計されてもよい。
【００１９】
図１の拡大ブロック３０によって示すように、コントローラ１１は、プロセス制御モジュール３２および３４として図１に示されている複数の単一入力／単一出力制御ループを監視するか、またはそれらの実施に関与してもよく、そして、プロセス制御モジュール３６によって示されている１つ以上のアドバンスト制御ループを実施してもよい。各制御ループを構成する機能ブロックは、一般に、制御モジュールと呼ばれ、それらの機能ブロックは、従来、コントローラ１１内、かつ／または、フィールドバスセグメント２８Ａを使用する場合は、フィールド装置１５〜２２内に記憶されていた。制御モジュール３２および３４は、適切なアナログ入力（ＡＩ）およびアナログ出力（ＡＯ）機能ブロックに接続された、それぞれ、単一入力／単一出力ファジーロジック制御ブロックおよび単一入力／単一出力ＰＩＤ制御ブロックを使用して、単一ループ制御を実行するものとして示されている。ＡＩおよびＡＯ機能ブロックは、バルブなどのプロセス制御装置と関連付けられてもよく、温度トランスミッタおよび圧力トランスミッタなどの測定装置と関連付けられてもよく、または、プロセス制御システム１０内の任意のその他の装置と関連付けられてもよい。アドバンスト制御ループ３６は、多数のＡＩ機能ブロックに通信可能に接続された入力と、多数のＡＯ機能ブロックに通信可能に接続された出力とを有する、アドバンスト制御ブロック３８を含むものとして示されているが、アドバンスト制御ブロック３８の入力および出力は、その他のタイプの入力を受信するため、およびその他のタイプの制御出力を提供するために、任意のその他の所望の機能ブロックまたは制御要素に通信可能に接続されてもよい。所望される場合には、アドバンスト制御ブロック３８は、プロセスまたはプロセスの部分の最適制御を実行するための、モデル予測制御ルーチンをオプティマイザと統合した制御ブロックであってもよい。アドバンスト制御ブロック３８を含む、図１に示す制御モジュールおよび機能ブロックは、従来、コントローラ１１によって実行されていたか、あるいは、ワークステーション１３のうちの１つ、またはさらには、フィールド装置１９〜２２のうちの１つなどの、その他の処理装置内に配置されて、それらの処理装置内で実行されていたということが理解されるであろう。しかし、以下でさらに詳細に述べるように、それらの機能ブロックは、さらに、有利には、フィールドバスセグメントの部分として同期して動作するように、Ｉ／Ｏ装置２８などのＩ／Ｏ装置内に記憶されてもよい。
【００２０】
図１に示すように、ワークステーション１３のうちの１つは、コントローラ１１内の制御モジュール、特に、バス２８Ａによって定義されるフィールドバスセグメントを使用するものを作成、割り当て、ダウンロード、および実施するために使用される制御ブロック割り当ておよびスケジューリングルーチンを含む。制御ブロック割り当ておよびスケジューリングルーチン４０は、ワークステーション１３内のメモリ内に記憶されて、ワークステーション１３内のプロセッサによって実行されてもよいが、所望される場合には、このルーチン（またはその任意の部分）は、それに加えて、または別法として、プロセス制御システム１０内の任意のその他の装置内に記憶されて、その装置によって実行されてもよい。一般的に言えば、ルーチン４０は、作成された制御モジュール内の機能ブロックを、実行のために、プロセスプラント内の特定の装置に割り当てるように動作するルーチン４２を含み、ルーチン４２は、より詳細には、（バス２８Ａによって定義されるセグメントなどの）特定のフィールドバスセグメントのために作成された各制御モジュールの機能ブロックが、セグメント上の装置に、またはセグメントを動作させるコントローラに割り当てられる方法を、自動的に最適化するように動作する。
【００２１】
さらに、所望される場合、ルーチン４０は、ルーチン４２によって、セグメント上のフィールドバスフィールド装置に割り当てられた機能ブロックと、セグメントのためのＩ／Ｏ装置に割り当てられた機能ブロックとに基づいて、フィールドバスセグメントの通信スケジュール（すなわち、マクロサイクル）を自動的に作成または構成する、ルーチン４４を含んでもよい。ルーチン４４は、ルーチン４２によって実行された割り当てに基づいて、特定のフィールドバスセグメントのための通信および実行スケジュールをユーザが最適に生成するのを容易にする。１つの場合には、ルーチン４４は、フィールドバスセグメントためのマクロサイクルまたはスケジュールを、従来技術において一般的に行われているようにこのセグメントに割り当てられたモジュールの最も遅い実行レートに基づいて生成するのではなく、セグメントに割り当てられたモジュールの最も速いモジュール実行レートに基づいて生成してもよい。この場合、ルーチン４４は、インタフェース装置１３を介してユーザによって指定された機能ブロックマルチプライヤが、どのブロック実行がスケジュール内でスキップされるべきかを指示することを可能にしてもよく、これは、フィールドバスセグメント上の帯域幅を節約するのに役立つ。さらに、所望される場合、ルーチン４０は、情報を入力および表示するため、ならびにルーチン４２および４４の性能を指示するために、ユーザがルーチン４２および４４と対話することを可能にする、ルーチン４６を含んでもよい。
【００２２】
上述のように、ＦＦ装置をサポートする公知のコントローラシステムは、ユーザがＦＦ装置を使用することをより容易にするが、特定の制御モジュールの制御経路内の機能ブロックが、コントローラ（例えば、図１のコントローラ１１）と、フィールドバスセグメント上のフィールドバス装置（例えば、図１の装置１９〜２２）との間で分割される場合、制御ループ内に大幅な遅延が導入される可能性がある。さらに、セグメント上のすべてのブロックが同じレートで実行されるという従来技術の要件は、同じフィールドバスセグメント上のＦＦ装置内で複数のループが実施される際に、場合によっては制御性能に影響する可能性があり、なぜなら、場合によっては、異なる制御ループまたは特定の制御ループ内のブロックは、異なるレートで動作するように構成される可能性があるからである。ルーチン４０は、一般に、コントローラ内制御（ｃｏｎｔｒｏｌ  ｉｎ  ｔｈｅ  ｃｏｎｔｒｏｌｌｅｒ）（ＣＩＣ）と比較して、フィールド内制御（Ｃｏｎｔｒｏｌ  ｉｎ  ｔｈｅ  ｆｉｅｌｄ）（ＣＩＦ）を使用するために必要とされる技術的労力を減少させる方法で、そして、ＣＩＣをフィールド装置と組み合わせて使用する場合に制御ループ内に導入される変動および総合遅延を最小にする方法で、フィールドバスセグメントに接続された装置に制御ブロックを割り当てるように動作する。さらに、ルーチン４０は、ＣＩＦのための追加の機能ブロックの選択肢をユーザに提供するように動作してもよく、そして、フィールドバスセグメント上で実施される１つ以上のモジュールの、全体的により速い動作を可能にする、フィールドバスセグメントのためのスケジュールを定義してもよい。
【００２３】
より詳細には、ルーチン４２の機能および動作をサポートするために、フィールドバスセグメントに接続されたＩ／Ｏ装置（すなわち、図１のＩ／Ｏ装置２８）は、従来はコントローラ１１内で実施または実行されてきた機能ブロックのサブセットを実行するように構成される。特に、フィールドバスポートが、Ｉ／Ｏ装置のために指定または作成され、このポートは、フィールドバスセグメントに接続された独立したフィールドバス装置としてモデル化されてもよい。各フィールドバスポートは、したがって、ポート（または、一般にＩ／Ｏ装置）によってサポートされる機能ブロック、開始リストエントリの数その他を指定する、フィールドバス装置リビジョンファイルを含んでもよい。各フィールドバスポートは、プロセス制御システムとの関連で、その他の装置に類似した方法で自動的に生成されてもよい、グローバルシステム装置タグを有してもよい。同様に、フィールドバスポートに関する参照メニューオプションが、そのポートに割り当てられる、参照されるモジュール／ブロックのすべてをリストするために提供されてもよい。しかし、一般的に言えば、フィールドバスポートは、ＦＦフィールド装置では有するのが一般的である、リソースブロックまたはトランスデューサブロックは有さない。一実施形態では、各フィールドバスポートは、最大３２の機能ブロックをサポートすることが可能である。しかし、サポートされるブロックの実際の数およびタイプは、装置内で得られる開始リストエントリの数によって決定される。さらに、各フィールドバスポートは、以下でさらに詳細に説明する、ユーザ設定可能な「自動計算スケジュールマクロサイクル（ａｕｔｏ−ｃａｌｃｕｌａｔｅ  ｓｃｈｅｄｕｌｅ  ｍａｃｒｏｃｙｃｌｅ）」プロパティを有してもよい。
【００２４】
フィールドバスセグメントに接続されたＩ／Ｏ装置がこの追加機能を含む場合、ルーチン４２は、機能ブロックをＩ／Ｏ装置（例えば、図１のＩ／Ｏ装置２８）のフィールドバスポート内で実行されるように割り当てることが可能である。一般的に言えば、ルーチン４２が、制御モジュールの機能ブロックをフィールドバスセグメントのためのＩ／Ｏ装置のフィールドバスポート内で実行されるように割り当てるのは、それらの機能ブロックが、Ｉ／Ｏ装置内でサポートされる機能ブロックのサブセットのメンバーであり、かつ、フィールドバスセグメント上で実行され、またはフィールドバスセグメントを使用する、特定の制御モジュールの、すべてのフィールドバス入力機能ブロックとフィールドバス出力機能ブロックとの間の主要制御経路内にある場合である。このようにして、ルーチン４２は、可能な場合、制御モジュールの主要制御経路内のすべての機能ブロックが、フィールドバスセグメントに接続されている装置のうちの１つにおいて実行されることを確実にし、それにより、それぞれのそのような機能ブロックがフィールドバスセグメント上のマクロサイクルに直接参加する（動作および通信のためにスケジュールされる）ことを可能にする。この割り当て技術は、フィールドバスセグメント内で制御モジュール（すなわち、制御ループ）が実施されるレートを、コントローラ１１と、フィールドバスセグメント上の１つ以上のフィールドバス装置との間で分割された機能ブロックを有するプロセスモジュールが動作するレートに比較して、速める、即ち増加させるように機能する。
【００２５】
ここで、図２を参照すると、制御モジュール５０（モジュール１と称される）は、ＡＯ（アナログ出力）機能ブロック５１と、ＡＩ（アナログ入力）機能ブロック５２と、ＰＩＤ機能ブロック５３とを含むものとして示されている。制御モジュール５０は、例えば、図１のモジュール３４であってもよい。図２の点線で示されているように、ＡＯ機能ブロック５１は、フィールドバスフィールド装置５４内で動作するように（通常は、オペレータまたは構成エンジニアによって）割り当てられ、一方、ＡＩ機能ブロック５２は、別のフィールドバスフィールド装置５５内で動作するように（同様に、通常は、オペレータまたは構成エンジニアによって）割り当てられる。この場合、ＡＯブロック５１は、バルブ５４内で実行されるように割り当てられ、一方、ＡＩブロックは、センサまたはその他の機器５５内で実行されるように割り当てられる。重要なことに、フィールド装置５４および５５は、共通フィールドバスセグメント５６に接続されているか、またはその部分である。
【００２６】
一般に、従来技術のシステムでは、ＰＩＤ機能ブロック５３は、フィールドバス装置５４または５５のいずれによってもサポートされず、したがって、ＰＩＤ機能ブロック５３は、（図１のコントローラ１１であってもよい）コントローラ５７内で実行されるように、オペレータまたは構成エンジニアによって割り当てられる。この従来の実施は、図２の点線５７Ａによって示されている。しかし、より長い点線５９Ａによって図２に示されているように、ルーチン４２はここで、ＰＩＤ機能ブロック５３を、Ｉ／Ｏ装置２８のフィールドバスポート５９内での実行のために、ＦＦプロトコルをサポートするＩ／Ｏ装置５８（図２で、フィールドバスカードとしてラベル付けされている）内での実行のために割り当ててもよい。図２に示すように、フィールドバスポート５９は、フィールドバスセグメント５６に接続され、したがって、フィールドバスセグメント５６の通信スケジュールに直接参加することが可能である。ＰＩＤ機能ブロック５３を、コントローラ５７ではなく、フィールドバスポート５９に割り当てることにより、ブロック５１、５２、および５３のそれぞれは、フィールドバスセグメント５６上の装置内に配置され、したがって、フィールドバスセグメント５６によって使用されるマクロサイクル内での動作のために、直接スケジュールされることが可能となる。この割り当ての結果として、機能ブロックのうちのいくつか（すなわち、機能ブロック５１および５２）をフィールドバスセグメント５６上で実行させ、かつ、機能ブロックのうちのいくつか（すなわち、機能ブロック５３）をフィールドバスセグメント５６の外部（すなわち、コントローラ５７内）で実行させるということなしに、モジュール５０全体がフィールドバスセグメント５６上で動作するようになる。
【００２７】
所望される場合、機能ブロックがＩ／Ｏ装置のフィールドバスポートに割り当てられる際に、機能ブロックはコントローラ５７内で作成されてもよく、そして、シャドウ機能ブロックという周知の概念を使用して、フィールドバスポート５９内の機能ブロックにリンクされてもよい。特に、コントローラは、コントローラ５７内のシャドウ機能ブロックを使用することによって、Ｉ／Ｏ装置のフィールドバスポートに割り当てられた機能ブロックと通信し、それらの装置に情報を送信すること、およびそれらの装置から情報を取得することが可能である。公知のように、シャドウ機能ブロックは、アルゴリズムを実行しないブロックであり、そして従来は、フィールドバス装置内で実行されるフィールドバスブロックと通信するために、コントローラベースのモジュールによって使用されている。シャドウ機能ブロックの構成および使用の、より完全な説明は、米国特許第６，７３８，３８８号明細書に記載されており、当該特許は参照により本明細書に明示的に援用される。それゆえ、この特徴については、本明細書ではさらに詳細には説明しない。
【００２８】
一般的に言えば、図１のルーチン４２は、図２のフィールドバスポート５９またはコントローラ５７のいずれかに機能ブロックを割り当てて、それにより、可能な最適な方法でこの割り当てを行うことにおける、一定の規則の組を実施してもよい。一実施形態では、ルーチン４２は、特定の制御モジュールのクリティカルフロー経路内のすべての機能ブロックが、特定のフィールドバスセグメントに接続された装置内で実行されることが可能かどうかを判定し、可能である場合、フィールドバスセグメント上のフィールド装置には割り当てることができない機能ブロックを、そのセグメント上のＩ／Ｏ装置のフィールドバスポートに割り当てる。可能ではない場合、ルーチン４２は、フィールドバスセグメント上のフィールド装置によってサポートされない機能ブロックを、セグメントに関連付けられたコントローラに割り当てる。このようにして、ルーチン４２は、Ｉ／Ｏ装置内への機能ブロックの割り当てを、制御モジュール全体がフィールドバスセグメント上で実行可能であることを保証するために必要な割り当てに制限し、それにより、Ｉ／Ｏ装置の、特にＩ／Ｏ装置のフィールドバスポートのリソースを節約する。
【００２９】
特定のモジュールがフィールドバスセグメント上のＩ／Ｏ装置に自動的に割り当てられるべきかどうかを、ユーザまたは構成エンジニアが指定することを可能にするために、「自動計算スケジュールマクロサイクル」と称されるユーザ設定可能なプロパティが、フィールドバスポートに追加されてもよい。ルーチン４２がこのプロパティが設定されていると判定した場合、ルーチン４２は、Ｉ／Ｏ装置のフィールドバスポートを使用して、フィールドバスセグメント上での実行のために、モジュールをスケジュールすることを試みる。さらに、ユーザは、ルーチン４２が、特定のモジュールの機能ブロックを、フィールドバスセグメントのためのＩ／Ｏ装置のフィールドバスポートに割り当てようと試みるべきかどうかをモジュールごとに指定してもよい。特に、各制御モジュールは、例えば、「フィールドバスポートへの機能ブロックの自動割り当て（ａｕｔｏ−ａｓｓｉｇｎ  ｆｕｎｃｔｉｏｎ  ｂｌｏｃｋｓ  ｔｏ  Ｆｉｅｌｄｂｕｓ  ｐｏｒｔ）」と称される、ユーザ設定可能なプロパティを有してもよく、このプロパティは、設定されている場合、モジュールの機能ブロックが、フィールドバスセグメントのためのＩ／Ｏ装置のフィールドバスポートに割り当てられることを可能にする。本明細書では「自動割り当て（ａｕｔｏ−ａｓｓｉｇｎ）」プロパティとも呼ばれる、このプロパティは、機能ブロックレベルではなく、モジュールレベルで有効にされ、その理由は、ルーチン４２は、機能ブロックを実行のためにフィールドバスＩ／Ｏ装置に割り当てようと試みるどうかを、機能ブロックごとではなくモジュールごとに判定するからである。したがって、一般的に言えば、自動割り当てプロパティはモジュールごとにオンおよびオフにされるべきであり、このプロパティは制御モジュールの最高レベルにおいてのみ適用されるべきである。
【００３０】
一実施形態では、フィールドバスプロトコルをサポートするＩ／Ｏ装置（フィールドバスＩ／Ｏ装置とも呼ばれる）のフィールドバスポートに機能ブロックを割り当てる場合、ルーチン４２は、制御モジュールのクリティカルフロー経路内のすべての入力および出力機能ブロックが、共通フィールドバスセグメント上のフィールド装置に割り当てられるようにスケジュールされるかどうかを判定する。そうである場合、ルーチン４２は、それらのブロックが、フィールドバスセグメント上のフィールド装置には割り当てられないことを前提として、かつ、この割り当てを可能にするための十分なリソースがまだ存在していることを前提として、（入力機能ブロックと出力機能ブロックとの間に配置された）制御モジュールのクリティカルフロー経路内のその他の機能ブロックを、フィールドバスセグメント上のＩ／Ｏ装置のフィールドバスポートに割り当てる。例えば、フィールドバスＩ／Ｏ装置のフィールドバスポートが、制御モジュール内で使用される特定のタイプの制御機能ブロックをサポートしない場合、または、フィールドバスポートに、モジュールの機能ブロックのうちの１つを割り当てるための十分なリソースさえも残されていない場合、そのモジュールの機能ブロックのうちのいずれもＩ／Ｏ装置のフィールドバスポートに割り当てられない。他方、制御モジュールのクリティカルフロー経路内の入力または出力機能ブロックのうちの１つ以上が、セグメント上のフィールド装置内で実行されるようにスケジュールされない場合、ルーチン４２は、そのモジュールの制御機能ブロックおよびその他の機能ブロックを、Ｉ／Ｏ装置のフィールドバスポートにではなくコントローラに割り当てる。
【００３１】
したがって、一般的に言えば、制御モジュールの機能ブロックが、フィールドバスＩ／Ｏ装置のフィールドバスポートに割り当てられるのは、（１）モジュールのクリティカルフロー経路内のすべての入力および出力ブロックが、共通フィールドバスセグメント上の装置およびアクチュエータに割り当てられ、かつ、（２）入力ブロックと出力ブロックとの間のすべての機能ブロックが、フィールドバスポートに割り当て可能である（フィールドバスポートによってサポートされる）場合である。言い換えると、それらのブロックが、次の条件で、セグメントのためのフィールドバスポートに自動的に割り当てられることにより、モジュールのクリティカルフロー経路内にある機能ブロックは、セグメント上で実行されるように自動的に割り当てられる。（１）モジュールについての自動割り当てプロパティが有効にされている、（２）セグメント上の装置および／またはアクチュエータに割り当てられる、モジュールの、少なくとも１つの入力ブロックと少なくとも１つの出力ブロックとが存在する、（３）同期の破れがない（例えば、入力機能ブロックと出力機能ブロックとの間の、クリティカルフロー経路内の各機能ブロックが、フィールドバスポートに割り当てられることが可能である）、かつ（４）フィールドバスＩ／Ｏ装置のフィールドバスポートについて、「自動計算スケジュールマクロサイクル」プロパティがセットされている。
【００３２】
ここで、一実施形態では、制御ループ（制御モジュール）を通したフォワード経路（１つまたは複数）のみが、クリティカルフロー経路の部分であるとみなされ、フィードバック経路はいずれも、クリティカルフロー経路の部分であるとはみなされない、ということに留意すべきである。さらに、フィールドバスポートへのブロックの自動割り当ては、制御経路内のＩ／Ｏブロックが、同じフィールドバスセグメントに割り当てられること、および、クリティカルフロー経路内のすべての機能ブロックが、フィールドバスポート内でサポートされることを前提とする。一実施形態では、制御モジュールのためにフィールドバスセグメント上のフィールドバス装置に割り当てられる、少なくとも１つの入力ブロックと少なくとも１つの出力ブロックとが存在する限り、クリティカルフロー経路内にＡＩ、ＡＯ、ＤＩ、またはＤＯブロックが複数存在する場合、それらのうちの１つのみがフィールドバス装置に結合される必要がある。しかし、この場合、フィールドバス装置に割り当てられない入力および出力機能ブロックは、フィールドバスポートには割り当てられず、したがって、それらの機能ブロックは非同期に動作する。ただし、所望される場合、いくつかの実施形態では、入力／出力機能ブロック（例えば、ＡＩ、ＡＯ、ＤＩ、ＤＯ、ＭＡＩ機能ブロック）は、フィールドバスポートに割り当てられてもよく、または、フィールドバスポートには割り当てられないようにされてもよい。他の実施形態では、所望される場合、クリティカルフロー経路内のその他の機能ブロックを、そのセグメントのためのフィールドバスＩ／Ｏ装置のフィールドバスポートに割り当てるために、ルーチン４２は、モジュールのクリティカルフロー経路上のすべての入力および出力機能ブロックが、セグメント上のフィールドバス装置に割り当てられるべきであるとしてもよい。
【００３３】
したがって、一般的に言えば、モジュールの機能ブロックをフィールドバスポートに割り当てる前に、ルーチン４２は、（１）モジュールについての、自動割り当てプロパティが有効にされているかどうか、（２）フィールドバスポート上で、自動計算スケジュールマクロサイクルプロパティが有効にされているかどうか、（３）Ｉ／Ｏカードは、モジュールに関連付けられた機能ブロックをサポートするための十分なリソースを有するかどうか、（４）モジュールのフォワードフロー経路内の、入力機能ブロックと出力機能ブロックとの間のすべての機能ブロックが、フィールドバスカードによってサポートされるかどうか、および（５）フォワードフロー経路内のすべての機能ブロックが同じモジュール内にあるかどうか、を判定してもよい。これらの条件のうちのいずれかが満足されない場合、ルーチン４２は、フィールドバスセグメント上のフィールドバスＩ／Ｏ装置のフィールドバスポートには、モジュールの機能ブロックのうちのいずれも割り当てないことを決定してもよく、しかし、その代わりに、それらの機能ブロックを、フィールドバスセグメントに関連付けられたコントローラに割り当ててもよい。
【００３４】
この技術では、ユーザは一般に、フィールドバスＩ／Ｏカードのフィールドバスポートから個々の機能ブロックを割り当て解除することはできず、その理由は、機能ブロックはモジュールのプロパティに基づいてこのカードに割り当てられるからである。その代わりに、ユーザは、モジュールの自動割り当てプロパティを設定することによって、モジュールを全体として、自動割り当てすることまたは自動割り当て解除することのみが可能である。
【００３５】
所望される場合、制御モジュールの自動割り当てプロパティをユーザがオン／オフした場合、変化を見て結果を明らかにするためにはユーザがモジュールを保存しなければならないことをユーザに通知するために、メッセージがユーザに提供されてもよく、その理由は、ルーチン４２の割り当て動作は、モジュールが保存される際に自動的に発生してもよいからである。さらに、各機能ブロックは、このブロックが自動割り当てのために設定されているかどうかを示す、視覚的プロパティを含むことが望ましい。所望される場合、モジュールの自動割り当てプロパティが自動割り当てであるように設定された場合、フィールドバスポートを有するフィールドバスＩ／Ｏ装置にモジュールの機能ブロックが実際に割り当てられるのを妨げるリソースの制限があるならば、ユーザに警告が発行されてもよい。例えば、フィールドバスＩ／Ｏカードがその限界に達しており、かつ、モジュールが保存される場合、ユーザは、モジュールの機能ブロックは自動割り当てされず、モジュールは自動割り当てプロパティがオフにされて保存されるという警告を受信してもよい。この場合、ブロック自動割り当て機能を動作させるには、ユーザは、他のモジュールの自動割り当てプロパティを解消または設定解除してフィールドバスポート上のいくらかの割り当て空間を空け、モジュールの自動割り当てプロパティをオンにし、次に、モジュールを再保存しなければならない可能性がある。
【００３６】
所望される場合、ルーチン４２は、フィールドバス装置に割り当てられることが可能な、完全なクリティカルフロー経路を有する潜在的なモジュールのすべてと、それらのモジュールが有する自動割り当てプロパティが「オン」にされているか「オフ」されているかとを、例えばデータベース１２内に配置するユーティリティを含んでもよい。このユーティリティは、特定のモジュールについての自動割り当てプロパティをオンまたはオフにすることがリソース空間の作成に役立つ可能性がある場合を、ユーザが理解するのを助けるために使用されてもよい。このユーティリティは、さらに、構成のダウンロードに先立って自動割り当てプロパティを設定することが有利であるモジュールの識別情報を、ユーザが判定するために役立つ場合もある。
【００３７】
図３は、ルーチン４２が、制御モジュールの機能ブロックをフィールドバスＩ／Ｏ装置のフィールドバスポートに、または特定のフィールドバスセグメントに関連付けられたコントローラに自動的に割り当てるために動作する、さらなる例示的な方法を説明するフローチャート６０を示す。ブロック６１において、ルーチン４２は、調べるべきさらなる制御モジュールがあるかどうかを判定し、ない場合は終了する。調べられるべき１つ以上の制御モジュールがまだ残されている場合、ブロック６２で、調べるべき次の制御モジュールを見つける。ブロック６３で、次に、選択された制御モジュールについての自動割り当てプロパティが「オン」に設定されているかどうかを判定し、「オン」に設定されていない場合、制御はブロック６４に与えられ、ブロック６４は、従来技術のシステムにおいて通常行われるように、制御モジュールの未割り当ての制御機能ブロックおよび入力／出力機能ブロックを、コントローラに割り当てるように動作する。しかし、ブロック６３で、選択された制御モジュールの自動割り当てプロパティが「オン」に設定されていると判定した場合は、ブロック６５で、制御モジュールのクリティカルフロー経路を決定する。上述の説明から理解されるように、クリティカルフロー経路は、入力ブロックから出力ブロックまでの、制御モジュールを通したフォワード経路（１つまたは複数）の各構成要素を含む。このクリティカルフロー制御経路はモジュールを通して進み、それぞれの入力ブロックからそれぞれの出力ブロックまでのフォワードフローリンクによって形成される経路上に配置された、それぞれの機能ブロックを識別することによって決定されてもよい。
【００３８】
次に、ブロック６６で、制御モジュールのクリティカルフロー経路上の入力機能ブロックおよび出力機能ブロックのそれぞれが、共通フィールドバスセグメント上のフィールドバスフィールド装置に割り当てられるかどうかを判定する。代替の実施形態では、ブロック６６で、モジュールのそれぞれのクリティカルフロー経路構成要素上の、少なくとも１つの入力機能ブロックおよび少なくとも１つの出力機能ブロックが、共通フィールドバスセグメント上のフィールドバスフィールド装置に割り当てられるかどうかを判定してもよい。入力／出力ブロックが、共通フィールドバスセグメント上のフィールドバスフィールド装置に適切に割り当てられない場合、ルーチン４２は、フィールドバスセグメントへの制御モジュールの完全な同期割り当ては可能ではないと判定し、したがって、そのモジュールのいずれの機能ブロックも、フィールドバスセグメント上のフィールドバスＩ／Ｏ装置のフィールドバスポートには割り当てない。この場合、ルーチン４２はブロック６７に制御を与え、ブロック６７では、フィールドバスＩ／Ｏ装置への制御モジュールの自動割り当ては失敗したことをユーザに通知する。ブロック６４は、次に、未割り当ての制御機能ブロックおよび入力／出力機能ブロックを、（図２のコントローラ５７などの）フィールドバスセグメントに関連付けられたコントローラに割り当て、そして、ブロック６１に制御を戻す。
【００３９】
他方、ブロック６６で、モジュールの入力／出力機能ブロックが共通フィールドバスセグメント上のフィールドバスフィールド装置に適切に割り当てられると判定した場合、次に、ブロック６８で、フィールドバスセグメント上のフィールドバスＩ／Ｏ装置のフィールドバスポートの自動計算（ａｕｔｏ−ｃａｌｃｕｌａｔｅ）プロパティが「オン」（このＩ／Ｏ装置がフィールドバスセグメント上で機能ブロックを動作させる、または実行するように構成されていることを意味する）に設定されているかどうかを判定する。「オン」に設定されていない場合、ブロック６７で、割り当ての失敗をユーザに通知し、そして、制御モジュール内の機能ブロックのコントローラへの従来の割り当てを行うブロック６４に制御を与える。
【００４０】
しかし、ブロック６８でフィールドバスポートの自動計算プロパティがオンであると判定した場合は、ブロック６９で、制御モジュールのクリティカルフロー経路内の未割り当ての機能ブロックのそれぞれをフィールドバスポートがサポートするかどうかを判定する。クリティカルフロー経路内の未割り当ての機能ブロックのうちの１つでもフィールドバスポートによってサポートされない場合、制御はブロック６７および６４に与えられ、ブロック６７および６４では割り当ての失敗をユーザに通知し、そして、未割り当ての機能ブロックのコントローラへの従来の割り当てを実行する。
【００４１】
他方、フィールドバスポートがクリティカルフロー経路内の未割り当ての機能ブロックのそれぞれをサポートする場合、ブロック７０で、制御モジュールのクリティカルフロー経路内の未割り当ての機能ブロックのそれぞれを実行するための十分なリソース（容量）をこのポートが有するかどうかを判定する。有さない場合、制御はブロック６７および６４に与えられ、ブロック６７および６４では、割り当ての失敗をユーザに通知し、そして、未割り当ての機能ブロックのコントローラへの従来の割り当てを実行する。他方、フィールドバスポートが容量を有する場合、ブロック７１で、クリティカルフロー経路内の未割り当ての機能ブロックのそれぞれを、実行のためにフィールドバスＩ／Ｏ装置のフィールドバスポートに割り当てる。この時点で、所望される場合、ブロック７１は、さらに、制御モジュール内の任意の残りの機能ブロック（すなわち、制御モジュールのクリティカルフロー経路内にないもの）がフィールドバスＩ／Ｏ装置のフィールドバスポートに割り当てられることが可能かどうか、または割り当てられるべきかどうかを判定してもよい。場合によっては、それらのブロックのすべてがフィールドバスＩ／Ｏ装置内で動作することが可能ならば、フィールドバスセグメント上で完全に同期した方法で実行される制御モジュールを提供するために、ブロック７１でそれらのブロックをその装置に割り当ててもよい。あるいは、セグメント上で動作するその他の制御モジュールのためにこの装置のリソースを節約するために、ブロック７１は、残りの機能ブロックのいずれもＩ／Ｏ装置に割り当てないように動作してもよい。所望される場合、ブロック７１は、ユーザが選択可能な設定に基づいていずれかの方法で動作してもよい。いずれの場合も、現在の制御モジュールの機能ブロックの割り当てを完了した後は、制御は、その他の制御モジュールの処理のためにブロック６１に戻される。
【００４２】
もちろん、図３のフローチャート６０は単に例示的なものであり、ルーチン４２は、その他の方法で同様に動作してもよい。さらに、所望される場合、フローチャート６０内のブロックのうちの特定のものは順番を並べ変えられてもよい。例えば、ブロック６８、６９、および７０は、ルーチン６０内のより先に、またはより後に配置されてもよく、順番を並べ変えられてもよく、そして、場合によっては制御モジュールのクリティカルフロー経路の決定に先立って実施されてもよい。
【００４３】
別の例では、自動ブロック割り当てのためのアルゴリズムは、以下のように要約される。
【００４４】
【数１】
0005373385.tif 000002
【数２】
0005373385.tif 000003
【００４５】
図４〜図９は、例示的な制御モジュールを示し、そして、ルーチン４２が、上述の原理に基づいてそれらのモジュールの制御機能ブロックをコントローラに、またはフィールドバスセグメントに接続されたフィールドバスＩ／Ｏ装置のフィールドバスポートに割り当てる方法を示す。特に、図４は、ＰＩ機能ブロック７７にリンクされたＡＩ機能ブロック７６を有し、ＰＩ機能ブロック７７はフォワードおよびフィードバック方向の両方でＡＯ機能ブロック７８にリンクされている制御モジュール７５を示す。公知でありかつ一般的であるように、ＡＩ機能ブロック７６は測定信号またはその他の入力信号を取得し、そしてこの信号を示されているリンクを介してＰＩ機能ブロック７７に提供する。ＰＩ機能ブロック７７は、比例／積分制御計算を実行して制御信号を生成する制御機能ブロックであり、その制御信号はＡＯ機能ブロック７８に提供される。ＡＯ機能ブロック７８は、次に、制御信号を使用してバルブを開けること、または閉じること、あるいは、プラント内の物理的装置内の何らかのその他の設定を変更することなどの、プラント内の物理的機能を実行するように動作して制御動作を実行する。ＡＯ機能ブロック７８は、さらに、例えば現在のバルブ位置のフィードバック測定値を、ＰＩ機能ブロック７７による制御信号の作成における使用のためにＰＩ機能ブロック７７に提供する。
【００４６】
図４のモジュール７５は、ＡＩ機能ブロック７６がフィールドバストランスミッタ装置などのフィールドバス測定装置の中で動作するように、またはその中に配置されるようにスケジュールされる従来のフィールドバス測定ループ内にセットアップされる。このスケジューリングは、ＡＩ機能ブロック７６の上の「ＦＦ」によって示されている。しかし、ＡＯ機能ブロック７８は、フィールドバス装置にはまったくスケジュールも割り当てもされないか、あるいは少なくとも、ＡＩ機能ブロック７６と同じフィールドバスセグメント内のフィールドバス装置にはスケジュールも割り当てもされない。結果として、ルーチン４２は、自動割り当てを実行する際に、ＰＩ機能ブロック７７とＡＯ機能ブロック７８との両方をフィールドバスセグメントに関連付けられたコントローラ５７内に配置し、その理由は、モジュール７５のクリティカルフロー経路内のすべての機能ブロックが、フィールドバスセグメント５６上のフィールドバスＩ／Ｏカード５８とＦＦフィールド装置との中に配置されることはできないからである。この割り当て機能は、図４内の矢印によって示されている。
【００４７】
図５に示す制御モジュール７５は、図４に示したものと同じであるが、ただし、従来のフィールドバスアクチュエータループ内にセットアップされる。ここでは、ＡＯ機能ブロック７８は、（このブロックの上の「ＦＦ」によって示されるように）フィールドバスセグメント上のフィールドバス装置（例えば、アクチュエータ）内に配置され、しかし、ＡＩ機能ブロック７６は、ＡＯ機能ブロック７８と同じフィールドバスセグメント上のフィールドバス装置には関連付けられない。ここでもやはり、同じフィールドバスセグメント上のフィールドバス装置に制御モジュール７５のクリティカルフロー経路内の入力ブロックと出力ブロックとの両方は割り当てられないため（この場合は、入力ブロックが割り当てられないため）、ルーチン４２は、ＡＩ機能ブロック７６とＰＩ機能ブロック７７との両方をコントローラ５７に割り当てる。
【００４８】
しかし、図６は、共通フィールドバスセグメント上のフィールドバス装置によって測定およびアクチュエーションの両方が実行される構成内にセットアップされる、制御モジュール７５を示す。この動作は、入力機能ブロックおよび出力機能ブロック７６および７８のそれぞれの上の「ＦＦ」によって示されている。ここでは、制御モジュール７５の入力機能ブロックおよび出力機能ブロックのそれぞれが、共通フィールドバスセグメント上のフィールドバス装置に割り当てられるため、ルーチン４２は、ＰＩ機能ブロック７７を、フィールドバスセグメント５６内での同期実行のためにフィールドバスＩ／Ｏ装置５８に（そして、より詳細には、その装置のフィールドバスポート５９に）割り当てる。
【００４９】
図７は、カスケードタイプの制御ループを実施する別の制御モジュール８０を示す。図７に示すように、制御モジュール８０は、ＰＩ制御機能ブロック８２に接続されたＡＩ機能ブロック８１を有する第１ステージを含む。ＰＩ制御機能ブロック８２の出力は、第２ステージのＰＩ機能ブロック８３への第１の入力として、第２ステージのＡＩ機能ブロック８４からの追加の入力とともに提供される。第２ステージのＰＩ機能ブロック８３は、２つの入力をフィードバック信号とともに使用して制御信号を生成し、この制御信号はＡＯ機能ブロック８５に提供される。
【００５０】
図７における「ＦＦ」の配置によって示されるように、ＡＩ機能ブロック８１および８４と、ＡＯ機能ブロック８５とのそれぞれは、共通フィールドバスセグメント５６上のフィールドバス装置に割り当てられる。結果として、ルーチン４２は、フィールドバスセグメント５６上での制御モジュール８０の同期実行を提供するために、ＰＩ機能ブロック８２および８３を、実行のためにフィールドバスＩ／Ｏ装置５８に割り当てるように動作する。
【００５１】
図８は図７のモジュール８０を示しているが、この場合は、第２ステージのＡＩ機能ブロック８４が、フィールドバスセグメント５６上のフィールドバス装置に割り当てられないという点が異なる。モジュール８０のクリティカルフロー経路は、カスケードループの両方のステージの入力と出力とを含むため、そして、クリティカルフロー経路内の入力ブロックのうちの１つはモジュール８０のその他の入力および出力ブロックと同じフィールドバスセグメント上のフィールドバス装置には割り当てられないかまたは関連付けられないので、ルーチン４２は、クリティカルフロー経路内の未割り当てのブロックのすべて（すなわち，ＡＩブロック８４、ならびにＰＩ制御ブロック８２および８３）をコントローラ５７に割り当てる。なぜなら、ＰＩブロック８２および８３がフィールドバスＩ／Ｏ装置５８に割り当てられたとしても、制御モジュール８０の同期実行は不可能だからである。
【００５２】
図９は、スプリットレンジ出力構成を有する別の制御モジュール８６を示す。制御モジュール８６は、ＰＩ制御ブロック８８に結合されたアナログ入力ブロック８７を含み、ＰＩ制御ブロック８８は、スプリントレンジブロック（ＳＰＬ）８９に出力を提供し、スプリントレンジブロック（ＳＰＬ）８９は、さらに、２つの並列接続されたＡＯ機能ブロック９０Ａおよび９０Ｂに結合される。ここでは、ＡＩ機能ブロック８７と、ＡＯ機能ブロック９０Ａおよび９０Ｂとのそれぞれが、共通フィールドバスセグメント上のフィールドバス装置に割り当てられるので、ルーチン４２は、フィールドバスセグメント５６上でのモジュール８６の同期実行を提供するために、ＰＩ機能ブロック８８とＳＰＬ機能ブロック８９とを実行のためにフィールドバスＩ／Ｏ装置５８に割り当てる。この動作は、もちろん、装置５８（そして、より詳細には、この装置のフィールドバスポート５９）が、ＰＩおよびＳＰＬブロックの機能をサポートし、かつ、これらのブロックの両方を実行するための十分なリソースを有するということを前提としている。しかし、この例は、モジュールの入力機能ブロックと出力機能ブロックとの間の、モジュールのクリティカルフロー経路内で直列に接続された複数のブロック（例えば、制御ブロック）が、フィールドバスＩ／Ｏ装置に割り当てられることが可能であることを示している。
【００５３】
いずれの場合も、ルーチン４２（図１）が、上述のように、作成された制御モジュールのそれぞれの機能ブロックをフィールドバスセグメントに関連付けられた装置に割り当てるように動作した後は、ルーチン４４が、ルーチン４２によって作成された割り当てに基づいて、フィールドバスセグメントのための通信および実行スケジュールを自動的に生成するために使用されてもよい。一般的に言えば、ルーチン４４は、フィールドバスセグメントのための通信および実行スケジュールの作成をそのセグメント上で動作する機能ブロックのそれぞれを識別することと、そのセグメントためのマクロサイクル（マクロサイクル内の機能ブロックのそれぞれについての通信および実行のためのオフセット時間を指定する）を作成することとによって行う。もちろん、ルーチン４４は、複数の異なる制御モジュールからの機能ブロックを含むマクロサイクルを作成してもよい。
【００５４】
理解されるように、ルーチン４０の使用は、ユーザインタフェース装置における、制御の定義および表示のための統一された環境を提供する。特に、ルーチン４０を使用すれば、制御ブロックが実行のためにどこに割り当てられるか（すなわち、コントローラ内か、フィールドバスインタフェースカード、または、特定のフィールドバスセグメント上のフィールドバス装置内か）を考慮することなく、制御を定義することが可能である。この特徴が可能である理由は、コントローラ内で動作可能な機能ブロックのほとんどは、フィールドバスインタフェースカード内で実行することも許可されるからである。したがって、ユーザは、測定または作動のために選択するフィールドバス装置が、制御または監視アプリケーションを実行するために必要とされる機能ブロックをサポートするかどうかを心配する必要はなく、なぜなら、フィールドバスフィールド装置内でサポートされない任意のブロックはフィールドバスインタフェースカードに割り当てられてもよく、そして、それでもフィールドバスセグメント上で同期して動作することが可能であるからである。
【００５５】
一実施形態では、ルーチン４４は、フィールドバスセグメント上で使用されるスケジュールを、このセグメントへの機能ブロックの割り当てに基づいて自動的に計算してもよく、そして、そうすることにより、フィールドバスセグメント上での複数の異なる実行レートの機能ブロックのサポートを自動的に提供してもよい。例えば、複数の制御ループ（またはモジュール）が同じフィールドバスセグメント上で実行される場合、ループのそれぞれにとって同じ実行レートは適切ではない可能性がある。同様に、場合によっては、１つの制御ループ内に、異なるレートで実行される機能ブロックを有することが望ましい可能性がある。フィールドバスセグメント上の、いくつかの制御モジュールの、または制御モジュール内のいくつかの機能ブロックの、相対的な実行レートをユーザが選択的に変更することを可能にするために、ユーザは異なる実行レートを有するモジュール（または機能ブロック）を構成してもよい。あるいは、同じセグメント上の異なる機能ブロックについての相対的な実行レートを指定するために、実行マルチプライヤが、フィールドバスポート内で、またはフィールドバス装置内で実行されるように割り当てられるブロックに提供されてもよい。
【００５６】
例として、図１０は、ＰＩＤ制御機能ブロック９３（ＰＩＤ２とラベル付けされている）に接続されたＡＩ機能ブロック９２（ＡＩ２とラベル付けされている）を有する第１ステージを含む、カスケード制御ループを実施する制御モジュール９１を示す。ＰＩＤ制御機能ブロック９３の出力は、第２ステージのＰＩＤ機能ブロック９４（ＰＩＤ１とラベル付けされている）への第１の入力として、第２ステージのＡＩ機能ブロック９５（ＡＩ１とラベル付けされている）からの追加の入力とともに提供される。第２ステージのＰＩＤ機能ブロック９４は、２つの入力を、フィードバック信号とともに使用して制御信号を生成し、この制御信号はＡＯ機能ブロック９６に提供される。図１０に示すように、入力および出力機能ブロック９２、９５、および９６は、同じセグメント５６上のフィールドバス装置に割り当てられるので、ルーチン４２は、セグメント５６上でのモジュール９１の同期実行を提供するために、ＰＩＤ機能ブロック９３および９４をフィールドバスＩ／Ｏ装置５８のフィールドバスポート５９に割り当てる。
【００５７】
しかし、図１０に示すように、ＡＩ機能ブロック９２とＰＩＤ機能ブロック９３とは、それらに関連付けられた４ｘマルチプライヤを有する（それらのマルチプライヤは、構成プロセスの間に、構成エンジニアまたはその他のユーザによって指定されてもよい）。それらのブロックについての、４ｘマルチプライヤの指示は、それらのブロックが、制御モジュール９１内のその他のブロックのレートよりも４倍遅いレートで動作すべき、または実行されるべきであるということを指定する。特に、カスケードループの１次（第１）ステージは、そのループの２次ステージよりも４倍遅く実行される必要があるため、１次ステージのＡＩおよびＰＩＤブロック９２および９３は、４ｘ実行マルチプライヤを使用して構成される。ルーチン４４は、フィールドバスセグメント５６のためのスケジュールを生成する際に、カスケードループのＡＩおよびＰＩＤブロック９２および９３が、その他の機能ブロックよりも４倍遅く実行されるべきであるということを考慮に入れ、そして、そうすることにより、ルーチン４４は、実行レートにおけるこの変化を含むマクロサイクル（すなわち、機能ブロック実行スケジュール）を作成する。特に、フィールドバスセグメントのための１つのマクロサイクル内で、（４ｘマルチプライヤを割り当てられた）機能ブロック９２および９３は、１回だけスケジュールされ、一方、その他の機能ブロックのすべては、マクロサイクル内で４回実行されるように割り当てられる。
【００５８】
図１１は、セグメント５６が図１０の制御モジュール９１のみを実行する場合に、セグメント５６のためにルーチン４４によって生成される、例示的な、結果として得られるマクロサイクル９７を示す。ここでは、マクロサイクル９７は、４つの等しい時間周期に分割されていることがわかるであろう（時間周期のうちの１つは、「繰り返す時間（ｔｉｍｅ  ｔｏ  ｒｅｐｅａｔ）」の矢印によって示されている）。２次ステージのＡＩブロック９５、ＰＩＤブロック９４、およびＡＯブロック９６のそれぞれは、繰り返す時間のそれぞれの間に実行されるように（すなわち、マクロサイクル９７の間に４回実行されるように）スケジュールされ、一方、ＡＩブロック９２およびＰＩＤブロック９３は、マクロサイクル９７の間に１回だけ実行されるようにスケジュールされる。したがって、１次ステージのＡＩおよびＰＩＤブロック９２および９３は、２次ステージのブロック９４〜９６よりも４倍遅いレートで実行される。
【００５９】
モジュールの２つのブロックが異なるレートで実行される場合は、通常、それらの実行を相互に同期させる必要はなく、したがって、異なるレートで動作するブロックの実行時間は、それらのブロックがフィールドバスセグメント上の異なる装置内で実行される限り、一般にオーバーラップしてもよい。多くの場合、この特徴は、図１１の例示的なマクロサイクル（ここで、繰り返す時間は、制御モジュール９１の２次ステージを実行するために必要とされる最小時間である）によって示されるように、より遅く実行されるブロックに関連付けられた通信が、より速く実行されるブロックに時間遅延を本質的に追加しないような方法でスケジュールされることを可能にする。
【００６０】
所望される場合、異なる実行レートを有する機能ブロックを同じフィールドバスセグメント上に含むために繰り返す時間を決定し、そして次に、フィールドバスセグメントのマクロサイクルを決定することにおいて、ルーチン４４によって以下の手順が使用されてもよい。最初に、ルーチン４４は、実行マルチプライヤを割り当てられていない機能ブロック（すなわち、最も速い実行レートを有する機能ブロック）の実行レートと、非周期の通信をサポートするために追加される時間とに基づいて、繰り返す時間（または繰り返し時間（ｒｅｐｅａｔ  ｔｉｍｅ））を計算してもよい。これは、マクロサイクルの、提案される繰り返し時間となる。ルーチン４４は、次に、各繰り返し時間の間の、それらのブロック（すなわち、最も速く動作するブロック）の１回の実行についての実行時間を、それらのブロックの、それぞれの制御モジュール内での信号フロー順序に基づいて順序付けしてもよく、そして、可能な場合は、機能ブロックの並列実行を最大限に利用してもよい。次に、ルーチン４４は、マクロサイクルを、マクロサイクル＝繰り返し時間×設定されている最大の実行マルチプライヤ、として計算してもよい。
【００６１】
次に、ルーチン４４は、残りのブロック（すなわち、実行マルチプライヤを有するブロック）に関連付けられた通信を、マクロサイクル全体にわたる利用可能な時間内で、層状に重ねてもよい。ルーチン４４がその他のブロックのすべての通信をマクロサイクル内に収めることができない場合、ルーチン４４は、より多くの通信がマクロサイクル内でスケジュールされることを可能にするために、（例えば、２０パーセントだけ）繰り返し時間を拡張してもよい。ルーチン４４は、次に、より遅い実行レートを有するブロックのための通信を新しいマクロサイクル内に含めることと、必要ならば繰り返し時間を拡張することとのプロセスを、セグメント上のすべての機能ブロックのためのすべての通信が、結果として得られるマクロサイクル内でスケジュールされることが可能になるまで繰り返してもよい。
【００６２】
図１２は、複数のモジュールが同じフィールドバスセグメント上での実行のためにスケジュールされた、別のマクロサイクル９８を示す。この例では、４つの単純なＰＩＤ制御モジュール（それぞれが、１つのＡＩ、ＡＯ、およびＰＩＤ機能ブロックを有する）が、フィールドバスセグメント上で構成されている。ここでは、各制御モジュールのＡＩおよびＡＯブロックは、セグメント上のフィールドバスフィールド装置内に配置され、そして、ＰＩＤブロックは、フィールドバスセグメントのフィールドバスＩ／Ｏ装置のフィールドバスポートに自動的に割り当てられると仮定されている。しかし、モジュールのうちの１つ（ＡＩ１、ＰＩＤ１、およびＡＯ１ブロックを含むもの）は、例えば液体圧を制御してもよく、そして、その他の制御モジュールに比較してできるだけ速く実行する必要があり得る。その他のモジュールは、この例ではそれほどクリティカルではなく、そして、より速いモジュールの実行レートよりも４倍遅いレートで実行されてもよい。上記の手順を使用して計算された、セグメントのための通信および実行スケジュールのマクロサイクル９８を図１２に示す。ここで、（ＡＩ１、ＰＩＤ１、およびＡＯ１機能ブロックを有する）第１のモジュールは、マクロサイクル９８の間に４回実行され、一方、その他のモジュールは、マクロサイクル９８の間に１回だけ実行される。この特徴を実施するためには、第１のモジュールが、（このモジュールはその他のモジュールよりも４倍速く動作すべきであるという事実により）４つの繰り返し時間のそれぞれの間での実行のためにスケジュールされ、そしてその他のモジュールが、次に、結果として得られるマクロサイクル９８内の残りの時間の中でスケジュールされる。
【００６３】
一般的に言えば、ルーチン４４は、フィールドバスセグメントのための２つのスケジューリング技術のうちの１つをユーザが選択することを可能にするように動作してもよく、指定されるスケジューリング技術は、フィールドバスポート上の最適自動計算（ｏｐｔｉｍａｌ  ａｕｔｏ−ｃａｌｃｕｌａｔｅ）プロパティを設定することによって選択される。２つのスケジューリング技術は、マクロサイクルごとに１回のブロック実行を許可する従来のスケジューリングと、サブスケジュールを有する１つのマクロスケジュールをサポートする最適自動計算スケジュールマクロサイクルとを含む。最も速いサブスケジュールの周期は、最も速いモジュール実行時間と機能ブロックマルチプライヤとの組み合わせによって設定される。この場合、各サブスケジュールは、その独自の周期を有してもよい。さらに、マクロサイクルは、ポート（レガシー）のために設定されたモジュール実行時間に、または、設定された時間が達成可能ではない場合は最小の時間に基づく。より遅く実行されるいくつかのブロックをサポートするサブスケジュールは、設定された実行マルチプライヤとポートマクロサイクル時間とに基づく。
【００６４】
所望される場合、モジュール実行時間は、マルチプライヤを使用して特定のフィールドバスセグメント時間内にマッピングされてもよい。一般に、基準セグメント時間（ｂａｓｅ  ｓｅｇｍｅｎｔ  ｔｉｍｅ）は、１００、１２５、１２８、またはその倍数などの、任意の数であってもよい。制約は、基本的に、サブスケジュール時間は２の倍数でなければならないということと、サポートされる最も遅いサブスケジュールは最も速いサブスケジュールよりも最大で８倍遅いということとであるが、それらの制約の代わりに、またはそれらの制約に加えて、その他の制約が使用されてもよい。所望される場合、自動計算スケジュール特徴は、１、２、４、および８の実行マルチプライヤをサポートする。ここで、４ｘ遅いという指示は、マクロスケジュールが４つのセグメントに分割されるということを意味し、８ｘ遅いという指示は、マクロスケジュールが８つのセグメントに分割されるということを意味し、以下同様である。
【００６５】
もちろん、２つよりも多くの実行レートがサポートされてもよい。この場合、最も遅く実行されるブロックによって使用されるマルチプライヤに基づいた回数だけ繰り返される繰り返し時間を有する、最も速い実行レートが最初にスケジュールされる。したがって、マルチプライヤを有さないブロックと、２ｘ、４ｘ、および８ｘマルチプライヤを有するブロックとがある場合、（マルチプライヤを有さない）最も速く実行されるブロックについてのサブスケジュールは、マクロサイクルの間に８回繰り返される。次に最も速い実行レートを有するブロック（例えば、２ｘブロック）が、次に、第１のサブスケジュールを使用して作成されたマクロサイクル内の、残りに時間にわたってスケジュールされる。この第２のサブスケジュールの繰り返し時間は、それらのブロックのマルチプライヤの、最も遅く実行されるブロックのマルチプライヤに対する比（すなわち、この場合は２ｘ／８ｘであり、４に等しい）に基づく。これらのブロックが、第１のサブスケジュールを使用して作成されたマクロサイクル内でスケジュールされることができない場合、第１のサブスケジュールの繰り返し時間は増加させられ、そしてこのプロセスは、次に最も速い実行ブロックが、結果として得られるマクロサイクル内でスケジュールされることが可能になるまで繰り返される。このプロセスは、次に、異なるレート（またはサブスケジュール）のそれぞれについて、すべてのブロックが、結果として得られるマクロサイクル内でスケジュールされることが可能になるまで繰り返される。
【００６６】
もちろん、モジュール走査レートと機能ブロックマルチプライヤとの両方が、スケジュール内で使用される。例えばカスケードループ内において、機能ブロックマルチプライヤを使用することが重要である場合が存在する。マルチプライヤは、モジュールの相対実行レートによって決定される。マクロスケジュールおよびサブスケジュールの決定において、マクロスケジュールは最も速いループによって設定され、次に、マルチプライヤ（最大８ｘ）が、その他のモジュールのために使用される。サブスケジュールの実行レートを達成できない場合は、その状況がユーザに警告されてもよい。所望される場合は、しかし、それでもスケジュールはダウンロードされる。ユーザは、セグメント実行レートを無効にすることはできない（例外としては、もちろん、ユーザはスケジュール全体を無効にすることができる）。
【００６７】
一般に、フィールドバスセグメント上で複数の異なるブロック実行レートを構成およびサポートする１つの方法について、図１３〜図３５に関してより詳細に説明する。特に、上述のように、プロセス制御システム内のプロセスコントローラとフィールド装置とによって機能ブロックを実行するためのスケジュールを生成するために使用される公知の技術は、通常、同じ通信バス（例えば、機能ブロックを実行するために割り当てられたフィールド装置とコントローラとを通信可能に結合する通信バス）に関連付けられたすべての機能ブロックを、最も遅く実行される機能ブロックのレートで実行するようにスケジュールすることを含む。したがって、公知の技術では、相対的により速く実行される機能ブロックのブロック実行周期を、最も遅く実行される機能ブロックのブロック実行周期に一致するように増加させること（例えば、機能ブロック実行レートを遅くすること）が必要とされ、したがって、一部の機能ブロックのより短い実行周期（すなわち、より速い実行レート）が、プロセス制御システムを実施するために有利に使用されることはできない。
【００６８】
機能ブロックを実行するためのスケジュールを実施するために使用されるいくつかの公知の技術とは異なり、以下で述べる例示的な方法および装置は、機能ブロックを実行するためのスケジュールを、それらのそれぞれの機能ブロック実行周期に基づいて、すなわち、同じ通信バスに関連付けられた（例えば、同じ通信バスを介して通信する）その他の機能ブロックの機能ブロック実行周期に一致するように機能ブロック実行周期を実質的に増加させる必要なしに、生成するために使用されてもよい。いくつかの機能ブロックを、同じ通信バスに関連付けられた、その他のより遅い機能ブロックよりも速く実行することは有利な場合がある。例えば、圧力測定機能ブロックとバルブ制御機能ブロックとが同じ通信バスに関連付けられている場合、圧力測定機能ブロックをより短い周期を使用して（例えば、より速いレートで）実行することは有利な可能性があり、一方、バルブ制御機能ブロックを、より短い周期を使用して実行することには、あまり利点はない可能性がある。したがって、圧力測定機能ブロックの機能ブロック実行周期は、バルブ制御機能ブロックの機能ブロック実行周期よりも短くてもよい。機能ブロックの実行をスケジュールするための公知の技術を使用する場合、圧力測定機能ブロックが、バルブ制御機能ブロックと同じ、より遅い周期を使用して実行されることが要求される。結果として、圧力測定機能ブロックは、プロセス内のより高い頻度の圧力変化を捕捉し損なう可能性がある。対照的に、本明細書に記載された例示的な方法および装置を使用して、機能ブロックを実行するためのスケジュールをそれらのそれぞれのブロック実行レートを使用して生成する場合、圧力測定機能ブロックがバルブ制御機能ブロックよりもより短い周期を使用して（例えば、より速い実行レートで）実行されることが可能となる。したがって、圧力測定機能ブロックは、圧力測定値をより頻繁に（例えば、相対的に高い分解能で）取得して、例えば、公知の機能ブロックスケジューリング技術を使用する場合には捕捉も処理もされないであろうより高い頻度の圧力変化（例えば、ブリップ、スパイク、またはその他の比較的高い頻度の圧力変化）を捕捉することが可能である。
【００６９】
本明細書に記載されているように、それぞれの機能ブロックのブロック実行レートを使用してスケジュールを生成することは、複数のプロセスループを、同じ通信バスに通信可能に結合されたフィールド装置またはコントローラによって実行されるようにスケジュールすることと、さらに、プロセスループがそれらのそれぞれのループ実行周期で実行されてもよいことを保証することとを可能にする。すなわち、より短いループ実行周期（例えば、より速いループ実行レート）に関連付けられたプロセスループは、より長いループ実行周期（例えば、より遅いループ実行レート）を有するプロセスループよりも相対的に速く実行されてもよい。このように、機能ブロックを実行するためのスケジュールを生成するために使用されるいくつかの公知の方法とは異なり、同じ通信バスに関連付けられたすべてのループのループ実行周期は、最も長いループ実行と同じにされる必要はない。
【００７０】
次に、図１３を参照すると、本明細書に記載された例示的な方法および装置を実施するために使用され得る例示的なプロセス制御システム１００は、ワークステーション１０２（例えば、アプリケーションステーション、オペレータステーションなど）と、コントローラ１０６とを含み、それらの両方は、アプリケーション制御ネットワーク（ＡＣＮ）と一般に呼ばれるバスまたはローカルエリアネットワーク（ＬＡＮ）１０８を介して通信可能に結合されてもよい。ＬＡＮ１０８は、任意の所望の通信媒体およびプロトコルを使用して実施されてもよい。例えば、ＬＡＮ１０８は、ハードワイヤードまたはワイヤレスのイーサネット（登録商標）通信方式に基づいてもよく、この通信方式は周知であり、したがって、本明細書ではさらに詳細には説明しない。しかし、当業者によって容易に理解されるように、任意のその他の好適な通信媒体およびプロトコルが使用されてもよい。さらに、１つのＬＡＮが示されているが、２つ以上のＬＡＮと、ワークステーション１０２内の適切な通信ハードウェアとが、ワークステーション１０２とそれぞれの類似したワークステーション（図示せず）との間の冗長通信経路を提供するために使用されてもよい。
【００７１】
ワークステーション１０２は、１つ以上の情報技術アプリケーション、ユーザ対話型アプリケーション、および／または通信アプリケーションに関連付けられた動作を実行するように構成されてもよい。例えば、ワークステーション１０２は、プロセス制御関連アプリケーションに関連付けられた動作と、ワークステーション１０２およびコントローラ１０６が任意の所望の通信媒体（例えば、ワイヤレス、ハードワイヤードなど）およびプロトコル（例えば、ＨＴＴＰ、ＳＯＡＰなど）を使用してその他の装置またはシステムと通信することを可能にする、通信アプリケーションに関連付けられた動作とを実行するように構成されてもよい。ワークステーション１０２は、任意の好適なコンピュータシステムまたは処理システム（例えば、図３５のプロセッサシステム２３１０）を使用して実施されてもよい。例えば、ワークステーション１０２は、シングルプロセッサのパーソナルコンピュータ、シングルプロセッサまたはマルチプロセッサのワークステーションなどを使用して実施されてもよい。
【００７２】
コントローラ１０６は、システムエンジニアまたはその他のシステムオペレータによって、ワークステーション１０２または任意のワークステーションを使用して生成された、かつ、コントローラ１０６にダウンロードされ、そしてコントローラ１０６内でインスタンス化された、１つ以上のプロセス制御ルーチンを実行してもよい。コントローラ１０６は、例えば、フィッシャーローズマウントシステムズ社（Ｆｉｓｈｅｒ−Ｒｏｓｅｍｏｕｎｔ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．）とエマーソンプロセスマネジメント（Ｅｍｅｒｓｏｎ  Ｐｒｏｃｅｓｓ  Ｍａｎａｇｅｍｅｎｔ（登録商標））とによって販売されている、デルタＶ（ＤｅｌｔａＶ（登録商標））コントローラであってもよい。しかし、任意のその他のコントローラが代わりに使用されてもよい。さらに、図１３には１つのみのコントローラが示されているが、任意の所望のタイプの、または任意の所望のタイプを組み合わせた追加のコントローラが、ＬＡＮ１０８に結合されてもよい。
【００７３】
コントローラ１０６は、デジタルデータバス１１４と、入出力（Ｉ／Ｏ）装置１１６とを介して、複数のフィールド装置１１２ａ〜ｃに結合されてもよい。プロセス制御ルーチンの実行中に、コントローラ１０６は、フィールドう装置１１２ａ〜ｃと情報（例えば、コマンド、構成情報、測定情報、ステータス情報など）を交換してもよい。例えば、コントローラ１０６は、コントローラ１０６によって実行された場合に、コントローラ１０６がフィールド装置１１２ａ〜ｃにコマンドを送信することをもたらすプロセス制御ルーチンを備えてもよく、それらのコマンドは、フィールド装置１１２ａ〜ｃが指定された動作（例えば、測定の実行、バルブの開閉など）を実行すること、かつ／または、デジタルデータバス１１４を介して情報（例えば、測定データ）を通信することをもたらすものであってもよい。
【００７４】
プロセス制御システム１００のフィールド装置１１２ａ〜ｃを識別するために、フィールド装置１１２ａ〜ｃのそれぞれは、固有の物理的装置タグ（ＰＤＴ）を備えてもよい（例えば、記憶してもよい）。例えば、第１のフィールド装置１１２ａの物理的装置タグはＰＤＴ１であり、第２のフィールド装置１１２ｂの物理的装置タグはＰＤＴ２であり、第３のフィールド装置１１２ｃの物理的装置タグはＰＤＴ３である。図示されている例では、フィールド装置１１２ａ〜ｃは、第１の圧力トランスミッタ１１２ａと、第２の圧力トランスミッタ１１２ｂと、デジタルバルブコントローラ（ＤＶＣ）１１２ｃとを含む。しかし、任意のその他のタイプのフィールド装置（例えば、バルブ、アクチュエータ、センサなど）が、本明細書に記載された例示的な方法および装置に関連して使用されてもよい。
【００７５】
図示されている例では、フィールド装置１１２ａ〜ｃは、周知のフィールドバスプロトコルを使用してデジタルデータバス１１４を介して通信するように構成されたフィールドバス準拠の装置である。フィールドバス規格により、デジタルデータバス１１４は、測定および制御装置（例えば、フィールド装置１１２ａ〜ｃ）に通信可能に結合されるように構成された、デジタル、双方向、マルチドロップ通信バスである。フィールド装置１１２ａ〜ｃは、マルチドロップ構成内でデジタルデータバス１１４に通信可能に結合されて示されている。１つのフィールド装置にＩ／Ｏ装置１１６と通信するためのデジタルデータバスの排他的使用が与えられるポイントツーポイント構成を使用して、フィールド装置をＩ／Ｏ装置１１６に通信可能に結合するための、デジタルデータバス１１４または類似したデータバスが代わりに使用されてもよい。代替の例示的実施では、フィールドバス準拠の装置を含んでもよく、または含まなくてもよい、その他のタイプのフィールド装置（例えば、周知のプロフィバス（Ｐｒｏｆｉｂｕｓ）およびハート（ＨＡＲＴ）通信プロトコルを使用して、データバス１１４を介して通信する、プロフィバスまたはハート準拠の装置）に関連して、本方法および装置が使用されてもよい。デジタルデータバス１１４は、本明細書ではセグメントとも呼ばれる。セグメントは、その特性インピーダンスで終端される物理的バスを表すフィールドバス用語である。図１３に示されている例では、デジタルデータバス１１４がセグメントを形成する。本明細書に記載された例示的な方法および装置は、１つのセグメント（例えば、デジタルデータバス１１４）に関連して、または、より長い論理的バスを形成するためにリピータを使用してリンクされた、２つ以上のセグメント（例えば、デジタルデータバス１１４と、１つ以上のその他のデジタルデータバス）に関連して実施されてもよい。
【００７６】
図示されている例では、Ｉ／Ｏ装置１１６は、コントローラ１０６とフィールド装置１１２ａ〜ｃとを、フィールドバスプロトコル、またはその他のタイプの通信プロトコル（例えば、プロフィバス（Ｐｒｏｆｉｂｕｓ）プトロコル、ハート（ＨＡＲＴ）プロトコルなど）を使用し得るその他のフィールド装置に接続することを可能にする、Ｉ／Ｏサブシステムインタフェースを使用して実施される。例えば、Ｉ／Ｏ装置１１６は、フィールドバスプロトコルと、その他の通信プロトコルとの間の変換を行う１つ以上のゲートウェイを含んでもよい。フィールド装置の追加のグループが、コントローラ１０６と通信することを可能にするために、（Ｉ／Ｏ装置１１６に類似した、またはＩ／Ｏ装置１１６と同一の）追加のＩ／Ｏ装置がコントローラ１０６に結合されてもよい。
【００７７】
例示的なプロセス制御システム１００は、以下でさらに詳細に説明する例示的な方法および装置が有利に使用されてもよい、１つのタイプのシステムを説明するために提供される。しかし、本明細書に記載された例示的な方法および装置は、所望される場合、図１３に示す例示的なプロセス制御システム１００より複雑な、またはより単純なその他のシステム内で、および／または、プロセス制御活動、企業管理活動、通信活動などに関連して使用されるシステム内で有利に使用されてもよい。
【００７８】
図１３に示されている例では、コントローラ１０６および／またはフィールド装置１１２ａ〜ｃによって実行されるプロセス制御ルーチンを定義するためのモジュール１２０が、ワークステーション１０２において構成される。モジュール１２０は、プロセス制御ルーチンを実施するためにフィールド装置１１２ａ〜ｃによって実行される機能を定義する複数の機能ブロック１２２ａ〜ｅを含む。これら機能は、フィールド装置１１２ａ〜ｃに、測定値（例えば、圧力値、温度値、フロー値、電圧値、電流値など）の取得、アルゴリズムまたは計算（例えば、積分、微分、加算、減算など）の実行、計装（例えば、バルブの開閉、炉の調節、ボイラの調節など）の制御を行わせてもよく、または任意のその他の機能を実行させてもよい。図示されている例では、フィールド装置１１２ａ〜ｃは、機械実行可能命令の形態で、機能ブロック１２２ａ〜ｅのうちのそれぞれによって定義される機能を記憶して実行する。しかし、他の例示的実施では、モジュール１２０は、フィールド装置１１２ａ〜ｃのうちの１つによってではなく、コントローラ１０６によって実行される機能を表す機能ブロックを、機能ブロック１２２ａ〜ｅのうちの１つ以上の代わりに、またはそれらに加えて備えてもよい。
【００７９】
ワークステーション１０２は、さらに、フィールド装置１１２ａ〜ｃおよび／またはコントローラ１０６によって実行される、１つ以上のその他の機能ブロック（図示せず）を有する、別のモジュール１２４を構成するために使用されてもよい。２つのモジュール（モジュール１２０および１２４）が示されているが、コントローラ１０６および／またはフィールド装置１１２ａ〜ｃによって実行される追加の機能ブロックを有するより多くのモジュールが、ワークステーション１０２において構成されてもよい。他のモジュール（１つまたは複数）は、他のプロセス制御ルーチンを実施するために、かつ／または、モジュール１２０および１２４に関連してプロセス制御ルーチンを実施するために使用されてもよい。
【００８０】
図示されている例では、機能ブロック１２２ａ〜ｅは、第１のアナログ入力（ＡＩ１）機能ブロック１２２ａと、第１の比例／積分／微分（ＰＩＤ１）機能ブロック１２２ｂと、第２のアナログ入力（ＡＩ２）機能ブロック１２２ｃと、ＰＩＤ２機能ブロック１２２ｄと、アナログ出力（ＡＯ１）機能ブロック１２２ｅとを含む。ＡＩ１機能ブロック１２２ａとＰＩＤ１機能ブロック１２２ｂとは、フィールド装置１１２ａによって実行される機能を定義する。ＡＩ２機能ブロック１２２ｃは、フィールド装置１１２ｂによって実行される機能を定義する。ＰＩＤ２機能ブロック１２２ｄとＡＯ１機能ブロック１２２ｅとは、フィールド装置１１２ｃによって実行される機能を定義する。代替の例示的実施では、機能ブロック１２２ａ〜ｅの代わりに、またはそれらに加えて、任意のその他のタイプの機能ブロックが使用されてもよい。
【００８１】
図１４は、機能ブロック１２２ａ〜ｅのグラフィカルユーザインタフェース（ＧＵＩ）表示を示す。機能ブロック１２２ａ〜ｅは、例えばワークステーション１０２によって実行される、ＧＵＩベースの設計ソフトウェアアプリケーションを使用して、ユーザ（例えば、エンジニア、オペレータなど）によって相互接続されてもよい。図１４に示すように、機能ブロック１２２ａ〜ｅのそれぞれは、１つ以上の入力、および／または１つ以上の出力を含む。機能ブロック１２２ａ〜ｅの入力および／または出力を接続することによって、モジュール１２０（図１３）のプロセス制御ルーチンは定義される。機能ブロック１２２ａ〜ｅの間の接続は、本明細書では、機能ブロック接続線（ｆｕｎｃｔｉｏｎ  ｂｌｏｃｋ  ｃｏｎｎｅｃｔｉｏｎ  ｗｉｒｅｓ）と呼ばれる。図示されている例では、ＡＩ１機能ブロック１２２ａの出力は、ＰＩＤ１機能ブロック１２２ｂの入力に接続され、ＰＩＤ１機能ブロック１２２ｂおよびＡＩ２機能ブロック１２２ｃの出力は、ＰＩＤ２機能ブロック１２２ｄの入力に接続され、そして、ＰＩＤ２機能ブロック１２２ｄの出力は、ＡＯ１機能ブロック１２２ｅの入力に接続される。
【００８２】
図１５を簡単に参照すると、ＡＩ２機能ブロック１２２ｃからＰＩＤ２機能ブロック１２２ｄに情報を通信することを可能にするためにＡＩ２機能ブロック１２２ｃの出力２０４がＰＩＤ２機能ブロック１２２ｄの入力２０６に結合されてもよい方法を示す例示的目的のために、例示的な機能ブロック結合構成２０２（すなわち、結合構成２０２）が提供されている。結合プロセスが、機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅ）の間の接続に基づいて結合構成２０２を生成する。結合プロセスは、機能ブロック相互接続に従って機能ブロックが情報を交換することを可能にするために新しい機能ブロック接続（例えば、出力２０４と入力２０６との間の接続）が作成されるときはいつでも、例えばワークステーション１０２によって実行されてもよい。
【００８３】
結合プロセスは、装置内（ｉｎｔｒａ−ｄｅｖｉｃｅ）通信を可能にするための装置内リンクと、装置間（ｉｎｔｅｒ−ｄｅｖｉｃｅ）通信を可能にするための装置間リンクとを作成するために構成される。装置内リンクは、同じ装置に関連付けられた２つの機能ブロックの間の接続を定義する。例えば、装置内リンクは、ＡＩ１機能ブロック１２２ａ（図１３および図１４）とＰＩＤ１機能ブロック１２２ｂ（図１３および図１４）との間の接続を定義し、なぜなら、機能ブロック１２２ａおよび１２２ｂによって定義される機能は、同じ装置（図１３のフィールド装置１１２ａ）によって実行されるからである。装置間リンクは、１つのフィールド装置内の機能ブロックと、別のフィールド装置内の機能ブロックとの間の接続（２つのフィールド装置を通信可能に結合している通信バス（例えば、図１３のデジタルデータバス１１４）を介してフィールド装置が通信することをもたらす）を定義する。例えば、装置間リンクは、ＡＩ２機能ブロック１２２ｃ（図１３〜図１５）とＰＩＤ２機能ブロック１２２ｄとの間の接続を定義し、なぜなら、ＡＩ２機能ブロック１２２ｃに関連付けられた機能は、フィールド装置１１２ｂ（図１３）によって実行され、ＰＩＤ２機能ブロック１２２ｄに関連付けられた機能は、フィールド装置１１２ｃ（図１３）によって実行されるからである。
【００８４】
図１５に示されている例では、結合プロセスは、ＡＩ２機能ブロック１２２ｃをＰＩＤ２機能ブロック１２２ｄに結合するための装置間リンク構成を作成する。最初に、結合プロセスは、出力２０４を入力２０６にリンクするための情報を含む、装置−装置（ｄｅｖｉｃｅ−ｔｏ−ｄｅｖｉｃｅ）リンクオブジェクト２０８（例えば、装置間リンクオブジェクト）を作成する。同じ装置に関連付けられた機能ブロックを結合するために使用される代替の例示的実施では、結合プロセスは、装置内リンクオブジェクト（図示せず）を作成する。図１５の例示的な結合構成２０２では、結合プロセスは、次に、発行者（ｐｕｂｌｉｓｈｅｒ）リンク２１０を作成し、発行者リンク２１０を出力２０４と関連付け、そして発行者リンク２１０を装置−装置リンクオブジェクト２０８に結合する。さらに、結合プロセスは、引用者（ｓｕｂｓｃｒｉｂｅｒ）リンク２１２を作成し、引用者リンク２１２を入力２０６と関連付け、そして引用者リンク２１２を装置−装置リンクオブジェクト２０８に結合する。
【００８５】
結合プロセスは、さらに、発行者仮想通信路（ｖｉｒｔｕａｌ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｒｅｓｏｕｒｃｅ）（ＶＣＲ）２１４と、引用者ＶＣＲ２１６とを作成する。ＶＣＲは機能ブロック間の接続の識別情報を維持し（または存続させ）、それにより、機能ブロック間の任意の通信がＶＣＲ識別情報を使用して行われることが可能になる。図示されている例では、発行者ＶＣＲ２１４は、ＡＩ２機能ブロック１２２ｃの固有の識別情報２１８を発行者リンク２１０と関連付け、そして、引用者ＶＣＲ２１６は、ＰＩＤ２機能ブロック１２２ｄの固有の識別情報２２０を引用者リンク２１２と関連付ける。一般に、発行者／引用者ＶＣＲ（例えば、発行者および引用者ＶＣＲ２１４および２１６）は、（例えば、１つの機能ブロックが多数の機能ブロックに情報をブロードキャストする）１対多数同報通信を含む機能ブロック間のバッファリング付きの通信（ｂｕｆｆｅｒｅｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）を可能にする。図示されている例では、ＡＩ２機能ブロック１２２ｃは、新しいデータを生成した後で、そのデータを、出力２０４を介してＰＩＤ２機能ブロック１２２ｄに通信する（または発行（ｐｕｂｌｉｓｈ）する）。ＰＩＤ２機能ブロック１２２ｄは、出力２０４の引用者であり、したがって、出力２０４を介して発行されたデータを受信する。
【００８６】
図１４に戻ると、機能ブロック１２２ａ〜ｅは、ループを形成するように結合または接続される。特に、ＡＯ１機能ブロック１２２ｅの出力は、ＰＩＤ２機能ブロック１２２ｄの入力に結合または接続されて、ＰＩＤ２−ＡＯ１ループ２３２を形成する。さらに、ＰＩＤ２機能ブロック１２２ｄの出力は、ＰＩＤ１機能ブロック１２２ｂの入力に接続されて、ＰＩＤ１−ＰＩＤ２ループ２３４を形成する。図示されている例では、ＰＩＤ１−ＰＩＤ２ループ２３４は、ＰＩＤ２−ＡＯ１ループ２３２よりも少ない頻度で実行される（例えば、より長いループ実行周期、またはより遅いループ実行レートを有する）。
【００８７】
ループ２３２のループ実行周期は、機能ブロック１２２ｃ〜ｅのブロック走査レート（ｂｌｏｃｋ  ｓｃａｎ  ｒａｔｅ）（ＢＳＲ）に基づき、そして、ループ２３４のループ実行周期は、機能ブロック１２２ａ〜ｂのブロック走査レートに基づく。ブロック走査レートは、機能ブロックが、別の機能ブロックに情報を通信または発行する頻度を定義する。例えば、フィールド装置１１２ａが、２０００ｍｓごとにＡＩ１機能ブロック１２２ａを実行してデジタルデータバス１１４上に情報を発行（ｐｕｂｌｉｓｈ）する場合、ＡＩ１機能ブロック１２２ａのブロック走査レートは２０００ｍｓである。フィールド装置（またはコントローラ）が、それぞれの機能ブロックを実行するために必要とする時間は、本明細書ではブロック実行時間と呼ばれる。例えば、フィールド装置１１２ａがＡＩ１機能ブロック１２２ａを実行するために２０ミリ秒（ｍｓ）を必要とする場合、ＡＩ１機能ブロック１２２ａのブロック実行時間は２０ｍｓである。機能ブロック１２２ａ〜ｅにそれぞれ関連付けられた、ブロック実行時間ｔE1、ｔE2、ｔE3、ｔE4、およびｔE5は、例として、図１６および図１７に示されている。ブロック走査レートは、一般に、機能ブロック間で異なる。図示されている例では、機能ブロック１２２ａおよび１２２ｂに関連付けられたブロック走査レートは、機能ブロック１２２ｃ〜ｅに関連付けられたブロック走査レートよりも少ない。結果として、ＰＩＤ１−ＰＩＤ２ループ２３４は、ＰＩＤ２−ＡＯ１ループ２３２よりも、少ない頻度で実行される（例えば、より遅いループ実行レート、より長いループ周期など）。
【００８８】
図１６を参照すると、例示的な実行シーケンスダイヤグラム４００は、図１４のループ２３２の２つの連続したループ実行中における、機能ブロック１２２ｃ〜ｅの実行の間のタイミング関係を示す。ＡＩ２機能ブロック１２２ｃの実行は参照番号４０２によって示され、ＰＩＤ２機能ブロック１２２ｄの実行は参照番号４０４によって示され、ＡＯ１機能ブロック１２２ｅの実行は参照番号４０６によって示されている。マクロサイクルは、本明細書では、ループの１回の実行（例えば、ループ２３２の１回の実行）を意味するために使用される。ループを実行するために必要とされる時間は、通常、最も頻度が少ないブロック走査レートを有する、ループ内の機能ブロックに基づく。公知のシステムでは、マクロサイクルに関連付けられた各機能ブロックは、マクロサイクルの間に１回だけ実行されなければならない。例えば、図１６で、機能ブロック１２２ｃ〜ｅのそれぞれは、５００ミリ秒の周期を有するマクロサイクル４０８の間に１回だけ実行されるものとして示されている。公知のシステムでは、同じセグメント上のフィールド装置（例えば、デジタルデータバス１１４上のフィールド装置１１２ａ〜ｃ）は、それらのそれぞれの機能ブロックを、同じマクロサイクルに基づいて実行しなければならない。すなわち、公知のシステムの公知の設計ガイドラインは、１つのセグメント（例えば、デジタルデータバス１１４）上で異なるマクロサイクルを実行することを不可として指定している。より頻度が少ない走査レート（例えば、２秒の走査レート）を有する別の機能ブロックがループ２３２内に導入される場合、すべての機能ブロック（例えば、機能ブロック１２２ｃ〜ｅ、および２秒の走査レートを有する追加の機能ブロック）の１回の実行をマクロサイクル４０８の間に含むように、マクロサイクル４０８の周期は増加させられなければならない。
【００８９】
図１７は、図１４のループ２３４の２つの連続したループ実行中における、機能ブロック１２２ａ〜ｂの実行の間のタイミング関係を表す、別の例示的な実行シーケンス図５００を示す。ＡＩ１機能ブロック１２２ａの実行は参照番号５０２によって示され、機能ブロック１２２ｂの実行は参照番号５０４によって示されている。機能ブロック１２２ａ〜ｂは、機能ブロック１２２ｃ〜ｅよりも頻度が少ないブロック走査レートを有するので、ループ２３４は、ループ２３２よりも相対的に少ない頻度で実行される。図示されている例では、ループ２３４に関連付けられたマクロサイクル５０２は、ループ２３４のより少ない頻度の実行に対応するように、２０００ミリ秒の期間（ｄｕｒａｔｉｏｎ）を有する。
【００９０】
図１８は、異なるブロック走査レートを有する機能ブロック（例えば、図１３〜図１４、図１６、および図１７の機能ブロック１２２ａ〜ｅ）を同じセグメント（例えば、デジタルデータバス１１４）上で実行するための、公知の方法に従って実施される、例示的な実行シーケンス図６００を示す。具体的には、公知の方法に従って、機能ブロック１２２ａ〜ｅを同じセグメント（例えば、デジタルデータバス１１４）上で実行するために、機能ブロック１２２ａ〜ｅの最も遅いブロック走査レートに基づいて、２０００ｍｓの周期を有するマクロサイクル６０２が選択される。このようにして、機能ブロック１２２ａ〜ｅのそれぞれが、マクロサイクル６０２ごとに１回実行される。例示的な実行シーケンス６００を実施するために、ループ２３２のループ実行周期がループ２３４のループ実行周期と等しくなるように、機能ブロック１２２ｃ〜ｅのブロック走査レートは減少させられる。
【００９１】
機能ブロック１２２ｃ〜ｅのブロック走査レートを減少させることにより、機能ブロック１２２ｃ〜ｅと機能ブロック１２２ａ〜ｂとを同じセグメント上で実行することが可能になるが、機能ブロック１２２ｃ〜ｅのブロック走査レートを減少させることにより、機能ブロック１２２ｃ〜ｅを機能ブロック１２２ａ〜ｂのブロック走査レートよりも速く実行することはできなくなる。いくつかの実施においては、機能ブロック１２２ｃ〜ｅを、機能ブロック１２２ａ〜ｂのブロック実行周期よりも速く実行することが有利な場合がある。例えば、ＡＩ２機能ブロック１２２ｃが、フィールド装置１１２ｂ（図１３）に圧力測定値を取得させる場合、図１６に示すように５００ｍｓの間隔でＡＩ２機能ブロック１２２ｃを実行することは、フィールド装置１１２ｂが相対的に高い分解能（例えば、高い細分性）で複数の圧力測定値を取得して、デジタルデータバス１１４上に発行（ｐｕｂｌｉｓｈ）することを可能にする。図１６に示すように、圧力測定値をより頻繁に（例えば、相対的に高い分解能で）取得することは、フィールド装置１１２ｂが、例えば、５００ｍｓの範囲内で発生するブリップ、スパイク、またはその他の比較的高い頻度の圧力挙動を捕捉することを可能にする。対照的に、公知の方法を使用して例示的な実行シーケンス６００を生成するためにＡＩ２機能ブロック１２２ｃのブロック走査レートを遅くすると、フィールド装置１１２ｂは、２０００ｍｓ未満の範囲内で発生するブリップ、スパイク、またはその他の比較的高い頻度の圧力挙動を捕捉することができなくなる。
【００９２】
すべてのループのループ実行周期を同じにすることによって１つのセグメント上で複数のループを実行するための、例示的な実行シーケンス６００を生成するために使用される、公知の方法とは異なる本明細書に記載された例示的な方法および装置は、異なるループ実行周期を有する複数のループを同じセグメント上でスケジュールすることを可能にする。図１９を参照すると、本明細書に記載された例示的な方法および装置に従って実施される例示的な実行シーケンス図７００は、図１４〜図１６のループ２３２および２３４が、それらのそれぞれのループ実行周期に従って実行されることを可能にする。このようにして、より速いブロック走査レートを有する機能ブロックは、より遅いブロック走査レートを有する、同じセグメント上の機能ブロックよりも、より速いレートで実行されることが可能となる。
【００９３】
デジタルデータバス１１４上で、ループ２３２および２３４を、それらのそれぞれのレートで実行することを可能にするために、本明細書に記載された例示的な方法および装置は、機能ブロック１２２ａ〜ｅの複数の機能ブロック実行４０２、４０４、４０６、５０２、および５０４として図１９に示すスケジュール７０２（すなわち、機能ブロック実行スケジュール）を生成する。図示されている例では、スケジュール７００は、時間ｔ0において始まるスケジュール開始時間７０４を有する。機能ブロック実行４０２、４０４、４０６、５０２、および５０４のそれぞれは、スケジュール開始時間７０４に相対的なそれぞれの開始時間オフセット（例えば、オフセット）において始まる。ＡＩ２機能ブロック１２２ｃの機能ブロック実行４０２のうちの１つが始まる、スケジュール開始時間７０４に相対的な時を示すために、例示的な開始時間オフセット７０６が図１９に示されている。
【００９４】
スケジュール７００は、機能ブロック１２２ａ〜ｅのブロック走査レートと、モジュール１２０のモジュール実行周期（ＴME）とに基づいて決定される。モジュール実行周期（ＴME）は、モジュール１２０内の機能ブロック（例えば、機能ブロック１２２ａ〜ｅのうちの１つ）に関連付けられた、最も遅い、または最も少ない頻度のブロック走査レートの逆数に等しい。例えば、モジュール１２０のモジュール走査周期（ＴME）は２０００ｍｓであり、その理由は、ＡＩ１機能ブロック１２２ａとＰＩＤ１機能ブロック１２２ｂは１走査／２０００ｍｓのブロック走査レートを有し、これは、モジュール１２０内の機能ブロック１２２ｃ〜ｅの１走査／５００ｍｓのブロック走査レートよりも遅いからである。
【００９５】
本明細書に記載された例示的な方法および装置は、各機能ブロック（例えば、機能ブロック１２２ａ〜ｅのそれぞれ）について、１つ以上の開始時間オフセットを生成するように構成される。機能ブロックについての開始時間オフセットの数は、その機能ブロックのブロック未加工実行周期（ｂｌｏｃｋ  ｒａｗ  ｅｘｅｃｕｔｉｏｎ  ｐｅｒｉｏｄ）（ＴBRE）と、その機能ブロックを実行するように構成されたフィールド装置に関連付けられた、最も遅いブロック未加工実行周期（ｓｌｏｗｅｓｔ  ｂｌｏｃｋ  ｒａｗ  ｅｘｅｃｕｔｉｏｎ  ｐｅｒｉｏｄ）（ＴSBE）とに基づいて決定される。ブロック未加工実行周期（ＴBRE）は、スケジュール（例えば、図１９のスケジュール７０２）に関係なく、機能ブロックの実行の間の時間の長さを定義し、次の式１に従って定義され得る。
（式１）  ＴBRE＝ＴME×ＦBSR
上記式１に示すように、特定の機能ブロックのブロック未加工実行周期（ＴBRE）は、その機能ブロックを含むモジュールのモジュール実行周期（ＴME）に、その機能ブロックのブロック走査レート因子（ｂｌｏｃｋ  ｓｃａｎ  ｒａｔｅ  ｆａｃｔｏｒ）（ＦBSR）を掛けることによって決定される。ブロック走査レート因子（ＦBSR）は、機能ブロックの２つの連続した実行の開始時間の間のモジュール実行周期（ＴME）の数量に等しく、次の式２を使用して決定され得る。
（式２）  ＦBSR＝ＴME／ＢＳＲ
上記の式２と、図１９とを参照すると、モジュール１２０（図１３）のモジュール実行周期（ＴME）が２０００ｍｓであり、かつ、機能ブロック１２２ａが２０００ｍｓごとに実行されるように構成されている場合（ＢＳＲ＝２０００ｍｓ）、ＡＩ１機能ブロック１２２ａのブロック走査レート因子（ＦBSR）は１に等しく、なぜなら、ＡＩ１機能ブロック１２２ａの２つの連続した実行の開始の間に、１つのモジュール実行周期（ＴME）が経過するからである。図１９で、ＡＩ２機能ブロック１２２ｃは、５００ｍｓごとに実行されるとして示されている（ＢＳＲ＝５００ｍｓ）。したがって、ＡＩ２機能ブロック１２２ｃのブロック走査レート因子（ＦBSR）は４分の１（０．２５）に等しく、なぜなら、ＡＩ２機能ブロック１２２ｃの２つの連続した実行の開始の間に、モジュール実行周期（ＴME）の４分の１のみが経過するからである。
【００９６】
上記の式１を再び参照すると、モジュール１２０のモジュール実行周期（ＴME）が２０００ｍｓであり、かつ、ＡＩ１機能ブロック１２２ａのブロック走査レート因子（ＦBSR）が１に等しい場合、ＡＩ１機能ブロック１２２ａのブロック未加工実行周期（ＴBRE）は２０００ｍｓに等しく、これは、ＡＩ１機能ブロック１２２ａが２０００ｍｓごとに実行されることを示している。しかし、ＡＩ２機能ブロック１２２ｃのブロック未加工実行周期（ＴBRE）は５００ｍｓに等しく、なぜなら、ＡＩ２機能ブロック１２２ｃのブロック走査レート因子（ＦBSR）は４分の１だからである（例えば、５００ｍｓ（ＴBRE）＝２０００ｍｓ（ＴME）×１／４（ＦBSR））。
【００９７】
上記の式１に基づいてブロック未加工実行周期（ＴBRE）が決定された後で、ブロック未加工実行周期（ＴBRE）は、図２０の丸めテーブル８００に基づいて切り上げられる。ブロック未加工実行周期（ＴBRE）が切り上げられるのは、スケジュール７０２（図１９）の複数の繰り返しの後で、機能ブロック実行（例えば、図１９の機能ブロック実行４０２、４０４、４０６、５０２、および５０４）が時間に関してスキューしないことを確実にするため、ならびに、各機能ブロックについて必要とされる開始時間オフセットの数量（ｑｕａｎｔｉｔｙ  ｏｆ  ｓｔａｒｔ  ｔｉｍｅ  ｏｆｆｓｅｔｓ）（ＱS）を、丸められたブロック未加工実行周期（ｒｏｕｎｄｅｄ  ｂｌｏｃｋ  ｒａｗ  ｅｘｅｃｕｔｉｏｎ  ｐｅｒｉｏｄ）（ＲＴBRE）の境界に基づいて決定するためである。丸めテーブル８００に示すように、機能ブロックのブロック未加工実行周期（ＴBRE）が０ｍｓと５００ｍｓとの間である場合、ブロック未加工実行周期（ＴBRE）は、丸められたブロック未加工実行周期（ＲＴBRE）に切り上げられる。同様に、機能ブロックのブロック未加工実行周期（ＴBRE）が、５００ｍｓと１０００ｍｓとの間、または１０００ｍｓと２０００ｍｓとの間、または２０００ｍｓよりも大きい場合、ブロック未加工実行周期（ＴBRE）は、それぞれ、１０００ｍｓ、２０００ｍｓ、または４０００ｍｓの丸められたブロック未加工実行周期（ＲＴBRE）値に切り上げられる。
【００９８】
図１９に戻ると、スケジュール７０２は、サブスケジュール７１０および７１２を使用して実施される。図示されている例では、サブスケジュール７１０は５００ｍｓの周期を有し、そして、図１４および図１６のループ２３２のループ実行に関連付けられている。サブスケジュール７１２は２０００ｍｓの周期を有し、そして、図１４および図１７のループ２３４のループ実行に関連付けられている。スケジュール７０２の生成の間は、サブスケジュール７１０が最初に生成され、そして次に、サブスケジュール７１０は、２０００ｍｓのスケジュール７０２を埋めるために、図１９に示すように３回複製される。サブスケジュール７１０を生成した後は、周期が次に最も短いサブスケジュール（例えば、サブスケジュール７１２）が生成される。サブスケジュール７１０および７１２を生成した後で、サブスケジュール７１０および７１２は、スケジュール７０２を生成するためにマージされる。
【００９９】
図１９に示すように、サブスケジュール７１０の間に、実行４０２、４０４、および４０６のそれぞれは１回発生する。したがって、機能ブロック１２２ｃ〜ｅのそれぞれは、サブスケジュール７１０について開始時間オフセットを１つだけ必要とする。同様に、サブスケジュール７１２の間に、機能ブロック１２２ａ〜ｂのそれぞれは、１回のみ実行される。したがって、機能ブロック１２２ａ〜ｂのそれぞれは、サブスケジュール７１２について開始時間オフセットを１つだけ必要とする。
【０１００】
機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅのうちの１つ）によって必要とされる、サブスケジュール（例えば、サブスケジュール７１０またはサブスケジュール７１２）についての、開始時間オフセット（例えば、開始時間オフセット７０６）の数量（ＱS）は、その機能ブロックの、丸められたブロック未加工実行周期（ＲＴBRE）と、その機能ブロックを実行するフィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃのうちの１つ）に関連付けられた、最も遅い丸められたブロック未加工実行周期（ｓｌｏｗｅｓｔ  ｒｏｕｎｄｅｄ  ｂｌｏｃｋ  ｒａｗ  ｅｘｅｃｕｔｉｏｎ  ｐｅｒｉｏｄ）（ＲＴSRE）とに基づいて決定される。機能ブロックについての、開始時間オフセットの数量（ＱS）は、次の式３を使用して決定されてもよい。
（式３）  ＱS＝ＲＴSRE／ＲＴBRE
上記の式３に示すように、機能ブロックについての、開始時間オフセットの数量（ＱS）は、その機能ブロックを実行するフィールド装置に関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）を、その機能ブロックの、丸められたブロック未加工実行周期（ＲＴBRE）で割ることによって決定される。
【０１０１】
ＰＩＤ２機能ブロック１２２ｄについての、開始時間オフセットの数量（ＱS）を決定するために式３を使用することは、最初に、ＰＩＤ２機能ブロック１２２ｄを実行するフィールド装置１１２ｃに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）を決定することを含む。図示されている例では、フィールド装置１１２ｃによって実行されるのは、ＰＩＤ２およびＡＯ１機能ブロック１２２ｄ〜ｅのみである。したがって、フィールド装置１１２ｃに関連付けられた最も遅い丸められたブロック未加工実行周期（ＲＴSRE）は、より遅い、丸められたブロック未加工実行周期（ＲＴBRE）を有する機能ブロック１２２ｄ〜ｅのうちの１つの、丸められたブロック未加工実行周期（ＲＴBRE）に等しい。機能ブロック１２２ｄ〜ｅの丸められたブロック未加工実行周期（ＲＴBRE）は、両方とも５００ｍｓに等しいので、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）は５００ｍｓに等しく設定される。
【０１０２】
フィールド装置１１２ｃに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）を決定した後は、式３を使用して、５００ｍｓ（フィールド装置１１２ｃに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE））を、５００ｍｓ（ＰＩＤ２機能ブロック１２２ｄの、丸められたブロック未加工実行周期（ＲＴBRE））で割ることによって、ＰＩＤ２機能ブロック１２２ｄのために必要とされる開始時間オフセットの数量（ＱS）が決定されてもよい。この割り算操作は、サブスケジュール７１０内で実行されるＰＩＤ２機能ブロック１２２ｄに必要な開始時間オフセットの数量（ＱS）が１であることを示す。
【０１０３】
図２１の、例示的な開始時間オフセットの数量テーブル９００は、図１９のサブスケジュール７１２の間に、実行のために機能ブロック１２２ａ〜ｂによって必要とされる開始時間オフセットの数量（ＱS）と、図１９のサブスケジュール７１０の間に、実行のために機能ブロック１２２ｃ〜ｅによって必要とされる開始時間オフセットの数量（ＱS）とを示す。開始時間オフセットの数量テーブル９００は、ブロック走査レート因子（ＦBSR）、ブロック未加工実行周期（ＴBRE）、および、丸められたブロック未加工実行周期（ＲＴBRE）も示す。
【０１０４】
図２２は、モジュール１０２０の機能ブロック１０２２ａ〜ｅに基づいてプロセス制御システムを実施するために複数のフィールド装置１０１２ａ〜ｃがデジタルデータバス１０１４に通信可能に結合された、別の例示的な機能ブロック構成１０００を示す。図２１の開始時間オフセットの数量テーブル９００に示すように、開始時間オフセットを１つだけ必要とする図１３および図１４の機能ブロック１２２ａ〜ｅとは異なり、図２２に示す機能ブロック１０２２ａ〜ｅのうちのいくつかは、以下で述べるように、複数の開始時間オフセットを必要とする。複数のフィールド装置１０１２ａ〜ｃは、図１３のフィールド装置１１２ａ〜ｃに類似しているか、またはそれらと同一であり、そして、デジタルデータバス１０１４は、図１３のデジタルデータバス１１４に類似しているか、またはそれと同一である。図２２に示すように、フィールド装置１０１２ａは、ＡＩ１１機能ブロック１０２２ａと、ＡＩ１２機能ブロック１０２２ｃと、ＡＯ１１機能ブロック１０２２ｅとによって定義される機能を実行し、フィールド装置１０１２ｂは、ＰＩＤ１２機能ブロック１０２２ｂによって定義される機能を実行し、フィールド装置１０１２ｃは、ＰＩＤ１３機能ブロック１０２２ｄによって定義される機能を実行する。
【０１０５】
ＡＩ１１機能ブロック１０２２ａは、図１３および図１４のＡＩ１機能ブロック１２２ａに類似しているか、またはそれと同一であり、ＰＩＤ１２機能ブロック１０２２ｂは、図１３および図１４のＰＩＤ１機能ブロック１２２ｂに類似しているか、またはそれと同一であり、ＡＩ１２機能ブロック１０２２ｃは、図１３および図１４のＡＩ２機能ブロック１２２ｃに類似しているか、またはそれと同一であり、ＰＩＤ１３機能ブロック１０２２ｄは、図１３および図１４のＰＩＤ２機能ブロック１２２ｄに類似しているか、またはそれと同一であり、ＡＯ１１機能ブロック１０２２ｅは、図１３および図１４のＡＯ１機能ブロック１２２ｅに類似しているか、またはそれと同一である。例えば、ＡＩ１１機能ブロック１０２２ａおよびＰＩＤ１２機能ブロック１０２２ｂのブロック走査レートは、２０００ｍｓに等しい。同様に、機能ブロック１０２２ｃ〜ｅのブロック走査レートは、５００ｍｓに等しい。図示されていないが、機能ブロック１０２２ａ〜ｅの間の接続は、図１４に示す機能ブロック１２２ａ〜ｅの間の接続と同一である。
【０１０６】
図２３の、別の例示的な、開始時間オフセットの数量テーブル１１００は、機能ブロック１０２２ａ〜ｅ（図２２）のそれぞれについての、それらのそれぞれのブロック走査レート因子（ＦBSR）、ブロック未加工実行周期（ＴBRE）、および、丸められたブロック未加工実行周期（ＲＴBRE）に基づいて決定される開始時間オフセットの数量（ＱS）を示す。機能ブロック１０２２ａ〜ｅのブロック未加工実行周期（ＴBRE）は、上記の式１に基づいて決定され、式１は、さらに、ブロック走査レート因子（ＦBSR）と、モジュールのモジュール実行周期（ＴME）とに基づく。ブロック未加工実行周期（ＴBRE）のそれぞれは、次に、機能ブロック１０２２ａ〜ｅのそれぞれの、丸められたブロック未加工実行周期（ＲＴBRE）を決定するために丸められる。
【０１０７】
機能ブロック１０２２ａ〜ｅのそれぞれについての、開始時間オフセットの数量（ＱS）が、次に、上記の式３に基づいて決定される。図２３に示すように、参照番号１１０２は、ＡＩ１２機能ブロック１０２２ｃ（ＰＤＴ１１／ＦＦＡＩ１２）についての、開始時間オフセットの数量（ＱS）が４に等しいことを示す。ＡＩ１２機能ブロック１０２２ｃについての、開始時間オフセットの数量（ＱS）を決定するには、フィールド装置１０１２ａに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）が最初に決定される。図２２に示されている例では、フィールド装置１０１２ａは、ＡＩ１１機能ブロック１０２２ａと、ＡＩ１２機能ブロック１０２２ｃと、ＡＯ１１機能ブロック１０２２ｅとを実行するように構成されている。したがって、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）は、ＡＩ１１機能ブロック１０２２ａの、丸められたブロック未加工実行周期（ＲＴBRE）と、ＡＩ１２機能ブロック１０２２ｃの、丸められたブロック未加工実行周期（ＲＴBRE）と、ＡＯ１１機能ブロック１０２２ｅの、丸められたブロック未加工実行周期（ＲＴBRE）とのうちで最も遅いものである。図２３に示すように、ＡＩ１１機能ブロック１０２２ａ（ＰＤＴ１１／ＦＦＡＩ１１）の丸められたブロック未加工実行周期（ＲＴBRE）は２０００ｍｓであり、ＡＩ１２機能ブロック１０２２ｃ（ＰＤＴ１１／ＦＦＡＩ１２）の丸められたブロック未加工実行周期（ＲＴBRE）は５００ｍｓであり、ＡＯ１１機能ブロック１０２２ｅ（ＰＤＴ１１／ＦＦＡＯ１１）の丸められたブロック未加工実行周期（ＲＴBRE）は５００ｍｓである。したがって、フィールド装置１０１２ａに関連付けられた最も遅い丸められたブロック未加工実行周期（ＲＴSRE）は２０００ｍｓである。上記の式３に従って、ＡＩ１２機能ブロック１０２２ｃによって必要とされる開始時間オフセットの数量（ＱS）を決定するために、２０００ｍｓ（フィールド装置１０１２ａに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE））が５００ｍｓ（ＡＩ１２機能ブロック１０２２ｃの、丸められたブロック未加工実行周期（ＲＴBRE））で割られて、参照番号１１０２によって示されている値４が計算される。
【０１０８】
テーブル１１００は、さらに、ＡＩ１１機能ブロック１０２２ａ（ＰＤＴ１１／ＦＦＡＩ１１）によって必要とされる開始時間オフセットの数量（ＱS）が、参照番号１１０４によって示されるように１に等しいということも示している。図示されている例では、ＡＩ１１機能ブロック１０２２ａは１つの開始時間オフセットを有し、ＡＩ１２機能ブロック１０２２ｃは４つの開始時間オフセットを有し、その理由は、ＡＩ１１機能ブロック１０２２ａの丸められたブロック未加工実行周期（ＲＴBRE）（２０００ｍｓ）は、フィールド装置１０１２ａに関連付けられた最も遅い丸められたブロック未加工実行周期（ＲＴSRE）（２０００ｍｓ）に等しく、一方、ＡＩ１２機能ブロック１０２２ｃの丸められたブロック未加工実行周期（ＲＴBRE）（５００ｍｓ）は、フィールド装置１０１２ａに関連付けられた、最も遅い丸められたブロック未加工実行周期（ＲＴSRE）（２０００ｍｓ）の４分の１であるからである。したがって、フィールド装置１０１２ａは、ＡＩ１１機能ブロック１０２２ａの各実行につき、ＡＩ１２機能ブロック１０２２ｃを４回実行する必要がある。
【０１０９】
図２４は、スケジュール１２０２（すなわち、機能ブロック実行スケジュール）と、それぞれの機能ブロック１０２２ａ〜ｅ（図２２）の実行１２０４、１２０６、１２０８、１２１０、および１２１２とを示す、別の例示的な実行シーケンス図１２００である。スケジュール１２０２は、ＰＩＤ１３機能ブロック１０２２ｄに関連付けられた５００ｍｓのサブスケジュール１２１４と、機能ブロック１０２２ａ〜ｃおよび１０２２ｅに関連付けられた２０００ｍｓのサブスケジュール１２１６とを使用して生成される。図示されているように、５００ｍｓのサブスケジュール１２１４は、スケジュール１２０２の間に４回繰り返され、２０００ｍｓのサブスケジュール１２１６は、スケジュール１２０２の間に１回発生する。
【０１１０】
図２３のテーブル１１００に従って、２０００ｍｓのサブスケジュール１２１６内で、ＡＩ１１機能ブロック１０２２ａは１つの開始時間オフセット（開始時間オフセットｔ0）を有し、ＡＩ１２機能ブロック１０２２ｃは４つの開始時間オフセット（開始時間オフセットｔ1、ｔ5、ｔ9、およびｔ13）を有し、ＡＯ１１機能ブロック１０２２ｅは４つの開始時間オフセット（開始時間オフセットｔ3、ｔ7、ｔ11、およびｔ15）を有し、ＰＩＤ１２機能ブロック１０２２ｂは１つの開始時間オフセット（開始時間オフセットｔ1）を有する。同様に、図２３のテーブル１１００に従って、５００ｍｓのサブスケジュール１２１４内でＰＩＤ１３機能ブロック１０２２ｄは１つの開始時間オフセット（開始時間オフセットｔ2）を有する。
【０１１１】
機能ブロックの開始時間オフセットは、次の式４に従って決定されてもよい。
（式４）  ｔS＝ＮSeq×ＴBRE＋ｔDA
上記式４で示したように、機能ブロックについての開始時間オフセット（ｔS）は、計算されるべき現在の開始時間オフセットの順序番号（ＮSeq）に機能ブロックのブロック未加工実行周期（ＴBRE）を掛け、結果として得られた積を機能ブロックのデータ利用可能時間（ｔDA）に足すことによって決定される。順序番号（ＮSeq）は、サブスケジュール（例えば、図１９のサブスケジュール７１０または７１２のうちの１つ）の間の、機能ブロックの特定の実行インスタンスを指す。例えば、図２４で、ＡＩ１２機能ブロック１０２２ｃは、２０００ｍｓのサブスケジュール１２１６の間に４つの実行インスタンスを有する（すなわち、開始時間オフセットの数量（ＱS）は４に等しく、順序番号（ＮSeq）は０〜３）。機能ブロックのデータ利用可能時間（ｔDA）は、機能ブロックを実行するために必要とされるデータが、別の機能ブロックによって利用可能にされる機能ブロックのブロック未加工実行周期（ＴBRE）の間の時間を意味する。例えば、第１の機能ブロックのデータ利用可能時間（ｔDA）は、第２の機能ブロックからのデータが、第１の機能ブロックを実行するフィールド装置にとって利用可能になる時（例えば、そのデータがデジタルデータバス１０１４上に発行（ｐｕｂｌｉｓｈ）される時）に基づいて決定される。フィールド装置が第１の機能ブロックを実行するために、第１の機能ブロックが、第２の機能ブロックからのデータも、その他のいかなる機能ブロックからのデータも必要としない場合、第１の機能ブロックのデータ利用可能時間（ｔDA）は０に設定される。さらなる例として、機能ブロックのブロック未加工実行周期（ＴBRE）が５００ｍｓであり、５００ｍｓのブロック未加工実行周期（ＴBRE）の開始を基準として１２５ｍｓにおいて、別の機能ブロックによってデータがその機能ブロックにとって利用可能にされる場合、その機能ブロックのデータ利用可能時間（ｔDA）は１２５ｍｓである。
【０１１２】
式４と、ＡＩ１２機能ブロック１０２２ｃの実行１２０６とを参照すると、オフセット開始時間（ｔS）ｔ1、ｔ5、ｔ9、およびｔ13は、以下のように決定されてもよい。図２４に示すように、ＡＩ１２機能ブロック１０２２ｃのブロック未加工実行周期（ＴBRE）が５００ｍｓである場合、２０００ｍｓのサブスケジュール１２１６の間の開始時間オフセットの数量（ＱS）は４（すなわち、順序番号（ＮSeq）は０〜３）であり、なぜなら、２０００ｍｓのサブスケジュール１２１６のサブスケジュール実行周期をＡＩ１２機能ブロック１０２２ｃの５００ｍｓのブロック未加工実行周期（ＴBRE）で割ると４に等しいからである。さらに、ＡＩ１２機能ブロック１０２２ｃのデータ利用可能時間（ｔDA）は１２５ｍｓである。したがって、上記の式４を使用すると、第１の順序番号（ＮSeq）に対応する開始時間オフセット（ｔS）ｔ1は１２５ｍｓに等しく、第２の順序番号（ＮSeq）に対応する開始時間オフセット（ｔS）ｔ5は６２５ｍｓに等しく、第３の順序番号（ＮSeq）に対応する開始時間オフセット（ｔS）ｔ9は１１２５ｍｓに等しく、第４の順序番号（ＮSeq）に対応する開始時間オフセット（ｔS）ｔ13は１６２５ｍｓに等しい。
【０１１３】
図２５は、図１３のフィールド装置１１２ａ〜ｃと、図１３の機能ブロック１２２ａ〜ｅと、機能ブロック１２２ａ〜ｅに対応する開始時間オフセットとを表すオブジェクトの間の関係を示す、例示的なオブジェクト指向ソフトウェア実行環境１３００である。図１３のフィールド装置１１２ａに対応するＰＤＴ１装置オブジェクト１３０２ａは、ＦＦＡＩ１機能オブジェクト１３０４ａと、ＦＦＰＩＤ１機能オブジェクト１３０４ｂとに結合される。ＦＦＡＩ１機能オブジェクト１３０４ａは図１３のＡＩ１機能ブロック１２２ａに対応し、ＦＦＰＩＤ１機能オブジェクト１３０４ｂは図１３のＰＩＤ１機能ブロック１２２ｂに対応する。図１３のフィールド装置１１２ｂに対応するＰＤＴ２装置オブジェクト１３０２ｂは、ＡＩ２機能ブロック１２２ｂ（図１３）に対応するＦＦＡＩ２機能オブジェクト１３０４ｃと、ＰＩＤ２機能ブロック１２２ｃ（図１３）に対応するＦＦＰＩＤ２機能オブジェクト１３０４ｄとに結合される。図１３のフィールド装置１１２ｃに対応するＰＤＴ３装置オブジェクト１３０２ｃは、ＡＯ１機能ブロック１２２ｅ（図１３）に対応するＦＦＡＯ１機能オブジェクト１３０４ｅに結合される。
【０１１４】
図２１の、開始時間オフセットの数量テーブル９００に従って、機能オブジェクト１３０４ａ〜ｅのそれぞれは、図２５に示す複数の開始時間オフセット１３０６ａ〜ｅのうちの該当する１つを有する。開始時間オフセットのそれぞれは、データ構造を使用して、メモリ（例えば、図１３のワークステーション１０２のメモリ）内に記憶されてもよい。図２５に示されている例では、開始時間オフセット１３０６に対応する例示的な開始時間オフセットデータ構造１３１０が、開始時間オフセット１３０６を、ＦＢＳ｛順序番号，インデックス値，開始時間オフセット｝という形式で記憶する。この例では、順序番号は、サブスケジュール（例えば、図１９のサブスケジュール７１０または７１２のうちの１つ）の間の機能ブロックの特定の実行インスタンスを指し、インデックス値は、開始時間オフセットをそれぞれの機能ブロックと関連付けるために使用されてもよく、そして、開始時間オフセットはそれぞれの機能ブロックの開始時間オフセット（例えば、開始時間オフセット１３０６ｂ）を意味する。
【０１１５】
図２６は、図２２のフィールド装置１０１２ａ〜ｃと、図２２の機能ブロック１０２２ａ〜ｅと、機能ブロック１０２２ａ〜ｅに対応する開始時間オフセットとを表すオブジェクトの間の関係を示す、別の例示的なオブジェクト指向ソフトウェア実行環境１４００である。図２２のフィールド装置１０１２ａに対応するＰＤＴ１１装置オブジェクト１４０２ａは、ＡＩ１１機能ブロック１０２２ａ（図２２）に対応するＦＦＡＩ１１機能オブジェクト１４０４ａと、ＡＩ１２機能ブロック１０２２ｃ（図２２）に対応するＦＦＡＩ１２機能オブジェクト１４０４ｂと、図２２のＡＯ１１機能ブロック１０２２ｅに対応するＦＦＡＯ１１機能オブジェクト１４０４ｃとに結合される。図２２のフィールド装置１０１２ｂに対応するＰＤＴ１２装置オブジェクト１４０２ｂは、ＰＩＤ１２機能ブロック１０２２ｂ（図２２）に対応するＦＦＰＩＤ１２機能オブジェクト１４０４ｄに結合される。図２２のフィールド装置１０１２ｃに対応するＰＤＴ１３装置オブジェクト１４０２ｃは、ＰＩＤ１３機能ブロック１０２２ｄ（図２２）に対応するＦＦＰＩＤ１３機能オブジェクト１４０４ｅに結合される。
【０１１６】
図２３の、開始時間オフセットの数量テーブル１１００に従って、機能オブジェクト１４０４ａ〜ｅのそれぞれは、図２６に示す複数の開始時間オフセット１４０６ａ〜ｋのうちの該当する１つ以上を有する。ＦＦＡＯ１１機能オブジェクト１４０４ｃに対応する例示的な開始時間オフセットデータ構造１４１０は、開始時間オフセット１４０６ｆ〜ｉを有する開始リスト１４１２を記憶する。オフセットデータ構造１４１０と、図２４の例示的な実行シーケンス図１２００とを参照すると、開始時間オフセット１４０６ｆは、順序番号１とｔ3の開始時間オフセットとに関連付けられ、開始時間オフセット１４０６ｇは、順序番号２とｔ7の開始時間オフセットとに関連付けられ、開始時間オフセット１４０６ｈは順序番号３とｔ11の開始時間オフセットとに関連付けられ、開始時間オフセット１４０６ｉは順序番号４とｔ15の開始時間オフセットとに関連付けられる。
【０１１７】
図２７は、ＡＯ１１機能ブロック１０２２ｅ（図２２）に関連付けられた開始リスト１４１２（図２６）が、ワークステーション１０２（図１３）からフィールド装置１０１２ａ（図２２）にコピーされる例示的な方法を示す。フィールド装置１０１２ａ〜ｃがそれらのそれぞれの機能ブロック１０２２ａ〜ｅ（図２２）に対応する機能を、図２４のスケジュール１２０２の間のスケジュールされた時間において実行することを可能にするために、ワークステーション１０２は、フィールド装置１０１２ａ〜ｃに開始時間オフセット（例えば、開始時間オフセット１４０６ｆ〜ｉ）を有する開始リスト（例えば、開始リスト１４１２）をダウンロードする。図２７に示すように、ワークステーション１０２は、ＡＯ１１機能ブロック１０２２ｅを含む図２２のモジュール１０２０を記憶する。図示されていないが、ワークステーション１０２は図２２のその他の機能ブロック１０２２ａ〜ｄも記憶する。図示されている例では、ワークステーション１０２は、図２６の開始時間オフセット１４０６ｆ〜ｉを有する開始リスト１４１２を記憶する。図示されていないが、ワークステーション１０２は、機能ブロック１０２２ａ〜ｄに対応する開始リストも記憶する。
【０１１８】
図２７には、フィールド装置１０１２ａをデジタルデータバス１０１４に通信可能に結合するように構成されたポート１５０４を有する図２２のフィールド装置１０１２ａも示されている。ポート１５０４は、デジタルデータバス１０１４に関連付けられたスケジュール１２０２（図２４）を備える。特に、スケジュール１２０２は、ポート１５０４に、スケジュールの期間（例えば、２０００ｍｓ）と、デジタルデータバス１０１４に通信可能に結合されたすべてのその他のフィールド装置（例えば、フィールド装置１０１２ａ〜ｃ）がそれらのそれぞれの機能（例えば、図２２の機能ブロック１０２２ａ〜ｄに対応する機能）を実行するように構成された時間とを指示する。
【０１１９】
図示されている例では、フィールド装置１０１２ａは、ＡＯ１１機能ブロック１０２２ｅに対応するＡＯ機能であってＡＯフィールド機能（ＦＦ）ブロック１５０６として示されているＡＯ機能を記憶する。もちろん、フィールド装置１０１２ａは、例えば、図２２に示すＡＩ１１機能ブロック１０２２ａに対応するＡＩフィールド機能ブロックを含むより多くの機能を記憶してもよい。ＡＯ１１機能ブロック１０２２ｅと、ＡＯフィールド機能ブロック１５０６と、開始リスト１４１４とは、ＡＯ１１機能ブロック１０２２ｅとＡＯフィールド機能ブロック１５０６とを開始リスト１４１４内の開始時間オフセット１４０６ｆ〜ｉに（例えば、キーによって）関連付けるインデックス値１５０８を記憶する。図１３のワークステーション１０２またはコントローラ１０６内のスケジュール生成プロセスが開始時間オフセット１４０６ｆ〜ｉを決定し、開始リスト１４１４内に開始時間オフセット１４０６ｆ〜ｉを記憶した後は、ワークステーション１０２またはコントローラ１０６は、開始時間オフセット１４０６ｆ〜ｉを有する開始リスト１４１４をデジタルデータバス１０１４を介してフィールド装置１０１２ａに通信する。図２７に示すように、フィールド装置１０１２ａは、次に、開始リスト１４１４を記憶する。フィールド装置１０１２ａは、次に、開始時間オフセット１４０６ｆ〜ｉを使用して、スケジュール１２０２に従った適切な時にＡＯフィールド機能ブロック１５０６を実行するタイミングを決定する。図示されていないが、フィールド装置１０１２ａは、ＡＩ１１およびＡＩ１２機能ブロック１０２２ａおよび１０２２ｃ（図２２）に対応する開始リストも記憶する。
【０１２０】
図２８は、本明細書に記載された例示的な方法および装置を使用して、スケジュール（例えば、図１９および図２４のスケジュール７０２および１２０２）を生成するように構成された複数のクラス１６０２ａ〜ｉを有する、例示的なオブジェクト指向プログラミング環境１６００を示す。ＤｂｓＩｎｔｅｒｆａｃｅＤｅｖｉｃｅクラス１６０２ａは、フィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃ、または図２２のフィールド装置１０１２ａ〜ｃ）あるいはフィールド装置オブジェクト（例えば、図２５のフィールド装置オブジェクト１３０２ａ〜ｃ、または図２６のフィールド装置オブジェクト１４０２ａ〜ｃ）と情報を交換するために提供される。例えば、ＤｂｓＩｎｔｅｒｆａｃｅＤｅｖｉｃｅクラス１６０２ａは、フィールド装置またはフィールド装置オブジェクトと通信するように構成された、複数の関数またはメソッドを備えてもよい。ＤｂｓＩｎｔｅｒｆａｃｅＤｅｖｉｃｅクラス１６０２ａの例示的な関数は、フィールド装置１１２ａ〜ｃまたは１０１２ａ〜ｃのそれぞれに関連付けられたブロック走査レートまたはブロック未加工実行周期（ＴBRE）を取得する。
【０１２１】
ＤｂｓＩｎｔｅｒｆａｃｅＭｏｄｕｌｅクラス１６０２ｂは、１つ以上のフィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃ、または図２２のフィールド装置１０１２ａ〜ｃ）であって、それらについてのスケジュール（例えば、図１９のスケジュール７０２、または図２４のスケジュール１２０２）が生成されるべき１つ以上のフィールド装置を含む、モジュールまたはモジュールオブジェクト（例えば、図１３のモジュール１２０、または図２２のモジュール１０２０）と情報を交換するために提供される。ＤｂｓＩｎｔｅｒｆａｃｅＭｏｄｕｌｅクラス１６０２ｂの例示的な関数またはメソッドは、ＧＵＩ制御システム設計インタフェースを使用して指定される機能ブロックの相互接続（例えば、図１４に示す機能ブロック１２２ａ〜ｅの相互接続）によって定義されるモジュール（例えば、図１３のモジュール１２０）から、機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅ）の実行順序を取得するように構成されてもよい。
【０１２２】
ＤｂｓＳｃｈｅｄｕｌｅＢａｓｅＴｅｍｐｌａｔｅクラス１６０２ｃは、スケジュールの基準テンプレート（例えば、図１９のスケジュール７０２を生成するための基準テンプレート、または図２４のスケジュール１２０２を生成するための基準テンプレート）を取得および／または生成するために提供される。スケジュールの基準テンプレートは、スケジュールを生成するために必要とされる、基本的な又は基礎的な枠組みを提供する。例えば、スケジュールの基準テンプレートは、機能ブロックをスケジュールすることに関連付けられた規則を含んでもよく、かつ／または、基準テンプレートは、デフォルトパラメータ（例えば、スケジュール期間、スケジュール期間ごとの実行など）を指定してもよい。いくつかの例示的実施では、スケジュールのための基準テンプレートは、例えば、ワークステーション１０２内のスケジュール基準テンプレートデータベース（図示せず）から取得されてもよい。
【０１２３】
ＤｂｓＳｃｈｅｄｕｌｅクラス１６０２ｄは、本明細書に記載されたスケジュール（例えば、図１９のスケジュール７０２、図２４のスケジュール１２０２、または任意のその他のスケジュール）を生成するために提供される。ＤｂｓＳｕｂＳｃｈｅｄｕｌｅクラス１６０２ｅは、本明細書に記載されたサブスケジュール（例えば、図１９のサブスケジュール７１０および７１２、図２４のサブスケジュール１２１４および１２１６、または任意のその他のサブスケジュール）を生成するために提供される。ＤｂｓＳｕｂＳｃｈｅｄｕｌｅＢａｓｅＴｅｍｐｌａｔｅクラス１６０２ｆは、サブスケジュールの基準テンプレート（例えば、図１９のサブスケジュール７１０および７１２を生成するための基準テンプレート、または図２４のサブスケジュール１２１４および１２１６を生成するための基準テンプレート）を取得および／または生成するために提供される。サブスケジュールの基準テンプレートは、サブスケジュールを生成するために必要とされる、基本的な又は基礎的な枠組みを提供する。いくつかの例示的実施では、サブスケジュールのための基準テンプレートは、例えば、ワークステーション１０２内のサブスケジュール基準テンプレートデータベース（図示せず）から取得されてもよい。
【０１２４】
ＤｂｓＣｏｍｐｅｌＤａｔａＳｅｑｕｅｎｃｅクラス１６０２ｇは、スケジュールに関連付けられた強制データシーケンスを構成するために提供されてもよい。強制データシーケンスは、フィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃのうちの１つ、または図２２のフィールド装置１０１２ａ〜ｃのうちの１つ）が、そのデータ（例えば、測定情報、ステータス情報など）をその他のフィールド装置にいつ通信または発行（ｐｕｂｌｉｓｈ）すべきかを指定する。図示されている例では、ＤｂｓＣｏｍｐｅｌＤａｔａＳｅｑｕｅｎｃｅクラス１６０２ｇは、スケジュール（例えば、図１９および図２４のスケジュール７１０および１２０２）内で指示されたフィールド装置による機能ブロックの実行に続いて、それらのフィールド装置に、コントローラ（例えば、コントローラ１０６）によって強制データコマンドが発行（ｉｓｓｕｅ）されることを確実にする。
【０１２５】
ＤｂｔＳｃｈｅｄｕｌｅＢａｓｅＴｅｍｐｌａｔｅクラス１６０２ｈおよびＤｂｔＳｃｈｅｄｕｌｅクラス１６０２ｉは、一時的な作業領域であって、スケジュール生成プロセスの間に、かつ、フィールド装置にスケジュールを発行（ｐｕｂｌｉｓｈ）する前に、その中でスケジュール（例えば、スケジュール７０２または１２０２、あるいは任意のその他のスケジュール）を生成するための一時的な作業領域を提供する。
【０１２６】
図２９は、本明細書に記載された例示的な方法に従ってスケジュールを生成するために使用され得る例示的な装置１７００の詳細なブロック図である。例示的な装置１７００は、ワークステーション１０２（図１３）、コントローラ１０６（図１３）、あるいは、ハードウェア、ファームウェア、および／またはソフトウェアの任意の所望の組み合わせを使用して実施されてもよい。例えば、１つ以上の集積回路、個別半導体部品、または受動電子部品が使用されてもよい。それに加えて、または別法として、例示的な装置１７００のブロックのいくつかまたはすべて、あるいはそれらの部分は、例えばプロセッサシステム（例えば、図３５の例示的なプロセッサシステム２３１０）によって実行された場合に、図３０〜３３のフローチャートで表される動作を実行する、機械アクセス可能媒体上に記憶された、命令、コード、ならびに／あるいはその他のソフトウェアおよび／またはファームウェアなどを使用して実施されてもよい。ソフトウェアの例示的実施では、以下で述べる例示的な装置のブロックは、図２８に関連して上述したオブジェクト指向プログラミングクラス１６０２ａ〜ｇを実施するために使用されてもよい。
【０１２７】
例示的な装置１７００は、フィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃ、または図２２のフィールド装置１０１２ａ〜ｃ）と情報を交換するように構成されたフィールド装置インタフェース１７０２を備える。例えば、フィールド装置インタフェース１７０２は、フィールド装置１１２ａ〜ｃまたは１０１２ａ〜ｃのそれぞれに関連付けられたブロック走査レートまたはブロック未加工実行周期（ＴBRE）を取得してもよい。
【０１２８】
例示的な装置１７００は、１つ以上のフィールド装置（例えば、図１３のフィールド装置１１２ａ〜ｃ、または図２２のフィールド装置１０１２ａ〜ｃ）であって、それらについてのスケジュール（例えば、図１９のスケジュール７０２、または図２４のスケジュール１２０２）が生成されるべき１つ以上のフィールド装置を含むモジュールと情報を交換するように構成された、モジュールインタフェース１７０４をさらに備える。例えば、モジュールインタフェース１７０４は、ＧＵＩ制御システム設計インタフェースを使用して指定される機能ブロックの相互接続（例えば、図１４に示す機能ブロック１２２ａ〜ｅの相互接続）によって定義されるモジュール（例えば、図１３のモジュール１２０）から、機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅ）の実行順序を取得するように構成されてもよい。
【０１２９】
例示的な装置１７００は、スケジュールの基準テンプレート（例えば、図１９のスケジュール７０２を生成するための基準テンプレート、または図２４のスケジュール１２０２を生成するための基準テンプレート）を取得および／または生成するように構成された、スケジュール基準テンプレートインタフェース１７０６をさらに備える。例示的実施では、スケジュール基準テンプレートインタフェース１７０６は、例えば、モジュール（例えば、図１３のモジュール１２０、または図２２のモジュール１０２０）内の機能ブロック（例えば、図１３の機能ブロック１２２ａ〜ｅ、および図２２の１０２２ａ〜ｅ）の数量およびタイプに基づいて、ワークステーション１０２内のスケジュール基準テンプレートデータベースからスケジュールの基準テンプレートを取得する。
【０１３０】
例示的な装置１７００は、本明細書に記載されたスケジュール（例えば、図１９のスケジュール７０２、図２４のスケジュール１２０２、または任意のその他のスケジュール）を生成するように構成されたスケジュール生成器（ｓｃｈｅｄｕｌｅ  ｇｅｎｅｒａｔｏｒ）１７０８をさらに備える。それに加えて、例示的な装置１７００は、本明細書に記載されたサブスケジュール（例えば、図１９のサブスケジュール７１０および７１２、図２４のサブスケジュール１２１４および１２１６、または任意のその他のサブスケジュール）を生成するように構成されたサブスケジュール生成器（ｓｕｂ−ｓｃｈｅｄｕｌｅ  ｇｅｎｅｒａｔｏｒ）１７１０を備える。サブスケジュールの基準テンプレートを生成または取得するために、例示的な装置１７００はサブスケジュール基準テンプレートインタフェース１７１２を備える。
【０１３１】
例示的な装置１７００は、スケジュールに関連付けられた強制データシーケンスを生成するように構成された強制データシーケンス生成器（ｃｏｍｐｅｌ  ｄａｔａ  ｓｅｑｕｅｎｃｅ  ｇｅｎｅｒａｔｏｒ）１７１４をさらに備える。例えば、スケジュール生成器１７０８がスケジュール（例えば、スケジュール７０２（図１９）または１２０２（図２４）のうちの１つ）の生成を完了した場合、強制データシーケンス生成器１７１４は、スケジュール内で指示されたフィールド装置による機能ブロックの実行に続いて、それらのフィールド装置にコントローラ（例えば、図１３のコントローラ１０６）が強制データコマンドを発行（ｉｓｓｕｅ）することを確実にするために、スケジュールのための強制データシーケンスを生成してもよい。このようにして、フィールド装置によって生成されたデータ（例えば、測定情報、ステータス情報、計算結果など）は、他の動作を実行するためにそのデータを必要とするその他のフィールド装置に通信または発行（ｐｕｂｌｉｓｈ）される。
【０１３２】
例示的な装置１７００は、機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅ、ならびに図２４の機能ブロック１０２２ａ〜ｅ）を追加、削除、および相互接続することによってプロセス制御ルーチンを設計するために使用されるＧＵＩ設計ソフトウェアアプリケーション（例えば、図１４に示すように機能ブロック１２２ａ〜ｅを相互接続するために使用される、ＧＵＩ設計ソフトウェアアプリケーション）から、情報、コマンドなどを受信するように構成された構成インタフェース１７１６をさらに備える。例えば、ユーザが、２つの機能ブロックの間の相互接続を変更した場合、ＧＵＩ設計ソフトウェアアプリケーションは、構成インタフェース１７１６に、変更の通知と変更について説明する情報（例えば、機能ブロックＡの出力が機能ブロックＢの入力に接続された）とを送信する。さらに、構成インタフェース１７１６は、プロセス制御システムの構成情報（例えば、デジタルデータバスの結合規則、デジタルデータバスの制限など）を取得するために、ワークステーション１０２内の、または図１３のＬＡＮ１０８に結合された任意のその他のプロセッサシステム内のデータ構造またはデータベースにアクセスするように構成される。
【０１３３】
例示的な装置１７００は、上記の式１に従ってブロック未加工実行周期（ＴBRE）を決定するための、未加工実行周期決定器（ｒａｗ  ｅｘｅｃｕｔｉｏｎ  ｐｅｒｉｏｄ  ｄｅｔｅｒｍｉｎｅｒ）１７１８をさらに備える。例示的な装置１７００は、図２０の丸めテーブル８００に示された丸め値に従ってブロック未加工実行周期（ＴBRE）を丸めるための丸め器（ｒｏｕｎｄｅｒ）１７２０をさらに備える。さらに、例示的な装置１７００は、機能ブロックについての開始時間オフセットの数量（ＱS）と開始時間オフセット値（ｔS）とを生成するように構成された開始時間オフセット決定器（ｓｔａｒｔ  ｔｉｍｅ  ｏｆｆｓｅｔ  ｄｅｔｅｒｍｉｎｅｒ）１７２２を備える。例えば、開始時間オフセット決定器１７２２は、式３および式４に関連して上述した計算を実行するように構成されてもよい。さらに、例示的な装置１７００は、機能ブロック（例えば、図１３および図１４の機能ブロック１２２ａ〜ｅ、ならびに図２２の機能ブロック１０２２ａ〜ｅ）のブロック走査レート因子（ＦBSR）を決定するための、ブロック走査レート因子決定器（ｂｌｏｃｋ  ｓｃａｎ  ｒａｔｅ  ｆａｃｔｏｒ  ｄｅｔｅｒｍｉｎｅｒ）１７２４を備える。例えば、ブロック走査レート因子決定器１７２４は、上記の式２に基づいて、ブロック走査レート因子（ＦBSR）を決定してもよい。値を比較するために、例示的装置１７００は比較器（ｃｏｍｐａｒａｔｏｒ）１７２６を備える。例えば、比較器１７２６は、フィールド装置に関連付けられた、最も遅いブロック未加工実行周期（ＴSBE）を、その装置に割り当てられた機能ブロックのブロック未加工実行周期（ＴBRE）を比較することによって、そして、どれが最も遅いかを決定することによって決定するために使用されてもよい。
【０１３４】
図３０〜図３３は、図２９の例示的な装置１７００を実施するために使用されてもよい例示的な方法のフローチャートである。いくつかの例示的実施では、図３０〜図３３の例示的な方法は、プロセッサ（例えば、図３５の例示的なプロセッサシステム２３１０内に示されているプロセッサ２３１２）による実行のためのプログラムを含む、機械読み取り可能命令を使用して実施されてもよい。プログラムは、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、ハードドライブ、デジタル多用途ディスク（ＤＶＤ）、またはプロセッサ２３１２に関連付けられたメモリなどの、有形の媒体上に記憶されたソフトウェア内に組み込まれてもよく、かつ／または、ファームウェアおよび／または専用ハードウェア内に、周知の方法で組み込まれてもよい。さらに、例示的なプログラムは、図３０〜図３３に示すフローチャートに関して説明されるが、図２９の例示的な装置１７００を実施する多くのその他の方法が代わりに使用されてもよいということを当業者は容易に理解するであろう。例えば、ブロックの実行順序は変更されてもよく、かつ／または、記載されるブロックのうちのいくつかは変更または除去されてもよく、あるいは組み合わせられてもよい。
【０１３５】
説明の目的のために、図３０〜図３３のフロー図については、図２４のスケジュール１２０２に関連して以下で述べる。しかし、図３０〜図３３のフロー図に関連して述べる例示的な方法は、例えば、図１９のスケジュール７０２を含む任意のその他のスケジュールを生成するために使用されてもよい。
【０１３６】
図３０を参照すると、スケジュール（図１９および図２４のスケジュール７０２および１２０２、または、プロセス制御システム内での機能ブロックの実行をスケジュールするための任意のその他のスケジュール）を生成するための例示的な方法において、構成インタフェース１７１６は、新しいモジュール（例えば、図２２のモジュール１０２０）が作成されたか、または既存のモジュールの構成が変更されたかどうかを判定する（ブロック１８０２）。新しいモジュールが追加されておらず、かつ、既存のモジュールが変更されていないと構成インタフェース１７１６が判定した場合、新しいモジュールが追加されたか、または、既存のモジュールが変更されたと構成インタフェース１７１６が判定するまで、制御はブロック１８０２において留まる。
【０１３７】
新しいモジュールが追加されたか、または、既存のモジュールの構成が変更されたと構成インタフェース１７１６が判定した場合（ブロック１８０２）、構成インタフェース１７１６は、公知の方法に従ってスケジュールを生成すべきかどうかを判定する（ブロック１８０４）。例えば、構成インタフェース１７１６は、ワークステーション１０２（図１３）内に記憶されたデータ構造から、スケジュールタイプ記述子を取得してもよい。公知の方法に従って生成された例示的なスケジュールは図１８に関連して上述した。スケジュールを生成するために公知の方法が使用されるべきであると構成インタフェース１７１６が判定した場合、図３０の例示的な方法は終了する。
【０１３８】
スケジュールを生成するために公知の方法が使用されるべきではない、と構成インタフェース１７１６が判定した場合、構成インタフェース１７１６は、モジュール構成がいかなる結合規則にも違反していないということを確認する（ブロック１８０６）。この結合規則は、特定のモジュール構成が有効かどうかを示す。例えば、図２２のモジュール１０２０内の機能ブロック１０２２ａ〜ｅのうちの１つが、フィールド装置１０１２ａ〜ｃのうちの１つにも、その他のいかなるフィールド装置にも割り当てられていない場合、または、機能ブロック１０２２ａ〜ｅのうちの１つが適切に接続されていない場合、モジュール１０２０はスケジュール生成のために有効ではない。図示されている例では、構成インタフェース１７１６は、モジュール構成を結合規則と照合するプロセス制御システム設計ソフトウェアアプリケーション内の確認関数から確認を受信する。モジュール構成が有効ではないと構成インタフェース１７１６が判定した場合（ブロック１８０８）、図３０の例示的な方法は終了する。
【０１３９】
モジュール構成が有効であると構成インタフェース１７１６が判定した場合（ブロック１８０８）、図２２の機能ブロック１０２２ａ〜ｅの間の機能ブロック接続は、デジタルデータバス１０１４（図２２）に、相互に結合される（ブロック１８１０）。例えば、機能ブロック接続は、図１５に関連して上述したように結合されてもよい。例示的な装置１７００は、次に、機能ブロック１０２２ａ〜ｅ（図２２）のそれぞれについて、開始時間オフセットの数量（ＱS）を決定する（ブロック１８１２）。ブロック１８１２の動作は、図３１に関連して以下で述べる例示的な方法を使用して実施されてもよい。
【０１４０】
例示的な装置１７００が、開始時間オフセットの数量（ＱS）を決定した後で、構成インタフェース１７１６は、デジタルデータバス１０１４の制限を取得する（ブロック１８１４）。例えば、構成インタフェース１７１６は、デジタルデータバス１０１４上で動作してもよい最長の可能なスケジュールを定義する時間値を取得してもよい。構成インタフェース１７１６は、例えば、ワークステーション１０２またはコントローラ１０６内のデジタルデータバス特性データベースから制限を取得してもよい。スケジュール基準テンプレートインタフェース１７０６（図２９）は、次に、例えば、ワークステーション１０２内のスケジュールテンプレートデータベースから、スケジュール基準テンプレートを取得する（ブロック１８１６）。例示的な装置１７００は、次に、図３２の例示的な方法に関連して以下で詳細に述べるように、スケジュール１２０２（図２４）を生成する（ブロック１８１８）。例示的な装置１７００がスケジュール１２０２を生成した後で、制御は呼び出し元の関数またはプロセスに戻り、図３０の例示的な方法は終了する。
【０１４１】
図３１を参照すると、図示されているフロー図は、機能ブロック１０２２ａ〜ｅ（図２２）のそれぞれについて開始時間オフセットの数量（ＱS）を決定するための図３０のブロック１８１２を実施するために使用され得る例示的な方法を示す。最初に、モジュールインタフェース１７０４は、図２２のモジュール１０２０のモジュール実行周期（ＴME）を取得する（ブロック１９０２）。モジュールインタフェース１７０４は、次に、モジュール１０２０に関連付けられたフィールド装置（例えば、フィールド装置１０２２ａ〜ｅのうちの１つ）を選択する（ブロック１９０４）。例えば、モジュールインタフェース１７０４は、機能ブロック１０２２ａ〜ｅがどのフィールド装置（例えば、フィールド装置１０１２ａ〜ｃ）に割り当てられているかを判定し、そして、例えばフィールド装置オブジェクト（例えば、図２６のフィールド装置オブジェクト１４０２ａ〜ｃのうちの１つ）を選択することによって、それらのフィールド装置のうちの１つを選択してもよい。説明の目的のために、ブロック１９０４において、モジュールインタフェース１７０４は図２２のフィールド装置１０１２ａを選択するものとする。オブジェクト指向プログラミング環境では、モジュールインタフェース１７０４は、図２６のフィールド装置オブジェクト１４０２ａを選択することによってフィールド装置１０１２ａを選択する。
【０１４２】
モジュールインタフェース１７０４は、次に、選択されたフィールド装置１０１２ａに割り当てられた機能ブロック（例えば、機能ブロック１０２２ａ、１０２２ｃ、または１０２２ｅのうちの１つ）を選択する（ブロック１９０６）。説明の目的のために、モジュールインタフェース１７０４は、ブロック１９０６において図２２のＡＩ１２機能ブロック１０２２ｃを選択するものとする。オブジェクト指向プログラミング環境では、モジュールインタフェース１７０４は、図２６のＦＦＡＩ１２機能ブロックオブジェクト１４０４ｂを選択することによってＡＩ１２機能ブロック１０２２ｃを選択する。ブロック走査レート因子決定器１７２４（図２９）は、次に、選択されたＡＩ１２機能ブロック１０２２ｃのブロック走査レート因子（ＦBSR）を決定する（ブロック１９０８）。例えば、ブロック走査レート因子決定器１７２４は、モジュール１０２０のモジュール実行周期（ＴME）と、ＡＩ１２機能ブロック１０２２ｃのブロック走査レート（ＢＳＲ）とを、モジュールインタフェース１７０４から取得し、そして、上記の式２を使用してＡＩ１２機能ブロック１０２２ｃのブロック走査レート因子（ＦBSR）を決定してもよい。
【０１４３】
未加工実行周期決定器１７１８（図２９）は、次に、ＡＩ１２機能ブロック１０２２ｃのブロック未加工実行周期（ＴBRE）を決定する（ブロック１９１０）。例えば、未加工実行周期決定器１７１８は、上記の式１を使用して、ＡＩ１２機能ブロック１０２２ｃのブロック未加工実行周期（ＴBRE）を、モジュール１０２０のモジュール実行周期（ＴME）と、ＡＩ１２機能ブロック１０２２ｃのブロック走査レート因子（ＦBSR）とに基づいて決定してもよい。丸め器１７２０（図２９）は、次に、ＡＩ１２機能ブロック１０２２ｃのブロック未加工実行周期（ＴBRE）を、図２０の丸めテーブル８００に基づいて、丸められたブロック未加工実行周期（ＲＴBRE）に丸める（ブロック１９１２）。
【０１４４】
モジュールインタフェース１７０４は、次に、選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含むかどうかを判定する（ブロック１９１４）。選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含む、とモジュールインタフェース１７０４が判定した場合（ブロック１９１４）、制御はブロック１９０６に戻され、そして、モジュールインタフェース１７０４は、フィールド装置１０１２ａに割り当てられた次の機能ブロック（例えば、機能ブロック１０２２ａおよび１０２２ｅのうちの１つ）を選択する。そうではなく、選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含まないとモジュールインタフェース１７０４が判定した場合（例えば、フィールド装置１０１２ａに割り当てられた、モジュール１０２０内の機能ブロック１０２２ａ、１０２２ｃ、および１０２２ｅのすべてについて、丸められたブロック未加工実行周期（ＲＴBRE）が決定済みである場合）、比較器１７２６は、次に、選択されたフィールド装置に関連付けられた最も遅いブロック未加工実行周期（ＴSBE）を決定する（ブロック１９１６）。例えば、比較器１７２６は、フィールド装置１０１２ａに割り当てられた機能ブロック１０２２ａ、１０２２ｃ、および１０２２ｅの、ブロック１９０６、１９０８、１９１０、および１９１２に関連して上記で決定された丸められたブロック未加工実行周期（ＲＴBRE）を比較してもよい。比較器１７２６は、次に、比較に基づいて、最も遅いブロック未加工実行周期（ＴSBE）を丸められたブロック未加工実行周期（ＲＴBRE）のうちの最も遅い１つに等しく設定してもよい。
【０１４５】
モジュールインタフェース１７０４は、次に、機能ブロックであって、それについての、開始時間オフセットの数量（ＱS）を決定すべき機能ブロックを選択する（ブロック１９１８）。例えば、モジュールインタフェース１７０４は、モジュール１０２０内に含まれ、かつ、選択されたフィールド装置１０１２ａに割り当てられている機能ブロック１０２２ａ、１０２２ｃ、および１０２２ｅのうちの１つを選択する。説明の目的のために、モジュール１０２０は、ブロック１９１８においてＡＩ１２機能ブロック１０２２ｃを選択するものとする。開始時間オフセット決定器１７２２（図２９）は、次に、ＡＩ１２機能ブロック１０２２ｃについての開始時間オフセットの数量（ＱS）を決定する（ブロック１９２０）。例えば、開始時間オフセット決定器１７２２は、上記の式３を使用して、開始時間オフセットの数量（ＱS）を、ＡＩ１２機能ブロック１０２２ｃの丸められたブロック未加工実行周期（ＲＴBRE）と、ブロック１９１６において決定された最も遅いブロック未加工実行周期（ＴSBE）とに基づいて決定してもよい。
【０１４６】
モジュールインタフェース１７０４は、次に、選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含むかどうかを判定する（ブロック１９２２）。選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含む、とモジュールインタフェース１７０４が判定した場合（ブロック１９２２）、制御はブロック１９１８に戻され、そして、モジュールインタフェース１７０４は、フィールド装置１０１２ａに割り当てられた次の機能ブロック（例えば、機能ブロック１０２２ａおよび１０２２ｅのうちの１つ）を選択する。そうではなく、選択されたフィールド装置１０１２ａに割り当てられた別の機能ブロックをモジュール１０２０が含まないとモジュールインタフェース１７０４が判定した場合（例えば、フィールド装置１０１２ａに割り当てられた、モジュール１０２０内の機能ブロック１０２２ａ、１０２２ｃ、および１０２２ｅのすべてについて、開始時間オフセットの数量（ＱS）が決定済みである場合）、モジュールインタフェース１７０４は、別のフィールド装置（例えば、図２２のフィールド装置１０１２ｂおよび１０１２ｃのうちの１つ）がモジュール１０２０に関連付けられているかどうかを判定する（ブロック１９２４）。例えば、別のフィールド装置（例えば、フィールド装置１０１２ｂおよび１０１２ｃ）に割り当てられている任意の機能ブロック（例えば、機能ブロック１０２２ｂおよび１０２２ｃ）であって、それについての、開始時間オフセットの数量（ＱS）がまだ決定されていない機能ブロックをモジュール１０２０が含む場合、モジュールインタフェース１７０４は、別のフィールド装置がモジュール１０２０に関連付けられていると判定してもよい。
【０１４７】
別のフィールド装置（例えば、図２２のフィールド装置１０１２ｂおよび１０１２ｃのうちの１つ）がモジュール１０２０に関連付けられている、とモジュールインタフェース１７０４が判定した場合（ブロック１９２４）、制御はブロック１９０４に戻され、その時点で、モジュールインタフェース１７０４は次のフィールド装置（例えば、図２２のフィールド装置１０１２ｂおよび１０１２ｃのうちの１つ）を選択する。そうではなく、別のフィールド装置がモジュール１０２０に関連付けられていないとモジュールインタフェース１７０４が判定した場合（ブロック１９２４）、モジュールインタフェース１７０４は、別のモジュール（例えば、モジュール１０２０以外のモジュール）がデジタルデータバス１０１４に関連付けられているかどうかを判定する（ブロック１９２６）。例えば、デジタルデータバス１０１４に関連付けられた別のモジュールは、フィールド装置１０１２ａ〜ｃのうちのいくつかに割り当てられた機能ブロックを含んでもよく、そして、例示的な装置１７００は、次に、それらの機能ブロックについての開始時間オフセットの数量（ＱS）を決定する。別のモジュールがデジタルデータバス１０１４に関連付けられているとモジュールインタフェース１７０４が判定した場合、制御はブロック１９０２に戻され、その時点で、モジュールインタフェース１７０４は次のモジュールのモジュール実行周期（ＴME）を取得する。そうではなく、別のモジュールがデジタルデータバス１０１４に関連付けられていないとモジュールインタフェース１７０４が判定した場合、制御は呼び出し元の関数またはプロセス（例えば、図３０の例示的な方法）に戻され、図３１の例示的な方法は終了する。
【０１４８】
図３２Ａおよび図３２Ｂを参照すると、図示されているフロー図は、サブスケジュール（例えば、図２４のサブスケジュール１２１４および１２１６）、ならびにサブスケジュールに基づくスケジュール（例えば、図２４のスケジュール１２０２）を生成するための、図３０のブロック１８１８を実施するために使用され得る例示的な方法を示す。最初に、サブスケジュール生成器１７１０は、デジタルデータバス１０１４に関連付けられた、すべての丸められたブロック未加工実行周期（ＲＴBRE）を取得する。例えば、サブスケジュール生成器１７１０は、デジタルデータバス１０１４に関連付けられたすべての機能ブロック（例えば、図２２の機能ブロック１０２２ａ〜ｅ）について、ブロック１９１２において決定された、すべての丸められたブロック未加工実行周期（ＲＴBRE）を取得する。サブスケジュール基準テンプレートインタフェース１７１２（図２９）は、次に、丸められたブロック未加工実行周期（ＲＴBRE）のそれぞれについてのサブスケジュール基準テンプレートを取得する（ブロック２００４）。例えば、サブスケジュール基準テンプレートインタフェース１７１２は、ワークステーション１０２（図１３）内のサブスケジュール基準テンプレートデータベースまたはデータ構造から、サブスケジュール基準テンプレートを取得してもよい。図示されている例では、サブスケジュール基準テンプレートのそれぞれは、ブロック２００２において取得された丸められたブロック未加工実行周期（ＲＴBRE）のうちのそれぞれの１つに等しいサブスケジュール実行周期を有するように構成されている。例えば、図２４に示すように、サブスケジュール１２１４のサブスケジュール実行周期は５００ｍｓに等しく、サブスケジュール１２１６のサブスケジュール実行周期は２０００ｍｓに等しい。
【０１４９】
サブスケジュール生成器１７１０は、最も短いサブスケジュール実行周期を有するサブスケジュールテンプレートを選択する（ブロック２００６）。例えば、サブスケジュール生成器１７１０は、比較器１７２６（図２９）を使用して、すべてのサブスケジュール実行周期を相互に比較してサブスケジュール周期のうちのどの１つが最も短いかを判定してもよい。サブスケジュール生成器１７１０は、次に、同期データ転送を実行するように構成されるフィールド装置を選択する（ブロック２００８）。フィールド装置（例えば、図２２のフィールド装置１０１２ａ〜ｃのうちの１つ）は、同期した方法でデータを転送する機能ブロック（例えば、図２２の機能ブロック１０２２ａ〜ｅのうちの１つ）を実行するように割り当てられている場合、同期データ転送を実行するように構成される。機能ブロックは、その機能ブロックによって生成されたデータが別の機能ブロックによって特定の時において必要とされる場合、同期した方法でデータを転送する。例えば、ＰＩＤ１３機能ブロック１０２２ｄ（図２２および図２４）が、ＡＩ１２機能ブロック１０２２ｃ（図２２および図２４）からのデータを図２４に示す時間ｔ2までに必要とする場合、フィールド装置１０１２ａは、ＰＩＤ１３機能ブロック１０２２ｄが時間ｔ2までにデータを取得することを確実にするために、ＡＩ１２機能ブロック１０２２ｃに関連付けられた同期データ転送を実行しなければならない。説明の目的のために、サブスケジュール生成器１７１０はフィールド装置１０１２ａ（図２２および図２４）を選択するものとする。
【０１５０】
サブスケジュール生成器１７１０は、次に、選択されたフィールド装置１０１２ａに関連付けられた、最も遅いブロック未加工実行周期（ＴSBE）を取得する（ブロック２０１０）。例えば、サブスケジュール生成器１７１０は、フィールド装置１０１２ａについて図３１のブロック１９１６において決定された、最も遅いブロック未加工実行周期（ＴSBE）を取得してもよい。サブスケジュール生成器１７１０は、次に、例えば比較器１７２６（図２９）を使用して、最も遅いブロック未加工実行周期（ＴSBE）が選択されたサブスケジュールテンプレートのサブスケジュール実行周期に等しいかどうかを判定する（ブロック２０１２）。ブロック２００６において選択されたサブスケジュールテンプレートを使用して生成されるサブスケジュールは、選択されたサブスケジュールテンプレートのサブスケジュール実行周期に等しい最も遅いブロック未加工実行周期（ＴSBE）に関連付けられたフィールド装置によって実行されるように割り当てられた機能ブロックのみについての開始時間オフセット（ｔS）を含んでもよい。したがって、ブロック２００８において選択されたフィールド装置１０１２ａの最も遅いブロック未加工実行周期（ＴSBE）が、選択されたサブスケジュールテンプレートのサブスケジュール実行周期に等しくないとサブスケジュール生成器１７１０が判定した場合（ブロック２０１２）、そのフィールド装置はスキップされ、そして、制御はブロック２００８に戻され、その時点でサブスケジュール生成器１７１０は同期データ転送を実行するように構成される別のフィールド装置を選択する。
【０１５１】
そうではなく、ブロック２００８において選択されたフィールド装置１０１２ａの最も遅いブロック未加工実行周期（ＴSBE）が選択されたサブスケジュールテンプレートのサブスケジュール実行周期に等しいとサブスケジュール生成器１７１０が判定した場合（ブロック２０１２）、サブスケジュール生成器１７１０は、選択されたフィールド装置１０１２ａに割り当てられ、かつ、同期データ転送に関連付けられた機能ブロック（例えば、機能ブロック１０２２ａ、１０２２ｃ、または１０２２ｅのうちの１つ）を選択する（ブロック２０１４）。説明の目的のために、サブスケジュール生成器１７１０はＡＩ１２機能ブロック１０２２ｃ（図２２および図２４）を選択するものとする。
【０１５２】
サブスケジュール生成器１７１０は、次に、選択されたＡＩ１２機能ブロック１０２２ｃのデータ利用可能時間（ｔDA）を取得する（ブロック２０１６）。図示されている例では、すべてのデータ利用可能時間（ｔDA）は、同期データ利用可能時間生成器（ｓｙｎｃｈｒｏｎｏｕｓ  ｄａｔａ  ａｖａｉｌａｂｌｅ  ｔｉｍｅ  ｇｅｎｅｒａｔｏｒ）（図示せず）によってあらかじめ定められ、機能ブロックの入力ポートに関連したデータ構造内に記憶される。例えば、同期データ利用可能時間生成器は、図３０のスケジュール生成プロセスに先立って、またはそのプロセスの間に、すべての機能ブロック（例えば、機能ブロック１０２２ａ〜ｅ）を走査して、どの機能ブロックが同期した方法でそれらに転送されるデータを必要とするかを判定してもよい。同期データ利用可能時間生成器は、次に、他の機能ブロックに同期した方法でデータを転送しなければならない機能ブロックが、実行のための、およびデジタルデータバス１０１４を介してそれらのデータを転送するための十分な時間を有することを確実にして、特定の時においてデータを必要とする機能ブロックがその時までにデータを受信することができるようにするためのデータ利用可能時間（ｔDA）をあらかじめ定めてもよい。別の機能ブロックからのデータを必要とすることなしに実行されてもよい機能ブロック（例えば、ＡＩ１１機能ブロックＡＩ１１ａ）については、データ利用可能時間（ｔDA）は０に設定され、なぜなら、その機能ブロックはサブスケジュール周期が始まったらすぐに実行されてもよいからであるる。
【０１５３】
開始時間オフセット決定器１７２２（図２９）は、図３３に関連して以下に述べるように、選択されたＡＩ１２機能ブロック１０２２ｃについての開始時間オフセット値（ｔS）を決定する（ブロック２０１８）。サブスケジュール生成器１７１０は、次に、ブロック２０１８において決定された開始時間オフセット値（ｔS）のためのデータ転送時間を割り当てる（ブロック２０２０）。データ転送時間は、１つの機能ブロックから別の機能ブロックに、デジタルデータバス１０１４を介してデータを通信するために必要とされる時間である。同じ装置内の別の機能ブロックにデータを転送する機能ブロックは、データ転送時間を有さない。しかし、別の装置内の別の機能ブロックにデータを転送する機能ブロックは、データ転送時間を有する。データ転送時間は、デジタルデータバス１０１４上の時間を占め、したがって、すべての機能ブロックの実行とデジタルデータバス１０１４上でのデータ転送とが行われることが可能であることを確実にするのに十分なだけサブスケジュールが長いことを保証するように、サブスケジュールを生成するために必要とされる。
【０１５４】
サブスケジュール生成器１７１０は、次に、フィールド装置１０１２ａに割り当てられた別の機能ブロックが、同期データ転送に関連付けられているかどうかを判定する（ブロック２０２２）。フィールド装置１０１２ａに割り当てられた別の機能ブロックが、同期データ転送に関連付けられている、とサブスケジュール生成器１７１０が判定した場合（ブロック２０２２）、制御はブロック２０１４に戻され、その時点で、サブスケジュール生成器１７１０は同期データ転送に関連付けられた次の機能ブロックを選択する。それ以外の場合、サブスケジュール生成器１７１０は、デジタルデータバス１０１４に通信可能に結合された別のフィールド装置が、同期データ転送を実行するように構成されるかどうかを判定する（ブロック２０２４）。デジタルデータバス１０１４に通信可能に結合された別のフィールド装置が同期データ転送を実行するように構成されるとサブスケジュール生成器１７１０が判定した場合（ブロック２０２４）、制御はブロック２００８に戻され、その時点で、サブスケジュール生成器１７１０は同期データ転送を実行するように構成される別のフィールド装置（例えば、図２２および図２４のフィールド装置１０１２ｂおよび１０１２ｃのうちの１つ）を選択する。
【０１５５】
そうではなく、デジタルデータバス１０１４に通信可能に結合された別のフィールド装置は同期データ転送を実行するように構成されないとサブスケジュール生成器１７１０が判定した場合（ブロック２０２４）、サブスケジュール生成器１７１０は非同期データ転送を処理する（ブロック２０２６）。例えば、サブスケジュール生成器１７１０は、非同期データ転送に関連付けられた機能ブロック１０２２ａ〜ｅのうちのいくつかを識別し、それらの機能ブロックについてのデータ利用可能時間（ｔDA）を、ブロック２０１６に関連して上述した方法に類似した方法で取得し、開始時間オフセット値（ｔS）を、図３３に関連して以下で述べる方法に類似した方法で決定し、そして、それらの機能ブロックについてのデータ転送時間を、ブロック２０２０に関連して上述した方法に類似した方法で割り当ててもよい。
【０１５６】
サブスケジュール生成器１７１０は、次に、ブロック２００６において選択されたサブスケジュールテンプレートのサブスケジュール実行周期が、上述のように決定された開始時間オフセット値（ｔS）とデータ転送時間とを含むのに十分な長さであるかどうかを判定する（ブロック２０２８）。ブロック２００６において選択されたサブスケジュールテンプレートのサブスケジュール実行周期が、開始時間オフセット値（ｔS）とデータ転送時間とを含むのに十分な長さではないとサブスケジュール生成器１７１０が判定した場合（ブロック２０２８）、サブスケジュール生成器１７１０は、サブスケジュールを再生成するために、開始時間オフセット値（ｔS）とデータ転送時間とを破棄する。サブスケジュールテンプレートのために生成される機能ブロックの開始時間オフセット値（ｔS）とデータ転送時間とを含むのに十分な長さのサブスケジュール実行周期を、ブロック２００６において選択されたサブスケジュールテンプレートに提供するために、サブスケジュール生成器１７１０は、サブスケジュールテンプレートのサブスケジュール周期を拡張する（ブロック２０３２）。すなわち、サブスケジュール生成器１７１０は、サブスケジュールテンプレートのサブスケジュール実行周期に時間を追加して、サブスケジュール実行周期を長くする。例えば、図２４の２０００ｍｓのサブスケジュール１２１６を生成するために使用されるサブスケジュールテンプレートが、機能ブロック１０２２ａ〜ｃおよび１０２２ｅに関連付けられた、開始時間オフセット（ｔS）とデータ転送時間とを含むのに十分な長さのサブスケジュール実行周期を有さない場合、サブスケジュール生成器１７１０は、サブスケジュールテンプレートに５００ｍｓ（または、任意のその他の時間）を追加してもよい。
【０１５７】
サブスケジュール生成器１７１０が、選択されたサブスケジュールテンプレートのサブスケジュール実行周期を拡張した後で（ブロック２０３２）、制御はブロック２００８に戻され、その時点で、ブロック２００８、２０１０、２０１２、２０１４、２０１６、２０１８、２０２０、２０２２、２０２４、２０２６、および２０２８の動作が、拡張されたサブスケジュール実行周期に基づいて繰り返される。ブロック２００６において選択されたサブスケジュールテンプレートのサブスケジュール実行周期が、開始時間オフセット値（ｔS）とデータ転送時間とを含むのに十分な長さであるとサブスケジュール生成器１７１０が判定した場合（ブロック２０２８）、サブスケジュール生成器１７１０は、別のサブスケジュールを生成すべきかどうかを判定する（ブロック２０３４）。例えば、図２４のスケジュール１２０２を生成するために図３０の例示的な方法が使用され、かつ、サブスケジュール生成器１７１０がサブスケジュール１２１４を生成済みであり、しかしサブスケジュール１２１６は生成済みではない場合、サブスケジュール生成器１７１０は、別のサブスケジュール（例えば、サブスケジュール１２１６）が生成されるべきであると判定する。別のサブスケジュール（例えば、サブスケジュール１２１６）が生成されるべきであるとサブスケジュール生成器１７１０が判定した場合（ブロック２０３４）、制御はブロック２００６（図３２Ａ）に戻され、その時点で、サブスケジュール基準テンプレートインタフェース１７１２は、次に最も短いサブスケジュール実行周期（例えば、図２４の２０００ｍｓのサブスケジュールに対応する２０００ｍｓのサブスケジュール実行周期）を選択する（ブロック２００６）。
【０１５８】
それ以外の場合、スケジュール生成器１７０８は、スケジュール（例えば、図２４のスケジュール１２０２）を生成するために、サブスケジュール生成器１７１０によって生成されたサブスケジュール（例えば、図２４のサブスケジュール１２１４および１２１６）をマージする（ブロック２０３６）。強制データシーケンス生成器１７１４は、次に、スケジュールのための強制データシーケンスを生成する（ブロック２０３８）。強制データシーケンスは、フィールド装置１０１２ａ〜ｃが、それらのそれぞれの機能ブロック１０２２ａ〜ｅのうちのいくつかに対応するデータを、生成されたスケジュールに従ってデジタルデータバス１０１４上に発行（ｐｕｂｌｉｓｈ）することをもたらすために、コントローラ１０６がフィールド装置１０１２ａ〜ｃに強制データコマンドを通信することを確実にする。制御は、次に、呼び出し元の関数またはプロセス（例えば、図３０の例示的な方法）に戻され、図３２Ａおよび図３２Ｂの例示的な方法は終了する。
【０１５９】
図３３を参照すると、図示されているフロー図は、機能ブロックについての開始時間オフセット値（ｔS）を決定するための、図３２Ａのブロック２０１８を実施するために使用されてもよい例示的な方法を示す。図示されている例では、図３３の例示的な方法は、開始時間オフセット値（ｔS）を決定するために、上記の式４を使用する。最初に、開始時間オフセット決定器１７２２（図２９）は、選択された機能ブロック（例えば、図３２Ａのブロック２０１４において選択された機能ブロック）に関連付けられた、開始時間オフセットの数量（ＱS）を取得する（ブロック２１０２）。説明の目的のために、ＡＩ１２機能ブロック１０２２ｃ（図２２および図２４）が、選択された機能ブロックであるとする。したがって、ブロック２１０２において取得される、開始時間オフセットの数量（ＱS）は４である。図示されている例では、選択されたＡＩ１２機能ブロック１０２２ｃについての、開始時間オフセットの数量（ＱS）（例えば、４）は、図３０のブロック１８１２において決定される。開始時間オフセット決定器１７２２は、次に、開始時間オフセットカウンタを０にリセットする（ブロック２１０４）。開始時間オフセットカウンタの値は、上記の式４の順序番号（ＮSeq）を提供するために使用される。さらに、開始時間オフセットカウンタの値は、選択された機能ブロックについての開始時間オフセット値（ｔS）がすべて決定された場合を判定するために使用される。
【０１６０】
開始時間オフセット決定器１７２２は、第１の開始時間オフセット値（ｔS）を決定する（ブロック２１０６）。例えば、開始時間オフセット決定器１７２２は、図２４においてｔ1として示されているＡＩ１２機能ブロック１０２２ｃの開始時間オフセット値（ｔS）を、上記の式４を使用して、開始時間オフセットカウンタの値（例えば、現在の開始時間オフセットの順序番号（ＮSeq）（順序０、順序１、順序２など））と、ＡＩ１２機能ブロック１０２２ｃを実行するために割り当てられたフィールド装置（例えば、フィールド装置１０１２ａ）に関連付けられた最も遅いブロック未加工実行周期（ＴSBE）と、ＡＩ１２機能ブロック１０２２ｃについてブロック２０１６において取得されたデータ利用可能時間（ｔDA）とに基づいて決定する。
【０１６１】
開始時間オフセット決定器１７２２は、次に、開始時間オフセットカウンタの値をインクリメントし（ブロック２１０８）、そして、開始時間オフセットカウンタがブロック２１０２において取得された開始時間オフセットの数量（ＱS）と等しいかどうかを判定する（ブロック２１１０）。開始時間オフセットカウンタは、開始時間オフセットの数量（ＱS）と等しくないと開始時間オフセット決定器１７２２が判定した場合、制御はブロック２１０６に戻り、その時点で、開始時間オフセット決定器１７２２は、次の開始時間オフセット値（ｔS）（例えば、図２４においてｔ5として示されている、ＡＩ１２機能ブロック１０２２ｃの開始時間オフセット値（ｔS））を決定する。それ以外の場合、制御は、呼び出し元の関数またはプロセス（例えば、図３２Ａおよび図３２Ｂの例示的な方法）に戻され図３３の例示的な方法は終了する。
【０１６２】
図３４は、図２４のスケジュール１２０２の、例示的な機能実行およびデータ転送シーケンス図２２００である。例示的な機能実行およびデータ転送シーケンス図２２００は、機能ブロック１０２２ａ〜ｅの実行と、１つの機能ブロックから別の機能ブロックにデジタルデータバス１０１４を介してデータを転送するために必要とされるデータ転送時間との間の関係を示す。例示的な機能実行およびデータ転送シーケンス図は、さらに、図２４のフィールド装置１０１２ａ〜ｃがデジタルデータバス１０１４上にデータを発行（ｐｕｂｌｉｓｈ）することをもたらすために、強制データコマンドがコントローラ１０６によっていつ発行されるかも示す。例えば、図３４に示すように、ＡＩ１１機能ブロック実行２２０２の後でＰＩＤ１２実行２２０８を可能にするために、強制データコマンド２２０４が、フィールド装置１０１２ａにＡＩ１１データ転送２２０６を実行させる。その他の機能ブロック実行、強制データコマンド、および対応するデータ転送も示されている。図示されていないが、２つの機能ブロックが同じフィールド装置によって実行される場合、機能ブロックの間でデータを交換するために、デジタルデータバス１０１４に関連付けられたデータ転送時間（例えば、ＡＩ１１データ転送２２０６）は必要ではなく、なぜなら、データ転送は同じフィールド装置内で発生するからである。
【０１６３】
図３５は、本明細書に記載された装置および方法を実施するために使用されてもよい、例示的なプロセッサシステム２３１０のブロック図である。図３５に示すように、プロセッサシステム２３１０は、相互接続バス２３１４に結合されたプロセッサ２３１２を含む。プロセッサ２３１２は、レジスタセットまたはレジスタ空間２３１６を含み、これは、図３５では、全体的にオンチップであるとして示されているが、代わりに、全体的または部分的にチップ外に配置されて、プロセッサ２３１２に専用の電気的接続を介して直接結合されてもよく、かつ／または、相互接続バス２３１４を介して結合されてもよい。プロセッサ２３１２は、任意の好適なプロセッサ、処理ユニット、またはマイクロプロセッサであってもよい。図３５には示されていないが、システム２３１０は、マルチプロセッサシステムであってもよく、したがって、プロセッサ２３１２と同一であるかまたはそれに類似し、かつ、相互接続バス２３１４に通信可能に結合された１つ以上の追加のプロセッサを含んでもよい。
【０１６４】
図３５のプロセッサ２３１２は、メモリコントローラ２３２０と周辺入出力（Ｉ／Ｏ）コントローラ２３２２とを含むチップセット２３１８に結合される。周知のように、チップセットは、一般に、Ｉ／Ｏおよびメモリ管理機能を提供し、さらに、チップセット２３１８に結合された１つ以上のプロセッサがアクセス可能な、またはそれらのプロセッサによって使用される、複数の汎用および／または専用のレジスタ、タイマなども提供する。メモリコントローラ２３２０は、プロセッサ２３１２（または、複数のプロセッサが存在する場合は、それらのプロセッサ）が、システムメモリ２３２４および大容量記憶メモリ２３２５にアクセスすることを可能にする機能を実行する。
【０１６５】
システムメモリ２３２４は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）などの、任意の所望のタイプの揮発性および／または不揮発性メモリを含んでもよい。大容量記憶メモリ２３２５は、ハードディスクドライブ、光学式ドライブ、テープ記憶装置などを含む、任意の所望のタイプの大容量記憶装置を含んでもよい。
【０１６６】
周辺Ｉ／Ｏコントローラ２３２２は、プロセッサ２３１２が、周辺入出力（Ｉ／Ｏ）装置２３２６および２３２８、ならびにネットワークインタフェース２３３０と、周辺Ｉ／Ｏバス２３３２を介して通信することを可能にする機能を実行する。Ｉ／Ｏ装置２３２６および２３２８は、例えば、キーボード、ビデオディスプレイまたはモニタ、マウスなどの任意の所望のタイプのＩ／Ｏ装置であってもよい。ネットワークインタフェース２３３０は、プロセッサシステム２３１０が別のプロセッサシステムと通信することを可能にする、例えば、イーサネット（登録商標）装置、非同期転送モード（ＡＴＭ）装置、８０２．１１装置、ＤＳＬモデム、ケーブルモデム、セルラーモデムなどであってもよい。
【０１６７】
メモリコントローラ２３２０およびＩ／Ｏコントローラ２３２２は、チップセット２３１８内の別個の機能ブロックとして図３５に示されているが、これらのブロックによって実行される機能は、１つの半導体回路内に統合されてもよく、または２つ以上の別個の集積回路を使用して実施されてもよい。
【０１６８】
特定の方法、装置、および製品について、本明細書で説明したが、本発明が包含する範囲はそれらに限定されない。反対に、本発明は、字義的に、または均等論に基づいて、添付の特許請求の範囲内に公正に含まれるすべての方法、装置、および製品を包含する。さらに、本明細書では、自動ブロック割り当ておよびスケジューリングルーチンは、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）ネットワークに適用可能であるとして説明したが、これらの技術は、ファウンデーション（ＦＯＵＮＤＡＴＩＯＮ（登録商標））フィールドバス（Ｆｉｅｌｄｂｕｓ）ネットワークに限定されず、そして、その代わりに、任意のその他の適用可能な、バスをベースにした通信ネットワークにおいて使用されてもよい。
【図１】
0005373385.tif 000004
【図２】
0005373385.tif 000005
【図３Ａ】
0005373385.tif 000006
【図３Ｂ】
0005373385.tif 000007
【図４】
0005373385.tif 000008
【図５】
0005373385.tif 000009
【図６】
0005373385.tif 000010
【図７】
0005373385.tif 000011
【図８】
0005373385.tif 000012
【図９】
0005373385.tif 000013
【図１０】
0005373385.tif 000014
【図１１】
0005373385.tif 000015
【図１２】
0005373385.tif 000016
【図１３】
0005373385.tif 000017
【図１４】
0005373385.tif 000018
【図１５】
0005373385.tif 000019
【図１６】
0005373385.tif 000020
【図１７】
0005373385.tif 000021
【図１８】
0005373385.tif 000022
【図１９】
0005373385.tif 000023
【図２０】
0005373385.tif 000024
【図２１】
0005373385.tif 000025
【図２２】
0005373385.tif 000026
【図２３】
0005373385.tif 000027
【図２４】
0005373385.tif 000028
【図２５】
0005373385.tif 000029
【図２６】
0005373385.tif 000030
【図２７】
0005373385.tif 000031
【図２８】
0005373385.tif 000032
【図２９】
0005373385.tif 000033
【図３０】
0005373385.tif 000034
【図３１】
0005373385.tif 000035
【図３２Ａ】
0005373385.tif 000036
【図３２Ｂ】
0005373385.tif 000037
【図３３】
0005373385.tif 000038
【図３４】
0005373385.tif 000039
【図３５】
0005373385.tif 000040