国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D的電磁軌道仿真平臺監(jiān)控系統(tǒng)*

2017-05-02 11:58:16龐海亮
上海電氣技術(shù) 2017年1期
關(guān)鍵詞:輸入輸出腳本組態(tài)

龐海亮

上海電氣集團股份有限公司 中央研究院 上海 200070

在工業(yè)控制領(lǐng)域中,組態(tài)軟件作為開發(fā)綜合監(jiān)控系統(tǒng)常用的平臺應(yīng)用非常廣泛,常見的組態(tài)軟件包括西門子WinCC、施耐德Intouch、北京亞控KingView和上海電氣NetControl等。不同品牌的組態(tài)軟件雖然在具體開發(fā)使用方面有所不同,但在總體功能框架方面都非常類似,同時也都存在一個問題: 由于對三維畫面支持不佳,因此不能實現(xiàn)設(shè)備地理信息系統(tǒng)(GIS)監(jiān)控、設(shè)備自動巡檢、設(shè)備仿真運行等功能[1]。

近幾年,隨著計算機硬件及軟件技術(shù)不斷進步,虛擬仿真技術(shù)不斷被應(yīng)用于各行各業(yè)。Unity3D作為一款性能強大的跨平臺開發(fā)軟件,應(yīng)用也越來越廣泛。采用Unity3D軟件開發(fā)電磁軌道交通仿真平臺三維綜合監(jiān)控系統(tǒng),通過改變?nèi)S監(jiān)控系統(tǒng)中人物模型的視角,可以實現(xiàn)對三維場景中的設(shè)備進行巡檢等功能[2],同時三維監(jiān)控系統(tǒng)能夠?qū)⒎抡嫫脚_上的設(shè)備及設(shè)備狀態(tài)信息以純數(shù)字化模型進行展示,以提供更直觀的監(jiān)控效果。

1 系統(tǒng)概述

1.1 電磁軌道交通仿真平臺

電磁軌道交通是以地面鋪設(shè)的磁釘作為車輛行駛導(dǎo)軌的一種無人駕駛交通模式,目前這一交通模式被應(yīng)用于公共交通領(lǐng)域,具有道路改造成本低、建設(shè)周期短、設(shè)備維護成本低等多種優(yōu)勢。

電磁軌道交通模擬仿真平臺是按電磁軌道交通原理制作的一個沙盤,具備與實際電磁軌道交通相同的功能,同時配備若干對外數(shù)據(jù)接口,可以實現(xiàn)與外部設(shè)備的互聯(lián)及數(shù)據(jù)交互。電磁軌道交通仿真平臺如圖1所示,對外提供的數(shù)據(jù)種類見表1。

表1 電磁軌道交通仿真平臺對外數(shù)據(jù)接口

圖1 電磁軌道交通仿真平臺

1.2 Unity3D

Unity3D是一款跨平臺圖形化三維軟件,能夠提供渲染、物理模擬、音樂音效、腳本及場景管理等基本功能,具有可視化編輯開發(fā)環(huán)境,支持包括C#、JavaScript在內(nèi)的腳本語言,默認(rèn)的腳本編輯器為Monodevelop,也可使用Visual Studio作為腳本編輯器??蓪⑼ㄟ^3Dmax、Maya建立的模型導(dǎo)入Unity3D中進行相應(yīng)的操作,通過編寫對應(yīng)的腳本可以實現(xiàn)模型的各種動態(tài)模擬效果[3]。

1.3 NetControl

NetControl是上海電氣推出的一款工業(yè)組態(tài)軟件,目前已在電力系統(tǒng)、軌道交通、泵站系統(tǒng)中應(yīng)用,具備監(jiān)控系統(tǒng)畫面組態(tài)、腳本控制、數(shù)據(jù)記錄存儲、控件二次開發(fā)等多種功能。通過NetControl與仿真平臺互聯(lián),可以進行數(shù)據(jù)交互操作,并可將數(shù)據(jù)實時更新至SQL Server數(shù)據(jù)庫。

1.4 系統(tǒng)整體框架

