多普勒计程仪上位机软件设计

(整期优先)网络出版时间:2020-05-07
/ 2

多普勒计程仪上位机软件设计

陈晨

中国船舶重工集团有限公司第七一 0研究所 湖北 宜昌 443003

摘要:多普勒计程仪是一种根据声波在水中的多普勒效应原理而制成的一种精密测速和测深的设备。多普勒计程仪上位机用于多普勒计程仪单机调试、跑船测试以及内记数据回收处理等。多普勒计程仪上位机采用C#语言编写,开发环境为VisualStudio2010,数据库采用SQLite,通过分层设计、多线程、异常处理机制等多种技术完成了性能可靠的多普勒计程仪上位机。

关键词:多普勒计程仪、上位机、多线程、SQLite

引言

当今,随着海洋事业水下资源勘探和海上运输的快速发展,无论是航行在海面上的船舶还是工作在水面下的潜艇都需要高精度的速度信息[1]。在陆地上主要有运用电磁波的雷达系统和卫星系统来提供导航定位和速度信息[2]。因为海水对无线电波吸收很大,所以对于水下潜器(包括潜艇、自主水下运载器AUV等)来说这些测速系统无法使用[3]。多普勒计程仪是一种根据声波在水中的多普勒效应原理而制成的一种精密测速和累计航程的仪器,由于其准确性好、灵敏度高的特性,已广泛应用于水下导航领域。

软件功能与架构

多普勒计程仪上位机采用C#语言编写,开发环境为VisualStudio2010,数据库为SQLite。其主要功能包括:

a) 接收并处理多普勒计程仪、GPS接收机、姿态传感器等发送的数据;

b) 显示接收的数据,绘制速度曲线、深度曲线等;

c) 实时绘制多普勒导航的轨迹图和GPS导航的轨迹图,并计算导航误差;

d) 可回收多普勒计程仪内记数据,并对回收数据进行统计与分析;

d) 提供导航数据回放、测速离线补偿等辅助工具。

多普勒计程仪上位机采用分层设计模式,从上至下依次为:UI(表现层)、BLL(业务逻辑层)、DAL(数据访问层)、Model(数据实体层),如图 1所示。

5eb3ce793587e_html_4c24a8929feff478.gif

图 1软件架构图

UI(表现层):主要是指与用户交互的界面,包括主界面、导航界面、数据分析界面、数据统计界面等;

BLL(业务逻辑层):实现业务逻辑,由DVL通信类、GPS通信类等组成;

DAL(数据访问层):实现对文本文件以及数据库的交互。包括数据的增、删、改、查。

Model(数据实体层):各种数据实体类,用于在不同层之间传递数据。

UI层设计

得益于Visual Studio所见即所得的窗体设计器,UI层的实现效率得到了大幅提高。用TextBox、ComboBox、Button等控件完成常规项目的显示,通过Chart控件实现曲线、极坐标图,通过DataGridView控件实现报表。图 2为导航主界面。

5eb3ce793587e_html_586a246e9473874a.gif

图 2导航主界面

业务逻辑层设计

业务逻辑层主要包含三大块:与多普勒通信、与GPS接收机通信、与姿态传感器通信。为了同时兼容D300型和D300a型多普勒计程仪,设计了D300Communicator和D300aCommunicator两个通信子类分别负责与D300型和D300a型多普勒计程仪通信,它们都继承自抽象类DvlCommunicator。为了兼容不同型号的姿态传感器,设计了AhrsCommunicator、MCL200Communicator、OctansCommunicator和StarNetoCommunicator4个通信子类分别与AHRS姿态传感器、MCL200型磁罗盘、Octans光纤罗经和StarNeto磁罗盘通信,它们都继承自抽象类CommpassCommunicator。图 3用UML图展示了与多普勒计程仪通信的三个类之间的关系。

5eb3ce793587e_html_19fdfa9b29a0829.gif

图 3多普勒计程仪通信类UML图

数据库设计

本软件采用SQLite数据库,SQLite是一个轻量级、跨平台的关系型数据库,相比MYSQL、SQL Server数据库,它有着小巧、快速的优点,尤其是SQLite免安装、无需部署的特性使最终用户使用起来更方便。与Access数据库相比,它又有着稳定、高性能、跨平台等优点。另外,SQLite支持事务的处理,在本软件中,便是通过事务来将回收的大量数据实时写入数据库。

本软件通过System.Data.SQLite.dll动态链接库来访问SQLite核心库,以实现x86与x64的兼容,数据访问层中SQLiteHelper类打包了某些常用功能,方便上层调用。

回收内记数据时,需要同步将数据保存至数据库,如果采用常规的写入方式,在数据量较大时,写入耗时增加,会出现数据写入速度不够而漏帧的情况。本软件利用事务来实现高性能写入,在开始回收时,创建事务,然后每分钟提交事务,并创建新的事务直至回收结束。

健壮性设计

为提高程序的稳定性、可靠性,本软件采用了以下设计方法:

a) 利用多线程技术来提高程序稳定性,将通信、数据回收等任务放在后台单独线程进行,避免用户在界面上的操作影响通信及数据回收;

b) 通过try…catch语句来捕获可能的异常,视异常情况来决定是否通过弹窗向用户反馈;

c) 将捕获的所有异常都记录到日志中,保证故障可追溯;

d)在应用程序的入口处增加事件来处理UI线程异常和非UI线程异常,来保证出现未知异常时程序能恢复,并且能记录异常。

结语

通过三层软件架构与多种设计模式的结合,使程序结构清晰、逻辑清楚,具有较好的拓展性和可维护性。通过引入SQLite数据库,使程序部署使用方便,数据写入可靠高效。通过多线程技术与一些异常处理手段使程序在高负荷运作时依旧稳定可靠。总之,本文通过多种技术的组合应用完成了性能可靠的多普勒计程仪上位机。

参考文献

[1]付志霞,多普勒计程仪海底回波信号模拟器设计.(硕士学位论文).大连,大连海事大学,2012.

[2]罗维,多普勒计程仪的信号处理算法研究与系统软件设计.(硕士学位论文).杭州,杭州电子科技大学,2014.

[3]张占阳,宽带多普勒计程仪测频方法及其软件设计.(硕士学位论文).哈尔滨,哈尔滨大学,2010.