溫濕度傳感器部署實(shí)戰(zhàn):從選型到調(diào)試)
去年夏天我們?cè)谀畴娏χ行牡呐潆姺孔霏h(huán)境整治方案里最關(guān)鍵的一項(xiàng)就是在每個(gè)配電柜內(nèi)部署RJ45以太網(wǎng)溫濕度傳感器。起因很直接2號(hào)低壓配電柜連續(xù)兩次因?yàn)楣駜?nèi)溫度過(guò)高自動(dòng)跳閘值班員打開(kāi)柜門(mén)一看面板燙得不敢摸電纜室里潮氣還很重。配電柜本身發(fā)熱大但柜內(nèi)空氣溫濕度一直沒(méi)人實(shí)時(shí)盯著等巡檢發(fā)現(xiàn)異常絕緣件的壽命和可靠性其實(shí)已經(jīng)打了折扣。當(dāng)時(shí)我們定了方案給每個(gè)關(guān)鍵配電柜裝一個(gè)帶RJ45網(wǎng)口的網(wǎng)絡(luò)型溫濕度傳感器通過(guò)網(wǎng)線直接連值班室交換機(jī)數(shù)據(jù)走標(biāo)準(zhǔn)的Modbus TCP協(xié)議統(tǒng)一匯到動(dòng)環(huán)平臺(tái)。從選型、布局、網(wǎng)絡(luò)調(diào)試到穩(wěn)定運(yùn)行前前后后折騰了不到一個(gè)月。今天就把這套部署實(shí)施過(guò)程完整寫(xiě)出來(lái)從為什么選以太網(wǎng)方案、傳感器怎么挑、柜內(nèi)裝在哪、網(wǎng)絡(luò)怎么配到現(xiàn)場(chǎng)踩過(guò)的坑都給準(zhǔn)備做類似改造的朋友一個(gè)參考。1. 為什么偏偏是RJ45以太網(wǎng)溫濕度傳感器配電柜環(huán)境的三個(gè)硬約束1.1 配電柜不是什么空調(diào)房是高溫、高濕、強(qiáng)電磁的集合體配電柜的環(huán)境和普通機(jī)房完全不一樣。機(jī)房講究的是恒溫恒濕、防靜電配電柜恰恰相反——它在發(fā)熱而且發(fā)熱源就在傳感器邊上。大型配電柜內(nèi)部有斷路器、接觸器、母排、電纜接頭滿載運(yùn)行時(shí)機(jī)柜上部空氣溫度輕松到50℃以上電纜密集的進(jìn)線柜局部溫度更高。更麻煩的是濕度。配電房如果位于地下層或電纜溝附近空氣濕度常年偏高柜內(nèi)溫度晝夜變化時(shí)金屬表面很容易達(dá)到露點(diǎn)凝露。凝露一出現(xiàn)絕緣件表面爬電、短路、金屬銹蝕就都來(lái)了。我之前見(jiàn)過(guò)一個(gè)低壓柜進(jìn)出線端子的螺絲都銹成了綠色就是因?yàn)殚L(zhǎng)期濕度偏高。所以配電柜的環(huán)境監(jiān)控核心訴求就是兩件事第一把溫度異常在變成故障之前發(fā)現(xiàn)第二把濕度控制在凝露閾值以下。這倆訴求都不復(fù)雜難的是傳感器在這個(gè)環(huán)境里能不能穩(wěn)定工作。1.2 串口總線和無(wú)線方案在配電柜場(chǎng)景里都有明顯的短板很多朋友第一反應(yīng)是傳統(tǒng)的RS485溫濕度傳感器或者干脆用DHT11加單片機(jī)自己焊。DHT11做原型驗(yàn)證沒(méi)問(wèn)題但精度只有±2℃、±5%RH而且模擬信號(hào)線在柜內(nèi)強(qiáng)磁環(huán)境下很容易被干擾真要上生產(chǎn)環(huán)境我個(gè)人不推薦。RS485方案在工業(yè)現(xiàn)場(chǎng)很成熟可它有個(gè)繞不開(kāi)的問(wèn)題RS485本身是串行總線不能直接接入網(wǎng)絡(luò)必須配一個(gè)串口服務(wù)器或DTU做協(xié)議轉(zhuǎn)換。這意味著多一個(gè)網(wǎng)關(guān)設(shè)備多一路供電多一個(gè)故障點(diǎn)。網(wǎng)關(guān)斷電或者死機(jī)整個(gè)RS485總線上的傳感器全部失聯(lián)運(yùn)維排查起來(lái)很頭疼。RS485還有極性、終端電阻、共地這些講究現(xiàn)場(chǎng)調(diào)試時(shí)經(jīng)常在這上面栽跟頭。無(wú)線方案ZigBee、LoRa、433MHz也不行。配電柜是個(gè)金屬封閉體無(wú)線信號(hào)被柜體屏蔽得厲害如果傳感器裝在柜內(nèi)、接收端裝在柜外丟包率非常高。就算把天線引出來(lái)配電房里密集的金屬柜體之間信號(hào)繞射衰減也很?chē)?yán)重。我見(jiàn)過(guò)一個(gè)項(xiàng)目用無(wú)線溫濕度傳感器離接收機(jī)直線距離不到15米信號(hào)穿了兩排柜子以后輪詢成功率只有60%。1.3 以太網(wǎng)方案真正解決了什么一根網(wǎng)線同時(shí)搞定供電和數(shù)據(jù)RJ45以太網(wǎng)溫濕度傳感器把前面這些麻煩一次性拆掉了。它本質(zhì)上是把一個(gè)嵌入式溫濕度探頭和一個(gè)小型網(wǎng)絡(luò)終端做在一起有自己的CPU、MAC、IP地址網(wǎng)線插到交換機(jī)上就是一個(gè)獨(dú)立的網(wǎng)絡(luò)節(jié)點(diǎn)。它最大的優(yōu)勢(shì)是供電。大部分以太網(wǎng)溫濕度傳感器支持POE供電802.3af標(biāo)準(zhǔn)最大約13W而傳感器功耗一般不到2W所以一根網(wǎng)線同時(shí)走數(shù)據(jù)和電力不需要額外拉DC電源線。配電柜內(nèi)本來(lái)空間就緊少一路電源線理線負(fù)擔(dān)小很多。協(xié)議方面標(biāo)準(zhǔn)產(chǎn)品基本都支持Modbus TCP這是動(dòng)環(huán)監(jiān)控領(lǐng)域的通用語(yǔ)言。值班室的動(dòng)環(huán)主機(jī)、SCADA系統(tǒng)、組態(tài)軟件只要支持Modbus TCP就能直接輪詢這個(gè)傳感器不需要中間加協(xié)議轉(zhuǎn)換器。傳感器的IP是獨(dú)立的壞了一臺(tái)不影響其他節(jié)點(diǎn)這一點(diǎn)和RS485總線一個(gè)節(jié)點(diǎn)故障拖垮整條總線完全不一樣。成本上也劃算一臺(tái)RJ45以太網(wǎng)傳感器比RS485傳感器通常貴100到300元但省掉了串口服務(wù)器或DTU的300到500元整體成本基本持平部署還更簡(jiǎn)單。我在選型表里做了一個(gè)簡(jiǎn)單的對(duì)比大家在方案評(píng)審的時(shí)候可以直接用。對(duì)比維度RJ45以太網(wǎng)傳感器RS485傳感器串口服務(wù)器無(wú)線傳感器供電網(wǎng)線POE供電無(wú)需額外電源需DC電源網(wǎng)關(guān)還需單獨(dú)供電需電池或DC電源接入方式直連交換機(jī)獨(dú)立IP需串口服務(wù)器做協(xié)議轉(zhuǎn)換需無(wú)線接收網(wǎng)關(guān)故障隔離單點(diǎn)故障互不影響總線整體受影響丟包時(shí)數(shù)據(jù)不可靠金屬柜內(nèi)傳輸網(wǎng)線不受電磁干擾影響總線易受干擾信號(hào)衰減嚴(yán)重部署成本低線纜少中需網(wǎng)關(guān)和電源中接收端和電池2. 傳感器選型四要素探頭量程、殼體防護(hù)、供電與協(xié)議一個(gè)都不能含糊2.1 探頭量程與精度別被高精度宣傳帶偏配電柜監(jiān)控不需要實(shí)驗(yàn)室級(jí)精度但要覆蓋足夠?qū)挼牧砍?。選型時(shí)重點(diǎn)關(guān)注溫度量程至少-10℃到70℃濕度量程0到100%RH因?yàn)楣駜?nèi)局部溫度可能超過(guò)60℃低溫端的負(fù)溫度主要考慮冬季配電房停用或戶外柜的極端情況。精度方面主流網(wǎng)絡(luò)型溫濕度傳感器內(nèi)部用的是SHT30、SHT40、HTU21這類數(shù)字溫濕度芯片溫度精度可以做到±0.3℃左右濕度精度±2到3%RH完全滿足配電柜環(huán)境監(jiān)控的需求。比這個(gè)精度再高的傳感器價(jià)格翻倍不說(shuō)在配電柜這種溫度梯度大的環(huán)境里精度再高也體現(xiàn)不出來(lái)——你測(cè)的是柜內(nèi)一個(gè)點(diǎn)的空氣溫度和柜內(nèi)另一個(gè)位置的實(shí)際溫度差個(gè)2到3℃很正常單純追傳感器精度沒(méi)有意義。還有一個(gè)容易忽略的參數(shù)探頭的長(zhǎng)期穩(wěn)定性。配電柜內(nèi)常年有粉塵、有輕微酸性氣體橡膠絕緣件老化會(huì)釋放物質(zhì)廉價(jià)傳感器的探頭使用半年后讀數(shù)就可能漂移。選型時(shí)優(yōu)先看探頭是否可拆卸替換后期維護(hù)成本會(huì)低很多。2.2 殼體防護(hù)與安裝方式金屬柜體內(nèi)的物理細(xì)節(jié)配電柜不是潔凈機(jī)房柜內(nèi)可能有灰塵、凝露所以傳感器的防護(hù)等級(jí)至少要求IP65以上。這里要特別提醒IP防護(hù)等級(jí)說(shuō)的是傳感器本體但很多產(chǎn)品的探頭是外置的探頭自身的防護(hù)等級(jí)也要確認(rèn)。有些探頭外殼是半開(kāi)放的凝露直接滴到探頭上濕度讀數(shù)長(zhǎng)期偏高或者直接失效。安裝方式上我建議優(yōu)先選探桿式或者吸頂螺絲安裝的款式而不是簡(jiǎn)單的一體式方塊直貼柜壁。原因是柜壁本身溫度受柜內(nèi)發(fā)熱影響很大傳感器外殼緊貼柜壁時(shí)測(cè)到的溫度其實(shí)是柜壁金屬溫度不是空氣溫度讀數(shù)會(huì)虛高。探桿式可以讓探頭離開(kāi)柜壁3到5厘米測(cè)到的才是真正的環(huán)境空氣溫度。另外注意傳感器殼體材質(zhì)。配電柜內(nèi)空間封閉散熱條件差盡量選金屬殼或者散熱設(shè)計(jì)好的產(chǎn)品不要選全塑料封死的否則長(zhǎng)時(shí)間在55℃以上的柜內(nèi)運(yùn)行內(nèi)部元件老化速度會(huì)加快。2.3 POE供電與備用DC供電現(xiàn)場(chǎng)交換機(jī)未必支持POEPOE供電很省事但設(shè)計(jì)階段必須去現(xiàn)場(chǎng)核實(shí)一個(gè)事實(shí)配電柜連接到的那臺(tái)交換機(jī)到底支不支持POE。很多老舊配電房的交換機(jī)還是普通百兆交換機(jī)不帶POE功能。如果傳感器不支持DC供電你就得額外加一個(gè)POE供電模塊位置還不好放。所以在選型時(shí)我強(qiáng)烈建議選POE DC 12V雙供電的型號(hào)。POE能通就優(yōu)先用POE交換機(jī)不帶POE就臨時(shí)接DC電源靈活度完全掌握在自己手里。實(shí)際部署時(shí)我們有一半的柜子是用POE另一半因?yàn)榻粨Q機(jī)口不支持臨時(shí)用了DC12V等后面換交換機(jī)再整體切到POE。還要注意非標(biāo)POE的問(wèn)題。市面上有些監(jiān)控?cái)z像頭配的非標(biāo)POE交換機(jī)電壓是12V或24V直供不是標(biāo)準(zhǔn)的802.3af握手協(xié)商。把這種非標(biāo)POE接到標(biāo)準(zhǔn)POE設(shè)備上運(yùn)氣好設(shè)備不啟動(dòng)運(yùn)氣不好可能直接燒網(wǎng)口。選傳感器時(shí)一定要看說(shuō)明書(shū)是否聲明支持IEEE 802.3af或802.3at標(biāo)準(zhǔn)現(xiàn)場(chǎng)也要查清交換機(jī)POE是不是標(biāo)準(zhǔn)供電。2.4 協(xié)議開(kāi)放度Modbus TCP是底線私有協(xié)議堅(jiān)決不碰傳感器最終要接入動(dòng)環(huán)平臺(tái)或者自己寫(xiě)的采集程序。所以協(xié)議必須開(kāi)放。RJ45以太網(wǎng)溫濕度傳感器的協(xié)議大致分三類Modbus TCP工業(yè)動(dòng)環(huán)領(lǐng)域的通用協(xié)議幾乎所有平臺(tái)都支持這是我選型的底線要求。SNMP適合對(duì)接網(wǎng)絡(luò)管理系統(tǒng)如果你用網(wǎng)管平臺(tái)統(tǒng)一管設(shè)備SNMP也很方便。MQTT適合直接上云傳感器主動(dòng)上報(bào)互聯(lián)網(wǎng)平臺(tái)適合云監(jiān)控場(chǎng)景。需要警惕的是某些品牌只支持自己的私有云平臺(tái)或?qū)S肁PP數(shù)據(jù)要先上傳到廠商云端再轉(zhuǎn)發(fā)不僅多了一道繞路斷網(wǎng)時(shí)本地反而拿不到數(shù)據(jù)。這種產(chǎn)品功能演示時(shí)很好看真正集成到自有系統(tǒng)時(shí)非常痛苦。我們選型的標(biāo)準(zhǔn)很簡(jiǎn)單能直接通過(guò)Modbus TCP讀到原始溫濕度數(shù)值的產(chǎn)品優(yōu)先考慮私有協(xié)議的再便宜也不碰。3. 配電柜內(nèi)測(cè)點(diǎn)怎么布裝幾臺(tái)、裝在哪個(gè)位置、網(wǎng)線怎么走3.1 按柜型確定測(cè)點(diǎn)數(shù)量一個(gè)柜子至少一臺(tái)大柜子兩臺(tái)測(cè)點(diǎn)數(shù)量不是越多越好多了浪費(fèi)成本、占柜內(nèi)空間少了又測(cè)不到關(guān)鍵位置。我按常見(jiàn)柜型整理了一個(gè)參考柜型建議測(cè)點(diǎn)數(shù)量測(cè)點(diǎn)位置建議進(jìn)線柜/母聯(lián)柜1臺(tái)大電流柜建議2臺(tái)柜內(nèi)上部空氣溫度監(jiān)測(cè)為主大柜加裝下部電纜室監(jiān)測(cè)點(diǎn)饋線柜/抽屜柜每柜1臺(tái)柜內(nèi)上部靠近出線端區(qū)域電容柜每柜1臺(tái)柜內(nèi)中部或上部避開(kāi)電容器本體的局部高溫區(qū)配電室環(huán)境監(jiān)測(cè)房間對(duì)角線兩處離地1.5米左右遠(yuǎn)離柜體熱輻射影響進(jìn)線柜和母聯(lián)柜是電流密度最高的地方母排連接處的發(fā)熱往往最集中這種柜子建議一臺(tái)裝在柜體上部空氣流通好的位置另一臺(tái)裝在電纜室或下部端子區(qū)域上下各看一層才能真正覆蓋整柜的熱分布。普通饋線柜一臺(tái)就夠了裝在柜體上部偏后側(cè)即可因?yàn)闊峥諝饪偸峭献呱喜繙囟饶茏羁旆从彻駜?nèi)過(guò)熱點(diǎn)。電容柜比較特殊電容器和電抗器本身是主要發(fā)熱源周?chē)植繙囟缺裙駜?nèi)平均溫度高不少傳感器不要正對(duì)電容器表面安裝否則讀數(shù)長(zhǎng)期偏高反而不真實(shí)。3.2 安裝高度與探頭朝向找空氣混合均勻的位置傳感器裝在柜內(nèi)什么高度直接決定數(shù)據(jù)有沒(méi)有參考價(jià)值。我的經(jīng)驗(yàn)是溫度測(cè)點(diǎn)優(yōu)先裝柜體上部因?yàn)闊峥諝馍仙喜繙囟仁枪駜?nèi)最極端但也最靈敏的位置發(fā)熱異常出現(xiàn)時(shí)最早被發(fā)現(xiàn)。濕度測(cè)點(diǎn)如果條件允許可以裝在柜內(nèi)下部或電纜室附近因?yàn)殡娎|溝進(jìn)來(lái)的潮氣、底部凝露都是從下部開(kāi)始的。探頭朝向也要講究。不要朝上安裝柜內(nèi)灰塵沉積、上方如果有其他設(shè)備滴水朝上的探頭容易出問(wèn)題。也不要正對(duì)散熱風(fēng)扇的出風(fēng)口風(fēng)扇直吹會(huì)造成探頭局部溫度失真測(cè)出來(lái)的數(shù)據(jù)忽高忽低。比較穩(wěn)妥的做法是探頭水平朝向柜內(nèi)空氣流通好的區(qū)域側(cè)面有百葉窗或散熱孔的柜子探頭可以適當(dāng)靠近氣流路徑但不要堵住散熱孔。安裝固定上用傳感器自帶的安裝支架配合M4螺絲固定即可避免用雙面膠長(zhǎng)期粘貼——配電柜運(yùn)行時(shí)有振動(dòng)雙面膠夏天脫膠概率很高傳感器掉落砸到帶電部位很危險(xiǎn)。3.3 網(wǎng)線走線與強(qiáng)電隔離這是最容易埋雷的地方配電柜內(nèi)部不是普通網(wǎng)線的自由市場(chǎng)柜里有400V甚至更高等級(jí)的帶電導(dǎo)體網(wǎng)線走線的核心原則是和強(qiáng)電電纜保持距離。具體做法上網(wǎng)線必須走獨(dú)立的線槽或扎帶固定路徑不能和強(qiáng)電電纜捆在一起間距盡量保持在20到30厘米以上。柜內(nèi)空間有限實(shí)在分不開(kāi)時(shí)也要用金屬線槽做物理隔離不要讓網(wǎng)線和動(dòng)力電纜平行長(zhǎng)距離走線。線纜選型上配電柜內(nèi)必須用屏蔽網(wǎng)線至少是SFTP或FTP帶鋁箔或編織網(wǎng)屏蔽層。普通的UTP雙絞線在柜里走一圈工頻磁場(chǎng)和變頻器諧波都可能造成丟包。屏蔽層要做接地處理我們的做法是讓屏蔽層在機(jī)柜一側(cè)可靠接到接地排形成單端接地避免形成地環(huán)路。如果柜內(nèi)有變頻器或軟啟動(dòng)器干擾特別大可以考慮兩端接地試一下但千萬(wàn)不能屏蔽層懸空不接。網(wǎng)線長(zhǎng)度方面配電柜到值班室交換機(jī)一般都在100米內(nèi)Cat5e或Cat6的超五類、六類屏蔽線完全滿足要求。不要因?yàn)榫嚯x短就隨意用網(wǎng)線邊角料柜內(nèi)彎折處要留一定余量水晶頭做好后要測(cè)試線序和連通性再封槽。4. 網(wǎng)絡(luò)配置與協(xié)議調(diào)試讓傳感器數(shù)據(jù)真正進(jìn)入值班室系統(tǒng)4.1 IP規(guī)劃給每臺(tái)傳感器一個(gè)固定身份RJ45溫濕度傳感器本質(zhì)是一臺(tái)小型網(wǎng)絡(luò)設(shè)備上電后就要有IP地址。我們?cè)诓渴饡r(shí)最怕的就是傳感器IP沖突或漂移數(shù)據(jù)突然串到別的柜子上去。IP規(guī)劃的核心原則是分配獨(dú)立的IP網(wǎng)段建議用獨(dú)立VLAN比如10.50.20.0/24網(wǎng)段專門(mén)給環(huán)境監(jiān)控傳感器用和辦公網(wǎng)、生產(chǎn)網(wǎng)隔離。每臺(tái)傳感器固定IP并在交換機(jī)上做MAC地址和IP的綁定DHCP Snooping或靜態(tài)ARP綁定防止同一網(wǎng)段其他設(shè)備占用。建一個(gè)臺(tái)賬記錄柜號(hào)、傳感器IP、MAC地址、安裝位置、交換機(jī)端口號(hào)。幾十臺(tái)傳感器部署完沒(méi)有臺(tái)賬后面排查問(wèn)題會(huì)非常痛苦。傳感器的初始IP各廠家不一樣有的是默認(rèn)固定IP比如192.168.1.200有的是DHCP自動(dòng)獲取。拿到設(shè)備后第一步是讀說(shuō)明書(shū)或看設(shè)備標(biāo)簽上的默認(rèn)IP然后用電腦配一個(gè)同網(wǎng)段的臨時(shí)IP打開(kāi)瀏覽器登錄傳感器管理頁(yè)面改配置。4.2 傳感器側(cè)的基礎(chǔ)配置IP、掩碼、網(wǎng)關(guān)、Modbus從站參數(shù)RJ45傳感器一般都有內(nèi)置Web管理頁(yè)面瀏覽器訪問(wèn)IP就能進(jìn)。進(jìn)去后主要設(shè)置四項(xiàng)IP地址/子網(wǎng)掩碼/默認(rèn)網(wǎng)關(guān)按規(guī)劃好的網(wǎng)段填網(wǎng)關(guān)最好填上方便后面遠(yuǎn)程維護(hù)。Modbus TCP使能大多數(shù)產(chǎn)品默認(rèn)開(kāi)啟確認(rèn)端口是502。溫濕度上報(bào)單位工程上一律用攝氏度℃和%RH避免平臺(tái)側(cè)還要轉(zhuǎn)換。輪詢間隔或上報(bào)間隔如果傳感器支持主動(dòng)上報(bào)按平臺(tái)需要設(shè)置即可一般5到15秒一次足夠。需要注意的細(xì)節(jié)是有些傳感器支持設(shè)置Modbus單元ID從站地址。在Modbus TCP標(biāo)準(zhǔn)里單元ID默認(rèn)填1或255很多設(shè)備并不嚴(yán)格校驗(yàn)但如果你用軟件統(tǒng)一輪詢建議所有傳感器單元ID都設(shè)成1可以保持配置一致減少出錯(cuò)概率。4.3 用Modbus協(xié)議拿到溫濕度數(shù)值數(shù)據(jù)幀怎么解析Modbus TCP的報(bào)文其實(shí)很簡(jiǎn)單核心就是一個(gè)請(qǐng)求、一個(gè)響應(yīng)。我們以最常見(jiàn)的讀輸入寄存器功能碼04為例一次請(qǐng)求讀取兩個(gè)寄存器分別對(duì)應(yīng)溫度和濕度值。協(xié)議幀結(jié)構(gòu)事務(wù)ID2字節(jié)請(qǐng)求和響應(yīng)配對(duì)用隨便給個(gè)遞增編號(hào)。協(xié)議ID2字節(jié)Modbus TCP固定為0。長(zhǎng)度2字節(jié)后面字段的總字節(jié)數(shù)。單元ID1字節(jié)從站地址一般是1。功能碼1字節(jié)04表示讀輸入寄存器。起始地址2字節(jié)從哪個(gè)寄存器開(kāi)始讀。寄存器數(shù)量2字節(jié)讀幾個(gè)一般讀2個(gè)。下面這個(gè)Python腳本用底層socket發(fā)一條標(biāo)準(zhǔn)的Modbus TCP請(qǐng)求直接看設(shè)備返回的原始數(shù)據(jù)排查問(wèn)題時(shí)非常好用import socket, struct # 組裝Modbus TCP請(qǐng)求 # 事務(wù)ID1, 協(xié)議ID0, 長(zhǎng)度6, 單元ID1, 功能碼04, 起始地址0, 數(shù)量2 req struct.pack(HHHBBHH, 1, 0, 0, 6, 1, 4, 0, 2) s socket.create_connection((10.50.20.11, 502), timeout5) s.send(req) resp s.recv(256) print(響應(yīng)原始數(shù)據(jù):, resp.hex()) s.close()如果設(shè)備正常返回?cái)?shù)據(jù)類似0100000007040301780123其中0178是溫度寄存器值十六進(jìn)制轉(zhuǎn)十進(jìn)制為376如果傳感器的數(shù)據(jù)精度是0.1℃那實(shí)際溫度就是37.6℃。0123是濕度寄存器轉(zhuǎn)十進(jìn)制291實(shí)際濕度29.1%RH。最終溫度濕度到底要不要除以10必須以說(shuō)明書(shū)為準(zhǔn)不同廠家尺度不一樣有的除以10有的除以100。實(shí)際項(xiàng)目里沒(méi)必要自己寫(xiě)協(xié)議解析直接用現(xiàn)成的Python庫(kù)更省事。這里給出一個(gè)基于pymodbus的簡(jiǎn)單采集腳本跑在主站服務(wù)器上就能定時(shí)輪詢from pymodbus.client import ModbusTcpClient client ModbusTcpClient(10.50.20.11, port502, timeout5) if client.connect(): resp client.read_input_registers(address0, count2, unit1) if not resp.isError(): temp resp.registers[0] / 10.0 humi resp.registers[1] / 10.0 print(f溫度: {temp:.1f} ℃, 濕度: {humi:.1f} %RH) client.close()用之前先pip install pymodbus裝一下庫(kù)。跑通這一條鏈路后面接動(dòng)環(huán)平臺(tái)、接自建的監(jiān)控大屏本質(zhì)都是干同一件事定時(shí)把每個(gè)IP的Modbus寄存器讀出來(lái)存到數(shù)據(jù)庫(kù)里。4.4 連不上的時(shí)候怎么排查從物理層到應(yīng)用層逐級(jí)定位傳感器上電后ping不通或者M(jìn)odbus請(qǐng)求超時(shí)這是部署現(xiàn)場(chǎng)最高頻的問(wèn)題。我的排查套路按三層走第一層物理層。用測(cè)線儀打一下網(wǎng)線確認(rèn)水晶頭線序正確、每芯連通。然后確認(rèn)傳感器網(wǎng)口指示燈狀態(tài)Link燈不亮一定是物理鏈路問(wèn)題。有一點(diǎn)特別容易忽略有時(shí)候不是網(wǎng)線沒(méi)做好而是交換機(jī)那邊端口沒(méi)啟用或VLAN配錯(cuò)導(dǎo)致網(wǎng)絡(luò)不通。第二層網(wǎng)絡(luò)層。用ping命令驗(yàn)證IP通不通ping 10.50.20.11ping通說(shuō)明網(wǎng)絡(luò)通。然后是檢查502端口telnet 10.50.20.11 502如果彈出一個(gè)黑窗口但是不退出說(shuō)明TCP端口可達(dá)。telnet不可用的話Linux/macOS上用nc -vz 10.50.20.11 502代替。第三層應(yīng)用層。端口通了但Modbus讀不到數(shù)據(jù)大概率是寄存器地址或單元ID不對(duì)。用Wireshark抓一下包看請(qǐng)求有沒(méi)有響應(yīng)。如果設(shè)備回了但內(nèi)容不對(duì)仔細(xì)核對(duì)起始地址、寄存器數(shù)量、數(shù)據(jù)格式。曾經(jīng)遇到一個(gè)品牌的傳感器溫度和濕度并不連續(xù)在相鄰寄存器中間還夾了一個(gè)設(shè)備狀態(tài)寄存器我一度以為設(shè)備壞了看了說(shuō)明書(shū)才發(fā)現(xiàn)是寄存器地址表理解錯(cuò)了。5. 現(xiàn)場(chǎng)調(diào)試復(fù)盤(pán)的五個(gè)坑部署中最容易翻車(chē)的地方5.1 水晶頭壓接的虛通測(cè)線儀都救不了的隱形斷點(diǎn)部署第一天我們就遇到三臺(tái)傳感器連不上。網(wǎng)線是項(xiàng)目施工隊(duì)壓的測(cè)線儀打過(guò)去八個(gè)燈全亮但插到交換機(jī)上就是link燈不亮。后來(lái)把水晶頭剪了重新壓?jiǎn)栴}瞬間解決。原因是壓線時(shí)鉗子沒(méi)壓到位水晶頭里的金屬簧片沒(méi)有完全刺穿網(wǎng)線絕緣層測(cè)線儀用微弱電流測(cè)試還能通過(guò)但交換機(jī)端口的驅(qū)動(dòng)信號(hào)對(duì)阻抗和接觸電阻更敏感通信就失敗了。而且傳統(tǒng)測(cè)線儀測(cè)的是通斷和線序測(cè)不出接觸電阻的異常。經(jīng)驗(yàn)教訓(xùn)網(wǎng)線必須用質(zhì)量好的水晶頭壓接時(shí)用棘輪壓線鉗一次壓到位完成后用力拉一下線確認(rèn)金屬簧片卡緊。如果是屏蔽網(wǎng)線水晶頭的金屬外殼最好有包地設(shè)計(jì)否則屏蔽層接了也和沒(méi)接一樣。批量部署時(shí)每一根網(wǎng)線插上設(shè)備后實(shí)測(cè)一次ping和Modbus讀取不要只看測(cè)線儀。5.2 柜內(nèi)強(qiáng)電磁干擾導(dǎo)致的間歇性閃斷Modbus輪詢謎之超時(shí)有一個(gè)電容柜的傳感器裝好后數(shù)據(jù)偶爾斷一下ping丟包率大概5%Modbus輪詢第二次又恢復(fù)正常。起初懷疑是設(shè)備問(wèn)題換了一臺(tái)傳感器還是老樣子。最終定位是網(wǎng)線路徑問(wèn)題那段網(wǎng)線從柜體上部下來(lái)時(shí)被扎帶固定在了電容柜的交流接觸器正上方和接觸器出線電纜綁在一起走了大概40厘米。接觸器吸合、釋放瞬間產(chǎn)生的電磁脈沖直接耦合進(jìn)了網(wǎng)線。處理辦法很簡(jiǎn)單把網(wǎng)線移開(kāi)不再和動(dòng)力電纜綁扎單獨(dú)走線槽問(wèn)題徹底消失。這件事也驗(yàn)證了前面說(shuō)的布線原則——不要圖省事把網(wǎng)線和強(qiáng)電電纜捆在一起尤其在電容柜、動(dòng)力柜這種脈沖干擾強(qiáng)的柜型中屏蔽網(wǎng)線也不是萬(wàn)能保險(xiǎn)。5.3 讀數(shù)虛高3到5℃?zhèn)鞲衅髻N著柜壁惹的禍有一臺(tái)饋線柜的傳感器溫度讀數(shù)長(zhǎng)期比同柜的另一臺(tái)參考溫度高4℃左右。我去現(xiàn)場(chǎng)一看安裝工人圖方便用雙面膠把傳感器直接粘在了柜體門(mén)板內(nèi)側(cè)。門(mén)板雖然是金屬但柜內(nèi)熱空氣加熱門(mén)板后溫度比空氣還高傳感器外殼緊貼門(mén)板測(cè)得根本是門(mén)板溫度。解決辦法是把傳感器改用支架安裝讓外殼離開(kāi)柜壁至少3到5厘米同時(shí)探頭方向避開(kāi)柜壁讓它實(shí)際感受空氣溫度。改完以后讀數(shù)立刻降了將近4℃和紅外測(cè)溫槍測(cè)的柜內(nèi)空氣溫度基本對(duì)上了?,F(xiàn)在我一直堅(jiān)持在實(shí)施規(guī)范里寫(xiě)清楚傳感器禁止直接貼在柜壁和發(fā)熱元件表面必須用支架懸空安裝。5.4 斷電重啟后的假失聯(lián)別急著報(bào)故障配電房做過(guò)一次停電檢修恢復(fù)了供電以后值班室監(jiān)控大屏上十幾臺(tái)傳感器全部顯示離線。我心想完了批量損壞。趕到現(xiàn)場(chǎng)一看每臺(tái)傳感器網(wǎng)口燈都正常亮ping也通就是動(dòng)環(huán)平臺(tái)讀不到數(shù)據(jù)。原因是傳感器上電后內(nèi)部系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧初始化需要10到30秒而動(dòng)環(huán)平臺(tái)在檢測(cè)到斷電恢復(fù)后立刻開(kāi)始輪詢傳感器還沒(méi)就緒輪詢請(qǐng)求全部超時(shí)平臺(tái)就把設(shè)備標(biāo)記成離線了。等平臺(tái)下一次輪詢周期我們?cè)O(shè)的是30秒再掃其實(shí)已經(jīng)正常了但平臺(tái)沒(méi)有自動(dòng)恢復(fù)在線狀態(tài)。處理辦法有兩個(gè)一是動(dòng)環(huán)平臺(tái)的告警邏輯里加一個(gè)恢復(fù)供電后延遲5分鐘再判斷離線的聯(lián)動(dòng)規(guī)則二是選傳感器時(shí)盡量選上電啟動(dòng)快的型號(hào)。另外如果傳感器是用DHCP獲取IP斷電恢復(fù)后IP一旦被其他設(shè)備搶占那就不是假失聯(lián)是真的失聯(lián)了必須固定IP。5.5 濕度讀數(shù)的凝露誤報(bào)探頭裝在了風(fēng)口上有個(gè)柜門(mén)的空調(diào)正對(duì)配電房吹我們有一臺(tái)傳感器裝在靠門(mén)最近的柜內(nèi)下部每次空調(diào)除濕模式啟動(dòng)濕度讀數(shù)就會(huì)突然沖到85%以上觸發(fā)高濕告警。但同一時(shí)刻柜內(nèi)其他位置的參考濕度只有60%。原因很簡(jiǎn)單探頭恰好裝在了柜體縫隙和空調(diào)出風(fēng)氣流能直接影響的區(qū)域空調(diào)吹出來(lái)的低溫高濕氣體局部聚集在探頭周?chē)斐闪颂摷俚母邼褡x數(shù)?,F(xiàn)場(chǎng)的解決辦法是調(diào)整傳感器安裝位置讓探頭遠(yuǎn)離柜門(mén)縫隙、空調(diào)出風(fēng)口、電纜溝竄氣通道。同時(shí)可以在系統(tǒng)里加一個(gè)告警確認(rèn)時(shí)間參數(shù)濕度連續(xù)超過(guò)閾值3分鐘以上才觸發(fā)告警有效濾掉局部的瞬時(shí)波動(dòng)。溫濕度監(jiān)控要的是柜內(nèi)環(huán)境的整體趨勢(shì)不是單點(diǎn)的瞬時(shí)值。6. 聯(lián)動(dòng)控制與閾值策略裝完傳感器只是開(kāi)始6.1 溫度閾值怎么定預(yù)警、告警、聯(lián)動(dòng)三檔分開(kāi)設(shè)傳感器數(shù)據(jù)上屏以后接下來(lái)要面對(duì)的就是閾值設(shè)多少的問(wèn)題。閾值設(shè)得太激進(jìn)一天告警幾十次值班員直接無(wú)視設(shè)得太寬松又起不到預(yù)警作用。我在同類項(xiàng)目里常用的參考是級(jí)別溫度閾值動(dòng)作風(fēng)機(jī)聯(lián)動(dòng)45℃自動(dòng)開(kāi)啟柜內(nèi)散熱風(fēng)機(jī)或配電房排風(fēng)預(yù)警50℃通知值班員加強(qiáng)巡檢查看負(fù)載變化告警60℃通知相關(guān)負(fù)責(zé)人計(jì)劃安排停電檢查回差滯回區(qū)間設(shè)在3℃左右防止風(fēng)機(jī)頻繁啟停比如聯(lián)動(dòng)啟動(dòng)是45℃要降到42℃才停止否則風(fēng)機(jī)一開(kāi)溫度就掉、一停又上來(lái)反復(fù)切換容易損壞風(fēng)機(jī)。不同柜型、不同季節(jié)可以微調(diào)。夏天進(jìn)線柜滿載柜內(nèi)溫度常年55℃不稀奇這種柜子如果按60℃告警基本就是要出事了才響。所以告警閾值可以參考該柜的歷史數(shù)據(jù)用正常波動(dòng)上限 10%來(lái)定而不是一刀切。6.2 濕度閾值嚴(yán)格盯住凝露風(fēng)險(xiǎn)線配電柜的濕度控制比溫度更需要精細(xì)化。濕度如果控制在40%到60%柜內(nèi)金屬件基本不會(huì)結(jié)露濕度到70%以上隨著晝夜溫差導(dǎo)致的柜壁溫度變化凝露風(fēng)險(xiǎn)就開(kāi)始上升到85%以上基本就是凝露高發(fā)區(qū)了。我的設(shè)置參考是濕度70%作為預(yù)警線85%作為告警線。聯(lián)動(dòng)方面如果配電房有除濕機(jī)或柜內(nèi)加熱器建議在濕度達(dá)到80%時(shí)啟動(dòng)除濕降到70%以下再停止回差同樣保留10%左右避免除濕設(shè)備反復(fù)啟動(dòng)。有一點(diǎn)很多人沒(méi)考慮到同樣的濕度值在冬天和夏天的凝露風(fēng)險(xiǎn)完全不同。冬天柜壁溫度低即使?jié)穸戎挥?0%也可能因?yàn)楣駜?nèi)氣溫高、柜壁溫度低而產(chǎn)生凝露。有條件的話更好的策略是對(duì)比柜內(nèi)溫度和柜壁溫度來(lái)判斷凝露傾向但這需要額外裝柜壁溫度探頭或者用紅外測(cè)溫。沒(méi)有這個(gè)條件時(shí)濕度閾值按保守值設(shè)就行寧可多報(bào)警不要漏報(bào)警。6.3 數(shù)據(jù)記錄與告警通知讓采集的數(shù)據(jù)真正派上用場(chǎng)傳感器讀到的數(shù)據(jù)如果只是在大屏上滾動(dòng)顯示價(jià)值就浪費(fèi)了一半。我堅(jiān)持的方案是Modbus輪詢服務(wù)把數(shù)據(jù)寫(xiě)入時(shí)序數(shù)據(jù)庫(kù)比如InfluxDB或MySQL再配一個(gè)Web展示頁(yè)面或?qū)右延斜O(jiān)控大屏每天自動(dòng)生成溫濕度日?qǐng)?bào)表記錄每個(gè)柜當(dāng)天的最高溫、最低溫、最高濕度、持續(xù)時(shí)間。告警通知建議走兩條通道一條是值班室監(jiān)控平臺(tái)的聲光告警另一條是短信或企業(yè)微信/釘釘機(jī)器人推送。溫濕度傳感器一般不帶短信功能告警推送是靠監(jiān)控平臺(tái)或告警服務(wù)實(shí)現(xiàn)的。我們當(dāng)時(shí)用的是一個(gè)簡(jiǎn)答的Python腳本輪詢到閾值越限時(shí)調(diào)用企業(yè)微信Webhook推送效果不錯(cuò)也避免了短信資費(fèi)問(wèn)題。硬件部署完畢只是項(xiàng)目的一半把數(shù)據(jù)用起來(lái)、讓告警真的能推動(dòng)人去處理才算真正閉環(huán)。6.4 半年一次的校準(zhǔn)傳感器也會(huì)疲勞傳感器長(zhǎng)期在高溫高濕環(huán)境運(yùn)行漂移是正常的。我的建議是每半年做一次手工比對(duì)用一個(gè)經(jīng)過(guò)驗(yàn)證的手持式溫濕度計(jì)和傳感器放在同一個(gè)測(cè)點(diǎn)旁邊穩(wěn)定十分鐘記錄差值然后在傳感器管理頁(yè)面做軟件偏移修正。有些品牌的Web管理頁(yè)面支持直接設(shè)置溫度偏移和濕度偏移比如讀數(shù)偏高0.5℃就填一個(gè)-0.5的偏移值。這一步成本很低但很多項(xiàng)目從上線到設(shè)備報(bào)廢從來(lái)沒(méi)做過(guò)校準(zhǔn)讀出來(lái)的數(shù)據(jù)慢慢偏離實(shí)際最后連閾值告警都失去了可信度。半年校準(zhǔn)一次這個(gè)習(xí)慣我覺(jué)得值得寫(xiě)進(jìn)運(yùn)維規(guī)程。整套系統(tǒng)上線到現(xiàn)在最直觀的變化不是少跳了幾次閘而是值班員終于不用三伏天一趟趟跑配電房了更不用每次巡檢時(shí)拿溫濕度計(jì)一個(gè)柜一個(gè)柜地貼。我個(gè)人還有一個(gè)體會(huì)RJ45以太網(wǎng)溫濕度傳感器這個(gè)方案看著簡(jiǎn)單但真正做得順不順全看部署階段細(xì)不細(xì)。設(shè)備到手先做POE供電驗(yàn)證和Modbus報(bào)文測(cè)試不要看參數(shù)表就下單現(xiàn)場(chǎng)布線多花兩天后面能少折騰半年。希望這份實(shí)施記錄能幫準(zhǔn)備做配電柜環(huán)境監(jiān)控的朋友少走幾步彎路。