整個系統(tǒng)包括仿真平臺、NetControl監(jiān)控系統(tǒng)、SQL Server數(shù)據(jù)庫、Unity3D工程。整體框架分為四層,仿真平臺作為被控對象提供數(shù)據(jù)源,NetControl監(jiān)控系統(tǒng)作為二維監(jiān)控系統(tǒng)與仿真平臺互聯(lián),SQL Server數(shù)據(jù)庫負(fù)責(zé)存儲NetControl監(jiān)控系統(tǒng)中記錄的數(shù)據(jù),Unity3D工程通過連接SQL Server數(shù)據(jù)庫取得數(shù)據(jù)并通過腳本實現(xiàn)相應(yīng)的動畫效果。系統(tǒng)整體框架如圖2所示。

圖2 系統(tǒng)整體框架

2 NetControl監(jiān)控系統(tǒng)的實現(xiàn)

NetControl中集成了大量的預(yù)制圖標(biāo)、控件等模板,可直接用于監(jiān)控畫面組態(tài),并通過綁定變量或編寫腳本進行監(jiān)控畫面的顯示與控制。同時,NetControl中還集成了大量通信驅(qū)動程序,可以與多種控制器進行設(shè)備互聯(lián)。NetControl監(jiān)控系統(tǒng)的實現(xiàn)主要分為以下幾個步驟。

2.1 建立設(shè)備連接

系統(tǒng)中,仿真平臺由其它廠家提供,支持Modbus通信協(xié)議。在NetControl中建立Modbus類型輸入與輸出設(shè)備連接,并進行相應(yīng)的參數(shù)配置,將仿真平臺控制器掛載在NetControl建立的輸入輸出連接中,作為服務(wù)器端,NetControl監(jiān)控系統(tǒng)則作為客戶端,如圖3所示。

圖3 設(shè)備連接示意圖

2.2 建立輸入輸出變量

在建立設(shè)備輸入輸出連接后,在連接中建立對應(yīng)的輸入輸出變量,用于NetControl與仿真平臺控制器進行數(shù)據(jù)交換。圖4所示為截取的部分輸入輸出變量。

圖4 部分輸入輸出變量截圖

2.3 監(jiān)控畫面組態(tài)

系統(tǒng)中的監(jiān)控畫面主要包括車輛運行狀態(tài)畫面、車站設(shè)備畫面和交通燈狀態(tài)畫面,通過利用NetControl內(nèi)置的多種控件及圖標(biāo)完成所有監(jiān)控畫面的組態(tài),并將在設(shè)備連接中建立的輸入輸出變量與對應(yīng)的控件進行綁定。由于在實現(xiàn)畫面動態(tài)功能方面進行簡單的變量綁定是無法實現(xiàn)的,因此可以使用NetControl集成的用戶程序功能開發(fā)對應(yīng)的控制腳本。

NetControl的用戶程序功能支持C#語言,并在用戶程序功能中集成了多種類和方法,可以直接調(diào)用,并且可以編寫自定義類及方法,還可以添加外部程序集,使NetControl具備功能強大的自定義開發(fā)。圖5所示為截取的屏蔽門監(jiān)控畫面。

圖5 屏蔽門監(jiān)控畫面截圖

2.4 數(shù)據(jù)存儲至SQL Server數(shù)據(jù)庫

為了實現(xiàn)Unity3D與仿真平臺進行數(shù)據(jù)交互,系統(tǒng)采用NetControl將仿真平臺數(shù)據(jù)存儲至SQL Server數(shù)據(jù)庫的方法,然后Unity3D通過連接SQL Server數(shù)據(jù)庫獲取仿真平臺的數(shù)據(jù),并進行相應(yīng)的處理。

在NetControl中具備外部訪問功能,可以實現(xiàn)Unity3D訪問NetControl[4-5]。事實上,NetControl的外部訪問功能就是將需要記錄數(shù)據(jù)的變量值存儲至SQL Server數(shù)據(jù)庫并實時更新,外部設(shè)備通過SQL Server提供的ADO.Net數(shù)據(jù)庫接口對數(shù)據(jù)庫進行連接、訪問,進而間接實現(xiàn)對NetControl的訪問。

在實現(xiàn)數(shù)據(jù)存儲至數(shù)據(jù)庫之前,需要在SQL Server中建立相應(yīng)的數(shù)據(jù)庫及數(shù)據(jù)表,且數(shù)據(jù)表中需要具備一個主鍵,其它列也需要和NetControl中的變量一一對應(yīng)。

