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

利用云主機(jī)快速開發(fā)MQTT客戶端仿真硬件上云IoTDA

曙光云開啟全棧智能時(shí)代
物聯(lián)網(wǎng)學(xué)習(xí)路線來啦!
【全新課程資料】正點(diǎn)原子《ESP32物聯(lián)網(wǎng)項(xiàng)目實(shí)戰(zhàn)》培訓(xùn)課程資料上線!
工業(yè)物聯(lián)網(wǎng)(IOT)云平臺(tái)是什么
ARMxy ARM物聯(lián)網(wǎng)邊緣計(jì)算網(wǎng)關(guān)支持Node-RED用于云邊端一體化

工業(yè)物聯(lián)網(wǎng)云平臺(tái)的應(yīng)用場(chǎng)景
工業(yè)物聯(lián)網(wǎng)之電梯物聯(lián)網(wǎng)行業(yè)發(fā)展趨勢(shì)及發(fā)展機(jī)遇風(fēng)險(xiǎn)特征分析|梯云物聯(lián)

通過MQTT網(wǎng)關(guān)快速對(duì)接工業(yè)物聯(lián)網(wǎng)云平臺(tái)

嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard-項(xiàng)目分享|基于ELF 1S開發(fā)板完成的物聯(lián)網(wǎng)開源項(xiàng)目
飛凌嵌入式-ElfBoard-項(xiàng)目分享|基于ELF 1S開發(fā)板完成的物聯(lián)網(wǎng)開源項(xiàng)目
項(xiàng)目分享|基于ELF 1S開發(fā)板完成的物聯(lián)網(wǎng)開源項(xiàng)目

評(píng)論