專利名稱:網(wǎng)絡上事件發(fā)生順序的管理的制作方法
技術領域:
本發(fā)明涉及用于進程控制系統(tǒng)的現(xiàn)場儀表和其它設備中的通信控制 器。特別地,本發(fā)明是一種用于管理通信控制器中的事件發(fā)生順序的系 統(tǒng)和方法。
背景技術:
在典型的工業(yè)工廠中,采用分布式控制系統(tǒng)(DCS)來控制在工廠 執(zhí)行的許多工業(yè)進程。典型地,該工廠具有集中式控制室,該控制室具 有帶有如計算領域中已知的用戶(I/O)、盤I/0和其它外設的計算機系 統(tǒng)。與計算系統(tǒng)相連的是控制器和進程I/O子系統(tǒng)。
所述進程I/O子系統(tǒng)包括多個I/O端口 , I/O端口連接至遍及工廠的 各種現(xiàn)場設備??刂祁I域公知的現(xiàn)場設備包括各種類型的分析儀器、硅 壓力傳感器、電容性壓力傳感器、電阻性溫度探測器、熱電偶、應變計、 限位開關、通/斷幵關、流量變送器、壓力變送器、電容電平開關、磅秤、 傳感器、閥門定位器、閥門控制器、執(zhí)行器、螺線管和指示燈。如這里 所使用的,該術語"現(xiàn)場設備"涵蓋了這些設備以及在分布式控制系統(tǒng)中 執(zhí)行功能的控制領域公知的任何其它設備。
傳統(tǒng)上,模擬現(xiàn)場設備通過二線雙絞線電流環(huán)路連接至控制室,且 各設備由單獨的二線雙絞線連接至控制室。模擬現(xiàn)場設備能夠在指定范 圍內(nèi)響應或發(fā)送電信號。在典型的結(jié)構(gòu)中,通常在雙絞線的二線之間具 有大約20 — 25伏特的電壓差,而流經(jīng)環(huán)路的電流為4一20毫安。將信號 發(fā)送至控制室的模擬現(xiàn)場設備調(diào)節(jié)流經(jīng)電流環(huán)路的電流,而且該電流與 所感應的進程變量成比例。另一方面,在控制室的控制下執(zhí)行操作的模 擬現(xiàn)場設備由經(jīng)過環(huán)路的電流的強度所控制,該電流強度由受控制器所 控制的進程I/O端口調(diào)節(jié)。傳統(tǒng)的具有有源電子器件的二線模擬設備也 可以從環(huán)路接收高達40毫瓦的功率。典型地,使用四線將需要更高功率的模擬現(xiàn)場設備連接至控制室,四線中的二線向設備提供能量。正如二 線設備一樣,作為四線設備的這類設備在本領域中是已知的而且功率不 受限制。
相反,傳統(tǒng)的分散現(xiàn)場設備發(fā)送或響應二進制信號。典型地,分立
的現(xiàn)場設備以24伏特信號(或直流或交流)、110或240伏特交流信號 或5伏特直流信號運行。當然,可以設計分立設備,使其根據(jù)特殊控制
環(huán)境所需的任何電力規(guī)范而運行。分立輸入現(xiàn)場設備僅僅是一個開關, 其接通或中斷與控制室的連接,而分立輸出現(xiàn)場設備將根據(jù)來自控制室 的信號的存在或不存在而迸行操作。
從歷史上看,大多數(shù)傳統(tǒng)的現(xiàn)場設備已具有直接與現(xiàn)場設備所執(zhí)行 的主要功能相關聯(lián)的信號輸入或信號輸出。例如,由傳統(tǒng)的模擬電阻溫 度傳感器所實現(xiàn)的唯一功能是通過調(diào)節(jié)流經(jīng)二線雙絞線的電流來傳送溫 度,而由傳統(tǒng)的模擬閥門定位器所實現(xiàn)的唯一功能是基于流經(jīng)二線雙絞 線的電流強度在打開和關閉位置之間定位閥門。
最近,將數(shù)字數(shù)據(jù)添加到電流環(huán)路上的混合系統(tǒng)已經(jīng)用在分布式控 制系統(tǒng)中??刂萍夹g領域中已知的一種混合系統(tǒng)是高速可尋址遠程傳感
器(HART),其與Be1 202調(diào)制解調(diào)器的規(guī)范類似。該HART系統(tǒng)使 用電流環(huán)路中的電流強度來感測進程變量(如在傳統(tǒng)系統(tǒng)中一樣),并 且還將數(shù)字載波信號添加到電流環(huán)路信號上。所述載波信號相對較慢, 并且可以提供每秒大約2 — 3次更新的速率的二級進程變量的更新。通 常,數(shù)字載波信號用于發(fā)送二級和診斷信息,而不用于實現(xiàn)現(xiàn)場設備的 主控功能。載波信號上所提供的信息包括例如二級進程變量、診斷信息 (包括傳感器診斷、設備診斷、接線診斷和進程診斷)、運行溫度、傳 感器溫度、校準信息、設備ID號、結(jié)構(gòu)材料、配置或編程信息等等。因 此,單個混合現(xiàn)場設備可以具有多個輸入和輸出變量,并且可以實現(xiàn)多 種功能。
HART是產(chǎn)業(yè)標準的非專有系統(tǒng)。然而,它相對較慢。產(chǎn)業(yè)中其它 企業(yè)已經(jīng)開發(fā)了更快的專有數(shù)字發(fā)送方案,但是通常競爭者不能使用或 無法獲得這些方案。
最近,由美國儀表協(xié)會(ISA)規(guī)定了一種更新的控制協(xié)議。這種 新協(xié)議一般被稱為現(xiàn)場總線(Fieldbus)?,F(xiàn)場總線是一種多分支串行數(shù)字雙向通信協(xié)議,旨在將分布式控制系統(tǒng)中的現(xiàn)場儀器和例如監(jiān)視和仿 真單元的其它進程設備連接?,F(xiàn)場總線實現(xiàn)了比之前的進程控制環(huán)路方 法更強的數(shù)字通信,同時保持了向與現(xiàn)場總線環(huán)路相連的進程設備供電 并同時滿足固有的安全要求的能力。
兩種合理標準化的工業(yè)現(xiàn)場總線協(xié)議是基礎現(xiàn)場總線(Foundation Fiddbus)和現(xiàn)場總線(Profibus)?,F(xiàn)場總線協(xié)議的物理層由美國標準 ISA-S50.02-1992的儀表協(xié)會規(guī)定,其草案2擴展發(fā)表于1995年。該現(xiàn) 場總線協(xié)議規(guī)定了兩個子協(xié)議。HI現(xiàn)場總線網(wǎng)絡以高達每秒31.25千比 特(Kbps)的速率發(fā)送數(shù)據(jù)并向與該網(wǎng)絡相連的現(xiàn)場設備供電。HI物理 層子協(xié)議由1992年9月批準的ISA標準第二部分的11條所規(guī)定。H2 現(xiàn)場總線網(wǎng)絡以高達每秒2.5兆比特(Mbps)的速率發(fā)送數(shù)據(jù),但是不 向與該網(wǎng)絡相連的現(xiàn)場設備供電,而且具有冗余的傳輸介質(zhì)。
現(xiàn)場總線具有用于對海量進程數(shù)據(jù)進行數(shù)字通信的顯著性能。因此, 不斷地需要幵發(fā)能夠?qū)F(xiàn)場總線通信效力最大化的進程控制設備。
發(fā)明內(nèi)容
本發(fā)明是一種用在設備中的通信控制器,用于保持從通信介質(zhì)接收 到的和發(fā)送到通信介質(zhì)的事件的發(fā)生順序。所述通信控制器包括發(fā)生順 序標識(OOO一ID)計數(shù)器和事件隊列存儲器。事件隊列存儲器依次存 儲由通信控制器所處理的每個事件的事件類型標識符。所述OOO—ID計 數(shù)器提供000—ID以與每個事件類型標識符相關聯(lián)。
在優(yōu)選實施例中,通信控制器還包括多個定時器000—ID寄存器。 在通信控制器中,每個定時器OOO一ID寄存器與發(fā)生順序(000)定時 器相關聯(lián)。當000定時器之一期滿時,來自OOO一ID計數(shù)器的000—ID 當前值被存儲在其相關的定時器OOO一ID寄存器中。通過將事件的 000—ID值與定時器OOO一ID寄存器中所存儲的OOO一ID進行比較,軟 件確定事件和000定時器的期滿之間的發(fā)生順序。
圖1是通信介質(zhì)分段上設備之間的數(shù)字通信的進程控制系統(tǒng)的示意圖。圖2示出了圖1的進程控制系統(tǒng)的設備之間的通信的消息格式。 圖3是進程控制系統(tǒng)的設備的方框圖。
圖4是圖3的設備的通信控制器的功能方框圖。
圖5是用于處理通信控制器所接收或發(fā)送的消息的接收/發(fā)送事件
管理器的功能方框圖。
圖6是用于保持通信控制器中事件發(fā)生順序的事件管理器的功能方 框圖。
具體實施例方式
進程控制系統(tǒng)概況
本發(fā)明涉及用于進程控制系統(tǒng)的現(xiàn)場裝置和其它設備中的通信控制 器。所述通信控制器的目的是執(zhí)行消息鏈路層處理和定時器管理的實際 部分,并因此釋放應用處理器或CPU以執(zhí)行其它功能。為了進行詳細描 述,將在使用基礎現(xiàn)場總線通信協(xié)議的系統(tǒng)的背景下描述所述通信控制 器,雖然它具有對于基于分組的通信協(xié)議的一般適用性。
所述現(xiàn)場總線物理層定義了以物理層協(xié)議數(shù)據(jù)單元(PhPDU)的格 式對通信協(xié)議數(shù)據(jù)進行發(fā)送和接收的物理裝置的電子特性。此外,現(xiàn)場 總線物理層規(guī)定符號編碼、消息幀化和錯誤檢測方法。ISA現(xiàn)場總線標 準定義了三種信號收發(fā)的速度和兩種連接模式。為了對此進行描述,將 在ISA S50.02標準第2部第11條中所定義的HI物理層的背景下描述本 發(fā)明。該條涵蓋31.25Kbps、電壓模式、有線介質(zhì)和低功率選項。該選 項使得連接至通信介質(zhì)的設備能夠從通信介質(zhì)接收它的操作功率。所述 物理層能夠符合對于危險環(huán)境的內(nèi)部安全要求。所述協(xié)議根據(jù)由標準定 義的電壓和電路限制,在低等級雙絞線上運行并支持多個設備。
圖1示出了一種典型的進程控制系統(tǒng)10,包括分段12、電源14和 五個設備鏈路活動調(diào)度器(LAS)設備20、鏈路主設備(LM) 22以 及基礎設備24、 26和28。分段12可以在單獨一對線路上支持多達32 個設備。典型地,基于環(huán)路執(zhí)行速度、功率和內(nèi)部安全要求,分段12 將具有4一16個設備。LAS設備20為分段12上的設備之間的所有通信保持中央調(diào)度。通 過將強制數(shù)據(jù)(CD)數(shù)據(jù)鏈路協(xié)議數(shù)據(jù)單元(DLPDU)發(fā)送至每個設 備以發(fā)送后周期數(shù)據(jù),然后調(diào)度每個設備發(fā)送后周期數(shù)據(jù),LAS設備20 改進了整體通信的可靠性。LAS設備20用作分段12上的數(shù)據(jù)鏈路時間 (DL — time)的本地來源。DLPDU是通過分段12傳送的PhPDU消息 的數(shù)據(jù)內(nèi)容。
LM設備22被配置成如果LAS設備20發(fā)生故障或變得不可操作, 則承擔LAS設備20的責任。雖然圖1只示出了 LM設備22,但是在分 段上可存在兩個以上鏈路控制設備。這使得下列情形成為可能,如果鏈 路活動調(diào)度器和第一鏈路主設備二者均發(fā)生故障,則第二鏈路主設備可 以承擔鏈路活動調(diào)度器的責任。在鏈路活動調(diào)度器發(fā)生故障之后,鏈路 主設備承擔鏈路活動調(diào)度器的功能。
每個設備都具有被稱為V (TN)的唯一地址,它代表本地節(jié)點ID (此節(jié)點)。在圖l所示的例子中,LAS設備20具有地址V (TN) 二 20; LM設備22具有地址V (TN) 二22;基礎設備24具有地址V (TN) =A5;基礎設備26具有地址V (TN) =F3;以及基礎設備28具有地址 V (TN) =F5。
LAS設備20將傳遞令牌(PT)和探測節(jié)點(PN)消息發(fā)送至分段 12上的所有設備。其它設備(LAS設備22和基礎設備24、 26、 28)中 的每一個適當?shù)貙⒎祷亓钆?RT)和探測響應(PR)消息發(fā)回至LAS 設備20。
每個基礎設備24、 26、 28只需要査看其自己的由LAS設備20發(fā)送 的PT和PN消息。PT和PN消息具有編碼在DLPDU的第二字節(jié)中的指 定地址(DA) 。 LAS設備20向分段12上的所有設備一次發(fā)送一個記號 (PT)或探測一個節(jié)點(PN)。
如果在基礎設備24、 26或28接收到帶有與設備的唯一地址相等的 指定地址(DA=V (TN))的PT消息,則它將向LAS設備20反饋RT 消息。如果基礎設備24、 26或28接收具有DA=V (TN)的PN DLPDU, 則需要它反饋PR消息。
從LAS 20發(fā)送PT和PN消息以及向LAS 20發(fā)送RT和PR消息在 分段12上創(chuàng)建了若千消息,特定的基礎設備24、 26、 28并不需要接收
9這些消息并對其采取行動。每個基礎設備24、 26、 28只需要響應于尋址 到該特定設備的PT和PN消息。持續(xù)地受到來自LAS 20的尋址到其它 設備的PT和PN消息以及來自其它設備的尋址到LAS設備20的RT和 PR消息的干擾,會產(chǎn)生過度的處理時間來解決這些"多余中斷"。利用基 礎設備24、 26和28, DLPDU過濾可以用于減少基礎設備必須處理的中 斷的數(shù)量。另一方面,LAS設備20必須處理分段12上的每個消息。
分段12上的所有設備將數(shù)據(jù)作為曼徹斯特編碼基帶信號發(fā)送到分 段12上。由于曼徹斯特編碼,"0"和"1"分別表示比特周期中間發(fā)生的從 低到高和從高到低的轉(zhuǎn)換。對于現(xiàn)場總線,標稱比特時間是32微秒 (fisec),轉(zhuǎn)換以16^ec的頻率發(fā)生。曼徹斯特編碼規(guī)則已經(jīng)被擴大至 包括兩種附加符號,即非數(shù)據(jù)加(N+)和非數(shù)據(jù)減(N—),其中在比 特周期過程中不發(fā)生轉(zhuǎn)換,而且曼徹斯特編碼基帶信號保持高(N+) 或低(N—)。
消息格式
圖2示出了用于在分段12上發(fā)送消息的物理層協(xié)議單元(PhPDU) 的格式。PhPDU包括前同步、開始分隔符(SD)、數(shù)據(jù)鏈路協(xié)議數(shù)據(jù)單 元(DLPDU)和結(jié)束分隔符(ED)。所述前同步是PhPDU消息的前面 若干比特?,F(xiàn)場總線規(guī)范允許l一8個字節(jié)的前同步。接收消息的設備使 用前同步,以與輸入的消息同步。如圖2所示,前同步的首字節(jié)序列是 10101010。
開始分隔符(SD)緊接著前同步。這里每個消息有一個SD?,F(xiàn)場 總線規(guī)范要求SD具有非字符數(shù)據(jù)(N +和N—),其總是以互補對的方 式出現(xiàn)在SD消息中。此編碼方案使得SD唯一并且不可能與消息的數(shù)據(jù) 部分(DLPDU)混淆。圖2中所示SD的序列為1 N+N-1 0N-N+0。
DLPDU是長度可變的消息。它以幀控制(FC)字節(jié)作為第一字節(jié) 以及以幀校驗序列(FCS)校驗和作為其最后兩個字節(jié)。DLPDU的長度 可變,最小是三個字節(jié)(在RT消息的情況下),大到例如大約300字 節(jié)的超時傳輸(jabber)限制。
結(jié)束分隔符(ED)在DLPDU之后。它表示在分段12上的發(fā)送PhPDU 消息的最后字節(jié)。類似于SD, ED包括呈互補對的非字符數(shù)據(jù)。這個編碼方案使得ED唯一并且不可能與DLPDU混淆。圖2中所示結(jié)束分隔 符的序列為1 N+ N- N+ N- 1 0 1 。
圖2還示出了載波檢測信號。載波檢測信號的目的是指示何時(a) 分段12上存在輸入的PhPDU消息,或(b)設備正在將消息發(fā)送到分段 12上。
發(fā)送開始(SOT)發(fā)生在這樣的時刻發(fā)送使能(TxE)變得有效, 即當PhPDU的前同步被首先提供給分段12時。
活動開始(SOA)發(fā)生在載波檢測信號變得有效而且已經(jīng)穩(wěn)定了至 少一個比特時間或兩個比特時間(大約16 — 31psec)之后。這個時間取 決于載波檢測相對于接收消息的設備的內(nèi)部時鐘何時變得有效。這使得 設備的通信控制器可以忽略在前同步的前端十分容易發(fā)生的噪音干擾。 附加時間用于與比特邊界同步,以消除分段12上的短噪聲脈沖被誤譯為 有效的可能。對于發(fā)送消息,在發(fā)送使能變得有效之后發(fā)生SOA (即 PhPDU的前同步被提供給分段12)。
消息開始(SOM)發(fā)生在針對接收消息檢測到FC字節(jié)時的第一比 特的幵始處。
SOM—xmt是消息發(fā)送開始,其發(fā)生在針對發(fā)送消息檢測到FC字節(jié) 時的第一比特的開始處。
SOMf是所接收已過濾的DLPDU的SOM。這發(fā)生在當設備中的通 信控制器已經(jīng)檢測到足夠的信息以確定過濾輸入消息的時候。
消息結(jié)束(EOM)發(fā)生在接收消息中遇到的ED的最后比特的結(jié)尾。 發(fā)送結(jié)束(EOT)發(fā)生在發(fā)送消息的ED的最后比特的結(jié)尾。
有效結(jié)束(EOA)發(fā)生在載波檢測已經(jīng)變得無效的時候。發(fā)送DLPDU 和接收DLPDU 二者均發(fā)生EOA。
設備結(jié)構(gòu)
圖3示出了基礎設備24的通信部分的方框圖,其表示每一個設備 20 — 28中的結(jié)構(gòu)。基礎設備24包括中央處理器(CPU) 30、隨機存取 存儲器(RAM) 32、閃存34、通信控制器36和媒體連接單元(MAU) 38。在圖3所示的實施例中,CPU 30是微處理器,例如摩托羅拉 68LC302、摩托羅拉Mcore2075、摩托羅拉PowerPC 850、 Atmel Thumb 處理器AT91M40800和其它。CPU30是8比特或更高的處理器。
在圖3所示的實施例中,通信控制器36是特殊應用集成電路 (ASIC),其作為MAU38和CPU30之間的接口工作。它向連接至現(xiàn) 場總線分段12的外部模擬電路發(fā)送和從連接至現(xiàn)場總線分段12的外部 模擬電路接收已編程的曼徹斯特數(shù)據(jù)。在從MAU38接收到串行數(shù)據(jù)之 后,通信控制器36對數(shù)據(jù)解碼,將數(shù)據(jù)形成為字節(jié),去掉前同步、SD 和ED (和可選地FCS字節(jié)),并為鏈路層提供消息數(shù)據(jù)以供讀取。對 于數(shù)據(jù)發(fā)送,通信控制器36從鏈路層接收DLPDU數(shù)據(jù)的字節(jié),并添加 前同步、SD,可選地產(chǎn)生FCS,以及添加ED。接著通信控制器36串行 形成己編碼的曼徹斯特數(shù)據(jù),將所述數(shù)據(jù)發(fā)送至MAU38以供在現(xiàn)場總 線分段12上發(fā)送。
通過下列四種信號提供通信控制器36和MAU38之間的通信RxS、 RxA、 TxS、 TxE。 RxS是所接收的曼徹斯特編碼串行數(shù)據(jù)。RxA是接收 數(shù)據(jù)的載波檢測信號。TxS是發(fā)送的已編碼串行數(shù)據(jù)。TxE是發(fā)送使能 信號。
在本發(fā)明的其它實施例中,可以在具有CPU 30的公共集成電路上 形成通信控制器36。而且,在有些實施例中,RAM32和閃存34也可以 和CPU 30合并。在LAS設備20的情況下,CPU 30、 RAM 32和閃存 34可以是進程控制系統(tǒng)10的主計算系統(tǒng)的一部分。
MAU38向現(xiàn)場總線分段12提供網(wǎng)絡連接。MAU38可以是集成電 路,或者是可用于形成MAU38的分立組件。
通信控制器36
圖4是通信控制器36的功能方框圖。在此實施例中,通信控制器 36包括反跳電路42、數(shù)字鎖相環(huán)(PLL) 44、前端狀態(tài)機46、接收消息 過濾48、接收先入先出(FIFO)存儲器50、發(fā)送狀態(tài)機52、發(fā)送FIFO 存儲器54、發(fā)送驅(qū)動器電路56、接收/發(fā)送事件管理器58、寄存器60、 時鐘生成電路62、振蕩器64、定時器68和CPU接口電路70。
當MAU 38檢測到輸入消息時,在RxA輸入處向通信控制器36提 供載波檢測信號,而且在RxS輸入處提供輸入的異步曼徹斯特數(shù)據(jù)。將
12RxA和RxS輸入提供給前端狀態(tài)機46。數(shù)字PLL 44從輸入的串行曼徹 斯特編碼數(shù)據(jù)中再生和重建時鐘。然后將此重建的時鐘用于對前端狀態(tài)
機46計時。
前端狀態(tài)機46檢測輸入的串行比特流RxS。它去掉前同步、SD和 ED,并將DLPDU存儲至接收FIFO存儲器50中。前端狀態(tài)機46和接 收消息過濾48 —起可以被配置用于濾除特殊幀控制,并加上尋址到其它 設備的探測節(jié)點(PN)及傳遞令牌(PT)。前端狀態(tài)機46跟蹤己經(jīng)被 寫入接收FIFO存儲器50中的字節(jié)數(shù)量。在每個消息的結(jié)尾處自動驗證 FCS,并且可選地可以將FCS存儲至接收FIFO存儲器50中。
前端狀態(tài)機46還提供表示它已經(jīng)檢測的特殊事件的信號。這些包括 SOM、 SOMf、 EOM、 SOA和EOA事件脈沖。
當RxA鏈路變得有效時前端狀態(tài)機46被激活。然后前端狀態(tài)機46 與前同步字段的沿同步,并將RxS信號的曼徹斯特編碼數(shù)據(jù)解碼。SOA 事件指示前端狀態(tài)機46已經(jīng)啟動。
在檢測到前同步之后,前端狀態(tài)機46等待開始分隔符(SD)序列。 在已經(jīng)檢測到SD之后,前端狀態(tài)機46將串行數(shù)據(jù)流轉(zhuǎn)換為八位組,并 以8比特字節(jié)將其寫入接收FIFO存儲器50。前端狀態(tài)機46繼續(xù)將數(shù)據(jù) 的新八位組寫入接收FIFO存儲器50中,直到檢測到結(jié)束分隔符(ED), 或直到接收FIFO存儲器50滿為止。
當已經(jīng)檢測到ED時,前端狀態(tài)機46等候RxA線路變得無效,而 這是由EOA事件指示的。
當RxA線路無效時,前端狀態(tài)機46返回其初始狀態(tài)。它在現(xiàn)場總 線分段12上的下一次有效之前(即在RxA處再次提供載波檢測信號之 前)保持在此初始狀態(tài)中。
過濾電路用于基礎設備,以減少加載在對于設備不重要的消息上的 IRQ。相反地,配置作為LAS的設備必須接收分段上的所有消息,并因 此必然過濾被禁止。當過濾被禁止時,所有接收到的消息將被存儲在接 收FIFO存儲器50中,并將被傳遞至寄存器60然后至CPU 30。 SOMf 是對于接收到的已過濾DLPDU的消息開始信號。它發(fā)生在前端狀態(tài)機 46已經(jīng)確定已經(jīng)對接收消息檢測到足夠的信息以確定輸入的消息將被 過濾的時候。由于可以過濾,則不將被過濾的消息存儲在接收FIFO存儲器50中。 對于己過濾的消息,將不產(chǎn)生SOMf,因此將不發(fā)生事件或IRQ。
已過濾的消息的例子有返回令牌(RT)、空閑、請求間隔(RI), 并且總是丟棄探測響應(PR) DLPDU消息。根據(jù)幀控制(FC)字節(jié)來 識別這些消息。如果消息中的目標地址與設備地址匹配,則接收傳遞令 牌(PT)和探測節(jié)點(PN)消息。如果消息中的目標地址與設備地址不 匹配,則丟棄PT和PN消息。
基于FC字節(jié)和根據(jù)目標地址來過濾消息字節(jié)的能力通過限制CPU 30必須處理的中斷請求(IRQ)的數(shù)量,減少了軟件中斷的加載。
前端狀態(tài)機46和接收FIFO存儲器50用于解析來自MAU 38的串 行數(shù)據(jù)幀。CPU 30從接收FIFO存儲器50讀取數(shù)據(jù),并將其放置在它 的本地存儲器空間以對接收DLPDU進行解碼。
接收FIFO存儲器50具有8比特寬的63字節(jié)。接收FIFO存儲器 50將存儲多達3個完整的接收消息的所有DLPDU字節(jié)(總體多達63 字節(jié))。前端狀態(tài)機46將來自己過濾RxS信號的串聯(lián)數(shù)據(jù)流解碼,并 將其轉(zhuǎn)換為8比特并行格式字節(jié)。在形成該字節(jié)之后,前端狀態(tài)機46 創(chuàng)建寫入脈沖,其將已編碼數(shù)據(jù)存儲在寫入指針所指向的位置。在寫入 操作完成之后,使寫入指針遞增以存儲下一個DLPDU字節(jié)。
CPU 30通過讀取指針與接收FIFO存儲器50連接。任何來自寄存 器60的接收FIFO寄存器(其包含實際的DLPDU數(shù)據(jù))的讀取將來自 接收FIFO存儲器50的8比特數(shù)據(jù)立即放置在供CPU 30讀取的數(shù)據(jù)總 線上。在讀取操作完成之后,使讀取指針遞增。在接收FIFO存儲器50 為空之前可以繼續(xù)上述操作。
為了防止在接收FIFO存儲器50中發(fā)生上溢情況,在寄存器60中 有這樣一個寄存器,其可以在接收FIFO存儲器50接近滿的情況下產(chǎn)生 IRQ。用于產(chǎn)生IRQ的閾值是可配置的。
發(fā)送狀態(tài)機52讀取將從發(fā)送FIFO存儲器54發(fā)送來的DLPDU數(shù)據(jù)。 自動插入前同步、SD和ED。為了啟動發(fā)送狀態(tài)機52,可選地需要激活 interPDU事件觸發(fā)器或下一調(diào)度事件觸發(fā)器,以開始發(fā)送操作。發(fā)送狀 態(tài)機52跟蹤已經(jīng)發(fā)送的字節(jié)的數(shù)量。如果存在下溢或發(fā)送計數(shù)破壞(violation),則將指示錯誤狀況。可選地,可以自動將FCS作為DLPDU 的最后兩個字節(jié)進行發(fā)送。
發(fā)送狀態(tài)機52對通過TxS線路上的接口電路70提供給MAU 38的 曼徹斯特串行數(shù)據(jù)進行編碼,以提供在現(xiàn)場總線分段12上。發(fā)送狀態(tài)機 52還在發(fā)送第一前同步的第一比特的時刻維護發(fā)送使能(TxE)線路, 直到ED的最后字節(jié)出現(xiàn)。當發(fā)送狀態(tài)機52維護TxE線路時,它還產(chǎn)生 發(fā)送開始(SOT)事件信號,并在TxE線路返回至無效時產(chǎn)生發(fā)送結(jié)束 (EOT)事件信號。
發(fā)送FIFO存儲器54將存儲待發(fā)送消息所需要的所有DLPDU字節(jié), 總體多達63字節(jié)。可以設定可配置的閾值,以在發(fā)送FIFO存儲器54 幾乎空的時候發(fā)送IRQ來通知CPU30。這樣,如果需要發(fā)送多于63字 節(jié),則通知CPU 30以便其可以向發(fā)送FIFO存儲器54添加更多的數(shù)據(jù)。 在所有DLPDU字節(jié)被寫入之前繼續(xù)上述操作。CPU 30使用寫入指針來 向發(fā)送FIFO存儲器54寫入,而發(fā)送狀態(tài)機52使用讀取指針從發(fā)送FIFO 存儲器54讀取字節(jié)。
通信控制器36作用于事件,并必須能夠處理多個事件的發(fā)生。事件 的例子包括SOM、 EOM、或接收消息的EOA或發(fā)送消息的EOT。接收 /發(fā)送事件管理器58管理總體上多達3個接收消息和一個發(fā)送消息所發(fā) 生的所有事件。
如圖4所示,接收/發(fā)送管理器58包括三個接收消息對象,標為 rcvmsgl、 rcvmsg2禾口 rcvmsg3, 以及一個發(fā)送消息X寸象,標為xmtmsg。 此外,接收/發(fā)送管理器58包括消息隊列管理器(MsgQmngr) 80、事件 管理器(EventMngr) 82、發(fā)送管理器(xmtmngr) 84和事件MUX86。
接收FIFO存儲器50能夠存儲多達三個完整的接收消息的DLPDU 字節(jié)。這三個消息的每一個具有相應的對象,即rcvmsgl、 rcvmsg2和 rcvmsg3。每個對象包含其相應接收消息發(fā)生的所有IRQ的狀態(tài)、消息 錯誤和時間記錄。這些信息構(gòu)成該消息的事件數(shù)據(jù)。
將發(fā)送消息發(fā)生的所有IRQ的狀態(tài)、消息錯誤和時間記錄存儲在 xmtmsg對象中。所存儲的信息構(gòu)成發(fā)送消息的事件數(shù)據(jù)。
MsgQmngr 80控制三個接收消息的選擇和使能。 一次只能有一個 rcvmsg對象是有效的。MsgQmngr 80使事件與有效的接收消息相關聯(lián)。在CPU 30已確認其它三個消息之前接收到第四個消息的情況下,
MsgQmngr 80在讀取或確認事件數(shù)據(jù)之前,禁止接收其它任何消息。 EventMngr 82管理事件發(fā)生的順序。隨著事件發(fā)生,EventMngr 82給每 個事件分配一個發(fā)生順序標識(OOO一ID)。這使得CPU30能夠按照事 件發(fā)生的順序一次讀取一個事件。CPU 30必須在每個事件發(fā)生時確認每 個事件。在已經(jīng)確認第一事件之后,接下來的事件將就緒以供CPU 30 讀取。
Xmtmngr 84監(jiān)視interPDU觸發(fā)器(InterPDU—trig)和下一調(diào)度事 件觸發(fā)器,并將發(fā)送觸發(fā)器命令(Xmt一Tdg一Cmd)引入到發(fā)送狀態(tài)機 52以開始發(fā)送下一個消息。
通信控制器36包括寄存器60。這些標為REG00 — REG3F的寄存器 可以由CPU30讀取和寫入。通過寄存器60還可以操縱中斷(IRQ)。
時鐘生成電路62接收外部時鐘,并且或者使用該時鐘或者使用來自 其內(nèi)部振蕩器64的時鐘,來生成通信控制器36所需的所有時鐘信號。
時鐘生成電路62優(yōu)選地具有及時地調(diào)整其節(jié)點定時器和其八位組 定時器時鐘速率的能力。這使得通信控制器能夠使其節(jié)點時間與鏈路地 址調(diào)度器(LAS 20)同步。八位組時間用于內(nèi)部消息的定時,而節(jié)點時 間用于在現(xiàn)場總線分段12上共享公共的時間感。
定時器68分為兩組,代表不同的時間感。被稱為分段定時器的第一 組定時器在來自CPU30的軟件控制下,基于由時鐘生成電路62產(chǎn)生的 可變的時鐘速率而運行。被稱為消息定時器的第二組定時器以固定速率 時鐘運行。
在通信控制器36中存在兩個分段定時器。第一分段定時器是節(jié)點定 時器,其具有31.25)isec (32kHz)的時鐘報時速率。節(jié)點定時器用于實 現(xiàn)下一功能塊執(zhí)行時間、鏈路調(diào)度時間V (LST)和數(shù)據(jù)鏈路時間(DL —Time)。
第二分段定時器是八位組定時器,其具有2psec (500kHz)的時鐘 報時速率。八位組定時器用于下一調(diào)度事件觸發(fā)器(其與發(fā)送狀態(tài)機52 連接以便在特定時間發(fā)送消息)。當調(diào)整時鐘速率時,節(jié)點和八位組定 時器將以相同的速率相互跟蹤。這是因為驅(qū)動節(jié)點定時器和八位組定時 器的時鐘信號是由公共可變時鐘得到的。基于現(xiàn)場總線消息事件(發(fā)送和接收)而開始和停止消息定時器。
消息定時器包括無效定時器、interPDU延遲定時器、接收應答定時器、 發(fā)送應答定時器和代表令牌(delegated token)恢復定時器。
無效定時器是遞減計數(shù)器。它用于測量兩個PhPDU之間的空閑時 間。無效定時器作用于已過濾的和未過濾的接收消息以及現(xiàn)場總線分段 12上的任意發(fā)送消息。當被命令開始時,無效定時器每16psec遞減一次。 無效定時器的開始點是根據(jù)載入寄存器60之一的可配置預加載設置點 確定的。通過與接收或發(fā)送消息相關的事件可以取消或停止無效定時器 的遞減。如果定時器達到0或者期滿,將生成IRQ。在確認IRQ之前無 效定時器將保持為0。如果IRQ保持為高,則在確認IRQ之前將不會發(fā) 生影響無效定時器的附加消息事件。
interPDU延遲定時器是遞增計數(shù)器。它用于與V (MID)閾值寄存 器結(jié)合以實現(xiàn)現(xiàn)場總線V (MID)最小—interPDU延遲,其確保在發(fā)送 或接收消息之間的無傳輸?shù)淖钚〕掷m(xù)時間(或間隙時間)。interPDU定 時器受到現(xiàn)場總線分段上的已過濾的和未過濾的接收消息、以及任意發(fā) 送消息的作用。當不存在現(xiàn)場總線活動時,interPDU定時器將持續(xù)遞增。 如果計數(shù)值等于或超過寄存器60中所存儲的預定值,則interPDU—trig 信號將變得有效。該信號用于確定已經(jīng)滿足了 interPDU延遲時間。信號 與xmtmngr 84相連以給出發(fā)送DLPDU可以開始的命令。
接收應答定時器是遞減計數(shù)器。它用于訂閱設備以監(jiān)視對強制數(shù)據(jù) (CD) DLPDU的及時響應。它還由設備用于在設備進入鏈路上時監(jiān)視 其自己的地址。當被命令開始時,接收應答定時器每16網(wǎng)ec遞減一次。 接收應答定時器的開始點是根據(jù)載入寄存器60之一的可配置預加載16 比特設置點確定的。通過SOM或SOT事件,可以取消或停止接收應答 定時器的遞減。如果接收應答定時器達到O或者期滿,將生成IRQ。接 收應答定時器需要啟用IRQ以生成IRQ。在確認IRQ之前接收應答定時 器將保持為0。如果IRQ保持為高,則在確認IRQ之前將不會發(fā)生會影 響接收應答定時器的附加消息事件。
發(fā)送應答定時器是遞減計數(shù)器。它使得設備能夠在發(fā)送若干DLPDU (例如強制數(shù)據(jù)、傳遞令牌)之一后監(jiān)視及時響應。當被命令開始時, 發(fā)送應答定時器每16psec遞減一次。發(fā)送應答定時器的開始點是根據(jù)載入寄存器60之一的可配置預加載設置點確定的。通過除了探測節(jié)點(PN)
外的任何發(fā)送DLPDU的SOM事件或SOT事件,可以取消或停止發(fā)送 應答定時器的遞減。如果發(fā)送應答定時器達到O或者期滿,將生成IRQ。 在確認IRQ之前發(fā)送應答定時器將保持為0。如果IRQ保持為高,則在 確認IRQ之前將不會發(fā)生會影響發(fā)送應答定時器的附加消息事件。
代表令牌恢復定時器是遞減計數(shù)器。它用于監(jiān)視從另一個設備接收 代表令牌的空閑時間。代表令牌恢復定時器作用于已過濾的和未過濾的 接收消息以及現(xiàn)場總線分段12上的任意發(fā)送消息。當被命令開始時,代 表令牌恢復定時器每16^ec遞減一次。代表令牌恢復定時器的開始點是 根據(jù)載入寄存器60之一的可配置預加載設置點確定的。通過與接收或發(fā) 送消息相關的事件,可以取消或停止代表令牌恢復定時器的遞減。如果 代表令牌恢復定時器達到O或者期滿,將生成IRQ。在確認IRQ之前發(fā) 送反饋定時器將保持為0。如果IRQ保持為高,則在確認IRQ之前將不 會發(fā)生會影響代表令牌恢復定時器的附加消息事件。
事件的發(fā)生順序管理
典型地,軟件負責響應消息接收事件和定時器期滿事件。傳統(tǒng)系統(tǒng) 中的基本困難在于在硬件中發(fā)生事件和軟件能夠意識到事件并對其進行 處理之間的時間差(即軟件等待時間(latency))。當在軟件能夠響應 之前發(fā)生兩個或更多個事件時,所述困難會進一步提高。在這種情況下, 軟件可能不能夠確定哪個事件是最先發(fā)生的。這會引起問題,因為通信 協(xié)議可以根據(jù)排序、特別是在消息接收和定時器期滿事件之間的排序, 來規(guī)定不同的活動過程。本發(fā)明允許軟件在存在軟件等待時間的情況下 識別接收消息和定時器期滿事件之間的發(fā)生順序。
圖5是用于處理由MAU 38所接收的或者從CPU 30發(fā)送的消息的 接收/發(fā)送事件管理器58的功能方框圖。接收/發(fā)送事件管理器58包括消 息隊列管理(MsgQmngr) 80、事件MUX86、已接收消息對象隊列100 和多路復用器102、 104、 106和108。 , MsgQmngr 80經(jīng)由MUX 102連 接到接收消息對象rcvmsgl、 rcvmsg2禾口 rcvmsg3。 MsgQmngr 80經(jīng)由信 號RcvMsgID (1: 0)向事件管理器82提供輸出。接收消息對象隊列100 包括用于三個標為rcvmsgl、 rcvmsg2和rcvmsg3的接收消息對象和一個 標為xmtmsg的發(fā)送消息信息對象的空間。事件管理器82向接收消息對象rcvmsgl、 rcvmsg2禾口 rcvmsg3提供當前發(fā)生川頁序標識(000—IDcur)。 事件管理器82還向事件MUX 86和MUX 104提供選擇輸入 EventMUX—sel (2: 0)。多路復用器106和108在本發(fā)明的范圍之外, 但示于圖5中以說明接收/發(fā)送事件管理器58的各個組件之間的連接。 基于來自寄存器60的寄存器Reg15的輸入,MUX 106向接收消息對象 和MUX 108提供輸出,而MUX 108的輸出向MsgQmngr 80提供輸入。 MUX 106的輸出還經(jīng)由OR門110向MsgQmngr 80提供輸入。圖5中 還示出了寄存器的一部分(Regl5—ReglF),用于存儲與有效消息的接 收和發(fā)送消息信息對象相關的事件數(shù)據(jù)。為了簡明,從圖5中略去圖4 中的接收/發(fā)送事件管理器58中所示的發(fā)送管理器84。
接收/發(fā)送事件管理器58允許CPU30依次讀取與發(fā)生的各個消息相 關聯(lián)的接收消息對象(rcvmsgl、 rcvmsg2禾口 rcvmsg3)。經(jīng)由寄存器60, 特別是在寄存器Regl5至ReglF中,CPU 30可讀取有效消息的接收消 息對象。在寄存器Reg16、 Reg 17禾H Reg 18中,MAU 38可獲得有效消 息的發(fā)送消息對象以供發(fā)送。每個接收消息對象包含消息IRQ、錯誤、 狀態(tài)分類以及與接收FIFO存儲器50有關的信息和數(shù)據(jù)。
事件管理器82管理消息事件的發(fā)生順序。當事件發(fā)生時,事件管理 器82給每個事件分配發(fā)生順序標識(000—ID)。這使得CPU 30以事 件發(fā)生的順序一次讀取一個事件。在事件發(fā)生時,CPU30必須確認每個 事件。在已經(jīng)確認第一事件之后,接下來的事件將就緒以供CPU 30讀 取。
圖6是用于管理通信控制器36中事件發(fā)生順序的事件管理器 (EventMngr) 82的功能方框圖。事件管理器82包括事件隊列先入先出 存儲器(EventQ—FIFO) 120、 000_ID計數(shù)器122、事件隊列(EventQ) 讀取指針124、 EventQ寫入指針126、 EventQ指針比較邏輯128、指針 控制邏輯130和MUX選擇邏輯132。圖6中還示出了定時器OOO—ID 寄存器140,其包括接收應答(RcvRply) OOOjD寄存器140a和代表 令牌恢復(DelgTknRcvy) OOO—ID寄存器140d。
指針控制邏輯130控制EventQ讀取指針124和EventQ寫入指針 126。只要EventQ—FIFO 120不滿,任何SOMf或EOT—IRQ事件的發(fā)生
19都將增加EventQ寫入指針126。同樣地,只要EventQ—FIFO 120不空, 任何由軟件命令的Event—Ack都將增加EventQ讀取指針124。
EventQ指針比較邏輯128接收EventQ讀取指針124和EventQ寫入 指針126的當前位置作為輸入,并輸出EventQ—empty和EventQ—full。 EventQ指針比較邏輯128確定EventQ—empty和EventQ_full信號二者的 狀態(tài)。如果EventQ讀取指針124和EventQ寫入指針126彼此相等,則 將激活EventQ一empty信號。如果EventQ讀取指針124和EventQ寫入 指針126之間的差等于7 ( "111"),則EventQ—FIFO 120為滿,并且 激活EventQ—full信號。應當注意,EventQ—FIFO 120可能從來不會變滿, 因為MsgQmngr 80將等待的接收消息事件的數(shù)量限制為3,并且一次只 能有一個發(fā)送消息事件等待決定,因此使得最多只有4個事件在 EventQ—FIFO 120中。
當通信控制器36中發(fā)生事件時(即接收或發(fā)送消息),由EventMngr 82給每個事件分配OOO—ID。當發(fā)生事件時,由OOO—ID計數(shù)器122的 值確定被分配給特定事件的OOO一ID。當給進程控制系統(tǒng)IO加電時,將 OOO—ID計數(shù)器122初始化為"000"。 000_ID計數(shù)器122增加,當事 件發(fā)生達到"lll"的值時,在事件發(fā)生之后,點000一ID計數(shù)器122返 回(即環(huán)形)至"000"。
EventQ—FIFO 120是2比特-8 FIFO存儲器,用于按照事件在通信控 制器36中發(fā)生的順序存儲每個消息的事件標識符信息。EventQ讀取指 針124和EventQ寫入指針126指向EventQ—FIFO 120中的位置,并且保 持由通信控制器36處理的事件的排序。EventQ寫入指針126的位置是 OOO—ID計數(shù)器122的當前值(000_ldcur (2: 0) ) 。 EventQ讀取指 針124的位置是要由CPU30處理的下一個事件。
當進程控制系統(tǒng)10有效時,EventMngr 82從接收消息接收NewMsg 信號(SOMf脈沖)或從發(fā)送消息接收EOT—IRQ信號。如果檢測到SOMf 信號,則將RcvMsgID (1: 0)的當前值存儲在EventQ—FIFO 120中由 EventQ寫入指針126指向的位置。隨后使OOO一ID計數(shù)器122遞增(即, 使EventQ寫入指針126前進到EventQ—FIFO 120中的下一位置)。 RcvMsgID (1:0)的值取決于在接收消息對象隊列100中可獲得的下一 接收消息對象(如由MsgQmngr 80保持)。因此,如果rcvmsgl是下一個可獲得的消息對象,則RcvMsgID (1:0)具有值"00",如果rcvmsg2 是下一個可獲得的消息對象,則RcvMsgID (1: 0)具有值"01",并且 如果rcvmsg3是下一個可獲得的消息對象,則RcvMsgID (1:0)具有 值"10"。如果出現(xiàn)EOT—IRQ信號,則將值"ll"存儲在EventQ—FIFO 120 中由EventQ寫入指針126指向的位置,并且使OOO一ID計數(shù)器122遞 增。將RcvMsgID (1: 0)的值或EOT—IRQ事件的值"11"指定為事件 標識符。
當要由軟件處理或讀取寄存器60的寄存器Regl6-ReglF中的事件 數(shù)據(jù)時,將存儲在EventQ一FIFO 120中的事件標識符和EventQ_empty 信號發(fā)送至MUX選擇邏輯132。從MUX選擇邏輯132,形成 EventMUX—sel (2: 0)信號。將所述EventMUX—sel (2: 0)信號輸出 至事件管理器82,以供事件MUX86選擇控制信號。
如果EventQ—empty信號為低(即有兩個或更多個事件排列在 EventQ—FIFO 120中),則MUX 104向Reg 15 (1: 0)提供Event—Type
(1: 0)信號。Event—Type (1:0)對于接收消息為"01",對于發(fā)送消 息為"10"。事件MUX 86還將由EventQ讀取指針124指向的OOO一ID 值多路復用到Reg 15 (6: 4)。事件MUX 86還將來自與EventMUX—sel
(2: 0)信號相對應的消息信息對象的事件數(shù)據(jù)(例如消息IRQ、錯誤 和狀態(tài)信息)多路復用到Regl6—ReglF以供軟件處理。在軟件己經(jīng)讀 取事件數(shù)據(jù)之后,由軟件向EventMngr 82提交事件確認信號(Event—Ack 脈沖)。Event—Ack信號使EventQ—FIFO 120中的EventQ讀取指針124 的位置遞增。
如果EventQ_empty信號為高,由MUX 104將"OO"多路復用至 Regl5 (h 0),向軟件指示沒有事件可供處理。事件MUX 86同時將 由EventQ讀取指針124指向的當前000_ID值多路復用至Regl5 (6: 4)。如果EventQ—FIFO 120為空(EventQ—empty二 1),則指針控制邏 輯130將防止任何其它Event—Ack信號使EventQ讀取指針124遞增。
定時器68 (如圖4所示和所述)包括與事件的先后順序相關聯(lián)的四 個定時器。這些定時器被認為是發(fā)生順序(OOO)定時器,其包括接收 應答定時器和發(fā)送應答定時器、無效定時器和代表令牌定時器。當任意 一個OOO定時器期滿時,專為該定時器生成IRQ。四個OOO定時器的定時器期滿IRQ被經(jīng)過邏輯OR門發(fā)送,而該OR門的輸出存儲在Regl5 的比特2中(如圖5所示)。因此,當沒有000定時器期滿時,在Regl5 (2)中保存"0"。當任何一個OOO定時器期滿時,在Regl5 (2)中 保存"1"。這樣,當讀取寄存器Reg15以處理EventQ—FIFO 120中的下 一個事件時,軟件能夠確定是否已經(jīng)發(fā)生定時器期滿事件。
000定時器是遞減定時器,每一個定時器都與寄存器60中的定時 器OOOJD寄存器140相關聯(lián)。特別地,接收應答定時器與Rev Reply OOO一ID寄存器140a相關聯(lián),發(fā)送應答定時器與Xmt Reply OOO—ID寄 存器140b相關聯(lián),無效定時器與無效OOO一ID寄存器140c相關聯(lián),而 且代表令牌定時器與Delg Tkn Rcvy OOO—ID寄存器140d相關聯(lián)。
當OOO定時器有效時(即遞減)',將"000"保存在與OOO定時器 相關的定時器OOO—ID寄存器的比特6至4中。如果OOO定時器期滿, 則對于已期滿的定時器發(fā)生IRQ,并且將定時器期滿時的OOO一ID計數(shù) 器122的值(OOO—IDcur (2: 0))復制到與OOO定時器相關的定時 器OOOJD寄存器的比特6至4中。例如,如果無效定時器期滿,則將 OOO—IDcur (2: 0)的值復制到無效OOO—ID寄存器140c的比特6至4 中。
如上所述,通信協(xié)議可以根據(jù)消息和定時器期滿事件之間的排序, 規(guī)定不同的活動過程。在軟件能夠響應之前發(fā)生消息事件和定時器期滿 事件二者的情況下,軟件査閱復制到已期滿定時器的定時器OOO一ID寄 存器140的OOO一ID的值以及EventQ—FIFO 120中的與消息事件相關的 OOO一ID值,以確定是消息事件還是定時器期滿事件先發(fā)生的。如果已 期滿定時器的定時器OOO—ID寄存器140的OOO—ID的值和與消息事件 相關的OOO一ID值相同,則定時器在將OOO—ID計數(shù)器122分配給消息 事件之前期滿。也就是,定時器在消息事件發(fā)生之前期滿。另一方面, 如果已期滿定時器的定時器OOO一ID寄存器140的OOO一ID的值和與消 息事件相關的OOO一ID值不相同,則定時器在將OOO一ID計數(shù)器122分 配給消息事件之后期滿。也就是,定時器在消息事件發(fā)生之后期滿。
總而言之,典型地,軟件負責響應消息接收事件和定時器期滿事件。 傳統(tǒng)系統(tǒng)中的基本困難在于硬件中發(fā)生事件和軟件能夠意識到事件并對 其進行處理之間的時間差。本發(fā)明是一種用在設備中的通信控制器,用于保持從通信介質(zhì)接收到的和發(fā)送到通信介質(zhì)的事件的發(fā)生順序。所述 通信控制器包括發(fā)生順序標識(OOO—ID)計數(shù)器和事件隊列存儲器。 事件隊列存儲器順序地存儲由通信控制器所處理的每個事件的事件類型
標識符。所述OOO一ID計數(shù)器提供OOOjD以與每個事件類型標識符相 關聯(lián)。在優(yōu)選實施例中,通信控制器還包括多個定時器OOO一ID寄存器。 在通信控制器中,每個定時器OOO一ID寄存器與發(fā)生順序(OOO)定時 器相關聯(lián)。當OOO定時器之一期滿時,將來自000_ID計數(shù)器的 000一ID當前值存儲在其相關的定時器000—ID寄存器中。然后,通過 將事件的OOO—ID值與定時器OOO一ID寄存器中所存儲的OOOjD進 行比較,軟件確定事件和OOO定時器的期滿之間的發(fā)生順序。
雖然已經(jīng)參照優(yōu)選實施例描述了本發(fā)明,但是本領域技術人員將認 識到可以在形式和細節(jié)上進行改變,而不脫離本發(fā)明的精神和范圍。
權利要求
1. 一種設備,用于在通信介質(zhì)上通信,所述設備包括介質(zhì)連接單元(MAU),用于在通信介質(zhì)上接收和發(fā)送消息;中央處理器(CPU),用于處理接收消息中所包含的數(shù)據(jù)和創(chuàng)建將包含在發(fā)送消息中的數(shù)據(jù);和通信控制器,用于連接在MAU和CPU之間,所述通信控制器用于處理從通信介質(zhì)接收的事件或發(fā)送到通信介質(zhì)的事件,并且包括發(fā)生順序標識(OOO_ID)計數(shù)器和事件隊列存儲器,所述事件隊列存儲器用于順序地存儲每個事件的事件類型標識符,所述OOO_ID計數(shù)器用于提供與每個事件類型標識符相關聯(lián)的OOO_ID。
2. 如權利要求1所述的設備,其中當從通信介質(zhì)接收到事件或向通 信介質(zhì)發(fā)送事件時,OOO一ID計數(shù)器遞增。
3. 如權利要求l所述的設備,其中通信控制器還包括 多個發(fā)生順序(000)定時器;和多個定時器OOO一ID寄存器,每個定時器OOO—ID寄存器與多個 OOO定時器之一相關,其中當OOO定時器期滿時,將來自000—ID計 數(shù)器的當前OOO—ID存儲在其相關的定時器OOOjD寄存器中。
4. 如權利要求3所述的設備,其中CPU通過將與事件相關的 OOO一ID與同期滿的O0D定時器相關的定時器OOO一ID寄存器中所存儲 的OOO一ID進行比較,確定事件和OOO定時器的期滿之間的發(fā)生順序。
5. 如權利要求3所述的設備,其中所述通信控制器還包括 寄存器,其存儲與正在由CPU處理的有效事件相關的信息,所述信息包括與有效事件相關的OOO—ID、有效事件的事件類型標識符和用于 指示多個OOO定時器之一是否已經(jīng)期滿的OOO定時器狀態(tài)比特。
6. 如權利要求3所述的設備,其中所述OOO定時器包括接收應答 定時器、發(fā)送應答定時器、無效定時器和代表令牌恢復定時器。
7. 如權利要求1所述的設備,其中所述事件包括從通信介質(zhì)接收到 消息和向通信介質(zhì)發(fā)送消息。
8. —種通信控制器,用于保持進程控制系統(tǒng)中的事件發(fā)生順序,所 述通信控制器包括先入先出(FIFO)存儲器,用于針對每個事件順序地存儲事件類型 標識符;和發(fā)生順序標識(OOOjD)計數(shù)器,用于將OOO一ID與每個事件類 型標識符相關聯(lián)。
9. 如權利要求8所述的通信控制器,其中當前OOO一ID由與 OOO一ID計數(shù)器相關的事件隊列寫入指針所保持。
10. 如權利要求9所述的通信控制器,其中所述事件隊列寫入指針 在通信控制器中發(fā)生事件時遞增。
11. 如權利要求IO所述的通信控制器,還包括 用于當FIFO存儲器為空時防止事件隊列寫入指針遞增的裝置。
12. 如權利要求8所述的通信控制器,還包括 多個發(fā)生順序(OOO)定時器;禾口多個定時器OOO一ID寄存器,每個定時器OOO一ID寄存器與多個 OOO定時器之一相關,其中,當OOO定時器期滿時,將當前OOO一ID 計數(shù)器的值存儲在其相關的定時器OOOJD寄存器中。
13. 如權利要求12所述的通信控制器,還包括 有效事件寄存器,其存儲與正由軟件處理的有效事件相關的信息,所述信息包括與有效事件相關的OOO一ID、有效事件的事件類型標識符 和用于指示多個OOO定時器之一是否已經(jīng)期滿的000定時器狀態(tài)比 特。
14. 如權利要求13所述的通信控制器,其中存儲在有效事件寄存器 中的000—ID和存儲在與已期滿000定時器相關的定時器000_ID寄 存器中的OOO—ID在有效事件和000定時器期滿之間建立發(fā)生順序。
15. 如權利要求12所述的通信控制器,其中OOO定時器包括接收 應答定時器、發(fā)送應答定時器、無效定時器和代表令牌恢復定時器。
16. —種用于確定通信設備中的事件發(fā)生順序的方法,所述方法包括將每個事件的事件類型標識符順序地存儲在先入先出(FIFO)存儲 器中;將OOO ID計數(shù)器的當前值和事件類型標識符相關聯(lián);提供多個發(fā)生順序(000)定時器和多個定時器OOOJD寄存器, 每個OOO一ID寄存器與多個OOO定時器之一相關聯(lián);當OOO一ID計數(shù)器相關的000定時器期滿時,將OOO一ID計數(shù)器 的當前值存儲在000—ID寄存器中;和將與數(shù)據(jù)相關的OOO一ID和存儲在與已期滿OOO定時器相關的定 時器OOO一ID寄存器中的OOO一ID進行比較。
17. 如權利要求16所述的方法,其中,如果與事件相關的OOO一ID 等于存儲在定時器OOO一ID寄存器中的000_ID,則000定時器是在 事件發(fā)生之前期滿的,并且如果與事件相關的OO0_ID不等于存儲在定 時器OOO一ID寄存器中的000—ID,則OOO定時器是在事件發(fā)生之后 期滿的。
18. 如權利要求16所述的方法,還包括 當通信設備中發(fā)生事件時使000—ID計數(shù)器遞增。
19. 如權利要求18所述的方法,其中使OOO一ID計數(shù)器遞增包括 使事件隊列寫入指針前進到FIFO存儲器中的下一位置。
20. 如權利要求16所述的方法,其中所述事件包括由通信設備從通 信介質(zhì)接收消息和向通信介質(zhì)發(fā)送消息。
全文摘要
進程控制系統(tǒng)中的設備在通信介質(zhì)分段上對數(shù)據(jù)消息進行通信。每個設備包括通信控制器,通信控制器保持從通信介質(zhì)接收和向通信介質(zhì)發(fā)送的事件發(fā)生順序。所述通信控制器包括發(fā)生順序標識(OOO_ID)計數(shù)器和事件隊列存儲器。事件隊列存儲器順序地存儲每個由通信控制器所處理的事件的事件類型標識符。所述OOO_ID計數(shù)器提供OOO_ID以與每個事件類型標識符相關聯(lián)。
文檔編號G06F9/44GK101438245SQ200580037693
公開日2009年5月20日 申請日期2005年8月15日 優(yōu)先權日2004年9月8日
發(fā)明者史蒂芬·A·森林斯基, 布賴恩·A·弗朗查克, 羅杰·R·本森 申請人:費希爾-羅斯蒙德系統(tǒng)公司