量平臺(tái)中的技術(shù)方案設(shè)計(jì)與部署實(shí)踐)
1. 為什么智能電表要選LoRa而不選其他無線方案先交代一下背景。智能電表不是新概念國(guó)內(nèi)很多一線城市前幾年就完成了集中抄表改造但真正把每一塊電表的讀數(shù)、電壓、電流、功率因數(shù)實(shí)時(shí)傳到平臺(tái)端并且做到低成本、低功耗、長(zhǎng)時(shí)間無人維護(hù)這里面的坑遠(yuǎn)比想象中多。早期項(xiàng)目用RS485總線一個(gè)臺(tái)區(qū)里幾十塊表拉線拉到集中器工程量大還不美觀線纜老化后排查鏈路故障能讓人崩潰。后來有人試過Wi-Fi自組網(wǎng)電表附近Wi-Fi覆蓋不穩(wěn)定一個(gè)AP只能帶十幾個(gè)節(jié)點(diǎn)而且節(jié)點(diǎn)功耗高電表內(nèi)部電池供電的模塊撐不了兩年。也有人試過Zigbee成本和功耗是下來了但通信距離太短穿過幾堵墻就沒信號(hào)在地下車庫(kù)和戶外表箱場(chǎng)景里根本沒法用。當(dāng)時(shí)我們團(tuán)隊(duì)做表計(jì)遠(yuǎn)程項(xiàng)目時(shí)對(duì)比過NB-IoT、LoRa和Zigbee三條路線。NB-IoT的優(yōu)點(diǎn)是直達(dá)運(yùn)營(yíng)商基站沒有自建網(wǎng)關(guān)的麻煩但在地下表箱、密集樓宇深處運(yùn)營(yíng)商的NB信號(hào)經(jīng)常只有-120dBm左右而且SIM卡資費(fèi)是長(zhǎng)期運(yùn)營(yíng)成本每塊表每年要交幾十塊流量費(fèi)整個(gè)臺(tái)區(qū)幾百塊表就是一筆不小的開銷。LoRa走的是自建網(wǎng)絡(luò)網(wǎng)關(guān)一次投入節(jié)點(diǎn)終身免流量費(fèi)。更重要的是LoRa的靈敏度能做到-137dBm級(jí)別在同樣的表箱環(huán)境里NB-IoT可能因?yàn)樾盘?hào)弱頻繁重傳LoRa卻能用極低速率把數(shù)據(jù)包發(fā)出去。對(duì)于一個(gè)臺(tái)區(qū)幾百塊表、一片區(qū)域四五個(gè)臺(tái)區(qū)的場(chǎng)景LoRa的覆蓋能力和成本優(yōu)勢(shì)都更明顯。Zigbee還有一個(gè)致命問題網(wǎng)絡(luò)拓?fù)湟蕾嚫腹?jié)點(diǎn)轉(zhuǎn)發(fā)一旦中間某個(gè)節(jié)點(diǎn)掉線整條子網(wǎng)就斷了。而LoRa的星型拓?fù)錁O其簡(jiǎn)單每個(gè)電表直接和網(wǎng)關(guān)通信中間沒有任何轉(zhuǎn)發(fā)依賴。這個(gè)特性在大規(guī)模終端部署時(shí)非常關(guān)鍵——省掉了Zigbee的“網(wǎng)絡(luò)自愈”復(fù)雜邏輯也避免了中繼節(jié)點(diǎn)電池耗盡導(dǎo)致的大面積抄表失敗。我們后來統(tǒng)計(jì)過一臺(tái)網(wǎng)關(guān)放在臺(tái)區(qū)變壓器旁邊的電線桿上覆蓋半徑在開闊區(qū)域能到2-3公里在城區(qū)密集樓宇環(huán)境下也能覆蓋半徑600米左右一個(gè)網(wǎng)關(guān)帶500個(gè)電表節(jié)點(diǎn)完全沒有壓力。如果換成Zigbee至少需要十多個(gè)路由節(jié)點(diǎn)加上復(fù)雜的組網(wǎng)調(diào)優(yōu)維護(hù)工作量完全不同。所以LoRa進(jìn)入智能電表計(jì)量平臺(tái)不是因?yàn)樗喔叽笊隙且驗(yàn)樗『脻M足了三個(gè)極端需求遠(yuǎn)距離、低功耗、免資費(fèi)。Semtech作為L(zhǎng)oRa技術(shù)背后的核心芯片供應(yīng)商為這個(gè)場(chǎng)景提供了從Sub-GHz射頻前端到LoRa調(diào)制解調(diào)器的一整套方案這也是我后來在項(xiàng)目里為什么堅(jiān)定選擇基于Semtech器件的方案。2. LoRa器件在電表端真正吃緊的幾個(gè)技術(shù)環(huán)節(jié)很多人以為L(zhǎng)oRa只要把數(shù)據(jù)發(fā)出去就行實(shí)際上電表端的LoRa模塊設(shè)計(jì)有幾個(gè)非常吃performace的環(huán)節(jié)這里展開講講。2.1 接收靈敏度、擴(kuò)頻因子與覆蓋距離的平衡Semtech LoRa器件的看家本領(lǐng)是接收靈敏度SX1262在125kHz帶寬、SF12時(shí)可以做到-137dBm的靈敏度。聽起來很牛但這個(gè)數(shù)字不是隨便用的。SF12雖然靈敏度高但空中傳輸時(shí)間很長(zhǎng)一個(gè)20字節(jié)的報(bào)文要用1.4秒左右在密集臺(tái)區(qū)里會(huì)造成信道擁堵。我們實(shí)際調(diào)試時(shí)先用SF12做覆蓋驗(yàn)證確定網(wǎng)關(guān)位置以后再把大部門電表節(jié)點(diǎn)調(diào)成SF10或SF9只有在信號(hào)邊緣地帶的節(jié)點(diǎn)保持SF11。這里有一個(gè)容易犯的錯(cuò)誤每個(gè)節(jié)點(diǎn)的SF配置不能隨意定因?yàn)長(zhǎng)oRaWAN協(xié)議里SF不同導(dǎo)致擴(kuò)頻序列正交性差異但同速率同信道下還是會(huì)碰撞。如果同一個(gè)臺(tái)區(qū)里SF7和SF12混用SF7的傳輸時(shí)間只有幾十毫秒SF12卻占著信道1秒多低SF節(jié)點(diǎn)會(huì)被高SF節(jié)點(diǎn)大量干擾。我們后來做了一套策略把SF12節(jié)點(diǎn)的時(shí)間片單獨(dú)安排或者干脆降低這些邊緣節(jié)點(diǎn)的上報(bào)頻率。這就是為什么電表端一定要有可配置的數(shù)據(jù)速率自適應(yīng)能力Semtech的驅(qū)動(dòng)里帶有ADR自適應(yīng)數(shù)據(jù)速率功能可以根據(jù)網(wǎng)關(guān)收到的RSSI和SNR自動(dòng)調(diào)整每個(gè)節(jié)點(diǎn)的SF和發(fā)射功率極大減輕了人工調(diào)優(yōu)負(fù)擔(dān)。2.2 功耗預(yù)算電池供電模塊是怎么撐過十年的電表端有兩種供電場(chǎng)景一種是電表本身有市電LoRa模塊從電表電源取電功耗問題還好另一種是停電后需要上報(bào)停電事件此時(shí)模塊必須靠?jī)?nèi)置電池工作。后一種場(chǎng)景對(duì)功耗極其苛刻。Semtech LoRa器件的休眠電流做到1uA以內(nèi)接收電流4-10mA發(fā)射電流在120mA左右22dBm。很多人只盯著峰值電流忽略了最重要的一點(diǎn)發(fā)射期間的能量消耗取決于發(fā)送時(shí)長(zhǎng)。同樣的數(shù)據(jù)量SF12發(fā)送時(shí)間是SF7的十幾倍單次發(fā)送耗電量也隨之增加十幾倍所以節(jié)能的關(guān)鍵不只是降低發(fā)射功率還要根據(jù)信號(hào)質(zhì)量選盡可能高的數(shù)據(jù)速率。我們?cè)谕k娚蠄?bào)模塊里做了分檔策略正常情況下電表每15分鐘上報(bào)一次數(shù)據(jù)用SF10平均電流不到50uA。停電后模塊立即用SF12上報(bào)一次停電事件最大功率然后進(jìn)入深度休眠每30秒喚醒監(jiān)聽一次。 網(wǎng)關(guān)此時(shí)可能也停電了不一定如果是臺(tái)區(qū)級(jí)停電電網(wǎng)公司運(yùn)維人員會(huì)攜帶應(yīng)急設(shè)備。如果是單戶停電網(wǎng)關(guān)在電表旁邊通常是帶電的因?yàn)榫W(wǎng)關(guān)接在變壓器側(cè)。實(shí)測(cè)下來一個(gè)600mAh的鋰亞電池供電的LoRa模塊按每天3次正常上報(bào)加偶爾停電事件可以穩(wěn)定工作3年以上。2.3 天線匹配和阻抗調(diào)諧是隱藏的大坑LoRa模塊在實(shí)驗(yàn)室里指標(biāo)再好裝進(jìn)電表外殼、靠近內(nèi)部開關(guān)電源和電壓采樣線之后靈敏度可能直接劣化10dB以上。我們之前遇到過一臺(tái)樣機(jī)放在桌上測(cè)試RSSI穩(wěn)定在-70dBm裝進(jìn)表箱后變成-90dBm排查半天發(fā)現(xiàn)問題出在電表外殼內(nèi)部有一塊地平面恰好諧振在490MHz附近把天線輻射效率吃掉了很大一部分。解決思路有兩個(gè)方向一是調(diào)整電表PCB布局把LoRa天線區(qū)域加凈空周圍不要有銅皮和長(zhǎng)走線尤其是不能讓天線距離電源變壓器的整流橋太近高頻開關(guān)噪聲會(huì)直接耦合進(jìn)天線段二是使用外置天線電表外殼開孔引出一根棒狀天線到表箱外部。雖然外置天線增加了物料成本和安裝工序但覆蓋可靠性大大提升。我們?cè)诘诙嬖O(shè)計(jì)時(shí)做了一個(gè)可插拔的U.FL接口量產(chǎn)時(shí)根據(jù)項(xiàng)目場(chǎng)景靈活選擇內(nèi)置天線或外置天線。這個(gè)設(shè)計(jì)靈活性在多個(gè)項(xiàng)目中都發(fā)揮了關(guān)鍵作用。例如在城市商品房表箱里表箱是金屬材質(zhì)必須用外置天線在農(nóng)村戶外的塑料表箱里內(nèi)置陶瓷天線就夠用。3. 一套完整的LoRa智能電表計(jì)量平臺(tái)長(zhǎng)什么樣芯片和模組只是起點(diǎn)真正支撐智能電表計(jì)量業(yè)務(wù)的是一個(gè)完整平臺(tái)。我把整個(gè)系統(tǒng)的架構(gòu)拆開來講這樣你在規(guī)劃項(xiàng)目時(shí)也清楚每一層該放什么組件。3.1 系統(tǒng)架構(gòu)從電表數(shù)據(jù)到云端的完整鏈路一個(gè)典型的LoRa智能電表計(jì)量平臺(tái)包含五個(gè)層次電表終端層每塊電表內(nèi)部集成LoRa通信模塊模塊負(fù)責(zé)采集電表的計(jì)量數(shù)據(jù)電量、電壓、電流、功率等按照約定的協(xié)議打包成幀定時(shí)上報(bào)或接受下行指令。網(wǎng)關(guān)/集中器層安裝在臺(tái)區(qū)變壓器附近或樓棟頂層負(fù)責(zé)接收電表終端上行的LoRa無線信號(hào)通過以太網(wǎng)或4G回傳至數(shù)據(jù)中心。網(wǎng)關(guān)同時(shí)負(fù)責(zé)上行的確認(rèn)和下行的指令轉(zhuǎn)發(fā)。網(wǎng)絡(luò)服務(wù)器層負(fù)責(zé)節(jié)點(diǎn)接入認(rèn)證、數(shù)據(jù)包去重、速率自適應(yīng)決策、下行調(diào)度等。LoRaWAN網(wǎng)絡(luò)服務(wù)器就是整個(gè)系統(tǒng)的“大腦”。應(yīng)用服務(wù)器層處理業(yè)務(wù)邏輯如計(jì)費(fèi)、用戶管理、故障分析、電量預(yù)測(cè)等。運(yùn)維管理平臺(tái)提供設(shè)備管理、在線率監(jiān)控、遠(yuǎn)程升級(jí)、日志分析等功能。每一層之間都有標(biāo)準(zhǔn)接口最核心的是電表終端和網(wǎng)關(guān)之間的LoRa無線鏈路以及網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器之間的回傳鏈路?;貍麈溌酚糜芯€或4G都可以但需注意網(wǎng)絡(luò)時(shí)延和帶寬是否能支撐大量電表數(shù)據(jù)并發(fā)。一個(gè)網(wǎng)關(guān)帶500塊電表每塊表15分鐘上報(bào)一次平均每秒不到1個(gè)包4G回傳綽綽有余。3.2 上行數(shù)據(jù)的幀結(jié)構(gòu)設(shè)計(jì)LoRa數(shù)據(jù)包的最大載荷長(zhǎng)度受限于數(shù)據(jù)速率和占用時(shí)間。LoRaWAN默認(rèn)在SF10、125kHz帶寬下的最大凈荷是51字節(jié)部分地區(qū)可能不同。電表的計(jì)量數(shù)據(jù)包含電量、時(shí)間戳、狀態(tài)字、校驗(yàn)碼加起來通常在20-30字節(jié)左右。為了在極端的SF12下也能一次發(fā)送我們需要對(duì)幀結(jié)構(gòu)進(jìn)行壓縮。我的經(jīng)驗(yàn)是上行幀中不必每次攜帶完整的設(shè)備ID因?yàn)長(zhǎng)oRaWAN的入網(wǎng)激活后短地址只要2個(gè)字節(jié)而設(shè)備在臺(tái)區(qū)內(nèi)有唯一的短地址映射表。數(shù)據(jù)字段盡量使用整數(shù)類型而不是字符串比如電表讀數(shù)用int32表示千瓦時(shí)的小數(shù)點(diǎn)后兩位時(shí)間戳用Unix時(shí)間戳的uint32而不是字符串格式。這樣能把幀體壓縮到16字節(jié)以內(nèi)再帶上MAC頭、端口號(hào)、CRC等整幀不超過30字節(jié)在任何速率下都有充足余量。還有一個(gè)小細(xì)節(jié)LoRaWAN有一個(gè)FPort字段用來區(qū)分應(yīng)用數(shù)據(jù)幀建議為不同數(shù)據(jù)類型分配不同的端口。例如FPort1表示實(shí)時(shí)用電數(shù)據(jù)FPort2表示停電事件FPort3表示密鑰更新或固件升級(jí)指令。這樣應(yīng)用層就能方便地過濾和處理不同業(yè)務(wù)優(yōu)先級(jí)。3.3 下行控制和遠(yuǎn)程升級(jí)不要以為電表只需要上行傳輸數(shù)據(jù)很多業(yè)務(wù)場(chǎng)景需要下行控制比如遠(yuǎn)程拉閘合閘、費(fèi)率切換、時(shí)鐘校時(shí)、緊急停電預(yù)警等。LoRaWAN的下行鏈路和上行不同網(wǎng)關(guān)需要在節(jié)點(diǎn)打開接收窗口的瞬間下發(fā)數(shù)據(jù)。節(jié)點(diǎn)上行完成后會(huì)打開RX1和RX2兩個(gè)接收窗口默認(rèn)在1秒和2秒后。網(wǎng)絡(luò)服務(wù)器必須精確計(jì)算下行發(fā)送時(shí)間讓數(shù)據(jù)包在接收窗口內(nèi)到達(dá)節(jié)點(diǎn)。這里有個(gè)實(shí)踐上的關(guān)鍵點(diǎn)下行鏈路預(yù)算通常不如上行因?yàn)榫W(wǎng)關(guān)的發(fā)射功率比節(jié)點(diǎn)高理論上下行覆蓋范圍更大但如果網(wǎng)關(guān)天線高度不夠或增益較低下行可能出現(xiàn)“節(jié)點(diǎn)能聽到網(wǎng)關(guān)但網(wǎng)關(guān)聽不到節(jié)點(diǎn)”的尷尬局面。我們解決的辦法是網(wǎng)關(guān)端使用高增益全向天線如6dBi玻璃鋼天線并盡量提高安裝高度確保下行信號(hào)強(qiáng)度在電表的接收閾值之上。遠(yuǎn)程升級(jí)FOTA也依賴下行鏈路但要注意固件升級(jí)一般使用多塊數(shù)據(jù)分包下發(fā)每一包都要等待節(jié)點(diǎn)確認(rèn)否則重傳機(jī)制會(huì)占用大量信道時(shí)間。在500個(gè)電表的臺(tái)區(qū)里不做速率規(guī)劃直接全量升級(jí)可能一個(gè)晚上都升不完還會(huì)影響正常抄表。我們后來采用分批升級(jí)加白名單策略一批只升級(jí)50個(gè)節(jié)點(diǎn)升級(jí)時(shí)段安排在抄表空閑時(shí)段如凌晨2點(diǎn)到5點(diǎn)同時(shí)降低節(jié)點(diǎn)上報(bào)頻率保證下行帶寬。實(shí)測(cè)升級(jí)成功率在99%以上失敗節(jié)點(diǎn)可以在下一次窗口自動(dòng)重試。4. 部署和調(diào)試階段最容易被忽略的問題平臺(tái)架構(gòu)搭好了真正的挑戰(zhàn)是現(xiàn)場(chǎng)部署和長(zhǎng)期調(diào)試。這部分內(nèi)容來自我在多個(gè)LoRa表計(jì)項(xiàng)目中踩過的坑和總結(jié)的經(jīng)驗(yàn)希望能幫你少走彎路。4.1 頻段與信道規(guī)劃的合法合規(guī)問題LoRa技術(shù)使用的是無需授權(quán)的Sub-GHz頻段中國(guó)常見的是470-510MHz歐美是868MHz或915MHz。雖然是免授權(quán)頻段但對(duì)發(fā)射功率、占空比、信道帶寬有嚴(yán)格規(guī)定。有些開發(fā)者圖方便直接把默認(rèn)頻段配置丟到產(chǎn)品里結(jié)果一上市就面臨頻譜監(jiān)管問題。我們的經(jīng)驗(yàn)是項(xiàng)目立項(xiàng)第一件事就是確認(rèn)目標(biāo)市場(chǎng)的頻段計(jì)劃。中國(guó)的470-510MHz覆蓋范圍廣但頻段內(nèi)還包含TPC-FM廣播等既有業(yè)務(wù)所以LoRaWAN協(xié)議規(guī)范中為中國(guó)定義了幾個(gè)特定信道比如478.3MHz、479.7MHz等。實(shí)際部署時(shí)還要考慮該地區(qū)的無線電管理機(jī)構(gòu)是否有額外的頻率使用要求。比如山東地區(qū)一些城市的高壓電力載波通信就用到了470-510MHz的其中一段如果不做干擾規(guī)避LoRa數(shù)據(jù)包會(huì)被大量沖撞。建議在產(chǎn)品里預(yù)留信道屏蔽和跳頻配置接口方便在不同省份做本地化調(diào)整。另一件容易忽視的事是發(fā)射功率限制。國(guó)內(nèi)在470MHz頻段通常要求發(fā)射功率不超過50mW17dBm或按所在地規(guī)定。但有些LoRa芯片默認(rèn)支持22dBm如果照這個(gè)配置發(fā)射可能超出許可范圍。我們量產(chǎn)版本里做了粗調(diào)/細(xì)調(diào)兩級(jí)功率校準(zhǔn)出廠后默認(rèn)17dBm只有在偏遠(yuǎn)區(qū)域信號(hào)確實(shí)差、且當(dāng)?shù)卦试S的情況下才通過后臺(tái)遠(yuǎn)程調(diào)高到20dBm。這樣既保證了合規(guī)又保留了應(yīng)急能力。4.2 現(xiàn)場(chǎng)干擾排查一個(gè)案例與一套方法有一次我們?cè)谀钞a(chǎn)業(yè)園區(qū)部署了20個(gè)臺(tái)區(qū)的LoRa電表裝完第一天各個(gè)臺(tái)區(qū)在線率都在98%以上第二天突然接到運(yùn)維電話說西區(qū)有3個(gè)臺(tái)區(qū)在線率掉到60%。趕到現(xiàn)場(chǎng)LoRa網(wǎng)關(guān)指示燈閃爍正常但后臺(tái)確實(shí)有一半節(jié)點(diǎn)收不到數(shù)據(jù)。我們用頻譜儀掃了一下現(xiàn)場(chǎng)發(fā)現(xiàn)470MHz附近有很強(qiáng)的間歇性信號(hào)。順著信號(hào)源找過去是園區(qū)里一個(gè)大型PLC設(shè)備的變頻驅(qū)動(dòng)在產(chǎn)生諧波干擾。這個(gè)干擾信號(hào)頻率在474-480MHz之間功率并不算大但持續(xù)沖擊著LoRa的信道。更麻煩的是干擾信號(hào)帶寬大約1.2MHz完全覆蓋了LoRa的125kHz信道導(dǎo)致多個(gè)幀同時(shí)被解調(diào)失敗。處理方法有幾個(gè)步驟第一步在LoRaWAN網(wǎng)絡(luò)服務(wù)器上開啟“靜默干擾檢測(cè)”。Semtech的SX126x寄存器里可以讀取當(dāng)前信道的RSSI和SNR噪聲基底當(dāng)某一信道持續(xù)出現(xiàn)異常高的RSSI但不產(chǎn)生有效數(shù)據(jù)包時(shí)判定為外部干擾。第二步把所有節(jié)點(diǎn)的上行信道切換到干擾最低的信道。LoRaWAN默認(rèn)支持8個(gè)信道中國(guó)模式下不同我們刪除受干擾的信道保留其余信道。第三步如果干擾信號(hào)覆蓋了所有默認(rèn)信道就需要調(diào)整LoRaWAN的另一個(gè)頻段策略使用額外信道。但首先要確保這些信道在合法使用范圍內(nèi)?,F(xiàn)場(chǎng)干擾排查最有效的辦法不是靠后臺(tái)數(shù)據(jù)猜而是帶著頻譜儀到網(wǎng)關(guān)安裝位置實(shí)際測(cè)量。一次完整的掃描和調(diào)整通常能解決大部分問題。對(duì)于間歇性干擾記得做長(zhǎng)時(shí)頻譜記錄否則很容易漏掉出現(xiàn)的瞬間。4.3 網(wǎng)關(guān)天線選址一邊加增益一邊警惕饋線損耗LoRa系統(tǒng)的覆蓋能力高度依賴網(wǎng)關(guān)天線選址。天線裝得越高越開闊覆蓋就越好。但實(shí)際現(xiàn)場(chǎng)并不是總有理想的安裝條件。有的臺(tái)區(qū)變壓器在圍墻角落周圍都是低壓線路和金屬圍欄這時(shí)哪怕天線增益再高反射和屏蔽也會(huì)讓它變成一個(gè)擺設(shè)。我建議網(wǎng)關(guān)天線安裝前先做一次短時(shí)覆蓋測(cè)試。用一臺(tái)便攜式LoRa模塊模擬電表發(fā)送數(shù)據(jù)帶著設(shè)備在臺(tái)區(qū)覆蓋范圍內(nèi)走一圈記錄各點(diǎn)的RSSI和SNR。如果某一片區(qū)域信號(hào)特別差可以事先調(diào)整天線方向和位置而不是等所有電表裝完再發(fā)現(xiàn)問題。我們有一套快速覆蓋測(cè)試模板一人拿著模塊站在電表安裝位置發(fā)送另一人在網(wǎng)關(guān)側(cè)查看實(shí)時(shí)接收到的信號(hào)強(qiáng)度配合手機(jī)里記錄GPS坐標(biāo)半小時(shí)就能畫出臺(tái)區(qū)的信號(hào)熱力圖。另外一個(gè)重要細(xì)節(jié)是饋線損耗。很多網(wǎng)關(guān)直接用10米長(zhǎng)的RF饋線連接天線衰減大約0.5-1.5dB/米。如果網(wǎng)關(guān)天線距離網(wǎng)關(guān)有10米信號(hào)可能白白損失10dB以上。我們一套經(jīng)驗(yàn)法則是饋線長(zhǎng)度每增加1米至少要選擇低一個(gè)規(guī)格的線纜比如從RG174換成RG58或RG400。饋線盡量短落地箱里的網(wǎng)關(guān)可以直接把天線伸出箱體頂部只留一小段連接。如果必須走長(zhǎng)線記得選擇低損饋線并做好接頭防水。4.4 上下行鏈路預(yù)算的不對(duì)稱如何避免“單向失聰”我前面提到下行鏈路預(yù)算通常比上行更好但實(shí)際項(xiàng)目中有一類情況非常神奇電表能收到網(wǎng)關(guān)的廣播但是上報(bào)的數(shù)據(jù)網(wǎng)關(guān)收不到。原因除了網(wǎng)關(guān)天線安裝問題外還可能是網(wǎng)關(guān)接收路徑上的噪聲太大。在電力臺(tái)區(qū)附近變壓器本身會(huì)產(chǎn)生電磁噪聲這個(gè)噪聲會(huì)通過電源線傳導(dǎo)進(jìn)網(wǎng)關(guān)的供電電源再通過USB或網(wǎng)口干擾到LoRa模塊的射頻部分。有一次我們排查一個(gè)臺(tái)區(qū)的在線率低把網(wǎng)關(guān)抱下樓用電池供電測(cè)試所有電表一次上報(bào)成功。裝回原處立刻掉一半在線率。最后定位到問題出在開關(guān)電源的電磁干擾。網(wǎng)關(guān)的12V適配器使用了一個(gè)質(zhì)量很差的開關(guān)電源功率開關(guān)管的開關(guān)頻率諧波正好落在470MHz附近通過電源線和地面耦合進(jìn)入了天線。解決辦法很簡(jiǎn)單——換成醫(yī)療級(jí)的線性電源或帶更好屏蔽的開關(guān)電源同時(shí)讓網(wǎng)關(guān)電源線和天線走線盡量遠(yuǎn)離。這種隱藏的干擾源不測(cè)很難發(fā)現(xiàn)建議在現(xiàn)場(chǎng)部署時(shí)先進(jìn)行一次網(wǎng)關(guān)獨(dú)立供電和市電供電的對(duì)比測(cè)試。5. 從成本、功耗到長(zhǎng)期運(yùn)維的復(fù)盤與建議項(xiàng)目上線運(yùn)行一年后回頭再看整個(gè)選型和實(shí)施過程有多處值得復(fù)盤的經(jīng)驗(yàn)這些經(jīng)驗(yàn)對(duì)后續(xù)類似項(xiàng)目有直接參考價(jià)值。5.1 成本賬不能只盯著模組價(jià)格還要算網(wǎng)絡(luò)建設(shè)和運(yùn)維成本很多人第一眼看到LoRa模組比Wi-Fi模組貴就覺得不劃算。實(shí)際上在電表場(chǎng)景中需要算全周期成本。LoRa一個(gè)模組含Semtech收發(fā)芯片、匹配電路、天線成本大約在15-25元人民幣取決于量級(jí)而Wi-Fi模組雖然只有幾塊錢但一個(gè)Wi-Fi AP只能帶十幾到幾十個(gè)節(jié)點(diǎn)覆蓋范圍不超過100米一個(gè)臺(tái)區(qū)可能需要5-6個(gè)AP成本就變成幾個(gè)LoRa網(wǎng)關(guān)的價(jià)格。每個(gè)AP還需要單獨(dú)布線供電工程成本更是直線上升。Zigbee模組確實(shí)便宜但需要添加路由節(jié)點(diǎn)的額外成本網(wǎng)絡(luò)維護(hù)復(fù)雜度高。NB-IoT單模組成本更低但5年下來的流量費(fèi)可能超過模組本身。我做了一個(gè)粗略的成本對(duì)比以一個(gè)500節(jié)點(diǎn)、覆蓋半徑500米的臺(tái)區(qū)為例核心成本如下方案節(jié)點(diǎn)通信模組成本網(wǎng)絡(luò)基礎(chǔ)設(shè)施成本5年運(yùn)維流量/維護(hù)成本主要故障點(diǎn)LoRa自建網(wǎng)絡(luò)約15元/節(jié)點(diǎn)網(wǎng)關(guān)含天線約2000元共1個(gè)無流量費(fèi)自維護(hù)電費(fèi)少量網(wǎng)關(guān)故障、干擾、天線老化NB-IoT約20元/節(jié)點(diǎn)無自建網(wǎng)關(guān)用運(yùn)營(yíng)商基站每節(jié)點(diǎn)每年流量費(fèi)約10-20元小區(qū)弱覆蓋、基站擁塞、SIM卡運(yùn)營(yíng)商變更Zigbee組網(wǎng)約10元/節(jié)點(diǎn)需要路由器和協(xié)調(diào)器約3000-5000元無流量費(fèi)但路由節(jié)點(diǎn)電池更換頻繁路由節(jié)點(diǎn)電池耗盡導(dǎo)致子網(wǎng)癱瘓Wi-Fi自組網(wǎng)約5元/節(jié)點(diǎn)需要多個(gè)AP和交換機(jī)約5000元以上無流量費(fèi)電費(fèi)和維護(hù)成本高AP節(jié)點(diǎn)多故障點(diǎn)多漫游切換問題如果不算工程安裝成本只算設(shè)備和5年費(fèi)用LoRa方案已經(jīng)具有明顯優(yōu)勢(shì)。實(shí)際我們上線后最大的成本其實(shí)來自前期的覆蓋測(cè)試和干擾排查這部分在項(xiàng)目預(yù)算里一定要預(yù)留足夠時(shí)間否則后期上線發(fā)現(xiàn)問題返工成本比前期測(cè)試高得多。5.2 長(zhǎng)續(xù)航經(jīng)驗(yàn)的三個(gè)核心指標(biāo)如果項(xiàng)目用的是電池供電的電表通信模塊如停電上報(bào)模塊一定要在實(shí)驗(yàn)室里把電池壽命測(cè)試跑透。三個(gè)核心指標(biāo)分別是休眠電流、喚醒周期功耗、發(fā)射能量。休眠電流方面Semtech SX126x能做到1uA以下但整機(jī)模塊如果搭配了外部MCU和傳感器可能達(dá)到幾u(yù)A。要控制整機(jī)休眠電流需把所有接口設(shè)置為低電平并關(guān)閉不必要的外設(shè)。我們實(shí)測(cè)一塊STM32L0加SX1262的模塊整機(jī)休眠電流可以做到2.5uA已經(jīng)很不錯(cuò)。喚醒周期方面不要用固定時(shí)間間隔喚醒做周期監(jiān)聽而是采用“事件驅(qū)動(dòng)定時(shí)器”混合模式正常每15分鐘定時(shí)上報(bào)停電事件通過外部中斷立即喚醒。單獨(dú)為每個(gè)節(jié)點(diǎn)做不同的上報(bào)頻率會(huì)有更好的功耗表現(xiàn)。比如靠近網(wǎng)關(guān)、信號(hào)好的節(jié)點(diǎn)上報(bào)頻率可以提高到5分鐘邊緣節(jié)點(diǎn)保持15分鐘到30分鐘這樣既保證了數(shù)據(jù)新鮮度又不會(huì)縮短電池壽命。發(fā)射能量方面最耗電的階段是發(fā)送期間。需要在每次發(fā)送前評(píng)估信道占用時(shí)間如果鏈路質(zhì)量很好RSSI高于-100dBm發(fā)送功率可以降到10dBm左右電池消耗會(huì)大幅減少。同時(shí)盡量把多條數(shù)據(jù)合并到一個(gè)幀中發(fā)送減少發(fā)送次數(shù)。我們后來在電表里緩存了24小時(shí)的歷史數(shù)據(jù)每15分鐘上報(bào)一次最新數(shù)據(jù)每天凌晨再集中上報(bào)一次歷史曲線。這個(gè)策略讓電池壽命從預(yù)估的2年提升到了4年以上。5.3 平臺(tái)安全從加密到密鑰管理智能電表屬于關(guān)鍵信息基礎(chǔ)設(shè)施安全問題不能忽視。LoRaWAN的默認(rèn)安全機(jī)制包括AES-128加密、設(shè)備認(rèn)證和消息完整性校驗(yàn)。在具體項(xiàng)目中至少要做到三點(diǎn)第一設(shè)備入網(wǎng)時(shí)必須使用唯一設(shè)備標(biāo)識(shí)符DevEUI并配合加入服務(wù)器簽發(fā)的AppKey不能使用硬編碼統(tǒng)一密鑰。第二網(wǎng)絡(luò)層和應(yīng)用層要使用不同的密鑰即使網(wǎng)絡(luò)層密鑰泄露應(yīng)用數(shù)據(jù)也不會(huì)被解密。第三定期密鑰更新。電表模塊支持遠(yuǎn)程密鑰重置Rejoin機(jī)制當(dāng)平臺(tái)側(cè)發(fā)現(xiàn)可疑行為時(shí)可以強(qiáng)制設(shè)備重新入網(wǎng)。我在好幾個(gè)項(xiàng)目里看到開發(fā)者把AppKey直接燒死在固件里且所有設(shè)備共享同一個(gè)密鑰這簡(jiǎn)直是給攻擊者大開方便之門。雖然LoRaWAN有加密但共享密鑰意味著攻破一個(gè)設(shè)備就能解密所有設(shè)備的數(shù)據(jù)。正確做法是量產(chǎn)時(shí)通過AT命令或工裝工位寫入每個(gè)設(shè)備的唯一密鑰并把密鑰列表管理好存入服務(wù)器的密鑰管理系統(tǒng)。此外下行控制命令如拉閘合閘一定要使用應(yīng)用層加密和消息完整性校驗(yàn)防止有人偽造指令遠(yuǎn)程切斷用戶電源。我們還在應(yīng)用層加了亂序碼如時(shí)間戳加隨機(jī)數(shù)防止重放攻擊。這套機(jī)制上線后沒有發(fā)生過一次安全事件。5.4 長(zhǎng)期運(yùn)維的自動(dòng)化監(jiān)控LoRa網(wǎng)絡(luò)部署完成后運(yùn)維是個(gè)持續(xù)工作。我們搭建了一套自動(dòng)化監(jiān)控系統(tǒng)關(guān)鍵指標(biāo)包括節(jié)點(diǎn)在線率按臺(tái)區(qū)維度統(tǒng)計(jì)低于95%自動(dòng)報(bào)警。上行數(shù)據(jù)成功率從電表發(fā)出數(shù)據(jù)到服務(wù)器收到之間的成功比例這個(gè)指標(biāo)通常比在線率更能反映網(wǎng)絡(luò)質(zhì)量。信道RSSI和SNR平均值觀察干擾趨勢(shì)如果某個(gè)信道SNR持續(xù)惡化說明可能有新的干擾源。節(jié)點(diǎn)平均發(fā)射功率和SF分布如果大量節(jié)點(diǎn)SF變高、功率調(diào)大說明覆蓋質(zhì)量在下降需要檢查網(wǎng)關(guān)天線或周邊是否有新建筑物遮擋。電池電壓如果支持提前預(yù)警電池不足。運(yùn)維平臺(tái)數(shù)據(jù)要做好時(shí)間維度的聚合按小時(shí)、日、周展示趨勢(shì)這樣能盡早發(fā)現(xiàn)指數(shù)級(jí)惡化。我曾經(jīng)遇到過一個(gè)臺(tái)區(qū)在線率每周緩慢下降1%持續(xù)一個(gè)月才達(dá)到報(bào)警閾值。后來發(fā)現(xiàn)是網(wǎng)關(guān)附近的一棵大樹迅速生長(zhǎng)樹冠擋住了天線的一部分信號(hào)。如果沒有趨勢(shì)監(jiān)控再過幾個(gè)月這個(gè)臺(tái)區(qū)就會(huì)徹底失聯(lián)。6. 下一次項(xiàng)目我會(huì)怎么做每次項(xiàng)目結(jié)束都有值得改進(jìn)的地方?;诙啻蜭oRa智能電表計(jì)量平臺(tái)的建設(shè)經(jīng)驗(yàn)如果讓我重新做一次同類項(xiàng)目我會(huì)在幾個(gè)關(guān)鍵環(huán)節(jié)調(diào)整策略。第一前期需求調(diào)研時(shí)就把“臺(tái)區(qū)特征”摸清楚。這里的臺(tái)區(qū)特征包括表箱位置是室內(nèi)還是室外、箱體材質(zhì)是金屬還是塑料、樓棟密度、是否有大型變頻設(shè)備、附近是否有基站電磁輻射源、電表安裝空間是否支持外置天線。這些信息直接決定了節(jié)點(diǎn)模塊的天線形式、發(fā)射功率和網(wǎng)關(guān)位置。我們過去吃過虧把所有配電箱都按內(nèi)置天線設(shè)計(jì)結(jié)果有一部分金屬表箱信號(hào)衰減嚴(yán)重后期只能改造外置天線增加了不少工程成本。第二產(chǎn)品選型階段優(yōu)先選擇帶頻譜事件捕獲功能的芯片方案。Semtech SX1262和SX1268都內(nèi)置了一些頻譜特征識(shí)別能力可以輔助判斷當(dāng)前信道是否受干擾。如果只是單純支持通信調(diào)試時(shí)會(huì)少了很多診斷手段。第三云平臺(tái)和運(yùn)維平臺(tái)在開發(fā)前期就要預(yù)留接口而不是等項(xiàng)目上線后再補(bǔ)。數(shù)據(jù)上報(bào)的鏈路一開始就要定義好JSON或Protobuf格式電表通信模組解析的數(shù)據(jù)字段要和云數(shù)據(jù)庫(kù)表結(jié)構(gòu)對(duì)齊。部分項(xiàng)目后期為了在云端展示波形曲線重新設(shè)計(jì)了報(bào)文格式導(dǎo)致所有電表固件升級(jí)了一遍沒必要。第四多測(cè)、多試、多記錄。LoRa的現(xiàn)場(chǎng)效果和電波環(huán)境關(guān)系太大理論計(jì)算只能做參考。我們建議在每個(gè)臺(tái)區(qū)準(zhǔn)備好“移動(dòng)測(cè)試箱”里面放一個(gè)LoRa節(jié)點(diǎn)模塊、一個(gè)簡(jiǎn)易OLED屏顯示信號(hào)質(zhì)量加上一塊電池隨時(shí)可以在現(xiàn)場(chǎng)測(cè)試覆蓋。這個(gè)箱子成本不高但能極大提高調(diào)試效率。我現(xiàn)在回過頭看整個(gè)LoRa智能電表計(jì)量平臺(tái)項(xiàng)目真正的技術(shù)難度不在芯片本身而在于把射頻通信、電表業(yè)務(wù)、網(wǎng)絡(luò)管理、長(zhǎng)期運(yùn)維這些環(huán)節(jié)整合在一起并且能穩(wěn)定運(yùn)行幾年。Semtech的LoRa設(shè)備是這套系統(tǒng)里的底層骨架但讓它發(fā)揮出應(yīng)有的價(jià)值還要靠在真實(shí)環(huán)境里打磨每一個(gè)細(xì)節(jié)。希望這篇文章的例子和經(jīng)驗(yàn)?zāi)芙o你一些參考下次在類似的項(xiàng)目里少走一點(diǎn)彎路。