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

基于上述分析可以看出,CSMA/CA機制的ZigBee網(wǎng)絡(luò)對于環(huán)境是有一定的要求的,如果用戶的主板本身噪聲很大,或者設(shè)備工作環(huán)境附近有其他頻帶的電磁波干擾,那么這些ZigBee無線模塊就會不斷的回退,嚴重的時候就是多近的距離也不會發(fā)送數(shù)據(jù),讓人感覺好像是程序設(shè)計錯誤或者硬件損壞了,其實那就是環(huán)境干擾啊。那么問題來了:無線模塊的廠家可能花費大量的時間和精力,將無線模塊產(chǎn)品設(shè)計的非常精良,但是一個普通用戶將模塊集成到他的產(chǎn)品中去了之后,發(fā)現(xiàn)模塊距離很近,甚至根本就不能發(fā)送數(shù)據(jù),你該怎么跟他解釋呢?最最要命的一點是,用戶將模塊集成的很好,送到現(xiàn)場去運行了一段時間,大面積的投訴來了,說模塊通訊距離近或者根本不能發(fā)送數(shù)據(jù),你該怎么跟用戶解釋呢?
事實上,這個問題從嚴格意義上來講是沒有解的!作為產(chǎn)品提供方你根本就沒有資格向用戶提出使用方面的前置條件,他們遇到這種問題的應(yīng)對措施簡單粗暴,那就是直接丟到垃圾桶里,然后再也不理你了。近年來很多的智能家居產(chǎn)品都遭遇了這樣的悲慘命運,有幾個做現(xiàn)場技術(shù)支持的工程師知道問題背后真正的根源在CSMA/CA這里呢?
微網(wǎng)高通WiMi-net無線自組網(wǎng)技術(shù)在接入可靠性環(huán)節(jié)做了深入全面的支持,我們會在后續(xù)的連載文章中為大家奉獻精彩紛呈的點評和分析。