沈 瑾,林伯凝,沈 浩
(1.無錫華潤微電子有限公司,江蘇 無錫 214001;2.無錫富而凱奧克電氣有限公司,江蘇 無錫 214000;3.內(nèi)蒙古北方重工業(yè)集團有限公司,內(nèi)蒙古 包頭 014033)
燃氣在城市建設(shè)中的應(yīng)用越來越廣泛, 用戶種類和數(shù)量迅猛增長,用氣結(jié)構(gòu)呈現(xiàn)多元化。要實現(xiàn)對燃氣的合理利用,燃氣的計量收費管理工作非常重要[1]。燃氣表用戶大致分為工業(yè)用戶與居民用戶兩種,由于兩種燃氣表的使用環(huán)境不同,因而抄表方式也存在很大的差異,但大體可分為兩種,即人工抄表和自動抄表。人工抄表耗時大,成本高,存在入戶不及時、錯抄、漏抄的可能,因此自動抄表大勢所趨[2]。隨著無線通信行業(yè)技術(shù)的發(fā)展,越來越多的無線技術(shù)被應(yīng)用到電力、水力和燃氣的無線抄表系統(tǒng)中。
目前在民用燃氣抄表系統(tǒng)中的無線采集方案多由無線燃氣表、集中器、手持機及后臺抄表系統(tǒng)組成。無線燃氣表采用LoRa或ZigBee無線擴頻技術(shù),將各住戶家中的燃氣數(shù)據(jù)定時上送到集中器,在集中器上安裝GPRS通信模塊,定時遠傳給后臺抄表系統(tǒng)中。當抄表遇到故障時可根據(jù)后臺抄表系統(tǒng)的提示定位到具體用戶,再派專業(yè)的技術(shù)人員到現(xiàn)場通過手持機重抄或檢查故障。這種抄表方式有效解決了燃氣公司目前使用單純基表帶來的數(shù)據(jù)收集不及時、入戶難、無法了解移表、拆表和竊盜氣現(xiàn)象及難于保障安全監(jiān)測等問題,相比傳統(tǒng)的RS 485集中自動抄表方式解決了布線困難的問題,非常適合部分年代久遠小區(qū)的改造。
但工業(yè)用戶不宜采取以上方式。對于民用無線抄表,小區(qū)住戶集中,集中器的安裝較方便,一般一個采集器可通過LoRa無線連接至少200臺燃氣表,便于集中采集管理并減少通過GPRS上送數(shù)據(jù)的流量。可對于各工業(yè)用燃氣用戶來說,不具備地理上的集中優(yōu)勢,用戶分散排布,無法集中安裝燃氣表。對于這種散落分布的工業(yè)燃氣用戶,可在燃氣基表上加裝GPRS通信模塊,使每個分散的工業(yè)用戶作為獨立個體直接上傳數(shù)據(jù)到后臺系統(tǒng)中,避免因地理位置分散,給抄表人員帶來的極大不便,同時也節(jié)省了大量人力、物力和財力。
在工業(yè)燃氣皮膜表基表上直接加裝GPRS通信模塊后,從燃氣表上讀取的數(shù)據(jù)可實時或定時上傳到后臺抄表平臺系統(tǒng)中。抄表平臺采用B/S架構(gòu),任意聯(lián)網(wǎng)的瀏覽器只要具有一定的權(quán)限都可進行訪問操作。底層燃氣表通過GPRS方式通信,采用TCP/IP互聯(lián)網(wǎng)傳輸協(xié)議,應(yīng)用層協(xié)議為《工業(yè)預(yù)付費遠程表通訊協(xié)議》。后臺軟件系統(tǒng)分為數(shù)據(jù)采集服務(wù)前置端,客戶操作服務(wù)端兩大類。系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
無線燃氣表每隔一小時會采樣保存一個點,每天通過GPRS定時上線一次,上線后將24個點的數(shù)據(jù)同時發(fā)送到數(shù)據(jù)采集服務(wù)器,服務(wù)器將數(shù)據(jù)直接寫入后臺數(shù)據(jù)庫。但這種頻繁的I/O操作較耗時,抓取每個設(shè)備數(shù)據(jù)到數(shù)據(jù)成功寫入數(shù)據(jù)庫大約需要3 s的時間。隨著在某個時間點上線設(shè)備數(shù)量增多,數(shù)據(jù)的延遲時間將增加,導致每個燃氣表的維持在線時間加長,增加了燃氣表的功耗,減少了電池的使用時間。頻繁更換電池不僅增加了使用成本,也為用戶帶來了不必要的麻煩,此時考慮將數(shù)據(jù)采集服務(wù)器部分的數(shù)據(jù)庫交互部分與采集部分獨立開來,以分擔數(shù)據(jù)采集服務(wù)器的負擔,Redis技術(shù)因此被引入。
Redis(Remote Dictionary Server)基于遠程字典服務(wù),是非關(guān)系型數(shù)據(jù)庫(Not Only SQL,NoSQL)產(chǎn)品之一,它支持網(wǎng)絡(luò)、key-value模型等存儲系統(tǒng),可用作數(shù)據(jù)庫、高速緩存和消息隊列代理[3]。Redis的出現(xiàn),很大程度補償了memcached key/value存儲的不足,在部分場合可對關(guān)系數(shù)據(jù)庫起到很好的補充作用。其支持的存儲value類型包括string(字符串),list(鏈表), set(無序集合), zset(sorted set有序集合)和hash,也可將Redis看成一個數(shù)據(jù)結(jié)構(gòu)服務(wù)器。這些數(shù)據(jù)類型都支持push/pop,add/remove及交集、并集和差集運算,Redis支持各種不同方式的排序。數(shù)據(jù)緩存在內(nèi)存中,可周期性地把更新的數(shù)據(jù)寫入磁盤或把修改操作寫入追加的記錄文件,并實現(xiàn)master-slave(主從)同步。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用方便。
Redis是基于C/C++開發(fā)的一款K-V數(shù)據(jù)庫,特點是運行快,使用類Telnet協(xié)議[4]。Redis具有如下特性:
(1)性能高。Redis讀的速度是 110 000 次/s,寫的速度是 81 000 次 /s;
(2)豐富的數(shù)據(jù)類型。Redis支持二進制案例的Strings,Lists,Hashes,Sets 及 Ordered Sets數(shù)據(jù)類型操作;
(3)Redis的所有操作都是原子性的,同時 Redis 還支持對幾個操作全并后的原子性執(zhí)行;
(4)豐富的特性。Redis還支持 publish/subscribe(發(fā)布訂閱模式),通知,key 過期等。
安裝好Redis數(shù)據(jù)服務(wù)器,確定好通道名稱,采用發(fā)布/訂閱方式,即數(shù)據(jù)采集服務(wù)器通過Redis的發(fā)布方式將采集的數(shù)據(jù)發(fā)布到Redis數(shù)據(jù)服務(wù)器中,任務(wù)完成即返回??蛻鬢eb訪問服務(wù)器通過訂閱方式將接收到的發(fā)布數(shù)據(jù)批量寫入數(shù)據(jù)庫中,實現(xiàn)整體數(shù)據(jù)采集,有效分擔數(shù)據(jù)采集服務(wù)器的工作,實現(xiàn)了分布式架構(gòu)。在當前的物聯(lián)網(wǎng)大環(huán)境下,Redis技術(shù)突顯了分布式架構(gòu)的技術(shù)優(yōu)勢。
本次設(shè)計的數(shù)據(jù)采集服務(wù)器軟件平臺用Java語言編程實現(xiàn),TCP/IP部分采用開源的Mina框架實現(xiàn)了多線程的整合調(diào)度,再配合Redis技術(shù),采用JSON格式發(fā)布/訂閱的消息,規(guī)范統(tǒng)一。
連接Redis服務(wù)器代碼如下:
Public static void ConnectRedis()
{
}
從上述代碼中可以看出Redis的使用非常簡便,大大縮短了開發(fā)周期并有效分擔了數(shù)據(jù)采集服務(wù)器的工作負荷。采用Redis技術(shù)后,每個燃氣表的采集時間縮短到500 ms以內(nèi),燃氣表確認服務(wù)器收到數(shù)據(jù)后立刻下線,有效節(jié)省了電池電量,收到了良好的效果。
無線燃氣抄表技術(shù)已被廣泛用于各燃氣公司,數(shù)據(jù)上送到平臺后,可擴展的業(yè)務(wù),如統(tǒng)計查詢、對比分析、線上線下預(yù)付費等,均可利用互聯(lián)網(wǎng)方式進行,使用戶有更好的體驗和更靈活的操作方式。
本文提到的Redis技術(shù)已經(jīng)成功應(yīng)用到無錫燃氣公司對部分工商業(yè)燃氣用戶的改造項目中,采用華潤物聯(lián)網(wǎng)軟件平臺實現(xiàn)了對燃氣用戶數(shù)據(jù)的讀取和統(tǒng)計,具有廣闊的應(yīng)用前景。