專利名稱:使用“控制器局域”協(xié)議的確定性串行總線通信系統(tǒng)的制作方法
總地來說,本發(fā)明有關(guān)串行總線通信系統(tǒng)。具體地,本發(fā)明有關(guān)使用控制器局域網(wǎng)絡(luò)協(xié)議(CAN)的串行總線通信系統(tǒng)的領(lǐng)域,更具體地,本發(fā)明有關(guān)一種使用CAN協(xié)議提供一個(gè)通信總線上的節(jié)點(diǎn)之間及一個(gè)節(jié)點(diǎn)中的功能塊之間的實(shí)時(shí)數(shù)據(jù)的確定性通信的方法。
數(shù)據(jù)總線通信系統(tǒng)被用于無數(shù)應(yīng)用場合中。尤其是在工業(yè)過程的控制和操作的場合(統(tǒng)稱為過程控制工業(yè))中,需要多節(jié)點(diǎn)間的數(shù)據(jù)傳輸。過程控制工業(yè)要求多路傳感器,例如流量計(jì),和多路控制單元,例如閥門之間的數(shù)據(jù)通信。此外,傳感器和控制單元共同稱為儀器或測試儀器。一般,通地測量被處理材料的某些特性來監(jiān)視并控制連續(xù)的過程,由被測特性推斷該過程的一個(gè)狀態(tài)或情況,并生成控制信號,該信號控制諸如泵,傳送帶或閥之類的設(shè)備以使過程保持在一個(gè)指定的操作范圍內(nèi)。所完成產(chǎn)品的質(zhì)量,以及過程設(shè)備的安全性,是由過程自始至終被很好地控制所決定的。
過程控制設(shè)備中的一些測量儀表生成要被傳送給一個(gè)中央控制系統(tǒng)的數(shù)據(jù)??刂葡到y(tǒng)處理來自不同儀器的數(shù)據(jù)并向控制元件發(fā)送控制信號。一個(gè)控制元件可能是一個(gè),例如,閥,它根據(jù)控制系統(tǒng)生成的一個(gè)控制信號而打開或閉合。一個(gè)給定的過程設(shè)備的所有儀器和控制系統(tǒng)都通過一些類型的總線互相連接,以允許測量數(shù)據(jù)的必要處理和控制信號的傳輸。
在數(shù)據(jù)總線上通信的有不同類型的數(shù)據(jù)?!胺菍?shí)時(shí)”數(shù)據(jù)是這樣的數(shù)據(jù)如果從某一截止時(shí)間起數(shù)據(jù)未被接收到也不會變成無價(jià)值的數(shù)據(jù)的數(shù)據(jù)。一個(gè)非實(shí)時(shí)數(shù)據(jù)的例子是從一個(gè)中央控制系統(tǒng)向一個(gè)壓力發(fā)送器發(fā)送的查詢壓力發(fā)送器的序號的請求。是否知道該請求確切的生成時(shí)間對系統(tǒng)的正確控制沒有影響?!皩?shí)時(shí)”數(shù)據(jù)有一個(gè)指定的截止時(shí)間,在這段時(shí)間內(nèi),數(shù)據(jù)必須被接收,否則,數(shù)據(jù)將丟失或被呈現(xiàn)無用數(shù)據(jù)。實(shí)時(shí)數(shù)據(jù)的一個(gè)例子是一個(gè)從質(zhì)量流量計(jì)傳送到一個(gè)控制系統(tǒng)的質(zhì)量流率信號??刂葡到y(tǒng)可以,例如,使用質(zhì)量流率信號為一個(gè)閥生成一個(gè)控制信號,以便通過系統(tǒng)的質(zhì)量流率保持在目標(biāo)值的0.5%范圍內(nèi)。在這種情況下,很重要的一點(diǎn)是,要向控制系統(tǒng)傳送并從控制系統(tǒng)向控制閥傳送一個(gè)連續(xù)并可預(yù)測的質(zhì)量流率數(shù)據(jù)流。
因?yàn)楦鲀x表所測量的過程的當(dāng)前狀態(tài)被處理并被反饋以校正過程本身,所以過程儀表數(shù)據(jù)的實(shí)時(shí)特性必須被保持。由于這個(gè)原因,除了其它部分之外,系統(tǒng)中的每塊儀表一般都單獨(dú)與控制系統(tǒng)相連并向控制系統(tǒng)提供表明其個(gè)別測量值的實(shí)時(shí)數(shù)據(jù)。然后,控制系統(tǒng)提供必要的時(shí)序和協(xié)調(diào)以處理來自多路儀器傳感器的多路信號以生成必要的控制信號。在一些系統(tǒng)中,為每塊儀表提供有一個(gè)專用的,硬連線的到控制系統(tǒng)的連接。這保證了來自各塊儀表的數(shù)據(jù)將以一種能保持?jǐn)?shù)據(jù)的實(shí)時(shí)特性的方式同控制系統(tǒng)通信。不過,該系統(tǒng)也需要一個(gè)復(fù)雜而昂貴的過程設(shè)備連線系統(tǒng),以便有時(shí)能將上千個(gè)儀器連接到一個(gè)控制系統(tǒng)上。
有時(shí),情況是這樣的,一個(gè)單塊儀表生成多路控制信號,用于本地控制或向控制系統(tǒng)傳輸。例如,一個(gè)Coriolis質(zhì)量流量計(jì)可被用于測量流入一個(gè)槽中的液體量。當(dāng)預(yù)定質(zhì)量的液體流入槽中后,一個(gè)閥門關(guān)閉以使液體停止流入槽中。確定何時(shí)到達(dá)預(yù)定質(zhì)量所必須的數(shù)據(jù)包括液體的質(zhì)量流率和流入槽中的總的液體質(zhì)量。這些值均由一個(gè)Coriolis質(zhì)量流量計(jì)提供。與其從Coriolis質(zhì)量流量計(jì)向控制系統(tǒng)通知質(zhì)量流率值和總的質(zhì)量值以生成閥門控制信號,不如在Coriolis質(zhì)量流量計(jì)中當(dāng)?shù)靥幚碣|(zhì)量流率和總質(zhì)量數(shù)據(jù)并生成閥門控制信號。除了質(zhì)量數(shù)據(jù),在一個(gè)Coriolis流量計(jì)中還處理不同的非實(shí)時(shí)數(shù)據(jù)信號。這些信號包括(但不局限于)對結(jié)構(gòu)數(shù)據(jù)和標(biāo)記信息的修改。這些非實(shí)時(shí)信號比實(shí)時(shí)信號優(yōu)先級低,因?yàn)樵谔幚硭鼈儠r(shí)的延時(shí)并不降低精度或流量計(jì)性能,或槽的批控制。有時(shí),一個(gè)數(shù)據(jù)總線必須協(xié)調(diào)一個(gè)單個(gè)儀器中不同的實(shí)時(shí)和非實(shí)時(shí)數(shù)據(jù)信號的傳輸。
不管是考慮貫穿整個(gè)過程設(shè)備的企業(yè)級總線,還是考慮一個(gè)單獨(dú)的儀器計(jì)算機(jī)內(nèi)的儀器內(nèi)總線,都有兩種可供選擇的主要通信協(xié)議類型。在載波偵聽多路訪問(“CSMA”)協(xié)議中,總線上的每個(gè)節(jié)點(diǎn)都偵聽業(yè)務(wù)并在發(fā)送一個(gè)消息之前,等待業(yè)務(wù)清除。當(dāng)兩個(gè)節(jié)點(diǎn)試圖同時(shí)發(fā)送消息時(shí),它們均跳返并試圖稍后重發(fā)。另一個(gè)通信協(xié)議方案題為“時(shí)分多址”(“TDMA”)。在TDMA類型協(xié)議中,總線上的每個(gè)節(jié)點(diǎn)都預(yù)選一個(gè)時(shí)隙,節(jié)點(diǎn)在該時(shí)隙內(nèi)收發(fā)消息。除其它特性之外,TDMA協(xié)議一般還是確定性的。一個(gè)確定性通信協(xié)議提供實(shí)時(shí)系統(tǒng)中操作的計(jì)劃性。
控制器局域網(wǎng)絡(luò)(“CAN”)協(xié)議是一個(gè)一般被稱為CSMA的協(xié)議組中的一種協(xié)議。CAN協(xié)議已被用于汽車工業(yè)中,作為汽車的內(nèi)部工作數(shù)據(jù)的通信的標(biāo)準(zhǔn)之一。一般,在車輛的不同部位有多路傳感器。一個(gè)兩線串行總線被用于提供多路傳感器和微處理器間的通信。例如,在發(fā)動機(jī)座中有管理發(fā)動機(jī)所需的傳感器和在每個(gè)輪子上或附近有防鎖制動器所需的傳感器。這些傳感器的輸出通過兩線總線與微處理器通信以決定車輛的正常操作。連同其它特性一起,CAN提供有一種用于在不同傳感器間判優(yōu)的裝置,以避免它們各自信號間的沖突。判優(yōu)包括按優(yōu)先順序排列信號的一種方式,以便在不太重要的信號之前處理更重要的信號。這就允許處理器在“空氣調(diào)節(jié)打開”信號和“加制動”信號同時(shí)始發(fā)時(shí),先處理“加制動”信號。CAN還提供一個(gè)定義消息格式和一個(gè)誤差校驗(yàn)方案,以確認(rèn)被通信消息的有效性。不過,CNA不提供一種裝置,以保證某種類型的消息,例如實(shí)時(shí)消息,在一個(gè)有規(guī)律的,確定性的基礎(chǔ)上通信。
由于汽車工業(yè)中使用了CAN協(xié)議,所以已經(jīng)可以獲得專門為實(shí)現(xiàn)基于CAN的系統(tǒng)而設(shè)計(jì)的微處理器和外圍設(shè)備。它們廣泛的應(yīng)用和相對低的費(fèi)用使這些CAN處理器對通信總線的設(shè)計(jì)者具有很強(qiáng)的吸引力。
需要有一種通信總線,它提供有CSMA通信協(xié)議的一些優(yōu)點(diǎn),例如判優(yōu),誤差校驗(yàn)和定義消息格式,以及由TDMA類通信協(xié)議所提供的確定性。具體地,需要一種確定性的基于CAN的協(xié)議,它使設(shè)計(jì)者能利用CAN協(xié)議的相對低價(jià)的優(yōu)點(diǎn)和確定性通信環(huán)境中已經(jīng)可以獲得的硬件。
通過本發(fā)明的確定性串行總線通信系統(tǒng),可以解決上述問題及其它問題,并可獲得該領(lǐng)域中的技術(shù)進(jìn)步。本發(fā)明提供了一種方法和裝置,利用它,將標(biāo)準(zhǔn)CAN處理器和相關(guān)硬件用于一個(gè)實(shí)時(shí),確定性的處理系統(tǒng)中。CAN協(xié)議的優(yōu)點(diǎn)包括低價(jià)的處理器,消息沖突解決,故障處理和消息定義,這些優(yōu)點(diǎn)與一個(gè)時(shí)間同步方法相結(jié)合,保證了實(shí)時(shí)系統(tǒng)中動作的計(jì)劃性。
總地來說,本發(fā)明使用了一個(gè)通過串行總線向多路節(jié)點(diǎn)發(fā)送的同步信號。該同步信號為連接到總線系統(tǒng)上的每個(gè)節(jié)點(diǎn)定義了一個(gè)時(shí)間分割的開始。在本發(fā)明的一個(gè)實(shí)例中,每個(gè)節(jié)點(diǎn)代表連接到一條總線上的一個(gè)或多個(gè)傳感器。例如,化學(xué)處理工廠中的每塊儀表都可能是串行總線上的一個(gè)節(jié)點(diǎn)。在本發(fā)明的另一個(gè)實(shí)施例中,每個(gè)節(jié)點(diǎn)代表一個(gè)或多個(gè)處理模塊。例如,一個(gè)Coriolis流量發(fā)送器包含一個(gè)節(jié)點(diǎn)上的質(zhì)量流處理模塊和第二節(jié)點(diǎn)上的密度處理模塊。兩個(gè)節(jié)點(diǎn)都連接到總線上。在本發(fā)明的第三個(gè)實(shí)施例中,一個(gè)節(jié)點(diǎn)可以包含多重功能塊。例如,一個(gè)Coriolis流量發(fā)送器包含一個(gè)生成配料控制信號的節(jié)點(diǎn)。配料節(jié)點(diǎn)包含一個(gè)確定總質(zhì)量流量的功能塊和根據(jù)總質(zhì)量流量生成配料控制信號的第二個(gè)功能塊。執(zhí)行一個(gè)節(jié)點(diǎn)內(nèi)各功能塊間數(shù)據(jù)的節(jié)點(diǎn)內(nèi)通信,以便很簡單地與本發(fā)明的CAN協(xié)議相協(xié)調(diào)。本發(fā)明的CAN協(xié)議代表標(biāo)準(zhǔn)CAN協(xié)議與基于TDMA的協(xié)議的確定性的混合。此外,本發(fā)明的通信協(xié)議被稱作具有確定性的CAN(“CAN-D”)。
在本發(fā)明的一個(gè)實(shí)施例中,每個(gè)時(shí)間分隔都包含三個(gè)區(qū)間。在時(shí)間分隔區(qū)間的第一段,一個(gè)同步信號(“Sync signal”)通知總線上的所有節(jié)點(diǎn)開始一個(gè)新的時(shí)間分隔。也是在這一區(qū)間,總線上的每個(gè)生成實(shí)時(shí)數(shù)據(jù)的節(jié)點(diǎn)將適當(dāng)?shù)臄?shù)據(jù)排隊(duì)以便傳輸。在該時(shí)間分隔的第二段或區(qū)間,生成實(shí)時(shí)數(shù)據(jù)的每個(gè)節(jié)點(diǎn)向點(diǎn)線發(fā)送該數(shù)據(jù)。在時(shí)間分隔的第三個(gè)段或區(qū)間,任何節(jié)點(diǎn)都可以通過總線請求并發(fā)送非實(shí)時(shí)數(shù)據(jù)。其結(jié)果是,實(shí)時(shí)數(shù)據(jù)在每個(gè)時(shí)間間隔內(nèi)被有計(jì)劃地向總線發(fā)送。本發(fā)明的這種被保證的有計(jì)劃性,或確定性的含義是;用來控制連續(xù)的,實(shí)時(shí)的過程的實(shí)時(shí)數(shù)據(jù),是在已知的,固定的時(shí)間間隔被發(fā)送的。
在本發(fā)明的另一個(gè)實(shí)例中,每個(gè)同步信號啟動下一個(gè)時(shí)間分隔并結(jié)束前面的時(shí)間分隔。來自生成實(shí)時(shí)數(shù)據(jù)的節(jié)點(diǎn)的消息比來自生成非實(shí)時(shí)數(shù)據(jù)的節(jié)點(diǎn)的消息的優(yōu)先級高。啟動標(biāo)準(zhǔn)CAN沖突解決以對總線上的消息業(yè)務(wù)判優(yōu)。要選擇時(shí)間分隔的長度和總線上的節(jié)點(diǎn)數(shù),以便所有實(shí)時(shí)節(jié)點(diǎn)都能在所有時(shí)間分隔期間發(fā)送一個(gè)消息。如果在一個(gè)時(shí)間分隔區(qū)間,在實(shí)時(shí)消息傳送之后,沒有剩余足夠的時(shí)間,則非實(shí)時(shí)消息被保存,以便在下一個(gè)時(shí)間分隔期間傳輸。
在本發(fā)明的另一個(gè)實(shí)施例中,每個(gè)同步信號啟動下一個(gè)時(shí)間分隔并結(jié)束前一個(gè)時(shí)間分隔。每個(gè)節(jié)點(diǎn)處的一個(gè)軟件路由器指導(dǎo)當(dāng)前時(shí)間分隔期間該節(jié)點(diǎn)的信息生成。根據(jù)來自每個(gè)節(jié)點(diǎn)各自的軟件路由器的引導(dǎo),生成每個(gè)節(jié)點(diǎn)處的消息。在一個(gè)時(shí)間分隔期間內(nèi),實(shí)時(shí)消息被排成隊(duì)列以便在下一時(shí)間間隔開始時(shí)發(fā)送。在當(dāng)前時(shí)間間隔期間,當(dāng)時(shí)間允許時(shí),發(fā)送非實(shí)時(shí)消息。隨著下一個(gè)同步信號,下一時(shí)間分隔開始。在該時(shí)間分隔開始時(shí),發(fā)送被排成隊(duì)列的實(shí)時(shí)消息。之后,節(jié)點(diǎn)軟件路由器引導(dǎo)生成下一組消息。
在每個(gè)時(shí)間間隔期間,按CAN協(xié)議執(zhí)行消息判優(yōu),誤差校驗(yàn)和消息格式化。一個(gè)時(shí)間間隔的結(jié)束和下一時(shí)間間隔的開始是由同步信號決定的。如果在同步信號始發(fā)時(shí),總線空閑,即沒有正在被發(fā)送的消息,則在同步信號始發(fā)時(shí),開始下一個(gè)時(shí)間分隔。如果在始發(fā)同步信號的時(shí)間,總線上有多部件消息要被發(fā)送,則由于同步信號有更高的優(yōu)先級,同步信號將截?cái)嘁粋€(gè)或多個(gè)CAN包。任何由于一個(gè)新的時(shí)間分隔的開始而被截?cái)嗷蚪K止的信號都將在隨后的時(shí)間分隔內(nèi)被發(fā)送,直到它在總線上被完整地發(fā)送。
本發(fā)明允許一個(gè)儀器或設(shè)備的設(shè)計(jì)者使用已被證實(shí)并廉價(jià)的CAN協(xié)議和CAN處理器。并將其用于使用一個(gè)確定性的串行通信總線的實(shí)時(shí)數(shù)據(jù)的處理。本發(fā)明還允許使用標(biāo)準(zhǔn)CAN處理器的儀器的模塊設(shè)計(jì)。按照本發(fā)明,儀器的不同處理模塊使用CAN-D協(xié)議進(jìn)行互相之間的通信。本發(fā)明還用于控制一個(gè)節(jié)點(diǎn)中各功能塊間的節(jié)點(diǎn)內(nèi)通信。
圖1是使用CAN協(xié)議的通信總線的方塊圖;圖2是一個(gè)時(shí)線,證明按照本發(fā)明,一個(gè)通信系統(tǒng)中的總線消息活動;圖3是一個(gè)時(shí)線族,說明按照本發(fā)明的總線消息活動以及節(jié)點(diǎn)消息生成活動;圖4是一個(gè)時(shí)線,圖解說明了按本發(fā)明的通信系統(tǒng)的另一個(gè)實(shí)施例;圖5更詳細(xì)地描述了一個(gè)單個(gè)節(jié)點(diǎn);圖6是一個(gè)流程圖,舉例說明了與一個(gè)同步信號相應(yīng)的有關(guān)消息通信的處理步驟。圖1-控制器局域網(wǎng)絡(luò)(CAN)協(xié)議和網(wǎng)絡(luò)圖1舉例說明了一個(gè)網(wǎng)絡(luò)100,它包括節(jié)點(diǎn)101-103。每個(gè)節(jié)點(diǎn)101-103都被連接到兩線總線104上。圖1只示出了總線104的一部分,它向兩個(gè)方向延伸。
網(wǎng)絡(luò)100是典型的其中使用CAN協(xié)議的節(jié)點(diǎn)網(wǎng)絡(luò)。一個(gè)典型的應(yīng)用是在汽車制造業(yè)中,其中,節(jié)點(diǎn)101是一個(gè)發(fā)動機(jī)管理控制設(shè)備,節(jié)點(diǎn)102是一個(gè)防鎖制動傳感器,節(jié)點(diǎn)103是一個(gè)防鎖制動控制設(shè)備。每個(gè)節(jié)點(diǎn)包括一個(gè)CAN控制器,它要么被嵌在微處理器中,要么是一個(gè)獨(dú)立的控制器。帶有一個(gè)可用的嵌入式CAN控制器的微處理器的例子是Motorola MC68HCOS微處理器。獨(dú)立的CAN控制器的一個(gè)例子是Siemens 81 C90/91-Stand Alone Full CAN Controller。CAN控制器負(fù)責(zé)實(shí)施CAN協(xié)議的規(guī)則,以下將詳細(xì)介紹。每個(gè)節(jié)點(diǎn)還包括一個(gè)CAN收發(fā)機(jī),它控制一個(gè)節(jié)點(diǎn)和CAN總線間的物理接口。最普通的物理接口,和本發(fā)明推薦實(shí)施例中所用的接口,是基于ISO 11898;“RoadVehicles-Interchange of digital information Controller AreaNetwork(CAN)for high speed Communications”的。與ISO 11898標(biāo)準(zhǔn)兼容的CAN收發(fā)機(jī)芯片的一個(gè)例子是Phillips 82C250 CAN收發(fā)機(jī)。
節(jié)點(diǎn)101包括CAN收發(fā)機(jī)105。CAN收發(fā)機(jī)105通過節(jié)點(diǎn)內(nèi)路徑108同CAN控制器106通信。CAN控制器通過節(jié)點(diǎn)內(nèi)路徑109同微處理器107通信。微處理器107每次通過總線104發(fā)送一條消息,該消息實(shí)際上是從微處理器107發(fā)送給CAN控制器106。CAN控制器負(fù)責(zé)按照CAN協(xié)議執(zhí)行誤差校驗(yàn),總線判優(yōu)和消息傳輸。CAN控制器106物理上通過CAN收發(fā)機(jī)105與總線104相連。類似地,節(jié)點(diǎn)102包括CAN收發(fā)機(jī)110。CAN收發(fā)機(jī)110通過節(jié)點(diǎn)內(nèi)路徑113與CAN控制器111通信。CAN控制器通過節(jié)點(diǎn)內(nèi)路徑114與微處理器112通信。節(jié)點(diǎn)103包含與節(jié)點(diǎn)101-102類似的功能性但硬件配置不同。CAN控制器被嵌入微處理器116中。微處理器116與CAN收發(fā)機(jī)115間的通信在節(jié)點(diǎn)內(nèi)路徑117上進(jìn)行。
將防鎖制動系統(tǒng)的例子應(yīng)用到網(wǎng)絡(luò)100上,一個(gè)傳感器(未示出)向節(jié)點(diǎn)102的微處理器112輸入車輪轉(zhuǎn)速。節(jié)點(diǎn)102工作,通過總線104向節(jié)點(diǎn)101發(fā)送一條消息,該消息包括節(jié)點(diǎn)101檢測到的車輪轉(zhuǎn)速測量值。節(jié)點(diǎn)101的微處理器107根據(jù)來自節(jié)點(diǎn)102的消息計(jì)算合適的動作。節(jié)點(diǎn)101工作,通過總線104向節(jié)點(diǎn)103傳送一個(gè)消息,該消息指導(dǎo)由節(jié)點(diǎn)103控制的車輪處的制動器的應(yīng)用。節(jié)點(diǎn)103的微處理器116向一個(gè)制動器控制(未示出)輸出一個(gè)信號以施加制動??偩€104上的所有消息按CAN協(xié)議出現(xiàn)。
CAN控制器106,111和106協(xié)調(diào)總線104上消息的傳輸。CAN控制器實(shí)施CAN協(xié)議的CAN消息格式化,誤差校驗(yàn)和消息判優(yōu)。總線104上發(fā)送的每條消息都遵守以下將要描述的CAN消息格式。由于有多個(gè)節(jié)點(diǎn)連接到總線104上,所以消息判優(yōu)是必須的。CAN提供了一個(gè)判優(yōu)系統(tǒng),它允許將來自不同節(jié)點(diǎn)的消息按優(yōu)先次序排列。例如,若節(jié)點(diǎn)102,防鎖制動傳感設(shè)備,試圖通過總線104發(fā)送一條消息,同時(shí),一個(gè)發(fā)動機(jī)管理節(jié)點(diǎn)(未示出)也試圖通過總線發(fā)送一條消息,則CAN協(xié)議自動決定哪個(gè)節(jié)點(diǎn)首先通過總線104取得會話。在該例中,來自節(jié)點(diǎn)102的防鎖制動相關(guān)消息被認(rèn)為比與發(fā)動機(jī)管理控制相關(guān)的消息更重要,所以,在CAN協(xié)議下,給來自節(jié)點(diǎn)102的消息一個(gè)更高的優(yōu)先級。
CAN協(xié)議(Version 1.2)使用每條消息中的一個(gè)11位標(biāo)識符域作為標(biāo)識連接到總線104上的一個(gè)指定設(shè)備的優(yōu)先級代碼。標(biāo)識符域類似于一個(gè)標(biāo)題,后跟數(shù)據(jù)域。如本技術(shù)專業(yè)人士所理解的,CAN協(xié)議的11位標(biāo)識符域可被用于標(biāo)識系統(tǒng)中的一個(gè)特定裝置,或者換句話說,可被用于標(biāo)識一個(gè)特定消息。所有消息均按優(yōu)先級順序排列,具有最高優(yōu)先級的消息被分配一個(gè)具有最小數(shù)字值的標(biāo)識符域。下一最高優(yōu)先級的消息被分配下一最小數(shù)字值,等等,直到具有最低優(yōu)先級的消息,它被分配最大的數(shù)字值。每個(gè)節(jié)點(diǎn)101-103的發(fā)送邏輯在它所發(fā)送的消息和總線邏輯電平之間進(jìn)行逐位比較。當(dāng)兩個(gè)節(jié)點(diǎn)正好同時(shí)在總線104上發(fā)送時(shí),具有較低優(yōu)先級的節(jié)點(diǎn),在消息標(biāo)識符的前面,將有一個(gè)退縮位,例如,一個(gè)邏輯“1”,被較高優(yōu)先級信息的一個(gè)占優(yōu)位,例如,邏輯“0”所代替。一旦檢測到該情況,傳輸較低優(yōu)先級消息的節(jié)點(diǎn)將停止發(fā)送并變?yōu)橐粋€(gè)“接收器”。這是CAN優(yōu)先級判優(yōu)的基本概念。根據(jù)其節(jié)點(diǎn)地址,每個(gè)節(jié)點(diǎn)都被分配一個(gè)不同的優(yōu)先級(或按優(yōu)先次序排隊(duì))。每條消息的優(yōu)先級是由標(biāo)識域中設(shè)置的值決定的。標(biāo)識域是由節(jié)點(diǎn)所發(fā)送的每條消息的第一個(gè)域。通常,CAN標(biāo)識域和CAN判優(yōu)是那些本技術(shù)傳業(yè)人士所熟知的。CAN協(xié)議本身由Robert Bosch GmbH定義為“CAN Specification Version 1.2”。
CAN控制器的一個(gè)標(biāo)準(zhǔn)部件和CAN協(xié)議是一個(gè)誤差校驗(yàn)功能。CAN誤差校驗(yàn)一般是由CAN控制器進(jìn)行的并為16位,循環(huán)冗余校驗(yàn)(CRC)校驗(yàn)和檢測。
由于上述格式化,誤差校驗(yàn)和消息判優(yōu),所以,部分地講,現(xiàn)有CAN系統(tǒng)是非常靈活且實(shí)施有效的。不過,如所提到的,現(xiàn)有的CAN系統(tǒng)不提供確保某事件或消息在某時(shí)間區(qū)間出現(xiàn)的機(jī)制。例如,如果要測量液體通過一個(gè)管子時(shí)的質(zhì)量流率(克/秒),則必須具有定期基礎(chǔ)上的信息,以生成一個(gè)準(zhǔn)確的測量值?,F(xiàn)在CAN系統(tǒng)不能保證在定期基礎(chǔ)上通過總線發(fā)送某信息,即,現(xiàn)有CAN系統(tǒng)不是確定性的?,F(xiàn)有CAN系統(tǒng)只能保證較高優(yōu)先級的消息將在較低優(yōu)先級的消息之前通過總線發(fā)送。
圖2包括時(shí)序圖200,大體例證了本發(fā)明操作。由于對按照本發(fā)明的網(wǎng)絡(luò)來說,其有關(guān)總線104的基本硬件安排與按現(xiàn)有CAN系統(tǒng)的網(wǎng)絡(luò)相同,所以,就本發(fā)明來說,參照了圖1.此處,本發(fā)明通信系統(tǒng)被稱為確定性CAN(“CAN-D”)。時(shí)線200代表了在一個(gè)時(shí)間序列期間,總線104上的消息活動。一個(gè)CAN-D通信系統(tǒng)通過發(fā)送同步脈沖201-204以生成相等,周期性的時(shí)間分隔TDn,TDn+1和TDn+2來施加一個(gè)系統(tǒng)時(shí)間。同步脈沖201-204本身就是具有高優(yōu)先級的CAN消息。時(shí)線200只舉了幾個(gè)時(shí)間分隔的例子。本技術(shù)專業(yè)人士可以認(rèn)識到,這只代表了總系統(tǒng)時(shí)間的一部分。
隨著在總線上發(fā)送同步脈沖201,開始時(shí)間分隔TDn。隨著總線上同步脈沖202的傳輸,時(shí)間分隔TDn結(jié)束,TDn+1開始。隨著總線104上同步脈沖203的傳輸,時(shí)間分隔TDn+1結(jié)束,TDn+2開始。同步脈沖周期性地出現(xiàn),生成相等的時(shí)間分隔。網(wǎng)絡(luò)上的任何節(jié)點(diǎn)都可被構(gòu)造為能生成同步脈沖。只需簡單地為一個(gè)節(jié)點(diǎn)分配網(wǎng)絡(luò)中所用的最低地址,例如0,就可將該節(jié)點(diǎn)指定為“主節(jié)點(diǎn)”。節(jié)點(diǎn)地址為零的含義是,來自該主節(jié)點(diǎn)的消息具有最高優(yōu)先級。在本發(fā)明的一個(gè)推薦實(shí)例中,每10毫秒在總線上發(fā)送一個(gè)同步脈沖,每秒生成100個(gè)時(shí)間分隔。本技術(shù)專業(yè)人士可以認(rèn)識到,根據(jù)系統(tǒng)配置,可以調(diào)節(jié)總線系統(tǒng)的時(shí)間分隔。本發(fā)明推薦實(shí)例中10毫秒的時(shí)間分隔只適用于特定的總線系統(tǒng)配置。消息205-215中的每一個(gè)都是通過總線104傳輸?shù)南?。每條消息的格式和位規(guī)定已在前面參照圖1和現(xiàn)有CAN系統(tǒng)進(jìn)行了討論。為簡單起見,在圖2中,以沿時(shí)線100的單個(gè)的方塊來代表每條消息,而不是詳細(xì)地表示出每一位。
提供了一個(gè)工業(yè)過程控制的例子來進(jìn)一步解釋CAN-D系統(tǒng)。圖1中的節(jié)點(diǎn)101包括一個(gè)質(zhì)量流傳感器(未示出)。節(jié)點(diǎn)101被構(gòu)造為在每個(gè)時(shí)間分隔期間,生成一個(gè)消息,該消息中包含以克/秒表示的當(dāng)前液體流過質(zhì)量流傳感器的質(zhì)量流率。節(jié)點(diǎn)A生成的消息是實(shí)時(shí)消息。節(jié)點(diǎn)101在時(shí)間分隔TDn期間發(fā)送消息205,節(jié)點(diǎn)101在時(shí)間分隔TDn+1期間發(fā)送消息209并在時(shí)間分隔TDn+2期間發(fā)送消息213。節(jié)點(diǎn)102包括一個(gè)壓力傳感器。節(jié)點(diǎn)102被構(gòu)造為在每個(gè)時(shí)間間隔期間生成一個(gè)消息,該消息包含以磅/英寸2表示的通過質(zhì)量流傳感器的當(dāng)前的液體壓差。節(jié)點(diǎn)102生成的消息是實(shí)時(shí)消息。節(jié)點(diǎn)102在時(shí)間分隔TDn期間發(fā)送消息206,在時(shí)間分隔TDn+1期間發(fā)送消息210并在時(shí)間分隔TDn+2期間發(fā)送消息214。周期性時(shí)間分隔的長度,總的節(jié)點(diǎn)數(shù),實(shí)時(shí)節(jié)點(diǎn)數(shù),和每條消息的長度是由系統(tǒng)設(shè)計(jì)控制的,以確保在每個(gè)時(shí)間分隔期間,有足夠的時(shí)間進(jìn)行必要的通信。
在每個(gè)時(shí)間分隔期間,由節(jié)點(diǎn)103讀取來自節(jié)點(diǎn)101的質(zhì)量流率消息和來自節(jié)點(diǎn)102的壓降消息并由微處理器116進(jìn)行處理。微處理器116以一種已知方式組合來自節(jié)點(diǎn)101-102的數(shù)據(jù),生成代表被測液體的粘滯度的值。CAN-D系統(tǒng)的確定性特點(diǎn)保證了微處理器116利用幾乎在同一時(shí)間生成的質(zhì)量流率數(shù)據(jù)和壓強(qiáng)數(shù)據(jù)計(jì)算粘滯度。在本實(shí)例時(shí)間間隔為10毫秒的情況下,已知質(zhì)量流率數(shù)據(jù)和壓強(qiáng)數(shù)據(jù)互相之間是在10毫秒內(nèi)生成的。
微處理器116生成的粘滯度數(shù)據(jù)可被用于幾種不同方式中的任一種內(nèi)。例如,粘滯度數(shù)據(jù)可顯示在顯示器(未示出)上供用戶查看。另外,粘滯度數(shù)據(jù)可通過總線104被發(fā)送給總線上的另一個(gè)節(jié)點(diǎn)。
對于非實(shí)時(shí)消息,任何時(shí)候,只要它們可用且優(yōu)先級判優(yōu)允許其傳輸,則它們可被在總線104上傳輸。消息207、208、211、212和215是通過總線104傳輸?shù)母郊酉?。這些消息可以是實(shí)時(shí)或非實(shí)時(shí)消息。
非實(shí)時(shí)消息不是必須比實(shí)時(shí)消息優(yōu)先級低。利用以上例子,一個(gè)附加節(jié)點(diǎn)(未示出)包括一個(gè)水位傳感器,用來生成水位報(bào)警。水位傳感器被安裝在液體(其粘滯度正在被測量)正在流入的槽中。當(dāng)液體到達(dá)槽中的某水位時(shí),水位傳感器生成一個(gè)水位報(bào)警,它被作為一個(gè)消息在總線上傳輸。水位報(bào)警消息不是一個(gè)實(shí)時(shí)消息,但它被分配一個(gè)相對高的優(yōu)先級,這是由于若不對水位報(bào)警作出反應(yīng),將引起槽的溢出。
根據(jù)圖2描述的CAN-D總線通信系統(tǒng)利用了根據(jù)CAN協(xié)議和圖1描述的消息格式化,優(yōu)先級判優(yōu)和誤差校驗(yàn)。另外,CAN-D使用了可大量供應(yīng)的CAN控制器和收發(fā)器芯片。用于生成CAN-D中的系統(tǒng)時(shí)間的同步消息將TDMA類的確定性給予了標(biāo)準(zhǔn)CAN協(xié)議。這樣,CAN-D就特別適合于實(shí)時(shí)過程控制應(yīng)用場合或其它任何需要實(shí)時(shí)數(shù)據(jù)傳輸?shù)膽?yīng)用場合。
以上節(jié)點(diǎn)101是一個(gè)質(zhì)量流量計(jì)且節(jié)點(diǎn)102是一個(gè)壓力變送器的例子是一個(gè)應(yīng)用于處理設(shè)備中的分離儀表間的通信總線104上的CAN-D系統(tǒng)的例子。本技術(shù)專業(yè)人士可以認(rèn)識到,CAN-D系統(tǒng)的同樣原理可被用于任何類型的兩個(gè)節(jié)點(diǎn)間的通信。
圖3是一組時(shí)序圖200,300和301,大體上舉例說明了本發(fā)明包括節(jié)點(diǎn)101-102中的消息生成活動的操作。時(shí)線200與圖2的時(shí)線200是相同的,表明了總線104上的總線活動(CAN消息)。時(shí)線300和301分別舉例說明了在每個(gè)時(shí)間分隔期間,節(jié)點(diǎn)101-102內(nèi)的活動。鑒于沿時(shí)線200的每個(gè)方塊代表總線104上的一個(gè)CAN消息,沿時(shí)線300和301的三角形分別代表節(jié)點(diǎn)101-102內(nèi)消息內(nèi)容的生成。圖3舉例說明了節(jié)點(diǎn)中消息信息的生成和這些消息在總線104上的傳輸之間的時(shí)間關(guān)系。
時(shí)線300代表圖1中節(jié)點(diǎn)101內(nèi)的活動。同樣,時(shí)線301代表圖1中節(jié)點(diǎn)102中的活動。為描述CAN-D系統(tǒng)的總的操作,不必解釋或理解發(fā)生在每個(gè)節(jié)點(diǎn)中的過程。只需理解到,在每個(gè)節(jié)點(diǎn)中使用標(biāo)準(zhǔn)CAN格式化和控制邏輯,以生成用來在總線104上傳輸?shù)目捎孟ⅰ@?,可以這樣構(gòu)造一個(gè)節(jié)點(diǎn),以使每個(gè)同步脈沖201-204都能引起節(jié)點(diǎn)啟動一個(gè)新消息的生成。換一種方式,可以這樣構(gòu)造一個(gè)節(jié)點(diǎn),使每第三個(gè)同步脈沖引起節(jié)點(diǎn)啟動一個(gè)新消息的生成。每個(gè)節(jié)點(diǎn)(實(shí)時(shí)或非實(shí)時(shí)的)不必在每個(gè)時(shí)間分隔期間都生成一個(gè)消息。同樣,一個(gè)單一節(jié)點(diǎn)可在一個(gè)單一時(shí)間分隔期間生成不止一個(gè)消息。每個(gè)同步脈沖都被發(fā)送給一個(gè)CAN-D網(wǎng)絡(luò)上的每一個(gè)節(jié)點(diǎn),從而為每個(gè)節(jié)點(diǎn)提供共同的時(shí)間。
在時(shí)間分隔TDn+1期間通過總線104發(fā)送的CAN消息209包含消息內(nèi)容302。在時(shí)線300上舉例說明的消息內(nèi)容302是由微處理器107在時(shí)間分隔TDn期間生成的。由于節(jié)點(diǎn)101被構(gòu)造為在每個(gè)時(shí)間分隔期間生成一個(gè)實(shí)時(shí)消息,所以出現(xiàn)消息內(nèi)容302的生成。換句話說,消息內(nèi)容302可作為對請求消息生成的“發(fā)布要求”的響應(yīng)而被生成。一個(gè)發(fā)布要求通知一個(gè)節(jié)點(diǎn)準(zhǔn)備用來在總線上傳輸?shù)南?。發(fā)布要求可作為一個(gè)系統(tǒng)消息從一個(gè)節(jié)點(diǎn)通過總線始發(fā),或者可以在每個(gè)節(jié)點(diǎn)中始發(fā)。消息內(nèi)容302將在節(jié)點(diǎn)101內(nèi)排隊(duì),一直到同步脈沖202到來。消息內(nèi)容304在時(shí)間分隔TDn期間在節(jié)點(diǎn)102中生成,并在節(jié)點(diǎn)102中排隊(duì),直到同步脈沖202到來。
每個(gè)同步脈沖201-204出現(xiàn)之后,在節(jié)點(diǎn)中排隊(duì)的消息被通過總線發(fā)送,且新的消息在節(jié)點(diǎn)中生成并排隊(duì)。例如,在同步脈沖202之后,在節(jié)點(diǎn)101-102中排隊(duì)的消息通過總線104被發(fā)送,且新的消息在節(jié)點(diǎn)101-102中生成并排隊(duì)。在同步脈沖202之后,時(shí)間分隔TDn+1期間,節(jié)點(diǎn)101中在時(shí)間分隔TDn期間生成并排隊(duì)的消息內(nèi)容302,象消息209一樣被通過總線發(fā)送。在同步脈沖202之后,時(shí)間分隔TDn+1期間,節(jié)點(diǎn)102中在時(shí)間間隔TDn期間生成并排隊(duì)的消息內(nèi)容304,象消息210一樣被通過總線104發(fā)送。來自節(jié)點(diǎn)101的消息有一個(gè)比來自節(jié)點(diǎn)102的消息更高的CAN優(yōu)先級,所以,消息209在消息210之前在總線上發(fā)送。
在時(shí)間分隔TDn+1期間,在節(jié)點(diǎn)101中生成消息內(nèi)容303并在節(jié)點(diǎn)102中生成消息內(nèi)容305。兩個(gè)消息都在它們各自的節(jié)點(diǎn)中排隊(duì),直到下一個(gè)同步脈沖203到來。正如在每個(gè)時(shí)間分隔期間所出現(xiàn)的,在每個(gè)同步脈沖之后,在總線上發(fā)送排隊(duì)的消息。同步脈沖203之后,消息內(nèi)容303如同消息213那樣在總線104上發(fā)送,消息內(nèi)容305如同消息214那樣被發(fā)送。在一個(gè)時(shí)間分隔期間,何時(shí)生成某一消息無關(guān)緊要。重要的是在每個(gè)時(shí)間分隔期間,都生成一個(gè)實(shí)時(shí)消息,如果該節(jié)點(diǎn)是這樣構(gòu)造的。標(biāo)準(zhǔn)CAN優(yōu)先級判優(yōu)將保證總線104上消息傳輸?shù)暮线m順序。
在時(shí)間分隔TDn期間通過總線104傳輸?shù)南?05和206是在前一時(shí)間分隔TDn-1(未示出)期間生成的。同步脈沖201啟動它們各自在總線上從節(jié)點(diǎn)101-102的傳輸。上述圖3有關(guān)總線104上實(shí)時(shí)消息的傳輸。一個(gè)確定性通信總線要求保證實(shí)時(shí)系統(tǒng)中動作和消息的計(jì)劃性。CAN-D系統(tǒng)保證實(shí)時(shí)數(shù)據(jù)將在已知和可預(yù)測的時(shí)間分隔期間通信。對非實(shí)時(shí)數(shù)據(jù)來說,CAN-D系統(tǒng)的確定性是不重要的。在每個(gè)時(shí)間分隔期間,實(shí)時(shí)消息在非實(shí)時(shí)消息之前在CAN總線上傳輸。這是通過給實(shí)時(shí)節(jié)點(diǎn)分配一個(gè)比非實(shí)時(shí)節(jié)點(diǎn)更高優(yōu)先級的CAN地址來保證的。在所有的實(shí)時(shí)消息傳輸之后,給定時(shí)間分隔內(nèi)剩余的時(shí)間被用于非實(shí)時(shí)消息的傳輸。如果由于時(shí)間分隔結(jié)束而使任何非實(shí)時(shí)消息未能發(fā)送,則剩余的非實(shí)時(shí)消息被掛起,用于在下一時(shí)間分隔期間傳輸。在下一時(shí)間分隔期間,被掛起的非實(shí)時(shí)消息又必須等待,直到實(shí)時(shí)消息被發(fā)送完。
可能有不同的CAN-D實(shí)現(xiàn),都能得到一個(gè)確定性的CAN通信環(huán)境。圖4舉例說明了本發(fā)明的一個(gè)實(shí)例的時(shí)序圖,這里,每個(gè)時(shí)間分隔都分段為三個(gè)時(shí)段且同步信號除了通知一個(gè)新的時(shí)間分隔的開始之外,還執(zhí)行多種功能。
時(shí)線400舉例說明了在兩個(gè)時(shí)間分隔時(shí)間,總線104上的消息活動。由每個(gè)時(shí)間段代表的時(shí)間分割TDn被分為三個(gè)段401-403。段401為“同步段”,段402為“實(shí)時(shí)段”且段403是“非實(shí)時(shí)段”。時(shí)間分割TDn由同步消息407的傳輸始發(fā)。同步消息407是一個(gè)高優(yōu)先級的系統(tǒng)消息,它在同步期間401傳輸。類似于圖2-3的同步脈沖,同步消息407是一個(gè)具有最高優(yōu)先級的CAN消息。同步消息407的傳輸完成幾種目的。同步消息407的傳輸完成的一個(gè)目的是啟動一個(gè)新的時(shí)間分隔。同步消息407的傳輸完成的另一個(gè)目的是,由于同步消息的高優(yōu)先級,所有其它消息的傳輸被從總線釋放。同步消息的另一個(gè)作用是作為到每個(gè)節(jié)點(diǎn)的一個(gè)信號或中斷以建立其實(shí)時(shí)消息。在同步期間401,消息在每個(gè)節(jié)點(diǎn)中作準(zhǔn)備,它們在總線上的傳輸?shù)却?02-403期間的標(biāo)準(zhǔn)CAN判優(yōu)。在每個(gè)時(shí)間分隔期間,同步消息持續(xù)時(shí)間等長。例如,在一個(gè)使用10毫秒時(shí)間分隔的例子中,同步消息持續(xù)1毫秒。
在段401(它對應(yīng)于同步消息407的傳輸)期間,不同的實(shí)時(shí)生成節(jié)點(diǎn)生成并排列其各自的實(shí)時(shí)消息。同步消息407結(jié)束時(shí),TDn的段402開始。然后,標(biāo)準(zhǔn)CAN優(yōu)先級判優(yōu)自動對排隊(duì)等候的實(shí)時(shí)消息排序并允許它們在段402期間通過總線104發(fā)送出去。實(shí)時(shí)和非實(shí)時(shí)消息被按優(yōu)先級排列,這樣,在每個(gè)時(shí)間分割的實(shí)時(shí)段期間,所有的實(shí)時(shí)消息,且只有實(shí)時(shí)消息被發(fā)送出去。
當(dāng)所有的實(shí)時(shí)消息都已在總線上發(fā)送出去時(shí),TDn的時(shí)段403開始。必須選擇連接到總線104上的實(shí)時(shí)節(jié)點(diǎn)的數(shù)量,這樣,每個(gè)節(jié)點(diǎn)都可以在每個(gè)實(shí)時(shí)時(shí)段期間傳輸消息并仍能留有足夠長度的非實(shí)時(shí)時(shí)段供足夠數(shù)量的非實(shí)時(shí)消息使用。在一個(gè)給定時(shí)間分隔期間沒有足夠時(shí)間用來傳輸?shù)娜魏畏菍?shí)時(shí)消息被從總線上釋放,直到下一時(shí)間分隔的非實(shí)時(shí)時(shí)段。
時(shí)間分隔被分割為同步時(shí)段404,實(shí)時(shí)時(shí)段405和非實(shí)時(shí)時(shí)段406。如根據(jù)時(shí)間分割TDn所描述的那樣,在時(shí)間分隔TDn+1,和其它時(shí)間分隔(未示出)期間,形成并傳送CAN消息。
本發(fā)明通信協(xié)議也適用于一個(gè)單一節(jié)點(diǎn)內(nèi)各功能塊間的通信。圖5舉例說明了連接到一個(gè)CAN-D總線501上的節(jié)點(diǎn)500。節(jié)點(diǎn)500包含有一個(gè)根據(jù)圖1-4所描述的主要部件,稱為CAN收發(fā)機(jī)502,CAN控制器504和微處理器506。CAN收發(fā)機(jī)502控制節(jié)點(diǎn)500和CAN-D總線501間的物理接口。CAN收發(fā)機(jī)502通過路徑503與CAN控制器504通信,CAN控制器504實(shí)施諸如優(yōu)先級判優(yōu)和誤差校驗(yàn)之類的標(biāo)準(zhǔn)CAN協(xié)議功能。CAN控制器504通過路徑505與微處理器506通信。與圖1中的微處理器相比,圖5中更詳細(xì)地示出了微處理器506。節(jié)點(diǎn)500所執(zhí)行操作的編程指令在中央處理單元(“CPU”)507中是可執(zhí)行的。CPU507通過存儲總線508存儲并/或檢索來自存儲設(shè)備(包括,但不局限于隨機(jī)存取存儲器(RAM)509和只讀存儲器(ROM)510的編程指令和/或數(shù)據(jù)。另一個(gè)可訪問的存儲設(shè)備包括借助于本地總線511的固定存儲設(shè)備512。用于實(shí)施多種應(yīng)用513-515的編程指令被存儲在固定存儲設(shè)備512中。如以下所述,軟件路由器516指導(dǎo)節(jié)點(diǎn)500的節(jié)點(diǎn)內(nèi)操作。不同的輸入和輸出設(shè)備(未示出)被連接到本地總線511上,以允許用戶與節(jié)點(diǎn)500的功能塊相互作用。
軟件路由器516是CPU 507執(zhí)行的一個(gè)應(yīng)用程序。軟件路由器516是由用戶編程的,以指導(dǎo)節(jié)點(diǎn)500中其它應(yīng)用程序或功能塊的操作。例如,在節(jié)點(diǎn)500的一個(gè)實(shí)施例中,節(jié)點(diǎn)500每隔一個(gè)時(shí)間分隔向CAN-D總線傳送一個(gè)粘滯度的測量值。CPU507執(zhí)行的軟件路由器516,根據(jù)每個(gè)同步信號指導(dǎo)應(yīng)用程序513-515的操作。在當(dāng)前例子中,應(yīng)用程序513生成一個(gè)質(zhì)量流率數(shù)據(jù),應(yīng)用程序514生成一個(gè)壓差數(shù)據(jù)且應(yīng)用程序515生成一個(gè)粘滯度數(shù)據(jù)。應(yīng)用程序515使用來自應(yīng)用程序513-514的數(shù)據(jù)生成粘滯度數(shù)據(jù)。當(dāng)軟件路由器516要求時(shí),應(yīng)用程序513-515生成它們各自的輸出。軟件路由器516決定在每個(gè)同步信號之后,應(yīng)該由應(yīng)用程序513-515中的哪一個(gè)(如果有的話)產(chǎn)生輸出。在當(dāng)前例子中,軟件路由器516被編程為1)請求應(yīng)用程序513(質(zhì)量流率)在每個(gè)時(shí)間分隔期間產(chǎn)生輸出,2)請求應(yīng)用程序514(壓差)在交替的時(shí)間間隔中產(chǎn)生輸出,和3)請求應(yīng)用程序515(粘滯度)在交替時(shí)間間隔(應(yīng)用程序514不產(chǎn)生輸出時(shí)的時(shí)間間隔)期間產(chǎn)生輸出。響應(yīng)于第一個(gè)同步信號,軟件路由器516指導(dǎo)應(yīng)用程序513和514產(chǎn)生輸出。在第一時(shí)間間隔期間(由第一同步信號開始),應(yīng)用程序513和514向軟件路由器516生成輸出消息。響應(yīng)于,第二個(gè)同步信號,軟件路由器516將來自應(yīng)用程序513-514的輸出消息(在前一時(shí)間間隔期間產(chǎn)生)指向應(yīng)用程序515,并將來自應(yīng)用程序513的質(zhì)量流率輸出消息指向CAN-D總線501。CAN-D總線501上的其它節(jié)點(diǎn)(未示出)使用來自節(jié)點(diǎn)500的質(zhì)量流率輸出。軟件路由器516還請求應(yīng)用程序515生成一個(gè)粘滯度輸出消息。應(yīng)用程序515處理分別由應(yīng)用程序513和514生成的質(zhì)量流率和壓差消息(在前一時(shí)間間隔期間產(chǎn)生),以生成一個(gè)粘滯度消息,發(fā)送給軟件路由器516。在第三個(gè)時(shí)間間隔期間(第三個(gè)同步信號之后),軟件路由器516使粘滯度消息(在前一時(shí)間間隔期間從應(yīng)用程序515接收到)指向CAN-D總線501供其它節(jié)點(diǎn)(未示出)使用。
CAN-D協(xié)議和軟件路由器允許靈活的實(shí)現(xiàn)和對整個(gè)系統(tǒng)結(jié)構(gòu)的改善。例如,使質(zhì)量流率信息在一個(gè)不同于且與粘滯度生成節(jié)點(diǎn)分離的節(jié)點(diǎn)中生成將更有效。于是,應(yīng)用程序513從節(jié)點(diǎn)500中移到CAN-D總線501上的一個(gè)不同節(jié)點(diǎn)(未示出)中。對應(yīng)用程序513不需作任何改變。它只是簡單地寄存在另一節(jié)點(diǎn)中并由該節(jié)點(diǎn)的軟件路由器指導(dǎo)應(yīng)用程序513何時(shí)產(chǎn)生輸出。
按本發(fā)明的通信協(xié)議,不需要一個(gè)“軟件路由器”。例如,一個(gè)節(jié)點(diǎn)中的每個(gè)功能塊都可被構(gòu)造為在每個(gè)時(shí)間間隔期間產(chǎn)生合適的消息并發(fā)送該消息,所以,它們在一個(gè)合適的時(shí)間間隔期間被接收。軟件路由器簡單地起到一個(gè)便利的進(jìn)度工具,除其它作用之外,它還將在一個(gè)時(shí)間間隔期間接收的消息排列并在下一時(shí)間間隔期間向合適的功能塊發(fā)送排隊(duì)消息。這保證了消息是以這樣一種方式通信的,該方式保留了本發(fā)明通信協(xié)議的確定性品質(zhì)。
在本發(fā)明的另一個(gè)實(shí)例中,使用了根據(jù)圖5描述的節(jié)點(diǎn)內(nèi)通信,其中,一個(gè)節(jié)點(diǎn)不與一個(gè)CAN-D總線或其它任何類型的總線交換數(shù)據(jù)。參照圖5,只有微處理器506與該例相關(guān),其余單元,例如CAN收發(fā)機(jī)502,CAN控制器504和CAN-D總線501,要么不存在,要么未使用。不是從總線上的一個(gè)主節(jié)點(diǎn)接收同步脈沖,而是使用操作系統(tǒng)方法生成一個(gè)與同步脈沖作用相同的周期性事件,來實(shí)現(xiàn)計(jì)時(shí)器。一個(gè)操作系統(tǒng)是一組業(yè)務(wù),它提供了一種方法,通過它,一個(gè)或多個(gè)功能塊可以共享一個(gè)硬件平臺。每個(gè)計(jì)時(shí)器事件標(biāo)識一個(gè)新的時(shí)間間隔的開始,在該時(shí)間間隔期間,軟件路由器516向功能塊513-515發(fā)送請求消息。功能塊513-515從軟件路由器接收請求消息并將被請求的數(shù)據(jù)送回軟件路由器516。在該實(shí)例中,軟件路由器516利用操作系統(tǒng)提供的一個(gè)消息隊(duì)列對來自功能塊513-515的消息排隊(duì),直到下一時(shí)間間隔。在下一時(shí)間間隔開始時(shí),軟件路由器將排隊(duì)消息分配給功能塊513-515中合適的一個(gè),并向功能塊513-515發(fā)送下一組請求消息。在該實(shí)例中,按操作系統(tǒng)方法將消息按優(yōu)先級排列,給實(shí)時(shí)消息分配高優(yōu)先級,給非實(shí)時(shí)消息分配低優(yōu)先級。該實(shí)例使得即使在節(jié)點(diǎn)未被連接到一個(gè)CAN-D總線上時(shí),仍能夠進(jìn)行單一節(jié)點(diǎn)內(nèi)的確定性的、實(shí)時(shí)的處理。當(dāng)然,如果合適的話,一個(gè)以這種方式操作的節(jié)點(diǎn)可以很容易地被集成到一個(gè)CAN-D總線環(huán)境中。
圖6描述了在每個(gè)節(jié)點(diǎn)中響應(yīng)一個(gè)同步信號而出現(xiàn)的步驟。圖6用于描述包含CAN-D總線上的多重節(jié)點(diǎn)的實(shí)例的操作,以及一個(gè)未被連接到CAN-D總線上但卻按一個(gè)CAN-D基礎(chǔ)的協(xié)議在多重功能塊間通信的單個(gè)節(jié)點(diǎn)的例子。在第600步,在一個(gè)節(jié)點(diǎn)接收到同步信號。如以上提到的,同步信號被從主節(jié)點(diǎn)發(fā)送到總線上,或換一種方式,當(dāng)一個(gè)節(jié)點(diǎn)獨(dú)立于總線工作時(shí),同步信號作為一個(gè)本地計(jì)時(shí)器事件而被生成。每個(gè)節(jié)點(diǎn)都用每個(gè)同步信號重新啟動一個(gè)新的時(shí)間分割,以此獲得總線上所有節(jié)點(diǎn)和/或一個(gè)節(jié)點(diǎn)內(nèi)的所有功能塊間的時(shí)間共識。一個(gè)新的時(shí)間間隔由每個(gè)同步信息開始并繼續(xù)到第601步進(jìn)行處理。
在第601步,在前一時(shí)間間隔期間排隊(duì)的任何實(shí)時(shí)消息都被適當(dāng)?shù)貍鬟f。在多個(gè)節(jié)點(diǎn)連接到一個(gè)CAN-D總線上的情況下,實(shí)時(shí)消息被放在CAN-D總線上。在單一節(jié)點(diǎn)的情況下,實(shí)時(shí)消息被分配給合適的功能塊。接著執(zhí)行第602步進(jìn)行處理。
在第602步,生成當(dāng)前時(shí)間間隔的實(shí)時(shí)數(shù)據(jù)。根據(jù)節(jié)點(diǎn)(和/或節(jié)點(diǎn)中的軟件路由器)的配置,在生成實(shí)時(shí)數(shù)據(jù)的時(shí)間分隔期間,可能發(fā)送一些實(shí)時(shí)數(shù)據(jù)。非實(shí)時(shí)數(shù)據(jù)一般是在一個(gè)時(shí)間分隔期間有可用時(shí)間的任何時(shí)候被發(fā)送的。這可以是在所有的實(shí)時(shí)數(shù)據(jù)均已發(fā)送完畢之后或在正在生成實(shí)時(shí)數(shù)據(jù)且總線空閑的時(shí)間區(qū)間。進(jìn)程從第602步繼續(xù)到判定塊603,這里若在當(dāng)前時(shí)間分隔中可得到更多的時(shí)間,則進(jìn)程轉(zhuǎn)到第604步。在第604步,發(fā)送非實(shí)時(shí)數(shù)據(jù)。在該步中也可發(fā)送實(shí)時(shí)數(shù)據(jù)。重復(fù)第603-604步,直到生成另一同步信號,表明一個(gè)新的時(shí)間分隔的開始。
進(jìn)程步驟600-604的工作是,首先在每個(gè)時(shí)間分隔期間發(fā)送實(shí)時(shí)數(shù)據(jù),剩余時(shí)間被用于發(fā)送非實(shí)時(shí)數(shù)據(jù)。
本發(fā)明的串行總線通信系統(tǒng)將低價(jià)CAN部件和協(xié)議的簡單性和可用性與確定性屬性組合起來。于是,與以前的CAN實(shí)現(xiàn)相比,本發(fā)明的確定性CAN協(xié)議更適合于實(shí)時(shí)數(shù)據(jù)的通信。
權(quán)利要求
1.一種用于將數(shù)據(jù)在符合控制器局域網(wǎng)絡(luò)(“CAN”)串行通信協(xié)議的多個(gè)節(jié)點(diǎn)間進(jìn)行確定性通信的方法,包括以下步驟提供所述多重節(jié)點(diǎn)間的一個(gè)通信裝置(501),其中所述多重節(jié)點(diǎn)中的每一個(gè)對所述通信裝置來說都是可用的;生成所述通信設(shè)備上由所述多重節(jié)點(diǎn)識別的一個(gè)周期性事件(401);根據(jù)所述周期性事件,啟動所述多重節(jié)點(diǎn)上的公用時(shí)間分隔(TDn);和通過所述通信裝置,在所述多重節(jié)點(diǎn)的兩個(gè)節(jié)點(diǎn)間發(fā)送所述數(shù)據(jù),其中,所述數(shù)據(jù)是在所述時(shí)間分隔中已知的一個(gè)時(shí)間分隔期間發(fā)送的。
2.如權(quán)利要求1的方法,其中所述提供步驟包括提供一個(gè)通信裝置,其中所述通信裝置是一個(gè)所有的所述多重節(jié)點(diǎn)都連接到其上的數(shù)據(jù)總線。
3.如權(quán)利要求2的方法,其中,所述生成步驟包括生成一個(gè)周期性事件,其中,所述周期性事件是一個(gè)周期性同步信號;且通過所述數(shù)據(jù)總線,從所述多重節(jié)點(diǎn)中的一個(gè)向所述多重節(jié)點(diǎn)發(fā)布所述周期性同步信號。
4.如權(quán)利要求2的方法,其中,所述提供步驟包括將每一個(gè)所述節(jié)點(diǎn)生成的消息轉(zhuǎn)換為符合所述CAN協(xié)議的消息。
5.如權(quán)利要求2的方法,其中,提供所述數(shù)據(jù)總線的所述步驟包括將每個(gè)所述的多重節(jié)點(diǎn)連接到所述數(shù)據(jù)總線上,其中,每個(gè)所述節(jié)點(diǎn)都包括一個(gè)獨(dú)立儀器。
6.如權(quán)利要求5的方法,其中所述連接步驟包括用一個(gè)CAN控制器轉(zhuǎn)換在每個(gè)所述節(jié)點(diǎn)生成的消息以提供來自每個(gè)所述節(jié)點(diǎn)的,符合所述CAN協(xié)議的消息。
7.如權(quán)利要求2的方法,其中,提供所述數(shù)據(jù)總線的所述步驟包括將所述多重節(jié)點(diǎn)中的每一個(gè)連接到所述數(shù)據(jù)總線上,其中,每個(gè)所述節(jié)點(diǎn)都包含一個(gè)單個(gè)儀器的功能塊。
8.如權(quán)利要求7的方法,其中所述連接步驟包括用所述CAN控制器轉(zhuǎn)換在每個(gè)所述節(jié)點(diǎn)處生成的消息,以提供來自每個(gè)所述節(jié)點(diǎn)的符合所述CAN協(xié)議的消息。
9.如權(quán)利要求3的方法,其中,所述發(fā)布步驟包括在一個(gè)主節(jié)點(diǎn)(它是所述節(jié)點(diǎn)之一)處,生成一個(gè)高優(yōu)先級CAN消息,作為所述同步信號,在所述數(shù)據(jù)總線上,周期性地向每個(gè)所述節(jié)點(diǎn)發(fā)布所述同步信號。
10.如權(quán)利要求9的方法,其中,所述生成步驟包括在所述主節(jié)點(diǎn),生成由多重的,連續(xù)的高優(yōu)先級CAN消息構(gòu)成的一個(gè)同步信號;并通過所述數(shù)據(jù)總線周期性地向每個(gè)所述節(jié)點(diǎn)發(fā)布所述同步信號。
11.如權(quán)利要求3的方法,其中所述發(fā)布步驟包括在所述多重節(jié)點(diǎn)接收所述周期性同步信號,在每個(gè)所述節(jié)點(diǎn)重新啟動一個(gè)本地時(shí)間分隔,這樣,每個(gè)所述節(jié)點(diǎn)都按照所述公共時(shí)間分隔工作。
12.如權(quán)利要求11的方法,其中,所述發(fā)布步驟還包括響應(yīng)于所述重新啟動步驟,形成一個(gè)CAN消息用于在所述數(shù)據(jù)總線上傳輸。
13.如權(quán)利要求12的方法,其中所述形成步驟包括響應(yīng)于所述重新啟動步驟,形成一個(gè)包含實(shí)時(shí)數(shù)據(jù)的CAN消息用于在所述數(shù)據(jù)總線上傳輸。
14.如權(quán)利要求11的方法,其中,所述發(fā)布步驟還包括將每個(gè)所述時(shí)間分隔劃分為時(shí)段,在每段期間,通過數(shù)據(jù)總線傳輸不同類型的所述數(shù)據(jù)。
15.如權(quán)利要求1的方法,其中,所述提供步驟包括提供所述多重節(jié)點(diǎn)間的一個(gè)通信裝置,其中,每個(gè)所述多重節(jié)點(diǎn)都是一個(gè)單個(gè)儀器中的一個(gè)功能塊。
16.如權(quán)利要求15的方法中的所述提供步驟包括提供所述多重節(jié)點(diǎn)間的一個(gè)通信裝置,其中,所述通信裝置是所述儀器的操作系統(tǒng)。
17.如權(quán)利要求16的方法中的所述生成步驟包括生成一個(gè)周期性事件,其中,所述周期性事件是所述操作系統(tǒng)的一個(gè)計(jì)時(shí)器輸出;并從所述操作系統(tǒng)向所述多重節(jié)點(diǎn)傳送所述計(jì)時(shí)器輸出。
18.用于在符合控制器局域網(wǎng)絡(luò)(“CAN”)串行通信協(xié)議的多重節(jié)點(diǎn)(500)間,進(jìn)行數(shù)據(jù)的確定性通信的裝置,包括一個(gè)數(shù)據(jù)總線(501),每個(gè)所述的多重節(jié)點(diǎn)都連接到其上;一個(gè)主節(jié)點(diǎn),它是所述節(jié)點(diǎn)之一,用于在所述數(shù)據(jù)總線上向所述多重節(jié)點(diǎn)發(fā)布一個(gè)周期性同步信號(401,411);每個(gè)所述節(jié)點(diǎn)處的裝置(516),它響應(yīng)于所述周期性同步信號的接收,啟動一個(gè)時(shí)間分隔;和裝置(502,504),用于通過所述數(shù)據(jù)總線,在所述多重節(jié)點(diǎn)的兩個(gè)節(jié)點(diǎn)間傳送所述數(shù)據(jù),其中,所述數(shù)據(jù)是在一個(gè)已知的所述時(shí)間分隔期間傳輸?shù)摹?br>
19.如權(quán)利要求18的設(shè)備,其中,所述數(shù)據(jù)總線包括在每個(gè)所述的多重節(jié)點(diǎn)處的,用于將在所述節(jié)點(diǎn)內(nèi)生成的消息轉(zhuǎn)換為符合所述CAN協(xié)議的格式的裝置。
20.如權(quán)利要求19的裝置,其中,所述轉(zhuǎn)換裝置包括每個(gè)所述節(jié)點(diǎn)處的物理接口裝置,用于所述數(shù)據(jù)總線和每個(gè)所述節(jié)點(diǎn)的接口;和CAN協(xié)議裝置,用于將所述節(jié)點(diǎn)中生成的消息轉(zhuǎn)換為符合所述CAN協(xié)議的格式。
21.如權(quán)利要求18的裝置,其中,所述主節(jié)點(diǎn)包括定時(shí)器,用于建立所述周期性同步信號的定時(shí)。
22.如權(quán)利要求18的裝置,其中所述啟動器包括根據(jù)所述同步信號,生成一個(gè)包含所述數(shù)據(jù)的CAN消息的裝置;和響應(yīng)于所述生成裝置,請求在所述數(shù)據(jù)總線上發(fā)送所述CAN消息的裝置。
23.如權(quán)利要求22的裝置,其中,所述發(fā)送裝置包括響應(yīng)于所述請求裝置,判斷所述多重CAN消息中的哪一個(gè)是要在所述數(shù)據(jù)總線上傳輸?shù)南乱粋€(gè)消息的裝置;和響應(yīng)于所述判優(yōu)裝置,將所述CAN消息從所述節(jié)點(diǎn)之一發(fā)送給所述數(shù)據(jù)總線的裝置,從數(shù)據(jù)總線上,其它所述多重節(jié)點(diǎn)可以訪問所述CAN消息。
全文摘要
一種裝置和方法,用于以符合控制器局域網(wǎng)絡(luò)(“CAN”)通信協(xié)議的方式,在多重節(jié)點(diǎn)(500)間,進(jìn)行數(shù)據(jù)的確定性通信。該系統(tǒng)適用于多重節(jié)點(diǎn)是一個(gè)操作系統(tǒng)環(huán)境中的功能塊的情況,并適用于每個(gè)多重節(jié)點(diǎn)都連接到一個(gè)串行總線(501)上的情況。系統(tǒng)使用標(biāo)準(zhǔn)CAN誤差校驗(yàn),總裁判優(yōu)和消息格式化,從而使用標(biāo)準(zhǔn)的CAN控制器和收發(fā)器??偩€上的一個(gè)節(jié)點(diǎn)被選為主節(jié)點(diǎn)。主節(jié)點(diǎn)發(fā)布一個(gè)定義時(shí)間分隔(TD
文檔編號H04L12/417GK1258404SQ98805575
公開日2000年6月28日 申請日期1998年5月13日 優(yōu)先權(quán)日1997年5月27日
發(fā)明者T·C·格林, P·J·哈伊斯, A·L·薩姆森, J·S·瓦爾克, M·J·佐洛克 申請人:微動公司