舰船能量管理系统中的VxWorks可视化技术

2018-08-14 15:07华逸飞李维波方雄伟许智豪徐聪员钦生
中国舰船研究 2018年4期
关键词:调用控件报警

华逸飞,李维波,方雄伟,许智豪,徐聪,员钦生

1武汉理工大学自动化学院,湖北武汉430070

2海军工程大学电气工程学院,湖北武汉430033

3上海船用柴油机研究所,上海200090

0 引 言

传统的舰船推进方式采用原动机进行推进,而目前的电力推进舰船则是由原动机带动发电机,然后通过推进电动机驱动螺旋桨进行推进。电力推进由于具有诸多明显的优势已成为21世纪舰船动力发展的主要方向,而能量管理系统则是电力推进系统的重要组成部分[1-2]。

能量管理系统可对舰船电能进行集中调度、管理和控制,是综合电力系统舰船的核心控制部分之一。能量管理系统能够综合考虑并实现发电自动化、系统监测报警、输配电监控保护及用电设备的监控管理,能综合优化船舶电力系统的经济性、可靠性及安全稳定性,为现代大型船舶提供稳定、可靠、经济的电力能源[3-4]。

能量管理系统通常采用“二层网络、三级设备”的网络构架,顶层一般采用冗余的工业以太网连接各种设备控制器,下层一般为CAN总线组成现场网络,与底层设备进行连接[5-7]。

舰船能量管理系统中的可视化系统是整个系统的人机接口单元,负责整个能量系统中参数的显示、管理以及故障的实时报警,同时能够对底层设备下达控制指令,是舰船能量管理系统安全运行的重要保障。

传统的嵌入式图形可视化开发一般使用Microsoft Visual C++(VC),QT等软件,这些软件虽然能够达到理想的人机界面,但是存在开发周期长、上手难度大等缺点,为此,本文采用Tilcon软件进行可视化应用研究。目前,Tilcon软件作为VxWorks操作系统下的图形可视化开发工具,具有大量的成熟控件,无需像传统的可视化开发软件那样,通过调用函数去画线填充以及美化图形,把用户从大量编码的图形可视化开发方式中解放出来,简化了嵌入式图形的可视化开发过程[8-9]。

为了保证系统的实时性,本文采用VxWorks操作系统。该操作系统是由美国Wind River公司针对嵌入式系统开发的实时操作系统。由于其高性能、高可靠性、可剪裁性以及友好的用户开发环境等特点,被广泛应用于军用和民用的高科技领域[10]。

本文将以某舰船的能量管理系统为基础,针对该船的实际情况,给出舰船能量管理系统的网络结构,分析UDP通信并提出设计方案,研究网络架构中的可视化关键技术及其实现方法,确保舰船能量管理系统能够健康、安全和可靠运行。

1 舰船能量管理系统网络架构

某舰船能量管理系统由1个可视化系统、1台能量管理系统中心控制器以及下层的供电监测系统、配电监测系统、绝缘监测系统、推进监测系统和故障录播系统组成,该系统的主干控制网采用双冗余CAN网,显示用数据网采用双冗余以太网。能量管理系统中心控制器为整个系统的核心,负责整个双冗余CAN网络内数据的处理、调度以及控制指令的下发,并通过双冗余以太网与可视化系统进行数据交互。而供电监测系统、配电监测系统、推进监测系统、绝缘监测系统和故障录播系统则负责与底层控制器之间的交互,将来自底层设备的数据参数转换为CAN信号并转发至双冗余CAN网中,同时能够接收来自双冗余CAN网的指令操作底层设备。整个能量管理系统的系统框图如图1所示。

本文研究的重点为可视化系统,该系统需要实时显示舰船能量管理系统中所有的测点信息,并且能够对故障信息进行报警,是整个系统安全运行的重要保证。

2 网络架构中的UDP设计

能量管理系统中心控制器,通过双冗余以太网完成与可视化系统之间的通信。因为用户数据报协议(UDP)无需建立连接,故通信效率高[11]。而可视化系统仅用于数据显示和部分数据下发,适合采用UDP通信。UDP发送端的通信流程如图2所示,其运行步骤简述如下:

1)通过调用socket()函数建立数据报套接字并且返回套接字号;

2)通过调用bind()函数将套接字与本地地址绑定;

3)调用sendto()函数发送数据;

4)调用close()函数关闭套接字,服务结束。

UDP接收端的通信流程如图3所示,其运行步骤为:

1)通过调用socket()函数建立数据报套接字并且返回套接字号;

2)通过调用bind()函数将套接字与本地地址绑定;

3)接着通过调用recvfrom()函数接收数据;

4)最后调用close()函数关闭套接字,服务结束。

其中,VxWorks系统下的UDP网络通信socket编程分为以下2种方式:

1)阻塞模式:调用结果返回之前,当前任务会被挂起,函数只有在得到结果之后才会返回。

2)非阻塞模式:即使不能立刻得到结果,当前任务也不会被挂起,而会立刻返回。

UDP通信初始化阶段默认接收(recvfrom)为阻塞模式,发送(send)为非阻塞模式,这就意味着在没有接收到数据的时候,程序将不会执行读取语句后续的程序,而发送数据的时候则不管对方是否能够接收,直接把数据发送至网络中。

阻塞模式的响应速度比非阻塞模式快,因为若有数据可以读取,将会立刻调用recvfrom函数读取数据,但是非阻塞模式却要顺序执行之后才能读取数据。若采取阻塞模式,当任务出现阻塞时,会对后续的数据解析处理造成影响。为了排除阻塞模式对数据解析的影响,可以创建2个任务,一个通信任务,一个数据解析处理任务,当通信任务因为阻塞而被挂起的时候,数据处理任务仍然可以正常执行,但这样可能会因任务时序造成数据出错,因此不建议采用。

如果对系统响应时间要求较低,可以把任务改为非阻塞模式,数据接收和数据解析在一个函数中执行,这样既可以减少任务开销,也可以让数据解析更加可靠。本文中的可视化系统仅用于数据的显示和部分指令的下发,对响应时间要求不是很高,因此采用非阻塞的方式进行接收,同时将数据接收和数据解析一同处理。

通过调用ioctl函数,可以设置socket为非阻塞模式,其核心代码为:

3 网络架构中的可视化关键技术与实现

3.1 Tilcon可视化原理

基于Tilcon软件的可视化图形的开发过程包含如下3个部分:

1)嵌入式图形开发工具:负责完成界面的绘制,能够通过调用各种不同的控件构建复杂的可视化图形界面。除了成熟的控件外,Tilcon也支持自定义控件设定功能,控件选项中还包含回调函数和触发器等配置,通过这些选项能够完成控件之间的相互关联,这些控件除了数据显示以外与用户的应用程序完全分离开来,仅靠控件自身的ID与应用程序进行关联,最终生成被可视化界面引擎所调用的.twd图形资源文件。

2)嵌入式图形界面引擎:独立于应用程序之外的一个系统,除了能够执行API函数对界面上的控件进行设置显示之外,还可以对显示控件的数据结构进行维护,它是将VxWorks操作系统下界面显示与.twd图形资源文件进行连接的桥梁。

3)应用程序接口函数API:应用接口程序函数API是将应用程序和图形界面连接起来的协议,通过调用这些API函数能够完成对应控件的初始化、数据显示和其他功能操作。

图4所示为基于Tilcon软件由数据获取到界面显示的过程,其关键性运行步骤为:

1)通过外部通信的方式获取采集到的数据;

2)通过调用应用接口程序API将显示用的控件进行初始化;

3)载入嵌入式图形界面引擎;

4)完成图形界面的显示。

3.2 多页面切换技术

对于需要显示较多数据的系统,通常需要通过不同的窗口分类显示,Tilcon软件下的多页面切换一般有如下2种方法:

1)采用多张.twd图形资源文件,每次需要切换页面的时候将当前页面的.twd图形资源文件删除,接着载入另外一张.twd图形资源文件并进行显示。优点是每次只载入需要显示的窗口控件,但是要耗用大量的内存,每次切换界面都需要删除并且载入.twd图形资源文件,切换过程中屏幕闪烁严重,且可能造成死机的问题。

2)采用panel控件方式,只采用一张.twd图形作为界面底图,设置多个panel控件,所有显示用控件均放置在panel控件中,通过切换panel控件的方式来完成界面切换,程序初始化的时候仅载入主panel窗口,其余panel窗口通过TRT_SetValues函数将其TRT_ATT_HIDE参数设置为0进行隐藏。优点是只采用一张.twd图,每次只需要显示当前页面的panel控件,将其余panel控件进行隐藏,虽然需要实时设置所有控件的数值,但是比起第1种方法,极大地减少了内存的使用,同时也提高了切换速度。

经过对比可知,采用panel控件切换界面的方式节约了系统内存,降低了系统任务级的开销,提高了切换速度,相对于采用.twd图形文件切换的方式优势明显。

本文采用panel控件的方式进行界面切换,解决了Tilcon下多页面切换中屏幕闪烁严重和内存占用过大的问题,避免了因为内存不足而造成频繁死机的难题。

3.3 界面启动与刷新技术

可视化系统上电之后,自动载入.out文件,入口函数为main,接着执行如图5所示的流程,进行启动与刷新,其关键步骤为:

1)通过TRT_Start函数启动界面引擎,将VxWorks系统和Tilcon的插件进行关联,关联之后才可以调用API函数对界面中的控件进行设置操作;

