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