【物聯網中間件平臺-01】真正面向物聯網的組態軟件 YFIOs和YFHMI的前生今世

 

1前言

從2001年進入工控領域以來,前後7年多的時間開發了諸如二型計量監控系統、焦爐四大機車自動化系統、燒結配水監控系統、隧道廣告影像系統、通用組態軟件、嵌入式系統組態軟件(基於WINCE系統)、LED視頻影像系統和ICU病室輸液管理等系統。其中焦爐四大機車自動化系統獲得了國家專利,而隧道廣告影像系統目前發展勢頭良好,在北京地鐵(2號線、4號線),深圳地鐵(羅寶線)都已實施安裝,未來上海和國外也將安裝該系統。

工控相關開發歷程,請參見我以前寫的博文《葉帆工控自動化一覽》。

開發這些系統最大的感觸就是,初次開發相對比較容易,但是後續系統擴展,維護相對較難,在系統架構設計不好的情況下,非常依賴團隊的穩定性和技術能力。並且系統一旦開發完畢,如果有多套差別不大,相對重複的系統實施,將大大降低開發人員的興致,因爲很少有開發人員喜歡做重複的工作,並且針對每個現場修改代碼,雖然修改的代碼量不一定多,但是給系統的穩定性,還有後續代碼的版本維護,都帶來重重問題(這還不算能修改系統代碼的人員成本和一個只需會配置的工程人員成本差別)。

在初入工控的前幾年中,我大部分時間都是在工業現場度過的,一般一個現場項目,從實施到系統基本完成,至少大概一個月的時間,並且後續還要聽從客戶的召喚,一遍遍去現場修改代碼的BUG。當有幾個現場項目同時需要維護的時候,時間和人力已經很難調配開了。

最初也考慮用傳統組態軟件搭建系統,優點是一些PLC和通信模塊可以直接進行通信。不過組態畫面的構建還是不太方便,每個現場還需要重新組態,所以上層界面需要自己自行用VB或VC開發界面,通過控件+配置的方式,完成界面設計。但是如果僅僅使用組態軟件的IO組態部分,那使用組態軟件的價值就不大了,所以從2005年開始自行設計組態軟件後臺(參見博文:組態軟件開發(僅限後臺部分)),並以此爲基礎構建了一套工控項目開發框架(參見博文:工控項目開發框架介紹)。

使用這套系統的優點是非常明顯的,焦爐四大機車項目由最初實施的一個多月,變成最長一個禮拜,並且後續除了PC本身的問題外,基本上沒有什麼軟件問題。

有了組態後臺的開發經驗,然後根據公司的戰略,開始爲觸摸屏開發嵌入式組態項目。數據組態、畫面組態是一個組態軟件的基本組成部分,但是更重要的是,組態軟件還要有一套自己的腳本系統,有了腳本才能把IO數據、各種圖元有機的聯繫在一起。最初YFIOServer後臺組態系統採用是微軟的VBScript腳本引擎,在Windows平臺上可以使用,但是在WinCE平臺卻很難支持,也曾考慮過購買嵌入式腳本引擎(自行開發的腳本引擎,功能和能力是比較弱的),但考慮到腳本本身的跨平臺特性、擴展能力和宿主語言交互的能力等因素,最後還是放棄了。

2007年開始接觸和了解.NET Micro Framework系統,我意識到.NET Micro Framework系統就是我所要尋找的大腳本系統,其框架特性,可以支持跨平臺運行;其標準、穩定、完善的TinyCLR保證了C#強大的應用開發能力,以此爲基礎可以構建任何複雜的系統。出於對.NET Micro Framework喜愛,所以在2008年加入微軟.NET Micro Framework項目組,開始了爲期四年的.NET Micro Framework學習和研發過程。

7年工控經驗的積澱加上四年.NET Micro Framework的潛心研發,由此在YFIOServer和YFEIOServer的基礎上,推出了.NET Micro Framework平臺的YFIOs系統,在EasyHMI的基礎上,推出了.NET Micro Framework平臺上的YFHMI系統。

下面我將一一介紹YFIOs和YFHMI系統的技術演進過程。

2 YFIOs物聯網中間件平臺簡介

2.1 YFIOs技術演進圖

 

2.2 YFIOServer

查看了我在2005年1月份寫的《研發部總結及計劃(0501)》,其中有這麼一項(如下圖),可見組態軟件後臺程序的研發應該始於2005年1月份。

 