2)调用TRT_WindowLoad函数,从界面路径之中获取.twd文件,并载入系统内存之中;

3)调用TRT_WindowDisplay函数将.twd文件加载至窗口进行显示,至此界面启动完毕;

4)进入应用程序主循环,应用程序可以通过TRT_GetInput函数,获取外部鼠标或者键盘按键输入;

5)调用TRT_SetValues函数,将通过以太网通信获取的数据用于设置对应控件的数值,以刷新界面的显示内容。

3.4 故障报警和记录技术

VxWorks软件支持文件系统,为防断电之后数据丢失,可以将数据存储至文本文件之中。当报警信息由0变为1(即上升沿触发)时判定报警发生,将报警信息及其当前时标等参数写入文本文档中,在以下2种情况下需要进行报警文本的读写:

1)每次开机初始化调用read()函数,将报警记录文本文档中的内容拷贝至结构体数组之中;

2)每次触发报警之后,调用Write()函数将结构体数组写入报警记录文本文档中。

基于VxWorks系统下实现文本的写入操作步骤为:

4 工程化验证

为了验证应用于舰船能量管理系统中的VxWorks可视化技术的有效性,将上述可视化设计技术进行工程化验证。工程样机的配置为:

1)图形可视化开发软件为Tilcon5.8;

2)软件开发平台为Work Bench3.2;

3)操作系统为VxWorks6.8。

本文以能量管理系统中供电部分的可视化设计为例进行说明,该可视化设计由1#机组参数栏(又称主窗口)、2#机组参数栏、3#机组参数栏、4#机组参数栏、1#柴油发电机参数栏、2#柴油发电机参数栏以及报警记录栏7个窗口组成。其设置情况为:

1)1#机组参数栏(主窗口):负责显示1号机组机柜温度、机组状态、三相电压、三相电流、有功功率、无功功率以及频率等参数,采用了指示灯、文本框、条形图以及数字仪表等多种控件,增加了可视化效果,并且添加了时间显示。

2)2#机组参数栏、3#机组显示栏和4#机组显示栏:分别显示了2#机组、3#机组以及4#机组的相关参数,它们的显示内容与1#机组参数栏(主窗口)类似。

3)1#柴油发电机参数栏和2#柴油发电机参数栏:用于监测2台柴油发电机的运行状态,显示柴油发电机的输出电压、输出电流、频率、机油压力和冷却系统温度等参数,同时能够对过压、过流、超频等故障进行报警显示。

4)报警记录栏窗口:负责记录4台机组以及2台柴油发电机的故障信息,将报警信号按照级别进行分类,不同的报警信号用不同的颜色显示,同时显示报警时间,保证了重要信息的存储。

由于篇幅有限,本文仅给出了1#机组参数栏和报警记录栏工程样机设置界面图。其中,图6显示的是1#机组参数栏的界面,它负责显示1#机组的运行、准备以及遥控状态,同时监测1#机组机柜的进出风温度的越限报警等状态参数,其中模拟量参数以3种形式分别显示:

1)以文本框的形式显示1#机组的电压功率等模拟量参数;

2)以柱状图的形式显示当前1#机组的带载情况;

3)以仪表盘的形式显示1#机组的转速以及滑油压力等参数。

图7所示为报警记录栏的界面,它采用表格的方式显示报警信息,显示了4台机组以及2台柴油发电机的一类故障或二类故障等报警信号,并且区分了报警级别,记录了报警时间。

经工程验证,实现了应用于舰船能量管理系统中的VxWorks可视化技术、多页面切换技术、界面启动与刷新技术,同时解决了页面切换过程中屏幕闪烁、内存不足而造成频繁死机以及重要信息遗失等问题。

5 结 语

本文研究了应用于舰船能量管理系统中的VxWorks可视化设计技术,以UDP通信为核心,采用实时性高的VxWorks操作系统以及具有较高可维护性和可靠性的Tilcon软件进行图形可视化开发,着重分析了网络架构中Tilcon可视化原理、多页面切换技术、界面启动与刷新技术以及故障报警和记录技术,解决了界面启动刷新显示、多页面切换由于内存不足而导致经常死机以及重要信息遗漏丢失等问题。工程样机的现场实测结果表明,该方法能够成功应用于舰船能量管理的可视化系统,且具有运行稳定、操作简洁、实时性高等优点,是比较理想的图形界面解决方案,具有较高的推广应用价值。

猜你喜欢
调用控件报警
基于C++Builder 的电子邮件接收程序设计*
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
系统虚拟化环境下客户机系统调用信息捕获与分析①
小心,墙纸在报警
2015款奔驰E180车安全气囊报警
2014款奥迪Q5车发动机OBD灯报警
死于密室的租住者
基于属性数据的系统调用过滤方法
利用RFC技术实现SAP系统接口通信