• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      自動化專業(yè)全仿真實踐教學(xué)平臺建設(shè)

      2018-07-24 10:29:08岳元龍賈創(chuàng)羅雄麟徐寶昌許亞嵐
      教育教學(xué)論壇 2018年24期
      關(guān)鍵詞:自動化

      岳元龍 賈創(chuàng) 羅雄麟 徐寶昌 許亞嵐

      摘要:實踐教學(xué)環(huán)節(jié)是自動化專業(yè)本科生課程體系的重要組成部分,也是強化學(xué)生掌握專業(yè)理論、培養(yǎng)實踐創(chuàng)新能力的有效方法。目前,校內(nèi)現(xiàn)有的縮比實踐教學(xué)裝置和可操作范圍有限、甚至沒有實操環(huán)節(jié)的工廠實習(xí),使學(xué)生無法通過實踐教學(xué)環(huán)節(jié)了解實際生產(chǎn)裝置對控制系統(tǒng)和操作人員的要求。本文給出全尺度仿真實踐教學(xué)平臺的建設(shè)方法,包括基于UniSim的全尺度仿真對象搭建和基于OPC服務(wù)器的數(shù)據(jù)接口開發(fā),使學(xué)生可以通過OPC客戶端直接控制全仿真對象。

      關(guān)鍵詞:自動化;實踐教學(xué)平臺;全仿真;OPC

      中圖分類號:G642.0 文獻標(biāo)志碼:A 文章編號:1674-9324(2018)24-0149-04

      一、引言

      獨立解決被控對象的狀態(tài)參數(shù)測量、控制方案設(shè)計和控制系統(tǒng)投用是自動化專業(yè)本科生重要的培養(yǎng)目標(biāo)。所以,自動化專業(yè)課程體系中設(shè)置了與培養(yǎng)目標(biāo)相對應(yīng)的(配套的)理論教學(xué)和實踐教學(xué)。目前,教師課堂講授是理論教學(xué)的主要方式。通過系統(tǒng)的理論教學(xué),學(xué)生一般可以較好理解和掌握自動化專業(yè)的基礎(chǔ)理論。在實踐教學(xué)方面,由于不同學(xué)校依托的行業(yè)背景不同,所以實踐教學(xué)環(huán)節(jié)比較多樣化[1]。中國石油大學(xué)(北京)自動化專業(yè)的定位是“突出石油石化行業(yè)特點,強化專業(yè)技能訓(xùn)練”,本科實踐教學(xué)主要依托校內(nèi)的煉油化工領(lǐng)域典型生產(chǎn)單元的縮比仿真模型和校外的煉化企業(yè)。但是,縮比仿真模型不能完全復(fù)現(xiàn)實際的生產(chǎn)過程特性,特別是在時間尺度方面,不能進行全時間尺度的仿真與操作。受限于生產(chǎn)過程的高溫、高壓、有毒等危險因素的影響,學(xué)生在校外煉化企業(yè)開展實踐教學(xué)過程中無法進行實際操作,校外實踐效果甚微[2]。所以,目前的實踐教學(xué)條件導(dǎo)致畢業(yè)生整體呈現(xiàn)解決實際問題能力與理論基礎(chǔ)不匹配的現(xiàn)象,進而出現(xiàn)用人單位招聘不到可用技術(shù)人員和學(xué)生找不到合適工作的雙重問題[3]。為了提高自動化專業(yè)本科生的實踐教學(xué)水平,探討自動化專業(yè)全仿真實踐教學(xué)平臺建設(shè)方案。提供一個基于UniSim工業(yè)軟件開發(fā)煉油化工領(lǐng)域全尺度仿真對象及其與控制算法進行實時通訊的方法。通過該方法,學(xué)生可以編寫控制算法并通過通信接口控制全尺度仿真對象,以驗證算法的可行性。搭建仿真教學(xué)平臺的基本步驟包括:第一步,在UniSim工業(yè)軟件環(huán)境下建立全尺度動態(tài)仿真對象;第二步,采用VB軟件讀取仿真對象的物性參數(shù),特別是讀取被控變量和操作變量;第三步,開發(fā)集成了仿真對象物性參數(shù)的OPC服務(wù)器,實現(xiàn)與具有OPC客戶端功能的控制算法進行通訊。

      二、全尺度動態(tài)仿真對象的開發(fā)

      本文以原油常壓蒸餾工藝為例,在UniSim軟件平臺上通過設(shè)置流程的物性參數(shù)和時間尺度參數(shù),搭建全仿真實踐教學(xué)平臺的動態(tài)仿真對象[4],主要步驟包括選擇物性包、選擇基本組分、對原油劃分虛擬組分、安裝物流和操作單元、檢查最終結(jié)果等。工藝流程中的操作單元主要包括預(yù)閃蒸、加熱爐、混合器和常壓蒸餾塔等,產(chǎn)品包括汽油、柴油等。具體操作請參考UniSim軟件使用指南,本文不再贅述。

      三、全仿真對象物性參數(shù)的讀取

      本文以VB讀取預(yù)閃蒸操作單元的數(shù)據(jù)為例,給出全仿真對象物性參數(shù)讀取方法,為OPC服務(wù)器開發(fā)提供數(shù)據(jù)源。讀取數(shù)據(jù)的步驟為:

      第一步:建立VB開發(fā)環(huán)境與常壓蒸餾工藝模型之間的連接

      啟動UniSim程序,打開常壓蒸餾工藝主流程圖。然后,在VB的菜單“工具”下“引用”中,選中“UniSim Type Library”,引入UniSim的類庫,然后聲明自動化對象,語法格式為:

      Public unisimApp As UniSimDesign.Application

      Public unisimCases As SimulationCases

      Public unisimCase As SimulationCase

      其中,Application對象代表了UniSim程序本身。SimulationCases代表了一個正在運行的UniSim程序中的所有模型案例,SimulationCase代表了其中的一個,后者是前者中的一個子案例。聲明自動化對象后,使用如下方法連接UniSim模型:

      Set unisimApp = GetObject(,"UniSimdesign.Application")或

      Set unisimApp = CreateObject("UniSimdesign.Application","192.168.1.1")

      Set unisimCases = unisimApp.SimulationCases

      Set unisimCase = unisimCases.Item(0)

      其中,GetObject和CreateObject語句均可成功連接到UniSim模型。UniSimdesign.Application在這里指向的就是當(dāng)前環(huán)境中正在運行的常壓蒸餾工藝主流程圖。若VB程序連接的流程圖在另外一臺計算機上,可以使用CreateObject語句,括號內(nèi)逗號后的IP地址代表了局域網(wǎng)內(nèi)運行了UniSim的計算機的地址。為了方便,將unisimCases聲明為程序中所有的案例集合,若只有一個運行的模擬案例,則該案例為集合中的第一個也是唯一一個,可用“.Item(0)”來指代和引用,若還有其他的案例則可依次類推進行聲明。

      第二步:聲明預(yù)閃蒸操作單元

      下面定義和聲明模型中的對象,包括模型的流程、物流集合、操作單元以及物流,語法格式為:

      Public MainFlow As Flowsheet

      Public SubFlow As Flowsheet

      Public MainStream As Streams

      Public SubStream As Streams

      Set MainFlow = unisimCase.Flowsheet

      Set SubFlow = MainFlow.Flowsheets(0)

      Set MainStream = MainFlow.MaterialStreams

      Set SubStream = SubFlow.MaterialStreams

      本例中有兩個流程,MainFlow和SubFlow。MainFlow是主流程,定義為案例(SimulationCase)的Flowsheet,即流程;SubFlow為子流程,本例中為常壓塔的流程圖,可認為是主流程中的第一個子流程,用“.Flowsheets(0)”來聲明。主流程中的物流(MainStream)定義在主流程對象(MainFlow)中,子流程的物流(SubStream)定義在子流程對象(SubFlow)中,均用“.MaterialStreams”來聲明。在定義和聲明模型中對象的基礎(chǔ)上,下面定義預(yù)閃蒸操作單元。

      Dim PreFlash As Object

      Set PreFlash = MainFlow.Operations.Item(0)

      預(yù)閃蒸(PreFlash)為主流程的Operations的第一個單元,用“.Item(0)”來聲明,類似的可以依次對第二個、第三個等單元進行對象聲明。

      第三步:讀取預(yù)閃蒸操作單元的數(shù)據(jù)

      基于第一步和第二步就可以讀取對象的數(shù)據(jù)了。由于每個對象所包含的屬性各不相同,有的包含有壓力、溫度數(shù)據(jù),有的則是流量、壓降數(shù)據(jù),所以在數(shù)據(jù)讀取的過程中需要進行區(qū)分,不同對象的不同參數(shù)值需要對應(yīng)定義不同的變量,但是每個數(shù)據(jù)的讀取方法卻都是相同的。讀取預(yù)閃蒸操作單元的數(shù)據(jù)方法如下:

      Text1.Text = PreFlash.VesselTemperature

      Text2.Text = PreFlash.VesselPressure

      Text3.Text = PreFlash.LiquidPercentLevelValue

      讀取數(shù)據(jù)時在對象后用“.”加上所需要的屬性名即可,如上述的溫度(VesselTemperature)、壓力(VesselPressure)等。其他的操作單元和物流均與此相同,只是對應(yīng)的屬性不一樣而已。

      四、OPC服務(wù)器的開發(fā)

      OPC服務(wù)器開發(fā)包括兩部分內(nèi)容,分別是開發(fā)與預(yù)閃蒸操作單元數(shù)據(jù)連接的接口和開發(fā)OPC服務(wù)器標(biāo)準(zhǔn)接口。本文利用開發(fā)工具WtOPCServer.dll開發(fā)OPC服務(wù)器[5]。WtOPCServer.dll中封裝了COM和OPC規(guī)范等細節(jié)信息,只需要開發(fā)人員熟練地調(diào)用接口函數(shù)便可以完成OPC接口的開發(fā)。下面給出開發(fā)OPC服務(wù)器的步驟。

      第一步:聲明函數(shù)

      聲明開發(fā)工具中用于開發(fā)OPC服務(wù)器的函數(shù),只有聲明成功后才可以在VB中使用這些函數(shù)。

      (1)服務(wù)器初始化函數(shù)聲明

      Declare Function InitWTOPCsvr Lib "WtOPCSvr" Alias "_InitWTOPCsvr@8" (ByRef CLSID_Svr As Byte,ByVal ServerRate As Long) As Long

      實現(xiàn)DCOM的初始化并在計算機中創(chuàng)建OPC服務(wù)器對象。其中參數(shù)CLSID_Svr為OPC服務(wù)器的類標(biāo)識(CLSID),用于計算機和OPC客戶端識別和連接服務(wù)器;參數(shù)ServerRate定義服務(wù)器的數(shù)據(jù)刷新速率,單位為毫秒。若該函數(shù)調(diào)用成功返回值為TRUE,否則為FALSE。

      (2)服務(wù)器注冊函數(shù)聲明

      Declare Function UpdateRegistry Lib "WtOPCSvr" Alias "_UpdateRegistry@16" (ByRef CLSID_Svr As Byte,ByRef Name As Byte,ByRef Descr As Byte,ByRef ExePath As Byte) As Long

      (3)服務(wù)器注銷函數(shù)聲明

      Declare Function UnregisterServer Lib "WtOPCSvr" Alias "_UnregisterServer@8" (ByRef CLSID_Svr As Byte,ByRef Name As Byte) As Long。

      (4)標(biāo)簽創(chuàng)建函數(shù)聲明

      Declare Function CreateTag Lib "WtOPCSvr" Alias "_CreateTag@28" (ByRef Name As Byte,ByVal Value As Variant,ByVal InitialQuality As Integer,ByVal IsWritable As Long) As Long

      作用是建立OPC服務(wù)器的過程標(biāo)簽,Name為字符串,表明了所建標(biāo)簽的名字,為服務(wù)器可接受的文本字符串;參數(shù)Value定義了標(biāo)簽的初始值,為Variant類型;參數(shù)InitialQuality定義標(biāo)簽的OPC品質(zhì)屬性;參數(shù)IsWritable定義標(biāo)簽是否可寫,可寫為TRUE,否則為FALSE。標(biāo)簽創(chuàng)建成功會返回一個長整型值,為創(chuàng)建標(biāo)簽的句柄值,是標(biāo)簽的唯一識別值,在對標(biāo)簽進行各種操作時起識別作用。

      (4)標(biāo)簽刪除函數(shù)聲明

      Declare Function RemoveTag Lib "WtOPCSvr" Alias "_RemoveTag@4" (ByVal TagHandle As Long) As Long:。作用就是在服務(wù)器結(jié)束進程時將所創(chuàng)建的過程標(biāo)簽刪除,TagHandle為創(chuàng)建標(biāo)簽時所生成的句柄。

      (5)標(biāo)簽刷新函數(shù)聲明

      Declare Function UpdateTag Lib "WtOPCSvr" Alias "_UpdateTag@24" (ByVal TagHandle As Long,ByVal Value As Variant,ByVal Quality As Integer) As Long

      其作用是刷新過程標(biāo)簽的數(shù)據(jù)值。參數(shù)TagHandle是句柄,由標(biāo)簽創(chuàng)建函數(shù)在創(chuàng)建標(biāo)簽時得到;參數(shù)Value為標(biāo)簽要更新的值;參數(shù)Quality為標(biāo)簽屬性條件。若函數(shù)調(diào)用成功返回值在為TRUE,否則返回FALSE。

      (6)調(diào)用寫函數(shù)的函數(shù)聲明

      Declare Function EnableWriteNotification Lib "WtOPCSvr" Alias "_EnableWriteNotification@8" (ByVal Callback As Long,ByVal ConvertToNative As Long) As Long

      當(dāng)用戶對服務(wù)器中標(biāo)簽的數(shù)據(jù)進行寫操作時會觸發(fā)該函數(shù),從而調(diào)用相應(yīng)的寫函數(shù)完成該操作。

      第二步:注冊服務(wù)器

      利用第一步聲明的UpdateRegistry在計算機中注冊O(shè)PC服務(wù)器,以便OPC客戶端與其進行連接。

      UpdateRegistry GUID(0),SerName(0),Desc(0),ExePath(0)

      注意,UpdateRegistry函數(shù)的輸入值的類型為Byte,故在使用前要把各數(shù)據(jù)轉(zhuǎn)換為Byte類型。

      GUID為全局唯一標(biāo)示符,在Windows系統(tǒng)中稱為Class ID,即CLSID,是系統(tǒng)對不同應(yīng)用程序分配的唯一的表示該程序的ID代碼,通常為一個128位的隨機數(shù),在創(chuàng)建OPC服務(wù)器時需要人為定義一個CLSID,可以是任意的。在注冊成功后系統(tǒng)會將相關(guān)信息注冊至注冊表中。SerNam為創(chuàng)建的服務(wù)器的名字,Desc為服務(wù)器描述,ExePath為服務(wù)器的路徑。

      第三步:初始化服務(wù)器

      創(chuàng)建了服務(wù)器后還需要進行初始化才可以進行數(shù)據(jù)通信,初始化的主要作用是完成有關(guān)COM/DCOM的初始化,并且創(chuàng)建OPC服務(wù)器接口對象,使OPC客戶可順利連接到服務(wù)器。

      InitWTOPCsvr GUID(0),1000

      初始化通過GUID來識別服務(wù)器,這里設(shè)置其數(shù)據(jù)刷新速率為1000毫秒,也可根據(jù)具體的需要進行設(shè)置。

      第四步:創(chuàng)建標(biāo)簽

      創(chuàng)建標(biāo)簽用到上文聲明的標(biāo)簽創(chuàng)建函數(shù),語法格式為:

      TagHandle(0) = CreateTag(TagName(0),Value,192,True)

      TagHandle為當(dāng)前創(chuàng)建的標(biāo)簽的句柄,具有唯一性。TagName為標(biāo)簽的名字,由用戶自行定義,需要注意的是這里TagName的數(shù)據(jù)類型為Byte。若標(biāo)簽名定義為“##.%%”則函數(shù)會自動創(chuàng)建一個組,組名為“##”,組內(nèi)包含了一個標(biāo)簽,標(biāo)簽名為“%%”,若再創(chuàng)建一個標(biāo)簽為“##.$$”,則該標(biāo)簽就會和前一個分在同一組下,標(biāo)簽名為“$$”,這一性質(zhì)為創(chuàng)建具有相關(guān)性的一組標(biāo)簽提供了可行性,在UniSim模型中有許多標(biāo)簽的數(shù)據(jù)來自同一個對象,利用該方法可以很好地將不同對象的標(biāo)簽區(qū)別開,分組定義。Value為標(biāo)簽的數(shù)據(jù)值,192表示當(dāng)前標(biāo)簽屬性為GOOD,True表示標(biāo)簽可寫。

      通過該語句就可以在服務(wù)器中創(chuàng)建標(biāo)簽,對于一個UniSim模型,有大量的數(shù)據(jù)需要定義,本文在標(biāo)簽的創(chuàng)建中用了以下方法,仍然以主流程的預(yù)閃蒸為例,創(chuàng)建其第一個屬性標(biāo)簽。

      Dim x As String

      Dim y As Variant

      Dim UniObj As Object

      Set UniObj = MainFlow.Operations.Item(0)

      x = "Main Flow." & UniObj & "." & "Vessel Temperature"

      y = UniObj.VesselTemperature

      TagHandle(0) = CreateTag(TagName(0),y,192,True)

      程序定義了一個臨時對象UniObj,用來引用UniSim中的不同設(shè)備單元。x為字符串變量,通過上面的定義方法可以省去對每個對象一一定義的麻煩。

      第五步:刷新標(biāo)簽

      標(biāo)簽創(chuàng)建完成后需要對各個標(biāo)簽進行刷新,保持數(shù)據(jù)值的實時更新,通常在定時器中調(diào)用標(biāo)簽刷新函數(shù)來完成。

      UpdateTag TagHandle(0),Value,192

      TagHandle為標(biāo)簽句柄,作用是為了識別標(biāo)簽;Value為標(biāo)簽數(shù)據(jù)值的刷新值;192依然是表明當(dāng)前標(biāo)簽的屬性為GOOD。與創(chuàng)建標(biāo)簽時相同,刷新UniSim中的標(biāo)簽數(shù)量巨大,本文使用了如下的方式,通過定義一個臨時對象變量來完成賦值。

      Set UniObj = MainFlow.Operations.Item(0)

      y = UniObj.VesselTemperature

      UpdateTag TagHandle(0),y,192

      第六步:注銷服務(wù)器

      利用服務(wù)器進行通信完成后,需要關(guān)閉和注銷服務(wù)器。首先要刪除服務(wù)器創(chuàng)建的所有標(biāo)簽,使用RemoveTag函數(shù),其中的TagHandle為標(biāo)簽句柄,對于有多個標(biāo)簽的服務(wù)器來說可以使用循環(huán)語句刪除標(biāo)簽。注銷使用UnregisterServer函數(shù),GUID和SerName分別為服務(wù)器標(biāo)示和名字。語法格式為:

      RemoveTag TagHandle(0)

      UnregisterServer GUID(0),SerName(0)

      第七步:OPC服務(wù)器界面設(shè)計

      服務(wù)器包括六個按鈕,在每個按鈕中通過調(diào)用函數(shù)實現(xiàn)相應(yīng)的功能,包括注冊服務(wù)器、初始化服務(wù)器、連接UniSim、創(chuàng)建標(biāo)簽、刷新標(biāo)簽、注銷服務(wù)器。

      五、實驗結(jié)果

      本文設(shè)計的OPC服務(wù)器將UniSim模型的仿真數(shù)據(jù)制作為符合OPC通信標(biāo)準(zhǔn)的標(biāo)簽,可由客戶端讀取。為了測試服務(wù)器運行情況,使用Matrikon OPC Explorer讀取服務(wù)器創(chuàng)建的數(shù)據(jù)標(biāo)簽,讀取OPC服務(wù)器數(shù)據(jù)的結(jié)果。

      六、結(jié)論

      針對自動化專業(yè)本科生實踐教學(xué)環(huán)節(jié)中現(xiàn)場實習(xí)缺少實操訓(xùn)練和實驗室實驗對象與工程設(shè)備不匹配的問題,探討了全尺度仿真實踐教學(xué)平臺的建設(shè)方法?;谠摲椒ǎ瑢W(xué)生可以根據(jù)實踐環(huán)節(jié)的具體需求,依托UniSim軟件搭建與工業(yè)實際生產(chǎn)裝置具有相同參數(shù)的仿真模型,用于產(chǎn)生全時間尺度的工藝數(shù)據(jù)。利用開發(fā)工具WtOPCServer.dll編寫OPC服務(wù)器程序,將仿真模型生成的工藝數(shù)據(jù)封裝為符合OPC通信標(biāo)準(zhǔn)的標(biāo)簽數(shù)據(jù)。學(xué)生設(shè)計的帶有OPC客戶端的監(jiān)控系統(tǒng)通過與OPC服務(wù)器通信,實現(xiàn)對生產(chǎn)裝置仿真模型的控制。本文給出實踐教學(xué)平臺建設(shè)方法極大地豐富了實踐教學(xué)內(nèi)容,提高了學(xué)生操作實際生產(chǎn)裝置的能力。

      參考文獻:

      [1]李清泉.強化高校科技優(yōu)勢轉(zhuǎn)化 提升高素質(zhì)人才培養(yǎng)質(zhì)量[J].中國高教研究,2011,(12):16-18.

      [2]聶建英,羅雄麟,左信.自動化專業(yè)實踐教學(xué)基地建設(shè)研究[J].中國電力教育,2012,(15):80-82.

      [3]張宏偉,張英琦,王新環(huán).自動化專業(yè)校內(nèi)外實踐基地建設(shè)與實踐教學(xué)改革[J].實驗室研究與探索,2013,32(11):448-451.

      [4]朱玉杰.UniSim單元模型二次開發(fā)及外部通信研究[N].北京:中國石油大學(xué)(北京),2008.

      [5]WinTECH Software Design.WTOPCSvr[Z].DLL User's Guide.

      猜你喜歡
      自動化
      國內(nèi)焊接設(shè)備市場現(xiàn)狀及發(fā)展趨勢研究
      供電企業(yè)電力自動化主站系統(tǒng)研究
      錦界煤礦連采膠帶機集控系統(tǒng)的介紹
      供熱站自動控制系統(tǒng)中PLC的應(yīng)用
      AGV小車在白酒行業(yè)自動化立體倉庫中的應(yīng)用
      中國市場(2016年36期)2016-10-19 03:40:15
      電氣工程及其自動化問題與對策
      我國機械設(shè)計制造及其自動化的現(xiàn)狀及發(fā)展趨勢
      淺論節(jié)能設(shè)計理念在機械制造與自動化中的應(yīng)用
      簡析火力發(fā)電廠熱工自動化儀表應(yīng)用及故障排除方法
      配網(wǎng)自動化實用化模式建設(shè)及系統(tǒng)運行
      安阳市| 南陵县| 平泉县| 珠海市| 南陵县| 芜湖市| 天峨县| 隆尧县| 天台县| 固安县| 六盘水市| 南陵县| 峡江县| 通州市| 县级市| 泽州县| 金沙县| 三明市| 平乡县| 延吉市| 博罗县| 榕江县| 保亭| 民和| 崇仁县| 寻甸| 中牟县| 云霄县| 东宁县| 弥勒县| 信宜市| 永福县| 黄平县| 寿光市| 苗栗县| 大庆市| 邵东县| 富阳市| 湖南省| 霞浦县| 宝丰县|