收訊息也是定義在此傳輸層,還有ㄧ些位定時(bit timing)的普通功能也屬於 傳輸層的一部分,傳輸層的修改是受到限制的。實際硬體如何完成連線接收到 的資料要做何種處理等,都不在其規格範圍內。CAN 具有以下的特點:
z 資料訊息具有優先權(priority)
z 優先權的仲裁(arbitration)為非破壞性 z 保證延遲時間
z 彈性的架構
z 採用廣播的方式(multicast),並藉由傳輸的訊息做時序同步的動作 z 任一節點皆可主動發出訊息(multimaster)
z 未傳送成功的訊息會自動重新傳送 z 錯誤檢查
z 區分暫時性錯誤和永久性錯誤並且自動關閉有問題的節點
接下來將介紹 CAN 的架構及特性,在 2-1-2 介紹資料的傳輸方式,2-1-3 則是 介紹CAN 的錯誤處理。
2-1-2 CAN 的資料傳輸方式
在介紹CAN 的傳輸格式之前先介紹一些 CAN 的基本概念:
z 傳輸速率
不同的系統有不同的傳輸速度,但在一給定的系統當中傳輸速度是 唯一且固定的,在規格書中寫到最高傳輸速度為1Mbps。
z 仲裁(Arbitration)
只要匯流排空閒的時候,任何節點都可以發送和接收訊息,但是當 有兩個節點以上要傳送訊息時,此時在匯流排上面就會產生衝突,
透過訊息仲裁區的識別碼一個位元一個位元仲裁,即可解決衝突。
在仲裁期間,位元為0 的時候具有較高的優先權為 dominant 訊號,
當位元為1 的時候優先權較低為 recessive 訊號,因此當有兩個以 上的節點發出訊息,每個發送節點都會對自己發送的訊息和匯流排 上面的訊息做比較,當匯流排的訊息和自己發送的相同,則繼續發 送位元,當發送訊息為一recessive 訊號,匯流排上面為 dominant 訊號時,則此發送節點失去仲裁,必須退出發送狀態,得等下次訊 息發送時再重新發送,圖2.1 為仲裁時的示意圖,由此圖可以看出 當識別碼越小的時候,有越高的優先權。
圖2.1 節點優先權仲裁
z 發送節點(transmitter)與接收節點(receiver)
當有一節點再傳送資料時,此節點稱為傳送節點,其餘的節點稱為 接收節點。
z 發送節點對匯流排的偵測
在網路中,發送節點在發送資料的同時,也需偵測匯流排上的值是 否與其送出的相同。
接下來要介紹CAN 的傳輸格式,在原本 CAN 的規範當中,訊息的識別碼 只有11bits,為了擴大應用在 CAN 2.0 的規範中又另外訂了擴展模式(extended format),擴展模式包含了 29bits 識別碼,可以讓我們在運用時更有彈性。在 CAN 的網路傳輸中,有四種不同的欄框(Frame),分別為資料欄框(Data frame)、
遙控欄框(Remote frame)、錯誤欄框(Error frame)與過載欄框(Overload frame),其中兩個資料(遙控)欄框或是資料欄框與遙控欄框之間都需要以欄 框前需先介紹CAN 的填充/編碼(bit stuffing/coding)傳輸方式:
當發送節點在傳送資料或遙控欄框的時候,若是傳送五個連續且相
仲裁區(Arbitration Field)
控制區(Control Field)
資料區(Data Field)
循環多餘碼區(CRC Field)
圖2.2 標準 CAN 資料欄框格式
圖2.3 擴展 CAN 資料欄框格式
以下將介紹資料欄框的各區域:
SOF(Start of Frame)
起始欄框,資料欄框及遙控欄框的起始,由一個dominant bit 組成,當匯流排閒置的時候才可以開始新的資料或是遙 控的欄框。
Identifier
識別碼,識別碼是用來決定訊息優先權,當識別碼越低的 時候優先權越高,在標準CAN 中識別碼為 11 bits,在擴 展CAN 中識別碼為 29 bits。
RTR(Remote Transmission Request)
遙控傳輸請求,RTR 為 dominant bit 的時候此欄框為資料 欄框,當RTR 為 recessive bit 的時候此欄框為遙控欄框。
SRR(Substitute Remote Request)
替代遙控請求,在擴展CAN 中用來取代標準 CAN 中的 RTR 位置,為一 recessive bit,當標準 CAN 和擴展 CAN
起衝突時由於SRR 回 recessive bit,根據 CAN 的仲裁方式 標準CAN 的優先權大於擴展 CAN。
IDE(Identifier Extension)
當此bit 為 dominant 時,此訊息的識別碼為標準 CAN 的
CRC(Cyclic Redundancy Check)
循環冗餘檢查,用來確認傳送資料是否正確。
ACK(Acknowledgement Filed)
確認區,由兩個位元組成,分別為ACK Slot 和 ACK 確認 邊界,一開始訊息送出去的時候都是recessive bits,當匯 流排上面有任何一個節點成功接受訊息,則將ACK Slot 的recessive bit 改成 dominant bit,如此發送端可以藉由偵 測ACK Slot 來判斷訊息是否有正確被接收。
EOF(End of Frame)
終止欄框,由七個recessive bits 所組成,表示一個資料欄
框的結束。
IFS(Inter-frame Space)
擁有7 個 bits,其用途主要是用來區隔資料欄框或是遙控 欄框,以提供節點處理資料的時間。
z 遙控欄框(Remote Frame)
用來請求其他節點傳送所需要的資料,遙控欄框和資料欄框相 似,但是有兩點不同的地方,第一個不同點是遙控欄框RTR 為 recessive bit,另外一個不同點是遙控欄框是不帶任何資料。
z 錯誤欄框(Error Frame)
錯誤欄框由兩個部份所組成,第一個部份是錯誤旗標(error flag),第二個部份為錯誤邊界(error delimiter)。為了正確終止error frame,「錯誤被動(error-passive)」的節點要求匯流排最少要有 3 bits 時間空閒(idle)下來,因此匯流排的負載不應為 100%。
錯誤旗標(error flag)有兩種形式,一種是由連續六個 dominant bit 所組成的主動錯誤旗標,另一種則是由六個 recessive bit 所組成 的被動錯誤旗標。
錯誤邊界(error delimiter)由 8 個 recessive bits 組成,當完成 錯誤旗標的傳輸後,節點會先發出一個recessive bit 並且開始偵測 匯流排直到偵測到第一個recessive bit 為止,在偵測到第一個 recessive bit 之後節點繼續把剩下的七個 recessive bits 發送出去。當 所有節點偵測到8 個 recessive bits 之後,錯誤欄框及傳送完成。
z 過載欄框(Overload Frame)
過載欄框由過載旗標和過載邊界所組成,其格式跟錯誤欄相 似,過載旗標由六個dominant bits 所組成,過載邊界由八個 recessive bits 所組成。節點會在三個情況下發出過載欄框:
當接收器在下筆資料欄框或遙控欄框進來之前要有一個 延遲時間的時候。
當節點在中斷欄框期間偵測到 dominant bit 的時候
當 節 點 在 錯 誤 邊 界 及 過 載 邊 界 的 第 八 個 bit 採 樣 到 dominant bit 的時候。
在第一種情況,過載欄框只能由接收節點在中斷欄框裡的第一個位元開始 發出。第二、三種情況則是在偵測到第一個dominant bit 之後的位元開始發出。
在發出過載旗標後緊接著發送過載邊界,如此即可發送完成。
2-1-3 CAN 的錯誤處理
CAN 的錯誤類型有五個種類,分別為位錯誤(Bit Error)、填充錯誤(Stuff Error)、循環冗餘碼錯誤(CRC Error)、格式錯誤(Form Error)、確認錯誤(ACK
Error),下面將針對這五種類型做介紹:
z 位錯誤
節點在發送訊息的同時也會偵測匯流排上面的狀況,當發送的值與偵 測的值不一樣時,此時則產生一個位錯誤。但是在仲裁區(arbitration filed)
時,某一節點所發出的recessive bit 被另一節點發出的 dominant bit 所覆蓋 的時候,或是在確認區(acknowledgement filed)時,發送節點送出的 recessive bit 被其他接收節點發出的 dominant bit 所覆蓋的時候,不會被認定為位錯
CAN 在故障界定上有三種狀態,分別是 z 錯誤主動(error-active)
可正常參與匯流排上面的通訊,並且在錯誤的時候發出主動錯誤訊 號。
z 錯誤被動(error-passive)
不可以發送主動錯誤訊號,可參與匯流排的通訊,但是錯誤產生時只 能發送被動錯誤訊號,發送後「錯誤被動」在初始下一個傳送之前處於等 待狀態。
z 離線(bus-off)
若節點處於離線狀態,則不允許該節點對匯流排上面有任何影響。
以上三種狀態的區別,主要以該節點產生錯誤多寡來決定,每個節點都有 一個傳送錯誤計數器與和一個接收錯誤計數器,當一個節點成功傳送或接收一 個欄框的時候則其對應的計數器減一,若發生錯誤則對應計數器加八。當節點 中的任何一個計數器值超過 127 的時候,此節點便進入「錯誤被動」的狀態,
若超過255 的時候則此節點進入離線狀態,計數器不超過 127 的時候即為「錯 誤主動」的狀態。若在匯流排上監視到連續11 個 recessive bits 的時候,則連線 的節點可以變成「錯誤被動」的狀態,藉由這三種狀態,可以限制錯誤頻繁的 節點對網路存取權與整個系統的影響,使整個網路不至於因為少數頻繁出現錯 誤的節點而癱瘓。
2-2 乙太網路(Ethernet)介紹
乙太網路(Ethernet)源自於 Xerox 公司的區域網路系統,一開始速度只有
2.49Mbps,僅在 Xerox 公司內部使用,隨後由 DEC、Intel 和 Xerox 三家公司共 同參與標準之改進與擴展,並且發表了Ethernet Version 2(EV2)規格,將網路頻 寬提升到 10Mbps,之後由 IEEE 根據 EV2 的內容,在 1983 年通過了 802.3 10Mbps,最長傳輸距離為 100 公尺。除了 10BASE-T 之外,還有 10BASE5(粗 纜乙太網路)和 10BASE2(細纜乙太網路),上述兩種均使用匯流排傳輸方式做連
目前乙太網路最新的版本為Gigabit Ethernet 支援傳輸速度高達 1Gbps,但 是目前還是以快速乙太網路或乙太網路為主,Gigabit Ethernet 目前還不普及。
2-3 IEEE 802.11 介紹[14]
本章主要介紹 IEEE802.11,分別描述 MAC 層的運作機制,和網路使用模 式。
2-3-1 MAC 層的運作機制
802.11 屬於 IEEE802 的成員之一,如圖 2.4 所示,而 IEEE802 主要規範 OSI 模型最底下兩層分別實體層(PHY Layer)和資料鍊結層(Data Link Layer)。只要是 802 系列的網路,必具備上述兩種元件,其中 MAC 用以決定如何存取媒介與傳 送資料的規則,至於傳送與接收的細節,交由PHY 負責處理。
圖2.4 IEEE 802.11 家族與 OSI 模型的關係
802.11 規格的關鍵在於媒介存取控制層(MAC),MAC 層位於實體層之上,
控制資料的傳輸,負責核心的訊框封裝作業(Core Framing Operation),以及與相
連接的骨幹網路做必要的互動。至於實體層(PHY),則可能提供不同的傳輸速 度。
相較2-2 節提到屬於 802.3 的 Ethernet,.802.3 是載波感應多重存取/衝突偵 測 (carrier sense multiple access network with collision detection;CSMA/CD),
802.11 同樣採取載波感應多重存取機制來控制傳輸媒介的存取,不過由於底層 媒介不同,而802.11 無法達到碰撞偵測的要求,為了避免封包碰撞浪費傳輸資 源,因此 802.11 轉而使用載波感應多重存取/碰撞避免(carrier sense multiple access network with collision avoidance;CSMA/CA),然而和 Ethernet 一樣,802.11 採用不具中樞控制功能的分散式存取機制,因而每部802.11 工作站存取媒介的
802.11 同樣採取載波感應多重存取機制來控制傳輸媒介的存取,不過由於底層 媒介不同,而802.11 無法達到碰撞偵測的要求,為了避免封包碰撞浪費傳輸資 源,因此 802.11 轉而使用載波感應多重存取/碰撞避免(carrier sense multiple access network with collision avoidance;CSMA/CA),然而和 Ethernet 一樣,802.11 採用不具中樞控制功能的分散式存取機制,因而每部802.11 工作站存取媒介的