天天看點

淺談工業級物聯網項目架構設計及實施

【說明】這是發表在《程式員》電子刊10月B架構專題文章

摘要:網際網路+和物聯網由于發展的側重點不同,在做架構設計上肯定有所不同。而以中小項目為主的物聯網項目,其實更看重的,一是系統穩定可靠,能保證系統長期穩定的運作。本文主要介紹工業級物聯網項目的架構設計及實施。

早在1999年就已經有了“物聯網”這個概念,但是直到十年之後的2009年,IBM提出“智慧地球”的概念,才推動很多國家把物聯網研究和發展提升到戰略層面。但是比較遺憾的是,直到現在的2015年,我國的物聯網的發展依然主要靠政府項目來拉動,是以現在的發展似乎前景越來越不明朗。

政府似乎意識到這是個問題,在一些網際網路公司的倡導和推動下,提出了“網際網路+”的概念。雖然“網際網路+”和“物聯網”都是以網為主,但是發展的側重有了本質差別。“網際網路+”是以網際網路為主,外圍智能子產品和傳感器為輔,建構互聯生态。而“物聯網”卻是以網際網路為基礎,重點在傳感器資料采集,裝置控制,遠端監控為主。

但是現在很多網際網路公司,做的是“網際網路+“的事,卻以”物聯網“的名義來宣傳。是以現在的人越來越搞不清”物聯網“的真實定位了。

我一直認為從技術角度來看,所謂“物聯網“就是傳統工控網的一個外延。傳統的工業現場,考慮到生産安全,都是内部網絡。另外實施和維護的代價相對較高。而在網際網路和移動網際網路越來越完善的今天,在各個領域都有了遠端測控的要求。比如目前比較典型的農業大棚監控、森林防火監控、魚塘監測和養殖管理等等。

“網際網路+”和“物聯網”由于發展的側重點不同,在做架構設計上肯定有所不同。“網際網路+“的項目,其實更看重的是使用者數,通信資料流量,這是衡量一個”網際網路+“項目成功的标志,當然這是也是那些做雲平台為主的網際網路公司最看重的,使用者數和通信資料流量正是他們的利益點所在。

而以中小項目為主的“物聯網”項目,其實更看重的,一是系統穩定可靠,能保證系統長期穩定的運作,因為有些監控點往往部署在人迹罕至的地方,系統的可靠性成為關鍵。二就是系統便于開發和維護,因為基于不同行業,不同工藝需求的,很難開發出像民用領域的通用産品,需要根據現場實際調整相關的業務邏輯和監控畫面,是以是否易于開發很關鍵。當然維護更為重要,因為偏工業級的“物聯網”項目一般設計至少是三年或更長的生命周期,是以項目維護難以避免,甚至系統還會根據現場工藝的變更進行變化,易于維護是“物聯網“項目一個不可或缺的要素。

由以上的說明,我們可以很清晰地了解,從技術角度來講,做“網際網路+”和“物聯網”項目的架構設計是有很大的不同,本篇文章主要介紹工業級“物聯網”項目的架構設計及實施。

由于筆者曾經在傳統工控領域工作7年之久,是以了解“物聯網”更多是從工控的角度來考慮。所謂的工業級物聯網,不是工業領域的物聯網,而是具備工業領域的特色的物聯網項目,比如農、林、牧和漁業等領域的相關項目。和工業領域的項目不同,沒有那麼龐大和要求嚴格,采集和監控的資料也相對較少,對裝置、及實施和維護的成本比較敏感,并且一般要求遠端監控。但是相同的要求是,裝置要穩定可靠,便于根據工藝要求調整控制政策,友善更新、擴充,易于維護。

傳統工控項目,一般相對龐大,環節多,開發和實施周期都比較久,當然項目的費用也是相對高昂的。往往一個實施工控項目的公司,一年能做十幾個這樣的項目就已經很繁忙了。而在物聯網時代,由于網際網路和移動網際網路基礎設施比較完善,雲服務公司也是層出不窮,可以花最少的代價,相對快速的完成一些項目。

由于開發和實施的代價大大降低,是以可做的領域被大大拓寬了,形成了一個良性循環,做的越多,越可靠,也越便宜。越便宜,可做的項目也越來越多。

了解了工業級的物聯網項目的一些特色,是以架構設計方面就有了方向和思路。我們先從技術角度分析,目前一個典型的物聯網項目,從組成上來講,至少有三部分:一是裝置端,二是雲端(主要指公有雲),三是監控端。