不過從2004年10月份寫的一篇博文《VBScript腳本運用(腳本程序與宿主程序的交互)》來看,腳本的研究始於2004年10月左右,我在前言中說了,除了驅動和圖元外,腳本也是組態軟件必備的功能之一,所以說YFIOServer的研發開始時間還可以向前追溯幾個月。 

上圖是2005年3月份YFIOServer的運行圖,從上圖可以看出無論是TinyIOs還是YFIOs其圖標、功能配置界面和組態思想從這個一刻起,就已經基本定型(從2006年5月27日寫的博文上更能看出這一點)。

YFIOServer相關的博文共有9篇,羅列如下:

(1)、【2005年03月11日】組態軟件開發(僅限後臺部分)

http://blog.csdn.net/yefanqiu/article/details/317172

(2)、【2005年10月05日】YFIOServer 組態設備IO服務系統

http://blog.csdn.net/yefanqiu/article/details/495547

(3)、【2006年05月02日】OPC Server與YFIOServer成功綁定

http://blog.csdn.net/yefanqiu/article/details/705356

(4)、【2006年05月23日】YFIOServer後臺驅動算法優化

http://blog.csdn.net/yefanqiu/article/details/751451

(5)、【2006年05月27日】YFIOServer 後臺IO接口使用說明

http://blog.csdn.net/yefanqiu/article/details/757327

(6)、【2006年08月16日】隧道廣告系統數據下載相關技術簡介

http://blog.csdn.net/yefanqiu/article/details/1074382

(7)、【2007年01月07日】用拖拉實現設備驅動配置(EsayHMI最新驅動配置方式)

http://blog.csdn.net/yefanqiu/article/details/1476573

(8)、【2007年10月30日】.Net Micro Framework研究—TCP/IP通信

http://blog.csdn.net/yefanqiu/article/details/1855762

(9)、【2008年04月23日】工控項目開發框架介紹

http://blog.csdn.net/yefanqiu/article/details/2319050

YFIOServer系統研發成功後,最先在焦爐四大機車項目中進行應用(首鋼、遷安鋼廠、本溪鋼廠和濟南鋼廠等等現場仍在使用),後續在配水系統(鄂鋼)和隧道廣告後臺視頻數據下載中採用。

2.3 YFEIOServer

