作者:劉洪峰,網名葉帆,葉帆科技創始人兼CEO,前微軟(中國).NET Micro Framework開發團隊成員,微軟全球最有價值專家(MVP),CSDN十大MVB。以微軟.NET MF系統為核心,研發了物聯網智能網關、YFIOs和YFHMI等物聯網中間件軟硬件平臺。
責編:屠敏,技術之路,共同進步,歡迎技術投稿、給文章糾錯,請發送郵件至tumin@csdn.net。
版權聲明:本文為 CSDN 原創文章,未經允許,請勿轉載。
從去年伊始,國內外一些大公司都先后推出了面向物聯網領域的平臺產品,如微軟Azure平臺的IoT Hub、阿里云平臺的物聯網開發套件、百度云平臺的物接入IoT Hub、物解析IoT Parser和物管理IoT Device等等,但上述公司的產品從平臺特色和技術角度來看,相對比較適合一些企業級項目開發及智能硬件的云連接、云存儲的使用,其實并不太適合一些對控制實時性較高、接入點多、業務邏輯相對復雜的工業領域。
工業自動化領域相對比較封閉,發展也比較慢,多年來涉及到通信相關的,大部分還是采用現場工業總線等技術來實現。筆者曾發過一篇《淺談工業級物聯網項目架構設計及實施》,里面除了介紹了工業物聯網的概念和特色外,還介紹了物聯網通用中間件平臺的架構設計。時至今日,隨著國內外大公司的介入,物聯網越來越熱。下面筆者將結合工控領域的特色及當前物聯網領域的一些新技術新趨勢,分享工業物聯網和民用物聯網的特色及異同,并從自身實際應用開發的角度,解讀從端到云,工業物聯網項目的全棧快速開發之路。
一、前言
1.1 民用物聯網VS工業物聯網
最近誕生的共享單車,短短一年多的時間就遍布國內一二線城市,迅速成為一個現象級應用,可以說是民用物聯網領域最大的應用。小米的智能家居套件,以低廉的價格,相對實用的功能,也贏得了不少智能家居愛好者的追捧,也是比較典型的民用物聯網應用。
工業物聯網對大部分人來說,相對陌生,往往是面向行業的應用,比如我們當前所做的養殖物聯網監控,污水處理物聯網監控和垃圾處理物聯網監控。
那民用物聯網和工業物聯網的區別是什么呢?
從技術角度來說,民用物聯網和工業物聯網并沒有本質的區別,都是有云、有端、都具備傳感器數據采集、設備控制及通信傳輸等功能。只是工業物聯網脫胎于工控自動化網絡,后者對可靠性和實時性有較高的要求,有各種工業級別的現場總線,如Profibus,Modbus RTU/TCP,CANopen等等,后續又在民用以太網的基礎上,推出了工業以太網。那時候還沒有云的概念,考慮到安全,網絡都是私有的,很少和因特網進行互聯。從某種意義上來說,沒有云技術的高速發展,就不會有現在的民用物聯網上各種現象級應用。當然工業物聯網也得益于云技術的成熟,才能使高門檻的工業自動化技術得到了一定程度上的普及,否則也很難有今天所謂的工業物聯網。不過民用物聯網和工業物聯網區別還是有的,下面將一一簡要介紹。
首先是數量的區別,民用物聯網往往面臨的是百萬、千萬級別的用戶群。工業物聯網從量上來說,要比這個規模小得多。
其次是功能上的區別,民用物聯網功能往往比較單一,易用,免維護。工業物聯網功能就相對復雜的多,往往對應一個行業內的一系列具體的功能,
然后就是價格上的區別,民用領域的用戶對價格相對敏感,所以民用領域的物聯網產品往往價格比較低廉。工業物聯網領域的產品由于面向行業,面向具體的應用,量少,所以單價相對較貴。
最后就是品質上的區別了,最簡單的工業和民用的區別,就是設計產品的時候,器件選型民用產品往往選擇民用級別的,工業級產品往往選擇工業級的。除了價格上工業級的芯片比較貴外,應用環境的溫度范圍比民用領域也要寬廣,可以在相對苛刻的條件下也能可靠地工作。
1.2 工業物聯網全棧開發
全棧開發的概念來源于Web開發領域,指同時具備前端和后臺開發的能力。引申到工業物聯網領域,全棧開發意味著要懂硬件開發,要懂各種傳感器、云開發、Web開發技術、手機APP開發、各種通信技術和數據存取,大數據時代還要求懂數據挖掘和分析。
這對全棧工程師來說,要求就非常高了。考慮到實際,從技術路線來看,全棧開發還是分派系的,如“Java派”,各種層面的開發都是以Java類的開發技術為主。如“.NET派”,各種層面的開發都是用.NET技術進行開發。由于歷史原因,我從2001年開始進入工控開發,工控軟件類開發大都以微軟技術為主,所以全棧開發主要采用了.NET技術。
二、工業物聯網設備端開發
民用物聯網端的開發和工業物聯網端的開發還是有很大區別的,民用物聯網端產品是廠家直接基于芯片進行產品開發。是典型的硬件開發了。而工業物聯網端的開發,往往是在第三方廠家的產品基礎上進行二次開發,也就是更多的是做集成類的開發工作。
我們所做的工業物聯網的端設備就是供其他工業物聯網集成商進行二次開發的。當然我們也會基于我們的軟硬件產品進行工業物聯網項目的集成開發。
這里著重介紹的就是在現有的工業物聯網產品基礎上進行的項目開發。
2.1 常見IO接口
目前工業領域常見的IO接口如下:
RS485:兩線制,差分信號傳輸,半雙工通信,最大通信距離千米以上。
RS232:三線制,全雙工通信,一般通信距離小于10米。
CAN:兩線制,多主通信,高性能,高可靠性,每次最多傳輸8個字節的數據。通信距離千米以上。
以太網:4線或8線,多主通信,高性能。普通網線通信距離100米以內。
Zigbee:基于IEEE802.15.4標準的低功耗無線通信協議,低功率一般傳輸距離100米以內,高功率的1000米左右。
LoRa:基于擴頻技術的超遠距離無線傳輸方案。低功耗,多節點。
GPRS:通用分組無線服務技術,廣域網通信。
NB-IoT:IoT領域一個新興的技術,支持低功耗設備在廣域網的蜂窩數據連接,亦稱低功耗廣域網(LPWA)。
模擬量輸入:0~20mA/0~5V/0~20V
開關量輸入:0~24V
繼電器輸出:0~220V/2A
2.2 常見通信協議
Modbus RTU: 施耐德公司制定的基于RS485/RS232的串行通信總線協議。
Modbus TCP: 施耐德公司制定的基于以太網的通信總線協議。
PPI:西門子公司專為S7-200系列PLC開發的通訊協議。
Profibus:是一種國際化、開放式、不依賴于設備生產商的現場總線標準。
CANopen:是一種架構在CAN上的高層通信協協議,包括通信子協議及設備子協議。
2.3 常見智能模塊
常見的智能模塊其實種類比較多的,比如智能電表,智能水表,各種PLC及其配套的擴展模塊等等。我們這里主要介紹的就是凌霄物聯網智能網關、智能終端、智能IO模塊和綜合采集模塊。
圖1 物聯網智能網關 智能終端 綜合采集器
網關除具備網口、USB、SD卡及擴展兩路智能模組(無線通信、RTC、存儲等板卡)外,還可以配置各種不同通信接口板(當然也可以直接對接智能終端或智能IO上的輸入輸出子板)。
綜合通信:1路RS485,2路RS232,1路CAN
RS485-CAN:3路RS485,1路CAN
RS485:4路RS485
智能終端和智能IO模塊的主要區別有,一是通信接口,智能終端有三種接口可選,以太網、RS485和CAN;而智能IO模塊僅具備CAN接口。二就是智能終端支持二次開發,能獨立運行,也可以作為智能網關的擴展模塊,而智能IO僅作為智能網關的擴展模塊存在。
智能終端和智能IO模塊,根據對外接口不同,主要有如下種類的模塊:
綜合輸入輸出模塊:2路模擬量入,2路開關量入,2路繼電器輸出
綜合模擬量模塊:4路模擬量輸入,2路模擬量輸出
綜合開關量模塊:4路開關量輸入,4路開關量輸出
模擬量采集模塊:4路模擬量輸入
開關量輸入模塊:8路開關量輸入
繼電器輸出模塊:8路開關量輸出
熱電偶采集模塊:4路熱電偶采集
綜合采集器,是一個九合一的傳感器集成模塊,可以說是國內外集成度最高的一款產品。一次可以采集的傳感器數據有3路溫度,1路濕度、1路氧氣、1路氨氣、1路二氧化碳、1路光照、1路PM2.5。該模塊可以通過RS485直接和網關相連,標準Modbus RTU通信協議。
2.4 YFIOs數據組態開發
圖2 YFIOs系統架構
圖2是YFIOs數據組態系統的架構圖,其包含三部分:驅動層,核心層(驅動引擎及實時數據庫)和策略層。
所謂的二次開發大部分就是開發和具體業務聯系密切相關的策略程序,此外就是少部分的驅動程序開發(除了對接特殊設備,大部分情況下無需用戶開發驅動程序)。
下面我們用一個簡單示例來介紹一下YFIOs組態開發。
2.4.1 硬件準備及連接
我們需要準備如下設備:1臺物聯網智能網關,1臺物聯網智能終端(或智能IO),1臺綜合采集器,1條USB線及附屬電源及連接線等。設備及輔材準備好后,按如下方式進行接線:
圖3 設備連接
2.4.2 創建用戶驅動
圖4 新建YFIOs設備
如圖4所示,根據設備的類型,對應的網關接口,新建綜合采集器和輸入輸出智能終端對應的用戶設備。
設備創建后,對應的設備變量也會自動創建。
2.4.3 設備及變量監控
無需任何編程,只要把相關的驅動和配置信息部署到網關,就可以直接監控設備的通信狀態、IO輸入狀態和連接的傳感器數據。如果有IO繼電器輸出,也可以在IO監控界面,直接修改對應的值以改變繼電器的開閉狀態。
圖5 IO數據監控
2.4.4 創建用戶策略
如果僅僅實現數據從端到云的傳輸,那么無需寫用戶策略。當然對大部分的工業物聯網現場應用來說,還是需要一定的業務邏輯進行處理的。比如檢測到設備電機過熱,則要求網關立即停止電機運行或者對外發出報警信號。這里我們寫一個最簡單的用戶策略,就是當一路開關量輸入為高電平的時候,讓一路繼電器閉合,低電平的時候則繼電器釋放。
開發用戶策略,可以采用微軟Visual Studio IDE開發工具進行開發,我們也提供了對應的模板程序,可以直接填入必要的業務代碼即可。如圖6所示,標準的用戶策略其實只需要實現3個接口函數即可:OnLoad、OnRun和OnUnload。
圖6 策略開發
OnLoad在用戶策略開始加載的時候執行,只執行一次。OnRun按設定的間隔,循環被YFIOs的驅動引擎調用。OnUnload是策略被卸載前執行一次。
圖6中在OnRun添加的代碼如下:
if(op.IOReadInt("QI44:I1")!=op.IOReadInt("QI44:Q1")) { op.Extern_IOWrite("QI44:Q1",op.IOReadInt("QI44:I1").ToString()); op.Print(MessageType.Debug,"I1="+op.IOReadInt("QI44:I1").ToString(),Name); }以上代碼的意思是,從YFIOs實時數據庫中讀取QI44:I1通道值,如果和繼電器的輸出狀態不同,則繼電器的狀態和輸入通道保持一致。
用戶策略編寫完畢后,則可以用YFIOsManager工具進行加載和調試了(如圖7和圖8所示)。
圖7 新建策略
圖8 策略調試
從圖8中我們可以看出,當I1輸入狀態被改變的時候,繼電器的輸出狀態也被改變了,調試窗口中也輸出了對應的調試信息。
2.4.5 添加QCPB云端通信策略
如果不和云端通信,也就不需要添加QCPB云端通信策略了,但是如果沒有這部分也稱之不上為物聯網項目了,只是一個典型的小自動化項目而已。
和添加用戶策略一樣,我們添加上QCPB云端通信策略,除了設置運行間隔外,我們還需要設定相關的參數,如圖9所示。
圖9 添加云端通信策略
IP地址是指云端服務器端地址,端口號默認為12000,項目ID是指云端創建對應項目時的ID號(這個后文會有介紹)。由于QCPB協議支持變化上傳數據,所以針對浮點數,需要設置數據變化的閾值。
“IO配置”面板中有一個導出按鈕,可以單擊導出,保存后的XML文件在創建云端項目及云端組態畫面的時候會用到。
三、云端通信協議
3.1 MQTT通信協議
MQTT是Message Queuing Telemetry Transport的縮寫,中文意思是消息隊列遙測傳輸,它是IBM開發的一個即時通訊協議,目前已經成為物聯網主流的通信協議,微軟云、百度云、阿里云等都支持該通信協議。這意味著設備只要支持了該通信協議,就可以和當前主流的云進行云端通信。凌霄物聯網網關也支持該協議,在一個消防相關的項目中,就是通過該協議把采集到的數據上傳到的微軟Azure IoT Hub中。
3.2 WebSocket通信協議
WebSocket協議是HTML5標準里,基于TCP的一種新的網絡協議,2011年被IETF定為標準RFC 6455。它實現了瀏覽器與服務器全雙工(full-duplex)通信,服務器可隨時向客戶端發送信息,不僅通信數據量變小,同時也大大改善了網頁動畫的實時性能。我們的YFHMI組態動畫,就是基于WebSocket通信協議和服務器中間件YFCloud進行通信的。
3.3 QCPB通信協議
這是我們自行開發的一個基于二進制格式的云端通信協議,其優點是通信數據量小,支持數據變化上傳。除了支持數據通信外,還支持設備的遠程診斷、遠程參數下載和遠程升級等功能。支持TCP/IP以太網和GPRS雙鏈路自動切換通信模式。本篇文章中所介紹的云端通信就是基于該協議來實現的。
四、云服務YFCloud開發
云端YFCloud有三部分組成:Web后臺、Web前臺和YFIOs云端中間件。Web后臺和前臺采用ASP.NET進行開發,YFIOs云端中間件也是采用.NET技術進行開發,是一個標準的Windows服務程序。
4.1 云端項目構建
首先登錄YFCloud物聯網中間件通用監控平臺就可以開始創建云端項目了。YFCloud的構建思想是,先有項目模板,然后再基于項目模板創建應用。這樣的好處就是,基于一個項目模板可以創建若干應用。
4.1.1 創建項目模板
圖10 創建項目模板
先添加一個項目模板,然后比較重要的一步就是導入【2.4.5】章節所導出的IO配置文件,從而構建云端IO實時數據庫(如圖11所示)。
圖11 云端IO列表
4.1.2 創建項目應用
基于我們剛剛創建的“工業物聯網演示”模板創建一個項目應用。創建一個項目應用后,系統會自動生成一個項目ID號,把這個ID號填入【2.4.5】章節中所示的云端通信策略中的IO配置面板中,填入后部署到物聯網智能網關即可。
4.2 YFIOs云端中間件
YFIOs云端中間件脫胎于嵌入式YFIOs,從圖12的架構圖上就可以看出,嵌入式YFIOs是一個“單機版”的數據組態平臺,而云端中間件YFIOs是一個“網絡版”數據組態平臺。
圖12 YFIOs中間件架構
YFIOs云端中間件集成了WebSocket服務器,Web動態網頁可以通過WebSocket協議和服務器進行通信。
YFIOs云端中間件以項目為最小單位來進行管理的,一個或多個項目對應一個項目模板,實際應用通過項目ID進行區分。
4.2.1 遠程IO監控
圖13 YFIOs云端中間件
在云端服務器上打開YFIOs云端中間件-客戶端程序,可以看到在“工業物聯網演示”項目模板下,我們看到“工業物聯網Demo”應用的運行標志已經變為綠色,表示物聯網智能網關設備已經和云端連接成功。右側的顯示面板上可以看到從物聯網智能網關上傳到云端的各種IO數據。在該界面上,也可以對繼電器變量進行操作,寫入0或1,可以看到物聯網智能終端上對應的繼電器閉合或開啟。
4.2.2 遠程參數&遠程升級
圖14 遠程參數&遠程升級
針對一個具體的項目,遠程參數即可能云端策略需要,也可能同時遠程設備上的策略需要,如果是這種情況,處理要復雜一些,相關參數需要保存到云端服務器,并且參數一旦修改,需要同時通知云端策略和遠程設備上的策略。如果僅遠程設備需要,那么簡單期間,可以直接通過YFIOs云端中間件直接傳遞一個二進制參數文件即可。
遠程升級的實現要相對復雜,因為升級文件相對較大,并且傳輸通道有可能是GPRS窄帶傳輸,所以需要分段進行傳輸。要確保整個的升級文件,完整可靠的傳輸到遠程的物聯網智能網關上,并且重啟重連成功后,才算真正的升級完畢。
由于基于同一個項目模板下的多個相關應用的物聯網智能網關上的應用往往是一樣的,所以只要設定一個升級文件就可以升級整個項目模板下的所有的項目應用。但是這有一個前提,要升級的固件版本,要比設備上當前運行的版本高。
考慮到一些特殊情況的存在,YFIOs云端中間件也支持遠程強制升級,不管當前什么版本,不管以前運行的什么應用,都可以強制實現遠程升級的功能。
4.2.3 云端策略開發
YFIOs云端中間件的策略和YFIOs嵌入式的策略開發基本相同,也含有OnLoad、OnRun和OnUnload,差別就是云端中間的策略能力更強,可以充分利用Windows平臺本身的.NET Framework能力。
有些業務邏輯即可以放在設備端的策略里,也可以放到云端的策略里,比如一些當日量和累積量的處理和換算。有些最好放到設備端,比如某些指標超過閾值,需要立即關閉或開啟設備的。有些則放在云端更合理,比如需要把數據進行永久存儲的。
云端策略分三種類型:核心策略、公共策略和用戶策略。核心策略,YFIOs云端中間件每個項目都會執行,公共策略是多個項目可選擇性的執行,用戶策略則是用戶項目模板下的項目才會執行。其上三種策略從代碼結構上沒有什么區別,以所在的目錄決定其策略類型。
圖15 策略管理
五、云畫面YFHMI組態開發
YFHMI畫面組態最早支持WinCE平臺,后來在WinCE平臺軟件的基礎上開發出了基于.NET Micro Framework平臺的版本。.NET Micro Framework一般運行在相對資源較小的物聯網芯片(Cortex-M系列)上,所以YFHMI在性能和體積上做了進一步的優化。考慮到Html5+WebSocket是未來WEB前端的主流,在YFHMI支持Windows版本后,又直接推出了Html5的組態版本。
5.1 Web組態畫面構建
5.1.1 創建組態畫面
在創建基本組態畫面的同時,我們還是需要導入在【2.4.5】章節所導出的IO配置文件,以便于動畫綁定對應的IO變量(如圖16所示)。
圖16 YFHMI圖元創建 & IO導入
我們構建的組態畫面比較簡單,兩個指示燈分別對應智能終端的I1、I2,一個切換開關對應Q2,四個文本框分別對應T1、T2、T3和H。IO變量導入后,相關的圖元分別綁定上對應的變量。
5.1.2 導出Html5文件
圖17 Html5網頁導出
導出的bg.png、Monitor.html、PublishIO.xml和YFWebSocket.js四個文件需要上傳到云端對應的項目模板目錄下。導出的PublishIO.xml文件需要導入云端IO列表,以設定對應的發布IO。
5.2 Web畫面呈現及操控
圖18 動畫監控
在Web網頁上我們打開動畫監控頁,可以看到這個內容是和我們在YFHMI中創建的組態畫面是一致的,并且其顯示的數據也和真實設備的值一樣(和YFIOs云端中間件的IO實時數據保持一致)。這個時候如果我們用鼠標操作開關按鈕,可以看到物聯網智能終端的繼電器吸合或釋放。
六、應用案例
綜上,我們可以看出無需太多專業技能,無需太多時間,就可以從端到云構建一套相對實用,且有一定復雜度的工業物聯網方案。下面我們將介紹的案例,就是我們這兩三年來在實際現場實施的項目,是真正得到實際運行考驗的項目。
6.1 遠程污水監測/監控系統
圖19 恭城遠程污水監測界面
圖20 龍灘遠程污水監控界面
圖21 硬件控制柜
廣西龍灘和恭城的污水監控和監測系統,分別在2014和2015年開始著手實施,最初龍灘項目沒有遠程監控畫面,僅包含現場自動化系統,在恭城遠程監控畫面實現后,才又增添了遠程監控功能。目前該項目已經在現場運行了兩年以上。
6.2 遠程垃圾處理系統
廣西龍灘垃圾處理系統在2015年開始研發實施,和污水監控系統不同的是,除了包含現場自動化控制、遠程云端監控外,現場還有顯示器進行現場監控。所以YFHMI構建的組態,不僅支持HTML 5網頁組態畫面,還支持嵌入式組態畫面。
圖22 龍灘遠程垃圾監控系統
6.3 物聯網養殖監控系統
物聯網養殖監控系統是我們在2015年底和新希望六合還有微軟共同合作研發的一套養殖監控系統。目前已經在山東濟南、濰坊、河南新鄉、武陟,河北香河等地進行了安裝實施。
本系統和上面介紹的污水處理和垃圾處理系統有些不同,上述兩個系統的架構,核心就是物聯網智能網關連接若干不同功能的智能終端和智能電表,通信也是僅采用3G/4G方式和遠程服務器進行通信。物聯網養殖系統除了包含上述的功能外,還專門為其研制了九合一的綜合采集器,此外還能連接智能電表、智能水表,環控器等等智能設備。為了保證通信的可靠性,還支持GPRS/因特網雙網自動切換功能。在遠程監控端,除了具備網頁監控,微信監控外,還提供手機APP進行遠程操控。
圖23 養殖監控-實時數據
-
工業物聯網
+關注
關注
25文章
2379瀏覽量
64316
發布評論請先 登錄
相關推薦
評論