★北京城市排水集團(tuán)有限責(zé)任公司劉偉,張建強(qiáng),楊自強(qiáng)
★北京顯通恒泰科技有限公司張彤
★北京城市排水集團(tuán)有限責(zé)任公司裘巖
某水廠目前安裝廠區(qū)進(jìn)水兩塊自來水水表,用以測量整個(gè)廠區(qū)水區(qū)和泥區(qū)的自來水用量。本次水表數(shù)據(jù)采集利用物聯(lián)網(wǎng)及無線技術(shù),實(shí)現(xiàn)比傳統(tǒng)PLC采集少土方施工的技術(shù)方向,以“WAMP”為數(shù)據(jù)平臺(tái)、“ESP8266MCU”為邊緣計(jì)算核心及“LORA”為通訊載體定期發(fā)送數(shù)據(jù)給中心端,實(shí)現(xiàn)了以太陽能為能源,搭建的現(xiàn)場數(shù)據(jù)采集系統(tǒng)。數(shù)據(jù)保存方面,本次研究單獨(dú)部署了一個(gè)開源“LAMP”系統(tǒng),也就是使用“l(fā)inux”作為操作系統(tǒng),“Apache”網(wǎng)頁服務(wù),“Mysql”數(shù)據(jù)庫,“PHP”服務(wù)應(yīng)用。數(shù)據(jù)分析采“邊緣計(jì)算”,即用物聯(lián)網(wǎng)的特征“萬物互聯(lián)”,不同于傳統(tǒng)工控控制端在PLC,物聯(lián)網(wǎng)在物端有計(jì)算控制和通訊能力,發(fā)生在現(xiàn)場的數(shù)據(jù)采集數(shù)據(jù)分析處理和計(jì)算。根據(jù)運(yùn)行情況給儀表端“ModbusRTU”從站供電,作為“ModbusRTU”主站采集從站數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)格式,并編寫報(bào)文,啟動(dòng)“LORA”工作,并發(fā)送報(bào)文,最后關(guān)閉外部電源進(jìn)入休眠模式完成整個(gè)采集流程計(jì)算,最后在數(shù)據(jù)訪問端開發(fā)了基于CS的c#程序和基于BS架構(gòu)的PHP服務(wù)。
某再生水廠水表數(shù)據(jù)需要采集到系統(tǒng),根據(jù)位置和廠區(qū)自控設(shè)備的部署情況選取最優(yōu)的策略。本次進(jìn)廠水表遠(yuǎn)離現(xiàn)有系統(tǒng)和電纜通道,采用傳統(tǒng)PLC加DCS的方式,施工成本高昂。廠技術(shù)團(tuán)隊(duì)另辟蹊徑,嘗試以無線的方式對(duì)數(shù)據(jù)進(jìn)行采集傳輸,研發(fā)了基于PCB層面的控制器設(shè)計(jì)、光伏及系統(tǒng)低功耗設(shè)計(jì)、LoRa傳輸?shù)乃接袇f(xié)議設(shè)計(jì),應(yīng)用WAMP系統(tǒng),并編寫了數(shù)據(jù)入庫程序,開發(fā)了BS和CS架構(gòu)的數(shù)據(jù)查詢應(yīng)用。
1 系統(tǒng)結(jié)構(gòu)概述
本次主要研究以下幾個(gè)方面:
(1)數(shù)據(jù)采集和保存
(2)數(shù)據(jù)存儲(chǔ)
(3)數(shù)據(jù)訪問
(4)數(shù)據(jù)應(yīng)用
1.1數(shù)據(jù)采集和保存
某再生水廠目前的數(shù)據(jù)保存在相對(duì)封閉的DCS數(shù)據(jù)庫系統(tǒng),可以查詢歸檔的歷史數(shù)據(jù),但是訪問相對(duì)不方便,一般通過DCS界面進(jìn)行訪問查詢。
行業(yè)內(nèi)倡導(dǎo)的“雙網(wǎng)融合”目標(biāo)是讓工控網(wǎng)在安全穩(wěn)定的基礎(chǔ)上結(jié)合IT網(wǎng)絡(luò),為用戶提供更為方便的訪問方式。
本項(xiàng)目以探索的方式,部署了一個(gè)WAMP系統(tǒng),即使用Windows操作系統(tǒng),Apache網(wǎng)頁服務(wù),MySQL數(shù)據(jù)庫,PHP服務(wù)應(yīng)用。
1.2數(shù)據(jù)存儲(chǔ)
數(shù)據(jù)庫中包含一張數(shù)據(jù)表名稱為“his_xhm_simbase”,用于存儲(chǔ)記錄過程數(shù)據(jù),如不同工藝設(shè)備代號(hào)、記錄時(shí)間、工藝單位等。
本項(xiàng)目開發(fā)了數(shù)據(jù)接入服務(wù)程序。該應(yīng)用運(yùn)行期間會(huì)偵聽串口LoRa模塊的報(bào)文并進(jìn)行解析,用SQL語句把數(shù)據(jù)寫入數(shù)據(jù)庫。
1.3數(shù)據(jù)訪問
基于數(shù)據(jù)庫的IT應(yīng)用方式很多,目前開發(fā)的程序主要是基于CS架構(gòu)和基于BS架構(gòu)的瀏覽器查詢數(shù)據(jù)。未來隨著數(shù)據(jù)的數(shù)量和接入點(diǎn)的增多,基于大數(shù)據(jù)的工藝優(yōu)化程序成為可能。
1.4控制器研發(fā)
供電單元:現(xiàn)場供電采用太陽能電池板、充電模組、鉛酸電池構(gòu)成的供電系統(tǒng),該系統(tǒng)提供5VDC和12VDC兩路直流電源供給;
通訊單元:采用LoRa433MHz模塊,定期發(fā)送數(shù)據(jù)給中心端;控制單元現(xiàn)場部署一套ESP8266物聯(lián)網(wǎng)單元和配套支持電路。
2 系統(tǒng)設(shè)計(jì)
基于物聯(lián)網(wǎng)技術(shù)水表數(shù)據(jù)遠(yuǎn)傳的設(shè)計(jì)主要包括以下幾個(gè)部分:
(1)基于水表的低功耗設(shè)計(jì);
(2)基于LoRa模塊數(shù)據(jù)采集低功耗設(shè)計(jì);
(3)系統(tǒng)硬件復(fù)位電路的設(shè)計(jì);
(4)系統(tǒng)邊緣計(jì)算設(shè)計(jì)與控制。
2.1基于水表的低功耗設(shè)計(jì)
本次研究采用光伏供電,除了要保證自身MCU控制系統(tǒng)供電外,還要考慮給水表進(jìn)行供電。
水表工作不需要電源,但是和水表的Modbus模塊通訊的時(shí)候,需要給它提供12VDC的電源。這個(gè)電源如果一直提供,在沒有外部供電的情況下,會(huì)對(duì)光伏和儲(chǔ)能模塊提出比較大的能耗需求。設(shè)計(jì)研究的方案是在MCUESP8266休眠的時(shí)候,斷開給儀表12V的供電,我們選擇的是松下電子的光耦合固態(tài)繼電器AQW212EH,電路實(shí)現(xiàn)如圖1所示。
圖1 水表485供電硬件電路設(shè)計(jì)
2.2基于LoRa模塊數(shù)據(jù)采集的低功耗設(shè)計(jì)
LoRa模塊采用壹佰特的E32-TTL-1W,該模塊是一款基于SEMTECH公司SX1278射頻芯片的無線串口模塊(UART),采用透明傳輸方式,工作在410~441MHz頻段(默認(rèn)433MHz),1W發(fā)射功率,LoRa擴(kuò)頻技術(shù),TTL電平輸出。
該模塊提供了低功耗的管腳配置,在M1管腳和M2管腳都為高電平情況下,發(fā)射模塊進(jìn)入休眠模式,其休眠電流為2^A,工作期間在發(fā)射時(shí)候670mA@30dBo
在微控制單元(MicrocontrollerUnit,MCU)休眠的時(shí)候,GPI。管腳處于釋放狀態(tài),無法為E32模塊提供適合的高電平信號(hào)使其進(jìn)入休眠。需要使用一個(gè)SS8050
的三極管做一個(gè)電平轉(zhuǎn)換電路,此時(shí)提供2個(gè)高電平輸出;當(dāng)MCU喚醒后,給出GPIO高電平,經(jīng)過轉(zhuǎn)換后給出M0M1低電平,使它們進(jìn)入工作狀態(tài)。如圖2所示。
圖2 LoRa模塊數(shù)據(jù)采集硬件電路設(shè)計(jì)
2.3系統(tǒng)硬件復(fù)位電路的設(shè)計(jì)
在失去電源后,如果MCU處在休眠模式,則GPIO16會(huì)給出一個(gè)低電平脈沖,脈沖出現(xiàn)后將不再重復(fù)輸出。如果增加一個(gè)外圍電路,在電壓降低到臨界值或者電壓升高到臨界值時(shí),單獨(dú)給出低電平脈沖到reset管腳,或許可以解決“假死”后自恢復(fù)問題。選擇TL7705AC做了一個(gè)外部復(fù)位電路。
本系統(tǒng)是由太陽能電池板進(jìn)行供電、鉛酸電池進(jìn)行電能保存,失電后如果光伏恢復(fù),首先電流要大于100mA解決MCU“假死”的供電電耗,如果有富余電能,光伏會(huì)緩慢給電池充電,在電池電壓升高觸發(fā)閾值后,會(huì)給MCU一個(gè)低電平脈沖。復(fù)位情況如圖3所示。
圖3 復(fù)位邏輯時(shí)序圖
MCU接收到復(fù)位信號(hào)會(huì)啟動(dòng),但是ESP8266啟動(dòng)電流為200~500mA,相對(duì)于剛剛充電到臨界電壓的電源系統(tǒng)來說負(fù)擔(dān)很重,無法維持正常的運(yùn)行狀態(tài),造成關(guān)機(jī)。
改進(jìn)措施:增加C1電容,延長TD時(shí)間,希望給電源系統(tǒng)更多的充電時(shí)間。
隨后問題又出現(xiàn)了,MCU在reset低電平的時(shí)候也有很大的功耗,在reset低電平情況下無法提供足夠的充電電能。此再生水廠使用的進(jìn)水水量數(shù)據(jù)報(bào)送頻率實(shí)際上是1天1次,目前把數(shù)據(jù)報(bào)送頻率調(diào)整為1800秒(30分鐘)一次,把每天24X60X2=2880次減少為48次。電源系統(tǒng)可以實(shí)現(xiàn)長期穩(wěn)定工作。
2.4系統(tǒng)邊緣計(jì)算與控制
邊緣計(jì)算是指在靠近物或數(shù)據(jù)源頭的一側(cè),采用網(wǎng)絡(luò)、計(jì)算、存儲(chǔ)、應(yīng)用核心能力為一體的幵放平臺(tái),就近提供最近端服務(wù)。其應(yīng)用程序在邊緣側(cè)發(fā)起,產(chǎn)生更快的網(wǎng)絡(luò)服務(wù)響應(yīng),滿足行業(yè)在實(shí)時(shí)業(yè)務(wù)、應(yīng)用智能、安全與隱私保護(hù)等方面的基本需求。邊緣計(jì)算處于物理實(shí)體和工業(yè)連接之間,或處于物理實(shí)體的頂端。而云端計(jì)算,仍然可以訪問邊緣計(jì)算的歷史數(shù)據(jù)。
簡而言之,物聯(lián)網(wǎng)的特征是“萬物互聯(lián)”,不同于傳統(tǒng)工控控制端在PLC,物聯(lián)網(wǎng)在物端有計(jì)算控制和通訊能力,發(fā)生在現(xiàn)場的數(shù)據(jù)采集、數(shù)據(jù)分析處理和計(jì)算就是“邊緣計(jì)算”。
具體計(jì)算內(nèi)容如下:
(1)根據(jù)運(yùn)行情況給儀表端“ModbusRTU”從站供電;
(2)作為“ModbusRTU”主站采集從站數(shù)據(jù);
(3)轉(zhuǎn)換數(shù)據(jù)格式,編寫報(bào)文;
(4)啟動(dòng)“LoRa”工作,并發(fā)送報(bào)文;
(5)關(guān)閉外部電源進(jìn)入休眠模式。
3 系統(tǒng)數(shù)據(jù)接收與存儲(chǔ)
(1)系統(tǒng)數(shù)據(jù)的接收與存儲(chǔ);
(2)系統(tǒng)數(shù)據(jù)的查詢與顯示。
3.1系統(tǒng)數(shù)據(jù)的接收與存儲(chǔ)
安裝本次開發(fā)的CS架構(gòu)軟件:“某再生水無線數(shù)據(jù)串口接收程V02B”軟件,該軟件界面如圖4所示。
圖4 軟件開發(fā)
功能有四個(gè)方面。
(1)接收:在串口安裝了“LoRa”接收裝置并轉(zhuǎn)
為串口數(shù)據(jù),接收到不同設(shè)備發(fā)送的JSON報(bào)文;
(2)解析:接收到報(bào)文會(huì)進(jìn)行JSON格式的解析,得到接收變量和對(duì)應(yīng)值;
(3)辨析:把解析的數(shù)據(jù)進(jìn)行分析處理,如果對(duì)應(yīng)的key和value不符合識(shí)別規(guī)則,則沒接收到;
(4)入庫:以SQL語言把數(shù)據(jù)保存到數(shù)據(jù)庫hisxhmsimtable中。數(shù)據(jù)表如圖5所示。
圖5 數(shù)據(jù)表存儲(chǔ)
3.2系統(tǒng)數(shù)據(jù)的查詢與顯示
基于MySQL數(shù)據(jù)庫的數(shù)據(jù)展示,在IT行業(yè)就有無窮多的案例說明和應(yīng)用。本次研究是基于CS架構(gòu)開發(fā)的應(yīng)用。圖6為CS客戶端方式的水表查詢軟件界面,用戶輸入查詢的開始、結(jié)束時(shí)間和變量名稱,就可以查詢對(duì)應(yīng)的歷史數(shù)據(jù),轉(zhuǎn)成曲線,另存csv文件等功能。
圖6 數(shù)據(jù)查詢界面
4典型代碼
4.1數(shù)據(jù)合成
Modbus的HoldingRegisters是16-bit整型,從站儀表的數(shù)據(jù)給出的32-bit的長整數(shù),當(dāng)MCU用F03指令讀取從站的保持寄存器HoldingRegisters的數(shù)據(jù),合成整數(shù)方面查閱技術(shù)資料,得到如下結(jié)論:
實(shí)際儀表數(shù)據(jù)二數(shù)據(jù)高位*0xff+低位數(shù)據(jù)。代碼段實(shí)現(xiàn)如下:
for(inti=0;i<MBcounts;i++)
{
uMybuf[i]=ModbusRTUClient.read();DEBUGLOG(H[%d]\t\nH,uMybuf[i]);
}
longlsum=uMybuf[0]*65536+uMybuf[1];
水表提供的數(shù)據(jù)是0.01立方米為基本單元,最終得到的整數(shù)應(yīng)轉(zhuǎn)換后再除以100。
4.2Modbus中浮點(diǎn)數(shù)的識(shí)別轉(zhuǎn)換
Modbus還能以數(shù)據(jù)高位和數(shù)據(jù)低位的合成方式實(shí)現(xiàn)浮點(diǎn)數(shù)的合成,解析高低數(shù)據(jù),我們寫了一個(gè)方法用于實(shí)現(xiàn)這一功能,代碼如下:
floatuint2float(uint_uintB,uint_uintA)
{
DEBUGLOG("DBG_uintA=%d\t_uintB=%d\t\n",_uintA,_uintB);
intintSign,intSignRest,intExponent,intExponentRest;
floatfaResult,faDigit;
intSign=_uintA/32768;
intSignRest=_uintA%32768;
intExponent=intSignRest/128;
intExponentRest=intSignRest%128;
faDigit=(float)(intExponentRest*65536+_uintB)/8388608;
faResult=(float)pow(-l,intSign)*(float)pow(2,intExponent-127)*(faDigit+1);
DEBUGLOG("intSign=%d\tintSignRest=%d\tintExponent=%d\tintExponentRest%d\tfaDigit%d\t\n",intSign,intSignRest,intExponent,intExponentRest,faDigit);
returnfaResult;
}
作者簡介:
劉 偉(1988-),男,河北保定人,中級(jí)工程師,碩士,現(xiàn)就職于北京城市排水集團(tuán)有限責(zé)任公司,研究方向?yàn)楣I(yè)自動(dòng)化控制。
參考文獻(xiàn):
[1]林惠霞,武永華,張淑城.基于BF592的攝像直讀無線遠(yuǎn)傳抄表裝置的設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2020,39(01):140-143.
[2]喬芝忠,楊琦.電子遠(yuǎn)傳水表兼容性與互換性問題及其對(duì)策[J].給水排水,2017,53(12):110-114.
[3]侶金玲.無線遠(yuǎn)傳大口徑水表的數(shù)據(jù)采集與管理系統(tǒng)[D].石家莊:河北科技大學(xué),2013.
⑷吉健紅.淺談自來水遠(yuǎn)傳水表抄表系統(tǒng)的幾次技術(shù)改進(jìn)[J].科技資訊,2012,(23):218.
[5]白天明.無線智能水表的設(shè)計(jì)與研究[J].科技傳播,2010,(19):80,79.
[6]王衛(wèi)國,韋萌.基于CC1100的無線抄表系統(tǒng)[J].計(jì)算機(jī)與數(shù)字工程,2009,37(01):171-173.
[7]王春.智能無線遠(yuǎn)傳水表設(shè)計(jì)及應(yīng)用研究[D].北京:北方工業(yè)大學(xué),2009
摘自《自動(dòng)化博覽》2022年第三期