APP下载

基于GDI+的同步表动态显示的实现

2015-06-27严浪涛

船电技术 2015年6期
关键词:指示灯控件电站

严浪涛,王 丹

(1. 重庆交通大学航海学院,重庆 400074;2. 大连海事大学轮机工程学院,辽宁 大连 116026)

基于GDI+的同步表动态显示的实现

严浪涛1,2,王 丹2

(1. 重庆交通大学航海学院,重庆 400074;2. 大连海事大学轮机工程学院,辽宁 大连 116026)

鉴于同步表在船舶电站模拟器以及船舶综合监控系统中的重要性,以GDI+和VS.net编程技术为基础,设计出了指示灯式船用同步表。该同步表的动态旋转速度和旋转方向真实地反映了待并发电机和电网间频差的大小以及频差的正负,工作特点符合船舶电站并车设计要求。恰当的图像处理技术使得同步表的整体外观形象逼真,具有3D效果,符合操作人员的视觉感。为此,论文给出了相应的设计思路和设计步骤,画出了对应的设计图,运用相应的数学方法对同步表控件的属性设计的合理性进行了详细的论述。结果证明,该方案实现了指示灯式同步表的动态显示,从而也可为其他类似仪表控件的开发提供一种思路。

船舶电站 监控 同步表 动态显示;GDI+

0 引言

同步表是船舶电站并车操作中必不可少的重要仪表之一,通过同步表对待并发电机和在网发电机的频率、相位等参数的检测,获得并车合闸的时刻,从而完成并车合闸操作。同步表一般分为指针式同步表和指示灯式同步表[1],本文以指示灯式同步表为例。

在船舶电站模拟器以及船舶电站监控系统的开发中,仪表控件的开发为关键,尤其是同步表。因为对于指示灯式同步表,它不仅仅是指示灯在旋转(即每一个指示灯轮流发光),而且指示灯发光的顺序(顺时针或逆时针)跟频率差的正负有关,除此之外,每一个指示灯轮流发光的时间间隔还反映了这个频率差的大小。这些特点对同步表控件的开发带来了较多的困难。

船舶电站模拟器或船舶电站监控系统中的同步表不仅应能具备上述同步表本身应该具有的特点,其信息显示还必须与实船信息保持一致,同时在外观上应具有真实感,符合操作人员的视觉习惯[2],所以在图像上也应该做一些相应的处理,比如3D效果的实现。

针对以上这些要求,运用最新的GDI+ ( Graphics Device Interface)技术和C#.net编程语言来设计外观形象逼真且功能完善的同步表控件。

1 指示灯式同步表结构简介

指示灯式同步表采用发光二极管进行指示,用于指示待并发电机与在网发电机的频率差和相位差。

指示灯式同步表的结构如图1所示。表盘圆周均匀分布36个指示灯,每个指示灯代表10°电角度,上方12点钟处指示灯是360°,其中“SYNC”(Synchronization)绿色指示灯与12点钟处指示灯同步。

并车时,先合上运行发电机测量开关K1,此时表面36个指示灯为随机状态。然后合上待并发电机测量开关K2,此时指示灯开始旋转,指示灯旋转速度的快慢反映了待并发电机和在网发电机频率差、相位差值的大小;指示灯的旋转方向(顺时针或逆时针)反映了待并发电机和在网发电机的频率差、相位差的正与负[1]。

图1 指示灯式同步表结构及工作原理

当在网发电机组与待并发电机组频率差小于0.2 Hz,且相位差在350°~360°之间时,上方“SYNC”绿色指示灯亮,此刻待并发电机组便可并入电网运行。

2 基于GDI+的指示灯式同步表的设计

在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 图像效果

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中相应指示灯熄灭。

4 结论

在船舶电站模拟器以及船舶综合监控系统的开发中,很多仪表控件的开发比较麻烦,一是要满足仪表本身应该具有的特点(指示灯旋转方向、旋转速度,数值的动态显示等);二是还需要对相应的图像做一些处理,使控件更形象逼真,更具有真实感,更符合操作人员的视觉感。因此,在设计或开发过程中,熟悉了仪表本身的工作原理后,还要仔细地分析和准确地计算,再结合恰当的图像处理技术,以保证某些复杂仪表控件的设计和开发得以顺利完成。

[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-),男,讲师,博士生。研究方向:船舶电力系统自动控制。

猜你喜欢

指示灯控件电站
三峡电站再创新高
基于.net的用户定义验证控件的应用分析
低影响开发(LID)在光伏电站中的应用
关于.net控件数组的探讨
上海大众POLO充电指示灯点亮
美国邦纳 工业智能指示灯
2013年波罗车充电指示灯异常点亮
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
Spreadsheet控件在Delphi数据库系统中的编程与应用
太阳能楼牌指示灯