實現(xiàn)NetControl外部訪問的具體步驟如下。

(1) 在NetControl的外部訪問功能中新建配置項,并選擇數(shù)據(jù)庫類型,如圖6所示。

圖6 新建外部訪問配置項截圖

(2) 配置數(shù)據(jù)庫、數(shù)據(jù)表的來源,并為數(shù)據(jù)表中對應(yīng)的項綁定NetControl中的輸入輸出變量,完成輸入輸出變量實時存儲至數(shù)據(jù)庫對應(yīng)的表中,如圖7、圖8所示。

圖7 選擇數(shù)據(jù)庫截圖

圖8 數(shù)據(jù)表與輸入輸出變量綁定截圖

3 Unity3D工程的實現(xiàn)

模型導(dǎo)入Unity3D軟件后,需要通過編寫腳本實現(xiàn)動畫控制。

導(dǎo)入至Unity3D軟件中的主要模型包括車輛、車站(含閘機、屏蔽門、信息顯示屏等)、交通燈等,這些模型的數(shù)據(jù)都來自于通過NetControl外部訪問功能保存至數(shù)據(jù)庫中的數(shù)值。實現(xiàn)Unity3D動畫控制的步驟如下。

3.1 連接SQL Server數(shù)據(jù)庫,獲取數(shù)據(jù)

在Unity3D中可以添加外部程序集、動態(tài)鏈接庫,同時Unity3D對.Net Framework框架具有良好的支持。Unity3D中采用ADO.Net數(shù)據(jù)庫接口對SQL Server進行連接、訪問[6-7]。

采用ADO.Net技術(shù)需要添加幾種動態(tài)鏈接庫,包含System.Data.dll、System.Data.SqlClient、I18N.Dll、I18N.CJK.Dll、I18N.West.Dll等[8-9],外部動態(tài)鏈接庫文件需要導(dǎo)入至Unity3D資源目錄Assets中的Plugins目錄下,此目錄下的動態(tài)鏈接庫會自動添加至腳本程序的引用中,從而在編寫腳本程序時可以調(diào)用相應(yīng)的方法。

完成以上操作后,可以進行腳本程序代碼的編寫。在Unity3D中對數(shù)據(jù)庫進行操作的主要代碼包括以下幾個部分。

(1) 獲取SQL Server數(shù)據(jù)庫主機的網(wǎng)際協(xié)議(IP)地址,如圖9所示。

圖9 獲取數(shù)據(jù)庫主機IP地址代碼

(2) 根據(jù)連接字符串連接SQL Server數(shù)據(jù)庫,對數(shù)據(jù)庫的連接操作放在Start方法中進行。這一方法在Unity3D運行時被調(diào)用,并且只調(diào)用一次,如圖10所示。

圖10 Start方法代碼

(3) 應(yīng)用SQL語句對數(shù)據(jù)庫進行查詢,并將對數(shù)據(jù)庫的查詢操作放在FixedUpdate方法中。這一方法在Unity3D運行過程中周期性調(diào)用,執(zhí)行周期可進行設(shè)置,從而實現(xiàn)實時獲取數(shù)據(jù)庫中的數(shù)據(jù)[10],如圖11所示。獲取數(shù)據(jù)后,按不同的數(shù)據(jù)信號類型放置在對應(yīng)的數(shù)組中。

圖11 FixedUpdate方法代碼

3.2 動畫效果控制

根據(jù)從數(shù)據(jù)庫獲得的數(shù)據(jù)對Unity3D中的物體進行控制,實現(xiàn)動畫效果。通過編寫腳本程序?qū)崿F(xiàn)車輛行駛、車門開關(guān)、閘機啟閉、屏蔽門開合、交通燈變化等,由于篇幅有限,此處不再列出詳細(xì)的實現(xiàn)代碼。實際效果如圖12所示。

圖12 電磁軌道交通虛擬效果

4 結(jié)束語

采用Unity3D和NetControl組態(tài)軟件實現(xiàn)了電磁軌道交通仿真平臺綜合監(jiān)控系統(tǒng)的開發(fā),系統(tǒng)不僅具有數(shù)據(jù)信息與狀態(tài)顯示功能,而且可以進行三維動畫監(jiān)控,對設(shè)備狀態(tài)的監(jiān)控更逼真、直觀[11]。筆者所介紹模式可應(yīng)用于多種監(jiān)控系統(tǒng)中,如地下軌道交通站點綜合監(jiān)控、工廠綜合監(jiān)控等。

