第二章 第二章 整合有線與無線的網路控制系統 整合有線與無線的網路控制系統 整合有線與無線的網路控制系統 整合有線與無線的網路控制系統
本章先介紹 CAN 的通訊協定與資料傳輸格式、無線網路 IEEE802.11 的網 路架構與工作方式、TCP/IP 通訊協定,最後再說明整合 CAN 與 IEEE802.11 的實驗平台。
2-1 CAN (Controller Area Network) [20]
2-1-1 CAN 網路協定簡介
CAN 全名為 Controller Area Network,起源於 1980 年代後期,由德國 Robert Bosch 公司所制定的一種具有高度安全且支援即時分散式控制的通訊協 定,最高傳輸速度可達 1M bit per second(bps)。到 1990 年代其通訊協定逐漸 成型,相關的 IC 元件紛紛被推出,才被廣泛地應用於工業界。CAN 原先是應 用在汽車電子系統,用來連接汽車內防鎖死煞車系統(ABS)或是引擎控制與感 測單元等的電子元件,以簡化車內複雜的硬體配線;但由於 CAN 提供可靠快 速的資料傳遞,適合用在即時系統(real-time system)且價格低廉,因此,發展 至今也被廣泛運用在各類的控制系統上。目前 CAN 已成為國際標準規格
(ISO11898),CAN 在場域匯流排(field bus)的應用已有 Honeywell 的 SDS 及 Allen-Bradley 的 DeviceNet[20]。
CAN 根據其傳輸協定,具有以下的特點:
資料訊息具有優先權(priority)
優先權的仲裁(arbitration)為非破壞性
彈性的架構
採用廣播的方式(multicast),做時序同步的動作
任一節點皆可主動發出訊息(multimaster)
未傳送成功的訊息會自動重新傳送
錯誤檢查
接下來,2-1-2 節將介紹 CAN 的通訊協定,2-1-3節介紹 CAN 的訊息封包 格式與錯誤處理機制。
2-1-2 CAN 通訊協定
CAN 通訊協定方面,我們分成以下三部分介紹:網路架構、傳輸方式、
網路仲裁。
CAN 網路架構:
CAN 網路架構,可分為 CAN 對象層(the CAN-object layer)、CAN 傳輸層 (the CAN-transfer layer)、實體層(the physical layer)。
對象層的功能為:
尋找被發送的訊息
從傳輸層中挑選所需的訊息
提供應用層所需的硬體介面
傳輸層主要是定義通訊協定,其功能為:
控制訊息欄框的結構
訊息的仲裁
錯誤偵測
錯誤標定
故障界定
發送、接收訊息的時機
實體層則是電子訊號的傳遞與硬體接線。
若由 ISO/OSI 網路模型,將 CAN 的通訊協定加以歸類,其通訊協定僅包 含 OSI 模型中的資料連結層(Data Link Layer)和實體層(Physical Layer)兩 個部份,圖 2.1 為 CAN 在 OSI 定義下,各個部份的功能與定義。
圖 2.1 CAN-OSI 網路模型
CAN 傳輸方式:
這部份針對 CAN Bus 在網路傳輸方式進行說明:
傳輸速率(bit rate)
在系統中其傳輸速度是固定的,規格書中最高傳輸速率可達 1Mbps,在 40m 以內的傳輸距離,隨著距離增長,可達到的傳輸速率也跟著下降,例 如距離拉長到 400m 時,只能用 100kbps 的最高速率傳輸。
傳送節點(transmitter)和接收節點(receiver)
當任一節點取得網路使用權,並進行資料傳送時,此一節點稱為傳送節點,
網路中其餘節點稱為接收節點。
傳送節點對網路的偵測
傳送節點在進行資料傳送的同時,也偵測網路上出現的位元值是否與所送 出的相同。
網路存取方式
由於 CAN 採用多重節點隨機存取(random access)網路,訊息封包碰撞 (collision)的情形在所難免,因此,CAN 採用的解決方法是 CSMA/CD +AMP (Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority),每個節點進行傳輸之前,先進行網路監聽,
確定網路閒置後才開始傳輸,但並無法完全避免碰撞的問題,一旦碰撞發 生將進入優先權仲裁(Priority Arbitration),決定網路使用權,優先權較低 者喪失網路使用權後,在下次網路閒置時,自動重新訊息的傳遞。這樣的 機制決定了網路媒介的存取行為和網路封包的傳輸次序,因此,接著對此 仲裁機制進行詳細介紹。
網路使用權的仲裁機制(Arbitration)
匯流排空閒時,任何節點均可發送和接收資料,但當有兩個以上節點要傳 送訊息時,網路上便發生封包碰撞的情形,此時便進入仲裁階段,仲裁的 方式是將每個節點發送的訊息封包識別碼(identifier),逐一進行位元比對,
而當上述的兩種位元值同時被發送時,位元為 0 的為 dominant 位元,具 有較高優先權,所以會被保留下來,位元為 1 的為 recessive 位元其優先 權較低,將不會出現,因此,當所有發送節點對自己發送的位元值和網路 線上的位元值比照時,如果線上的值和自己發送的相同,則繼續發送訊息,
而如果發送訊息為 recessive 訊號,而線上為 dominant 訊號時,則此發送 節點失去仲裁權,必須退出發送狀態,等下次網路閒置時再重新發送,以 圖2.2為例,節點 1 和節點 3 先後失去仲裁權,節點 2 在此仲裁取得優先 權,所以可繼續訊息的傳輸。由此可看出當識別碼越小,則擁有越高的優 先權。
圖 2.2 節點優先權仲裁 框(remote frame)、錯誤欄框(Error Frame)和過載欄框(overload frame)。另外,
兩個資料(或遙控)欄框或是資料欄框和遙控欄框之間都需欄框間隔(interframe spacing)加以區分。
在說明欄框前,先介紹 CAN 的填充/編碼(bit stuffing/coding)傳輸方式:當 發送節點在傳送資料或遙控欄框的時候,若是傳送五個連續且相同位準的位元,
Bus line
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20
Node 3 loses arbitration Node 1 loses arbitration
Node 1
Node 2
Node 3
Bus line Node 1
Node 2
Node 3
Bus line
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20 ID.28 ID.27 ID.26 ID.25 ID.24 ID.23
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20 ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21
ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20 ID.28 ID.27 ID.26 ID.25 ID.24 ID.23 ID.22 ID.21 ID.20
Node 3 loses arbitration Node 3 loses arbitration Node 1 loses arbitration
Node 1 loses arbitration
資料欄框(Data Frame)
當節點有資料要傳輸的時候,可透過資料欄框將資料發送到網路,所以,
其訊息長度是所有欄框中最大的,也是格式最為複雜的,下圖是標準 CAN 的資料欄框格式(standard data frame),圖是擴展 CAN 的資料欄框格式 (extended data frame),兩者的差異僅在識別碼的長度,因此,底下就以擴 展格式為例,說明各段的意義:
RTR(Remote Transmission Request)
遙控傳輸請求,RTR 為 dominant bit 時,表示此欄框為資料欄框,當 RTR 為 recessive bit 的時,表示此欄框為遙控欄框。
S O F
11-bit Identifier DLC I CRC ACK 0 ~ 8 bytes Data
11-bit Identifier DLC I CRC ACK 0 ~ 8 bytes Data
11-bit Identifier DLC
S CRC ACK 18-bit Identifier 0 ~ 8 bytes Data
仲裁區 控制區 資料區 CRC
區 S
O F
11-bit Identifier DLC
S CRC ACK 18-bit Identifier 0 ~ 8 bytes Data
S O F
11-bit Identifier DLC
S CRC ACK 18-bit Identifier 0 ~ 8 bytes Data
仲裁區 控制區 資料區 CRC
區
仲裁區 控制區 資料區 CRC
區
SRR(Substitute Remote Request)
替代遙控請求,在擴展 CAN 中用來取代標準 CAN 中的 RTR 位置,為一 recessive bit,當標準 CAN 和擴展 CAN 起衝突時,由於 SRR 為 recessive bit,
根據 CAN 的仲裁方式,標準 CAN 的優先權大於擴展 CAN。
IDE(Identifier Extension)
當此位元為 dominant 時,此訊息的識別碼為標準 CAN 的識別碼,當此位 元為 recessive 時,此訊息的識別碼為擴展 CAN 的識別碼。
r0, r1
保留位元,必須為 dominant bit。
DLC(Data Length Code)
傳送資料的長度,由 4 個位元所組成。
Data
欲傳送資料的存放地方,最少可傳送 0 個位元組,最多可傳送 8 個位元組。
CRC(Cyclic Redundancy Check)
循環冗餘檢查,用來確認傳送資料是否正確,由 15 個位元組成。
ACK(Acknowledgement Filed)
確認區,由 2 個位元組成,分別為 ACK Slot 和 ACK 確認邊界,一開始訊 息送出去的時候都是 recessive bits,當匯流排上面有任何一個節點成功接 受訊息,則將 ACK Slot 的 recessive bit 改成 dominant bit,如此一來,發 送端可以藉由偵測 ACK Slot 來判斷訊息是否有正確被接收。
EOF(End of Frame)
欄框終止,由 7 個 recessive bit 所組成,表示一個資料欄框的結束。
IFS(Inter-frame Space)
欄框間隔,由 3 個位元組成,其用途主要是用來區隔資料欄框或是遙控欄 框,以提供節點處理資料的時間。
遙控欄框(Remote Frame)
用來請求其他節點傳送所需要的資料,結構和資料欄框相似,但是有兩點 不同的地方,第一點是遙控欄框 RTR 為 recessive bit,另外一點是遙控欄 框是不帶任何資料的,其餘的格式皆與資料欄框相同,圖2.5為一擴展遙 部份所組成,第一個部份是錯誤旗標(error flag),第二個部份為錯誤邊界 (error delimiter)。錯誤旗標(error flag)有兩種形式,一種是由連續 6 個 dominant bit 所組成的主動錯誤旗標,另一種則是由 6 個 recessive bit 所組 成的被動錯誤旗標,兩者的差異將在下節詳細說明。錯誤邊界(error delimiter)由 8 個 recessive bits 組成,當完成錯誤旗標的傳輸後,節點開始 偵測網路線上的值,直到偵測到由 dominant bit 轉為 recessive bit 的過渡
過載欄框由過載旗標(overload flag)和過載邊界(overload delimiter)所組成,
其格式跟錯誤欄相似,過載旗標由 6 個 dominant bit 所組成,過載邊界由
S O F
11-bit Identifier DLC
S CRC ACK 18-bit Identifier
仲裁區 控制區 CRC
區 S
O F
11-bit Identifier DLC
S CRC ACK 18-bit Identifier
仲裁區 控制區 CRC
區
8 個 recessive bit 所組成,主要是為了替接收節點爭取處理資料的時間,
節點會在三個情況下發出過載欄框:
1. 當接收端在下筆資料欄框或遙控欄框進來之前,需要一個延遲 時間的時候。
2. 當節點在欄框間隔期間,偵測到 dominant bit 的時候
3. 當節點在錯誤邊界及過載邊界的第 8 個位元,偵測到 dominant bit 的時候。
CAN 錯誤處理機制:
CAN 對於錯誤的處理方式,是其提供可靠穩定傳輸的重要因素,主要可 分為兩大類:錯誤偵測和錯誤頻繁節點的排除,前者經由檢驗訊息封包的各項 細節,判斷其正確性,一旦發現錯誤便利用錯誤欄框的發送,使錯誤的訊息封 包重傳;對於錯誤發生頻率過高的節點,則經由後者減少其對於網路的使用權,
甚至禁止對網路的存取。
CAN 錯誤排除方式:
根據 CAN 的規範,將 CAN 網路中的所有節點,分成下列三種可能的工 作狀態,單一節點只能處在其中一種狀態,而當錯誤發生時,隨著狀態的不同,
所發送的錯誤欄框也有所不同。
主動反應錯誤(Error Active)
主動反應錯誤的節點可正常參與網路通訊,且在偵測到錯誤時,發送的是 主動式錯誤旗標。
被動反應錯誤(Error Passive)
被動反應錯誤的節點可參與網路通訊,但在偵測到錯誤時,發送的是被動 錯誤旗標。此外,此類節點在傳輸完一個欄框後,除了傳送欄框間隔,還 必須額外送出 8 個 recessive bit,才能進行下一筆傳輸,此 8 個 recessive bit
稱為暫停傳輸(suspend transmission),若在暫停傳輸期間,其他節點開始 進行傳輸,則被動反應錯誤節點轉為接收節點。藉由暫停傳輸的方式,可 有效減少此類節點對於網路的存取。
離線(Bus Off)
顧名思義,離線的節點不允許參與任何網路通訊,所有訊號輸出的部份全
顧名思義,離線的節點不允許參與任何網路通訊,所有訊號輸出的部份全