(57)【要約】  プロセス制御システムにおけるデバイス群は、通信媒体セグメント上でデータメッセージによって通信する。各デバイスは、通信媒体から受信した事象、及び通信媒体に送信した事象の発生順序を維持する通信コントローラを含んでいる。通信コントローラは、発生順序識別（ＯＯＯ＿ＩＤ）カウンタと、事象キューメモリとを含んでいる。事象キューメモリは、通信コントローラによって処理される各事象の事象形式識別子を順次格納する。ＯＯＯ＿ＩＤカウンタは、各事象形式識別子を関連付けるＯＯＯ＿ＩＤを供給する。
2008516471.tif 000002
【特許請求の範囲】
【請求項１】
通信媒体上で通信を行うデバイスであって、
該デバイスは、
前記通信媒体上でメッセージの受信及び送信を行う媒体接続装置（ＭＡＵ）と、
受信されたメッセージに格納されたデータの処理と、送信されるメッセージに格納されるデータの生成とを行う中央処理装置（ＣＰＵ）と、
前記ＭＡＵと前記ＣＰＵとを接続する通信コントローラであって、該通信コントローラは、前記通信媒体から受信された事象、もしくは前記通信媒体に送信された事象を処理し、発生順序識別（ＯＯＯ＿ＩＤ）カウンタと、事象キューメモリとを含み、該事象キューメモリが、各事象の事象形式識別子を順次格納し、前記ＯＯＯ＿ＩＤカウンタが、各事象形式識別子に関連付けられたＯＯＯ＿ＩＤを供給する、通信コントローラと
を備えていることを特徴とするデバイス。
【請求項２】
請求項１に記載のデバイスであって、
前記ＯＯＯ＿ＩＤカウンタは、前記通信媒体から事象が受信されたとき、もしくは前記通信媒体に事象が送信されたときに、インクリメントされる
ことを特徴とするデバイス。
【請求項３】
請求項１に記載のデバイスであって、
前記通信コントローラは、さらに、
複数の発生順序（ＯＯＯ）タイマと、
複数のタイマＯＯＯ＿ＩＤレジスタであって、各タイマＯＯＯ＿ＩＤレジスタが前記複数のＯＯＯタイマの１つに関連付けられ、ＯＯＯタイマが失効すると、前記ＯＯＯ＿ＩＤカウンタからの現在のＯＯＯ＿ＩＤが、該ＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタに格納される、複数のタイマＯＯＯ＿ＩＤレジスタと
を備えていることを特徴とするデバイス。
【請求項４】
請求項３に記載のデバイスであって、
前記ＣＰＵは、事象に関連付けられたＯＯＯ＿ＩＤを、失効したＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタに格納されたＯＯＯ＿ＩＤと比較することにより、前記事象と、前記ＯＯＯタイマの失効との間における発生順序を判定する
ことを特徴とするデバイス。
【請求項５】
請求項３に記載のデバイスであって、
前記通信コントローラは、さらに、
前記ＣＰＵによって処理中の有効な事象に関連する情報を格納するレジスタであって、前記情報が、前記有効な事象に関連付けられた前記ＯＯＯ＿ＩＤと、前記有効な事象の前記事象形式識別子と、前記複数のＯＯＯタイマのいずれかが失効したか否かを示すＯＯＯタイマ状態ビットとを含んでいる、レジスタを備えている
ことを特徴とするデバイス。
【請求項６】
請求項３に記載のデバイスであって、
前記ＯＯＯタイマとして、受信応答タイマと、送信応答タイマと、非活動タイマと、デリゲートトークン復帰タイマとを備えている
ことを特徴とするデバイス。
【請求項７】
請求項１に記載のデバイスであって、
前記事象は、前記通信媒体から受信したメッセージと、前記通信媒体に送信したメッセージとを含んでいる
ことを特徴とするデバイス。
【請求項８】
プロセス制御システムにおける事象の発生順序を維持する通信コントローラであって、
該通信コントローラは、
各事象の事象形式識別子を順次格納する先入れ先出し（ＦＩＦＯ）メモリと、
各事象形式識別子を関連付けるＯＯＯ＿ＩＤを供給する発生順序識別（ＯＯＯ＿ＩＤ）カウンタと
を備えていることを特徴とする通信コントローラ。
【請求項９】
請求項８に記載の通信コントローラであって、
現在のＯＯＯ＿ＩＤは、前記ＯＯＯ＿ＩＤカウンタに関連付けられた事象キュー書込ポインタによって維持されている
ことを特徴とする通信コントローラ。
【請求項１０】
請求項９に記載の通信コントローラであって、
前記事象キュー書込ポインタは、前記通信コントローラにおいて事象が発生すると、インクリメントされる
ことを特徴とする通信コントローラ。
【請求項１１】
請求項１０に記載の通信コントローラであって、さらに、
前記ＦＩＦＯメモリが空であるときに、前記事象キュー書込ポインタがインクリメントされてしまうことを防止する手段を備えている
ことを特徴とする通信コントローラ。
【請求項１２】
請求項８に記載の通信コントローラであって、さらに、
複数の発生順序（ＯＯＯ）タイマと、
複数のタイマＯＯＯ＿ＩＤレジスタであって、各タイマＯＯＯ＿ＩＤレジスタが前記複数のＯＯＯタイマの１つに関連付けられ、ＯＯＯタイマが失効すると、現在のＯＯＯ＿ＩＤカウンタ値が該ＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタに格納される、複数のタイマＯＯＯ＿ＩＤレジスタと
を備えていることを特徴とする通信コントローラ。
【請求項１３】
請求項１２に記載の通信コントローラであって、さらに、
ソフトウェアによって処理中の有効な事象に関連する情報を格納する有効事象レジスタであって、前記情報が、前記有効な事象に関連付けられた前記ＯＯＯ＿ＩＤと、前記有効な事象の前記事象形式識別子と、前記複数のＯＯＯタイマのいずれかが失効したか否かを示すＯＯＯタイマ状態ビットとを含んでいる、有効事象レジスタを備えている
ことを特徴とする通信コントローラ。
【請求項１４】
請求項１３に記載の通信コントローラであって、
前記有効事象レジスタに格納された前記ＯＯＯ＿ＩＤ、及び失効したＯＯＯタイマに関連付けられた前記タイマＯＯＯ＿ＩＤレジスタに格納された前記ＯＯＯ＿ＩＤは、前記有効な事象とＯＯＯタイマの失効との間における発生順序を定める
ことを特徴とする通信コントローラ。
【請求項１５】
請求項１２に記載の通信コントローラであって、
前記ＯＯＯタイマとして、受信応答タイマと、送信応答タイマと、非活動タイマと、デリゲートトークン復帰タイマとを備えている
ことを特徴とする通信コントローラ。
【請求項１６】
通信デバイスにおける事象の発生順序を判定する方法であって、
各事象の事象形式識別子を先入れ先出し（ＦＩＦＯ）メモリに順次格納することと、
ＯＯＯ＿ＩＤカウンタの現在の値を前記事象形式識別子に関連付けることと、
複数の発生順序（ＯＯＯ）タイマ、及び複数のタイマＯＯＯ＿ＩＤレジスタであって、各タイマＯＯＯ＿ＩＤレジスタが前記複数のＯＯＯタイマの１つに関連付けられている、複数のＯＯＯタイマと、複数のタイマＯＯＯ＿ＩＤレジスタとを設けることと、
タイマＯＯＯ＿ＩＤレジスタに関連付けられたＯＯＯタイマが失効すると、前記ＯＯＯ＿ＩＤカウンタの現在の値をタイマＯＯＯ＿ＩＤレジスタに格納することと、
前記事象に関連付けられた前記ＯＯＯ＿ＩＤを、前記失効したＯＯＯタイマに関連付けられた前記タイマＯＯＯ＿ＩＤレジスタに格納された前記ＯＯＯ＿ＩＤと比較することと
を含むことを特徴とする方法。
【請求項１７】
請求項１６に記載の方法であって、
前記事象に関連付けられた前記ＯＯＯ＿ＩＤが、前記タイマＯＯＯ＿ＩＤレジスタに格納された前記ＯＯＯ＿ＩＤと一致する場合には、前記事象の発生前に、前記ＯＯＯタイマが失効し、
前記事象に関連付けられた前記ＯＯＯ＿ＩＤが、前記タイマＯＯＯ＿ＩＤレジスタに格納された前記ＯＯＯ＿ＩＤと不一致な場合には、前記事象の発生後に、前記ＯＯＯタイマが失効する
ことを特徴とする方法。
【請求項１８】
請求項１６に記載の方法であって、さらに、
前記通信デバイスにおいて事象が発生すると、前記ＯＯＯ＿ＩＤカウンタをインクリメントすることを含んでいる
ことを特徴とする方法。
【請求項１９】
請求項１８に記載の方法であって、
前記ＯＯＯ＿ＩＤカウンタをインクリメントすることは、事象キュー書込ポインタを前記ＦＩＦＯメモリにおける次の記憶位置に進めることを含んでいる
ことを特徴とする方法。
【請求項２０】
請求項１６に記載の方法であって、
前記事象は、前記通信デバイスによって通信媒体から受信されたメッセージと、前記通信デバイスによって通信媒体に送信されたメッセージとを含んでいる
ことを特徴とする方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
[発明の背景]
本発明は、プロセス制御システムにおける、現場計器及び他のデバイスに使用する通信コントローラに関する。具体的には、本発明は、通信コントローラにおいて、事象の発生順序を管理するシステム及び方法である。
【０００２】
一般的な工業プラントでは、分散制御システム（ＤＣＳ）が、プラントで実行される多くの工業処理を制御するのに使用されている。一般的に、プラントには、コンピュータシステムを備えた集中制御室があり、コンピュータシステムには、コンピュータ技術において周知のユーザＩ／Ｏと、ディスクＩ／Ｏと、他の周辺デバイスとが具備されている。コンピュータシステムには、コントローラとプロセスＩ／Ｏサブシステムとが連結されている。
【０００３】
プロセスＩ／Ｏサブシステムには、複数のＩ／Ｏポートが具備されており、このＩ／Ｏポートには、プラント全体における種々のフィールドデバイスが接続されている。制御技術において知られたフィールドデバイスとしては、さまざまな種類の解析装置、シリコン圧力センサ、容量圧力センサ、抵抗温度検出器、熱電対、ひずみゲージ、リミットスイッチ、オン／オフスイッチ、流量送信器、圧力送信器、静電容量レベルスイッチ、計量器、トランスデューサ、バルブ固定装置、バルブコントローラ、アクチュエータ、ソレノイド、表示灯がある。本明細書において、“フィールドデバイス”という用語は、これらデバイスとともに、分散制御システムにおいて機能し、制御技術において知られた他のいかなるデバイスも含む。
【０００４】
以前より、アナログ式フィールドデバイスは、１つの２線ツイストペアによって制御室に接続された各デバイスとともに、２線ツイストペア電流閉ループによって制御室に接続されている。アナログ式フィールドデバイスは、特定範囲内で、電気信号に応答したり、電気信号を送信することができる。通常の形態では、一般的に、ペアになっている２つの導線間におおよそ２０−２５ボルトの電位差が生じ、閉ループに４−２０ミリアンプの電流が流れる。制御室へ信号を送信するアナログ式フィールドデバイスは、検出したプロセス変量に比例した電流を用いて電流閉ループを流れる電流を調節する。他方、制御室の制御に従って動作するアナログ式フィールドデバイスは、閉ループを流れる電流の大きさによって制御される。尚、閉ループを流れる電流の大きさは、プロセスＩ／ＯシステムのＩ／Ｏポートによって調節される一方、プロセスＩ／ＯシステムのＩ／Ｏポートは、コントローラによって制御される。また、能動的な電子機器を備えた従来の２線式アナログデバイスは、閉ループから４０ミリワットまでの電力の供給を受けることが可能である。より大きな電力を必要とするアナログ式フィールドデバイスは、一般的に、４つの導線を介して制御室に接続され、４つの導線のうちの２つの導線が、デバイスに電力を供給する。このようなデバイスは、当技術分野において４線式デバイスとして知られ、２線式デバイスのような電力の制限がない。
【０００５】
アナログ式フィールドデバイスとは対照的に、従来のディジタル式フィールドデバイスは、２値信号を送信したり、２値信号に対して応答する。一般的に、ディジタル式フィールドデバイスは、２４ボルト信号（ＡＣもしくはＤＣ）、または、１１０もしくは２４０ボルトＡＣ信号、または、５ボルトＤＣ信号で動作する。当然のことながら、ディジタル式デバイスは、特定の制御環境で必要とされるあらゆる電気仕様に従って動作するように設計されてもよい。ディジタル入力フィールドデバイスは、制御室との接続の確立及び切断のいずれか一方を行う単なるスイッチである一方、ディジタル出力フィールドデバイスは、制御室から信号があるか否かに従って動作するようになっている。
【０００６】
以前より、従来のフィールドデバイスの多くは、信号入力もしくは信号出力のいずれか一方を行うだけであり、信号入力もしくは信号出力は、フィールドデバイスが実行する主要機能に直接関連していた。例えば、従来のアナログ式抵抗温度センサが実現する唯一の機能は、２線式ツイストペアを介して流れる電流を変化させることで温度を送信することである一方、従来のアナログ式バルブ保定装置が実現する唯一の機能は、２線式ツイストペアを流れる電流の大きさに基づき、バルブを開位置と閉位置との間に位置させることである。
【０００７】
最近では、電流閉ループにディジタルデータを重畳するハイブリッドシステムが分散制御システムに用いられている。制御技術における１つのハイブリッドシステムがハイウェイ・アドレッサブル・リモート・トランスデューサ（ＨＡＲＴ）として知られており、このハイブリッドシステムは、ベル２０２モデム仕様に類似している。ＨＡＲＴシステムは、電流閉ループにおける電流の大きさを用いてプロセス変量を検出する（従来のシステムと同様）だけでなく、電流閉ループ信号にディジタルキャリア信号を重畳する。キャリア信号は、比較的遅く、二次プロセス変量を１秒間におおよそ２，３回の頻度で更新できる信号である。一般的に、ディジタルキャリア信号は、二次的な診断情報を送信するのに用いられるものであって、フィールドデバイスの主要制御機能を実現するのに用いられるものではない。キャリア信号に重畳される情報の例としては、二次プロセス変量、（センサ診断と、デバイス診断と、配線診断と、プロセス診断とを含む）診断情報、動作温度、センサの温度、補正情報、デバイスＩＤ番号、建設資材、設定もしくはプログラミング情報などがある。したがって、１つのハイブリッド式フィールドデバイスは、種々の入出力変数を持つことができ、種々の機能を実現できる。
【０００８】
ＨＡＲＴは、業界標準の一般的なシステムである。しかしながら、ＨＡＲＴは、速度が比較的遅い。業界における他社は、より速度が速い独自仕様のディジタル送信仕様を開発したものの、これらの仕様は、一般的に、競合他社が使用したり、入手できるものではない。
【０００９】
最近、より新しい制御プロトコルがアメリカ計測学会（ＩＳＡ）によって策定された。この新しいプロトコルは、一般的に、フィールドバスと呼ばれている。フィールドバスは、マルチドロップ・シリアル・ディジタル双方向通信プロトコルであり、分散制御システムにおける、現場計器と、監視ユニットや模擬ユニットといった他のプロセスデバイスとを接続するためのものである。フィールドバスによって、以前のプロセス制御ループ法におけるディジタル通信を強化しつつ、フィールドバス閉ループに連結されたプロセスデバイスに電力を供給する能力を維持するとともに、固有の安全要求に合致させることもできる。
【００１０】
合理的に標準化された２つの工業用フィールドバスプロトコルとして、ファウンデーション・フィールドバスと、プロフィバスとがある。フィールドバスプロトコルの物理層は、アメリカ計測学会規格であるＩＳＡ−Ｓ５０．０２−１９９２と、１９９５年の２つの拡張案とに定義されている。フィールドバスプロトコルでは、２つのサブプロトコルが定義されている。Ｈ１フィールドバスネットワークは、最大３１．２５（キロビット／秒）（Ｋｂｐｓ）の速度でデータを送信するとともに、ネットワークに接続されたフィールドデバイスに電力を供給する。Ｈ１物理層サブプロトコルは、１９９２年の９月に承認されたＩＳＡ規格の第１１節第２部に定義されている。Ｈ２フィールドバスネットワークは、最大２．５（メガビット／秒）（Ｍｂｐｓ）の速度でデータを送信するものの、ネットワークに接続されたフィールドデバイスに電力を供給せず、余剰の伝送媒体を備えている。
【００１１】
フィールドバスは、膨大な量のプロセスデータをディジタル通信するという有用な能力を発揮する。したがって、フィールドバス通信の効果を最大限にすることが可能なプロセス制御デバイスの開発を継続する必要がある。
【００１２】
[発明の概要]
本発明は、通信媒体から受信された事象、及び通信媒体へ送信された事象の発生順序を維持するデバイスに用いられる通信コントローラである。通信コントローラは、発生順序識別（ＯＯＯ＿ＩＤ）カウンタと事象キューメモリとを含んでいる。事象キューメモリは、通信コントローラによって処理された各事象の事象形式識別子を順次格納する。ＯＯＯ＿ＩＤカウンタは、ＯＯＯ＿ＩＤを供給して、各事象形式識別子と関連づける。
【００１３】
好ましい実施形態では、通信コントローラは、さらに、複数のタイマＯＯＯ＿ＩＤレジスタを含んでいる。タイマＯＯＯ＿ＩＤレジスタの各々は、通信コントローラにおける発生順序（ＯＯＯ）タイマの１つに関連している。ＯＯＯタイマの１つが失効すると、ＯＯＯ＿ＩＤカウンタからのＯＯＯ＿ＩＤの現在の値は、このＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタに格納される。ソフトウェアは、ある事象のＯＯＯ＿ＩＤ値をあるタイマＯＯＯ＿ＩＤレジスタに格納されたＯＯＯ＿ＩＤと比較することで、その事象からそのＯＯＯタイマが失効するまでの間における発生順序を決定する。
【００１４】
[詳細な説明]
＜プロセス制御システムの概要＞
本発明は、プロセス制御システムにおける現場計器と他のデバイスとに用いられる通信コントローラに関する。通信コントローラの用途は、メッセージとタイマ管理とのリンク層処理の大部分を実行することで、アプリケーションプロセッサもしくはＣＰＵを解放し、アプリケーションプロセッサもしくはＣＰＵが他の機能を実行できるようにすることである。本詳細な説明のために、ファウンデーション・フィールドバス通信プロトコルを用いるシステムを背景にして通信コントローラを説明する。ただし、通信コントローラは、パケットに基づいた通信プロトコルに対して一般的適用性を有している。
【００１５】
フィールドバス物理層は、物理層プロトコルデータユニット（ＰｈＰＤＵ）の形式で通信プロトコルデータを送受信する物理手段の電気的特性を定義している。さらに、フィールドバス物理層は、シンボル符号化、メッセージフレーム化、エラー検出方法を定義している。ＩＳＡフィールドバス規格は、３つの信号伝送速度と２つの結合モードとを定義している。本説明のため、ＩＳＡのＳ５０．０２規格第２部における第１１節に定義されたＨ１物理層を背景にして本発明を説明する。この節は、低電力の選択肢を有した、３１．２５Ｋｂｐｓ、電圧モード、導線媒体を対象としている。この選択肢によれば、通信媒体に接続されたデバイスは、通信媒体から動作電力の供給を受けることができる。物理層は、危険な環境のための固有の安全要求に合致させることができる。このプロトコルは、規格によって定義された電圧及び電流の制限に従って、低級ツイストペア線で動作し、多数のデバイスに対応するものである。
【００１６】
図１は、一般的なプロセス制御システム１０を示している。このプロセス制御システム１０は、セグメント１２と、電源１４と、５つのデバイスとを備えている。尚、５つのデバイスは、リンク・アクティブ・スケジューラ（ＬＡＳ）デバイス２０、リンク・マスタ（ＬＭ）デバイス２２、基本デバイス２４，２６，２８である。セグメント１２は、１対の導線上で３２基のデバイスまで対応することができる。一般的に、セグメント１２は、ループ実行速度と、電力と、固有の安全要求とに基づいて、４〜１６基のデバイスを有することになる。
【００１７】
ＬＡＳデバイス２０は、セグメント１２上のデバイス間でなされる全ての通信の主要スケジュールを維持する。ＬＡＳデバイス２０は、コンペル・データ（ＣＤ）と、データ・リンク・プロトコル・データ・ユニット（ＤＬＰＤＵｓ）とを各デバイスへ送信し、各デバイスが、その後に返信するようにスケジュールされる巡回データを返信することで全体的な通信の信頼性を向上させる。ＬＡＳデバイス２０は、セグメント１２上のデータリンク時刻（ＤＬ時刻）の局部的な起点として機能する。ＤＬＰＤＵは、セグメント１２をわたって通信されるＰｈＰＤＵメッセージのデータ内容である。
【００１８】
ＬＭデバイス２２は、万が一、ＬＡＳデバイス２０が故障した場合、もしくは正常に動作しなくなった場合に、ＬＡＳデバイス２０の役割を引き継ぐように構成されている。図１には、ＬＭデバイス２２しか図示されていないが、複数のリンク・マスタ・デバイスをセグメント上に設けることができる。複数のリンク・マスタ・デバイスを設けることによって、リンク・アクティブ・スケジューラと第１のリンク・マスタとの双方が故障しても、第２のリンク・マスタがリンク・アクティブ・スケジューラを引き継ぐことができる。リンク・アクティブ・スケジューラがいったん機能しなくなると、リンク・マスタがリンク・アクティブ・スケジューラの機能を引き継ぐ。
【００１９】
各デバイスは、Ｖ（ＴＮ）と称する固有のアドレスを有している。尚、Ｖ（ＴＮ）は、ローカルノードＩＤ（Ｔｈｉｓ＿Ｎｏｄｅ）を表す。図１に示す例では、ＬＡＳデバイス２０は、Ｖ（ＴＮ）＝２０というアドレス；ＬＭデバイス２２は、Ｖ（ＴＮ）＝２２というアドレス；基本デバイス２４は、Ｖ（ＴＮ）＝Ａ５というアドレス；基本デバイス２６は、Ｖ（ＴＮ）＝Ｆ３というアドレス；基本デバイス２８は、Ｖ（ＴＮ）＝Ｆ５というアドレスを有している。
【００２０】
ＬＡＳデバイス２０は、セグメント１２上の全てのデバイスにパス・トークン（ＰＴ）メッセージとプローブ・ノード（ＰＮ）メッセージとを送信する。他のデバイス（ＬＡＳデバイス２２及び基本デバイス２４，２６，２８）はそれぞれ、リターン・トークン（ＲＴ）メッセージとプローブ・レスポンス（ＰＲ）メッセージとをＬＡＳデバイス２０に適宜返信する。
【００２１】
基本デバイス２４，２６，２８はそれぞれ、ＬＡＳデバイス２０によって送信された各々に対するＰＴメッセージとＰＮメッセージとを確認する必要があるだけである。ＰＴメッセージ及びＰＮメッセージは、符号化された宛先アドレス（ＤＡ）をＤＬＰＤＵの第２バイトに有している。ＬＡＳデバイス２０は、セグメント１２上の全てのデバイスに対して、トークン（ＰＴ）の転送、もしくはノード（ＰＮ）の調査を１つづつ行う。
【００２２】
基本デバイス２４，２６，２８は、各々の固有アドレス（ＤＡ＝Ｖ（ＴＮ））と一致する宛先アドレスを有するＰＴメッセージを受信すると、ＬＡＳデバイス２０に対してＲＴメッセージで応答する。基本デバイス２４，２６，２８は、ＤＡ＝Ｖ（ＴＮ）を有するＰＮ  ＤＬＰＤＵを受信すると、ＰＲメッセージで応答することを要求される。
【００２３】
ＬＡＳデバイス２０からのＰＴメッセージ、ＰＮメッセージ、及びＬＡＳデバイス２０へのＲＴメッセージ、ＰＲメッセージの送信によって、特定の基本デバイス２４，２６，２８が受信や応答する必要がない種々のメッセージがセグメント１２上に生成される。基本デバイス２４，２６，２８はそれぞれ、その特定のデバイス宛のＰＴメッセージ及びＰＮメッセージに応答する必要があるだけである。ＬＡＳデバイス２０からの他のデバイス宛のＰＴメッセージ及びＰＮメッセージ、さらに、他のデバイスからのＬＡＳデバイス２０宛のＲＴメッセージ及びＰＲメッセージに頻繁に割り込まれることにより、これら“妨害割込”を処理する過度の処理時間が生じ得る。基本デバイス２４，２６，２８のために、ＤＬＰＤＵフィルタリングを用いて、基本デバイスが処理しなければならない割込の数を低減できる。他方、ＬＡＳデバイス２０は、セグメント１２上の各メッセージを処理しなければならない。
【００２４】
セグメント１２上の全てのデバイスは、データをマンチェスタ符号化ベースバンド信号としてセグメント１２上に送信する。マンチェスタ符号化によって、“０”及び“１”は、ビット周期内で起こるロウからハイへの変化と、ハイからロウへの変化とでそれぞれ表される。フィールドバスでは、公称ビット時間は３２マイクロ秒（μ秒）であり、１６μ秒で変化を生じる。マンチェスタ符号化法は、拡張され、非データプラス（Ｎ＋）、非データマイナス（Ｎ−）といった２つの追加シンボルを含んでいる。但し、ビット周期中に変化は起こらず、マンチェスタ符号化ベースバンド信号は、ハイ（Ｎ＋）もしくはロウ（Ｎ−）のままとなる。
【００２５】
＜メッセージフォーマット＞
図２に、メッセージをセグメント１２上に送信するのに用いられる物理層プロトコルデータユニット（ＰｈＰＤＵ）のフォーマットを示す。ＰｈＰＤＵは、プリアンブルと、スタート・デリミタ（ＳＤ）と、データリンク・プロトコル・データ・ユニット（ＤＬＰＤＵ）と、エンド・デリミタ（ＥＤ）とを含んでいる。プリアンブルは、ＰｈＰＤＵメッセージの最初の数ビットである。フィールドバス仕様では、１〜８バイトのプリアンブルが許容されている。メッセージを受信するデバイスは、プリアンブルを用いて、到来するメッセージと同期する。図２に示すように、プリアンブルにおける最初のバイト列は、１  ０  １  ０  １  ０  １  ０となっている。
【００２６】
スタート・デリミタ（ＳＤ）は、プリアンブルの直後に続く。１つのメッセージにつき１つのＳＤがある。フィールドバス仕様では、ＳＤは、非文字データ（Ｎ＋及びＮ−）を有している必要がある。この非文字データは、常に、相互補完関係にある一対としてＳＤメッセージに現れる。この符号化方法によって、ＳＤは独特のものとなり、ＳＤとメッセージのデータ部分（ＤＬＰＤＵ）との混同が生じることがない。図２に示すＳＤの列は、１  Ｎ＋  Ｎ−  １  ０  Ｎ−  Ｎ＋  ０となっている。
【００２７】
ＤＬＰＤＵは、可変長メッセージである。ＤＬＰＤＵは、その最初のバイトとしてフレーム制御（ＦＣ）バイトを含み、その最後の２バイトとしてフレーム・チェック・シーケンス（ＦＣＳ）チェックサムを含んでいる。ＤＬＰＤＵの長さは、可変であり、最小３バイト（ＲＴメッセージの場合）から例えばおおよそ３００バイトのジャバリミットまでである。
【００２８】
エンド・デリミタ（ＥＤ）は、ＤＬＰＤＵに続く。ＥＤは、セグメント１２上へ送信されたあらゆるＰｈＰＤＵメッセージの最後のバイトを表している。ＳＤと同様に、ＥＤは、相互補完関係にある一対の非文字データを含んでいる。この符号化方法によって、ＥＤは独特のものとなり、ＥＤとＤＬＰＤＵとの混同が生じることがない。図２に示すエンド・デリミタの列は、１  Ｎ＋  Ｎ−  Ｎ＋  Ｎ−  １  ０  １となっている。
【００２９】
また、図２は、キャリア検出信号を示している。キャリア検出信号の用途は、（ａ）到来するＰｈＰＤＵメッセージがセグメント１２上へ送出される時期、もしくは（ｂ）デバイスがセグメント１２上にメッセージを送信している時期を示すことである。
【００３０】
送信開始（ＳＯＴ）は、送信イネーブル（ＴｘＥ）が有効になったとき、つまり、ＰｈＰＤＵメッセージのプリアンブルがセグメント１２へ最初に送出されたときに発生する。
活動開始（ＳＯＡ）は、キャリア検出信号が有効になり、キャリア検出信号が少なくとも１ビット時間、もしくは２ビット時間（おおよそ１６〜３２μ秒）の間、安定したのちに発生する。この時間は、メッセージを受信するデバイスの内部クロックに対して、いつキャリア検出が有効になるかに依存する。キャリア検出信号が安定したのちに活動開始（ＳＯＡ）が発生することによって、デバイスの通信コントローラは、プリアンブルの前半で起こる可能性が非常に高いノイズ異常を無視できる。追加時間は、ビット境界との同期に用いられ、それによりセグメント１２上の短いノイズバーストが活動として誤解釈される可能性が排除される。送信メッセージの場合、送信イネーブルがいったん有効になると（つまり、ＰｈＰＤＵのプリアンブルがセグメント１２へ送出されると）、ＳＯＡが発生する。
【００３１】
メッセージ開始（ＳＯＭ）は、受信メッセージのＦＣバイトが検出されたときの最初のビットの始まりで発生する。
ＳＯＭ＿ｘｍｔは、メッセージ送信開始であり、送信メッセージのＦＣバイトが検出されたときの最初のビットの始まりで発生する。
【００３２】
ＳＯＭｆは、フィルタ処理された受信ＤＬＰＤＵのＳＯＭである。ＳＯＭｆは、デバイス内の通信コントローラが、到来するメッセージをフィルタ処理するか判定するのに十分な情報を検出すると発生する。
【００３３】
メッセージ終了（ＥＯＭ）は、ＥＤにおける最後のビットの終わりが受信メッセージに現れると発生する。送信終了（ＥＯＴ）は、送信メッセージにおけるＥＤの最後のビットの終わりで発生する。
【００３４】
活動終了（ＥＯＡ）は、キャリア検出信号が無効になったときに発生する。ＥＯＡは、送信ＤＬＰＤＵ及び受信ＤＬＰＤＵの双方で発生する。
＜デバイス・アーキテクチャ＞
図３は、基本デバイス２４における通信部のブロック図を示している。尚、基本デバイス２４における通信部は、デバイス２０−２８の各々のアーキテクチャを代表するものである。基本デバイス２４は、中央処理装置（ＣＰＵ）３０と、ランダム・アクセス・メモリ（ＲＡＭ）３２と、フラッシュ・メモリ３４と、通信コントローラ３６と、媒体接続装置（ＭＡＵ）３８とを備えている。
【００３５】
図３に示す本実施形態では、ＣＰＵ３０は、モトローラ社製６８ＬＣ３０２、モトローラ社製Ｍｃｏｒｅ２０７５、モトローラ社製ＰｏｗｅｒＰＣ８５０、アトメル社製ＴｈｕｍｂプロセッサＡＴ９１Ｍ４０８００などといったマイクロプロセッサである。ＣＰＵ３０は、８ビット以上のプロセッサである。
【００３６】
図３に示す本実施形態では、通信コントローラ３６は、特定用途向け集積回路（ＡＳＩＣ）素子であり、ＭＡＵ３８とＣＰＵ３０との間のインターフェイスとして機能する。通信コントローラ３６は、フィールドバスセグメント１２に接続された外部のアナログ回路との間で符号化されたマンチェスタデータの送受信を行う。通信コントローラ３６は、ＭＡＵ３８からシリアルデータを受信したのち、受信したデータを符号化し、符号化したデータをバイトに変換して、プリアンブル、ＳＤ、ＥＤ（そして、任意にＦＣＳバイト）を除去し、リンク層が読み取るメッセージデータを供給する。データ送信に向け、通信コントローラ３６は、リンク層からＤＬＰＤＵデータのバイトを受信して、プリアンブルとＳＤとを付加し、任意にＦＣＳの生成を行い、ＥＤを付加する。通信コントローラ３６は、続いてシリアルに符号化されたマンチェスタデータを形成し、マンチェスタデータは、フィールドバスセグメント１２上への送信のためにＭＡＵ３８へ送信される。
【００３７】
通信コントローラ３６とＭＡＵ３８との間の通信は、ＲｘＳ、ＲｘＡ、ＴｘＳ、ＴｘＥといった４つの信号を介して確立される。尚、ＲｘＳは、受信されたマンチェスタ符号化シリアルデータである。ＲｘＡは、受信データのキャリア検出信号である。ＴｘＳは、送信された符号化シリアルデータである。ＴｘＥは、送信イネーブル信号である。
【００３８】
本発明の他の実施形態では、通信コントローラ３６は、ＣＰＵ３０と同一の集積回路上に形成され得る。さらに、いくつかの実施形態において、ＲＡＭ３２及びフラッシュ・メモリ３４もＣＰＵ３０と一体化されてもよい。ＬＡＳデバイス２０の場合、ＣＰＵ３０、ＲＡＭ３２、フラッシュ・メモリ３４は、プロセス制御システム１０のホストコンピュータシステムの一部であってもよい。
【００３９】
ＭＡＵ３８は、フィールドバスセグメント１２とのネットワーク接続を確立する。ＭＡＵ３８は、集積回路であってもよいし、個別の素子を用いてＭＡＵ３８を形成することもできる。
【００４０】
＜通信コントローラ３６＞
図４は、通信コントローラ３６の機能ブロック図である。本実施形態では、通信コントローラ３６は、デバウンス回路４２と、ディジタル位相同期回路（ＰＬＬ）４４と、フロントエンドステートマシン４６と、受信メッセージフィルタリング４８と、受信先入れ先出し（ＦＩＦＯ）メモリ５０と、送信ステートマシン５２と、送信ＦＩＦＯメモリ５４と、送信ドライバ回路５６と、受信／送信事象マネージャ５８と、レジスタ群６０と、クロック生成回路６２と、発振器６４と、タイマ群６８と、ＣＰＵインターフェイス回路７０とを備えている。
【００４１】
到来するメッセージをＭＡＵ３８が検出すると、ＲｘＡ入力にて、キャリア検出信号が通信コントローラ３６へ供給され、ＲｘＳ入力にて、到来する非同期のマンチェスタデータが供給される。ＲｘＡ入力及びＲｘＳ入力は、フロントエンドステートマシン４６へ送出される。ディジタルＰＬＬ４４は、到来するシリアルマンチェスタ符号化データからクロックを正常化してクロックを再生する。そして、この再生されたクロックは、フロントエンドステートマシン４６のタイミングを決定するのに用いられる。
【００４２】
フロントエンドステートマシン４６は、到来するシリアルビットストリームＲｘＳを検出する。フロントエンドステートマシン４６は、プリアンブル、ＳＤ、ＥＤを除去し、ＤＬＰＤＵを受信ＦＩＦＯメモリ５０へ格納する。フロントエンドステートマシン４６は、受信メッセージフィルタリング４８とともに、特定のフレーム制御、加えて、他のデバイス宛のプローブ・ノード（ＰＮ）メッセージ、パス・トークン（ＰＴ）メッセージを除外するように構成され得る。フロントエンドステートマシン４６は、受信ＦＩＦＯメモリ５０へ書き込まれたバイト数のトラックを保持する。ＦＣＳは、各メッセージの終わりに自動的に確認され、任意に受信ＦＩＦＯメモリ５０へ格納され得る。
【００４３】
また、フロントエンドステートマシン４６は、フロントエンドステートマシン４６が検出した特定の事象を表す信号を送出する。この信号としては、ＳＯＭ事象パルス、ＳＯＭｆ事象パルス、ＥＯＭ事象パルス、ＳＯＡ事象パルス、ＥＯＡ事象パルスがある。
【００４４】
フロントエンドステートマシン４６は、ＲｘＡ線が有効になると作動する。そして、フロントエンドステートマシン４６は、プリアンブル領域のエッジに同期し、ＲｘＳ信号のマンチェスタ符号化データを復号する。ＳＯＡ事象は、フロントエンドステートマシン４６が起動したことを示す。
【００４５】
プリアンブルが検出されると、フロントエンドステートマシン４６は、スタート・デリミタ（ＳＤ）列を待つ。ＳＤが検出されると、フロントエンドステートマシン４６は、シリアルデータストリームをオクテットに変換し、シリアルデータストリームを８ビットのバイト毎に受信ＦＩＦＯメモリ５０に書き込む。フロントエンドステートマシン４６は、エンド・デリミタ（ＥＤ）が検出されるまで、もしくは受信ＦＩＦＯメモリ５０が満杯になるまで、データの新たなオクテットを受信ＦＩＦＯ５０に書き込み続ける。
【００４６】
ＥＤが検出されると、フロントエンドステートマシン４６は、ＲｘＡ線が無効になるのを待つ。尚、ＲｘＡ線が無効になることは、ＥＯＡ事象によって示される。
ＲｘＡ線が無効になることで、フロントエンドステートマシン４６は初期状態に復帰する。フロントエンドステートマシン４６は、フィールドバス・セグメント１２上の次の活動まで（つまり、再度ＲｘＡにてキャリア検出信号が供給されるまで）初期状態のままでいる。
【００４７】
フィルタリング回路は、基本デバイスにとって重要ではないメッセージに関するＩＲＱ負荷を軽減するために基本デバイスに用いられている。対照的に、ＬＡＳとして構成されたデバイスは、セグメント上の全てのメッセージを受信しなければならないため、フィルタリングを無効にしなければならない。フィルタリングが無効であると、全ての受信メッセージが受信ＦＩＦＯメモリ５０へ格納されるようになり、全ての受信メッセージがレジスタ群６０、そしてＣＰＵ６０へと転送されるようになる。ＳＯＭｆは、フィルタ処理された受信ＤＬＰＤＵのメッセージ開始信号である。ＳＯＭｆは、到来するメッセージがフィルタ処理されることを判定するのに十分な情報を受信メッセージが検出したとフロントエンドステートマシン４６が判定すると発生する。
【００４８】
フィルタリングが有効になると、フィルタ処理されたメッセージは受信ＦＩＦＯメモリ５０に格納されない。フィルタ処理されたメッセージによって、ＳＯＭｆが生成されないようになり、事象やＩＲＱが発生しないようになる。
【００４９】
フィルタ処理されたメッセージの例としては、リターン・トークン（ＲＴ）、アイドル、要求インターバル（ＲＩ）、プローブ応答（ＰＲ）ＤＬＰＤＵメッセージがあり、常に拒否されるようになる。これらは、フレーム制御（ＦＣ）バイトに基づいて特定される。パス・トークン（ＰＴ）メッセージ及びプローブ・ノード（ＰＮ）メッセージは、メッセージの宛先アドレスがデバイスのアドレスと一致した場合に受信されるようになる。宛先アドレスが一致しない場合には、ＰＴメッセージ及びＰＮメッセージは拒否される。
【００５０】
ＦＣバイトに基づいてメッセージの種類に関してフィルタリングできることと、宛先アドレスに基づいてメッセージの種類に関してフィルタリングできることとによって、ＣＰＵ３０が処理しなければならない割込要求（ＩＲＱｓ）の数が制限され、それによってソフトウェア割込の負荷が軽減される。
【００５１】
フロントエンドステートマシン４６及び受信ＦＩＦＯメモリ５０は、ＭＡＵ３８からのシリアルデータフレームを構文解析するのに用いられる。ＣＰＵ３０は、受信ＦＩＦＯメモリ５０からデータを読み込み、読み込んだデータをＣＰＵ３０のローカルメモリ空間に格納して、受信ＤＬＰＤＵを復号する。
【００５２】
受信ＦＩＦＯメモリ５０は、８ビット幅を１バイトとした６３バイトである。受信ＦＩＦＯメモリ５０は、３つまでの完全な受信メッセージ（合計６３バイトまで）の全てのＤＬＰＤＵバイトを格納することになる。フロントエンドステートマシン４６は、フィルタ処理されたＲｘＳ信号からシリアルデータストリームを復号し、復号したシリアルデータストリームを８ビット並列形式のバイトに変換する。バイトの形成ののち、フロントエンドステートマシン４６は、書込ポインタによって指し示された場所へ符号化データを格納する書込パルスを生成する。書込動作が完了したのち、書込ポインタは、次のＤＬＰＤＵバイトを格納するようにインクリメントされる。
【００５３】
ＣＰＵ３０は、受信ＦＩＦＯメモリ５０に対する読込ポインタと連動する。レジスタ群６０の受信ＦＩＦＯレジスタ（実際のＤＬＰＤＵデータを含んでいる）からのあらゆる読込によって、８ビットデータは、受信ＦＩＦＯメモリ５０からデータバス上に直ちに送出され、ＣＰＵ３０に読み込まれる。読込動作が完了したのち、読込ポインタはインクリメントされる。読込ポインタのインクリメントは、受信ＦＩＦＯメモリ５０が空になるまで継続され得る。
【００５４】
受信ＦＩＦＯメモリ５０にてオーバーフロー状態が発生するのを防止するため、レジスタ群６０には、受信ＦＩＦＯメモリ５０が満杯状態に近づくとＩＲＱの生成を許可するレジスタがある。ＩＲＱ生成の閾値は変更可能である。
【００５５】
送信ステートマシン５２は、送信ＦＩＦＯメモリ５４から送信されるＤＬＰＤＵデータを読み込む。プリアンブル、ＳＤ、ＥＤが自動的に挿入される。送信ステートマシン５２を起動するためには、ＰＤＵ間トリガー、もしくはその代わりに次回定期事象トリガーが有効となって、送信動作を開始する必要がある。送信ステートマシン５２は、送信されたバイト数のトラックを保持する。アンダーフローもしくは送信カウント違反があると、エラー状態が指し示される。ＦＣＳは、ＤＬＰＤＵの最後の２バイトとして任意に自動送信され得る。
【００５６】
送信ステートマシン５２は、ＭＡＵ３８へのＴｘＳ線上のインターフェイス回路７０を介して供給され、フィールドバスセグメント１２上に送出されるマンチェスタシリアルデータを符号化する。また、送信ステートマシン５２は、ＥＤの最後のビットが発生して最初のプリアンブルにおける最初のビットが送信されたときに送信イネーブル（ＴｘＥ）線を有効状態にする。また、送信ステートマシン５２は、ＴｘＥ線を有効状態にするときに、送信開始（ＳＯＴ）事象信号を生成し、ＴｘＥ線が無効に復帰するときに、送信終了（ＥＯＴ）事象信号を生成する。
【００５７】
送信ＦＩＦＯメモリ５４は、送信されるべきメッセージに必要とされる全てのＤＬＰＤＵバイトである合計６３バイトまでを格納することになる。変更可能な閾値は、送信ＦＩＦＯメモリ５４がほぼ空になる時期をＣＰＵ３０に伝えるＩＲＱを送信するように設定され得る。６３バイトよりも多くのバイトが送信される必要がある場合には、ＣＰＵ３０は、送信ＦＩＦＯメモリ５４により多くのデータを追加できるようにすることを通知される。ＣＰＵ３０への通知は、全てのＤＬＰＤＵのバイトが書き込まれるまで継続する。ＣＰＵ３０が書込ポインタを用いて送信ＦＩＦＯ５４に書込を行う一方で、送信ステートマシン５２が読込ポインタを用いて送信ＦＩＦＯメモリ５４からバイトを読み込む。
【００５８】
通信コントローラ３６は、事象発生時に機能し、多数の事象の発生を処理できなければならない。事象の例としては、受信メッセージのＳＯＭ、ＥＯＭ、あるいはＥＯＡ、またあるいは送信メッセージのＥＯＴがある。受信／送信事象マネージャ５８は、３つの受信メッセージと１つの送信メッセージとの合計までで起こる全ての事象を管理する。
【００５９】
図４に示すように、受信／送信事象マネージャ５８は、ｒｃｖｍｓｇ１、ｒｃｖｍｓｇ２、ｒｃｖｍｓｇ３と称される３つの受信メッセージオブジェクトと、ｘｍｔｍｓｇと称される１つの送信メッセージオブジェクトとを備えている。さらに、受信／送信事象マネージャ５８は、メッセージキューマネージャ（ＭｓｇＱｍｎｇｒ）８０と、事象マネージャ（ＥｖｅｎｔＭｎｇｒ）８２と、送信マネージャ（ｘｍｔｍｎｇｒ）８４と、事象ＭＵＸ８６とを備えている。
【００６０】
受信ＦＩＦＯメモリ５０は、３つまでの完全な受信メッセージのＤＬＰＤＵバイトを格納することができる。これら３つのメッセージはそれぞれ、対応するオブジェクトｒｃｖｍｓｇ１と、ｒｃｖｍｓｇ２と、ｒｃｖｍｓｇ３とを備えている。各オブジェクトは、全てのＩＲＱの状態と、メッセージエラーと、各オブジェクトに対応する受信メッセージのために発生するタイムスタンプとを含んでいる。この情報は、メッセージの事象データを構成する。
【００６１】
全てのＩＲＱの状態、メッセージエラー、送信メッセージのために発生するタイムスタンプは、ｘｍｔｍｓｇオブジェクトに格納される。格納情報は、送信メッセージの事象データを構成する。
【００６２】
ＭｓｇＱｍｎｇｒ８０は、３つの受信メッセージの選択及び有効化を制御する。一度につき１つの受信メッセージオブジェクトのみが有効になることができる。ＭｓｇＱｍｎｇｒ８０によって、事象は、有効になっている受信メッセージと連動できる。ＣＰＵ３０によって他の３つの受信メッセージが認識される前に４つ目のメッセージが受信された場合には、ＭｓｇＱｍｎｇｒ８０は、事象データが読み込まれるまで、もしくは事象データが認識されるまで、さらなるいずれのメッセージの受信も無効とする。
【００６３】
ＥｖｅｎｔＭｎｇｒ８２は、事象の発生順序を管理する。事象が発生すると、事象マネージャ８２は、各事象に発生順序識別子（ＯＯＯ＿ＩＤ）を割り当てる。発生順序識別子を各事象に割り当てることにより、ＣＰＵ３０は、事象が発生する毎に事象を１つづつ読み込むことができる。ＣＰＵ３０は、各事象の発生時に各事象を認識しなければならない。第１の事象が認識されたのち、第１の事象に続く事象は、ＣＰＵ３０が読み込めるように待機されるようになる。
【００６４】
Ｘｍｔｍｎｇｒ８４は、ＰＤＵ間トリガー（ＩｎｔｅｒＰＤＵ＿ｔｒｉｇ）と次回定期事象トリガーとを監視して、送信トリガーコマンド（Ｘｍｔ＿Ｔｒｉｇ＿Ｃｍｄ）を送信ステートマシン５２に発行し、次のメッセージの送信を開始させる。
【００６５】
通信コントローラ３６は、レジスタ群６０を備えている。ＣＰＵ３０は、ＲＥＧ００〜ＲＥＧ３Ｆと称されたレジスタに書込や読込を行うことができる。また、割込（ＩＲＱｓ）は、レジスタ群６０を介して処理される。
【００６６】
クロック生成回路６２は、外部クロックを受信し、この外部クロックを使用するか、もしくはクロック生成回路６２内部の発振器６４からのクロック信号で通信コントローラ３６に必要な全てのクロック信号を生成する。
【００６７】
クロック生成回路６２は、好ましくは、クロック生成回路６２のノードタイマ及びオクテットタイマの双方のクロックレートを更新する能力を備えている。クロックレートを更新できることによって、通信コントローラ３６は、当該通信コントローラ３６のノード時刻とリンク・アドレス・スケジューラ（ＬＡＳ２０）との関係を同期させることができる。オクテット時刻は、内部メッセージタイミングを図るために用いられる一方、ノード時刻は、フィールドバスセグメント１２全体で共通の時刻の検出値を共有するために用いられる。
【００６８】
タイマ群６８は、異なる時刻の検出値を表す２つのグループに分割される。第１セットのタイマ群は、セグメントタイマ群と称され、ＣＰＵ３０のソフトウェア制御のもとで、クロック生成回路６２によって生成される可変クロックレートに基づいて動作する。第２セットのタイマ群は、メッセージタイマ群と称され、固定レートクロックで動作する。
【００６９】
通信コントローラ３６には、２つのセグメントタイマがある。第１セグメントタイマは、ノードタイマであり、ノードタイマは、３１．２５μ秒（３２ｋＨｚ）のクロックレートを有している。ノードタイマは、次回機能ブロック実行時刻と、リンク予定時刻Ｖ（ＬＳＴ）と、データリンク時刻（ＤＬ−Ｔｉｍｅ）とを供給するために用いられる。
【００７０】
第２セグメントタイマは、オクテットタイマであり、オクテットタイマは、２μ秒（５００ｋＨｚ）のクロックレートを有している。オクテットタイマは、次回定期事象トリガー（次回定期事象トリガーは、特定時刻でメッセージを送信するために送信ステートマシン５２に接続している）に用いられる。クロックレートが調節されると、ノードタイマ及びオクテットタイマは、同じレートで互いに追従するようになる。つまり、ノードタイマとオクテットタイマとを駆動するクロック信号は、共通の可変クロックから得られている。
【００７１】
メッセージタイマ群は、フィールドバスメッセージ事象（送信及び受信）に基づいて、起動及び停止する。メッセージタイマ群は、非活動タイマと、ＰＤＵ間遅延タイマと、受信応答タイマと、送信応答タイマと、デリゲートトークン復帰タイマとを備えている。
【００７２】
非活動タイマは、デクリメントカウンタである。非活動タイマは、２つのＰｈＰＤＵ間のアイドル時間を測定するのに用いられる。非活動タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント１２上のあらゆる送信メッセージとに作用する。非活動タイマは、起動を命令されると、１６μ秒毎にデクリメントを行うようになる。非活動タイマの起動時点は、レジスタ群６０の１つに予め読み込まれた変更可能な設定時点から決定される。非活動タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連した事象を介して解除もしくは停止され得る。非活動タイマがいったん０に到達もしくは失効すると、ＩＲＱが生成される。非活動タイマは、ＩＲＱが認識されるまで０のままとなる。ＩＲＱがハイのままであると、発生するさらなるメッセージ事象は、このＩＲＱが認識されるまで非活動タイマに作用しない。
【００７３】
ＰＤＵ間遅延タイマは、インクリメントカウンタである。ＰＤＵ間遅延タイマは、Ｖ（ＭＩＤ）閾値レジスタとともに用いられ、送信メッセージもしくは受信メッセージの間の無送信最小時間（もしくは隙間時間）を保証するフィールドバスＶ（ＭＩＤ）最小ＰＤＵ間遅延を実現する。ＰＤＵ間遅延タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント上のあらゆる送信メッセージとに作用される。フィールドバス活動がないときには、ＰＤＵ間遅延タイマは、インクリメントを継続する。カウント値がレジスタ群６０の１つに格納された、予め決められた値以上になると、ＰＤＵ間トリガー信号が有効になる。ＰＤＵ間トリガー信号は、ＰＤＵ間遅延時間に達したことを判定するのに用いられる。ＰＤＵ間トリガー信号は、ｘｍｔｍｎｇｒ８４に接続し、ＤＬＰＤＵの送信を開始できるという命令を与える。
【００７４】
受信応答タイマは、デクリメントカウンタである。受信応答タイマは、加入デバイスがコンペル・データ（ＣＤ）ＤＬＰＤＵに対する即時応答を監視できるようにするために用いられる。また、受信応答タイマは、デバイスがオンラインされるときに当該デバイスが当該デバイスのアドレスを監視するのに用いられる。受信応答タイマは、起動を命令されると、１６μ秒毎にデクリメントを行うようになる。受信応答タイマ起動時点は、レジスタ群６０の１つに予め読み込まれた変更可能な１６ビットの設定時点から決定される。受信応答タイマのデクリメントは、ＳＯＭ事象もしくはＳＯＴ事象のいずれか一方を介して解除もしくは停止され得る。受信応答タイマがいったん０に到達もしくは失効すると、ＩＲＱが生成される。受信応答タイマでは、ＩＲＱが生成されるためにＩＲＱが有効化される必要がある。受信応答タイマは、ＩＲＱが確認されるまで０のままとなる。ＩＲＱがハイのままであると、発生するさらなるメッセージ事象は、このＩＲＱが確認されるまで受信応答タイマに作用しない。
【００７５】
送信応答タイマは、デクリメントカウンタである。送信応答タイマによって、デバイスは、種々のＤＬＰＤＵ（つまり、コンペル・データ、パス・トークン）の送信後の即時応答を監視することができる。送信応答タイマは、起動を命令されると、１６μ秒毎にデクリメントを行う。送信応答タイマの起動点は、レジスタ群６０の１つに予め読み込まれた変更可能な設定点から決定される。送信応答タイマのデクリメントは、プローブ・ノード（ＰＮ）のＳＯＭ事象もしくはＳＯＴ事象を除く送信されたあらゆるＤＬＰＤＵのＳＯＭ事象もしくはＳＯＴ事象のいずれか一方を介して、解除もしくは停止され得る。送信応答タイマがいったん０に到達もしくは失効すると、ＩＲＱが生成される。送信応答タイマは、ＩＲＱが認識されるまで０のままとなる。ＩＲＱがハイのままであると、発生するさらなるメッセージ事象は、このＩＲＱが認識されるまで送信応答タイマに作用しない。
【００７６】
デリゲートトークン復帰タイマは、デクリメントカウンタである。デリゲートトークン復帰タイマは、他のデバイスからのデリゲートトークンを受信するアイドル時間を監視するのに用いられる。デリゲートトークン復帰タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント１２上のあらゆる送信メッセージとに作用する。デリゲートトークン復帰タイマは、起動を命令されると、１６μ秒毎にデクリメントを行うようになる。デリゲートトークン復帰タイマの起動時点は、レジスタ群６０の１つに予め読み込まれた変更可能な設定時点から決定される。デリゲートトークン復帰タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連する事象を介して解除もしくは停止され得る。デリゲートトークン復帰タイマがいったん０に到達もしくは失効すると、ＩＲＱが生成される。デリゲートトークン復帰タイマは、このＩＲＱが認識されるまで０のままとなる。ＩＲＱがハイのままであると、さらなるメッセージ事象が発生しても、このＩＲＱが認識されるまでデリゲートトークン復帰タイマは作用されない。
【００７７】
＜事象の発生順序管理＞
ソフトウェアは、一般的に、メッセージ受信事象とタイマ失効事象とに応答する役割を担っている。従来システムにおける一般的な問題は、ハードウェアにおいて事象が発生してから、ソフトウェアがその事象を認識し、その事象を処理するまでの時間差（つまり、ソフトウェア遅延）である。ソフトウェアが応答することができる前に２つ以上の事象が発生するときに、問題はさらに大きくなる。このような場合では、ソフトウェアは、どの事象が最初に発生したのか判断することができない可能性がある。通信プロトコルは、順序付け、具体的には、メッセージ受信事象とタイマ失効事象との間の順序付け、に依存して、異なる一連の動作を特定する可能性があるため、どの事象が最初に発生したのかソフトウェアが判断できないことは問題である。本発明によれば、ソフトウェアは、ソフトウェア遅延があっても、受信メッセージ事象とタイマ失効事象との間における発生順序を識別することができる。
【００７８】
図５は、ＭＡＵ３８によって受信されたメッセージ、もしくはＣＰＵ３０から送信されたメッセージを処理する受信／送信事象マネージャ５８の機能ブロック図である。受信／送信事象マネージャ５８は、メッセージキューマネージャ（ＭｓｇＱｍｎｇｒ）８０と、事象マネージャ（ＥｖｅｎｔＭｎｇｒ）８２と、事象ＭＵＸ８６と、受信メッセージオブジェクトキュー１００と、マルチプレクサ１０２，１０４，１０６，１０８とを含んでいる。ＭｓｇＱｍｎｇｒ８０は、ＭＵＸ１０２を介して、受信メッセージオブジェクトｒｃｖｍｓｇ１，ｒｃｖｍｓｇ２，ｒｃｖｍｓｇ３に接続されている。ＭｓｇＱｍｎｇｒ８０は、ＲｃｖＭｓｇＩＤ（１：０）信号によって、ＥｖｅｎｔＭｎｇｒ８２に出力を供給する。受信メッセージオブジェクトキュー１００は、ｒｃｖｍｓｇ１、ｒｃｖｍｓｇ２、ｒｃｖｍｓｇ３と称される３つの受信メッセージオブジェクト、及びｘｍｔｍｓｇと称される１つの送信メッセージ情報オブジェクトのための空間を含んでいる。ＥｖｅｎｔＭｎｇｒ８２は、受信メッセージオブジェクトｒｃｖｍｓｇ１，ｒｃｖｍｓｇ２，ｒｃｖｍｓｇ３に現在の発生順序識別子（ＯＯＯ＿ＩＤｃｕｒ）を供給する。また、ＥｖｅｎｔＭｎｇｒ８２は、選択入力であるＥｖｅｎｔＭＵＸ＿ｓｅｌ（２：０）を事象ＭＵＸ８６及びＭＵＸ１０４に供給する。マルチプレクサ１０６，１０８は、本発明の範囲外であるものの、受信／送信事象マネージャ５８における種々の部品間の接続を図示するために図５に表されている。ＭＵＸ１０６は、レジスタ群６０のレジスタＲｅｇ１５からの入力に基づいて、受信メッセージオブジェクトとＭＵＸ１０８とに出力を供給し、ＭＵＸ１０８の出力は、ＭｓｇＱｍｎｇｒ８０に入力されている。ＭＵＸ１０６の出力もまた、ＯＲゲート１１０を介して、ＭｓｇＱｍｎｇｒ８０に入力されている。また、図５に表されているのは、有効なメッセージのための受信メッセージ情報オブジェクト及び送信メッセージ情報オブジェクトに関連付けられた事象データを格納するレジスタ群６０の部分（Ｒｅｇ１５〜Ｒｅｇ１Ｆ）である。送信マネージャ８４は、図４では受信／送信事象マネージャ５８内に表されているものの、説明を明確にするために図５では省略されている。
【００７９】
受信／送信事象マネージャ５８によれば、ＣＰＵ３０は、順次発生した各メッセージの各々に関連付けられた受信メッセージオブジェクト（ｒｃｖｍｓｇ１，ｒｃｖｍｓｇ２，ｒｃｖｍｓｇ３）を読み込むことができる。有効なメッセージの受信メッセージオブジェクトは、レジスタ群６０を介して、具体的には、レジスタＲｅｇ１６〜Ｒｅｇ１Ｆにて、ＣＰＵ３０が取得可能である。有効なメッセージの送信メッセージオブジェクトは、レジスタＲｅｇ１６，Ｒｅｇ１７，Ｒｅｇ１Ｂにて、ＭＡＵ３８が送信可能である。受信メッセージオブジェクトはそれぞれ、メッセージＩＲＱ、エラー、状態、受信ＦＩＦＯメモリ５０に関する情報及びデータの組み合わせを格納する。
【００８０】
ＥｖｅｎｔＭｎｇｒ８２は、メッセージ事象の発生順序を管理する。事象が発生すると、事象マネージャ８２は、各事象に発生順序識別子（ＯＯＯ＿ＩＤ）を割り当てる。各事象にＯＯＯ＿ＩＤを割り当てることにより、ＣＰＵ３０は、各事象が発生すると、一度につき１つの事象を読み込むことができる。ＣＰＵ３０は、各事象が発生すると、各事象を認識しなければならない。最初の事象が認識されたのち、これに続く事象は、ＣＰＵ３０で読み込まれるように準備されることになる。
【００８１】
図６は、通信コントローラ３６における事象の発生順序を管理する事象マネージャ（ＥｖｅｎｔＭｎｇｒ）８２の機能ブロック図である。ＥｖｅｎｔＭｎｇｒ８２は、事象キュー先入れ先出しメモリ（事象キューＦＩＦＯ）１２０と、ＯＯＯ＿ＩＤカウンタ１２２と、事象キュー（ＥｖｅｎｔＱ）読込ポインタ１２４と、事象キュー書込ポインタ１２６と、事象キューポインタ比較論理１２８と、ポインタ制御論理１３０と、ＭＵＸ選択論理１３２とを含んでいる。また、図６に表されているのは、タイマＯＯＯ＿ＩＤレジスタ群１４０であり、タイマＯＯＯ＿ＩＤレジスタ群１４０は、受信応答（ＲｃｖＲｐｌｙ）ＯＯＯ＿ＩＤレジスタ１４０ａと、送信応答（ＸｍｔＲｐｌｙ）ＯＯＯ＿ＩＤレジスタ１４０ｂと、非活動ＯＯＯ＿ＩＤレジスタ１４０ｃと、デリゲートトークン復帰（ＤｅｌｇＴｋｎＲｃｖｙ）ＯＯＯ＿ＩＤレジスタ１４０ｄとを含んでいる。
【００８２】
ポインタ制御論理１３０は、事象キュー読込ポインタ１２４と事象キュー書込ポインタ１２６とを制御する。事象キューＦＩＦＯ１２０が満杯でない限り、ＳＯＭｆもしくはＥＯＴ＿ＩＲＱｅｃｎｔのいずれか一方のあらゆる発生によって、事象キュー書込ポインタ１２６はインクリメントされることになる。同様に、事象キューＦＩＦＯ１２０が空でない限り、ソフトウェアが指令するＥｖｅｎｔ＿Ａｃｋによって、事象キュー読込ポインタ１２４はインクリメントされることになる。
【００８３】
事象キューポインタ比較論理１２８は、入力として、事象キュー読込ポインタ１２４及び事象キュー書込ポインタ１２６が指し示す現在の記憶位置を受信し、出力として、ＥｖｅｎｔＱ＿ｅｍｐｔｙ及びＥｖｅｎｔＱ＿ｆｕｌｌを有している。事象キューポインタ比較論理１２８は、ＥｖｅｎｔＱ＿ｅｍｐｔｙ信号及びＥｖｅｎｔＱ＿ｆｕｌｌ信号の双方の状態を決定する。事象キュー読込ポインタ１２４と事象キュー書込ポインタ１２６とが互いに一致すると、ＥｖｅｎｔＱ＿ｅｍｐｔｙ信号が有効にされることになる。事象キュー読込ポインタ１２４と事象キュー書込ポインタとの差が７（“１１１”）であれば、事象キューＦＩＦＯ１２０は満杯になり、ＥｖｅｎｔＱ＿ｆｕｌｌ信号が有効になる。注目すべきは、事象キューＦＩＦＯ１２０が満杯になることはあり得ないであろうということである。それは、ＭｓｇＱｍｎｇｒ８０が、保留する受信メッセージ事象の数を３つに制限し、常に１つの送信メッセージ事象のみが保留可能であり、そして、最大で４つの事象のみが事象キューＦＩＦＯ１２０に待機できるだけであるからである。
【００８４】
通信コントローラ３６において事象（例えば、受信メッセージもしくは送信メッセージ）が発生すると、各事象には、ＥｖｅｎｔＭｎｇｒ８２によってＯＯＯ＿ＩＤが割り当てられる。特定の事象に割り当てられたＯＯＯ＿ＩＤは、その事象が発生すると、ＯＯＯ＿ＩＤカウンタ１２２の値によって決定される。プロセス制御システム１０の起動時に、ＯＯＯ＿ＩＤカウンタ１２２は、‘０００’に初期化される。ＯＯＯ＿ＩＤカウンタ１２２は、事象が発生すると、‘１１１’という値までインクリメントされる。‘１１１’という値に達すると、ＯＯＯ＿ＩＤカウンタ１２２は、事象の発生によって‘０００’に復帰（つまり、ラップアラウンド）する。
【００８５】
事象キューＦＩＦＯ１２０は、２ビット×８段のＦＩＦＯメモリであり、通信コントローラ３６において各メッセージが発生すると、各メッセージの事象識別子情報を順次格納する。事象キュー読込ポインタ１２４及び事象キュー書込ポインタ１２６は、事象キューＦＩＦＯメモリ１２０における記憶位置を指し示し、通信コントローラ３６によって処理された事象の順序を維持する。事象キュー書込ポインタ１２６が指し示す記憶位置には、ＯＯＯ＿ＩＤカウンタ１２２の現在の値（ＯＯＯ＿ＩＤｃｕｒ（２：０））がある。事象キュー読込ポインタ１２４が指し示す記憶位置には、ＣＰＵ３０によって次に処理される事象がある。
【００８６】
プロセス制御システム１０の作動時には、ＥｖｅｎｔＭｎｇｒ８２は、受信メッセージからＮｅｗＭｓｇ信号（ＳＯＭｆパルス）を受信するか、もしくは送信メッセージからＥＯＴ＿ＩＲＱ信号を受信する。ＳＯＭｆ信号が検出されると、ＲｃｖＭｓｇＩＤ（１：０）の現在の値が、事象キュー書込ポインタ１２６によって指し示された、事象キューＦＩＦＯ１２０における記憶位置に格納される。ＯＯＯ＿ＩＤカウンタ１２２は、続いてインクリメントされる（つまり、事象キュー書込ポインタ１２６は、事象キューＦＩＦＯメモリにおける次の記憶位置に進められる）。ＲｃｖＭｓｇＩＤ（１：０）の値は、（ＭｓｇＱｍｎｇｒ８０によって維持されているとおりに）受信メッセージオブジェクトキュー１００において取得可能な次の受信メッセージオブジェクトに基づいている。つまり、ｒｃｖｍｓｇ１が次に取得可能な受信メッセージである場合には、ＲｃｖＭｓｇＩＤ（１：０）の値は“００”となる。ｒｃｖｍｓｇ２が次に取得可能な受信メッセージである場合には、ＲｃｖＭｓｇＩＤ（１：０）の値は“０１”となる。ｒｃｖｍｓｇ３が次に取得可能な受信メッセージである場合には、ＲｃｖＭｓｇＩＤ（１：０）の値は“１０”となる。ＥＯＴ＿ＩＲＱ信号が発生すると、事象キュー書込ポインタ１２６によって指し示された、事象キューＦＩＦＯ１２０の記憶位置に“１１”という値が格納され、ＯＯＯ＿ＩＤカウンタ１２２がインクリメントされる。ＲｃｖＭｓｇＩＤ（１：０）の値、もしくはＥＯＴ＿ＩＲＱ事象による“１１”という値は、事象識別子に指定されている。
【００８７】
レジスタ群６０のレジスタＲｅｇ１６〜Ｒｅｇ１Ｆにおける事象データがソフトウェアによって処理もしくは読み込まれるときに、事象キューＦＩＦＯ１２０に格納された事象識別子と、ＥｖｅｎｔＱ＿ｅｍｐｔｙ信号とがＭＵＸ選択論理１３２へ送出される。ＭＵＸ選択論理１３２からは、ＥｖｅｎｔＭＵＸ＿ｓｅｌ（２：０）信号が生成される。ＥｖｅｎｔＭＵＸ＿ｓｅｌ（２：０）信号は、ＥｖｅｎｔＭｎｇｒ８２の外部へ出力され、事象ＭＵＸ８６に対する選択制御信号として使用される。
【００８８】
ＥｖｅｎｔＱ＿ｅｍｐｔｙ信号がロウである（つまり、１つ以上の事象が事象キューＦＩＦＯ１２０に待機している）場合には、ＭＵＸ１０４がＥｖｅｎｔ＿Ｔｙｐｅ（１：０）信号をＲｅｇ１５に供給する。Ｅｖｅｎｔ＿Ｔｙｐｅ（１：０）は、受信メッセージを示す‘０１’、もしくは、送信されるメッセージを示す‘１０’のどちらか一方である。また、事象ＭＵＸ８６は、事象キュー読込ポインタ１２４によって指し示されたＯＯＯ＿ＩＤ値をＲｅｇ１５（６：４）に上書きする。さらに、事象ＭＵＸ８６は、ＥｖｅｎｔＭＵＸ＿ｓｅｌ（２：０）信号に対応するメッセージ情報オブジェクトからの事象データ（例えば、メッセージＩＲＱ、エラー、状態情報）をソフトウェアによる処理のためにレジスタＲｅｇ１６〜Ｒｅｇ１Ｆに上書きする。事象データがソフトウェアによって読み込まれた後、ソフトウェアによって、事象認識信号（Ｅｖｅｎｔ＿Ａｃｋパルス）がＥｖｅｎｔＭｎｇｒ８２に送出される。Ｅｖｅｎｔ＿Ａｃｋ信号によって、事象キュー読込ポインタ１２４が指し示す事象キューＦＩＦＯ１２０における記憶位置がインクリメントされる。
【００８９】
ＥｖｅｎｔＱ＿ｅｍｐｔｙ信号がハイであれば、ＭＵＸ１０４によってＲｅｇ１５（１：０）には‘００’が上書きされ、処理可能な事象がない旨がソフトウェアに示される。事象ＭＵＸ８６は、並行して、事象キュー読込ポインタ１２４によって指し示された、現在のＯＯＯ＿ＩＤ値をＲｅｇ１５（６：４）に上書きする。事象キューＦＩＦＯ１２０が空（ＥｖｅｎｔＱ＿Ｅｍｐｔｙ＝１）であれば、ポインタ制御論理１３０は、さらなるＥｖｅｎｔ＿Ａｃｋ信号が事象キュー読込ポインタ１２４をインクリメントしてしまうことを防止するようになる。
【００９０】
（図４に関して図示説明された）タイマ群６８は、事象の順序付けに関連付けられた４つのタイマを含んでいる。これら４つのタイマは、発生順序（ＯＯＯ）タイマと見なされ、４つのタイマとしては、受信応答タイマと、送信応答タイマと、非活動タイマと、デリゲートトークンタイマとがある。いずれかのＯＯＯタイマが失効すると、そのタイマを特定するＩＲＱが生成される。（図５に表されているように、）４つのＯＯＯタイマのタイマ失効ＩＲＱは、論理ＯＲゲートを通過し、このＯＲゲートの出力は、Ｒｅｇ１５のビット２に格納される。したがって、いずれのＯＯＯタイマも失効していないときには、Ｒｅｇ１５（２）には、“０”が維持される。いずれか１つのＯＯＯタイマが失効しているときには、Ｒｅｇ１５（２）には、“１”が格納される。Ｒｅｇ１５（２）に“０”が維持されたり、“１”が格納されることで、ソフトウェアは、事象キューＦＩＦＯ１２０における次の事象を処理するためにレジスタＲｅｇ１５を読み込むときに、タイマ失効事象が発生したか否かを判定できる。
【００９１】
これらＯＯＯタイマは、デクリメントタイマであり、ＯＯＯタイマの各々は、レジスタ群６０のタイマＯＯＯ＿ＩＤレジスタ１４０に関連付けられている。具体的には、受信応答タイマは、受信応答ＯＯＯ＿ＩＤレジスタ１４０ａに関連付けられている。また、送信応答タイマは、送信応答ＯＯＯ＿ＩＤレジスタ１４０ｂに関連付けられている。また、非活動タイマは、非活動ＯＯＯ＿ＩＤレジスタ１４０ｃに関連付けられている。また、デリゲートトークン復帰タイマは、デリゲートトークン復帰ＯＯＯ＿ＩＤレジスタ１４０ｄに関連付けられている。
【００９２】
ＯＯＯタイマが作動しているとき（つまり、デクリメントしているとき）には、このＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタのビット６からビット４に‘０００’が維持される。ＯＯＯタイマが失効し、この失効したＯＯＯタイマのＩＲＱが発生すると、このタイマが失効したときのＯＯＯ＿ＩＤカウンタ１２２の値（ＯＯＯ＿ＩＤｃｕｒ（２：０））が、この失効したタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタ１４０のビット６からビット４にコピーされる。例えば、非活動タイマが失効すると、ＯＯＯ＿ＩＤｃｕｒ（２：０）の値が、非活動ＯＯＯ＿ＩＤレジスタ１４０ｃのビット６からビット４にコピーされる。
【００９３】
上述したように、通信プロトコルは、メッセージとタイマ失効事象との間における順序付けに依存して、異なる一連の動作を特定してもよい。ソフトウェアが応答できる前にメッセージ事象とタイマ失効事象との双方が発生した場合には、ソフトウェアは、失効したタイマのタイマＯＯＯ＿ＩＤレジスタ１４０にコピーされたＯＯＯ＿ＩＤの値と、事象キューＦＩＦＯ１２０における、メッセージ事象に関連付けられたＯＯＯ＿ＩＤとを参照し、メッセージ事象とタイマ失効事象とのどちらが先に発生したのか判定する。失効したタイマのタイマＯＯＯ＿ＩＤレジスタ１４０におけるＯＯＯ＿ＩＤの値と、メッセージ事象に関連付けられたＯＯＯ＿ＩＤの値とが同じ場合には、ＯＯＯ＿ＩＤカウンタ１２２の値がメッセージ事象に割り当てられる前にタイマが失効している。つまり、メッセージ事象が発生する前にタイマが失効している。他方、失効したタイマのタイマＯＯＯ＿ＩＤレジスタ１４０におけるＯＯＯ＿ＩＤの値が、メッセージ事象に関連付けられたＯＯＯ＿ＩＤの値と異なる場合には、ＯＯＯ＿ＩＤカウンタ１２２の値がメッセージ事象に割り当てられた後にタイマが失効している。換言すれば、タイマは、メッセージ事象が発生した後に失効している。
【００９４】
要約すれば、ソフトウェアは、一般的に、メッセージ受信事象とタイマ失効事象とに応答する役割を担っている。従来システムにおける一般的な問題は、ハードウェアにおいて事象が発生してから、ソフトウェアがその事象を認識し、その事象を処理するまでの時間差である。本発明は、通信媒体から受信した事象、及び通信媒体に送信した事象の発生順序を維持するデバイスに用いられる通信コントローラである。通信コントローラは、発生順序識別（ＯＯＯ＿ＩＤ）カウンタと、事象キューメモリとを含んでいる。事象キューメモリは、通信コントローラによって処理される各事象の事象形式識別子を順次格納する。ＯＯＯ＿ＩＤカウンタは、各事象識別子を関連付けるＯＯＯ＿ＩＤを供給する。好ましい実施形態では、通信コントローラは、さらに、複数のタイマＯＯＯ＿ＩＤレジスタを含んでいる。タイマＯＯＯ＿ＩＤレジスタはそれぞれ、通信コントローラにおける発生順序（ＯＯＯ）タイマに関連付けられている。ＯＯＯタイマの１つが失効すると、ＯＯＯ＿ＩＤカウンタからのＯＯＯ＿ＩＤの現在の値が、失効したＯＯＯタイマに関連付けられたタイマＯＯＯ＿ＩＤレジスタに格納される。そして、ソフトウェアは、事象のＯＯＯ＿ＩＤ値をタイマＯＯＯ＿ＩＤレジスタに格納されたＯＯＯ＿ＩＤと比較することで、事象とＯＯＯタイマの失効との間における発生順序を判定する。
【００９５】
本発明は、好ましい実施形態を参照しながら説明されているが、当業者は、本発明の精神及び範囲を逸脱することなく、形態の変更及び詳細な変更が可能であることを認識するであろう。
【図面の簡単な説明】
【００９６】
【図１】通信媒体セグメント上のデバイス間のディジタル通信を行うプロセス制御システムの図面である。
【図２】図１のプロセス制御システムにおけるデバイス間の通信のためのメッセージフォーマットを示す。
【図３】プロセス制御システムにおけるデバイスのブロック図である。
【図４】図３のデバイスにおける通信コントローラの機能ブロック図である。
【図５】通信コントローラによって受信されたメッセージ、もしくは通信コントローラから送信されたメッセージを処理する受信／送信事象マネージャの機能ブロック図である。
【図６】通信コントローラにおける事象の発生順序を維持する事象マネージャの機能ブロック図である。
【図１】
2008516471.tif 000003
【図２】
2008516471.tif 000004
【図３】
2008516471.tif 000005
【図４】
2008516471.tif 000006
【図５】
2008516471.tif 000007
【図６】
2008516471.tif 000008