另一方面,由于NetControl的外部訪問功能向數(shù)據(jù)庫更新數(shù)據(jù)的最短周期為1s,在一定程度上會造成數(shù)據(jù)更新滯后,因此在未來改進中可采用在Unity3D中編寫腳本程序的方法直接與外部設(shè)備進行輸入輸出通信[12],從而使數(shù)據(jù)更新的實時性更強。

[1] 楊程,劉濤,陳念年,等.3D數(shù)字工廠監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].化工自動化及儀表,2012,39(1): 108-111.

[2] 倪萌.基于Unity3D的汽車發(fā)動機虛擬裝配訓(xùn)練考評系統(tǒng)的設(shè)計與實現(xiàn)[D].北京: 北京工業(yè)大學(xué),2014.

[3] 李益.基于Unity3d的磨礦車間虛擬仿真系統(tǒng)[D].大連: 大連理工大學(xué),2014.

[4] 張勇旭,李力雄,康盛.通用組態(tài)軟件驅(qū)動程序的設(shè)計與開發(fā)[J].工業(yè)控制計算機.2009,22(9): 1-3.

[5] 楊恒亮,朱浩翔,魯?shù)?一種基于3D視覺補償?shù)臋C器人整車涂膠應(yīng)用[J].裝備機械,2010(1): 19-21.

[6] 佘慎思,楊文斌,李春.風(fēng)力發(fā)電場SCADA系統(tǒng)的設(shè)計[J].上海電氣技術(shù),2010,3(3): 39-42.

[7] 李俊軍.基于Unity3D的室內(nèi)建筑三維建模與交互系統(tǒng)實現(xiàn)[D].徐州: 中國礦業(yè)大學(xué),2014.

[8] 李文赫,陸劍峰,劉艷嬌.基于Unity3D的三維遠(yuǎn)程監(jiān)視系統(tǒng)中的通信方法研究和實現(xiàn)[J].制造業(yè)自動化,2015,37(24): 108-109,120.

[9] 張利利,李仁義,李曉京,等.Unity3D與數(shù)據(jù)庫通信方法的研究[J].計算機技術(shù)與發(fā)展,2014,24(3): 229-232.

[10] 曾林森.基于Unity3D的跨平臺虛擬駕駛視景仿真研究[D].長沙: 中南大學(xué),2013.

[11] 弓建華.虛擬3D變電站監(jiān)視系統(tǒng)的研究[D].保定: 華北電力大學(xué),2014.

[12] 李金永,吳寅生,鄭建峰,等.基于Unity3D的油田作業(yè)仿真考核系統(tǒng)移動設(shè)備客戶端的設(shè)計與實現(xiàn)[J].系統(tǒng)仿真技術(shù),2016,12(1): 71-77.

猜你喜歡
輸入輸出腳本組態(tài)
酒駕
基于PLC及組態(tài)技術(shù)的恒溫控制系統(tǒng)開發(fā)探討
安奇奇與小cool 龍(第二回)
Camtasia Studio高清視頻輸入輸出原理及方法
鐵路信號系統(tǒng)安全輸入輸出平臺
數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
電子測試(2018年14期)2018-09-26 06:04:24
輸入輸出理論在大學(xué)英語聽說課堂中的教學(xué)探索
快樂假期
基于PLC和組態(tài)的智能電動擰緊系統(tǒng)
輸入輸出視角下高職英語教學(xué)研究
桃园县| 仙桃市| 东台市| 龙山县| 昭苏县| 无棣县| 龙口市| 临海市| 岚皋县| 韶山市| 丽水市| 县级市| 唐河县| 尖扎县| 大庆市| 汤阴县| 屏边| 林州市| 松桃| 定兴县| 大同县| 北安市| 昌乐县| 潜江市| 天门市| 虞城县| 苏尼特右旗| 水城县| 南昌县| 浑源县| 乌什县| 垫江县| 修武县| 五大连池市| 抚顺市| 铜川市| 平舆县| 古蔺县| 奇台县| 阜康市| 阜新市|