• 沒有找到結果。

基於CSMA/CA的機制

第三章 發展的機制

3.3 相關機制

3.3.1 基於CSMA/CA的機制

3.3.1.1 適用時機

經過模擬的證實,當 Tag 數超過 512 個時,會發生辨識有所漏失的現象,也就是有 些 Tag 會永遠無法被 Reader 辨識到。另外,在 802.11 的規格亦建議 node 數最好不要 超過 512 個,故此機制在同時間於 Reader 讀取範圍內的 Tag 數不大於 512 個時,可以 適用;反之,則不適用。

3.3.1.2 機制說明

1. 一輪開始時,經過 SIFS(Short Inter Frame Space)的時間,Reader 發送 Beacon Command 給所有 Tag

2. 經過 DIFS(DCF Inter Frame Space)的時間,Reader 發送 Backoff Restart Command 給所有 Tag

3. 若 Tag 還沒隨機選過 Backoff Time Slot(其選法依文獻探討裡 CSMA/CA 之 DCF 與延後法則所示),則在接到 Reader 所發送的 Beacon Command 後,開始隨機選 取;若已取過,則忽視 Beacon Command

4. 當 Tag 收到 Backoff Restart Command 後,開始倒數其所取到的 Time Slot(其 倒數方法依文獻探討裡 CSMA/CA 之解說圖示)

5. 若 Time Slot 倒數完,則 Tag 送出 Request to Send 的 Command 給 Reader 6. 若 Reader 收到一個以上的 Request to Send Command,則表示碰撞發生,此時

Reader 會送出 Backoff Reset Command,要已發送出 Request to Send Command 的 Tag 再從 2 的下一階次方中隨機取 Time Slot(其選法依文獻探討裡 CSMA/CA 之 DCF 與延後法則所示),做為 Backoff Time Slot

7. 若 Reader 只收到一個 Request to Send Command,表示沒有發生碰撞,Reader 會廣播 Request Accept 加上 Backoff Suspend 的 Command 給 Tag

8. 有送出 Request to Send Command 的 Tag 在收到 Request Accept 加上 Backoff Suspend 的 Command 時,開始傳送本身的 ID 資訊,其它未送 Request to Send Command 的 Tag,則停止倒數其 Time Slot

9. 若 Tag 成功的傳送本身 ID 資訊給 Reader,則 Reader 會送出 Received ACK Command 給 Tag,否則,則送 ID Data Resend Command 給 Tag,要求重送 10. 當 Reader 成功收到 Tag 所送的 ID 資料後,一輪即結束

3.3.1.4 方法協定圖

圖十八 基於 CSMA/CA 的機制協定圖

上圖是本方法的協定圖。在圖中,每個階段開始時,於一個 SIFS(Short Inter Frame Space)時間,Reader 會廣播 Beacon 的訊息,該 Beacon 的訊息除了通知 Tag,其目前 已在 Reader 的讀取範圍外,亦可藉由該 Beacon 告知未選取 Backoff Slot 的 Tag 開始 隨機選取一個 Backoff Time Slot。經過一個 DIFS(DCF Inter Frame Space)後,Reader 送出 Backoff Restart Command 給所有 Tag,Tag 繼續或開始 Backoff。

當有一個 Tag Backoff 完後,隨即送出 Request To Send 給 Reader,若此時 Reader 發現該 Request to Send 與其它 Tag 的 Request to Send 相碰撞時,會送出 Backoff Reset Command 給發出 Request to Send 的 Tag,要其在下一階的 Time Slot 中再隨機選個 Backoff Time。若該 Tag 所送出的 Request To Send 沒有與其它的 Tag 發生碰撞,也就 是說只有一個 Tag 發出 Request to Send 時,則 Reader 會廣播 Request Aceept 加上 Backoff Suspend 的 Command 給其它沒有送出 Request to Send 的 Tag。

此時送出 Request to Send 的 Tag 開始傳送其 ID 給 Reader。若傳送的過程中沒有

除了告知Tag已在Reader讀取範圍內之外,沒有取過Backoff Time Slot的Tag 在接獲此Command之後,要隨機地從 25 – 1 中取出Time Slot做Backoff用(其 選法依文獻探討裡CSMA/CA之DCF與延後法則所示)。

2. Backoff Restart Command

Reader 送出此 Command,以告知在範圍內的 Tag 開始倒數已取的 Time Slot (其 倒數方法依文獻探討裡 CSMA/CA 之解說圖示)。

3. Request to Send Command

當 Tag 的 Time Slot 倒數完畢,則發送此 Command 給 Reader。

4. Backoff Reset Command

當 Reader 收到一個以上的 Request to Send Command,表示發生碰撞,此時

Reader 送出此 Command 給那些送過 Request to Send Command 的 Tag,要其再 從 2 的下一階次方中,隨機取個 Time Slot (其選法依文獻探討裡 CSMA/CA 之 DCF 與延後法則所示)。

5. Request Accepted and Backoff Suspend Command

當 Reader 只收到一個 Tag 送出的 Request to Send Command,表示沒有發生碰 撞,此時 Reader 送出此 Command 給範圍內的 Tag,除了告知送出 Request to Send Command 的 Tag,Reader 已經收到其所送出的 Request to Send Command 外,

亦告知其它 Tag 停止倒數 Time Slot。

6. ID Data Resend Command

若 Tag 送 ID 資料時有發生任何錯誤,在 Reader 發現後,會送出此 Command 要 求 Tag 再重送一次 ID 資料給 Reader。

7. Tag ID Received Command

當 Reader 收到 Tag 所送的 ID 資料且驗證無誤後,Reader 即送此 Command 給該 Tag 告知已收到其所送的 ID 資料;除此之外,此 Command 也謂著這一輪即將結 束,下一輪馬上開始。

3.3.1.6 Backoff Time Slot 間隔

Backoff Time Slot 的間隔時間得去良好的定義,否則有可能會發生 Command 傳送 失敗或錯誤的情況。此發生的時機在於當某個 Tag 發送 Request to Send Command 後,

而 Reader 還沒廣播或只廣播一半 Request Accepted and Backoff Suspend Command 或 Backoff Reset Command,另一個取得下一個 Time Slot 的 Tag 卻開始傳送 Request to Send Command 時;另外也有可能在某個 Tag 還沒發送完 Request to Send Command 時,

另一個取得下一個 Time Slot 的 Tag 就開始傳送 Request to Send Command,而造成碰 撞的情況。為了不讓此情況發生,在這裡定義 Time Slot 的間隔至少為一個 Command 往

相關文件