裝置端主要負責資料采集,工藝邏輯執行及控制。

無論底層的裝置數量有多少,通信協定有多複雜,考慮到項目安全等等因素,往往和雲端通信,彙集在一個裝置上,這樣的裝置的角色往往是物聯網網關,除了專門負責和雲端進行通信外,有時候也會對原始資料進行一定的處理,執行一些業務邏輯相關的代碼。 和雲端通信有很多協定可選,常見的有基于HTTP協定的Get或Put方法,從伺服器擷取一些設定及狀态,及向伺服器推送采集到的資料。但是對資料量相對比較大,實時性要求高的,往往是直接的Socket TCP/UDP通信,這樣傳輸的代價相對較低,但是對程式設計設計方面要求比較高。

由以上分析,從功能層面上分,裝置端架構一般可分三層,一是資料采集&控制輸出層;二是工藝流程執行層;三是資料上傳&指令接收通信層。

雲端一般包含三部分:Web前台+ Web背景+中間件;

作為工業級的物聯網項目,Web前台一般會顯示這幾部分内容,一是工藝畫面,和現場實際的裝置和工藝流程一一對應,畫面可以實時反映工業現場運作的情況。二是各種資料報表、曲線資料的儲存、查詢和列印等。三是運作日志,儲存各種運作情況,以備查詢。四是顯示系統診斷資訊,便于系統出現問題的時候,及時判斷問題所在。

Web背景相對複雜一些,一般完成三部分内容的工作,如果是裝置端基于HTTP協定通信,往往需要處理Get和Put請求。由于前台有實時畫面,是以Web背景有時候也需要向前台界面傳輸實時資料,目前有些實時資料是通過Web Socket協定進行傳輸,也可以由專門的程式來處理。還有一部分功能比較重要,就是要建立裝置資料和各種報表,曲線,日志的對應關系,以便于适用盡可能多的現場。

在工業級物聯網項目中,一般中間件必不可少,其主要功能就是負責和現場裝置進行通信,擷取資料或發送相關控制指令。此外還有一個比較重要的功能,由于中間件程式一般是作為系統的一個服務程式或普通應用程式,生命周期較長,可以長時間連續運作,可以處理一些相對複雜的業務邏輯、資料換算及資料轉儲。

監控端一般包含PC、手機或平闆監控。

對一般項目而言,也許通過Web前台就可以掌控一切了,但是在移動網際網路的時代,如果對應的手機或平闆上沒有對應的APP,那這個項目就感覺有了一個很大的缺憾。有了手機或平闆APP,就可以身在任何地方,都可以相對友善的監控現場。

從功能上劃分,架構可以相對簡單的分為兩層,一就是UI界面顯示及操作層,二就是資料通信層,實作和伺服器資訊互動。

如果抛開其他一切因素,僅從技術角度來講,實作以上三個大環節的功能,用什麼系統平台,任何開發語言都可以完成其預定的功能。但是所謂的架構設計,不僅僅從功能角度來設計整個的系統平台,更多還要考慮其可靠性,擴充性,維護性等幾個方面。

作為工業級的物聯網項目,大都是面向工、農、牧、漁等具體行業,每種行業雖然從技術角度而言有很多類似的部分,但是從工藝流程角度又有很大的差別,是以針對具體的項目,進行代碼調整及相關功能的擴充及二次開發必不可少。但是面向一線的工程師往往技術水準及能力相對比較低,能否快速編寫出可靠、健壯的代碼顯的非常重要,畢竟每個項目現場實施時間是有限的,但是同時項目要求也是比較高的。

另外一個物聯網項目,包含了嵌入式裝置的開發、Web前背景的開發、服務程式開發還有手機和平闆程式開發,每一項從技術平台上來說各種各樣,比如嵌入式裝置,有微軟體系的Windows CE/XPE/.NET Micro Framework,有linux體系的嵌入式linux/uclinux等等,還有uCOSII/FreeRTOS/mbed OS等等實時嵌入式作業系統,其開發工具,系統架構各不相同,各有特色。手機和平闆目前至少也有三種開發類型,一種是iOS開發,一種是安卓開發和windows 10 UWP通用程式開發等等。另外Web開發就更多了,這裡就不一一舉例了。