YFEIOServer是EasyHMI嵌入式組態軟件中的一部分,上位機模擬器部分還是採用的YFIOServer(後續採用C#編寫的代碼替代了VB編寫的界面程序),只是在WinCE平臺纔會運行YFEIOServer,該程序用EVC編寫,界面相對簡單僅能進行簡單的數據編輯和查看。 

 查看2006年9月份的工作總結(上圖),YFEIOServer的研發時間始於2006年9月,也是這個時候,確定了嵌入式設備IO變量的屬性由原來windows平臺上的32個變爲目前的9個,TinyIOs和YFIOs把這個定義完全的繼承下來。

2.4 YFIOs 

YFIOs系統和此前研發的YFIOServer及YFEIOServer(當然還包括傳統的組態軟件的數據IOServer部分)有根本性的不同,不僅僅是因爲採用了新的系統平臺(.NET Micro Framework),採用C#進行驅動開發,而是從架構本身對驅動還有原腳本系統進行了大大的升級。

2.3.1 YFIOs和OSGi比較

YFIOs的系統架構和麪向Java的OSGi動態模型系統非常類似(參見百度百科:OSCI詞條),我也是在參與深圳海關相關項目的時候,才知道IBM智慧地球項目便是基於此架構進行項目構建的,沒有想到我從組態軟件中提煉出的思想,結合.NET Micro Framework本身特點構建出來的YFIOs和OSGi的思想竟然如出一轍。

 

       OSGi系統架構圖。

 

                      YFIOs的架構圖(基於.NET Micro Framework平臺)

從二者的架構圖來看,模塊化,分層化的思想完全類似,可以說YFIOs是面向C#開發的OSGi。另外因爲.NET Micro Framework的架構特點,所以YFIOs也和OSGi一樣,是一個跨平臺的應用解決方案。

但是YFIOs和OSGi相比更有自己的優勢,YFIOs把OSGi中的模塊(Application/Bundles)根據功能分層兩類,驅動和策略,驅動面向傳感器設備,策略面向業務邏輯和上層雲通信。所以說YFIOs更是面向物聯網領域的中間件系統平臺,更適合物聯網應用開發。

另外OSGi僅僅是框架,只是提供了一些模塊加載運行機制,並沒有針對應用場景進行規劃。所以要應用OSGi構建系統,還需要自行做大量的工作。而YFIOs基於組態的思想,提供了YFIODB和YFIOBC庫,驅動和策略藉助這些完成信息交互,並且驅動模型提供了各種鏈路通道和採集接口,用戶開發具體驅動將會變得異常的簡潔。

2.3.2 YFIOs和傳統組態的後臺IO服務比較

(1)、基於.NET系統進行驅動和策略開發,由於系統自帶垃圾回收機制,不用擔心在編寫驅動和策略過程中,因內存溢出等原因導致系統當機。

(2)、傳統的組態軟件一般對外不提供驅動開發SDK,即使有些組態軟件廠商提供了驅動開發SDK,一般驅動程序也需要用C++進行開發,對開發者要求比較高。並且驅動比較封閉,編寫完畢後,所有的控制權都交付於系統,靈活性不足。

YFIOs和傳統組態軟件不同,驅動可以採用C#和VB.NET進行開發(當然對實時性要求較高的驅動,還可以調用底層C++編寫的代碼),且驅動有多種運行模式,不僅系統可以調用,用戶策略也可以調用。還可以綁定策略事件,通過觸發的方式去執行指定的策略(比循環判斷去執行相關代碼的方式,大大降低了CPU的負擔)。

新編寫驅動的加載也比較簡單,直接拷貝到指定的目錄即可,不像一些傳統組態軟件需要配置安裝,並且YFIOs的驅動程序用戶可以自行加密,可以授權指定的用戶使用其驅動程序,不僅可以保護自己的知識產權,還可以基於YFIOs平臺獲取相應收益。

另外YFIOs的驅動可以動態替換,如果配置了相關的連接變量,只要驅動變量接口兼容就可以替換,這大大降低了系統運行後的維護成本,外圍的硬件設備可以根據需要進行替換。

(3)、傳統組態軟件的腳本語言,一般是類C和類Basic語言,都是廠商自行開發的,效率較低、功能有限。而YFIOs中的腳本語言就是C#或VB.NET,其腳本引擎就是.NET Micro Framework系統的TinyCLR,所以進行策略開發時,可以充分訪問系統中的任何資源。比如YFHMI的圖形解析引擎就是YFIOs平臺上的一個策略, YFIOs系統的策略開發能力由此可見一斑。

(4)、傳統組態軟件大都用本地語言進行開發,所以不具備跨平臺的能力(由此衍生出各種版本,如PC通用版,嵌入式版本等等)。而YFIOs基於.NET Micro Framework系統進行開發,.NET Micro Framework是一個開放的框架,可以移植到各種系統平臺上去,所以YFIOs天然的具備了跨平臺的能力。

(5)、YFIOs系統支持遠程升級和遠程調試。支持三個層面升級,YFIOs運行時升級、YFIOs驅動和策略升級和YFIOs配置升級(如果有必要TinyCLR也是可以做到遠程升級的)。

2.3.3 YFIOsManager操作視頻演示

 

視頻鏈接:http://v.youku.com/v_show/id_XNDkxMzgyNTgw.html

2.3.4 YFIOs技術白皮書

下載地址:

http://sky-walker.com.cn/MFRelease/document/YFIOs_WhiteBook.pdf

2.3.5 YFIOs未來發展方向

(1)、跨平臺支持,後續將.NET Micro Framework移植到linux或安卓平臺上。

(2)、提供WebServer支持,可以通過網頁的方式,遠程配置和加載策略和驅動,也可以動態啓動和停止指定的驅動或策略。這樣可以通過iPAD或安卓平板配置系統。

(3)、提供和上位機(windows平臺)、iPAD或安卓平板的通信的SDK,便於用戶開發集成。

3 YFHMI圖形組態系統簡介

3.1 YFHMI技術演進圖

 

3.2 EasyHMI 

從【2.3 YFEIOServer】提到的計劃表可以看出,EasyHMI研發時間始於2006年9月,大概歷時一個半月,初步成型。

EasyHMI相關的博文共有4篇,羅列如下:

(1)、【2006年11月19日】嵌入式EasyHMI V0.1版終於推出

http://blog.csdn.net/yefanqiu/article/details/1396827

(2)、【2006年11月29日】用EasyHMI做的工程示例一覽

http://blog.csdn.net/yefanqiu/article/details/1419479

(3)、【2007年01月07日】用拖拉實現設備驅動配置

http://blog.csdn.net/yefanqiu/article/details/1476573

(4)、【2007年05月28日】LED影像系統

 http://blog.csdn.net/yefanqiu/article/details/1627782

由於WinCE不支持二級制序列化(會導致嵌入式組態軟件啓動過程較慢,大概從開機到畫面出現30s左右)和YFEIOServer支持的設備驅動相對較少,所以EasyHMI的應用並不廣泛,後續和亞控組態王進行了合作,公司的觸摸屏上運行了一段時間的嵌入式組態王系統。

不過EasyHMI這套組態框架應用還是比較廣泛的,LED影像系統就是在這個基礎上完成的。當然YFHMI上位機組態部分也是充分利用了這套框架。

3.3 YFHMI 

從界面上看,YFHMI和EasyHMI差別不大,但是其框架體系結構已經大幅度調整,圖元及屬性配置已經合二爲一,並且可以實現圖元庫的動態加載,使用戶二次開發圖元成爲可能。

圖元庫還支持加密,可以保護用戶的知識產權。

另外和WinCE平臺下的嵌入式組態不同,YFHMI支持二進制序列化,並且是智能序列化,可以有選擇,有改變的序列化數據,大大減少了嵌入式反序列化的時間,提升了系統的效率。

3.3.1 YFHMI和傳統組態軟件比較

(1)、傳統組態軟件圖元和組態軟件框架本身結合緊密,很難分割。一般也不提供二次開發接口。而YFHMI的框架結構和圖元完全分開,用戶完全可以替換系統自帶的圖元,自行根據行業需求做一套有自己特色的組態軟件。YFHMI的圖元開發接口非常簡單,採用C#進行開發,只要繼承相應基類,就可以相對容易的開發出符合要求的圖元。

(2)、策略程序完全可以操控任何一個圖元,甚至也可以用編程的方式動態生成和配置各類圖元,結合策略的擴展配置面板,可以做出非常有個性化的組態系統。這一點傳統組態軟件是很難做到的。

(3)、YFHMI運行時非常小巧,四個核心圖元庫加起來才61K,支撐圖元繪製的MiniGUI算上中文字庫才276K,而圖形解析引擎(也就是YFIOs的策略實現的)也僅僅2.07K。實際測試在STM32F103 72M主頻的平臺,運行組態的畫面都比較流暢。

3.3.2 YFHMI系統架構

    

    從架構圖可以看出YFHMI完全基於YFIOs平臺構建,YFHMIEngine圖元引擎就是YFIOs平臺上一個標準的策略,策略的執行模式是System_Loop,其它圖元策略的執行模式一律配置爲None,由YFHMIEngine圖元引擎策略統一調配。這樣做的目的就是YFHMIEngine圖元引擎策略在調用其它圖元策略的時候,可以向其它策略函數中傳遞整個圖元類的信息。這樣在圖元策略中就可以直接訪問各個圖元了。

當然如果策略不訪問圖元,也可以通過YFIOsManager直接配置加載普通的策略。 

3.3.3 YFHMI操作演示視頻 

視頻鏈接:http://v.youku.com/v_show/id_XNDg2MjMxODI4.html 

3.3.4 YFHMI設備運行視頻 

視頻鏈接:http://v.youku.com/v_show/id_XNDg2MjM4MTQw.html

3.3.5 YFHMI技術白皮書

暫緩發佈。

3.3.6 YFHMI未來發展方向

(1)、利用YFHMI框架和YFWinForm庫,開發一套基於.NET Micro Framework平臺的所見即所得的界面開發環境。

(2)、徹底的框架平臺化,和具體業務邏輯不在相關。

4 YFIOs/YFHMI免費試用

從即日起YFIOs和YFHMI將開展爲期半年的免費試用活動,符合申請條件的用戶,將依次獲取YFIOs和YFHMI的試用機會。

申請表下載:http://sky-walker.com.cn/MFRelease/document/yfios_yfhmi_application.doc

 ----------------------------------------------------------------------------------

MF簡介:http://blog.csdn.net/yefanqiu/article/details/5711770

MF資料:http://www.sky-walker.com.cn/News.asp?Id=25

技術論壇: http://www.yfiot.net

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章