前言:想要寫出一篇引人入勝的文章?我們特意為您整理了計(jì)算機(jī)仿真的油料庫儲(chǔ)運(yùn)模擬培訓(xùn)范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:油料庫操作人員在上崗之前都要進(jìn)行油庫的裝油和卸油專門培訓(xùn)。采用真實(shí)的油罐進(jìn)行操作培訓(xùn)不但成本高,而且新學(xué)員操作容易引發(fā)事故而造成重大損失。采用軟硬件結(jié)合方式設(shè)計(jì)了一種基于計(jì)算機(jī)仿真的自動(dòng)化油料庫作業(yè)模擬系統(tǒng),該系統(tǒng)可以模擬油料庫的作業(yè)過程自動(dòng)控制和手動(dòng)操作,并實(shí)時(shí)監(jiān)測油罐狀態(tài)和工藝參數(shù),記錄與再現(xiàn)操作步驟。利用本系統(tǒng)可以提高油料存儲(chǔ)效益,降低在油料存儲(chǔ)中的人力成本,以及降低真實(shí)油罐操作的事故風(fēng)險(xiǎn)。
關(guān)鍵詞:監(jiān)控系統(tǒng);C#仿真;軟硬件結(jié)合
隨著信息技術(shù)、網(wǎng)絡(luò)技術(shù)、仿真技術(shù)、多媒體技術(shù)的飛速發(fā)展,為油庫油料儲(chǔ)運(yùn)專業(yè)人員培訓(xùn)系統(tǒng)設(shè)計(jì)的技術(shù)手段改革提供了強(qiáng)有力的支持。油庫中油料儲(chǔ)存罐和輸油管道所使用的各種控制閥門是油料儲(chǔ)運(yùn)過程中必不可少的現(xiàn)場儀表,其智能化程度的高低、所含信息的多少和對故障的診斷與容錯(cuò)能力直接影響到數(shù)據(jù)采集與監(jiān)控系統(tǒng)的可靠性、穩(wěn)定性和易用性。通常庫區(qū)中的控制閥數(shù)量眾多且分散,普通的控制閥所含信息量少而布線繁多,這在一定程度上使庫區(qū)監(jiān)控系統(tǒng)的設(shè)計(jì)復(fù)雜化[1-2]。另外,硬件上檢測到的數(shù)據(jù)需要實(shí)時(shí)傳輸處理進(jìn)入到計(jì)算機(jī),并通過軟件界面顯示出來,給人以直觀的信息反饋,本系統(tǒng)就是采用軟硬件相結(jié)合的方式,把油罐加油與卸油儲(chǔ)運(yùn)的過程動(dòng)態(tài)反應(yīng)到計(jì)算機(jī)軟件界面上來,讓人更直觀地進(jìn)行模擬檢測與仿真控制。
1系統(tǒng)的整體邏輯結(jié)構(gòu)
整個(gè)仿真模擬操作系統(tǒng)主要由以下幾部分構(gòu)成:工業(yè)現(xiàn)場傳感器、現(xiàn)場信號轉(zhuǎn)換發(fā)送器(信息編碼及發(fā)送)、信號遠(yuǎn)程傳輸(光纖傳輸)、信號接收轉(zhuǎn)換單元(光信號轉(zhuǎn)為電信號)、智能儀表和工業(yè)控制計(jì)算機(jī)[3]。整個(gè)油罐操作仿真模擬系統(tǒng)的邏輯結(jié)構(gòu)油罐現(xiàn)場采用智能傳感器,傳感器采集油罐的液位和溫度信號(非電信號)并送給信號轉(zhuǎn)換裝置,通過信號轉(zhuǎn)換裝置將信息編碼變成光信號;采用光纖遠(yuǎn)程傳輸信號,代替電信號的傳輸,這樣就可以防爆、防雷和防電磁干擾,排除傳輸過程中的各種干擾,對于石化等安全性很高的場合有很重要的意義;光信號經(jīng)光纖傳到儀表室,由光電轉(zhuǎn)換裝置將光信號轉(zhuǎn)換為電脈沖信號,并送到智能儀表;智能儀表通過處理將其還原為相應(yīng)的現(xiàn)場信號,按照RS232串口通信方式和計(jì)算機(jī)進(jìn)行通信連接;工業(yè)控制計(jì)算機(jī)上的我們的監(jiān)控管理軟件會(huì)從智能儀表處實(shí)時(shí)采集數(shù)據(jù),進(jìn)行數(shù)據(jù)分析,完成現(xiàn)場工況模擬和監(jiān)控、數(shù)據(jù)存儲(chǔ)分析、重要參數(shù)設(shè)定、顯示和實(shí)時(shí)控制。
2仿真監(jiān)控管理系統(tǒng)的功能設(shè)計(jì)
仿真監(jiān)控管理系統(tǒng)的開發(fā)以邏輯功能模塊的實(shí)現(xiàn)為主線,下面通過用戶界面、系統(tǒng)管理、數(shù)據(jù)處理和通信傳輸?shù)裙δ艿膶?shí)現(xiàn),介紹程序設(shè)計(jì)思路。2.1系統(tǒng)管理系統(tǒng)管理是對仿真監(jiān)控系統(tǒng)進(jìn)行管理和維護(hù)的功能菜單項(xiàng)。為保證系統(tǒng)安全運(yùn)行,系統(tǒng)實(shí)時(shí)要進(jìn)行監(jiān)控。系統(tǒng)管理包括登錄認(rèn)證、登錄注銷、密碼修改、用戶管理和退出系統(tǒng)等。2.2用戶界面用戶界面是系統(tǒng)的主要功能界面,包括各種功能:1)系統(tǒng)主界面窗口,該窗口顯示油庫兩個(gè)油罐整體的模擬圖,根據(jù)現(xiàn)場傳感器傳來的實(shí)測值,通過計(jì)算與轉(zhuǎn)換,動(dòng)態(tài)地顯示兩個(gè)油罐的閥門流速、液位和溫度等。兩個(gè)油罐模擬圖中建立了按鈕功能,在沒有初始化油罐的情況下是不能進(jìn)行觸發(fā)的,只有在初始化成功之后才能點(diǎn)擊使用??梢栽O(shè)置每個(gè)油罐的流速或者卸速,還有油罐所進(jìn)行的時(shí)間等,但是這一系列的操作時(shí)間都是建立在初始化成功的基礎(chǔ)上才能點(diǎn)擊觸發(fā)。系統(tǒng)的主界面窗口如圖2所示,要啟用系統(tǒng),需要點(diǎn)擊油罐一模擬或油罐二模擬之后才可以使用。點(diǎn)擊油罐一模擬之后如圖3所示。2)油罐液位動(dòng)態(tài)變化的動(dòng)畫模擬,主要功能是模擬工業(yè)現(xiàn)場的油罐液位和溫度的實(shí)時(shí)變化,進(jìn)出油的狀態(tài)、油泵、閥門及報(bào)警動(dòng)畫。動(dòng)畫模擬如圖4所示。圖中,油罐一正在以2m3/s的速度加油,油罐二正在以1m3/s的速度卸油。3)參數(shù)設(shè)定功能,傳感器會(huì)傳過來的各個(gè)數(shù)據(jù),比如油罐的液位和溫度的報(bào)警界限值,如液位和溫度的上限、下限,一旦監(jiān)測的時(shí)候達(dá)到這些值,系統(tǒng)會(huì)自動(dòng)強(qiáng)制停止所在油罐的加油或者卸油狀態(tài)。4)狀態(tài)分析處理,狀態(tài)信息提示窗口,提供每個(gè)油罐所處的正在加油、正在卸油、將要加滿、將要卸完以及已加滿和已卸完等狀態(tài),另外會(huì)提示報(bào)警,提供報(bào)警類型,報(bào)警來源等信息。比如油庫作業(yè)中常見的管線泄漏、閥門運(yùn)轉(zhuǎn)故障、泵故障等。在實(shí)驗(yàn)過程中,我們可以在加油主管道上設(shè)置手動(dòng)閥門,手動(dòng)控制閥門來模擬主管道泄漏情況;由“閥門限位故障設(shè)置按鈕”設(shè)置限位故障,模擬電動(dòng)閥門開關(guān)不到位的故障現(xiàn)象;由故障模擬電機(jī)過載故障,泵通電后不能啟動(dòng),由故障開關(guān)來模擬泵電機(jī)缺相合斷電故障。2.3通信傳輸仿真監(jiān)控系統(tǒng)分為現(xiàn)場監(jiān)控工作模式和網(wǎng)絡(luò)多級工作組模式?,F(xiàn)場監(jiān)控工作模式是單一的現(xiàn)場監(jiān)控工作站點(diǎn)獨(dú)立工作,只有智能儀表和現(xiàn)場各控制面板之間通信,通信協(xié)議視儀表型號而定[2]。多級網(wǎng)絡(luò)工作組模式是多層次監(jiān)控系統(tǒng),上級工作站管理監(jiān)控下級工作站,實(shí)現(xiàn)工作站聯(lián)網(wǎng)監(jiān)控。除現(xiàn)場計(jì)算機(jī)和智能儀表通信外,各級計(jì)算機(jī)也有通信鏈路相互連接。2.4操作記錄與再現(xiàn)在仿真監(jiān)控運(yùn)行期間,計(jì)算機(jī)將記錄操作員在計(jì)算機(jī)界面上所做的每一個(gè)操作,包括選擇、輸入、設(shè)置等操作動(dòng)作,設(shè)置的參數(shù)和操作時(shí)間等,同時(shí)系統(tǒng)每隔一段時(shí)間就會(huì)記錄泵轉(zhuǎn)速、管路各處壓力、液位、閥門開關(guān)位置、流量等數(shù)據(jù)。這些數(shù)據(jù)將會(huì)保存在系統(tǒng)的數(shù)據(jù)庫中,系統(tǒng)可以讀取這些數(shù)據(jù),再現(xiàn)操作過程和系統(tǒng)參數(shù)變化情況,以便分析在操作過程中存在的問題。
3系統(tǒng)關(guān)鍵技術(shù)
本系統(tǒng)主要采用C#界面仿真語言進(jìn)行開發(fā),在開發(fā)過程中主要用到了GDI+圖形程序設(shè)計(jì)、多線程、跨線程訪問UI組件、C#與串口通信等關(guān)鍵技術(shù)。1)GDI+圖形程序設(shè)計(jì)圖形裝置接口(GDI+,GraphicsDeviceInter-facePlus)是Microsoft.NET中進(jìn)行二維向量圖形、圖像及文字等方面處理的Win32API。所有GDI+的功能都包含在System.Drawing、System.Drawing.Imaging、System.Drawing.Drawing2D、System.Draw-ing.Text這些名稱空間的各個(gè)類中。C#通過這些名稱空間所提供的功能進(jìn)行圖形設(shè)計(jì)和圖形處理[4-5]。用GDI+創(chuàng)建圖形圖像需要首先創(chuàng)建Graphics對象,然后才可以用GDI+繪制線條和形狀、處理文本及進(jìn)行圖像的顯示和處理。這里Graphics是一個(gè)用于創(chuàng)建圖形圖像的對象。一般而言,圖形設(shè)計(jì)過程分為兩步:一是創(chuàng)建Graphics對象;二是使用Graphics對象繪畫、顯示文本或處理圖像。本系統(tǒng)中主要的圖形程序設(shè)計(jì)代碼如下(我們這里只展示一個(gè)圖形的主要代碼):Graphicsg=pictureBox1.CreateGraphics();intheight=pictureBox1.ClientSize.Height-40;intwidth=pictureBox1.ClientSize.Width-20;intvHeigth=150;intvwidth=40;for(inti=height;i>0;i--)g.DrawEllipse(pen1,(width-2*vwidth)/2,i,vHeigth,vwidth);g.FillEllipse(brush1,(width-2*vwidth)/2,0,vHeigth,vwidth);代碼含義如下:第一行表示獲取控件picture-Box1的Graphics對象,為之后的繪制線條和形狀做準(zhǔn)備;第2、
3行表示獲取控件pictureBox1的Height和Width屬性,為之后的繪制線條和形狀做準(zhǔn)備;第4、5行是定義所繪制的圖形的寬度和高度;第6、7行表示用Graphics對象g進(jìn)行循環(huán)畫線;第8行表示為該圓柱的頂部填充顏色,使圓柱顯的更為立體。2)多線程在使用C#編寫任何程序時(shí),都有一個(gè)入口:Main()方法。程序從Main()方法的第一條語句開始執(zhí)行,直到這個(gè)方法返回為止。這樣的程序結(jié)構(gòu)非常適合于一個(gè)可識別的任務(wù)序列的程序,但程序常常需要同時(shí)完成多個(gè)任務(wù)[6]。例如在使用文字處理軟件的時(shí)候,用戶在輸入文字的同時(shí),軟件能同步進(jìn)行拼寫檢查而不需要用戶的等待。在C#中多線程功能是封裝在System.Thread命名空間中。在本系統(tǒng)中,程序需要再運(yùn)行主程序的同時(shí),需要去對硬件接口進(jìn)行監(jiān)測,而又不需要影響主程序的運(yùn)行,所以需要用到多線程。先對監(jiān)測油罐的代碼做了封裝,在開辟新的線程的時(shí)候直接調(diào)用封裝的函數(shù),下面是在監(jiān)測油罐一的時(shí)候,開辟新的線程的主要部分代碼:Threadt1=newThread(newThreadStart(zonghe1));t1.Start();3)跨線程訪問UI組件因?yàn)樵诖讼到y(tǒng)中我們使用了多線程,使用了多線程之后,就需要了解Windows窗體中最重要的一條線程規(guī)則:除了極少數(shù)的例外情況,否則都不要在它的創(chuàng)建線程以外的線程中使用控件的任何成員[6]。這適用于其類派生自System.Windows.Forms.Control的任何對象,其中包括幾乎所有的UI元素。此外,這條規(guī)則的結(jié)果是一個(gè)被包含的控件必須與包含它的控件位處于同一個(gè)線程中。也就是說,一個(gè)窗口的所有控件屬于同一個(gè)UI線程。但是在此系統(tǒng)中我們需要在按鈕觸發(fā)的監(jiān)控事件中來訪問控制UI組件,這里我們就需要來跨線程訪問UI組件來達(dá)到這一目的,其中有設(shè)置程序不檢查線程的調(diào)用是否合法和使用委托delegate的方法,在此仿真系統(tǒng)中我們是把訪問UI控件的代碼封裝成一個(gè)函數(shù),此函數(shù)是不帶參數(shù)的,使用MethodInvoker來解決此問題。System.Windows.Forms.MethodInvoker類型是一個(gè)系統(tǒng)定義的委托,用于調(diào)用不帶參數(shù)的方法。使用具體的代碼如下:MethodInvokermi=newMethodInvoker(jiayouTishi);BeginInvoke(mi);4)C#串口通信在VisualStudio.NET中編寫串口通信程序,一般都使用MicrosoftCommunicationControl(簡稱MSComm)的通信控件,只要通過對此控件的屬性和事件進(jìn)行相應(yīng)編程操作,就可以輕松地實(shí)現(xiàn)串口通信。但在Microsoft.NET技術(shù)廣泛應(yīng)用的今天,VisualStudio.NET沒有將此控件加入控件庫,所以現(xiàn)在采用3種方法在VisualStudio.NET中編寫串口程序:第一種方法是通過采用MSComm控件,這是最簡單的,最方便的方法,但需要注冊;第二種方法是采用微軟在.NET中推出的一個(gè)串口控件Se-rialPort,可方便地實(shí)現(xiàn)所需要串口通信的多重功能;第三種方法是用API函數(shù)進(jìn)行串口通信,雖然難度高,但可以方便實(shí)現(xiàn)在即想要的各種功能[7]。在本仿真系統(tǒng)中我們采用第二種方法,通過RS-232接口實(shí)現(xiàn)了油罐的閥門流速信號、油泵開關(guān)信號的采集與控制。
4結(jié)束語
本文針對油罐的加油卸油過程分析,采用軟硬件相結(jié)合的方法研究開發(fā)了基于實(shí)時(shí)監(jiān)控可操控的一種自動(dòng)化的油料儲(chǔ)運(yùn)操作仿真系統(tǒng),它對于灌區(qū)生產(chǎn)和管理提供了更高的可靠性和準(zhǔn)確性,可提高工作效率,降低培訓(xùn)成本和操作中事故出現(xiàn)的風(fēng)險(xiǎn),對于油料儲(chǔ)運(yùn)操作專業(yè)人員的實(shí)訓(xùn)培養(yǎng)有重要的作用。
參考文獻(xiàn):
[1]劉錦華.油罐群遠(yuǎn)程實(shí)時(shí)監(jiān)測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[2]蘇夢,馮達(dá),陸朝榮,等.基于PLC的油料儲(chǔ)運(yùn)監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006,22(6):9-1.
[3]蘇義鑫,呂華陽.基于MCGS組態(tài)軟件的油庫監(jiān)控管理軟件開發(fā)[J].工業(yè)控制計(jì)算機(jī),2003,16(7):30-31.
[4]JohnSharp.VisualC#從入門到精通[M].周靖,譯.8版.北京:清華大學(xué)出版社,2016.6.
[5]李蘭友,韓廣峰,裘旭光.VisualC#圖形程序設(shè)計(jì)實(shí)例[M].北京:國防工業(yè)出版社,2003.4.
[6]AndrewTroelsen.ProC#5.0andthe.NET4.5FrameworkSixthEdition精通C#[M].姚琪琳,朱曄,肖逵,等,譯.6版.北京:人民郵電出版社,2014.5.
[7]李江全,鄧紅濤,劉巧,李偉,等.VisualC#.NET串口通信及測控應(yīng)用典型實(shí)例[M].北京:電子工業(yè)出版社,2012:5.
作者:李明 游福成 姜超 張董 曹越 張陳煒 單位:北京印刷學(xué)院信息工程學(xué)院