嚴浪濤,王 丹
(1. 重慶交通大學航海學院,重慶 400074;2. 大連海事大學輪機工程學院,遼寧 大連 116026)
基于GDI+的同步表動態顯示的實現
嚴浪濤1,2,王 丹2
(1. 重慶交通大學航海學院,重慶 400074;2. 大連海事大學輪機工程學院,遼寧 大連 116026)
鑒于同步表在船舶電站模擬器以及船舶綜合監控系統中的重要性,以GDI+和VS.net編程技術為基礎,設計出了指示燈式船用同步表。該同步表的動態旋轉速度和旋轉方向真實地反映了待并發電機和電網間頻差的大小以及頻差的正負,工作特點符合船舶電站并車設計要求。恰當的圖像處理技術使得同步表的整體外觀形象逼真,具有3D效果,符合操作人員的視覺感。為此,論文給出了相應的設計思路和設計步驟,畫出了對應的設計圖,運用相應的數學方法對同步表控件的屬性設計的合理性進行了詳細的論述。結果證明,該方案實現了指示燈式同步表的動態顯示,從而也可為其他類似儀表控件的開發提供一種思路。
船舶電站 監控 同步表 動態顯示;GDI+
同步表是船舶電站并車操作中必不可少的重要儀表之一,通過同步表對待并發電機和在網發電機的頻率、相位等參數的檢測,獲得并車合閘的時刻,從而完成并車合閘操作。同步表一般分為指針式同步表和指示燈式同步表[1],本文以指示燈式同步表為例。
在船舶電站模擬器以及船舶電站監控系統的開發中,儀表控件的開發為關鍵,尤其是同步表。因為對于指示燈式同步表,它不僅僅是指示燈在旋轉(即每一個指示燈輪流發光),而且指示燈發光的順序(順時針或逆時針)跟頻率差的正負有關,除此之外,每一個指示燈輪流發光的時間間隔還反映了這個頻率差的大小。這些特點對同步表控件的開發帶來了較多的困難。
船舶電站模擬器或船舶電站監控系統中的同步表不僅應能具備上述同步表本身應該具有的特點,其信息顯示還必須與實船信息保持一致,同時在外觀上應具有真實感,符合操作人員的視覺習慣[2],所以在圖像上也應該做一些相應的處理,比如3D效果的實現。
針對以上這些要求,運用最新的GDI+ ( Graphics Device Interface)技術和C#.net編程語言來設計外觀形象逼真且功能完善的同步表控件。
指示燈式同步表采用發光二極管進行指示,用于指示待并發電機與在網發電機的頻率差和相位差。
指示燈式同步表的結構如圖1所示。表盤圓周均勻分布36個指示燈,每個指示燈代表10°電角度,上方12點鐘處指示燈是360°,其中“SYNC”(Synchronization)綠色指示燈與12點鐘處指示燈同步。
并車時,先合上運行發電機測量開關K1,此時表面36個指示燈為隨機狀態。然后合上待并發電機測量開關K2,此時指示燈開始旋轉,指示燈旋轉速度的快慢反映了待并發電機和在網發電機頻率差、相位差值的大小;指示燈的旋轉方向(順時針或逆時針)反映了待并發電機和在網發電機的頻率差、相位差的正與負[1]。

圖1 指示燈式同步表結構及工作原理
當在網發電機組與待并發電機組頻率差小于0.2 Hz,且相位差在350°~360°之間時,上方“SYNC”綠色指示燈亮,此刻待并發電機組便可并入電網運行。
在GDI+中,提供了Bitmap類來處理圖像,Bitmap類繼承于GDI+的Image類,Bitmap類在圖像的裝入、存儲和處理方面擴展了Image類的方法[3]。Image類和Bitmap類主要功能是負責圖像裝入內存、在內存中對圖像的處理和由內存將圖像數據寫入外設[4]。正是由于GDI+中提供的Bitmap類來處理圖像,這給同步表指示燈的動態旋轉提供了一定的方便。
實際的指示燈式同步表是隨著頻差Δf大小而旋轉的,Δf越大轉動速度越快,Δf越小轉動的速度越慢。所以在同步表控件編制過程中,動態旋轉顯示效果的實現較為復雜,其主要思想是按照顯示頻率的快慢提取坐標值,顯示在用戶界面即可[5]。動態旋轉顯示不僅需要實現動態旋轉這一基本效果,還需要對圖像做相應的處理,否則可能會發生圖像閃爍、圖像失真等現象。先簡單地介紹一下同步表的外圍結構設計思路。
2.1 外廓結構設計
因為指示燈式同步表的圓周表盤均勻分布36個指示燈,所以在運用GDI+設計同步表的表盤時,理論上應每10°電角度設置一個指示燈。
現需要畫一個直徑為R的圓作為同步表表盤的圓周,在該圓周上均勻的分布36個指示燈。但在C#控件開發中,圓點位于整個界面的最左上角,如圖2中的o點。

