天天看點

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

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

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

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

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

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

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

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

檢視了我在2005年1月份寫的《研發部總結及計劃(0501)》,其中有這麼一項(如下圖),可見組态軟體背景程式的研發應該始于2005年1月份。

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

(1)、【2005年03月11日】組态軟體開發(僅限背景部分)

<a href="http://blog.csdn.net/yefanqiu/article/details/317172">http://blog.csdn.net/yefanqiu/article/details/317172</a>

(2)、【2005年10月05日】YFIOServer 組态裝置IO服務系統

<a href="http://blog.csdn.net/yefanqiu/article/details/495547">http://blog.csdn.net/yefanqiu/article/details/495547</a>

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

<a href="http://blog.csdn.net/yefanqiu/article/details/705356">http://blog.csdn.net/yefanqiu/article/details/705356</a>

<a href="http://blog.csdn.net/yefanqiu/article/details/751451">http://blog.csdn.net/yefanqiu/article/details/751451</a>

<a href="http://blog.csdn.net/yefanqiu/article/details/757327">http://blog.csdn.net/yefanqiu/article/details/757327</a>

<a href="http://blog.csdn.net/yefanqiu/article/details/1074382">http://blog.csdn.net/yefanqiu/article/details/1074382</a>

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

<a href="http://blog.csdn.net/yefanqiu/article/details/1476573">http://blog.csdn.net/yefanqiu/article/details/1476573</a>

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

<a href="http://blog.csdn.net/yefanqiu/article/details/1855762">http://blog.csdn.net/yefanqiu/article/details/1855762</a>

<a href="http://blog.csdn.net/yefanqiu/article/details/2319050">http://blog.csdn.net/yefanqiu/article/details/2319050</a>

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

YFEIOServer是EasyHMI嵌入式組态軟體中的一部分,上位機模拟器部分還是采用的YFIOServer(後續采用C#編寫的代碼替代了VB編寫的界面程式),隻是在WinCE平台才會運作YFEIOServer,該程式用EVC編寫,界面相對簡單僅能進行簡單的資料編輯和檢視。

檢視2006年9月份的工作總結(上圖),YFEIOServer的研發時間始于2006年9月,也是這個時候,确定了嵌入式裝置IO變量的屬性由原來windows平台上的32個變為目前的9個,TinyIOs和YFIOs把這個定義完全的繼承下來。

YFIOs系統和此前研發的YFIOServer及YFEIOServer(當然還包括傳統的組态軟體的資料IOServer部分)有根本性的不同,不僅僅是因為采用了新的系統平台(.NET Micro Framework),采用C#進行驅動開發,而是從架構本身對驅動還有原腳本系統進行了大大的更新。

      OSGi系統架構圖。

                      YFIOs的架構圖(基于.NETMicro Framework平台)

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

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

另外OSGi僅僅是架構,隻是提供了一些子產品加載運作機制,并沒有針對應用場景進行規劃。是以要應用OSGi建構系統,還需要自行做大量的工作。而YFIOs基于組态的思想,提供了YFIODB和YFIOBC庫,驅動和政策借助這些完成資訊互動,并且驅動模型提供了各種鍊路通道和采集接口,使用者開發具體驅動将會變得異常的簡潔。

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

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

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

新編寫驅動的加載也比較簡單,直接拷貝到指定的目錄即可,不像一些傳統組态軟體需要配置安裝,并且YFIOs的驅動程式使用者可以自行加密,可以授權指定的使用者使用其驅動程式,不僅可以保護自己的知識産權,還可以基于YFIOs平台擷取相應收益。

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

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

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

(5)、YFIOs系統支援遠端更新和遠端調試。支援三個層面更新,YFIOs運作時更新、YFIOs驅動和政策更新和YFIOs配置更新(如果有必要TinyCLR也是可以做到遠端更新的)。

<a href="http://v.youku.com/v_show/id_XNDkxMzgyNTgw.html"></a>

下載下傳位址:

<a href="http://sky-walker.com.cn/MFRelease/document/YFIOs_WhiteBook.pdf">http://sky-walker.com.cn/MFRelease/document/YFIOs_WhiteBook.pdf</a>

(1)、跨平台支援,後續将.NET MicroFramework移植到linux或安卓平台上。

(2)、提供WebServer支援,可以通過網頁的方式,遠端配置和加載政策和驅動,也可以動态啟動和停止指定的驅動或政策。這樣可以通過iPAD或安卓平闆配置系統。

(3)、提供和上位機(windows平台)、iPAD或安卓平闆的通信的SDK,便于使用者開發內建。

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

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

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

<a href="http://blog.csdn.net/yefanqiu/article/details/1396827">http://blog.csdn.net/yefanqiu/article/details/1396827</a>

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

<a href="http://blog.csdn.net/yefanqiu/article/details/1419479">http://blog.csdn.net/yefanqiu/article/details/1419479</a>

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

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

<a href="http://blog.csdn.net/yefanqiu/article/details/1627782"> http://blog.csdn.net/yefanqiu/article/details/1627782</a>

由于WinCE不支援二級制序列化(會導緻嵌入式組态軟體啟動過程較慢,大概從開機到畫面出現30s左右)和YFEIOServer支援的裝置驅動相對較少,是以EasyHMI的應用并不廣泛,後續和亞控組态王進行了合作,公司的觸摸屏上運作了一段時間的嵌入式組态王系統。

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

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

圖元庫還支援加密,可以保護使用者的知識産權。

另外和WinCE平台下的嵌入式組态不同,YFHMI支援二進制序列化,并且是智能序列化,可以有選擇,有改變的序列化資料,大大減少了嵌入式反序列化的時間,提升了系統的效率。

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

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

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

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

<a href="http://v.youku.com/v_show/id_XNDg2MjMxODI4.html"></a>

<a href="http://v.youku.com/v_show/id_XNDg2MjM4MTQw.html"></a>

暫緩釋出。

(1)、利用YFHMI架構和YFWinForm庫,開發一套基于.NETMicro Framework平台的所見即所得的界面開發環境。

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

從即日起YFIOs和YFHMI将開展為期半年的免費試用活動,符合申請條件的使用者,将依次擷取YFIOs和YFHMI的試用機會。

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

<a href="http://weibo.com/1804832611?s=6uyXnP"></a>

繼續閱讀