是以如果在整體架構設計中,每種部分都選用不同的技術路線,那麼每一種技術路線,意味着都要有一個團隊去開發,并且開發完畢後,還需要上下進行溝通,以便于把整個項目有機地聯系在一起。

開發完畢後,更多的還有維護工作,不僅是開發團隊的維護,更為重要的是現場維護,除了問題,如何及時定位,及時解決。針對如上問題,加上多年的現場實施和維護經驗,是以我更看重統一化群組态化的架構設計,下面我就講講我們是如何建構物聯網項目的。

由于是一個物聯網通用中間件開發平台,是以着眼點并不是一兩個非常有行業特點的項目平台,而是面向不同行業,不同具體應用的二次開發平台,更多考慮跨行業應用的技術通用部分及同一個運作時平台支援多個項目點的功能。

下面我們就裝置端、雲端中間件及物聯網通用平台分别進行介紹。

在工控領域,組态軟體司空見慣。為什麼很多工業項目采用組态軟體,原因主要有兩點,一是子產品化搭積木式的設計,技術門檻低,實施速度快,非常适合工控技術人員使用;二是可靠性非常高,由于子產品之間耦合性低,重用度高,并且每個子產品往往在不同項目現場,實際都得到過運作考驗,是以穩定性自不待言。

YFIOs的設計思想就來源于标準的組态軟體,但是又具備了一些物聯網時代的功能特色。

圖1 YFIOs系統架構 

從圖1架構圖上可以看出,YFIOs包含三大部分:驅動層、政策層和核心層。

底部驅動層支援大部分實體通信接口,主要功能就是和傳感器(或智能子產品)通信,擷取相關的傳感器資料及發送控制執行指令。

上部政策層除了加載執行一些系統政策(如系統通信政策)外,還可以加載使用者政策,這樣可以基于現場工藝流程,立即就可以進行相關的工藝控制操作,不用送到服務端,等服務端遠端發出控制指令。

中間核心層是最關鍵的,除了啟動驅動和政策引擎外,還建立了兩個記憶體資料庫。一個是IODB,主要存放點資料(如溫度、濕度資料),另外一個是IOBC,主要存放塊資料(如攝像頭圖檔)。政策程式和驅動程式,完全解耦合,通過IODB和IOBC進行資料互動。

和傳統組态軟體(特指資料組态部分)相比,YFIOs有如下特色:

基于.NET系統進行驅動和政策開發,由于系統自帶垃圾回收機制,不用擔心在編寫驅動和政策過程中,因記憶體溢出等原因導緻系統當機。

傳統的組态軟體一般對外不提供驅動開發SDK,即使有,大都也采用C++進行開發,對開發者要求比較高。YFIOs和傳統組态軟體不同,驅動可以采用C#和VB.NET進行開發。且驅動有多種運作模式,不僅系統可以調用,使用者政策也可以調用。還可以綁定政策事件,通過觸發的方式去執行指定的政策。

YFIOs的驅動可以動态替換,如果配置了相關的連接配接變量,隻要驅動變量接口相容就可以替換,這大大降低了系統運作後的維護成本,外圍的硬體裝置可以根據需要進行替換。

YFIOs系統支援遠端更新和遠端調試。支援三個層面更新,YFIOs運作時更新、YFIOs驅動和政策更新和YFIOs配置更新。

針對裝置端,我們也設計了基于物聯網畫面的組态軟體YFHMI,由于這部分其實和傳統的畫面組态差別不是很大,是以這裡限于篇幅,不再介紹了。

雲端YFCloud中間件平台,可以說是完全脫胎于嵌入式YFIOs,從圖2的架構圖上就可以明顯看出,可以這樣說,YFIOs是一個“單機版”的資料組态平台,而YFCloud是一個“網絡版”資料組态平台。

YFCloud和YFIOs都可以運作政策程式和建立IODB記憶體資料庫,不同的是YFCloud去掉了IODC記憶體資料庫,并且驅動層簡化為一種,就是TCP/IP通信接口,每一個遠端裝置,伺服器都會配置設定一個Socket連接配接,登入成功後,才能正常通信。如果裝置30秒上傳資料無變化,則發送心跳信号,否則60秒無資料收到,伺服器會主動關閉連接配接。

圖2 YFCloud中間件架構 

YFCloud還內建了WebSocket伺服器,Web動态網頁可以通過WebSocket協定和伺服器進行通信。

