來源:微網高通
ZigBee的很多產品的MAC層接入機制采用的就是CSMA/CA的接入機制,這個機制固然是一種非常有效的避免碰撞的模型,但是某些硬件或者結構上的設計不當則會導致非常嚴重的性能問題,在之前有一個朋友剛好經歷過這一檔子事,歷經坎坷最終在廠家的大力支持下才發現是CAMA/CA的機制所致。
幾年前,有一位朋友接受一位日本客戶的手持機產品的定制業務,由于日本是全世界對于無線電管理最嚴格的國家,沒有通過認證的產品光是通過日本海關就有很大的風險,更別說在日本市場銷售呢。剛好這位日本客戶做事風格也是非常的“日本”,嚴格按照他們國家的法律法規辦事,絕不投機取巧,朋友看到日本客戶這么嚴謹,細致,就非常放心的簽訂了合作協議,然后快速展開了設計工作。很快日本客戶帶來了一款通過日本電波法規(ARIB STD-67)認證的小模塊,模塊的做工非常精致,大約2X2cm2,模塊的核心芯片是TI公司的一款高端芯片CC1020,外殼上還有一個金屬屏蔽罩子,有一個大約17cm長度的黑色饋線甩出來,天線的末端還有一個小帽子,內部點上膠水了,不會輕易脫落。嗯,做工近乎完美,日本人的工匠精神那可不是蓋的!
很快100臺樣機做出來了,手持機的外殼是長條形的,帶有按鍵和點陣液晶屏,整機顯得古典大方,按鍵手感也十分的出色,看起來一切順利,離成功不遠了。接下來就是做真機拉距測試,畢竟大家之前對模塊有過幾次單獨的摸底測試,心里已經有數了,依據以往的經驗,即便性能上有點折扣,大家也是有心里準備的。經過幾個月的辛苦研發熬到這一天也不容易,因此大家情緒高漲,就等著開香檳慶祝呢。那是9月末的一天,馬上就要國慶節了,天氣那是出奇的良好,測試條件和平常沒有什么兩樣,但是測試的結果讓所有人都然大吃一驚!竟然有二十幾部機器的通訊距離非常近,有的甚至和接收機面對面對著都發不出數據。這樣的測試結果將工程師們的信心瞬間擊至谷底,他們都從下午一直鼓搗到了后半夜都不明白其中的緣由。后來朋友緊急聯系了日本客戶,讓他們尋求原廠的技術支持,日本客戶在中間代為溝通,輾轉來回了幾次之后,發現完全是驢唇不對馬嘴,根本說不到一個點上,最后索性將這其中的幾臺完全不能發送數據的機器讓日本客戶帶回原廠去做全面細致的檢測。
接下來是漫長的等待……
幾周之后的一天中午,朋友正在外面吃飯,突然日本客戶打來了長途電話,告訴他趕快收郵件,說日本原廠有了回復了。朋友放下筷子趕緊回去查看,郵件竟然是日文寫的,中間有的地方還夾雜著英文,還帶有一個附件,是一副圖片。剛好朋友的公司有一位在上大學期間選修過日語的女孩,她被叫過去湊在一起閱讀翻譯,看完了郵件,真相很快就大白了!原來問題就出在天線這個環節了,因為手持機的是長條形的,但是長度肯定沒有17cm長,所以天線在里面是手工纏繞的。由于手工纏繞的不規則,有些天線的頭部直接挨著了手持機主板上的8051單片機的一顆48MHz的晶振了,晶振的輻射出來的微弱的信號被天線接收到了,而無線模塊的內核CC1020則在CSMA/CA機制的作用下,認為空中有其他設備在發射無線電波,因此不斷的回退。由于晶振的輻射是持續穩定存在的,因此這個模塊就永遠也發射不出數據了,而那些天線離晶振稍遠一些的模塊,接收到的晶振的輻射要低一些,因此通訊的距離就變得很近。
大家可能很好奇,那一份郵件中的附件帶的照片是什么呢?其實就是一份安捷倫公司的專業儀器給出來的晶振輻射的測試報告,在中間的某個水平附近畫了一條很粗的紅色標示線,這根線就是CC1020設定的CSMA/CA的回退水平!從這個案例可以看出,CSMA/CA機制還有一個十分致命的缺陷,那就是不太容易把握一個度,也就是說怎么設置射頻芯片的噪聲門限呢?如果這個門限設置的太低,那么射頻芯片對于電磁波干擾的檢測將會特別靈敏,產品本身或者(數字電路的本底輻射)環境本身稍微有一點干擾,射頻芯片就不斷的往后回退,一直不能發射數據;如果這個門限設置的太高了,則射頻芯片對于碰撞的檢測非常的遲鈍,明明就在不遠處的前方已經有一個節點正在發送數據,但是這個芯片通過CSMA/CA機制檢測發現信道低于檢測門限,認為此時無線信道是干凈的,沒有別的節點在發送數據,自己啟動了發送流程,導致數據撞車從而引起本次傳輸失敗。而現實的情況則是作為產品設計而言,是不可能事先知道相鄰接點的擺放位置和相對距離的,因此也很難事先確定好一個合適的載波檢測門限,這等于要有現場的工程師在產品布設完成之后,單獨調整每一個的載波檢測門限,這顯然是非常荒唐的要求嘛!
下圖是某射頻芯片的CSMA/CA的門限設定寄存器描述。基于上述分析可以看出,如果要真的基于CSMA/CA的機制來設計信道評估算法,這樣的產品的一致性和穩定性可想而知!或許有些情況下工作還算可以,有的情況下變得莫名其妙,而問題的嚴重程度則隨著網絡規模和通訊密度的逐步增加而急劇惡化,作為一個最終產品的使用者而言,是絕對想不到問題的根源出在這么基礎的環節的!
基于上述分析可以看出,CSMA/CA機制的ZigBee網絡對于環境是有一定的要求的,如果用戶的主板本身噪聲很大,或者設備工作環境附近有其他頻帶的電磁波干擾,那么這些ZigBee無線模塊就會不斷的回退,嚴重的時候就是多近的距離也不會發送數據,讓人感覺好像是程序設計錯誤或者硬件損壞了,其實那就是環境干擾啊。那么問題來了:無線模塊的廠家可能花費大量的時間和精力,將無線模塊產品設計的非常精良,但是一個普通用戶將模塊集成到他的產品中去了之后,發現模塊距離很近,甚至根本就不能發送數據,你該怎么跟他解釋呢?最最要命的一點是,用戶將模塊集成的很好,送到現場去運行了一段時間,大面積的投訴來了,說模塊通訊距離近或者根本不能發送數據,你該怎么跟用戶解釋呢?
事實上,這個問題從嚴格意義上來講是沒有解的!作為產品提供方你根本就沒有資格向用戶提出使用方面的前置條件,他們遇到這種問題的應對措施簡單粗暴,那就是直接丟到垃圾桶里,然后再也不理你了。近年來很多的智能家居產品都遭遇了這樣的悲慘命運,有幾個做現場技術支持的工程師知道問題背后真正的根源在CSMA/CA這里呢?
微網高通WiMi-net無線自組網技術在接入可靠性環節做了深入全面的支持,我們會在后續的連載文章中為大家奉獻精彩紛呈的點評和分析。