説明

低遅延のデータパケット受信及び処理

【課題】フィールドバス通信の効果を最大限にすることが可能なプロセス制御デバイスを提供する。
【解決手段】プロセス制御システムにおけるデバイス群は、通信媒体セグメント上でデータメッセージによって通信する。各デバイスは、データキューと、受信メッセージオブジェクトのキューとを含んだ通信コントローラを含む。データキューは、通信媒体上で受信された複数のメッセージを格納する。受信メッセージオブジェクトは、データキューにおける、対応するメッセージに関する情報を格納する。

【発明の詳細な説明】
【技術分野】
【0001】
[発明の背景]
本発明は、プロセス制御システムにおける、現場計器及び他のデバイスに使用する通信コントローラに関する。具体的には、本発明は、通信コントローラにおいて、データパケットの受信及び処理の遅延が小さいシステム及び方法である。
【背景技術】
【0002】
一般的な工業プラントでは、分散制御システム(DCS)が、プラントで実行される多くの工業処理を制御するのに使用されている。一般的に、プラントには、コンピュータシステムを備えた集中制御室があり、コンピュータシステムには、コンピュータ技術において周知のユーザ入力部/出力部(I/O)と、ディスクI/Oと、他の周辺デバイスとが具備されている。コンピュータシステムには、コントローラとプロセスI/Oサブシステムとが連結されている。
【0003】
プロセスI/Oサブシステムには、I/Oポートが具備されており、このI/Oポートには、プラント全体における種々のフィールドデバイスが接続されている。フィールドデバイスとしては、さまざまな種類の解析装置、シリコン圧力センサ、容量圧力センサ、抵抗温度検出器、熱電対、ひずみゲージ、リミットスイッチ、オン/オフスイッチ、流量送信器、圧力送信器、静電容量レベルスイッチ、計量器、トランスデューサ、バルブ固定装置、バルブコントローラ、アクチュエータ、ソレノイド、表示灯がある。“フィールドデバイス”という用語は、これらデバイスとともに、分散制御システムにおいて機能する他のいかなるデバイスも含む。
【0004】
以前より、アナログ式フィールドデバイスは、1つの2線ツイストペアによって制御室に接続された各デバイスとともに、2線ツイストペア電流閉ループによって制御室に接続されている。アナログ式フィールドデバイスは、特定範囲内で、電気信号に応答したり、電気信号を送信することができる。通常の形態では、一般的に、ペアになっている2つの導線間におおよそ20−25ボルトの電位差が生じ、閉ループに4−20ミリアンプの電流が流れる。制御室へ信号を送信するアナログ式フィールドデバイスは、検出したプロセス変量に比例した電流を用いて電流閉ループを流れる電流を調節する。他方、制御室の制御に従って動作するアナログ式フィールドデバイスは、閉ループを流れる電流の大きさによって制御される。尚、閉ループを流れる電流の大きさは、プロセスI/OシステムのI/Oポートによって調節される一方、プロセスI/OシステムのI/Oポートは、コントローラによって制御される。また、能動的な電子機器を備えた従来の2線式アナログデバイスは、閉ループから40ミリワットまでの電力の供給を受けることが可能である。より大きな電力を必要とするアナログ式フィールドデバイスは、一般的に、4つの導線を介して制御室に接続され、4つの導線のうちの2つの導線が、デバイスに電力を供給する。このようなデバイスは、当技術分野において4線式デバイスとして知られ、2線式デバイスのような電力の制限がない。
【0005】
アナログ式フィールドデバイスとは対照的に、従来のディジタル式フィールドデバイスは、2値信号を送信したり、2値信号に対して応答する。一般的に、ディジタル式フィールドデバイスは、24ボルト信号(ACもしくはDC)、または、110もしくは240ボルトAC信号、または、5ボルトDC信号で動作する。当然のことながら、ディジタル式デバイスは、特定の制御環境で必要とされるあらゆる電気仕様に従って動作するように設計されてもよい。ディジタル入力フィールドデバイスは、制御室との接続の確立及び切断のいずれか一方を行う単なるスイッチである一方、ディジタル出力フィールドデバイスは、制御室から信号があるか否かに従って動作するようになっている。
【0006】
以前より、従来のフィールドデバイスの多くは、信号入力もしくは信号出力のいずれか一方を行うだけであり、信号入力もしくは信号出力は、フィールドデバイスが実行する主要機能に直接関連していた。例えば、従来のアナログ式抵抗温度センサが実現する唯一の機能は、2線式ツイストペアを介して流れる電流を変化させることで温度を送信することである一方、従来のアナログ式バルブ保定装置が実現する唯一の機能は、2線式ツイストペアを流れる電流の大きさに基づき、バルブを開位置と閉位置との間に位置させることである。
【0007】
最近では、電流閉ループにディジタルデータを重畳するハイブリッドシステムが分散制御システムに用いられている。制御技術における1つのハイブリッドシステムがハイウェイ・アドレッサブル・リモート・トランスデューサ(HART)として知られており、このハイブリッドシステムは、ベル202モデム仕様に類似している。HARTシステムは、電流閉ループにおける電流の大きさを用いてプロセス変量を検出する(従来のシステムと同様)だけでなく、電流閉ループ信号にディジタルキャリア信号を重畳する。キャリア信号は、比較的遅く、二次プロセス変量を1秒間におおよそ2,3回の頻度で更新できる信号である。一般的に、ディジタルキャリア信号は、二次的な診断情報を送信するのに用いられるものであって、フィールドデバイスの主要制御機能を実現するのに用いられるものではない。キャリア信号に重畳される情報の例としては、二次プロセス変量、(センサ診断と、デバイス診断と、配線診断と、プロセス診断とを含む)診断情報、動作温度、センサの温度、補正情報、デバイスID番号、建設資材、設定もしくはプログラミング情報などがある。したがって、1つのハイブリッド式フィールドデバイスは、種々の入出力変数を持つことができ、種々の機能を実現できる。
【0008】
HARTは、業界標準の一般的なシステムである。しかしながら、HARTは、速度が比較的遅い。業界における他社は、より速度が速い独自仕様のディジタル送信仕様を開発したものの、これらの仕様は、一般的に、競合他社が使用したり、入手できるものではない。
【0009】
最近、より新しい制御プロトコルがアメリカ計測学会(ISA)によって策定された。この新しいプロトコルは、一般的に、フィールドバスと呼ばれている。フィールドバスは、マルチドロップ・シリアル・ディジタル双方向通信プロトコルであり、分散制御システムにおける、現場計器と、監視ユニットや模擬ユニットといった他のプロセスデバイスとを接続するためのものである。フィールドバスによって、以前のプロセス制御ループ法におけるディジタル通信を強化しつつ、フィールドバス閉ループに連結されたプロセスデバイスに電力を供給する能力を維持するとともに、固有の安全要求に合致させることもできる。
【0010】
合理的に標準化された2つの工業用フィールドバスプロトコルとして、ファウンデーション・フィールドバスと、プロフィバスとがある。フィールドバスプロトコルの物理層は、アメリカ計測学会規格であるISA−S50.02−1992と、1995年の2つの拡張案とに定義されている。フィールドバスプロトコルでは、2つのサブプロトコルが定義されている。H1フィールドバスネットワークは、最大31.25(キロビット/秒)(Kbps)の速度でデータを送信するとともに、ネットワークに接続されたフィールドデバイスに電力を供給する。H1物理層サブプロトコルは、1992年の9月に承認されたISA規格の第11節第2部に定義されている。H2フィールドバスネットワークは、最大2.5(メガビット/秒)(Mbps)の速度でデータを送信するものの、ネットワークに接続されたフィールドデバイスに電力を供給せず、余剰の伝送媒体を備えている。
【発明の概要】
【発明が解決しようとする課題】
【0011】
フィールドバスは、膨大な量のプロセスデータをディジタル通信するという有用な能力
を発揮する。したがって、フィールドバス通信の効果を最大限にすることが可能なプロセス制御デバイスの開発を継続する必要がある。
【課題を解決するための手段】
【0012】
[発明の概要]
本発明は、ネットワーク上のデバイスに用いられる通信コントローラであって、通信媒体上で受信したメッセージを処理する。通信コントローラは、データキューと、受信メッセージオブジェクトのキューとを含んでいる。データキューは、通信媒体上で受信した複数のメッセージを格納する。受信メッセージは、好ましくは、受信データメモリの書込ポインタ位置に書き込まれ、受信データメモリの読込ポインタ位置から読み込まれる。また、通信コントローラは、複数の受信メッセージオブジェクトを含んでいる。各受信メッセージオブジェクトは、データキューにおける、対応するメッセージに関する情報を格納している。
【0013】
各受信メッセージオブジェクトは、好ましくは、オーバーフローと、アンダーフローと、データ準備完了と、終了位置と、有効フラグとを含む複数の属性を格納している。オーバーフロー属性は、通信媒体からメッセージを受信中に、データキューにオーバーフローが発生したか否かを示す。アンダーフロー属性は、データの不足によって、データキューからの読込に失敗したか否かを示す。データ準備完了属性は、デバイスに保存された、閾値となっているキュー深さに基づいて、データキューがほぼ満杯であることを示す。終了位置属性は、データキューからの位置情報を格納する。有効フラグは、受信メッセージオブジェクトを選択し、選択した受信メッセージオブジェクトを有効化する。
【図面の簡単な説明】
【0014】
【図1】通信媒体セグメント上のデバイス間のディジタル通信を行うプロセス制御システムの図面である。
【図2】図1のプロセス制御システムにおけるデバイス間の通信のためのメッセージフォーマットを示す。
【図3】プロセス制御システムにおけるデバイスのブロック図である。
【図4】図3のデバイスにおける通信コントローラの機能ブロック図である。
【図5】通信媒体セグメント上で受信されたデータパケットを処理する受信/送信事象マネージャの機能ブロック図である。
【発明を実施するための形態】
【0015】
[詳細な説明]
<プロセス制御システムの概要>
本発明は、プロセス制御システムにおける現場計器と他のデバイスとに用いられる通信コントローラに関する。通信コントローラの用途は、メッセージとタイマ管理とのリンク層処理の大部分を実行することで、アプリケーションプロセッサもしくはCPUを解放し、アプリケーションプロセッサもしくはCPUが他の機能を実行できるようにすることである。本詳細な説明のために、ファウンデーション・フィールドバス通信プロトコルを用いるシステムを背景にして通信コントローラを説明する。ただし、通信コントローラは、パケットに基づいた通信プロトコルに対して一般的適用性を有している。
【0016】
フィールドバス物理層は、物理層プロトコルデータユニット(PhPDU)の形式で通信プロトコルデータを送受信する物理手段の電気的特性を定義している。さらに、フィールドバス物理層は、シンボル符号化、メッセージフレーム化、エラー検出方法を定義している。ISAフィールドバス規格は、3つの信号伝送速度と2つの結合モードとを定義している。本説明のため、ISAのS50.02規格第2部における第11節に定義されたH1物理層を背景にして本発明を説明する。この節は、低電力の選択肢を有した、31.25Kbps、電圧モード、導線媒体を対象としている。この選択肢によれば、通信媒体に接続されたデバイスは、通信媒体から動作電力の供給を受けることができる。物理層は、危険な環境のための固有の安全要求に合致させることができる。このプロトコルは、規格によって定義された電圧及び電流の制限に従って、低級ツイストペア線で動作し、多数のデバイスに対応するものである。
【0017】
図1は、一般的なプロセス制御システム10を示している。このプロセス制御システム10は、セグメント12と、電源14と、5つのデバイスとを備えている。尚、5つのデバイスは、リンク・アクティブ・スケジューラ(LAS)デバイス20、リンク・マスタ(LM)デバイス22、基本デバイス24,26,28である。セグメント12は、1対の導線上で32基のデバイスまで対応することができる。一般的に、セグメント12は、ループ実行速度と、電力と、固有の安全要求とに基づいて、4〜16基のデバイスを有す
ることになる。
【0018】
LASデバイス20は、セグメント12上のデバイス間でなされる全ての通信の主要スケジュールを維持する。LASデバイス20は、コンペル・データ(CD)と、データ・リンク・プロトコル・データ・ユニット(DLPDUs)とを各デバイスへ送信し、各デバイスが、その後に返信するようにスケジュールされる巡回データを返信することで全体的な通信の信頼性を向上させる。LASデバイス20は、セグメント12上のデータリンク時刻(DL時刻)の局部的な起点として機能する。DLPDUは、セグメント12をわたって通信されるPhPDUメッセージのデータ内容である。
【0019】
LMデバイス22は、万が一、LASデバイス20が故障した場合、もしくは正常に動作しなくなった場合に、LASデバイス20の役割を引き継ぐように構成されている。図1には、LMデバイス22しか図示されていないが、複数のリンク・マスタ・デバイスをセグメント上に設けることができる。複数のリンク・マスタ・デバイスを設けることによって、リンク・アクティブ・スケジューラと第1のリンク・マスタとの双方が故障しても、第2のリンク・マスタがリンク・アクティブ・スケジューラを引き継ぐことができる。リンク・アクティブ・スケジューラがいったん機能しなくなると、リンク・マスタがリンク・アクティブ・スケジューラの機能を引き継ぐ。
【0020】
各デバイスは、V(TN)と称する固有のアドレスを有している。尚、V(TN)は、ローカルノードID(This_Node)を表す。図1に示す例では、LASデバイス20は、V(TN)=20というアドレス;LMデバイス22は、V(TN)=22というアドレス;基本デバイス24は、V(TN)=A5というアドレス;基本デバイス26は、V(TN)=F3というアドレス;基本デバイス28は、V(TN)=F5というアドレスを有している。
【0021】
LASデバイス20は、セグメント12上の全てのデバイスにパス・トークン(PT)メッセージとプローブ・ノード(PN)メッセージとを送信する。他のデバイス(LASデバイス22及び基本デバイス24,26,28)はそれぞれ、リターン・トークン(RT)メッセージとプローブ・レスポンス(PR)メッセージとをLASデバイス20に適宜返信する。
【0022】
基本デバイス24,26,28はそれぞれ、LASデバイス20によって送信された各々に対するPTメッセージとPNメッセージとを確認する必要があるだけである。PTメッセージ及びPNメッセージは、符号化された宛先アドレス(DA)をDLPDUの第2バイトに有している。LASデバイス20は、セグメント12上の全てのデバイスに対して、トークン(PT)の転送、もしくはノード(PN)の調査を1つづつ行う。
【0023】
基本デバイス24,26,28は、各々の固有アドレス(DA=V(TN))と一致する宛先アドレスを有するPTメッセージを受信すると、LASデバイス20に対してRTメッセージで応答する。基本デバイス24,26,28は、DA=V(TN)を有するPN DLPDUを受信すると、PRメッセージで応答することを要求される。
【0024】
LASデバイス20からのPTメッセージ、PNメッセージ、及びLASデバイス20へのRTメッセージ、PRメッセージの送信によって、特定の基本デバイス24,26,28が受信や応答する必要がない種々のメッセージがセグメント12上に生成される。基本デバイス24,26,28はそれぞれ、その特定のデバイス宛のPTメッセージ及びPNメッセージに応答する必要があるだけである。LASデバイス20からの他のデバイス宛のPTメッセージ及びPNメッセージ、さらに、他のデバイスからのLASデバイス20宛のRTメッセージ及びPRメッセージに頻繁に割り込まれることにより、これら“妨
害割込”を処理する過度の処理時間が生じ得る。基本デバイス24,26,28のために、DLPDUフィルタリングを用いて、基本デバイスが処理しなければならない割込の数を低減できる。他方、LASデバイス20は、セグメント12上の各メッセージを処理しなければならない。
【0025】
セグメント12上の全てのデバイスは、データをマンチェスタ符号化ベースバンド信号としてセグメント12上に送信する。マンチェスタ符号化によって、“0”及び“1”は、ビット周期内で起こるロウからハイへの変化と、ハイからロウへの変化とでそれぞれ表される。フィールドバスでは、公称ビット時間は32マイクロ秒(μ秒)であり、16μ秒で変化を生じる。マンチェスタ符号化法は、拡張され、非データプラス(N+)、非データマイナス(N−)といった2つの追加シンボルを含んでいる。但し、ビット周期中に変化は起こらず、マンチェスタ符号化ベースバンド信号は、ハイ(N+)もしくはロウ(N−)のままとなる。
【0026】
<メッセージフォーマット>
図2に、メッセージをセグメント12上に送信するのに用いられる物理層プロトコルデータユニット(PhPDU)のフォーマットを示す。PhPDUは、プリアンブルと、スタート・デリミタ(SD)と、データリンク・プロトコル・データ・ユニット(DLPDU)と、エンド・デリミタ(ED)とを含んでいる。プリアンブルは、PhPDUメッセージの最初の数ビットである。フィールドバス仕様では、1〜8バイトのプリアンブルが許容されている。メッセージを受信するデバイスは、プリアンブルを用いて、到来するメッセージと同期する。図2に示すように、プリアンブルにおける最初のバイト列は、1 0 1 0 1 0 1 0となっている。
【0027】
スタート・デリミタ(SD)は、プリアンブルの直後に続く。1つのメッセージにつき1つのSDがある。フィールドバス仕様では、SDは、非文字データ(N+及びN−)を有している必要がある。この非文字データは、常に、相互補完関係にある一対としてSDメッセージに現れる。この符号化方法によって、SDは独特のものとなり、SDとメッセージのデータ部分(DLPDU)との混同が生じることがない。図2に示すSDの列は、1 N+ N− 1 0 N− N+ 0となっている。
【0028】
DLPDUは、可変長メッセージである。DLPDUは、その最初のバイトとしてフレーム制御(FC)バイトを含み、その最後の2バイトとしてフレーム・チェック・シーケンス(FCS)チェックサムを含んでいる。DLPDUの長さは、可変であり、最小3バイト(RTメッセージの場合)から例えばおおよそ300バイトのジャバリミットまでである。
【0029】
エンド・デリミタ(ED)は、DLPDUに続く。EDは、セグメント12上へ送信されたあらゆるPhPDUメッセージの最後のバイトを表している。SDと同様に、EDは、相互補完関係にある一対の非文字データを含んでいる。この符号化方法によって、EDは独特のものとなり、EDとDLPDUとの混同が生じることがない。図2に示すエンド・デリミタの列は、1 N+ N− N+ N− 1 0 1となっている。
【0030】
また、図2は、キャリア検出信号を示している。キャリア検出信号の用途は、(a)到来するPhPDUメッセージがセグメント12上へ送出される時期、もしくは(b)デバイスがセグメント12上にメッセージを送信している時期を示すことである。
【0031】
送信開始(SOT)は、送信イネーブル(TxE)が有効になったとき、つまり、PhPDUメッセージのプリアンブルがセグメント12へ最初に送出されたときに発生する。
活動開始(SOA)は、キャリア検出信号が有効になり、キャリア検出信号が少なくと
も1ビット時間、もしくは2ビット時間(おおよそ16〜32μ秒)の間、安定したのちに発生する。この時間は、メッセージを受信するデバイスの内部クロックに対して、いつキャリア検出が有効になるかに依存する。キャリア検出信号が安定したのちに活動開始(SOA)が発生することによって、デバイスの通信コントローラは、プリアンブルの前半で起こる可能性が非常に高いノイズ異常を無視できる。追加時間は、ビット境界との同期に用いられ、それによりセグメント12上の短いノイズバーストが活動として誤解釈される可能性が排除される。送信メッセージの場合、送信イネーブルがいったん有効になると(つまり、PhPDUのプリアンブルがセグメント12へ送出されると)、SOAが発生する。
【0032】
メッセージ開始(SOM)は、受信メッセージのFCバイトが検出されたときの最初のビットの始まりで発生する。
SOM_xmtは、メッセージ送信開始であり、送信メッセージのFCバイトが検出されたときの最初のビットの始まりで発生する。
【0033】
SOMfは、フィルタ処理された受信DLPDUのSOMである。SOMfは、デバイス内の通信コントローラが、到来するメッセージをフィルタ処理するか判定するのに十分な情報を検出すると発生する。
【0034】
メッセージ終了(EOM)は、EDにおける最後のビットの終わりが受信メッセージに現れると発生する。送信終了(EOT)は、送信メッセージにおけるEDの最後のビットの終わりで発生する。
【0035】
活動終了(EOA)は、キャリア検出信号が無効になったときに発生する。EOAは、送信DLPDU及び受信DLPDUの双方で発生する。
<デバイス・アーキテクチャ>
図3は、基本デバイス24における通信部のブロック図を示している。尚、基本デバイス24における通信部は、デバイス20−28の各々のアーキテクチャを代表するものである。基本デバイス24は、中央処理装置(CPU)30と、ランダム・アクセス・メモリ(RAM)32と、フラッシュ・メモリ34と、通信コントローラ36と、媒体接続装置(MAU)38とを備えている。
【0036】
図3に示す本実施形態では、CPU30は、モトローラ社製68LC302、モトローラ社製Mcore2075、モトローラ社製PowerPC850、アトメル社製ThumbプロセッサAT91M40800などといったマイクロプロセッサである。CPU30は、8ビット以上のプロセッサである。
【0037】
図3に示す本実施形態では、通信コントローラ36は、特定用途向け集積回路(ASIC)素子であり、MAU38とCPU30との間のインターフェイスとして機能する。通信コントローラ36は、フィールドバスセグメント12に接続された外部のアナログ回路との間で符号化されたマンチェスタデータの送受信を行う。通信コントローラ36は、MAU38からシリアルデータを受信したのち、受信したデータを符号化し、符号化したデータをバイトに変換して、プリアンブル、SD、ED(そして、任意にFCSバイト)を除去し、リンク層が読み取るメッセージデータを供給する。データ送信に向け、通信コントローラ36は、リンク層からDLPDUデータのバイトを受信して、プリアンブルとSDとを付加し、任意にFCSの生成を行い、EDを付加する。通信コントローラ36は、続いてシリアルに符号化されたマンチェスタデータを形成し、マンチェスタデータは、フィールドバスセグメント12上への送信のためにMAU38へ送信される。
【0038】
通信コントローラ36とMAU38との間の通信は、RxS、RxA、TxS、TxE
といった4つの信号を介して確立される。尚、RxSは、受信されたマンチェスタ符号化シリアルデータである。RxAは、受信データのキャリア検出信号である。TxSは、送信された符号化シリアルデータである。TxEは、送信イネーブル信号である。
【0039】
本発明の他の実施形態では、通信コントローラ36は、CPU30と同一の集積回路上に形成され得る。さらに、いくつかの実施形態において、RAM32及びフラッシュ・メモリ34もCPU30と一体化されてもよい。LASデバイス20の場合、CPU30、RAM32、フラッシュ・メモリ34は、プロセス制御システム10のホストコンピュータシステムの一部であってもよい。
【0040】
MAU38は、フィールドバスセグメント12とのネットワーク接続を確立する。MAU38は、集積回路であってもよいし、個別の素子を用いてMAU38を形成することもできる。
【0041】
<通信コントローラ36>
図4は、通信コントローラ36の機能ブロック図である。本実施形態では、通信コントローラ36は、デバウンス回路42と、ディジタル位相同期回路(PLL)44と、フロントエンドステートマシン46と、受信メッセージフィルタリング48と、受信先入れ先出し(FIFO)メモリ50と、送信ステートマシン52と、送信FIFOメモリ54と、送信ドライバ回路56と、受信/送信事象マネージャ58と、レジスタ群60と、クロック生成回路62と、発振器64と、タイマ群68と、CPUインターフェイス回路70とを備えている。
【0042】
到来するメッセージをMAU38が検出すると、RxA入力にて、キャリア検出信号が通信コントローラ36へ供給され、RxS入力にて、到来する非同期のマンチェスタデータが供給される。RxA入力及びRxS入力は、フロントエンドステートマシン46へ送出される。ディジタルPLL44は、到来するシリアルマンチェスタ符号化データからクロックを正常化してクロックを再生する。そして、この再生されたクロックは、フロントエンドステートマシン46のタイミングを決定するのに用いられる。
【0043】
フロントエンドステートマシン46は、到来するシリアルビットストリームRxSを検出する。フロントエンドステートマシン46は、プリアンブル、SD、EDを除去し、DLPDUを受信FIFOメモリ50へ格納する。フロントエンドステートマシン46は、受信メッセージフィルタリング48とともに、特定のフレーム制御、加えて、他のデバイス宛のプローブ・ノード(PN)メッセージ、パス・トークン(PT)メッセージを除外するように構成され得る。フロントエンドステートマシン46は、受信FIFOメモリ50へ書き込まれたバイト数のトラックを保持する。FCSは、各メッセージの終わりに自動的に確認され、任意に受信FIFOメモリ50へ格納され得る。
【0044】
また、フロントエンドステートマシン46は、フロントエンドステートマシン46が検出した特定の事象を表す信号を送出する。この信号としては、SOM事象パルス、SOMf事象パルス、EOM事象パルス、SOA事象パルス、EOA事象パルスがある。
【0045】
フロントエンドステートマシン46は、RxA線が有効になると作動する。そして、フロントエンドステートマシン46は、プリアンブル領域のエッジに同期し、RxS信号のマンチェスタ符号化データを復号する。SOA事象は、フロントエンドステートマシン46が起動したことを示す。
【0046】
プリアンブルが検出されると、フロントエンドステートマシン46は、スタート・デリミタ(SD)列を待つ。SDが検出されると、フロントエンドステートマシン46は、シ
リアルデータストリームをオクテットに変換し、シリアルデータストリームを8ビットのバイト毎に受信FIFOメモリ50に書き込む。フロントエンドステートマシン46は、エンド・デリミタ(ED)が検出されるまで、もしくは受信FIFOメモリ50が満杯になるまで、データの新たなオクテットを受信FIFO50に書き込み続ける。
【0047】
EDが検出されると、フロントエンドステートマシン46は、RxA線が無効になるのを待つ。尚、RxA線が無効になることは、EOA事象によって示される。
RxA線が無効になることで、フロントエンドステートマシン46は初期状態に復帰する。フロントエンドステートマシン46は、フィールドバス・セグメント12上の次の活動まで(つまり、再度RxAにてキャリア検出信号が供給されるまで)初期状態のままでいる。
【0048】
フィルタリング回路は、基本デバイスにとって重要ではないメッセージに関するIRQ負荷を軽減するために基本デバイスに用いられている。対照的に、LASとして構成されたデバイスは、セグメント上の全てのメッセージを受信しなければならないため、フィルタリングを無効にしなければならない。フィルタリングが無効であると、全ての受信メッセージが受信FIFOメモリ50へ格納されるようになり、全ての受信メッセージがレジスタ群60、そしてCPU60へと転送されるようになる。SOMfは、フィルタ処理された受信DLPDUのメッセージ開始信号である。SOMfは、到来するメッセージがフィルタ処理されることを判定するのに十分な情報を受信メッセージが検出したとフロントエンドステートマシン46が判定すると発生する。
【0049】
フィルタリングが有効になると、フィルタ処理されたメッセージは受信FIFOメモリ50に格納されない。フィルタ処理されたメッセージによって、SOMfが生成されないようになり、事象やIRQが発生しないようになる。
【0050】
フィルタ処理されたメッセージの例としては、リターン・トークン(RT)、アイドル、要求インターバル(RI)、プローブ応答(PR)DLPDUメッセージがあり、これらのメッセージは、常に拒否されるようになる。これらは、フレーム制御(FC)バイトに基づいて特定される。パス・トークン(PT)メッセージ及びプローブ・ノード(PN)メッセージは、メッセージの宛先アドレスがデバイスのアドレスと一致した場合に受信されるようになる。宛先アドレスが一致しない場合には、PTメッセージ及びPNメッセージは拒否される。
【0051】
FCバイトに基づいてメッセージの種類に関してフィルタリングできることと、宛先アドレスに基づいてメッセージの種類に関してフィルタリングできることとによって、CPU30が処理しなければならない割込要求(IRQs)の数が制限され、それによってソフトウェア割込の負荷が軽減される。
【0052】
フロントエンドステートマシン46及び受信FIFOメモリ50は、MAU38からのシリアルデータフレームを構文解析するのに用いられる。CPU30は、受信FIFOメモリ50からデータを読み込み、読み込んだデータをCPU30のローカルメモリ空間に格納して、受信DLPDUを復号する。
【0053】
受信FIFOメモリ50は、8ビット幅を1バイトとした63バイトである。受信FIFOメモリ50は、3つまでの完全な受信メッセージ(合計63バイトまで)の全てのDLPDUバイトを格納することになる。フロントエンドステートマシン46は、フィルタ処理されたRxS信号からシリアルデータストリームを復号し、復号したシリアルデータストリームを8ビット並列形式のバイトに変換する。バイトの形成ののち、フロントエンドステートマシン46は、書込ポインタによって指し示された場所へ符号化データを格納
する書込パルスを生成する。書込動作が完了したのち、書込ポインタは、次のDLPDUバイトを格納するようにインクリメントされる。
【0054】
CPU30は、受信FIFOメモリ50に対する読込ポインタと連動する。レジスタ群60の受信FIFOレジスタ(実際のDLPDUデータを含んでいる)からのあらゆる読込によって、8ビットデータは、受信FIFOメモリ50からデータバス上に直ちに送出され、CPU30に読み込まれる。読込動作が完了したのち、読込ポインタはインクリメントされる。読込ポインタのインクリメントは、受信FIFOメモリ50が空になるまで継続され得る。
【0055】
受信FIFOメモリ50にてオーバーフロー状態が発生するのを防止するため、レジスタ群60には、受信FIFOメモリ50が満杯状態に近づくとIRQの生成を許可するレジスタがある。IRQ生成の閾値は変更可能である。
【0056】
送信ステートマシン52は、送信FIFOメモリ54から送信されるDLPDUデータを読み込む。プリアンブル、SD、EDが自動的に挿入される。送信ステートマシン52を起動するためには、PDU間トリガー、もしくはその代わりに次回定期事象トリガーが有効となって、送信動作を開始する必要がある。送信ステートマシン52は、送信されたバイト数のトラックを保持する。アンダーフローもしくは送信カウント違反があると、エラー状態が指し示される。FCSは、DLPDUの最後の2バイトとして任意に自動送信され得る。
【0057】
送信ステートマシン52は、MAU38へのTxS線上のインターフェイス回路70を介して供給され、フィールドバスセグメント12上に送出されるマンチェスタシリアルデータを符号化する。また、送信ステートマシン52は、EDの最後のビットが発生して最初のプリアンブルにおける最初のビットが送信されたときに送信イネーブル(TxE)線を有効状態にする。また、送信ステートマシン52は、TxE線を有効状態にするときに、送信開始(SOT)事象信号を生成し、TxE線が無効に復帰するときに、送信終了(EOT)事象信号を生成する。
【0058】
送信FIFOメモリ54は、送信されるべきメッセージに必要とされる全てのDLPDUバイトである合計63バイトまでを格納することになる。変更可能な閾値は、送信FIFOメモリ54がほぼ空になる時期をCPU30に伝えるIRQを送信するように設定され得る。63バイトよりも多くのバイトが送信される必要がある場合には、CPU30は、送信FIFOメモリ54により多くのデータを追加できるようにすることを通知される。CPU30への通知は、全てのDLPDUのバイトが書き込まれるまで継続する。CPU30が書込ポインタを用いて送信FIFO54に書込を行う一方で、送信ステートマシン52が読込ポインタを用いて送信FIFOメモリ54からバイトを読み込む。
【0059】
通信コントローラ36は、事象発生時に機能し、多数の事象の発生を処理できなければならない。事象の例としては、受信メッセージのSOM、EOM、あるいはEOA、またあるいは送信メッセージのEOTがある。受信/送信事象マネージャ58は、3つの受信メッセージと1つの送信メッセージとの合計までで起こる全ての事象を管理する。
【0060】
図4に示すように、受信/送信事象マネージャ58は、rcvmsg1、rcvmsg2、rcvmsg3と称される3つの受信メッセージオブジェクトと、xmtmsgと称される1つの送信メッセージオブジェクトとを備えている。さらに、受信/送信事象マネージャ58は、メッセージキューマネージャ(MsgQmngr)80と、事象マネージャ(EventMngr)82と、送信マネージャ(xmtmngr)84と、事象MUX86とを備えている。
【0061】
受信FIFOメモリ50は、3つまでの完全な受信メッセージのDLPDUバイトを格納することができる。これら3つのメッセージはそれぞれ、対応するオブジェクトrcvmsg1と、rcvmsg2と、rcvmsg3とを備えている。各オブジェクトは、全てのIRQの状態と、メッセージエラーと、各オブジェクトに対応する受信メッセージのために発生するタイムスタンプとを含んでいる。この情報は、メッセージの事象データを構成する。
【0062】
全てのIRQの状態、メッセージエラー、送信メッセージのために発生するタイムスタンプは、xmtmsgオブジェクトに格納される。格納情報は、送信メッセージの事象データを構成する。
【0063】
MsgQmngr80は、3つの受信メッセージの選定及び有効化を制御する。一度につき1つの受信メッセージオブジェクトのみが有効になることができる。MsgQmngr80によって、事象は、有効になっている受信メッセージと連動できる。CPU30によって他の3つの受信メッセージが認識される前に4つ目のメッセージが受信された場合には、MsgQmngr80は、事象データが読み込まれるまで、もしくは事象データが認識されるまで、さらなるいずれのメッセージの受信も無効とする。
【0064】
EventMngr82は、事象の発生順序を管理する。事象が発生すると、事象マネージャ82は、各事象に発生順序識別子(OOO_ID)を割り当てる。発生順序識別子を各事象に割り当てることにより、CPU30は、事象が発生する毎に事象を1つづつ読み込むことができる。CPU30は、各事象の発生時に各事象を認識しなければならない。第1の事象が認識されたのち、第1の事象に続く事象は、CPU30が読み込めるように待機されるようになる。
【0065】
Xmtmngr84は、PDU間トリガー(InterPDU_trig)と次回定期事象トリガーとを監視して、送信トリガーコマンド(Xmt_Trig_Cmd)を送信ステートマシン52に発行し、次のメッセージの送信を開始させる。
【0066】
通信コントローラ36は、レジスタ群60を備えている。CPU30は、REG00〜REG3Fと称されたレジスタに書込や読込を行うことができる。また、割込(IRQs)は、レジスタ群60を介して処理される。
【0067】
クロック生成回路62は、外部クロックを受信し、この外部クロックを使用するか、もしくはクロック生成回路62内部の発振器64からのクロック信号で通信コントローラ36に必要な全てのクロック信号を生成する。
【0068】
クロック生成回路62は、好ましくは、クロック生成回路62のノードタイマ及びオクテットタイマの双方のクロックレートを更新する能力を備えている。クロックレートを更新できることによって、通信コントローラ36は、当該通信コントローラ36のノード時刻とリンク・アドレス・スケジューラ(LAS20)との関係を同期させることができる。オクテット時刻は、内部メッセージタイミングを図るために用いられる一方、ノード時刻は、フィールドバスセグメント12全体で共通の時刻の検出値を共有するために用いられる。
【0069】
タイマ群68は、異なる時刻の検出値を表す2つのグループに分割される。第1セットのタイマ群は、セグメントタイマ群と称され、CPU30のソフトウェア制御のもとで、クロック生成回路62によって生成される可変クロックレートに基づいて動作する。第2セットのタイマ群は、メッセージタイマ群と称され、固定レートクロックで動作する。
【0070】
通信コントローラ36には、2つのセグメントタイマがある。第1セグメントタイマは、ノードタイマであり、ノードタイマは、31.25μ秒(32kHz)のクロックレートを有している。ノードタイマは、次回機能ブロック実行時刻と、リンク予定時刻V(LST)と、データリンク時刻(DL−Time)とを提供するために用いられる。
【0071】
第2セグメントタイマは、オクテットタイマであり、オクテットタイマは、2μ秒(500kHz)のクロックレートを有している。オクテットタイマは、次回定期事象トリガー(次回定期事象トリガーは、特定時刻でメッセージを送信するために送信ステートマシン52に接続している)に用いられる。クロックレートが調節されると、ノードタイマ及びオクテットタイマは、同じレートで互いに追従するようになる。つまり、ノードタイマとオクテットタイマとを駆動するクロック信号は、共通の可変クロックから得られている。
【0072】
メッセージタイマ群は、フィールドバスメッセージ事象(送信及び受信)に基づいて、起動及び停止する。メッセージタイマ群は、非活動タイマと、PDU間遅延タイマと、受信応答タイマと、送信応答タイマと、デリゲートトークン復帰タイマとを備えている。
【0073】
非活動タイマは、デクリメントカウンタである。非活動タイマは、2つのPhPDU間のアイドル時間を測定するのに用いられる。非活動タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント12上のあらゆる送信メッセージとに作用する。非活動タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。非活動タイマの起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な設定時点から決定される。非活動タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連した事象を介して解除もしくは停止され得る。非活動タイマがいったん0に到達もしくは失効すると、IRQが生成される。非活動タイマは、IRQが認識されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが認識されるまで非活動タイマに作用しない。
【0074】
PDU間遅延タイマは、インクリメントカウンタである。PDU間遅延タイマは、V(MID)閾値レジスタとともに用いられ、送信メッセージもしくは受信メッセージの間の無送信最小時間(もしくは隙間時間)を保証するフィールドバスV(MID)最小PDU間遅延を実現する。PDU間遅延タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント上のあらゆる送信メッセージとに作用される。フィールドバス活動がないときには、PDU間遅延タイマは、インクリメントを継続する。カウント値がレジスタ群60の1つに格納された、予め決められた値以上になると、PDU間トリガー信号が有効になる。PDU間トリガー信号は、PDU間遅延時間に達したことを判定するのに用いられる。PDU間トリガー信号は、xmtmngr84に接続し、DLPDUの送信を開始できるという命令を与える。
【0075】
受信応答タイマは、デクリメントカウンタである。受信応答タイマは、加入デバイスがコンペル・データ(CD)DLPDUに対する即時応答を監視できるようにするために用いられる。また、受信応答タイマは、デバイスがオンラインされるときに当該デバイスが当該デバイスのアドレスを監視するのに用いられる。受信応答タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。受信応答タイマ起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な16ビットの設定時点から決定される。受信応答タイマのデクリメントは、SOM事象もしくはSOT事象のいずれか一方を介して解除もしくは停止され得る。受信応答タイマがいったん0に到達もしくは失効すると、IRQが生成される。受信応答タイマでは、IRQが生成されるためには、IRQが有効化
される必要がある。受信応答タイマは、IRQが確認されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが確認されるまで受信応答タイマに作用しない。
【0076】
送信応答タイマは、デクリメントカウンタである。送信応答タイマによって、デバイスは、種々のDLPDU(つまり、コンペル・データ、パス・トークン)の送信後の即時応答を監視することができる。送信応答タイマは、起動を命令されると、16μ秒毎にデクリメントを行う。送信応答タイマの起動点は、レジスタ群60の1つに予め読み込まれた変更可能な設定点から決定される。送信応答タイマのデクリメントは、プローブ・ノード(PN)のSOM事象もしくはSOT事象を除く送信されたあらゆるDLPDUのSOM事象もしくはSOT事象のいずれか一方を介して、解除もしくは停止され得る。送信応答タイマがいったん0に到達もしくは失効すると、IRQが生成される。送信応答タイマは、IRQが認識されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが認識されるまで送信応答タイマに作用しない。
【0077】
デリゲートトークン復帰タイマは、デクリメントカウンタである。デリゲートトークン復帰タイマは、他のデバイスからのデリゲートトークンを受信するアイドル時間を監視するのに用いられる。デリゲートトークン復帰タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント12上のあらゆる送信メッセージとに作用する。デリゲートトークン復帰タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。デリゲートトークン復帰タイマの起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な設定時点から決定される。デリゲートトークン復帰タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連する事象を介して解除もしくは停止され得る。デリゲートトークン復帰タイマがいったん0に到達もしくは失効すると、IRQが生成される。デリゲートトークン復帰タイマは、このIRQが認識されるまで0のままとなる。IRQがハイのままであると、さらなるメッセージ事象が発生しても、このIRQが認識されるまでデリゲートトークン復帰タイマは作用されない。
【0078】
<低遅延のデータパケット処理>
セグメント12から情報のパケットを受信しているときに、データパケットを受信FIFOメモリ50に待機させることで、ソフトウェア遅延が発生する。データパケット自体に加え、通信コントローラ36は、受信状態(例えば、パケットのバイトがネットワークから依然として受信中であるか否かという状態)に関する情報を保持しなければならない。通信コントローラ36は、多数のデータのパケットを受信FIFO50に待機させる能力があるため、データパケットを受信状態に関連する情報と関連付けることができることが不可欠である。通信コントロールシステムのハードウェアは、一般的に、例えば、CPU30におけるソフトウェアによって外部から提供される、データパケットを受信状態に関連する情報と関連付けるという必要な動作を模擬するように設計され得る。
【0079】
図5は、セグメント12上のMAU38によって受信されたデータパケットの処理を管理する受信/送信事象マネージャ58の機能ブロック図である。受信/送信事象マネージャ58は、メッセージキューマネージャ(MsgQmngr)80と、事象MUX86と、受信メッセージオブジェクトキュー100と、マルチプレクサ102,106,108とを含んでいる。受信メッセージオブジェクトキュー100は、rcvmsg1、rcvmsg2、rcvmsg3と称された、3つの受信メッセージオブジェクトのための空間を含んでいる。MsgQmngr80は、MUX102を介して、受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3に接続されている。マルチプレクサ106,108は、本発明の範囲外であるものの、受信/送信事象マネージャ50における各種部品間の接続を図示するために図5に表されている。MUX106は、レジス
タ群60におけるレジスタReg15からの入力に基づいて、受信メッセージオブジェクトとMUX108とに出力を供給し、MUX108の出力は、MsgQmngr80に入力される。また、MUX106の出力は、ORゲート110を介して、MsgQmngr80に入力される。事象マネージャ82及び送信マネージャ84は、図4では受信/送信事象マネージャ58内に表されているものの、説明を明確にするために、図5では省略されている。また、図5に表されているのは、有効なメッセージの受信メッセージオブジェクト及び送信メッセージオブジェクトに関連付けられた事象データを格納するレジスタ群60の部分(Reg15〜Reg1F)である。
【0080】
受信/送信事象マネージャ58によって、CPU30は、順に発生した各メッセージの各々に関連付けられた受信メッセージオブジェクト(rcvmsg1、rcvmsg2、rcvmsg3)を読み込むことができる。有効なメッセージの受信メッセージオブジェクトは、レジスタ群60を介して、具体的にはレジスタReg15〜Reg1Fにおいて、CPU30が読込可能である。有効なメッセージの送信メッセージオブジェクトは、レジスタReg16,Reg17,Reg1Bにおいて、MAU38が送信可能である。各受信メッセージオブジェクトは、メッセージIRQと、エラーと、状態と、受信FIFOメモリ50に関する情報及びデータとの組み合わせを格納している。
【0081】
受信FIFOメモリ50に関する情報及びデータは、ソフトウェアによって読込可能な種々の属性を含んでおり、種々の属性は、オブジェクトが対応するメッセージの受信状態に関連している。これらの属性としては、オーバーフローと、アンダーフローと、データ準備完了と、終了位置と、有効フラグとがある。オーバーフロー属性は、設定されると、ネットワークからメッセージを受信中に、受信FIFOメモリ50のオーバーフローが発生したことを示す論理的属性である。アンダーフロー属性は、データの不足によって、受信FIFOメモリ50から読み込む最後の試みが失敗したことを示す論理的属性である。データ準備完了属性は、受信FIFOメモリ50が満杯状態に近づいており、受信FIFOメモリ50のオーバーフローを防止するために受信FIFO50の読込が必要であることを示す論理的属性である。終了位置属性は、受信FIFOメモリ50からの位置情報を格納する整数属性である。受信メッセージオブジェクトの有効フラグは、有効フラグに対応するメッセージが有効中であるときにMsgQmngr80によって設定される。
【0082】
MsgQmngr80は、3つの受信メッセージの選択及び有効化を制御する。MsgQmngr80は、MUX102を介して選択されたときの受信メッセージオブジェクトの有効フラグ(RcvMsg1_sel信号、RcvMsg2_sel信号、RcvMsg3_sel信号)を介して制御される。したがって、一度につき1つの受信メッセージオブジェクト(rcvmsg1、rcvmsg2、rcvmsg3)のみが有効になり得る。MsgQmngr80によって、事象は、有効な受信メッセージと関連付けられ得る。
【0083】
作動時に、MAU38は、セグメント12からメッセージを受信する。メッセージがセグメント12から受信されると、受信メッセージオブジェクトキュー100における受信メッセージオブジェクトの有効フラグが設定される。例えば、MAU38がメッセージを受信したときに、受信FIFOメモリ50にデータが一切格納されていない場合には、MsgQmngr80によって、RcvMsg1_sel信号が設定されることで、受信メッセージオブジェクトキュー100におけるrcvmsg1が有効になる。
【0084】
フロントエンドステートマシン46は、シリアルデータストリームを復号し、シリアルデータストリームを8ビットパラレル形式のバイトに変換する。バイトの形成後、フロントエンドステートマシン46は、書込ポインタによって指し示された、受信FIFO50における記憶位置に、符号化されたデータを格納する書込パルスを生成する。メッセージ
DLPDUデータが受信FIFOメモリ50に書き込まれているときに、受信FIFOメモリ50に対する書込ポインタの現在の位置が、有効な受信メッセージオブジェクトの終了位置属性に継続的に転送され、書込ポインタは、各バイトが書き込まれた後に引き続いてインクリメントされる。受信メッセージオブジェクトが受信メッセージオブジェクトキュー100に加えられた順序と同じ順序でデータが受信FIFOメモリ50に加えられるため、受信FIFOメモリ50と受信メッセージオブジェクトキュー100との間で一致した順序が維持される。
【0085】
フロントエンドステートマシン46から受信FIFOメモリ50へデータを転送している最中に、受信FIFOメモリ50は、当該受信FIFOメモリ50が当該受信FIFOメモリ50の63バイトの格納限度に近づいているか否かを継続的に監視する。受信FIFOメモリ50における未読バイト数がデータ準備完了属性の閾値と一致、もしくは閾値よりも大きい場合には、有効な受信メッセージオブジェクトによってIRQが生成される。このIRQは、有効な受信メッセージオブジェクトにおけるデータ準備完了属性を設定する。データ準備完了IRQを生成するための閾値は、変更可能である。データ準備完了属性は、受信FIFOメモリ50からデータが読み込まれた後に引き続いて、ソフトウェアによってクリアされ得る。データが受信FIFOメモリ50から読み込まれる前に受信FIFOメモリ50が満杯になると、受信FIFOメモリ50は、全ての受信メッセージオブジェクトに信号を送信して、オーバーフロー属性を設定する。オーバーフロー属性を設定することで、データキューからデータが読み込まれ、ソフトウェアがオーバーフロー属性をクリアするまで、受信FIFOメモリ50にさらなるデータが書き込まれるのを防止するようになる。有効な受信メッセージオブジェクトのみにオーバーフロー属性が設定されるようになるため、ソフトウェアは、どの受信メッセージオブジェクト(rcvmsg1、もしくはrcvmsg2、もしくはrcvmsg3)がオーバーフロー状態であったのかを判定することができる。
【0086】
MsgQmngr80は、3つの受信メッセージの選択及び有効化を制御する。3つのメッセージのうちの少なくとも1つがCPU30によって認識される前に4つ目のメッセージが受信されている場合には、MsgQmngr80は、事象データが読込もしくは認識されるまで、RcvMsgQMux_enbを強制的にロウ(無効)に設定することで、さらなるメッセージが受信されるのを無効にする。RcvMsgQMux_enbを強制的にロウ(無効)に設定することで、全てのRcvMsg_sel信号がロウとなる。4つ目の受信メッセージが到来するのをMsgQmngr80に防止させることで、受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3の破損が防止される。
【0087】
CPU30は、受信メッセージオブジェクトキュー100に位置する3つの受信メッセージオブジェクト(rcvmsg1、rcvmsg2、rcvmsg3)を通して、受信FIFOメモリ50に対する読込ポインタと連動する。CPU30が、格納されたDLPDUデータを受信FIFOメモリ50から読み込む準備が完了すると、CPU30におけるソフトウェアは、レジスタ群30におけるレジスタReg1Dを介して、GetDataByte_inコマンドを生成する。レジスタReg1Dからのあらゆる読込によって、受信FIFOメモリ50からのデータが、CPU30による読込のために直ちにデータバス上に置かれる。GetDataByte_in信号は、3つの受信メッセージオブジェクトの全てに入力される。一度につき、3つの受信メッセージオブジェクトのうちの1つだけが、CPU30で読込可能(もしくは確認可能)である。EventMUX_sel(2:0)信号は、MUX106を介して読み込まれる、CPU30にとって現在確認可能な受信メッセージオブジェクトを選択する。RcvMsg1_visible、RcvMsg2_visible、RcvMsg3_visibleといった3つの確認可能信号があり、これら信号はそれぞれ、受信メッセージオブジェクトrcvmsg1、rc
vmsg2、rcvmsg3に対応している。
【0088】
例えば、RcvMsg1_visibleが有効な場合には、受信メッセージオブジェクトrcvmsg1から出力されるGetDataByte1信号が生成されることになる。GetDataByte1信号によって、受信FIFOメモリ50に対する読込ポインタが、1つの位置分インクリメントされる。GetDataByte2及びGetDataByte3は、GetDataByte1と同時にCPU30で確認することができないため、無効のままとなる。3つのGetDataByte出力のうちの1つが常に有効になっているため、3つのGetDataByteはORゲート114を通過して、読込ポインタのインクリメントパルスを生成する。続いて受信メッセージオブジェクトrcvmsg1からの読込動作が実行されると、読込ポインタは、rcvmsg1の終了位置の値と比較される。この比較によって、CPU30は、受信FIFOメモリ50における、rcvmsg1に関連付けられた特定のメッセージのバイト数を把握することができる。
【0089】
読込ポインタの値が終了位置の値と等しいと、確認可能な受信メッセージオブジェクトが取得可能なデータがなく、受信FIFOメモリ50は、確認可能な受信メッセージオブジェクトに関して空であると見なされる。確認可能な受信メッセージオブジェクトが取得可能なデータがないときには、内部的な空フラグが有効となる。空フラグが有効のときに追加の読込コマンドが生成される場合には、確認可能な受信メッセージオブジェクトのアンダーフロー属性が設定されることになる。このアンダーフロー属性は、レジスタ群60におけるレジスタReg17で読込可能である。空フラグによって、読込ポインタのインクリメントが発生するのを防止し、これによって、適切なポインタ位置と、DLPDUデータの関連付けの完全性とが維持される。受信FIFOメモリ50が最大3つの異なる受信メッセージオブジェクトに関連付けられたDLPDUデータを格納しているときに、適切なポインタ位置と、DLPDUデータの関連付けの完全性とが維持されることは、非常に重要である。
【0090】
CPU30は、レジスタ群60におけるReg1Fの読込動作を実行することによって、受信FIFOメモリ50から読み出す、確認可能な受信メッセージオブジェクトのバイト数を判定することが可能である。レジスタReg1Fから読み出される値は、終了位置と読込ポインタとの間における位置の差である。例えば、受信メッセージオブジェクトrcvmsg1が確認可能であり、CPU30がレジスタReg1Fから08hを読み込む場合には、CPU30は、rcvmsg1に関連付けられた全てのDLPDUデータの読込を完了するのに、(Reg1Dを介して)8回の読込動作が必要になるものと考えられる。8回の読込動作によって、確実に、確認可能な受信メッセージオブジェクトに関連付けられた全てのDLPDUデータが受信FIFOメモリ50から適切に読み出される。CPU30は、確認可能な受信メッセージオブジェクトに関して、レジスタ群60のレジスタReg15〜Reg1Fを読み込み、続いて、これらレジスタからの情報に基づいて、対応する動作を行う。
【0091】
確認可能な受信メッセージ情報オブジェクトに関する全ての情報(IRQ状態、エラー状態、DLPDUデータ、タイムスタンプ値など)がCPU30によって処理された後、Event_Ack(事象認識)信号が生成され、CPU30が受信メッセージオブジェクトキュー100における確認可能な受信メッセージオブジェクトに関連付けられたデータの削除を完了したことを合図する。このEvent_Ack信号は、レジスタ群60におけるレジスタReg15への書込動作を実行することによって生成されるものであり、事象マネージャ82と受信FIFOメモリ50に入力され、EventMUX_sel(2:0)信号を更新する。EventMUX_sel(2:0)信号の更新によって、受信メッセージオブジェクトキュー100における次の受信メッセージオブジェクトの認識
可能な信号(つまり、rcvmsg2)が有効になり、次の受信メッセージオブジェクトに関する事象データレジスタ群60が、CPU30にとって認識可能になる。そして、前述の読込順序が、次の受信メッセージオブジェクトのために実行され得る。
【0092】
要約すれば、ネットワーク上で受信したメッセージをハードウェアで処理する従来のやり方では、受信メッセージを格納するための個別のデータキュー要素と、メッセージに関する情報を格納するための、各個別のデータキュー要素に関連付けられた受信メッセージオブジェクトとが必要になる。さらに、ソフトウェア遅延を考慮して、ハードウェア設計者は、大きなデータキューを設けて、メッセージがネットワークから受信されたときにデータキューのオーバーフローが生じるのを回避しなければならない。大きなデータキューを設けるやり方では、データキュー深さの要求に起因する拡張性の問題を被ることになる。本発明は、通信コントローラであって、単一のデータキューと、受信メッセージオブジェクトのキューとを含んでいる。データキューは、通信媒体上で受信されたメッセージを格納する。受信メッセージは、好ましくは、書込ポインタ位置の受信データメモリに書き込まれ、読込ポインタ位置の受信データメモリから読み込まれる。また、通信コントローラは、受信メッセージオブジェクトを含んでいる。各受信メッセージオブジェクトは、データキューにおける、対応するメッセージに関する情報を格納している。つまり、いかなる余分なデータキューのオーバーヘッドを招くことのない規模となり得るキューの一案を表している。さらに、データキュー格納要求全体に大きな影響を与えることなく、未知のソフトウェア遅延を考慮して、データキュー深さを大きくすることができる。
【0093】
本発明は、好ましい実施形態を参照しながら説明されているが、当業者は、本発明の精神及び範囲を逸脱することなく、形態の変更及び詳細な変更が可能であることを認識するであろう。

