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