【正文】
Prefix Package Identity Command Type Group ID Source ID Target ID Command Code CRC 0xFF31 0x E7 0000 1001 3 bytes 6 bytes 6 bytes 0x20 2 bytes 收到該包的節(jié)點需要完成的工作: 檢查自身是否有父節(jié)點,如果有,則發(fā)出回復數據包;如 果無,則執(zhí)行以下步驟 將 Group ID 設置為自身的 Group ID 26 26 將 Source ID 設置為自身的父節(jié)點 修改 Source ID 后轉發(fā)該廣播包 發(fā)回回復數據包 Tag 發(fā)出的路游廣播 parence request( PRQ) 新節(jié)點加入網絡時用于確定路由,需要回復,屬于命令包。 子 節(jié)點 回復 parent reply( PRP) 包,包中含有子 節(jié)點parental candidate table( PC表) 中的內容 。 在Counter=ID 時 tag 向第一個回復的 tag/Interrogator 發(fā)送數據并計時。一級節(jié)點可能會收到其他一級節(jié)點的廣播,但不予以理會(節(jié)點只會在第一次收到廣播時記錄)。 Tag 收到回復命令后轉入睡眠狀態(tài)。 父 節(jié) 點_ I n i t e r r o g a t o rT a g 2I n i t e r r o g a t o r父 節(jié) 點I n i t e r r o g a t o rT a g 1父 節(jié) 點I n i t e r r o g a t o rT a g 5父 節(jié) 點I n i t e r r o g a t o rT a g 7父 節(jié) 點 T a g 2T a g 7父 節(jié) 點 T a g 7T a g 1 1父 節(jié) 點 T a g 5T a g 9父 節(jié) 點 T a g 5T a g 3父 節(jié) 點 T a g 3T a g 1 5父 節(jié) 點 T a g 3T a g 1 2父 節(jié) 點 T a g 5T a g 6 圖 5 網絡路由 在網絡初始化階段,每個節(jié)點以監(jiān)測到的第一個網絡初始化廣播的發(fā)起節(jié)點作為自身的父節(jié)點 ,將其余的類似廣播都忽略。 14 14 鏈路管理 鏈路管理的主要功能為創(chuàng)建、維持和釋放鏈路,每個節(jié)點都需要維持一張鏈路表,通過鏈路表來管理該節(jié)點發(fā)起和收到的所有連接。 Tag ID 和 Interrogator ID用于唯一標志每一個 Tag 和 Interrogator,每一個 Tag 和 Interrogator 的 ID 在出廠都已經確Prefix Package Identify Group ID Source ID Target ID Data Length Data CRC 0xFF31 0x 07 3 bytes 6 bytes 6 bytes 1 byte N bytes 2 bytes 12 12 定寫入 ROM 中,該 ID 都固定無法修改。 Tag ID 和 Interrogator ID用于唯一標志每一個 Tag 和 Interrogator,每一個 tag 和 interrogator 的 id 在出廠都已經確定寫入 ROM 中,該 id 都固定無法修改。采用的技術包括 CSMA或 TDMA。 每個 Interrogator 和 RFID Tag 在出廠時都已經分配好一個全球唯一的 48bit ID 作為該設備的唯一標志,并且該標志一旦確定便無法更改。在 Interrogator 計時到默認廣播時間結束后,即認為網絡內的所有 Tag 都已經初始化完畢并準備好發(fā)送數據。在網絡初始化階段,Interrogator 發(fā)出第一個廣播包之后就開始進行網絡拓撲結構的發(fā)現和建立,每一個 tag 在接收處理完 Interrogator 或者 Tag 發(fā)出的廣播包之后(確認自身的父節(jié)點,確定路由)發(fā)出一個它自己的廣播包; Tag 在監(jiān)測到廣播命令包后根據命令的類型需要完成相應的操作或者簡單地將該廣播包丟棄。 數據包 數據包的格式如下,用于在 Tag 和 Tag 之間, Tag 和 Interrogator 之間 傳輸數據,數據包長度為( 21+N) byte。 Source ID field 該字段共 6bytes,為發(fā)送廣播的 tag 或者 interrogator 的 id。 一個時間單位等于網絡傳輸時延 T。 Interrogator 的流程圖如下圖所示: 廣 播等 待T i m e O u t ?Y e sN o收 到 數 據 ?接 收回 復N oY e s時 間 窗 口 * 2收 到 全 部 數 據 ?Y e sN o 圖 6 Interrogator 建立鏈路 Tag 18 18 監(jiān) 聽識 別 廣 播Y e s選 擇 s l o t有 廣 播 ?N o記 錄 廣 播發(fā) 送 數 據等 待有 回 復 ?等 待 下 個時 間 窗 口Y e sN o睡 眠 圖 7 Tag 建立鏈路 Interrogator向周圍發(fā)送命令廣播包( REQUEST),并開始計時。當時間超出時, Tag 接收數據。在網絡中收到此廣播的 節(jié)點 將回復一個 child request( CRQ) 包。若在規(guī)定時間內沒有收到 4號 tag的 Response 回復命令, 2 號 tag繼續(xù)向周圍發(fā)送 Rediscovery 廣播。Interrogator 在收到數據后通過 Ack 命令向該 tag 答復。 回復包 Ack, response 數據包 該包用于對需要回復的數據包進行回復。 Select 的參數為 TargetID, 指出所選擇的 tag 的 ID 號。 2 號 tag 最先收到 4 號 tag 的回復。為了防止 ID 號相近的 tag 在發(fā)送數據時發(fā)生碰撞,因此在構建網絡時相近 ID 號的 tag 應該盡量分散。隨后記錄廣播來源,并與其父節(jié)點同步計數器。一旦收到 tag 的數據包, Interrogator 隨即返回 Response 回復命令。 1堅持型:當節(jié)點準備好發(fā)送數據時監(jiān)聽信道: 如果信道空閑,立即發(fā)送,否則轉下一步 如果信道忙,則繼續(xù)監(jiān)聽,直到信道空閑立即發(fā)送 利于信道搶占,但是如果同時有多個節(jié)點監(jiān)聽時必然發(fā)生沖突。 0 表示收到的數據正確 1 表示收到的數據有錯誤,需要重發(fā) 回復模式: 01 表示回復的對象是數據 10 表示回復的對象是重新路由廣播 00, 11 保留使用 Prefix Package Identify Package Type Group ID Source ID Target ID Data Length Data CRC 0xFF31 0x EA 1 byte 3 bytes 6 bytes 6 bytes 1 byte N bytes 2 bytes 13 13 Group ID field 該字段共 3bytes,用于唯一標志 Interrogator和 Tag所屬的網絡,只有同屬于同一個 Group ID 的 Interrogator 和 Tag之間、 Tag 和 Tag 之間才能夠進行通訊。 0x11 Discovery with ID Broadcast 命令包 用于檢查網絡中所有激活的tag,接收到該命令的 tag 需要回復返回自身的 tag id 0x12 Rediscovery Broadcast 命令包 當路由出現問題(父節(jié)點無法返回數據確認)時 tag 需要發(fā)出該命令,接收到該命令的 tag 需要做出回復確認 0x20 Location Point to point 命令包 用于確定具體的 tag 是否在網絡中存在,接收到該命令的 tag 需要回復確認 11 11 0x31 禁止使用,其余未作出規(guī)定的命令代碼均作為保留使用。 9 9 Broadcast 廣播 Broadcast 廣播報文固定總長度為 22 bytes,格式如下: Prefix Package Identity Command Type Group ID Source ID Target ID Command Code CRC 0xFF31 0x E7 1 byte 3 bytes 6 bytes 6 bytes 1bytes 2 bytes Broadcast 廣播報文格式固定,每個合法的 Broadcast廣播包都必須符合上述的語法格式。 CC1020是一個可工作在多個頻段的窄帶射頻發(fā)送 /接收芯片,我們設定其工作頻點為 433MHz,調制方式為 FSK,并支持 FHSS。通過無線網絡接收有源 RFID 發(fā)送的電表信息,每一個 RFID 節(jié)點每一次需要傳送的數據都可以通過一個數據包發(fā)送完成。支持 FSK 和 FHSS方式。 Tag ID 和 Interrogator ID用于唯一標志每一個 Tag 和 Interrogator,每一個 tag 和 interrogator 的 id 在出廠都已經確定寫入 ROM 中,該 id 都固定無法修改。 Data Length field 該字 段共一個字節(jié),表示后續(xù) Data字段的字節(jié)數,所以 Data字段最多只能有 28 = 256 bytes,但是受限于整個數據包最多只能有 132 bytes,所以本字段最大取值只能為( 132 – 21 = 111)。 B.一個節(jié)點可以接收的鏈接類型包括: 接收不需要回復的廣播:對該廣播包解析完畢后即馬上釋 放鏈接 接收需要回復的廣播:對該廣播包解析完畢后開始發(fā)送回復數據包,發(fā)送成功后釋放鏈接 接收點對點傳輸的數據:對該包解析完畢成功發(fā)回 ack 后釋放鏈接 C.一個節(jié)點需要轉發(fā)的數據包括: 轉發(fā)需要回復的廣播:成功發(fā)出廣播包即釋放鏈接 轉發(fā)不需要回復的廣播:成功發(fā)出廣播包即釋放鏈接 轉發(fā)數據:成功發(fā)出數據包后需要維持該鏈路,直到收到 ack 后釋放鏈接 注:如果收到的 ack 要求重發(fā),則重新開始發(fā)送過程。 6 網絡 拓撲發(fā)現 網絡拓撲結構有兩種,一種為一對多的形式,所有的 Tag 都為 Interrogator 的一級節(jié)點;另一種為 adhoc,即 Interrogator 有 N 級節(jié)點。 I n t e r r o g a t o rt a g 1t a g 2t a g 3時 間 窗 口 1發(fā) 送 數 據發(fā) 送 數 據發(fā) 送 數 據s l o t 1 s l o t 2 s l o t N…回 復時 間 窗 口 2s l o t 1 s l o t 2s l o t 2 N…發(fā) 送 數 據發(fā) 送 數 據回 復 回 復T