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