關(guān)如何解決水務(wù)暖通斷網(wǎng)與協(xié)議轉(zhuǎn)換難題)
做水務(wù)、暖通項(xiàng)目集成的人大概都經(jīng)歷過(guò)那種時(shí)刻站端PLC控制柜裝好了傳感器標(biāo)定完了往平臺(tái)上報(bào)數(shù)據(jù)也開始跑了結(jié)果一到雷雨季或者工地上挖斷光纖整個(gè)監(jiān)控頁(yè)面就全部飄紅。最要命的是遠(yuǎn)端操作沒(méi)人敢動(dòng)現(xiàn)場(chǎng)巡檢又隔得遠(yuǎn)本該靠系統(tǒng)自動(dòng)完成的事全卡在一根看不見(jiàn)的網(wǎng)線上。這個(gè)痛點(diǎn)恰好就是“邊緣網(wǎng)關(guān)”這個(gè)詞在水務(wù)暖通圈子里慢慢火起來(lái)的原因。它不是那種放在機(jī)房里的什么高深設(shè)備而是一個(gè)放到水泵房、換熱站、管網(wǎng)節(jié)點(diǎn)邊上能“自己琢磨一會(huì)兒”的小盒子。它能幫項(xiàng)目解決協(xié)議不通、網(wǎng)絡(luò)不穩(wěn)、數(shù)據(jù)斷檔、遠(yuǎn)程調(diào)試難等一系列實(shí)際問(wèn)題。這篇分享我不講PPT里的概念只講一個(gè)常年跑水務(wù)和暖通現(xiàn)場(chǎng)的人對(duì)邊緣網(wǎng)關(guān)最樸素的理解以及落地時(shí)真正要注意的細(xì)節(jié)。1. 現(xiàn)場(chǎng)的真實(shí)故障網(wǎng)絡(luò)一斷系統(tǒng)還剩多少可用性先說(shuō)一個(gè)比較典型的泵站場(chǎng)景。去年我參與的一個(gè)市政污水提升泵站改造項(xiàng)目站的PLC用的是某主流品牌自帶以太網(wǎng)口柜子里還有一臺(tái)DTU負(fù)責(zé)把數(shù)據(jù)傳到中心調(diào)度平臺(tái)。表面上架構(gòu)很清晰傳感器進(jìn)PLCPLC做邏輯控制DTU把PLC寄存器里的數(shù)據(jù)定時(shí)上報(bào)。但問(wèn)題是這個(gè)泵站位于遠(yuǎn)郊運(yùn)營(yíng)商信號(hào)時(shí)好時(shí)壞SIM卡經(jīng)常出現(xiàn)長(zhǎng)時(shí)間掉線。掉線以后平臺(tái)上的液位、流量全部變成舊數(shù)據(jù)中控室值班員壓根不知道現(xiàn)場(chǎng)已經(jīng)溢流了。最尷尬的是泵站PLC里其實(shí)寫了“液位高高報(bào)警自動(dòng)啟動(dòng)備用泵”的邏輯這本該是本地自動(dòng)完成的可因?yàn)槲耶?dāng)時(shí)把報(bào)警判斷做在了中心平臺(tái)網(wǎng)絡(luò)一斷該有的聯(lián)動(dòng)全都沒(méi)了。后來(lái)我在PLC和DTU之間加了一臺(tái)邊緣網(wǎng)關(guān)把原來(lái)“設(shè)備-云端”的直連模式改成了“設(shè)備-邊緣網(wǎng)關(guān)-云端”的三層模式。網(wǎng)關(guān)本地做的第一件事就是接管報(bào)警判定每秒鐘讀一次液位超過(guò)設(shè)定值直接給PLC發(fā)一條MQTT指令讓它強(qiáng)制啟動(dòng)水泵。同時(shí)網(wǎng)關(guān)內(nèi)置了一張較大容量的存儲(chǔ)卡把斷線期間采集到的所有點(diǎn)位數(shù)據(jù)都打上時(shí)間戳存起來(lái)。網(wǎng)絡(luò)恢復(fù)之后網(wǎng)關(guān)按照時(shí)間順序把所有數(shù)據(jù)補(bǔ)傳上去平臺(tái)上的曲線基本看不出斷檔。那一次改造讓我明顯感受到邊緣網(wǎng)關(guān)解決的核心不是“傳得快”而是讓整個(gè)系統(tǒng)在網(wǎng)絡(luò)不可用的時(shí)候仍然具備基本的可用性。這個(gè)理念水務(wù)行業(yè)要暖通行業(yè)同樣要。1.1 協(xié)議轉(zhuǎn)換把亂七八糟的通訊方式變成統(tǒng)一格式不管是水務(wù)還是暖通現(xiàn)場(chǎng)設(shè)備基本都存在“協(xié)議混雜”的問(wèn)題。老泵房里可能有Modbus RTU儀表有4-20mA變送器有通過(guò)串口輸出的超聲波流量計(jì)到了換熱站更麻煩熱力表可能是DL/T 645規(guī)約變頻器可能是廠家私有協(xié)議樓棟平衡閥又只支持BACnet MS/TP。傳統(tǒng)的做法是每個(gè)設(shè)備都往PLC里拉線由PLC做一個(gè)集中轉(zhuǎn)換再通過(guò)網(wǎng)絡(luò)給平臺(tái)。但很多改造項(xiàng)目根本沒(méi)那么多PLC空余點(diǎn)位而且PLC側(cè)處理大數(shù)據(jù)量通訊也比較吃力。邊緣網(wǎng)關(guān)在中間相當(dāng)于一個(gè)“多語(yǔ)言翻譯官”。我把現(xiàn)場(chǎng)儀表按物理接口分成幾組RS485的走串口服務(wù)器接進(jìn)網(wǎng)關(guān)以太網(wǎng)的直接走TCP/UDP接入數(shù)字量輸入輸出的走IO模塊。網(wǎng)關(guān)內(nèi)部安裝不同的協(xié)議解析插件開機(jī)后分別去輪詢每一路設(shè)備把寄存器地址、數(shù)據(jù)格式、單位換算全部處理完最終統(tǒng)一成JSON數(shù)據(jù)包通過(guò)MQTT或者HTTP發(fā)給云端平臺(tái)。這樣平臺(tái)側(cè)永遠(yuǎn)只面對(duì)一種規(guī)范的數(shù)據(jù)模型不需要關(guān)心某個(gè)傳感器到底是哪家廠生產(chǎn)的。1.2 數(shù)據(jù)斷線補(bǔ)傳地埋管網(wǎng)項(xiàng)目最看重的“記憶能力”水務(wù)項(xiàng)目里有一個(gè)詞叫“數(shù)據(jù)連續(xù)性”。連續(xù)監(jiān)測(cè)溶解氧、濁度、余氯、管網(wǎng)壓力如果斷了一小時(shí)數(shù)據(jù)對(duì)工藝分析來(lái)說(shuō)可能就要重來(lái)。邊緣網(wǎng)關(guān)的斷線緩存機(jī)制寫起來(lái)不難做成穩(wěn)定卻沒(méi)那么簡(jiǎn)單。我在一個(gè)管網(wǎng)壓力監(jiān)測(cè)點(diǎn)上調(diào)試時(shí)發(fā)現(xiàn)網(wǎng)關(guān)死機(jī)重啟以后某些緩存文件會(huì)損壞導(dǎo)致補(bǔ)傳的數(shù)據(jù)在云端出現(xiàn)重復(fù)或亂序。后來(lái)我在配置里選了一款支持SQLite數(shù)據(jù)庫(kù)存儲(chǔ)的網(wǎng)關(guān)每一條記錄都帶獨(dú)立的遞增編號(hào)和下發(fā)時(shí)間平臺(tái)收到數(shù)據(jù)后按device_idtimestamp做去重。經(jīng)過(guò)這層處理才真正做到了斷線期間緩存幾千條記錄恢復(fù)后一條不丟一條不亂。注意選型時(shí)不要只看“能緩存”這個(gè)說(shuō)法要問(wèn)清楚緩存文件格式是什么、斷電瞬間寫入會(huì)不會(huì)造成數(shù)據(jù)丟失、緩存滿了以后覆蓋策略是怎樣的。這三個(gè)問(wèn)題問(wèn)完基本能篩掉一大半半吊子產(chǎn)品。2. 換個(gè)角度想邊緣網(wǎng)關(guān)是給自動(dòng)化系統(tǒng)開了一扇對(duì)外的門不是來(lái)?yè)孭LC飯碗的很多做自動(dòng)化出身的朋友一聽見(jiàn)“邊緣計(jì)算”就緊張總覺(jué)得是不是又要加一套控制器替換掉PLC。其實(shí)想多了。我個(gè)人的理解是PLC就好比一臺(tái)設(shè)備的心臟和神經(jīng)負(fù)責(zé)把現(xiàn)場(chǎng)的邏輯控制做到又快又穩(wěn)而邊緣網(wǎng)關(guān)更像是站在門口的一個(gè)哨兵負(fù)責(zé)和外界打交道把外界的需求翻譯成PLC聽得懂的語(yǔ)言再把PLC的健康狀態(tài)匯報(bào)給外界。2.1 熱泵機(jī)組、水泵聯(lián)鎖這些實(shí)時(shí)控制絕不能放在邊緣網(wǎng)關(guān)里有一次在暖通冷熱源機(jī)房一個(gè)剛?cè)胄械耐聠?wèn)我既然網(wǎng)關(guān)計(jì)算能力比PLC強(qiáng)能不能把冷水機(jī)組的群控策略放到網(wǎng)關(guān)里做我當(dāng)場(chǎng)就否了這個(gè)方案。冷水機(jī)組的啟停聯(lián)鎖、冷凍泵/冷卻泵的順序啟動(dòng)、壓差旁通閥的PID調(diào)節(jié)這些都有一個(gè)共同特點(diǎn)控制周期要求毫秒級(jí)到百毫秒級(jí)而且需要和硬接線保護(hù)回路形成閉環(huán)。邊緣網(wǎng)關(guān)的操作系統(tǒng)通常是Linux或者輕量級(jí)的嵌入式系統(tǒng)跑的是上層應(yīng)用一旦應(yīng)用進(jìn)程阻塞、系統(tǒng)更新重啟、或者網(wǎng)絡(luò)負(fù)荷過(guò)高都可能造成輸出中斷。工業(yè)安全講究“失效安全”如果控制層突然失聯(lián)閥門和水泵必須維持在一個(gè)安全狀態(tài)而不是因?yàn)檫吘壘W(wǎng)關(guān)重啟導(dǎo)致誤動(dòng)作。所以我的建議是凡是涉及設(shè)備保護(hù)和聯(lián)鎖的邏輯一律留在PLC或者DDC里邊緣網(wǎng)關(guān)只允許做“建議型輸出”——例如通過(guò)Modbus寫寄存器給PLC一個(gè)“建議開啟某臺(tái)水泵”的指令真正執(zhí)行還是PLC內(nèi)部程序說(shuō)了算。2.2 邊緣規(guī)則引擎適合做報(bào)警、節(jié)能判斷和工況畫像那么網(wǎng)關(guān)上的算力到底用來(lái)做什么以我一個(gè)污水處理廠的項(xiàng)目為例現(xiàn)場(chǎng)有提升泵房的液位、進(jìn)水流量計(jì)、pH計(jì)和電導(dǎo)率儀。過(guò)去每一臺(tái)泵之間的輪換、清洗周期、高液位啟動(dòng)都是靠PLC定時(shí)完成的但問(wèn)題是水質(zhì)波動(dòng)大的時(shí)候定時(shí)輪換并不合理。我利用邊緣網(wǎng)關(guān)的規(guī)則引擎配了一條策略讀取當(dāng)前進(jìn)水電導(dǎo)率如果超過(guò)某個(gè)閾值則將當(dāng)前輪換周期從“每四小時(shí)切換”自動(dòng)調(diào)整為“每?jī)尚r(shí)切換”。這個(gè)判斷不需要像保護(hù)聯(lián)鎖那樣毫秒級(jí)響應(yīng)即使網(wǎng)關(guān)死機(jī)幾分鐘也不會(huì)造成設(shè)備損壞但它能持續(xù)優(yōu)化設(shè)備運(yùn)行效率。類似的應(yīng)用還包括換熱站的氣候補(bǔ)償曲線修正、二次供水泵組的小流量和小功耗尋優(yōu)、以及末端風(fēng)機(jī)盤管的定時(shí)策略下發(fā)。所以給邊緣網(wǎng)關(guān)的定位應(yīng)當(dāng)是“會(huì)動(dòng)腦的助理”而不是“身手敏捷的保安”。想清楚這一層架構(gòu)上就不會(huì)跑偏。3. 水務(wù)項(xiàng)目和暖通項(xiàng)目接的東西不一樣折騰的點(diǎn)也完全不同雖然大家都叫“水務(wù)暖通項(xiàng)目”但這兩類項(xiàng)目落地時(shí)面對(duì)的設(shè)備差異非常大展開說(shuō)能寫好幾篇這里我把最常接入的對(duì)象和頭疼的地方列出來(lái)。3.1 水務(wù)場(chǎng)景泵房、水廠、管網(wǎng)監(jiān)測(cè)站點(diǎn)的數(shù)據(jù)體檢水務(wù)項(xiàng)目最常見(jiàn)的是三類點(diǎn)位水廠工藝段、中途加壓泵站/二次供水泵房、管網(wǎng)壓力水質(zhì)監(jiān)測(cè)點(diǎn)。水廠工藝段設(shè)備密集PLC品牌五花八門從西門子、羅克韋爾到國(guó)產(chǎn)小型PLC都有。很多老水廠還不愿意開放程序修改權(quán)限邊緣網(wǎng)關(guān)讀取數(shù)據(jù)只能靠網(wǎng)口采集器做只讀采集拿不到完整的內(nèi)部寄存器點(diǎn)表。這時(shí)候需要采集器自帶“模糊掃描”功能通過(guò)掃描已知區(qū)塊寄存器來(lái)發(fā)現(xiàn)可用數(shù)據(jù)點(diǎn)效率低一點(diǎn)但至少不依賴對(duì)方程序員的配合。二次供水泵房設(shè)備量少一般就是兩臺(tái)或四臺(tái)水泵、一臺(tái)氣壓罐、一組水位傳感器。痛點(diǎn)不在設(shè)備而在環(huán)境——地下室潮濕、夏季悶熱普通商用網(wǎng)關(guān)放進(jìn)去很容易因?yàn)槟抖搪?。我踩過(guò)這個(gè)坑選一款主板帶三防漆、能在-40℃到70℃工作的工業(yè)網(wǎng)關(guān)才穩(wěn)定下來(lái)。此外無(wú)線信號(hào)普遍差有條件要預(yù)留天線延長(zhǎng)線到室外或用高增益天線。管網(wǎng)監(jiān)測(cè)點(diǎn)沒(méi)有任何機(jī)柜經(jīng)常要在悶熱的檢查井或者綠化帶里的立桿上裝設(shè)備。這類場(chǎng)景最好選超低功耗DC供電的網(wǎng)關(guān)支持電池/太陽(yáng)能供電而且數(shù)據(jù)發(fā)送策略要設(shè)置成“變化上送定時(shí)心跳”避免實(shí)時(shí)長(zhǎng)連接導(dǎo)致電池快速耗盡。3.2 暖通場(chǎng)景換熱站、冷熱源機(jī)房、樓宇末端每一個(gè)都有一堆“孤島”暖通項(xiàng)目的核心是冷熱源和輸配系統(tǒng)。換熱站現(xiàn)場(chǎng)最常見(jiàn)的是熱量表、溫度壓力變送器、循環(huán)泵變頻器、電動(dòng)調(diào)節(jié)閥。麻煩的地方在于熱量表品牌和通訊協(xié)議很多都需要廠家特定的庫(kù)文件有些還需要單獨(dú)買協(xié)議授權(quán)。我遇到過(guò)一個(gè)項(xiàng)目一個(gè)換熱站里有三塊熱量表牌子不同輸出協(xié)議也不同。一塊標(biāo)準(zhǔn)Modbus RTU一塊用M-Bus還有一塊只有脈沖輸出。最后我的方案是前兩塊表分別用串口和M-Bus主站模塊接入邊緣網(wǎng)關(guān)脈沖輸出那塊直接接在網(wǎng)關(guān)的DI口上通過(guò)網(wǎng)關(guān)上做脈沖累計(jì)換算成熱量值。這樣雖然數(shù)據(jù)刷新頻率不同但到平臺(tái)后統(tǒng)一按每5分鐘一個(gè)點(diǎn)的粒度歸并用戶看到的就是一張整潔的報(bào)表。冷熱源機(jī)房則要面對(duì)冷凍水供回水溫度、流量、冷機(jī)電流、冷卻塔風(fēng)機(jī)狀態(tài)上百個(gè)點(diǎn)位而且很多點(diǎn)位來(lái)自不同控制設(shè)備。邊緣網(wǎng)關(guān)在這里主要做數(shù)據(jù)匯聚和格式規(guī)整把來(lái)自冷機(jī)自身控制屏、水泵變頻器、傳感器分線器、電表的數(shù)據(jù)都整合成一套規(guī)范模型然后再與上一級(jí)樓宇自控平臺(tái)對(duì)接。這樣樓宇平臺(tái)不用同時(shí)去打很多設(shè)備的驅(qū)動(dòng)集成難度降低一個(gè)數(shù)量級(jí)。4. 邊緣計(jì)算在網(wǎng)關(guān)里到底“算”了些什么說(shuō)幾個(gè)能直接用的例子“邊緣計(jì)算”這個(gè)詞聽起來(lái)有點(diǎn)虛。實(shí)際上網(wǎng)關(guān)那點(diǎn)算力做不了深度學(xué)習(xí)也訓(xùn)練不了大模型但處理一些明確的工程邏輯綽綽有余。這里分享三類我用得最多的算法全都可以在網(wǎng)關(guān)配套的規(guī)則引擎里配置出來(lái)。4.1 數(shù)據(jù)預(yù)處理濾波、死區(qū)、數(shù)據(jù)質(zhì)量標(biāo)記現(xiàn)場(chǎng)數(shù)據(jù)毛刺特別常見(jiàn)尤其是變頻器附近掛著的模擬量傳感器容易受到電磁干擾。直接把這些帶毛刺的數(shù)據(jù)傳到平臺(tái)平臺(tái)上的報(bào)表會(huì)波動(dòng)得很厲害還容易誤報(bào)警。我在邊緣網(wǎng)關(guān)上對(duì)每一個(gè)AI點(diǎn)位配置了滑動(dòng)窗口濾波算法每秒鐘采樣一次保存最近5個(gè)值輸出中位值再上報(bào)。像液位這種變化不快的量還可以疊加一個(gè)死區(qū)判斷——數(shù)值變化量如果不超過(guò)滿量程的0.5%就不主動(dòng)上送只在平臺(tái)側(cè)用定時(shí)心跳確認(rèn)鏈路正常。這種處理能顯著減少無(wú)效數(shù)據(jù)量對(duì)4G流量卡也友好。4.2 設(shè)備工況識(shí)別從“報(bào)數(shù)據(jù)”到“報(bào)狀態(tài)”其實(shí)平臺(tái)的運(yùn)營(yíng)方并不關(guān)心寄存器里的原始值他們關(guān)心的是“這個(gè)設(shè)備現(xiàn)在處于什么狀態(tài)”。所以我在邊緣網(wǎng)關(guān)里做了一套工況判定邏輯。以水泵為例我同時(shí)讀泵的運(yùn)行反饋DI點(diǎn)和電流值A(chǔ)I點(diǎn)兩者一組合就能判斷出四種工況有運(yùn)行信號(hào)且電流在正常范圍正常運(yùn)轉(zhuǎn)有運(yùn)行信號(hào)但電流偏低空轉(zhuǎn)或氣縛無(wú)運(yùn)行信號(hào)但電流有波動(dòng)可能存在外部拖動(dòng)需要排查無(wú)運(yùn)行信號(hào)且電流接近零正常停機(jī)這種判斷在網(wǎng)關(guān)本地做的好處是即便平臺(tái)斷連網(wǎng)關(guān)也能把工況變化事件通過(guò)短信模塊或者本地聲光報(bào)警推送出去。有一次就是這套邏輯發(fā)現(xiàn)泵站一臺(tái)泵“開著但不出水”等電工過(guò)去一看進(jìn)水閥掉了一根螺栓葉輪都打碎了半邊要再晚幾個(gè)小時(shí)就是整泵報(bào)廢的事故。4.3 能效分析所需的小時(shí)級(jí)累計(jì)量在暖通項(xiàng)目里制冷季總能碰到“為什么這個(gè)站電費(fèi)比那個(gè)站高一截”的靈魂拷問(wèn)。平臺(tái)看瞬時(shí)功率看不出問(wèn)題因?yàn)槔錂C(jī)的運(yùn)行組合一直在變。我的做法是每一個(gè)冷熱源機(jī)房網(wǎng)關(guān)里跑一個(gè)小腳本每15分鐘統(tǒng)計(jì)一次冷機(jī)累計(jì)運(yùn)行時(shí)長(zhǎng)、冷凍泵累計(jì)耗電量、冷機(jī)啟停次數(shù)、平均COP等指標(biāo)在本地生成一張數(shù)據(jù)明細(xì)表。保存15天實(shí)時(shí)同步到云平臺(tái)的云端數(shù)據(jù)庫(kù)。平臺(tái)端的報(bào)表直接讀這張表不需要再對(duì)原始高頻數(shù)據(jù)做復(fù)雜的聚合計(jì)算。這個(gè)思路本質(zhì)上是把計(jì)算壓力分散到了每個(gè)現(xiàn)場(chǎng)終端避免了所有站的數(shù)據(jù)全部上傳后在云端做大批量計(jì)算的資源消耗。5. 落地組網(wǎng)時(shí)邊緣網(wǎng)關(guān)的三種常見(jiàn)形態(tài)與選型對(duì)照做了幾個(gè)項(xiàng)目之后我發(fā)現(xiàn)邊緣網(wǎng)關(guān)并不是只有“一臺(tái)小工控機(jī)”這一種長(zhǎng)法。根據(jù)項(xiàng)目預(yù)算、空間限制和算力需求可以分成三種形態(tài)。5.1 一體化網(wǎng)關(guān)系列適合中小泵房和換熱站這種設(shè)備一般長(zhǎng)得很像一臺(tái)帶天線的工業(yè)路由器內(nèi)置幾個(gè)串口、網(wǎng)口和DI/DO出廠就預(yù)裝了協(xié)議插件和邊緣規(guī)則引擎通過(guò)Web頁(yè)面就能完成全部配置。優(yōu)點(diǎn)是好部署、好維護(hù)、功耗低缺點(diǎn)是擴(kuò)展性有限如果后期想跑一段比較復(fù)雜的Python腳本很可能配置不夠用。適合場(chǎng)景二次供水泵房、村級(jí)污水處理站、小型換熱站點(diǎn)數(shù)不超過(guò)100個(gè)邏輯以簡(jiǎn)單規(guī)則為主。5.2 邊緣計(jì)算盒子/緊湊型工控機(jī)適合大型水廠和冷熱源機(jī)房這種形態(tài)本質(zhì)上是一臺(tái)無(wú)風(fēng)扇的工業(yè)電腦配置有更高性能的處理器和較大的內(nèi)存可以跑完整的Linux容器甚至裝上Node-RED這類圖形化編程工具。它的調(diào)試靈活性明顯更強(qiáng)我可以隨時(shí)開一個(gè)Docker容器測(cè)試新協(xié)議運(yùn)行穩(wěn)定之后再固化到正式環(huán)境。適合場(chǎng)景數(shù)千個(gè)點(diǎn)位的水廠、大型區(qū)域能源站、需要運(yùn)行復(fù)雜能效模型的項(xiàng)目。5.3 軟網(wǎng)關(guān)/虛擬化邊緣節(jié)點(diǎn)適合已有完善IT基礎(chǔ)設(shè)施的數(shù)據(jù)中心如果項(xiàng)目已經(jīng)有一臺(tái)本地服務(wù)器也可以利用虛擬化環(huán)境部署一套純軟件的邊緣采集服務(wù)替代物理網(wǎng)關(guān)。優(yōu)點(diǎn)是不用新增硬件但代價(jià)是它無(wú)法直接接入RS485串口和DI/DO還需要額外配置串口服務(wù)器把物理信號(hào)轉(zhuǎn)成TCP/IP而且一旦服務(wù)器整體斷電控制鏈路依然會(huì)跟著癱瘓。對(duì)比維度一體化網(wǎng)關(guān)邊緣計(jì)算盒子軟網(wǎng)關(guān)接口豐富程度高中低需搭配串口服務(wù)器邊緣算力低-中中-高由服務(wù)器決定斷網(wǎng)本地邏輯支持強(qiáng)支持依賴服務(wù)器部署成本低中低硬件復(fù)用環(huán)境適應(yīng)性好較好差偏向機(jī)房典型應(yīng)用場(chǎng)景泵房、換熱站水廠、能源站已有機(jī)房云化的項(xiàng)目選型時(shí)如果拿不準(zhǔn)我的建議是小站先上一體化網(wǎng)關(guān)留出一個(gè)網(wǎng)口給后期擴(kuò)容幾個(gè)大站集中管理做云端平臺(tái)預(yù)算高一點(diǎn)再考慮上邊緣計(jì)算盒子。千萬(wàn)不要一上來(lái)就全項(xiàng)目上最高配的盒子很多小泵房的點(diǎn)位數(shù)據(jù)和協(xié)議復(fù)雜度根本用不完。6. 項(xiàng)目里那些容易翻車的“隱形細(xì)節(jié)”以及我的調(diào)試思路邊緣網(wǎng)關(guān)本質(zhì)上還是一臺(tái)“小型電腦”它對(duì)環(huán)境、電源、網(wǎng)絡(luò)鏈路都有要求。安裝調(diào)試過(guò)程中最容易翻車的地方往往不在大方案上而在一些不起眼的細(xì)節(jié)里。6.1 電源和接地問(wèn)題很多網(wǎng)關(guān)項(xiàng)目故障都是電源紋波導(dǎo)致的。同一個(gè)柜子里變頻器啟停時(shí)電網(wǎng)會(huì)產(chǎn)生很大的電壓跌落和毛刺直接給網(wǎng)關(guān)供電的開關(guān)電源如果質(zhì)量一般很容易導(dǎo)致網(wǎng)關(guān)注銷、重啟甚至文件系統(tǒng)損壞。我現(xiàn)在的習(xí)慣是網(wǎng)關(guān)的供電回路必須單獨(dú)走一路帶隔離的DC-DC電源模塊輸入端加TVS管和共模電感。網(wǎng)關(guān)外殼的接地端子也要專門做接地測(cè)量接地電阻大于4Ω的時(shí)候必須整改。這個(gè)事情我過(guò)去覺(jué)得無(wú)所謂直到有一年在換熱站里連續(xù)燒了三塊網(wǎng)關(guān)主板檢測(cè)發(fā)現(xiàn)就是柜內(nèi)地線被油漆蓋住沒(méi)搭接到位。6.2 網(wǎng)絡(luò)策略不是“插上就能通”暖通項(xiàng)目的網(wǎng)絡(luò)經(jīng)常要經(jīng)過(guò)甲方的三層交換機(jī)、防火墻、上網(wǎng)行為管理設(shè)備才能連到外網(wǎng)平臺(tái)。我曾經(jīng)在一棟辦公樓的BA系統(tǒng)項(xiàng)目里網(wǎng)關(guān)在設(shè)備現(xiàn)場(chǎng)直連路由器的自動(dòng)獲取IP是通的但接入樓宇主干網(wǎng)絡(luò)以后死活連不上MQTT平臺(tái)。排查了半天才發(fā)現(xiàn)是主干的防火墻默認(rèn)禁止了TCP 8883端口修改策略以后秒連。建議所有項(xiàng)目在開工前做一次“端口與域名可達(dá)性測(cè)試”把平臺(tái)域名、端口清單列出來(lái)發(fā)給客戶IT確認(rèn)。還有一個(gè)經(jīng)常被忽略的子網(wǎng)隔離問(wèn)題水泵控制柜里的PLC網(wǎng)段、網(wǎng)關(guān)網(wǎng)段、辦公網(wǎng)網(wǎng)段如果不做好VLAN隔離廣播風(fēng)暴可能會(huì)直接讓網(wǎng)關(guān)掉線。6.3 柜內(nèi)安裝位置要考慮天線和散熱無(wú)線網(wǎng)關(guān)不管用4G還是Wi-Fi天線安裝位置都需要特別注意絕對(duì)不能把天線貼著金屬柜壁綁扎。正確做法是把天線通過(guò)饋線引出柜外垂直安裝在柜頂或者墻面上且盡量遠(yuǎn)離變頻器。網(wǎng)關(guān)自身發(fā)熱不大但如果和多個(gè)大功率模塊擠在一個(gè)封閉箱體內(nèi)也容易導(dǎo)致運(yùn)行溫度過(guò)高。夏季陽(yáng)光直曬屋頂箱體內(nèi)部能達(dá)到60℃以上因此高溫環(huán)境的柜體要加裝排風(fēng)扇或者通風(fēng)孔。6.4 遠(yuǎn)程調(diào)試通道一定要留項(xiàng)目交付后后面大概率還要改點(diǎn)位、升級(jí)程序、排查問(wèn)題。如果網(wǎng)關(guān)不支持遠(yuǎn)程配置下發(fā)和遠(yuǎn)程日志查看運(yùn)維人員就只能一趟趟跑現(xiàn)場(chǎng)。我現(xiàn)在選型時(shí)會(huì)特意確認(rèn)網(wǎng)關(guān)管理平臺(tái)支持“遠(yuǎn)程端口映射”能讓我在出差途中連進(jìn)現(xiàn)場(chǎng)網(wǎng)絡(luò)去查看PLC診斷頁(yè)面前提是做好賬號(hào)口令與白名單管理這樣能節(jié)約一半以上的售后成本。7. 一次完整的邊緣網(wǎng)關(guān)調(diào)試排查流程如果讀者正好在現(xiàn)場(chǎng)遇到了“網(wǎng)關(guān)連不上平臺(tái)”的故障可以參考我這套排查思路按照從物理層到應(yīng)用層的順序來(lái)先看狀態(tài)燈確認(rèn)電源燈、網(wǎng)絡(luò)燈、信號(hào)燈是否正常。很多設(shè)備指示燈顏色代表不同狀態(tài)翻說(shuō)明書比瞎猜要快。Ping測(cè)試在網(wǎng)關(guān)的調(diào)試界面Ping一下平臺(tái)的域名或IP能通就證明網(wǎng)絡(luò)鏈路沒(méi)問(wèn)題不通則依次檢查網(wǎng)線、IP地址、網(wǎng)關(guān)地址和DNS。測(cè)試端口連通性如果網(wǎng)絡(luò)通但應(yīng)用連不上使用telnet或者nc命令測(cè)試端口。以MQTT為例默認(rèn)是1883如果是加密連接則是8883需要確認(rèn)證書有沒(méi)有過(guò)期。看網(wǎng)關(guān)系統(tǒng)日志檢查是否有連續(xù)重連記錄、鑒權(quán)失敗記錄。MQTT經(jīng)常遇到用戶名密碼正確但ClientID重復(fù)的坑只要有兩個(gè)網(wǎng)關(guān)用了同一個(gè)ClientID必然有一個(gè)被踢下線這種問(wèn)題從報(bào)文里很難看出來(lái)日志里卻一目了然。抓包確認(rèn)最后手段是在網(wǎng)關(guān)側(cè)抓包看設(shè)備是否發(fā)出了SYN請(qǐng)求、服務(wù)器是否回了ACK。如果只發(fā)不收往往是防火墻在丟棄回包。這套流程走完九成以上的連接問(wèn)題都能定位。不需要一上來(lái)就懷疑網(wǎng)關(guān)硬件損壞硬件反而通常是最耐用的那一環(huán)。8. 關(guān)于預(yù)算和架構(gòu)多花的這幾萬(wàn)塊到底買回了什么最后聊聊錢的事。邊緣網(wǎng)關(guān)單臺(tái)設(shè)備的價(jià)格比普通DTU貴不少大一點(diǎn)的項(xiàng)目光網(wǎng)關(guān)采購(gòu)就是一筆不小預(yù)算。如果只是“把數(shù)據(jù)傳到平臺(tái)”這個(gè)目標(biāo)確實(shí)用DTU會(huì)更省錢但DTU天生不具備斷網(wǎng)緩存、本地規(guī)則、協(xié)議轉(zhuǎn)換這些能力。我遇到過(guò)幾個(gè)站端控制室由于經(jīng)常斷網(wǎng)用了DTU以后平臺(tái)數(shù)據(jù)三天兩頭斷檔??蛻艨己酥笜?biāo)又是“數(shù)據(jù)完整率不低于99%”每到月底數(shù)據(jù)不達(dá)標(biāo)就要返工整改整改成本算下來(lái)還不如一開始每臺(tái)設(shè)備多預(yù)算兩三千元選帶邊緣能力的網(wǎng)關(guān)。反過(guò)來(lái)數(shù)據(jù)斷檔造成的“假報(bào)警”還會(huì)讓運(yùn)維人員形成習(xí)慣性無(wú)視真出事反而沒(méi)人發(fā)現(xiàn)這個(gè)隱形代價(jià)更大。所以我的建議是項(xiàng)目預(yù)算允許的情況下把邊緣網(wǎng)關(guān)當(dāng)成自控系統(tǒng)的一項(xiàng)基礎(chǔ)設(shè)施來(lái)設(shè)計(jì)而不是當(dāng)成可選配件。尤其在做水務(wù)和暖通這種動(dòng)輒十多年生命周期的項(xiàng)目時(shí)前期多投入一點(diǎn)換來(lái)后期穩(wěn)定的運(yùn)維體驗(yàn)這個(gè)賬是算得過(guò)來(lái)的。做了這么多現(xiàn)場(chǎng)項(xiàng)目我的體會(huì)是邊緣網(wǎng)關(guān)不會(huì)取代PLC也不會(huì)取代云平臺(tái)它更像是給這些系統(tǒng)之間搭了一座堅(jiān)固的橋。橋可能不是最吸引眼球的部分但沒(méi)有橋兩岸都只能孤零零地站著。下一次再有人問(wèn)邊緣網(wǎng)關(guān)到底解決什么問(wèn)題我會(huì)直接帶他看看那個(gè)斷網(wǎng)三天依然運(yùn)轉(zhuǎn)正常的泵站那里藏著最真實(shí)的答案。