【特許請求の範囲】
【請求項1】
通信媒体上で通信を行うデバイスであって、
該デバイスは、
前記通信媒体上でメッセージの受信及び送信を行う媒体接続装置(MAU)と、
受信されたメッセージに格納されたデータの処理と、送信されるメッセージに格納されるデータの生成とを行う中央処理装置(CPU)と、
前記MAUと前記CPUとを接続する通信コントローラであって、データキューと、受信メッセージオブジェクトのキューとを含み、前記データキューが、前記通信媒体上で受信された複数のメッセージを格納し、前記受信メッセージオブジェクトがそれぞれ、前記データキューにおける、対応するメッセージに関する情報を格納している、通信コントローラと
を備えていることを特徴とするデバイス。
【請求項2】
請求項1に記載のデバイスであって、
前記データキューは、書込ポインタと読込ポインタとを含み、
前記書込ポインタは、前記通信媒体から受信された新たなメッセージを格納するための前記データキューにおける記憶位置に対応し、
前記読込ポインタは、前記CPUが前記データキューからメッセージを読み込むための前記データキューにおける記憶位置に対応している
ことを特徴とするデバイス。
【請求項3】
請求項2に記載のデバイスであって、
前記書込ポインタ及び前記読込ポインタは、先入れ先出し(FIFO)キューとして前記データキューを実行する
ことを特徴とするデバイス。
【請求項4】
請求項2に記載のデバイスであって、
各受信メッセージオブジェクトは、
前記CPUにおけるソフトウェアによって読込可能なオーバーフロー属性であって、前記通信媒体からメッセージを受信中に、前記データキューにオーバーフローが発生したか否かを示すオーバーフロー属性と、
前記CPUにおけるソフトウェアによって読込可能なアンダーフロー属性であって、データの不足によって前記データキューからの読込が失敗したか否かを示すアンダーフロー属性と、
前記CPUにおけるソフトウェアによって読込可能なデータ準備完了属性であって、前記データキューがほぼ満杯であることを示すデータ準備完了属性と、
前記データキューからの位置情報を格納する終了位置属性と、
前記受信メッセージオブジェクトの選択及び有効化を行う有効フラグと
を含んでいることを特徴とするデバイス。
【請求項5】
請求項4に記載のデバイスであって、
メッセージが前記通信媒体上で受信されると、前記書込ポインタの値が、対応する受信メッセージオブジェクトにおける終了位置属性に継続的に転送される
ことを特徴とするデバイス。
【請求項6】
請求項4に記載のデバイスであって、
前記アンダーフロー属性は、前記読込ポインタが前記終了位置属性と同一の値を有しているときに、受信メッセージオブジェクトに設定される
ことを特徴とするデバイス。
【請求項7】
請求項4に記載のデバイスであって、
前記データキューは、該データキューが予め決められた閾値となっている深さよりも大きい深さに達すると、前記データ準備完了の信号を設定する
ことを特徴とするデバイス。
【請求項8】
請求項1に記載のデバイスであって、
前記データキューは、リングバッファに格納されている
ことを特徴とするデバイス。
【請求項9】
通信媒体上で受信したメッセージを処理する通信コントローラであって、
該通信コントローラは、
前記通信媒体から受信されたメッセージを格納する受信データメモリであって、前記メッセージが、書込ポインタ位置の前記受信データメモリに書き込まれ、読込ポインタ位置の前記受信データメモリから読み込まれる、受信データメモリと、
該受信データメモリに格納されたメッセージに関連する情報を格納する複数の受信メッセージオブジェクトであって、各受信メッセージオブジェクトが前記受信データメモリに格納されたメッセージに対応している、複数の受信メッセージオブジェクトと
を備えていることを特徴とする通信コントローラ。
【請求項10】
請求項9に記載の通信コントローラであって、さらに、
前記受信データメモリにおける有効なメッセージを該有効なメッセージに対応する受信メッセージオブジェクトに関連付けるメッセージキューマネージャを備えている
ことを特徴とする通信コントローラ。
【請求項11】
請求項10に記載の通信コントローラであって、
前記有効なメッセージが前記通信媒体から受信されると、前記書込ポインタの値が、対応する受信メッセージオブジェクトにおける終了位置の値に継続的に転送される
ことを特徴とする通信コントローラ。
【請求項12】
請求項11に記載の通信コントローラであって、
前記受信データメモリは、前記読込ポインタが前記有効な受信メッセージオブジェクトにおける前記終了位置の値と同一の値を有するときに、前記有効なメッセージに対応する前記受信メッセージオブジェクトにアンダーフロー属性を設定する
ことを特徴とする通信コントローラ。
【請求項13】
請求項9に記載の通信コントローラであって、
前記受信データメモリは、該受信データメモリが容量限度に近づいたときに、全ての受信メッセージオブジェクトにデータ準備完了属性を設定する
ことを特徴とする通信コントローラ。
【請求項14】
請求項9に記載の通信コントローラであって、
前記書込ポインタ及び前記読込ポインタは、読込処理中及び書込処理中に記憶位置を変更し、先入れ先出し(FIFO)キューとして前記データキューを実行する
ことを特徴とする通信コントローラ。
【請求項15】
プロセス制御ネットワーク上のデバイスによって受信されたメッセージを処理する方法であって、
該方法は、
前記プロセス制御ネットワークからメッセージを受信することと、
前記メッセージに関連する情報を格納する受信メッセージオブジェクトを更新することと、
データキューを格納する受信データメモリに前記メッセージを書き込むことと
を含んでいることを特徴とする方法。
【請求項16】
請求項15に記載の方法であって、
前記メッセージを書き込むことは、
受信メッセージオブジェクトキューにおける第1の取得可能な受信メッセージオブジェクトに有効フラグを設定することと、
前記受信データメモリにおける書込ポインタ位置を判定することと、
前記書込ポインタ位置で始まる前記受信データメモリに前記メッセージを書き込むことと、
前記メッセージが前記受信データメモリに書き込まれるまで前記書込ポインタ位置をインクリメントすることと
を含んでいることを特徴とする方法。
【請求項17】
請求項16に記載の方法であって、さらに、
前記受信データメモリがほぼ満杯の場合に、前記受信メッセージオブジェクトにデータ準備完了属性を設定すること
を含んでいることを特徴とする方法。
【請求項18】
請求項16に記載の方法であって、さらに、
前記プロセス制御ネットワークからメッセージを受信中に、前記受信データメモリが満杯になると、オーバーフロー属性を前記受信メッセージオブジェクトに設定すること
を含んでいることを特徴とする方法。
【請求項19】
請求項16に記載の方法であって、さらに、
前記メッセージが前記プロセス制御ネットワークから受信されると、前記書込ポインタの値を前記受信メッセージオブジェクトにおける終了位置属性に転送すること
を含んでいることを特徴とする方法。
【請求項20】
請求項15に記載の方法であって、
受信メッセージオブジェクトを更新することは、
メッセージ割込要求(IRQs)と、メッセージエラーと、メッセージ状態と、受信データメモリ情報とを含む前記受信メッセージオブジェクトに保持された複数の属性を更新すること
を含んでいることを特徴とする方法。
【請求項21】
請求項15に記載の方法であって、さらに、
前記メッセージを先入れ先出し(FIFO)の順序で中央処理装置(CPU)に供給すること
を含んでいることを特徴とする方法。
【請求項22】
請求項21に記載の方法であって、
前記メッセージをCPUに供給することは、
受信メッセージオブジェクトキューの前部に受信メッセージオブジェクトの有効フラグを設定することと、
前記受信データメモリおける読込ポインタ位置を判定することと、
前記読込ポインタで始まる前記メッセージを前記CPUに転送することと、
前記メッセージが前記CPUに転送されるまで前記読込ポインタ位置をインクリメント
することと、
前記受信メッセージオブジェクトキューから前記受信メッセージオブジェクトを削除することと
を含んでいることを特徴とする方法。
【請求項23】
請求項22に記載の方法であって、さらに、
前記読込ポインタが前記受信メッセージオブジェクトにおける終了位置属性と同一の値を有しているときに、前記受信メッセージオブジェクトにアンダーフロー属性を設定すること
を含んでいることを特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−239469(P2011−239469A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2011−167338(P2011−167338)
【出願日】平成23年7月29日(2011.7.29)
【分割の表示】特願2007−531178(P2007−531178)の分割
【原出願日】平成17年8月15日(2005.8.15)
【出願人】(594120847)フィッシャー−ローズマウント システムズ, インコーポレイテッド (231)
【Fターム(参考)】