YFCloud物聯網中間件平台是以項目為最小機關來進行管理的,一個或多個項目對應一個項目模闆,項目通過項目ID進行區分。由于是二次開發平台,是以YFCloud提供了一個平台級的開發接口,通過接口可以管理相關的項目模闆和項目(如建立、編輯、删除、啟動和停止等)。

圖3 物聯網通用平台架構 

YFIOs嵌入式資料組态運作在物聯網智能網關上,直接和YFCloud進行通信(雲端中間件通過導入YFIOs的上傳IO表,就可以直接進行通信了)。

物聯網通用平台的Web前台,目前預設具備如下功能(每個項目模闆可以根據需要,進行選擇所需要的功能,項目完全繼承了項目模闆的選擇)工藝流程顯示、工藝報表(日報表,統計報表)、工藝曲線顯示、項目運作日志、工藝參數配置和攝像頭監控等等。

物聯網通用平台的Web背景,主要功能就是使用者管理、角色管理(和功能比對的角色)、項目模闆管理和項目管理。限于篇幅,就不詳細介紹了。

該平台的最大優勢就是,從軟到硬,全部采用了.NET平台。是以不需要太多的技術人員,就可以從上到下進行項目開發。對客戶來說,由于涉及到的技術領域比較少,是以二次開發及後續平台維護也比較容易。

這是比較早的一個案例了。裝置外接血糖儀、血壓計、攝像頭、溫濕度子產品,内部內建了RFID刷卡器及3G子產品。通過3G和遠端伺服器進行通信,使用者或醫生通過網頁檢視相關資訊,其中醫生還可以遠端留言并發送到裝置。采用組态式的架構最大的好處就是, 由于每個家庭已有的血糖儀或血壓計型号不同,裝置可以根據對應的傳感器型号,選擇不同的驅動,可遠端部署驅動進行适配。

圖4 遠端監控檢測裝置連接配接圖

系統核心為物聯網智能網關,外部連接配接攝像頭、溫濕度傳感器,通過以太網、Wifi或3G路由器把相關資料推送到伺服器。

客戶可以通過PC、平闆或手機遠端監控蔬菜大棚中的作物生長情況。

圖5 農業大棚手機監控圖 

通過水質傳感器,擷取目前水質情況(Modbus RTU通信);通過攝像頭擷取目前圖檔;通過GPS擷取目前經緯度;通過GPRS子產品把資料傳送到遠端伺服器。

圖6 漁業監控裝置連接配接示意圖 

物聯網智能網關通過RS485/CAN和智能終端連接配接在一起,智能終端采集各種資料,或控制相關裝置運作。網關通過無線路由器或GPRS子產品向伺服器發送資料,或者接收伺服器的控制指令。

Web網頁可以檢視現場工藝流程界面,工藝報表及設定工藝參數等等。

圖7 污水監控裝置連接配接示意圖 

圖8 污水監控Web界面圖

現在國内外網際網路企業巨頭,瞄準的物聯網領域,大都是民用領域,如智能家居、車聯網等等。這些領域的特點就是量大、并且相對統一,每個客戶不需要特别的定制(特别是硬體層面,差別不大,個性化最多在軟體層面)。

但是在非民用領域,即使類似的項目,往往因為最終客戶不同,工藝流程的差異,軟硬體也會有相對大的變動。另外和民用産品不同,一是應用環境相對惡劣,二是要求24*7連續運作,對穩定可靠性要求比較高,三是要便于擴充,便于維護。

是以這類物聯網項目,未來的發展方向,肯定是首先在可靠性上下工夫,滿足長期使用的需求後,就是盡可能提取共用部分,讓每個項目的修改量降到最低。

當然未來最有可能的發展方向就是,随着現在分工越來越細,雲計算發展的越來越成熟,物聯網協定标準的确立和客戶技術能力的提高,未來也許是在最終客戶的統一協調下,不同物聯網廠商各做一部分(或軟或硬),共同完成最終的項目。

作者簡介:劉洪峰,網名葉帆,葉帆科技創始人兼CEO,前微軟(中國).NET Micro Framework開發團隊成員,微軟全球最有價值專家(MVP),CSDN十大MVB。以微軟.NET MF系統為核心,研發了物聯網智能網關、YFIOs和YFHMI等物聯網中間件軟硬體平台。 

繼續閱讀