(57)【要約】通信ネットワークで使用されるリンクスケジュールを改善する方法が開示される。この方法は一般に、スケジューリングされる通信ごとに動作するネットワークに当てはまるが、Ｆｏｕｎｄａｔｉｏｎ  ＦＩＥＬＤＢＵＳの状況で説明する。この方法は、シーケンスおよびその関連するパブリケーションをその相対的優先順位に従ってアプリケーションごとにスケジューリングするステップと、幾つかの機能ブロック間、ならびに幾つかの機能ブロックおよびパブリケーション間の遅延を最小限に抑えるステップと、幾つかのパブリケーションをグループ化するステップとを含む。従って、待ち時間の低減、スケジュール長の低減、通信容量の向上などの利点が得られる。
2006505189.tif 000002
【特許請求の範囲】
【請求項１】
周期的に実行されるスケジュールに従って通信するネットワークに関するリンクスケジュールを作成する方法であって、
実行を必要とする複数の機能ブロックを識別するステップと、
各機能ブロックを１つまたは複数のグループのメンバとして識別するステップと、
各グループが他のグループに対する優先順位を有するように前記グループに優先順位を付けるステップと、
少なくとも１つの未スケジュール機能ブロックを含む各グループを、一度に１グループずつ、前記ネットワーク上の通信に関する各グループの優先順位に基づく順序でスケジューリングするステップとを含む方法。
【請求項２】
各機能ブロックに関連する各非逆算パブリケーションを識別するステップを更に含む請求項１に記載の方法。
【請求項３】
前記グループスケジューリングが、各グループ内の１つまたは複数の要素間の遅延を最小限に抑えるステップを更に含む請求項２に記載の方法。
【請求項４】
前記グループスケジューリングが、一定のグループ間の遅延を最小限に抑えるステップを更に含む請求項３に記載の方法。
【請求項５】
前記グループスケジューリングが、
ａ）１次接続出力生成機能ブロックの実行の完了と、前記１次接続出力生成機能ブロックで生成された１次接続出力を直接入力する機能ブロックの実行の開始との間、
ｂ）非逆算パブリケーション生成機能ブロックの実行の完了と、前記非逆算パブリケーション生成機能ブロックによって生成された非逆算パブリケーションとの間、ならびに
ｃ）非逆算パブリケーション入力機能ブロックの実行の開始と、非逆算入力ブロックによって入力された非逆算パブリケーションとの間の遅延を最小限に抑えるステップを更に含む請求項４に記載の方法。
【請求項６】
前記遅延最小化が、
ａ）単一アプリケーションプロセッサ装置に関連する２つの機能ブロックの実行時間が重複することを禁止する機能ブロックスケジューリング制限と、
ｂ）任意の２つのパブリケーションの実行時間が少なくとも部分的に重複することを禁止するパブリケーションスケジューリング制限であって、それによって、２つの非逆算パブリケーションが少なくとも部分的に重複すること、２つの逆算パブリケーションが少なくとも部分的に重複すること、および非逆算パブリケーションが逆算パブリケーションと少なくとも部分的に重複することが禁止されるパブリケーションスケジューリング制限の対象となる請求項５に記載の方法。
【請求項７】
周期的に実行されるスケジュールに従って通信するネットワークに関するリンクスケジュールを作成する方法であって、
実行を必要とする複数の機能ブロックを識別するステップと、
各機能ブロックを１つまたは複数のグループのメンバとして識別するステップと、
前記グループに優先順位を付けるステップであって、それによって各グループが、
各グループに関連するグループタイプと、
各グループに関連する期間長と、の少なくとも１つに基づいて、他のグループに対する優先順位を有するステップと、
少なくとも１つの未スケジュール機能ブロックを含む各グループを、一度に１グループずつ、前記ネットワーク上の通信に関する各グループの優先順位に基づく順序でスケジューリングするステップとを含む方法。
【請求項８】
各グループが、各グループに関連する期間長内のグループタイプに基づく他のグループに対する優先順位を有するように、前記グループに更に優先順位が付けられる請求項７に記載の方法。
【請求項９】
前記グループ優先順位付けが、各グループに関連する期間長と、各グループに関連するグループタイプとに基づき、
相対的に短い各期間長が、相対的に長い各期間長よりも高い優先順位を有し、
監視タイプである各グループが、監視タイプではない各グループよりも低い優先順位を有し、
カスケードタイプグループおよび制御タイプグループが等しいサイズの期間長を有するとき、前記制御タイプグループが前記カスケードタイプグループよりも高い優先順位を有する請求項８に記載の方法。
【請求項１０】
前記グループスケジューリングが、少なくとも１つのスケジューリング済み機能ブロックを含む各グループを、前記グループ中の未スケジュールブロックのすべてが独立であり、かつ前記独立なグループ内の各未スケジュールブロックが、
前記スケジュール内の実行時間を有する機能ブロックによって直接入力される１次接続出力を生成せず、
前記スケジュール内の実行時間を有する機能ブロックによって直接入力される非逆算パブリケーションを生成せず、
前記スケジュール内の実行時間を有する機能ブロックによって生成される非逆算パブリケーションを直接入力せず、
前記スケジュール内の実行時間を有する機能ブロックによって生成される１次接続出力を直接入力しないとき、可能な限りスケジュール中の早期にスケジューリングするステップを更に含む請求項９に記載の方法。
【請求項１１】
前記早期スケジューリングが、前記スケジュール内の各独立グループ内の未スケジュールブロックを、各独立グループ内の１つまたは複数の要素間の任意の遅延を最小限に抑えるように調節するステップを更に含む請求項１０に記載の方法。
【請求項１２】
前記早期スケジューリングが、前記スケジュール内の各独立グループ内の前記独立な未スケジュールブロックを調節して、
ａ）１次接続出力生成機能ブロックの実行の完了と、前記１次接続出力生成機能ブロックによって生成される１次接続出力を直接入力する機能ブロックの実行の開始との間、
ｂ）非逆算パブリケーション生成機能ブロックの実行の完了と、前記非逆算パブリケーション生成機能ブロックによって生成された非逆算パブリケーションとの間、ならびに
ｃ）非逆算パブリケーション入力機能ブロックの実行の開始と、非逆算入力ブロックによって入力された非逆算パブリケーションの完了との間の任意の遅延を最小限に抑えるステップを更に含む請求項１１に記載の方法。
【請求項１３】
周期的に実行されるスケジュールに従って通信するネットワークに関するリンクスケジュールを作成する方法であって、
実行を必要とする複数の機能ブロックを識別するステップと、
各機能ブロックを１つまたは複数のグループのメンバとして識別するステップと、
前記グループに優先順位を付けるステップであって、それによって各グループが、
各グループに関連するグループタイプと、
各グループに関連する期間長と、の少なくとも１つに基づいて、他のグループに対する優先順位を有するステップと、
少なくとも１つの未スケジュール機能ブロックを含む各グループを、一度に１グループずつ、各グループの優先順位に基づく順序でスケジューリングするステップと、
実行を必要とする各機能ブロックに関連する任意の逆算パブリケーションを識別するステップと、
各逆算パブリケーションに、前記スケジュール内の、各逆算パブリケーションに関連する適格性の時間ウィンドウ内のパブリケーション時間を割り当て、それによって少なくとも第１潜在的パブリケーションギャップが最小限に抑えられ、あるいは第２潜在的パブリケーションギャップが最大化されるステップとを含む方法。
【請求項１４】
各グループが、各グループに関連する期間長内のグループタイプに基づく他のグループに対する優先順位を有するように、前記グループに更に優先順位が付けられる請求項１３に記載の方法。
【請求項１５】
各グループがシーケンスであり、各シーケンスが１群の機能ブロックであり、前記シーケンスを開始する機能ブロックを除いて、各機能ブロックに関連する入力が、直前の機能ブロックに関連する１次接続出力に依存する請求項１４に記載の方法。
【請求項１６】
各グループがシーケンスであり、各シーケンスが、別の機能ブロックの１次接続出力を入力せず、かつ別の機能ブロックによって入力される１次接続出力を生成しない単一の機能ブロックである請求項１５に記載の方法。
【請求項１７】
各シーケンスが、
別のブロックの１次接続出力を開始ブロックとして入力しない機能ブロックを識別し、機能ブロックの経路を開始ブロックからたどり、それによって開始ブロックを除く各機能ブロックに関連する入力が、直前の機能ブロックに関連する１次接続出力に依存するステップと、
機能ブロックが単一であり、別の機能ブロックの１次接続出力を入力せず、別の機能ブロックによって入力される１次接続出力を生成しないかどうかを判定するステップの一方によって形成される請求項１６に記載の方法。
【請求項１８】
前記識別した開始機能ブロックのうちの少なくとも１つが入力クラス機能ブロックである請求項１７に記載の方法。
【請求項１９】
前記リンクスケジュールが、少なくとも１つのＦＩＥＬＤＢＵＳを含む混合ネットワーク上で通信される請求項１８に記載の方法。
【請求項２０】
前記ＦＩＥＬＤＢＵＳがＦＯＵＮＤＡＴＩＯＮ（商標）ＦＩＥＬＤＢＵＳである請求項１９に記載の方法。
【請求項２１】
前記リンクスケジュールが少なくとも１つのＦＩＥＬＤＢＵＳを含む混合ネットワーク上で通信される請求項１２に記載の方法。
【請求項２２】
前記ＦＩＥＬＤＢＵＳがＦＯＵＮＤＡＴＩＯＮ（商標）ＦＩＥＬＤＢＵＳである請求項２１に記載の方法。
【請求項２３】
前記リンクスケジュールが少なくとも１つのＦＩＥＬＤＢＵＳを含む混合ネットワーク上で通信される請求項６に記載の方法。
【請求項２４】
前記ＦＩＥＬＤＢＵＳがＦＯＵＮＤＡＴＩＯＮ（商標）ＦＩＥＬＤＢＵＳである請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には通信ネットワークに関し、より詳細には、周期的に実行されるスケジュールに関して動作する通信ネットワークに関する。
【背景技術】
【０００２】
ＦＯＵＮＤＡＴＩＯＮ（商標）ＦＩＥＬＤＢＵＳ技術は、米国テキサス州オースチンのＦＩＥＬＤＢＵＳ  Ｆｏｕｎｄａｔｉｏｎが提供するオープンテクノロジである。ＦＯＵＮＤＡＴＩＯＮ（商標）ＦＩＥＬＤＢＵＳ技術は、国際電気標準会議６１１５８ＦＩＥＬＤＢＵＳ標準に基づくローカルエリアネットワーク型の通信バスである。この標準は、バス上の周期的通信の一部を、周期的に実行されるスケジュール内でスケジューリングすることを必要とする。
【０００３】
Ｆｏｕｎｄａｔｉｏｎ  ＦＩＥＬＤＢＵＳ技術は、装置間の対話的通信を可能にするが、スケジューリングがある程度制限される。例えば、単一のアプリケーションプロセッサ装置内で１度に実行できる機能ブロックは１つだけである。更に、一度にリンク上で発行する（即ち、パブリケーション「publication」または逆算パブリケーション「back-calculation publicasion」）ことができる装置は１つだけであり、クライアントサーバ活動を行うことができるのは、パブリケーション間だけである。
【０００４】
通常、機能ブロックは、１次接続に続いて、入力から出力に「自然な順序」でスケジューリングされる。多数の装置がリンクを共有するときは特に、「自然順序」スケジューリングは、多数の比較的「短い」パブリケーションギャップを生み出す傾向がある。こうした「短い」ギャップはしばしば帯域幅の浪費をもたらす。多数の待機通信、およびその後に待機するすべての通信が、十分大きいギャップがスケジュール内に生じるまで遅延されるからである。例えば、ディスプレイコールアップおよびオペレータ端末ディスプレイコールアップがしばしば最も重大な影響を受ける。ディスプレイコールアップおよびオペレータ端末ディスプレイコールアップは、その大量の情報転送の必要を満たすのに比較的大きなギャップを必要とするからである。従って、マクロサイクルごとに送られるクライアントサーバメッセージ数が制限され、それは最適なアプリケーション性能が達成される数よりも少ない。
【０００５】
「自然順序」スケジューリングはまた、比較的長いスケジュールを生み出すことが多く、しばしばかなりのループ待ち時間をもたらす。長い待ち時間はより古いサンプリングおよび効果的でない性能をもたらすので、クリティカルな制御アプリケーションでそれが生じることは、しばしば非常に問題である。
【０００６】
従って、スケジューリングのための改良型の方法が求められている。このような方法は、固定の帯域幅からの通信使用量をより多くし、リンクスケジュールのスケジューリングされる部分全体を短縮し、かつループ待ち時間を最小限に抑えてより良好な制御を達成することを可能にすべきである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、少なくとも好ましい実施形態では、従来技術の欠点の１つまたは複数を克服し、または大幅に改善し、あるいは有用な代替方法を提供することである。
本発明の目的はまた、ＦＩＥＬＤＢＵＳ、具体的にはＦｏｕｎｄａｔｉｏｎ  ＦＩＥＬＤＢＵＳを含む混合スケジューリング／未スケジューリングネットワークスケジュール（混合ネットワークは、帯域幅の一部がスケジューリングされ、帯域幅の一部はスケジューリングされていないネットワークである）を最適化する方法を説明することである。例えば、機能ブロックおよびその関連するパブリケーションのシーケンスのスケジューリングを優先順位付けし、スケジューリングプロセス中の一定の遅延を最小限に抑えることにより、本発明の方法は、ループ待ち時間を削減するリンクスケジュールを生成する。
【課題を解決するための手段】
【０００８】
従って本発明は、周期的に実行されるスケジュールに従って通信するネットワークに関するスケジュールを生成する方法を提供する。この方法は、実行を必要とする複数の機能ブロックをまず識別するステップと、次いで各機能ブロックを１つまたは複数のグループのメンバとして識別するステップとを含む。次に、各グループが他のグループに対する優先順位を有するようにグループに優先順位が付けられ、次いで、少なくとも１つの未スケジューリング機能ブロックを含む各グループが、ネットワーク上の通信に関する各グループの優先順位に基づく順序で一度に１グループずつスケジューリングされる。
【０００９】
異なる装置中の幾つかの機能ブロックを、それぞれのスケジュール時間が少なくとも部分的に重複するようにスケジューリングすることにより、本発明は、リンクスケジュールのスケジューリング部分を削減する（即ち、例えば「自然なスケジューリング」と比較して）。従って、より多くの活動を収容することができ、マクロサイクルを短縮することができる。
【００１０】
本発明の方法下では、潜在的パブリケーションギャップをなくすためにパブリケーションもグループ化される。あるいは、ギャップが大きいと、より長い未スケジューリングメッセージを発行することが可能となる可能性が大きくなるので、形成される２つのパブリケーションギャップが非常に大きいギャップと非常に小さいギャップを与えるように、パブリケーションを他の２つのパブリケーション間に配置することができる。例えば、逆算パブリケーションはクリティカルなタイミング要件を有さないので、しばしば、逆算パブリケーションおよび非逆算パブリケーションの直前または直後に実行するようにスケジューリングすることができる。このようにして、浪費される帯域幅が少なくなり、アプリケーション性能が向上する。
【００１１】
この文書中の概念を単一アプリケーションプロセッサ装置の状況で説明するが、この方法はマルチプロセッサ装置にも適用可能であることに留意されたい。マルチプロセッサの状況では、装置内の複数の機能ブロックを同時に実行することができる。一方、マルチプロセッサ装置は、並行または部分的に並行のパブリケーションに関する上述の制限に関連して、依然として「単一」装置として扱われることになる。
【００１２】
本発明のその他の目的、特徴、および利点は、図面に関連して行われる以下の本発明の好ましい実施形態の記述から明らかとなるであろう。
【発明を実施するための最良の形態】
【００１３】
定義
この文書全体を通して、便宜上一般的なカテゴリごとにグループ化された以下の用語を、以下のように定義された意味で用いる。
【００１４】
ａ．待ち時間
ループ待ち時間：制御要素が出力機能ブロックによるずれを補正するように指令を受けるまで、入力機能ブロックのプロセスサンプリングの間に経過する時間。
【００１５】
クリティカルループ待ち時間：制御要素が出力機能ブロックによるずれを補正するように指令を受けるまで、入力機能ブロックのプロセスサンプリングの間に最高の優先順位ループで経過する時間。
【００１６】
待ち時間因子：「自然な」クリティカルループ待ち時間に対する、「最適化された」クリティカルループ待ち時間の比。
待ち時間の向上：１００％から待ち時間因子を引いた差。パーセンテージで表される。
【００１７】
ｂ．パブリケーション
パブリケーション：しばしばスケジューリングされた、ネットワーク上で１つまたは複数のノードに対して同時に利用可能にされたメッセージ。
【００１８】
非逆算パブリケーション：逆算情報に関連しないパブリケーション。
逆算パブリケーション：後続の実行サイクルで以前に実行したブロックによって通常は使用され、初期化し、リセットワインドアップを防止し、状況情報を提供する、逆算情報に関連するパブリケーション。
【００１９】
パブリケーションギャップ：あるパブリケーションの終りと、次にスケジューリングされたパブリケーションの開始との間の時間。
何らかの通信に関連する余分な時間（または「関連時間」）：何らかのメッセージで失われる時間の推定平均長さ。これには、例えばアクセス遅延に寄与する時間、利用可能な時間を超過する、次に待機するメッセージのために失われる平均時間、トークンを渡し、ノードをプローブし、時間を分配するなどの「ハウスキーピング」活動との競合などが含まれる可能性がある。この文書の例では関連時間が１５ｍｓであると仮定する。
【００２０】
使用可能パブリケーションギャップ（または使用可能ギャップ）：パブリケーションまたは逆算パブリケーション以外のメッセージのために利用可能なパブリケーションギャップの部分。パブリケーションギャップが「何らかの通信のために必要な最小時間」以上であるとき、使用可能ギャップは、「パブリケーションギャップ」から「関連時間」を引くことによって計算される。この定義は、最短の非スケジューリングトランザクションが約１５ミリ秒かかること、「何らかの通信に関連する余分な時間」を約１５ミリ秒と仮定すること、およびパブリケーションギャップが３０ミリ秒より長いときに使用可能となるという仮定に基づく。従って、この文書中の例では「何らかの通信に必要な最小時間」は３０ミリ秒である。
【００２１】
未スケジューリング通信に必要な最小時間（または「最小時間」）：クライアント／サーバ対話を含む、リンク上の未スケジューリング通信が完全に実行するために必要な最小の長さの時間。この文書の例では、何らかの通信に必要な最小時間が３０ｍｓより長いと仮定する。
【００２２】
パブリケーションギャップ因子：最適化されたマクロサイクルの使用可能ギャップに対する、自然なマクロサイクルの使用可能ギャップの比。
パブリケーションの向上：１００％からパブリケーションギャップ因子を引いた差。パーセンテージで表される。
【００２３】
Ｇ．マクロサイクル
マクロサイクル使用率因子：自然なマクロサイクル時間に対する、最適化されたマクロサイクル時間の比。パーセンテージで表される。
【００２４】
マクロサイクルの向上：１００％からマクロサイクル使用率因子を引いた差。パーセンテージで表される。
自然マクロサイクル：１次接続に続いて入力から出力の順で機能ブロック実行を構成することによって生成され、各パブリケーションがそれを計算する機能ブロックの実行直後に生じるマクロサイクル。
【００２５】
ｄ．機能ブロック／シーケンス
機能ブロック（またはブロック）：他の機能ブロックと相互接続することができる入力および／または出力を有し、その入力に対してアルゴリズムを実行してその出力を生成するオブジェクト。
【００２６】
入力機能ブロック（または入力クラス機能ブロック）：プロセス（例えばＡＩ、ＤＩ、ＰＩ）から導出された値で通常は始まる機能ブロック。ほとんどのケースでは、入力ブロックはブロック列の最初にあるので、「通常は」という語を使用している。しかし、当業者なら理解するであろうが、不明瞭なケースが存在する。
【００２７】
出力機能ブロック（または出力クラス機能ブロック）：プロセス（例えばＡＯ、ＤＯ、ＣＡＯ、ＣＤＯ）に与えられる値で通常は終了する機能ブロック。ほとんどのケースでは、出力ブロックはブロック列の最後にあるので、「通常は」という語を使用している。しかし、出力値を取得して、それを別のブロックに接続し、付加的な計算を行うこと、更には実演またはテスト目的で、シミュレートしたプラント値としてそれをループバックすることが可能である。当業者なら理解するであろうが、不明瞭な使用法が存在する。
【００２８】
制御機能ブロック：その主な機能が、プロセス影響値をセットポイントまたはターゲット値と比較し、セットポイントまたはターゲット値に対してプロセスを制御するように何らかの形で指示される１つまたは複数の出力を、通常は出力機能ブロックを介して提供することである機能ブロック。
【００２９】
機能ブロックシーケンス（またはシーケンス、または機能ブロックのシーケンス）：この文書での「シーケンス」とは１連の機能ブロックと定義され、シーケンスという用語は以下のように定義される。
【００３０】
（ａ）シーケンスを開始する機能ブロックを除く各機能ブロックに関連する１つの入力が、直前の機能ブロックの出力に依存する１群の機能ブロック、および
（ｂ）別のブロックの出力を入力せず、または別のブロックの入力を出力しない単一機能ブロック。
【００３１】
制御ループシーケンス：入力ブロックで始まり、出力ブロックで終わる一続きの機能ブロック。
監視シーケンス：入力ブロックで始まり、制御ブロックまたは出力ブロックを含まない一続きの１つまたは複数の機能ブロック。従って「監視シーケンス」は、制御ループシーケンスまたはカスケード・ループ・シーケンスではない任意のシーケンスである。
【００３２】
１次接続入力：ＦＯＵＮＤＡＴＩＯＮ  ＦＩＥＬＤＢＵＳ機能ブロック・アプリケーション・プロセス仕様の正式モデルで定義され、かつ各タイプのブロックの作者によって指定され、または特定のアプリケーションに関してユーザによって指定される「１次入力」、「プロセス変数」、または「カスケード入力」。
【００３３】
１次接続出力：ＦＯＵＮＤＡＴＩＯＮ  ＦＩＥＬＤＢＵＳ機能ブロック・アプリケーション・プロセス仕様の公式モデルで定義され、かつ各タイプのブロックの作者によって指定され、または特定のアプリケーションに関してユーザによって指定される「１次出力」。例えばＯＵＴ、ＯＵＴ＿Ｄなど。
【００３４】
１次接続：ＦＯＵＮＤＡＴＩＯＮ  ＦＩＥＬＤＢＵＳ機能ブロック・アプリケーション・プロセス仕様の公式モデルで定義され、または特定のアプリケーションに関してユーザによって指定される、「１次接続入力」による「１次接続出力」に対する参照。
【００３５】
ｅ．カスケード
カスケード・ループ・シーケンス：入力ブロックで始まり、制御機能ブロックで終わる一続きの機能ブロックであり、制御機能ブロックが下流側制御ループシーケンス中のブロックに（直接的または間接的に）出力を供給する。
【００３６】
セットポイント（または制御ターゲット）：下流側または内部の制御ブロックが、やはり受け取る１次プロセス変数に対するターゲットとして使用する値。上流側または外側のカスケード・ループ・シーケンスの制御機能ブロックは、下流側または内側のカスケード・ループ・シーケンスの制御機能ブロックにセットポイントを供給する。
【００３７】
下流側：その入力が、参照される機能ブロックの出力によって供給される機能ブロックまたは一続きの機能ブロックを指す。
上流側：その出力が、参照する機能ブロックの入力に供給される機能ブロックまたは一続きの機能ブロックを指す。
【００３８】
内部制御ループ：別のシーケンスによってセットポイント（制御ターゲット）の供給を受ける制御ループシーケンスまたはカスケード・ループ・シーケンス。内部制御ループは外部制御ループに対して下流側にある。
【００３９】
外部制御ループ：セットポイント（制御ターゲット）を別のシーケンスに供給する制御ループシーケンスまたはカスケード・ループ・シーケンス。外部制御ループは内部制御ループに対して上流側にある。
【００４０】
ｆ．サンプル・スキュー／非サンプル・スキュー（Sample-Skew/No-Sample-Skew）
サンプル・スキュー：複数の入力（またはサンプル）のセットのサンプリング時間の時間差。１群の入力機能ブロックが、それぞれに関する計算（例えば、幾つかのサンプリング位置の平均、または温度、圧力、および圧力差に関する質量の流れ）や、幾つかのサンプリング位置の比較（最小、最大、中央値）などで共に使用されるとき、互いに対する各サンプリングの時間はアプリケーションにとって重要であることがあり、または重要でないことがある。「サンプル・スキュー」は、各サンプリングの相対時間がアプリケーションにとって重要でないことを示す。
【００４１】
非サンプル・スキュー：複数の入力（またはサンプル）のセットのサンプリング時間の時間差なし。１群の入力機能ブロックが、それぞれに関する計算（例えば、幾つかのサンプリング位置の平均、または温度、圧力、および圧力差に関する質量の流れ）や、幾つかのサンプリング位置の比較（最小、最大、中央値）などで共に使用されるとき、互いに対する各サンプリングの時間はアプリケーションにとって重要であることがあり、または重要でないことがある。「非サンプル・スキュー」は、各サンプリングの相対時間がアプリケーションにとって重要であることを示す。
【００４２】
略語
この文書全体を通して、以下の略語を以下で定義する意味で使用する。
ＡＩ：アナログ入力機能ブロック
Ａｒｉｔｈ：算術計算機能ブロック
ＡＯ：アナログ出力機能ブロック
ＣＡＯ：複合アナログ出力機能ブロック
ＤＩ：離散的入力機能ブロック
ＤＯ：離散的出力機能ブロック
ＣＤＯ：複合離散的出力機能ブロック
ＰＩ：パルス入力機能ブロック
Ｉｎｔｅｇｒａｔｏｒ：積分器機能ブロック
ＩＳｅｌ：入力セレクタ機能ブロック
ＰＩＤ：比例積分微分制御機能
ＳＰ（ＣＡＳ＿ＩＮ）：セットポイント入力
ＰＶ（ＩＮ）：プロセスまたは１次変数（または値）入力
好ましい実施形態の動作
以下で説明するサブステップが順次行われるが、ステップおよびサブステップを代替シーケンスで実施することが可能であることは当業者には明らかであろう。
【００４３】
１．機能ブロックシーケンスを識別する
スケジューリングプロセスを開始するために、機能ブロックの幾つかのグループを識別しなければならない。好ましくは、こうしたグループは機能ブロックの「シーケンス」である。しかし、代替実施形態で識別することのできる、「シーケンス」以外の他の多数の「グループ」が存在することは当業者には明らかであろう。
【００４４】
更に、上記で提示したシーケンスを識別する方法は好ましい方法であるが、シーケンス、または機能ブロックの他のグループを、当業者には明らかであろう多数のそれほど好ましくない方式で識別することができる。更に、代替実施形態では各ブロックを別々のグループとみなすことができる。
【００４５】
１．１  各入力クラス機能ブロックで開始し、入力クラス機能ブロックの１次接続出力から後続の「参照」ブロック（ＩＮ、ＩＮ＿Ｄ、ＰＶ、ＰＶ＿Ｄ、ＣＡＳ＿ＩＮ、ＣＡＳ＿ＩＮ＿Ｄ、ＳＥＬ＿ｎなどの「参照」ブロックの１次接続入力を介して）で使用される出力の使用までの各１次接続をたどることにより、好ましくは一度に１シーケンスずつ各シーケンスを作成する。１次接続出力に対する参照が存在しない場合、単一ブロック（それが入力クラス機能ブロック、セクション１．４を介するブロックであるかどうか）をシーケンスとみなす。
【００４６】
１．１．１  参照ブロックがこのシーケンス中に既に含まれている場合、参照ブロックが望ましくない循環的参照を形成するので、その参照ブロックを含めない。
１．１．２  参照ブロックの入力接続が、制御セレクタブロックまたは出力スプリッタブロック（など）以外の制御ブロックのカスケードセットポイント接続である場合、参照ブロックは別の制御ループシーケンスに含まれるので、参照ブロックを含めずにシーケンスを終了する。
【００４７】
１．１．３  複数の１次接続が入力ブロック外に存在する場合、それぞれをセクション１．１に従って「別々の」シーケンスとみなして、好ましくはこのシーケンスを完全に識別した後に評価する。
【００４８】
１．２  次いで、各１次接続を、「古い参照」ブロックの１次接続出力から、「新しい参照」ブロックによる出力の使用までたどる。しかし、出力クラスブロックの出力をたどるべきではない。
【００４９】
従って、セクション１．１からこのサブセクションに直接到達した場合、「古い参照」ブロックが入力クラス機能ブロックである。一方、セクション１．３からこのサブセクションに直接到達した場合、「新しい参照」ブロックは、本質的に「古い参照」ブロックとなる。
【００５０】
１．２．１  新しい参照ブロックが既にこのシーケンスに含まれている場合、望ましくない循環的参照が形成されるので、参照ブロックを含めない。
１．２．２  「新しい参照」ブロックの入力接続が、制御セレクタブロックまたは出力スプリッタブロック（など）以外の制御ブロックのカスケードセットポイント接続である場合、新しい参照ブロックは別の制御ループシーケンスに含まれるので、新しい参照ブロックを含めずにシーケンスを終了する。
【００５１】
１．２．３  複数の１次接続が「古い参照」ブロックの外に、即ち新しい「参照される」ブロックに存在する場合、それぞれをセクション１．１に従って「別々の」シーケンスとみなして、好ましくはこのシーケンスを完全に識別した後に評価する。
【００５２】
１．３  １次接続出力への参照が存在しなくなるまでステップ１．２を反復する。
１．４  上記の規則で識別されなかったシーケンス中の残りの機能ブロックが存在する場合、入力接続を有さないものをそれぞれ見つけ、ステップ１．１と同様に新しい機能ブロックシーケンスを開始し、上記の規則１．１から１．３のように処理し、入力クラス機能ブロックであるかのように扱う。
【００５３】
例えば、大部分の機能ブロックシーケンスは入力クラスブロックで開始するが、実演やテストなどの特殊な目的で使用される手動制御の出力クラスブロックまたは機能ブロックシーケンスは、非入力クラスブロックで開始するシーケンスを有する可能性がある。
【００５４】
１．５  １．４を評価した後、上記の規則で識別されなかったシーケンス中の残りの機能ブロックがまだ存在する場合、残りのブロックの何れか１つを選び、ステップ１．１．と同様に新しい機能ブロックシーケンスを開始し、上記の規則１．１から１．３のように処理し、入力クラス機能ブロックであるかのように扱う。従って、セクション１．５は、排他的ではないが主に、循環的機能ブロック参照に対処するためのものである。
【００５５】
１．６  機能ブロックシーケンスの一部として識別されなかったブロックが存在しなくなるまで、１．５を反復する。
例えば、大部分の機能ブロックシーケンスが入力クラスブロックまたは入力接続のないブロックで開始するが、論理的には、シーケンスが、シーケンス中のあらゆるブロックが入力接続を有するようにループを形成する一連のブロックから構成される可能性がある。
【００５６】
２．機能ブロックシーケンスに優先順位を付ける
次に、シーケンスに優先順位を付ける。好ましい実施形態では、期間タイプと期間長の両方に従ってシーケンスに優先順位が付けられる。
【００５７】
２．１  制御に関係するシーケンスは、制御に関係しないすべてのシーケンスよりも優先順位が高い。例えば、制御ループシーケンスおよびカスケード・ループ・シーケンスは、監視シーケンスよりも優先順位が高い。
【００５８】
２．２  制御に関係する各分類（例えば制御ループシーケンスおよびカスケード・ループ・シーケンス）および制御に関係しない各分類（例えば監視シーケンス）内で、高速に実行される（即ち期間が短い）機能ブロックシーケンスが、低速に実行される（即ち期間が長い）機能ブロックシーケンスよりも優先順位が高い。
【００５９】
２．３  制御シーケンスおよびカスケードシーケンスが同一の期間長を有するとき、制御ループシーケンスはカスケード・ループ・シーケンスよりも優先順位が高い。これは、制御シーケンスが直接的な制御であり、カスケードシーケンスは、下流側制御ループシーケンスまたは別のカスケード・ループ・シーケンスにセットポイントを供給することによって間接的に制御するからである。
【００６０】
２．４  ２．１から２．３に基づいて等しい優先順位の機能ブロックシーケンスでは（例えば、どちらも２秒の期間を有する２つのカスケードシーケンス）、その未スケジュールのブロックおよびパブリケーションがリンクスケジュールにより大きな寄与を必要とするもの（即ち、機能ブロック実行時間と関連するパブリケーション時間の和）が、寄与の小さいものよりも優先順位が高い。この「タイブレーキング」規定の下にある原理は、より大きい寄与を有するシーケンスは、スケジューリング競合の数が多い可能性が高いというものである。
【００６１】
他の実施形態は、タイプのみ、期間長のみ、実装者の裁量、および／またはシーケンスに関連する何らかの因子または因子の組合せ、機能ブロック、および／または「タイ」をブレークするためのスケジューリングを使用する。そのような他の方法は多数あり、当業者には直ちに明らかであろう。
【００６２】
３．リンクスケジュールを作成する
次に、以下で述べる優先順位に基づいてブロック実行およびパブリケーションをリンクスケジュールに割り当てることにより、シーケンスがスケジューリングされる。スケジュールは、シーケンスがスケジューリングされた後に正規化されることが好ましいが、代替実施形態は、別の時に正規化を実施することができる。
【００６３】
３．１  好ましくは、スケジューリングの前にマクロサイクル長（即ち期間）が求められる。この長さは、寄与する機能ブロックの期間の最小公倍数であることが好ましい。しかし、これを別の時に実施することもでき、そのようなオプションは当業者には容易に知られることになる。
【００６４】
３．２  シーケンスに関する非逆算要素（即ち、機能ブロックおよび非逆算パブリケーション）をリンクスケジュールに一度に１つずつ加え、残りの最高の優先順位の機能ブロックシーケンスで開始し、すべてのシーケンスが割り振られるまで続行する。従って、機能ブロックシーケンス中のあらゆるブロックに関連する各「未スケジュール」要素が、次に高い優先順位の機能ブロックシーケンスのブロックに関連する「未スケジュール」要素の割当てを開始する前に割り振られる。このようにして、各ブロックおよび必要な各ブロックパブリケーションが１度だけ割り振られる。
【００６５】
セクション３．２で使用される「パブリケーション」は非逆算パブリケーションを意味する。更に、セクション３のすべてのスケジューリングは、以下の条件の対象となる。
３．２（Ａ）  与えられた任意の装置内の任意の２つのブロックのスケジュール実行時間が重複してはいけない。
【００６６】
３．２（Ｂ）  任意の２つのパブリケーションのスケジュール時間が重複してはいけない。
加えて、間の遅延を最小限に抑えるようにパブリケーションおよびブロック実行をスケジューリングすることが好ましい。
【００６７】
３．２（Ｃ）  パブリケーションを必要としない出力を生成する機能ブロック実行、およびそのような出力を直接入力する機能ブロック実行。
３．２（Ｄ）  パブリケーション生成ブロックの実行、およびパブリケーション生成ブロックで生成されるパブリケーション。
【００６８】
３．２（Ｅ）  パブリケーションを入力する機能ブロック実行、およびパブリケーション入力ブロックで入力されたパブリケーション。
３．２．１  第１の（即ち最高の優先順位の）機能ブロックシーケンスが、マクロサイクル中の相対時間「ゼロ」でまずスケジューリングされる。しかし、当業者には他のオプションが周知であろう。
【００６９】
３．２．２  出力を供給し、またはリンクスケジュール内の先に割り振られた機能ブロックで受領されるパブリケーションを生成する機能ブロックシーケンスが、３．２．２．１で説明する逆順スケジューリングを介して、その必要から逆順にスケジューリングされる。即ち、スケジューリングは「スケジューリングすべき」機能ブロックシーケンスの終りから始めに向かって、好ましくはセクション３．２（Ｃ）、３．２（Ｄ）、および３．２（Ｅ）による最小遅延で進むべきである。
【００７０】
従って、条件３．２（Ａ）および３．２（Ｂ）は、「スケジューリングすべき」要素が、競合する要素間の遅延を最小限に抑えるように適切に再処理される。即ち、
３．２．２（Ａ）  装置内の２つのブロックのスケジュール時間が重複してはならないので、この競合の前に可能な限り早く「スケジューリングすべき」ブロックが開始される。
【００７１】
３．２．２（Ｂ）  任意の２つのパブリケーションのスケジュール時間が重複してはならないので、この競合の前に可能な限り早くパブリケーションがスケジューリングされる。
【００７２】
３．２．２．１  逆順スケジューリングは、まず、「スケジューリングすべき」シーケンス中の機能ブロックの実行またはパブリケーションの開始を、それを必要とする既にスケジュール中にある要素に可能な限り近くスケジューリングすることを含む（従って、セクション３．２．３．１．で述べるように、逆順スケジューリングは正順スケジューリングと非常に大きく異なる）。即ち、「スケジューリングすべき」機能ブロックの実行の終りが、それを必要とする要素の始めに可能な限り近くスケジューリングされる。従って、このスケジューリングが、こうした「スケジューリングすべき」要素の開始を、各要素の時間を考慮するように定義することを必要とすることは明らかであろう。
【００７３】
次いで、「スケジューリングすべき」シーケンス中の、またはそれに関連するスケジューリングを必要とする他のブロックおよびパブリケーションのすべてが、一度に１つずつ逆順にスケジューリングされる。この場合も、セクション３．２（Ｃ）、３．２（Ｄ）、および３．２（Ｅ）に関して「スケジューリングすべき」シーケンス中のブロックおよびパブリケーションの間の遅延を最小限に抑えるようにスケジューリングが実施されるが、上述のセクション３．２．２（Ａ）および３．２．２（Ｂ）の対象となる。
【００７４】
３．２．２．２  非サンプル・スキューオプションが選択された場合、複数の１次入力を有する機能ブロックを検査して、直前の供給ブロックの実行時間が同一であるかどうかを確認すべきである。そうでない場合、実行時間およびパブリケーションの競合を回避することと一致して、最初のものと一致するように後のものを調節すべきである。
【００７５】
３．２．３  リンクスケジュール内の以前に割り当てられた機能ブロックの出力を直接使用し、またはパブリケーションを直接使用する機能ブロックシーケンスが、（３．２．３．１．で述べるように）正順に、一度に１つずつ、その必要から最小の遅延でスケジューリングされる。更に、スケジューリングは「スケジューリングすべき」機能ブロックシーケンスの始めから終りまで、好ましくは最小の遅延で続くべきである。
【００７６】
従って、条件３．２（Ａ）および３．２（Ｂ）は以下のように動作する。
３．２．３（Ａ）  装置中の２つのブロックのスケジュール時間は重複してはならないので、「スケジューリングすべき」ブロックが、この競合後に可能な限り早く開始する。
【００７７】
３．２．３（Ｂ）  任意の２つのパブリケーションのスケジュール時間は重複してはならないので、パブリケーションは、この競合後に可能な限り早くスケジューリングされる。
【００７８】
従って、３．２．３（Ａ）および３．２．３（Ｂ）は、競合する要素間の遅延を最小限に抑えるように「スケジューリングすべき」要素が適切に進められる。
３．２．３．１  正順スケジューリングは、「スケジューリングすべき」シーケンス中の最初の機能ブロックの実行の開始を、必要な出力（またはパブリケーション）を供給するブロック（またはパブリケーション）に可能な限り近づけるようにまずスケジューリングすることを含む。
【００７９】
次いで、「スケジューリングすべき」シーケンス中の、またはそれに関連するスケジューリングを必要とするブロックおよびパブリケーションのすべてが、正順に、一度に１つずつ、必要な出力またはパブリケーションを供給する要素から最小の遅延でスケジューリングされる。この場合も、セクション３．２（Ｃ）、３．２（Ｄ）、および３．２（Ｅ）に関して「スケジューリングすべき」シーケンス中のブロックおよびパブリケーションの間の遅延を最小限に抑えるようにスケジューリングが実施されるが、セクション３．２．３（Ａ）および３．２．３（Ｂ）の対象となる。従って、競合は単に、「次の要素」を、それが追従すべき要素に可能な限り近くスケジューリングすることを必要とする。
【００８０】
３．２．３．２  非サンプル・スキューオプションが選択された場合、複数の１次入力を有する機能ブロックを検査して、直前の供給ブロックの実行時間が同一であるかどうかを確認すべきである。そうでない場合、実行時間およびパブリケーションの競合を回避することと一致して、最初のものと一致するように後のものを調節すべきである。
【００８１】
３．２．４  リンクスケジュールに既に割り当てられた機能ブロックの出力を直接使用せず（またはパブリケーションを直接使用し）、以前にスケジューリングされた機能ブロックで受領される出力接続を供給しない（またはパブリケーションを生成する）機能ブロックシーケンスが、待ち時間の目的で独立とみなされる。従って、それが、任意のシーケンスの要素間の最小の遅延で、マクロサイクルの始めに可能な限り近くなるようにリンクスケジュールに割り当てられる。
【００８２】
３．２．４．１  更に、「スケジューリングすべき」シーケンスの要素間の遅延を最小限に抑えるように、「スケジューリングすべき」シーケンスの任意の部分がマクロサイクル内で調節されることが好ましい。あるいは、パブリケーションが関係する場合、待ち時間を最小限に抑えることと比較して、別の、あまり好ましくないオプションは、新しいパブリケーションの多くが別の既に割り振られたパブリケーションに対して（その前または後に）じかに隣接して配置されるように、新しいシーケンスを配置することである。このようにして、１つまたは複数のパブリケーションギャップをなくすことができる。最も好ましくは、これを３．３に従って実施すべきである。
【００８３】
３．２．４．２  非サンプル・スキューオプションが選択された場合、複数の１次入力を有する機能ブロックを検査して、直前の供給ブロックの実行時間が同一であるかどうかを確認すべきである。そうでない場合、実行時間およびパブリケーションの競合を回避することと一致して、最初のものと一致するように後のものを調節すべきである。
【００８４】
３．３  すべての機能ブロックシーケンスの非逆算パブリケーションスケジューリング要素をスケジュール（即ち、ブロックおよび非逆算パブリケーション）に割り振った後、各逆算パブリケーションをスケジューリングする。これらのそれぞれを、その使用可能後かつその使用前の任意の時間（通常は次の実行サイクル内）で行われるようにスケジューリングすることができる。この基準を満たすパブリケーションギャップは適格なパブリケーションギャップである。
【００８５】
最適化の目的は、可能なら、（セクション３．３の状況で定義される）「潜在的パブリケーションギャップ」を最小限に抑えるように、逆算パブリケーションを別の既に割り当てたパブリケーション（即ち、何れかのソートの）に対して（その前または後に）じかに隣接するように配置することである。
【００８６】
スケジューリングすべきパブリケーションが厳密に適合する、適格な何らかの１つのパブリケーションギャップが存在する場合、完璧に適合するギャップの何れか１つにパブリケーションを配置することができる。このようにして、「潜在的ポテンシャルパブリケーションギャップ」が最小限に抑えられる。実際に、除去を介して完全に最小限に抑えられる。
【００８７】
適格な１つのパブリケーションギャップが利用可能であり、かつそれが「完璧な適合」でない場合、この状況に固有の２つの「潜在的パブリケーションギャップ」の一方を最小限に抑える（即ち完全になくす）ように、パブリケーションを、以前にスケジューリングしたパブリケーションに隣接して配置することが好ましい。パブリケーションを、以前にスケジューリングしたパブリケーションに隣接して配置することができない場合、２つの「潜在的パブリケーションギャップ」の大きい方が最大となるように配置すべきである。即ち、パブリケーションの隣接が不可能である場合、その存在によって生み出される２つの「潜在的パブリケーションギャップ」のサイズが、可能な限り異なる（即ち、一方が大きく、一方が小さい）ように配置する方が良い。
【００８８】
同様に、複数の適格なパブリケーションギャップが利用可能であり、かつ完全に適合するものはない場合、逆算パブリケーションを最小のパブリケーションギャップ内に配置して、途切れていないより大きいパブリケーションギャップをより長いメッセージのために残すことができる。更に、上記と同様に、より小さい「完全なサイズではないパブリケーションギャップ」に固有の２つの「潜在的パブリケーションギャップ」のうちの大きい方が最大化される。この基となる原理は、大きい「潜在的パブリケーションギャップ」は、２つのより小さい「潜在的パブリケーションギャップ」よりも使用される可能性が高いことである。未スケジュールメッセージは長さが変化し、長いメッセージは、ネットワークを介して送信される、キューで待機中の他のメッセージをブロックする可能性があるからである。
【００８９】
最後に、方法がステップ３．２と３．３を共に含むことが好ましいが、ステップ３．３によるバックパブリケーションのスケジューリングを、他のスケジューリングアルゴリズムと共に実施することができる。
【００９０】
３．４  すべてのスケジュール要素を割り振った後、時間が最も早い（負であることもある）スケジュール要素を見つけ、それを、マクロサイクル内のオフセット０を有するように調節し、スケジュール内の同一の相対位置を保持するように、すべての他の要素を同じ量だけ調節する。更に、すべてのスケジュールが、所与のマクロサイクル内に適合するのに十分短い期間ではない可能性があるので、理想的には妥当性チェックを行い、エラーをユーザに提示すべきである。
【００９１】
好ましい実施形態の例
以下の例はこの方法の応用例を例示し、利点を強調する働きをする。
４．０  例１：２つの単純なループ、アクチュエータでの制御
図１に示すように、単純なループ制御がアクチュエータと共にあるとき、各ループについて、送信機からアクチュエータへのパブリケーションは１つだけである。
【００９２】
４．１  自然リンクスケジュール
以下に述べ、図２に反映される自然リンクスケジュールは、第１ループのブロックがまず、自然なシーケンスで実行されることを示す。第２ループシーケンスは、同様であるが、第１ループがその実行の全体を完了するまで開始しない（この時間オフセットは数ミリ秒である）。
【００９３】
【表１】
2006505189.tif 000003
【００９４】
４．２  最適化されたリンクスケジュール
最適化されたリンクスケジュールを以下で述べ、それが図３に反映されている。第１シーケンスが第２シーケンスの前にスケジュールに割り当てられるという仮定の下で、第２シーケンスが、３．２．４を介して、マクロサイクルの始めでリンクに割り当てられる。次いで、第２シーケンスは、３．２．４．１を介して、要素間の遅延を最小限に抑えるように調節される。このようにして、以下と図３に反映されるように、マクロサイクルの全スケジュール済み部分が著しく短縮される（時間オフセットは数ミリ秒である）。
【００９５】
【表２】
2006505189.tif 000004
【００９６】
４．３  向上比
２つのパブリケーションが互いに隣接して配置されるので、パブリケーション因子がわずかに向上する。しかし、最も劇的なのは、マクロサイクル使用率が４６％向上することである。
【００９７】
待ち時間因子                  １００％
待ち時間の向上                    ０％
パブリケーションギャップ因子    ９８％
パブリケーション向上              ２％
マクロサイクル使用率因子        ５４％
マクロサイクル使用率向上        ４６％
５．０  例２：２つの単純なループ、送信機での制御
機能は前の例（２つの単純な制御ループ）と同一であるが、リンクスケジューリングが異なる。単純なループ制御が送信機と共にあるとき、２つのパブリケーションが存在し、１つ目はコントローラからアクチュエータへの出力であり、２つ目は、アクチュエータからコントローラに戻る逆算パラメータである。図４に示すように、これらは２つのループのそれぞれについて生じる。
【００９８】
５．１  自然リンクスケジュール
以下に示し、図５に反映されるように、自然リンクスケジュールは、値が計算されるとすぐに行われるＰＩＤ１の出力のパブリケーションでまず第１ループのブロックを実行し、利用可能になるとすぐに発行されるアクチュエータの逆算を実行する。第２ループシーケンスは、同様であるが、第１ループが逆算を含むその実行の全体を完了するまで開始しない。
【００９９】
【表３】
2006505189.tif 000005
【０１００】
５．２  最適化されたリンクスケジュール
第１シーケンスが第２シーケンスの前にスケジュールに割り当てられるという仮定の下で、第２シーケンスが、３．２．４を介して、マクロサイクルの始めでリンクに割り当てられる。次いで、第２シーケンスは、３．２．４．１を介して、要素間の遅延を最小限に抑えるように調節される。従って、以下で示し、図６に反映されるように、マクロサイクルの全スケジュール済み部分が著しく短縮され、マクロサイクル内でより多くを行うことが可能となる。
【０１０１】
逆算パブリケーションは互いに隣接する。従って、逆算パブリケーションを、それぞれのＰＩＤ機能ブロック実行の完了より前に発行できないことを考えると、分割される元のパブリケーションギャップを不等に作成することはもはやできず、次のサイクルでそれをそれぞれの要求するＰＩＤ機能ブロック実行の直前に発行することにより、より不等でないパブリケーションギャップが形成されることになる。
【０１０２】
【表４】
2006505189.tif 000006
【０１０３】
５．３  向上比
どちらのループも取外し可能な待ち時間を有さないので、待ち時間の向上は達成されない。しかし、２つのパブリケーションが互いに隣接して配置されるので、パブリケーション因子がわずかに向上する。しかし、最も劇的なのは、マクロサイクル使用率が４６％向上することである。
【０１０４】
待ち時間因子                  １００％
待ち時間の向上                    ０％
パブリケーションギャップ因子    ９８％
パブリケーション向上              ２％
マクロサイクル使用率因子        ５４％
マクロサイクル使用率向上        ４６％
６．０  例３：３重信号セレクタ
３重の冗長な入力が使用されるとき、入力セレクタブロックは、構成の目標に応じて、１つ、あるいは入力の一部または全ての平均を選ぶ。図７に、３重信号セレクタを使用する一例を示す。
【０１０５】
６．１  自然リンクスケジュール
以下に示し、図８に反映されるように、自然リンクスケジュールは、出力を直ちに発行する第１ＡＩブロックを実行する。次いで、第２ＡＩブロックが実行され、直ちにその出力が発行される。次に、第３ＡＩブロックが実行され、直ちにその出力が発行される。最後に、入力セレクタブロックが実行され、その後にＰＩＤブロックおよびＡＯブロックが続く。
【０１０６】
【表５】
2006505189.tif 000007
【０１０７】
６．２  最適化されたリンクスケジュール
スキューを最小限に抑えるために、「非サンプル・スキュー」を選択することができ、３つの独立した装置で３つのすべての値を同時にサンプリングすることができる。従って、以下で示し、図９に反映されるように、３つのすべてのＡＩブロックが同一の位相０ｍｓで実行される。次いで、ＩＳｅｌ、ＰＩＤ、およびＡＯが順に実行される。従って、データを利用するブロックは様々な入力からの様々な待ち時間に直面することはなく、マクロサイクル使用率が著しく向上する。
【０１０８】
一方、非サンプル・スキューがＯＦＦに設定された場合、ＡＩ１、ＡＩ２、およびＡＩ３がそれぞれ０ｍｓ、１４ｍｓ、および２８ｍｓで実行を開始し、各ＡＩが実行を、即ち３０ｍｓ、４４ｍｓ、および５８ｍｓで終了した直後に、それぞれのパブリケーションが依然として順にスケジューリングされる。それでも、ＡＩブロック実行が同時であってもスキューされても、常に優先順位の順で個々に発行しななければならない。
【０１０９】
【表６】
2006505189.tif 000008
【０１１０】
６．３  向上比
すべてのＡＩを並列に実行することにより、待ち時間およびマクロサイクル使用率因子が２２％だけ向上する。互いに隣接する３つのすべてのパブリケーションを発行することにより、２つの小さいギャップが除去され、他の用途でのリンク帯域幅の可用性が向上する。
【０１１１】
待ち時間因子                    ７８％
待ち時間の向上                  ２２％
パブリケーションギャップ因子    ９４％
パブリケーション向上              ６％
マクロサイクル使用率因子        ７８％
マクロサイクル使用率向上        ２２％
７．０  例４：３重カスケード
カスケード応用例では、通常は、最も外側のＡＩ機能ブロックが、最も遅く動くプロセス変数（温度など）をサンプリングし、通常は、最も内側のＡＩ機能ブロックが、最も速く動くプロセス変数（圧力やフローなど）をサンプリングする。図１０に、典型的な応用例の一例を示す。
【０１１２】
７．１  自然リンクスケジュール
以下に示し、図１１に反映されるように、自然リンクスケジュールは、第１ＡＩ機能ブロックおよびそのコントローラを実行し、次いで各装置内の接続の経路を、ＡＩ機能ブロックから始めてＡＯ機能ブロックまでたどる。自然リンクスケジュールはまた、その自然ダイアグラム位置内に積分器機能ブロックの実行を含む。
【０１１３】
【表７】
2006505189.tif 000009
【０１１４】
７．２  最適化されたリンクスケジュール
以下のシーケンスチャートは、例４のシーケンスを述べ、優先順位付けする。
【０１１５】
【表８】
2006505189.tif 000010
【０１１６】
最適化されたリンクスケジュールが、上記のシーケンスチャートおよび以下で説明するステップを使用して作成される。以下で述べ、図１２に反映される最適化されたリンクスケジュールは、以下のように作成される。
【０１１７】
Ａ．シーケンスＩＤ＃１が最高の優先順位の未スケジューリングシーケンスであるので、シーケンスＩＤ＃１がまずスケジューリングされる。シーケンスＩＤ＃１は、その速度（０．５秒）およびそのタイプ（制御）の点から最高の優先順位である。
【０１１８】
１．ＡＩ３ ｅｘｅｃ
２．ＡＩ３ ＰＵＢ
３．Ａｒｉｔｈ ｅｘｅｃ
４．ＰＩＤ３ ｅｘｅｃ
５．ＡＯ ｅｘｅｃ
Ｂ．次いで、次に高い優先順位および関連するパブリケーションを有するループＩＤ＃５が、ＰＩＤ３の入力の必要に対する既存のスケジュールに「入れられ」、実行およびパブリケーションとの潜在的競合が回避される。シーケンスＩＤ＃５が残りの非監視タイプシーケンス（シーケンス３、５、および６）のうち「最小の」（最も速い）期間を有し、「カスケード」シーケンスであるので、シーケンスＩＤ＃５を第２シーケンスとして選んだ。シーケンスのブロック（ＡＩ２−ＰＩＤ２）の出力がＰＩＤ３ ｅｘｅｃにより、実行の直前に必要とされるので、ＰＩＤ２ ＰＵＢがその必要から逆順にスケジューリングされる。
【０１１９】
６．ＰＩＤ２ ＰＵＢ
７．ＰＩＤ２ ｅｘｅｃ
８．ＡＩ２ ｅｘｅｃ
Ｃ．シーケンスＩＤ＃３および＃６が共に制御に関係し、未割当て部分が２秒期間で実行される。しかし、シーケンスＩＤ＃３が制御シーケンスであり、ＩＤ＃６がカスケードシーケンスであるので、シーケンスＩＤ＃３が先行する。シーケンスの出力が算術ブロックで使用されるので、その必要から逆順にスケジューリングされる。しかしＡＩ３は、算術ブロックの実行の直前にその出力を発行するので、ＡＩ４のパブリケーションが再処理され、その結果、Ａ１３のパブリケーションの開始直前に完了する。
【０１２０】
９．ＡＩ４ ＰＵＢ
１０．ＡＩ４ ｅｘｅｃ
Ｄ．制御に関係する残りの唯一のシーケンスがシーケンス＃６であると識別される。このカスケードシーケンスは、以前にスケジューリングされたＰＩＤ２ブロックで必要とされるＰＩＤ１のパブリケーションで終了する。従って、ＰＩＤ１ ＰＵＢが、ＰＩＤ２の実行の直前に完了するようにスケジューリングされる。更に、ＰＩＤ１が、パブリケーションがスケジューリングされる直前に完了するようにスケジューリングされ、ＡＩ１ブロックが、ＰＩＤ１ブロックが実行される直前に完全に実行されるようにスケジューリングされる。
【０１２１】
１１．ＰＩＤ１ ＰＵＢ
１２．ＰＩＤ１ ｅｘｅｃ
１３．ＡＩ１ ｅｘｅｃ
Ｅ．この時点で、未スケジュールブロックを有する制御に関係する残りのシーケンスは存在しない。従って、次に、未スケジュールブロックを有する監視シーケンスがスケジューリングされる（即ち、シーケンス＃２および＃４）。ＡＩ３、ＡＩ４、および算術ブロックは既にスケジューリングされているので、これらのシーケンスの両方で、積分器ブロックが唯一の残りの未スケジュールブロックである。従って、次にスケジューリングするためにどちらかを選択することができる。
【０１２２】
積分器の入力は算術ブロックの実行に依存するので、算術ブロックが実行を完了した後に可能な限り早く実行するようにスケジューリングされる。しかし、積分器は、優先順位の高さに従って先にスケジューリングされているＰＩＤ３およびＡＯとして同一の単一アプリケーションプロセッサ内に存在するので、ＡＯが実行を完了するまで積分器をスケジューリングすることができない。
【０１２３】
１２．Ｉｎｔｅｇｒａｔｏｒ ｅｘｅｃ
Ｆ．最後に、逆算パブリケーションが「利用可能」〜「必要」時間範囲内でスケジューリングされ、その結果、３．３に従って他のパブリケーションと隣接して配置される。ＰＩＤ３は、カスケード式制御ブロックの最も内側であり、従って優先順位が高く、ＰＩＤ２が次である（ＰＩＤ１の逆算出力を必要とするブロックがないので、ＰＩＤ１はそれを発行する必要がない）。
【０１２４】
より具体的には、ＰＩＤ３がその実行を完了したとき、ＰＩＤ３ ＢＫがパブリケーションのために利用可能であり、そのパブリケーションを、ＰＩＤ２がその実行を開始する時までに完了しなければならない。従って、ＰＩＤ３が完了した後、マクロサイクルの終りまで、またはマクロサイクルの開始からＰＩＤ２が実行を開始する時まで（そのパブリケーション期間未満）にスケジューリングすることができる。こうした境界内に既にスケジューリングされている他のパブリケーションは１つだけであり、それはＰＩＤ１のパブリケーションである。その後にそれを発行することはできない（即ち、遅すぎる）ので、ＰＩＤ１ ＰＵＢの直前にスケジューリングされる。従って、この隣接により、セクション３．３による「潜在的パブリケーションギャップ」が解消される。
【０１２５】
ＰＩＤ２がその実行を完了したとき、ＰＩＤ２ ＢＫがパブリケーションのために利用可能であり、そのパブリケーションを、そのユーザであるＰＩＤ１がその実行を開始するまでに完了しなければならない。ＰＩＤ２の完了からマクロサイクルの終りまで、またはマクロサイクルの開始とＰＩＤ１がその実行を開始する時の間（パブリケーション期間未満）にスケジューリングすることができる。こうした境界内に既にスケジューリングされている他のパブリケーションは１つだけであり、それはＰＩＤ２のパブリケーションである。ＰＩＤ２のパブリケーションの前に発行することができない（即ちまだ準備できていない）ので、セクション３．３による「潜在的パブリケーションギャップ」をなくすために、ＰＩＤ２のパブリケーションの直後にスケジューリングされる。
【０１２６】
１３．ＰＩＤ３ ＢＫ ＰＵＢ
１４．ＰＩＤ２ ＢＫ ＰＵＢ
従って、最適化されたリンクスケジュールは以下の通りである。
【０１２７】
【表９】
2006505189.tif 000011
【０１２８】
７．３  向上比
並列実行を利用し、積分器およびＰＩＤ３−ＢＫＰＵＢの実行を最終制御要素の実行後に移動することにより、大部分のクリティカルループの待ち時間が２１％向上し、マクロサイクル使用率因子が４３％向上する。互いに隣接するパブリケーションを実行することにより、パブリケーションが４％向上する。
【０１２９】
待ち時間因子                    ７９％
待ち時間の向上                  ２１％
パブリケーションギャップ因子    ９６％
パブリケーション向上              ４％
マクロサイクル使用率因子        ５７％
マクロサイクル使用率向上        ４３％
本明細書では、本発明を主にＦｏｕｎｄａｔｉｏｎ  ＦＩＥＬＤＢＵＳリンクスケジュールを最適化する方法として説明した。しかし、本発明はこの特定の使用分野に限定されず、周期的に実行されるスケジュールに対して動作する任意の通信ネットワークで役立つように適用可能であり、使用することができることを当業者は理解されよう。
【０１３０】
従って、添付の特許請求の範囲で定義される本発明の精神および範囲から逸脱することなく、様々な変更および修正を行えることは当業者には明らかであろう。
【図面の簡単な説明】
【０１３１】
【図１】例１に関連するブロック図である。
【図２】例１の自然スケジュールに関連するタイミング図である。
【図３】例１の最適化されたスケジュールに関連するタイミング図である。
【図４】例２に関連するブロック図である。
【図５】例２の自然スケジュールに関連するタイミング図である。
【図６】例２の最適化されたスケジュールに関連するタイミング図である。
【図７】例３に関連するブロック図である。
【図８】例３の自然スケジュールに関連するタイミング図である。
【図９】例３の最適化されたスケジュールに関連するタイミング図である。
【図１０】例４に関連するブロック図である。
【図１１】例４の自然スケジュールに関連するタイミング図である。
【図１２】例４の最適化されたスケジュールに関連するタイミング図である。
【図１】
2006505189.tif 000012
【図２】
2006505189.tif 000013
【図３】
2006505189.tif 000014
【図４】
2006505189.tif 000015
【図５】
2006505189.tif 000016
【図６】
2006505189.tif 000017
【図７】
2006505189.tif 000018
【図８】
2006505189.tif 000019
【図９】
2006505189.tif 000020
【図１０】
2006505189.tif 000021
【図１１】
2006505189.tif 000022
【図１２】
2006505189.tif 000023
【国際調査報告】
2006505189.tif 000024
2006505189.tif 000025