嚴(yán)浪濤,王 丹
(1. 重慶交通大學(xué)航海學(xué)院,重慶 400074;2. 大連海事大學(xué)輪機(jī)工程學(xué)院,遼寧 大連 116026)
基于GDI+的同步表動(dòng)態(tài)顯示的實(shí)現(xiàn)
嚴(yán)浪濤1,2,王 丹2
(1. 重慶交通大學(xué)航海學(xué)院,重慶 400074;2. 大連海事大學(xué)輪機(jī)工程學(xué)院,遼寧 大連 116026)
鑒于同步表在船舶電站模擬器以及船舶綜合監(jiān)控系統(tǒng)中的重要性,以GDI+和VS.net編程技術(shù)為基礎(chǔ),設(shè)計(jì)出了指示燈式船用同步表。該同步表的動(dòng)態(tài)旋轉(zhuǎn)速度和旋轉(zhuǎn)方向真實(shí)地反映了待并發(fā)電機(jī)和電網(wǎng)間頻差的大小以及頻差的正負(fù),工作特點(diǎn)符合船舶電站并車設(shè)計(jì)要求。恰當(dāng)?shù)膱D像處理技術(shù)使得同步表的整體外觀形象逼真,具有3D效果,符合操作人員的視覺感。為此,論文給出了相應(yīng)的設(shè)計(jì)思路和設(shè)計(jì)步驟,畫出了對(duì)應(yīng)的設(shè)計(jì)圖,運(yùn)用相應(yīng)的數(shù)學(xué)方法對(duì)同步表控件的屬性設(shè)計(jì)的合理性進(jìn)行了詳細(xì)的論述。結(jié)果證明,該方案實(shí)現(xiàn)了指示燈式同步表的動(dòng)態(tài)顯示,從而也可為其他類似儀表控件的開發(fā)提供一種思路。
船舶電站 監(jiān)控 同步表 動(dòng)態(tài)顯示;GDI+
同步表是船舶電站并車操作中必不可少的重要儀表之一,通過同步表對(duì)待并發(fā)電機(jī)和在網(wǎng)發(fā)電機(jī)的頻率、相位等參數(shù)的檢測,獲得并車合閘的時(shí)刻,從而完成并車合閘操作。同步表一般分為指針式同步表和指示燈式同步表[1],本文以指示燈式同步表為例。
在船舶電站模擬器以及船舶電站監(jiān)控系統(tǒng)的開發(fā)中,儀表控件的開發(fā)為關(guān)鍵,尤其是同步表。因?yàn)閷?duì)于指示燈式同步表,它不僅僅是指示燈在旋轉(zhuǎn)(即每一個(gè)指示燈輪流發(fā)光),而且指示燈發(fā)光的順序(順時(shí)針或逆時(shí)針)跟頻率差的正負(fù)有關(guān),除此之外,每一個(gè)指示燈輪流發(fā)光的時(shí)間間隔還反映了這個(gè)頻率差的大小。這些特點(diǎn)對(duì)同步表控件的開發(fā)帶來了較多的困難。
船舶電站模擬器或船舶電站監(jiān)控系統(tǒng)中的同步表不僅應(yīng)能具備上述同步表本身應(yīng)該具有的特點(diǎn),其信息顯示還必須與實(shí)船信息保持一致,同時(shí)在外觀上應(yīng)具有真實(shí)感,符合操作人員的視覺習(xí)慣[2],所以在圖像上也應(yīng)該做一些相應(yīng)的處理,比如3D效果的實(shí)現(xiàn)。
針對(duì)以上這些要求,運(yùn)用最新的GDI+ ( Graphics Device Interface)技術(shù)和C#.net編程語言來設(shè)計(jì)外觀形象逼真且功能完善的同步表控件。
指示燈式同步表采用發(fā)光二極管進(jìn)行指示,用于指示待并發(fā)電機(jī)與在網(wǎng)發(fā)電機(jī)的頻率差和相位差。
指示燈式同步表的結(jié)構(gòu)如圖1所示。表盤圓周均勻分布36個(gè)指示燈,每個(gè)指示燈代表10°電角度,上方12點(diǎn)鐘處指示燈是360°,其中“SYNC”(Synchronization)綠色指示燈與12點(diǎn)鐘處指示燈同步。
并車時(shí),先合上運(yùn)行發(fā)電機(jī)測量開關(guān)K1,此時(shí)表面36個(gè)指示燈為隨機(jī)狀態(tài)。然后合上待并發(fā)電機(jī)測量開關(guān)K2,此時(shí)指示燈開始旋轉(zhuǎn),指示燈旋轉(zhuǎn)速度的快慢反映了待并發(fā)電機(jī)和在網(wǎng)發(fā)電機(jī)頻率差、相位差值的大?。恢甘緹舻男D(zhuǎn)方向(順時(shí)針或逆時(shí)針)反映了待并發(fā)電機(jī)和在網(wǎng)發(fā)電機(jī)的頻率差、相位差的正與負(fù)[1]。
圖1 指示燈式同步表結(jié)構(gòu)及工作原理
當(dāng)在網(wǎng)發(fā)電機(jī)組與待并發(fā)電機(jī)組頻率差小于0.2 Hz,且相位差在350°~360°之間時(shí),上方“SYNC”綠色指示燈亮,此刻待并發(fā)電機(jī)組便可并入電網(wǎng)運(yùn)行。
在GDI+中,提供了Bitmap類來處理圖像,Bitmap類繼承于GDI+的Image類,Bitmap類在圖像的裝入、存儲(chǔ)和處理方面擴(kuò)展了Image類的方法[3]。Image類和Bitmap類主要功能是負(fù)責(zé)圖像裝入內(nèi)存、在內(nèi)存中對(duì)圖像的處理和由內(nèi)存將圖像數(shù)據(jù)寫入外設(shè)[4]。正是由于GDI+中提供的Bitmap類來處理圖像,這給同步表指示燈的動(dòng)態(tài)旋轉(zhuǎn)提供了一定的方便。
實(shí)際的指示燈式同步表是隨著頻差Δf大小而旋轉(zhuǎn)的,Δf越大轉(zhuǎn)動(dòng)速度越快,Δf越小轉(zhuǎn)動(dòng)的速度越慢。所以在同步表控件編制過程中,動(dòng)態(tài)旋轉(zhuǎn)顯示效果的實(shí)現(xiàn)較為復(fù)雜,其主要思想是按照顯示頻率的快慢提取坐標(biāo)值,顯示在用戶界面即可[5]。動(dòng)態(tài)旋轉(zhuǎn)顯示不僅需要實(shí)現(xiàn)動(dòng)態(tài)旋轉(zhuǎn)這一基本效果,還需要對(duì)圖像做相應(yīng)的處理,否則可能會(huì)發(fā)生圖像閃爍、圖像失真等現(xiàn)象。先簡單地介紹一下同步表的外圍結(jié)構(gòu)設(shè)計(jì)思路。
2.1 外廓結(jié)構(gòu)設(shè)計(jì)
因?yàn)橹甘緹羰酵奖淼膱A周表盤均勻分布36個(gè)指示燈,所以在運(yùn)用GDI+設(shè)計(jì)同步表的表盤時(shí),理論上應(yīng)每10°電角度設(shè)置一個(gè)指示燈。
現(xiàn)需要畫一個(gè)直徑為R的圓作為同步表表盤的圓周,在該圓周上均勻的分布36個(gè)指示燈。但在C#控件開發(fā)中,圓點(diǎn)位于整個(gè)界面的最左上角,如圖2中的o點(diǎn)。
圖2 外廓結(jié)構(gòu)設(shè)計(jì)圖
圓心O/點(diǎn)的坐標(biāo)即為(R/2,R/2),B點(diǎn)的坐標(biāo)為(R,R/2),根據(jù)坐標(biāo)平移方法可以得到A點(diǎn)的坐標(biāo)為(x,y)[6],
圖3 指示燈布局圖
同理,整個(gè)圓周的36個(gè)指示燈的坐標(biāo)位置可以寫為M(xi, yi)(i≤36),其中:
按照上述計(jì)算公式(3)、(4)及設(shè)計(jì)方案可以得到指示燈式同步表表盤上36個(gè)指示燈的布局圖,如圖3所示。
2.2 圖像效果處理
為了使儀表控件更形象逼真、更適合操作人員的視覺習(xí)慣,控件圖像上需要做一些處理。
2.2.1 像素控制
在布置36個(gè)指示燈的時(shí)候,曾提到了一句“理論上應(yīng)每10°電角度設(shè)置一個(gè)指示燈”,但是實(shí)際上由于指示燈自身的大小,以及GDI+畫圖時(shí)畫筆的寬度等,所以只能說理論上應(yīng)每10°電角度設(shè)置一個(gè)指示燈。同時(shí),在設(shè)計(jì)儀表的外廓的矩形框時(shí),需要繪制矩形、填充矩形,這時(shí)候還需要考慮繪制區(qū)域的邊界問題。
例如從點(diǎn)(x0,y0)到對(duì)角點(diǎn)(x0+A,y0+B)之間繪制一個(gè)矩形,矩形的實(shí)際占有長度是A+1,矩形的實(shí)際占有寬度是B+1,當(dāng)調(diào)用填充函數(shù)FillRectangle()進(jìn)行填充矩形時(shí),是從點(diǎn)(x0,y0)到點(diǎn)(x0+A-1,y0+B-1)范圍內(nèi)進(jìn)行填充。
在進(jìn)行繪制圖像的時(shí)候,要考慮畫筆的寬度以及填充圖像時(shí)的邊界問題,防止圖像出現(xiàn)錯(cuò)位、防止邊框和填充部分出現(xiàn)重疊[7]。
2.2.2 抗閃爍技術(shù)
在電站模擬器或者船舶監(jiān)控系統(tǒng)中的界面中,當(dāng)鼠標(biāo)拉滾動(dòng)條滑動(dòng)的時(shí)候,圖像待顯示部分會(huì)發(fā)生一些變化,使整個(gè)界面發(fā)生閃爍,從而影響整個(gè)系統(tǒng)的穩(wěn)定性。所以在設(shè)計(jì)控件的時(shí)候,需要做相應(yīng)的處理。
產(chǎn)生閃爍的根本原因是因Invalidate()方法造成的,它會(huì)使控件背景顏色被擦除,使整個(gè)控件重新繪制。在設(shè)計(jì)時(shí),把整個(gè)控件的顏色分為前景顏色和背景顏色;當(dāng)?shù)谝淮芜\(yùn)行程序或者縮放控件時(shí),調(diào)用函數(shù)Paint(),用前景顏色創(chuàng)建畫筆或畫刷,再根據(jù)當(dāng)前的屬性繪制同步表的表盤。控件屬性改變時(shí),在屬性的Set()語句塊內(nèi)的Degree=value語句之前,用背景顏色的畫筆或畫刷來重畫最近曾用前景顏色繪制過的圖像,用背景顏色覆蓋前景顏色。在Degree=value語句之后再用前景顏色繪制新圖像。這樣就能有效的消除閃爍現(xiàn)象[8]。
2.3 同步表控件的屬性
指示燈式同步表旋轉(zhuǎn)速度的快慢取決于頻差大?。?/p>
式中:fd為待并發(fā)電機(jī)的頻率;fw為電網(wǎng)頻率。
如Δf >0,即待并發(fā)電機(jī)的頻率大于電網(wǎng)頻率,同步表指示燈順時(shí)針旋轉(zhuǎn);如Δf <0,即待并發(fā)電機(jī)的頻率小于電網(wǎng)頻率,同步表指示燈逆時(shí)針旋轉(zhuǎn)。||fΔ越大,同步表指示燈轉(zhuǎn)動(dòng)的速度越快。
指示燈式同步表控件有兩個(gè)重要的屬性,指示燈的旋轉(zhuǎn)方向和轉(zhuǎn)動(dòng)的速度。
2.3.1 旋轉(zhuǎn)方向
36個(gè)指示燈(發(fā)光二極管)輪流被點(diǎn)亮,并且在某一個(gè)時(shí)刻只有一個(gè)二極管被點(diǎn)亮,其他二極管熄滅,其被點(diǎn)亮的順序(順時(shí)針或逆時(shí)針)就構(gòu)成了指示燈的旋轉(zhuǎn)順序,它取決于頻差Δf的正負(fù)。
設(shè)計(jì)36個(gè)指示燈時(shí),把各個(gè)指示燈按一定的順序(可以順時(shí)針也可逆時(shí)針)做相應(yīng)的編號(hào)(如L1-L36)?,F(xiàn)假設(shè)以順時(shí)針進(jìn)行編號(hào),并令任意某一燈的編號(hào)為Li,如圖4所示。如果當(dāng)接收到的信號(hào)時(shí)Δf >0,那么指示燈L1-L36發(fā)光的順序必然為Li-1,Li,Li+1;圖4中當(dāng)前是Li發(fā)光(紅色),下一時(shí)刻就應(yīng)該是Li+1被點(diǎn)亮發(fā)光,同時(shí)上一時(shí)刻發(fā)光的Li燈熄滅。同理當(dāng)接收到的信號(hào)時(shí)Δf<0,那么指示燈L1-L36發(fā)光的順序必然為Li+1,Li,Li-1;圖4中當(dāng)前是Li發(fā)光(紅色),下一時(shí)刻就應(yīng)該是Li-1被點(diǎn)亮發(fā)光,同時(shí)上一時(shí)刻發(fā)光的Li燈熄滅。
圖4 指示燈旋轉(zhuǎn)方向設(shè)計(jì)圖
2.3.2 旋轉(zhuǎn)速度
指示燈的旋轉(zhuǎn)速度,反映頻差的大小。頻差越大,旋轉(zhuǎn)速度越快;反之亦然。指示燈旋轉(zhuǎn)一周的時(shí)間就是頻差的一個(gè)周期[1],即:
根據(jù)《鋼質(zhì)海船入級(jí)與建造規(guī)范2009》要求,一般頻差Δf在±1%額定頻率值以內(nèi),即要求Δf≤±1%fe。對(duì)于50 Hz的船舶電網(wǎng),并車操作時(shí)一般頻差Δf在±0.5 Hz以內(nèi)被認(rèn)為是允許的。
為了實(shí)現(xiàn)同步表的動(dòng)態(tài)旋轉(zhuǎn),在控件編寫過程中令一個(gè)timer來控制同步表旋轉(zhuǎn)的速度,在代碼編寫過程中,根據(jù)(6)式來設(shè)置同步表控件的旋轉(zhuǎn)速度:
由(7)式可知,同步表指示燈的旋轉(zhuǎn)速度和頻差Δf成比例關(guān)系,寫入代碼中,實(shí)現(xiàn)旋轉(zhuǎn)速度的控制。
3.1 工作前
圖5 工作前的指示燈式同步表
待并發(fā)電機(jī)起動(dòng)之前,同步表未投入工作,相應(yīng)的指示燈全滅,效果如圖5所示。
圖6為網(wǎng)上某公司待售的同步表,對(duì)比圖6,設(shè)計(jì)出的圖5所示的指示燈式同步表形象逼真,真實(shí)感強(qiáng)。當(dāng)前狀態(tài)所有的指示燈處于熄滅狀態(tài),即同步未投入工作。待并發(fā)電機(jī)的頻率fd低于電網(wǎng)頻率(即Δf =fd- fw<0),則同步表指示燈將向逆時(shí)針方向旋轉(zhuǎn),即指示燈向“SLOW”的方向旋轉(zhuǎn);待并機(jī)的頻率高于電網(wǎng)的頻率(即Δf =fd- fw>0),同步表指示燈順時(shí)針方向轉(zhuǎn)動(dòng),即指示燈向“FAST”的方向旋轉(zhuǎn)[9]。
圖6 同步表實(shí)物圖
3.2 旋轉(zhuǎn)中的同步表
當(dāng)Δf =fd- fw<0或者Δf =fd- fw>0時(shí),同步表將以ω=2π(fd- fw)= 2πΔf進(jìn)行旋轉(zhuǎn)(同步表36個(gè)二極管指示燈輪流發(fā)光)。假設(shè)Δf =fd- fw>0,同步表指示燈旋轉(zhuǎn)示意圖如圖7所示。
圖7 順時(shí)針旋轉(zhuǎn)中的同步表
圖7中,(a)圖表示t0時(shí)刻同步表指示燈旋轉(zhuǎn)到當(dāng)前位置;經(jīng)過一段時(shí)間t之后,即t1時(shí)刻同步表指示燈旋轉(zhuǎn)到(b)圖所示位置;(c)圖,(d)圖分別表示t2、t3時(shí)刻同步表指示燈旋轉(zhuǎn)所處的位置。圖(a)(b)(c)(d)為同步表運(yùn)行過程中的抓圖,所以指示燈的點(diǎn)亮順序不是相鄰位置。
3.3 成功合閘
并車合閘完成時(shí),同步表對(duì)應(yīng)的指示燈也會(huì)被點(diǎn)亮,表明當(dāng)前并網(wǎng)成功,如圖8所示。
圖8 成功并車
同步表是短時(shí)工作制,并車結(jié)束后斷開同步表電源[10],同時(shí)圖8中相應(yīng)指示燈熄滅。
在船舶電站模擬器以及船舶綜合監(jiān)控系統(tǒng)的開發(fā)中,很多儀表控件的開發(fā)比較麻煩,一是要滿足儀表本身應(yīng)該具有的特點(diǎn)(指示燈旋轉(zhuǎn)方向、旋轉(zhuǎn)速度,數(shù)值的動(dòng)態(tài)顯示等);二是還需要對(duì)相應(yīng)的圖像做一些處理,使控件更形象逼真,更具有真實(shí)感,更符合操作人員的視覺感。因此,在設(shè)計(jì)或開發(fā)過程中,熟悉了儀表本身的工作原理后,還要仔細(xì)地分析和準(zhǔn)確地計(jì)算,再結(jié)合恰當(dāng)?shù)膱D像處理技術(shù),以保證某些復(fù)雜儀表控件的設(shè)計(jì)和開發(fā)得以順利完成。
[1] 吳志良. 船舶電站及其自動(dòng)化系統(tǒng). 大連: 大連海事大學(xué)出版社, 2010: 65-72.
[2] 李順亮, 王新輝, 鐘碧良. 應(yīng)用GDI+和C#開發(fā)船舶壓載水監(jiān)控系統(tǒng)控件. 廣州航海高等??茖W(xué)校學(xué)報(bào), 2012, (3): 4-6.
[3] 劉宏申, 陳小平. GDI+及多格式圖像的轉(zhuǎn)換. 微機(jī)發(fā)展, 2004, (11):40-43.
[4] Eric White. GDI+程序設(shè)計(jì). 北京: 清華大學(xué)出版社, 2002: 190-195
[5] 閆宇晗, 常鑫. 在C#中用GDI+實(shí)現(xiàn)圖形動(dòng)態(tài)顯示計(jì)算機(jī)技術(shù)與發(fā)展, 2006, (12): 117-120
[6] 嚴(yán)浪濤, 任光. RotateTransform函數(shù)在船舶儀表控件編寫中的運(yùn)用及數(shù)學(xué)分析. 計(jì)算技術(shù)與自動(dòng)化, 2006, (12): 129-132.
[7] 惠為君, 吉善兵. 基于GDI+的ColorGrid控件的設(shè)計(jì). 鹽城工學(xué)院學(xué)報(bào), 2008, (6): 31-34.
[8] 李順亮, 張均東, 甘輝兵. GDI+技術(shù)在綜合船舶監(jiān)控系統(tǒng)中的應(yīng)用. 大連海事大學(xué)學(xué)報(bào), 2005, (2): 42-45.
[9] 吳志良. 船舶電站. 大連: 大連海事大學(xué)出版社, 2012: 62-66.
[10] 中華人民共和國海事局. 中華人民共和國海船船員適任考試大綱. 大連: 大連海事大學(xué)出版社2012.08.
Realization of Dynamic Display of a Synchronization Meter Based on GDI+
Yan Langtao1,2, Wang Dan2
(1. Navigation College of Chongqing Jiaotong University, Chongqing 400074, China; 2. Marine Engineering College, Dalian Maritime University, Dalian 116026, China)
For the importance of a synchronization meter in the development of the simulator of ship's power station or the integrated monitoring system, the lamp type marine synchronization meter is designed based on GDI+ and VS.net. The dynamic rotating speed of the developed synchronization meter can veritably reflect the frequency difference value between the standby generator and the power-gird, rotating direction reflects the positive and negative of the frequency difference, whose characteristics can meet the design requirements of marine power station. Proper image processing techniques make the synchronization meter vivid and lifelike, with 3D effects, conformed to operator's visual sense. For this purpose, the design idea and steps are presented with corresponding drawings. The rationality of property designing is discussed in detailed, by using the mathematics method. Results show that dynamic display of the synchronization meter can be realized by using the method discussed in this article, providing a new idea for the development of other similar instrument control.
marine power station; monitor; synchronization meter; dynamic display; GDI+
TP391
A
1003-4862(2015)06-0019-05
2015-02-03
重慶市教委科技項(xiàng)目(項(xiàng)目編號(hào):KJ110422)、重慶市科委集成示范項(xiàng)目(項(xiàng)目編號(hào):cstc2013jcsf70002)
嚴(yán)浪濤(1979-),男,講師,博士生。研究方向:船舶電力系統(tǒng)自動(dòng)控制。