圖2 外廓結構設計圖
圓心O/點的坐標即為(R/2,R/2),B點的坐標為(R,R/2),根據坐標平移方法可以得到A點的坐標為(x,y)[6],



圖3 指示燈布局圖
同理,整個圓周的36個指示燈的坐標位置可以寫為M(xi, yi)(i≤36),其中:

按照上述計算公式(3)、(4)及設計方案可以得到指示燈式同步表表盤上36個指示燈的布局圖,如圖3所示。
2.2 圖像效果處理
為了使儀表控件更形象逼真、更適合操作人員的視覺習慣,控件圖像上需要做一些處理。
2.2.1 像素控制
在布置36個指示燈的時候,曾提到了一句“理論上應每10°電角度設置一個指示燈”,但是實際上由于指示燈自身的大小,以及GDI+畫圖時畫筆的寬度等,所以只能說理論上應每10°電角度設置一個指示燈。同時,在設計儀表的外廓的矩形框時,需要繪制矩形、填充矩形,這時候還需要考慮繪制區域的邊界問題。
例如從點(x0,y0)到對角點(x0+A,y0+B)之間繪制一個矩形,矩形的實際占有長度是A+1,矩形的實際占有寬度是B+1,當調用填充函數FillRectangle()進行填充矩形時,是從點(x0,y0)到點(x0+A-1,y0+B-1)范圍內進行填充。
在進行繪制圖像的時候,要考慮畫筆的寬度以及填充圖像時的邊界問題,防止圖像出現錯位、防止邊框和填充部分出現重疊[7]。
2.2.2 抗閃爍技術
在電站模擬器或者船舶監控系統中的界面中,當鼠標拉滾動條滑動的時候,圖像待顯示部分會發生一些變化,使整個界面發生閃爍,從而影響整個系統的穩定性。所以在設計控件的時候,需要做相應的處理。
產生閃爍的根本原因是因Invalidate()方法造成的,它會使控件背景顏色被擦除,使整個控件重新繪制。在設計時,把整個控件的顏色分為前景顏色和背景顏色;當第一次運行程序或者縮放控件時,調用函數Paint(),用前景顏色創建畫筆或畫刷,再根據當前的屬性繪制同步表的表盤。控件屬性改變時,在屬性的Set()語句塊內的Degree=value語句之前,用背景顏色的畫筆或畫刷來重畫最近曾用前景顏色繪制過的圖像,用背景顏色覆蓋前景顏色。在Degree=value語句之后再用前景顏色繪制新圖像。這樣就能有效的消除閃爍現象[8]。
2.3 同步表控件的屬性
指示燈式同步表旋轉速度的快慢取決于頻差大小:

式中:fd為待并發電機的頻率;fw為電網頻率。
如Δf >0,即待并發電機的頻率大于電網頻率,同步表指示燈順時針旋轉;如Δf <0,即待并發電機的頻率小于電網頻率,同步表指示燈逆時針旋轉。||fΔ越大,同步表指示燈轉動的速度越快。
指示燈式同步表控件有兩個重要的屬性,指示燈的旋轉方向和轉動的速度。
2.3.1 旋轉方向
36個指示燈(發光二極管)輪流被點亮,并且在某一個時刻只有一個二極管被點亮,其他二極管熄滅,其被點亮的順序(順時針或逆時針)就構成了指示燈的旋轉順序,它取決于頻差Δf的正負。
設計36個指示燈時,把各個指示燈按一定的順序(可以順時針也可逆時針)做相應的編號(如L1-L36)。現假設以順時針進行編號,并令任意某一燈的編號為Li,如圖4所示。如果當接收到的信號時Δf >0,那么指示燈L1-L36發光的順序必然為Li-1,Li,Li+1;圖4中當前是Li發光(紅色),下一時刻就應該是Li+1被點亮發光,同時上一時刻發光的Li燈熄滅。同理當接收到的信號時Δf<0,那么指示燈L1-L36發光的順序必然為Li+1,Li,Li-1;圖4中當前是Li發光(紅色),下一時刻就應該是Li-1被點亮發光,同時上一時刻發光的Li燈熄滅。

圖4 指示燈旋轉方向設計圖
2.3.2 旋轉速度
指示燈的旋轉速度,反映頻差的大小。頻差越大,旋轉速度越快;反之亦然。指示燈旋轉一周的時間就是頻差的一個周期[1],即:

根據《鋼質海船入級與建造規范2009》要求,一般頻差Δf在±1%額定頻率值以內,即要求Δf≤±1%fe。對于50 Hz的船舶電網,并車操作時一般頻差Δf在±0.5 Hz以內被認為是允許的。
為了實現同步表的動態旋轉,在控件編寫過程中令一個timer來控制同步表旋轉的速度,在代碼編寫過程中,根據(6)式來設置同步表控件的旋轉速度:

由(7)式可知,同步表指示燈的旋轉速度和頻差Δf成比例關系,寫入代碼中,實現旋轉速度的控制。
3.1 工作前

圖5 工作前的指示燈式同步表
待并發電機起動之前,同步表未投入工作,相應的指示燈全滅,效果如圖5所示。
圖6為網上某公司待售的同步表,對比圖6,設計出的圖5所示的指示燈式同步表形象逼真,真實感強。當前狀態所有的指示燈處于熄滅狀態,即同步未投入工作。待并發電機的頻率fd低于電網頻率(即Δf =fd- fw<0),則同步表指示燈將向逆時針方向旋轉,即指示燈向“SLOW”的方向旋轉;待并機的頻率高于電網的頻率(即Δf =fd- fw>0),同步表指示燈順時針方向轉動,即指示燈向“FAST”的方向旋轉[9]。

圖6 同步表實物圖
3.2 旋轉中的同步表
當Δf =fd- fw<0或者Δf =fd- fw>0時,同步表將以ω=2π(fd- fw)= 2πΔf進行旋轉(同步表36個二極管指示燈輪流發光)。假設Δf =fd- fw>0,同步表指示燈旋轉示意圖如圖7所示。

圖7 順時針旋轉中的同步表
圖7中,(a)圖表示t0時刻同步表指示燈旋轉到當前位置;經過一段時間t之后,即t1時刻同步表指示燈旋轉到(b)圖所示位置;(c)圖,(d)圖分別表示t2、t3時刻同步表指示燈旋轉所處的位置。圖(a)(b)(c)(d)為同步表運行過程中的抓圖,所以指示燈的點亮順序不是相鄰位置。
3.3 成功合閘
并車合閘完成時,同步表對應的指示燈也會被點亮,表明當前并網成功,如圖8所示。

圖8 成功并車
同步表是短時工作制,并車結束后斷開同步表電源[10],同時圖8中相應指示燈熄滅。
在船舶電站模擬器以及船舶綜合監控系統的開發中,很多儀表控件的開發比較麻煩,一是要滿足儀表本身應該具有的特點(指示燈旋轉方向、旋轉速度,數值的動態顯示等);二是還需要對相應的圖像做一些處理,使控件更形象逼真,更具有真實感,更符合操作人員的視覺感。因此,在設計或開發過程中,熟悉了儀表本身的工作原理后,還要仔細地分析和準確地計算,再結合恰當的圖像處理技術,以保證某些復雜儀表控件的設計和開發得以順利完成。
[1] 吳志良. 船舶電站及其自動化系統. 大連: 大連海事大學出版社, 2010: 65-72.
[2] 李順亮, 王新輝, 鐘碧良. 應用GDI+和C#開發船舶壓載水監控系統控件. 廣州航海高等專科學校學報, 2012, (3): 4-6.
[3] 劉宏申, 陳小平. GDI+及多格式圖像的轉換. 微機發展, 2004, (11):40-43.
[4] Eric White. GDI+程序設計. 北京: 清華大學出版社, 2002: 190-195
[5] 閆宇晗, 常鑫. 在C#中用GDI+實現圖形動態顯示計算機技術與發展, 2006, (12): 117-120
[6] 嚴浪濤, 任光. RotateTransform函數在船舶儀表控件編寫中的運用及數學分析. 計算技術與自動化, 2006, (12): 129-132.
[7] 惠為君, 吉善兵. 基于GDI+的ColorGrid控件的設計. 鹽城工學院學報, 2008, (6): 31-34.
[8] 李順亮, 張均東, 甘輝兵. GDI+技術在綜合船舶監控系統中的應用. 大連海事大學學報, 2005, (2): 42-45.
[9] 吳志良. 船舶電站. 大連: 大連海事大學出版社, 2012: 62-66.
[10] 中華人民共和國海事局. 中華人民共和國海船船員適任考試大綱. 大連: 大連海事大學出版社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
重慶市教委科技項目(項目編號:KJ110422)、重慶市科委集成示范項目(項目編號:cstc2013jcsf70002)
嚴浪濤(1979-),男,講師,博士生。研究方向:船舶電力系統自動控制。