早在1999年就已經(jīng)有了“物聯(lián)網(wǎng)”這個概念,但是直到十年之后的2009年,IBM提出“智慧地球”的概念,才推動很多國家把物聯(lián)網(wǎng)研究和發(fā)展提升到戰(zhàn)略層面。但是比較遺憾的是,直到現(xiàn)在的2015年,我國的物聯(lián)網(wǎng)的發(fā)展依然主要靠政府項目來拉動,所以現(xiàn)在的發(fā)展似乎前景越來越不明朗。
政府似乎意識到這是個問題,在一些互聯(lián)網(wǎng)公司的倡導(dǎo)和推動下,提出了“互聯(lián)網(wǎng)+”的概念。雖然“互聯(lián)網(wǎng)+”和“物聯(lián)網(wǎng)”都是以網(wǎng)為主,但是發(fā)展的側(cè)重有了本質(zhì)區(qū)別?!盎ヂ?lián)網(wǎng)+”是以互聯(lián)網(wǎng)為主,外圍智能模塊和傳感器為輔,構(gòu)建互聯(lián)生態(tài)。而“物聯(lián)網(wǎng)”卻是以互聯(lián)網(wǎng)為基礎(chǔ),重點在傳感器數(shù)據(jù)采集,設(shè)備控制,遠程監(jiān)控為主。
但是現(xiàn)在很多互聯(lián)網(wǎng)公司,做的是“互聯(lián)網(wǎng)+“的事,卻以”物聯(lián)網(wǎng)“的名義來宣傳。所以現(xiàn)在的人越來越搞不清”物聯(lián)網(wǎng)“的真實定位了。
我一直認為從技術(shù)角度來看,所謂“物聯(lián)網(wǎng)“就是傳統(tǒng)工控網(wǎng)的一個外延。傳統(tǒng)的工業(yè)現(xiàn)場,考慮到生產(chǎn)安全,都是內(nèi)部網(wǎng)絡(luò)。另外實施和維護的代價相對較高。而在互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)越來越完善的今天,在各個領(lǐng)域都有了遠程測控的要求。比如目前比較典型的農(nóng)業(yè)大棚監(jiān)控、森林防火監(jiān)控、魚塘監(jiān)測和養(yǎng)殖管理等等。
“互聯(lián)網(wǎng)+”和“物聯(lián)網(wǎng)”由于發(fā)展的側(cè)重點不同,在做架構(gòu)設(shè)計上肯定有所不同?!盎ヂ?lián)網(wǎng)+“的項目,其實更看重的是用戶數(shù),通信數(shù)據(jù)流量,這是衡量一個”互聯(lián)網(wǎng)+“項目成功的標志,當然這是也是那些做云平臺為主的互聯(lián)網(wǎng)公司最看重的,用戶數(shù)和通信數(shù)據(jù)流量正是他們的利益點所在。
而以中小項目為主的“物聯(lián)網(wǎng)”項目,其實更看重的,一是系統(tǒng)穩(wěn)定可靠,能保證系統(tǒng)長期穩(wěn)定的運行,因為有些監(jiān)控點往往部署在人跡罕至的地方,系統(tǒng)的可靠性成為關(guān)鍵。二就是系統(tǒng)便于開發(fā)和維護,因為基于不同行業(yè),不同工藝需求的,很難開發(fā)出像民用領(lǐng)域的通用產(chǎn)品,需要根據(jù)現(xiàn)場實際調(diào)整相關(guān)的業(yè)務(wù)邏輯和監(jiān)控畫面,所以是否易于開發(fā)很關(guān)鍵。當然維護更為重要,因為偏工業(yè)級的“物聯(lián)網(wǎng)”項目一般設(shè)計至少是三年或更長的生命周期,所以項目維護難以避免,甚至系統(tǒng)還會根據(jù)現(xiàn)場工藝的變更進行變化,易于維護是“物聯(lián)網(wǎng)“項目一個不可或缺的要素。
由以上的說明,我們可以很清晰地了解,從技術(shù)角度來講,做“互聯(lián)網(wǎng)+”和“物聯(lián)網(wǎng)”項目的架構(gòu)設(shè)計是有很大的不同,本篇文章主要介紹工業(yè)級“物聯(lián)網(wǎng)”項目的架構(gòu)設(shè)計及實施。
工業(yè)級物聯(lián)網(wǎng)的概念和特色
由于筆者曾經(jīng)在傳統(tǒng)工控領(lǐng)域工作7年之久,所以理解“物聯(lián)網(wǎng)”更多是從工控的角度來考慮。所謂的工業(yè)級物聯(lián)網(wǎng),不是工業(yè)領(lǐng)域的物聯(lián)網(wǎng),而是具備工業(yè)領(lǐng)域的特色的物聯(lián)網(wǎng)項目,比如農(nóng)、林、牧和漁業(yè)等領(lǐng)域的相關(guān)項目。和工業(yè)領(lǐng)域的項目不同,沒有那么龐大和要求嚴格,采集和監(jiān)控的數(shù)據(jù)也相對較少,對設(shè)備、及實施和維護的成本比較敏感,并且一般要求遠程監(jiān)控。但是相同的要求是,設(shè)備要穩(wěn)定可靠,便于根據(jù)工藝要求調(diào)整控制策略,方便升級、擴展,易于維護。
傳統(tǒng)工控項目,一般相對龐大,環(huán)節(jié)多,開發(fā)和實施周期都比較久,當然項目的費用也是相對高昂的。往往一個實施工控項目的公司,一年能做十幾個這樣的項目就已經(jīng)很繁忙了。而在物聯(lián)網(wǎng)時代,由于互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)基礎(chǔ)設(shè)施比較完善,云服務(wù)公司也是層出不窮,可以花最少的代價,相對快速的完成一些項目。
由于開發(fā)和實施的代價大大降低,所以可做的領(lǐng)域被大大拓寬了,形成了一個良性循環(huán),做的越多,越可靠,也越便宜。越便宜,可做的項目也越來越多。
工業(yè)級物聯(lián)網(wǎng)項目架構(gòu)設(shè)計思想
了解了工業(yè)級的物聯(lián)網(wǎng)項目的一些特色,所以架構(gòu)設(shè)計方面就有了方向和思路。我們先從技術(shù)角度分析,當前一個典型的物聯(lián)網(wǎng)項目,從組成上來講,至少有三部分:一是設(shè)備端,二是云端(主要指公有云),三是監(jiān)控端。
【設(shè)備端架構(gòu)設(shè)計】
設(shè)備端主要負責數(shù)據(jù)采集,工藝邏輯執(zhí)行及控制。
無論底層的設(shè)備數(shù)量有多少,通信協(xié)議有多復(fù)雜,考慮到項目安全等等因素,往往和云端通信,匯集在一個設(shè)備上,這樣的設(shè)備的角色往往是物聯(lián)網(wǎng)網(wǎng)關(guān),除了專門負責和云端進行通信外,有時候也會對原始數(shù)據(jù)進行一定的處理,執(zhí)行一些業(yè)務(wù)邏輯相關(guān)的代碼。 和云端通信有很多協(xié)議可選,常見的有基于HTTP協(xié)議的Get或Put方法,從服務(wù)器獲取一些設(shè)置及狀態(tài),及向服務(wù)器推送采集到的數(shù)據(jù)。但是對數(shù)據(jù)量相對比較大,實時性要求高的,往往是直接的Socket TCP/UDP通信,這樣傳輸?shù)拇鷥r相對較低,但是對編程設(shè)計方面要求比較高。
由以上分析,從功能層面上分,設(shè)備端架構(gòu)一般可分三層,一是數(shù)據(jù)采集&控制輸出層;二是工藝流程執(zhí)行層;三是數(shù)據(jù)上傳&命令接收通信層。
【云端架構(gòu)設(shè)計】
云端一般包含三部分:Web前臺+ Web后臺+中間件;
作為工業(yè)級的物聯(lián)網(wǎng)項目,Web前臺一般會顯示這幾部分內(nèi)容,一是工藝畫面,和現(xiàn)場實際的設(shè)備和工藝流程一一對應(yīng),畫面可以實時反映工業(yè)現(xiàn)場運行的情況。二是各種數(shù)據(jù)報表、曲線數(shù)據(jù)的保存、查詢和打印等。三是運行日志,保存各種運行情況,以備查詢。四是顯示系統(tǒng)診斷信息,便于系統(tǒng)出現(xiàn)問題的時候,及時判斷問題所在。
Web后臺相對復(fù)雜一些,一般完成三部分內(nèi)容的工作,如果是設(shè)備端基于HTTP協(xié)議通信,往往需要處理Get和Put請求。由于前臺有實時畫面,所以Web后臺有時候也需要向前臺界面?zhèn)鬏攲崟r數(shù)據(jù),目前有些實時數(shù)據(jù)是通過Web Socket協(xié)議進行傳輸,也可以由專門的程序來處理。還有一部分功能比較重要,就是要建立設(shè)備數(shù)據(jù)和各種報表,曲線,日志的對應(yīng)關(guān)系,以便于適用盡可能多的現(xiàn)場。
在工業(yè)級物聯(lián)網(wǎng)項目中,一般中間件必不可少,其主要功能就是負責和現(xiàn)場設(shè)備進行通信,獲取數(shù)據(jù)或發(fā)送相關(guān)控制指令。此外還有一個比較重要的功能,由于中間件程序一般是作為系統(tǒng)的一個服務(wù)程序或普通應(yīng)用程序,生命周期較長,可以長時間連續(xù)運行,可以處理一些相對復(fù)雜的業(yè)務(wù)邏輯、數(shù)據(jù)換算及數(shù)據(jù)轉(zhuǎn)儲。
【監(jiān)控端架構(gòu)設(shè)計】
監(jiān)控端一般包含PC、手機或平板監(jiān)控。
對一般項目而言,也許通過Web前臺就可以掌控一切了,但是在移動互聯(lián)網(wǎng)的時代,如果對應(yīng)的手機或平板上沒有對應(yīng)的APP,那這個項目就感覺有了一個很大的缺憾。有了手機或平板APP,就可以身在任何地方,都可以相對方便的監(jiān)控現(xiàn)場。
從功能上劃分,架構(gòu)可以相對簡單的分為兩層,一就是UI界面顯示及操作層,二就是數(shù)據(jù)通信層,實現(xiàn)和服務(wù)器信息交互。
【小結(jié)】
如果拋開其他一切因素,僅從技術(shù)角度來講,實現(xiàn)以上三個大環(huán)節(jié)的功能,用什么系統(tǒng)平臺,任何開發(fā)語言都可以完成其預(yù)定的功能。但是所謂的架構(gòu)設(shè)計,不僅僅從功能角度來設(shè)計整個的系統(tǒng)平臺,更多還要考慮其可靠性,擴展性,維護性等幾個方面。
作為工業(yè)級的物聯(lián)網(wǎng)項目,大都是面向工、農(nóng)、牧、漁等具體行業(yè),每種行業(yè)雖然從技術(shù)角度而言有很多類似的部分,但是從工藝流程角度又有很大的區(qū)別,所以針對具體的項目,進行代碼調(diào)整及相關(guān)功能的擴展及二次開發(fā)必不可少。但是面向一線的工程師往往技術(shù)水平及能力相對比較低,能否快速編寫出可靠、健壯的代碼顯的非常重要,畢竟每個項目現(xiàn)場實施時間是有限的,但是同時項目要求也是比較高的。
另外一個物聯(lián)網(wǎng)項目,包含了嵌入式設(shè)備的開發(fā)、Web前后臺的開發(fā)、服務(wù)程序開發(fā)還有手機和平板程序開發(fā),每一項從技術(shù)平臺上來說各種各樣,比如嵌入式設(shè)備,有微軟體系的Windows CE/XPE/.NET Micro Framework,有l(wèi)inux體系的嵌入式linux/uclinux等等,還有uCOSII/FreeRTOS/mbed OS等等實時嵌入式操作系統(tǒng),其開發(fā)工具,系統(tǒng)架構(gòu)各不相同,各有特色。手機和平板目前至少也有三種開發(fā)類型,一種是iOS開發(fā),一種是安卓開發(fā)和windows 10 UWP通用程序開發(fā)等等。另外Web開發(fā)就更多了,這里就不一一舉例了。
所以如果在整體架構(gòu)設(shè)計中,每種部分都選用不同的技術(shù)路線,那么每一種技術(shù)路線,意味著都要有一個團隊去開發(fā),并且開發(fā)完畢后,還需要上下進行溝通,以便于把整個項目有機地聯(lián)系在一起。
開發(fā)完畢后,更多的還有維護工作,不僅是開發(fā)團隊的維護,更為重要的是現(xiàn)場維護,除了問題,如何及時定位,及時解決。針對如上問題,加上多年的現(xiàn)場實施和維護經(jīng)驗,所以我更看重統(tǒng)一化和組態(tài)化的架構(gòu)設(shè)計,下面我就講講我們是如何構(gòu)建物聯(lián)網(wǎng)項目的。
物聯(lián)網(wǎng)通用中間件平臺架構(gòu)設(shè)計
由于是一個物聯(lián)網(wǎng)通用中間件開發(fā)平臺,所以著眼點并不是一兩個非常有行業(yè)特點的項目平臺,而是面向不同行業(yè),不同具體應(yīng)用的二次開發(fā)平臺,更多考慮跨行業(yè)應(yīng)用的技術(shù)通用部分及同一個運行時平臺支持多個項目點的功能。
下面我們就設(shè)備端、云端中間件及物聯(lián)網(wǎng)通用平臺分別進行介紹。
【物聯(lián)網(wǎng)嵌入式數(shù)據(jù)組態(tài)YFIOs架構(gòu)設(shè)計】
在工控領(lǐng)域,組態(tài)軟件司空見慣。為什么很多工業(yè)項目采用組態(tài)軟件,原因主要有兩點,一是模塊化搭積木式的設(shè)計,技術(shù)門檻低,實施速度快,非常適合工控技術(shù)人員使用;二是可靠性非常高,由于模塊之間耦合性低,重用度高,并且每個模塊往往在不同項目現(xiàn)場,實際都得到過運行考驗,所以穩(wěn)定性自不待言。
YFIOs的設(shè)計思想就來源于標準的組態(tài)軟件,但是又具備了一些物聯(lián)網(wǎng)時代的功能特色。
YFIOs包含三大部分:驅(qū)動層、策略層和核心層。
底部驅(qū)動層支持大部分物理通信接口,主要功能就是和傳感器(或智能模塊)通信,獲取相關(guān)的傳感器數(shù)據(jù)及發(fā)送控制執(zhí)行指令。
上部策略層除了加載執(zhí)行一些系統(tǒng)策略(如系統(tǒng)通信策略)外,還可以加載用戶策略,這樣可以基于現(xiàn)場工藝流程,立即就可以進行相關(guān)的工藝控制操作,不用送到服務(wù)端,等服務(wù)端遠程發(fā)出控制指令。
中間核心層是最關(guān)鍵的,除了啟動驅(qū)動和策略引擎外,還創(chuàng)建了兩個內(nèi)存數(shù)據(jù)庫。一個是IODB,主要存放點數(shù)據(jù)(如溫度、濕度數(shù)據(jù)),另外一個是IOBC,主要存放塊數(shù)據(jù)(如攝像頭圖片)。策略程序和驅(qū)動程序,完全解耦合,通過IODB和IOBC進行數(shù)據(jù)交互。
和傳統(tǒng)組態(tài)軟件(特指數(shù)據(jù)組態(tài)部分)相比,YFIOs有如下特色:
基于.NET系統(tǒng)進行驅(qū)動和策略開發(fā),由于系統(tǒng)自帶垃圾回收機制,不用擔心在編寫驅(qū)動和策略過程中,因內(nèi)存溢出等原因?qū)е孪到y(tǒng)當機。
傳統(tǒng)的組態(tài)軟件一般對外不提供驅(qū)動開發(fā)SDK,即使有,大都也采用C++進行開發(fā),對開發(fā)者要求比較高。YFIOs和傳統(tǒng)組態(tài)軟件不同,驅(qū)動可以采用C#和VB.NET進行開發(fā)。且驅(qū)動有多種運行模式,不僅系統(tǒng)可以調(diào)用,用戶策略也可以調(diào)用。還可以綁定策略事件,通過觸發(fā)的方式去執(zhí)行指定的策略。
YFIOs的驅(qū)動可以動態(tài)替換,如果配置了相關(guān)的連接變量,只要驅(qū)動變量接口兼容就可以替換,這大大降低了系統(tǒng)運行后的維護成本,外圍的硬件設(shè)備可以根據(jù)需要進行替換。
YFIOs系統(tǒng)支持遠程升級和遠程調(diào)試。支持三個層面升級,YFIOs運行時升級、YFIOs驅(qū)動和策略升級和YFIOs配置升級。
針對設(shè)備端,我們也設(shè)計了基于物聯(lián)網(wǎng)畫面的組態(tài)軟件YFHMI,由于這部分其實和傳統(tǒng)的畫面組態(tài)區(qū)別不是很大,所以這里限于篇幅,不再介紹了。
【物聯(lián)網(wǎng)云端中間件YFCloud架構(gòu)設(shè)計】
云端YFCloud中間件平臺,可以說是完全脫胎于嵌入式Y(jié)FIOs,從圖2的架構(gòu)圖上就可以明顯看出,可以這樣說,YFIOs是一個“單機版”的數(shù)據(jù)組態(tài)平臺,而YFCloud是一個“網(wǎng)絡(luò)版”數(shù)據(jù)組態(tài)平臺。
YFCloud和YFIOs都可以運行策略程序和創(chuàng)建IODB內(nèi)存數(shù)據(jù)庫,不同的是YFCloud去掉了IODC內(nèi)存數(shù)據(jù)庫,并且驅(qū)動層簡化為一種,就是TCP/IP通信接口,每一個遠程設(shè)備,服務(wù)器都會分配一個Socket連接,登錄成功后,才能正常通信。如果設(shè)備30秒上傳數(shù)據(jù)無變化,則發(fā)送心跳信號,否則60秒無數(shù)據(jù)收到,服務(wù)器會主動關(guān)閉連接。
YFCloud還集成了WebSocket服務(wù)器,Web動態(tài)網(wǎng)頁可以通過WebSocket協(xié)議和服務(wù)器進行通信。
YFCloud物聯(lián)網(wǎng)中間件平臺是以項目為最小單位來進行管理的,一個或多個項目對應(yīng)一個項目模板,項目通過項目ID進行區(qū)分。由于是二次開發(fā)平臺,所以YFCloud提供了一個平臺級的開發(fā)接口,通過接口可以管理相關(guān)的項目模板和項目(如創(chuàng)建、編輯、刪除、啟動和停止等)。
【物聯(lián)網(wǎng)通用平臺架構(gòu)設(shè)計】
YFIOs嵌入式數(shù)據(jù)組態(tài)運行在物聯(lián)網(wǎng)智能網(wǎng)關(guān)上,直接和YFCloud進行通信(云端中間件通過導(dǎo)入YFIOs的上傳IO表,就可以直接進行通信了)。
物聯(lián)網(wǎng)通用平臺的Web前臺,目前默認具備如下功能(每個項目模板可以根據(jù)需要,進行選擇所需要的功能,項目完全繼承了項目模板的選擇)工藝流程顯示、工藝報表(日報表,統(tǒng)計報表)、工藝曲線顯示、項目運行日志、工藝參數(shù)配置和攝像頭監(jiān)控等等。
物聯(lián)網(wǎng)通用平臺的Web后臺,主要功能就是用戶管理、角色管理(和功能匹配的角色)、項目模板管理和項目管理。限于篇幅,就不詳細介紹了。
【小結(jié)】
該平臺的最大優(yōu)勢就是,從軟到硬,全部采用了.NET平臺。所以不需要太多的技術(shù)人員,就可以從上到下進行項目開發(fā)。對客戶來說,由于涉及到的技術(shù)領(lǐng)域比較少,所以二次開發(fā)及后續(xù)平臺維護也比較容易。
物聯(lián)網(wǎng)項目案例簡介
【家庭遠程健康監(jiān)控系統(tǒng)】
這是比較早的一個案例了。設(shè)備外接血糖儀、血壓計、攝像頭、溫濕度模塊,內(nèi)部集成了RFID刷卡器及3G模塊。通過3G和遠程服務(wù)器進行通信,用戶或醫(yī)生通過網(wǎng)頁查看相關(guān)信息,其中醫(yī)生還可以遠程留言并發(fā)送到設(shè)備。采用組態(tài)式的架構(gòu)最大的好處就是, 由于每個家庭已有的血糖儀或血壓計型號不同,設(shè)備可以根據(jù)對應(yīng)的傳感器型號,選擇不同的驅(qū)動,可遠程部署驅(qū)動進行適配。
【農(nóng)業(yè)大棚監(jiān)控系統(tǒng)】
系統(tǒng)核心為物聯(lián)網(wǎng)智能網(wǎng)關(guān),外部連接攝像頭、溫濕度傳感器,通過以太網(wǎng)、Wifi或3G路由器把相關(guān)數(shù)據(jù)推送到服務(wù)器。
客戶可以通過PC、平板或手機遠程監(jiān)控蔬菜大棚中的作物生長情況。
【近海漁業(yè)監(jiān)控系統(tǒng)】
通過水質(zhì)傳感器,獲取當前水質(zhì)情況(Modbus RTU通信);通過攝像頭獲取當前圖片;通過GPS獲取當前經(jīng)緯度;通過GPRS模塊把數(shù)據(jù)傳送到遠端服務(wù)器。
【村級污水處理監(jiān)控系統(tǒng)】
物聯(lián)網(wǎng)智能網(wǎng)關(guān)通過RS485/CAN和智能終端連接在一起,智能終端采集各種數(shù)據(jù),或控制相關(guān)設(shè)備運行。網(wǎng)關(guān)通過無線路由器或GPRS模塊向服務(wù)器發(fā)送數(shù)據(jù),或者接收服務(wù)器的控制指令。
Web網(wǎng)頁可以查看現(xiàn)場工藝流程界面,工藝報表及設(shè)置工藝參數(shù)等等。
物聯(lián)網(wǎng)項目開發(fā)的未來發(fā)展方向
現(xiàn)在國內(nèi)外互聯(lián)網(wǎng)企業(yè)巨頭,瞄準的物聯(lián)網(wǎng)領(lǐng)域,大都是民用領(lǐng)域,如智能家居、車聯(lián)網(wǎng)等等。這些領(lǐng)域的特點就是量大、并且相對統(tǒng)一,每個客戶不需要特別的定制(特別是硬件層面,區(qū)別不大,個性化最多在軟件層面)。
但是在非民用領(lǐng)域,即使類似的項目,往往因為最終客戶不同,工藝流程的差異,軟硬件也會有相對大的變動。另外和民用產(chǎn)品不同,一是應(yīng)用環(huán)境相對惡劣,二是要求24*7連續(xù)運行,對穩(wěn)定可靠性要求比較高,三是要便于擴展,便于維護。
所以這類物聯(lián)網(wǎng)項目,未來的發(fā)展方向,肯定是首先在可靠性上下工夫,滿足長期使用的需求后,就是盡可能提取共用部分,讓每個項目的修改量降到最低。
當然未來最有可能的發(fā)展方向就是,隨著現(xiàn)在分工越來越細,云計算發(fā)展的越來越成熟,物聯(lián)網(wǎng)協(xié)議標準的確立和客戶技術(shù)能力的提高,未來也許是在最終客戶的統(tǒng)一協(xié)調(diào)下,不同物聯(lián)網(wǎng)廠商各做一部分(或軟或硬),共同完成最終的項目。