资源描述
摘要
基于C#计程仪速度精度分析处理机软件主要用于测定计程仪的速度精度,而作为其核心模块的数据收发处理模块是一个发送数据,接受数据,处理数据,显示图形,打印报表的模块。本文主要探讨了数据收发处理模块C#编程实现,基于Visual Studio 2005开发环境实现了该模块的设计与开发。
文中围绕模块开发的基本框架图展开,详细介绍了几种数据格式,并通过串口实时采集这些数据,通过字符串的方法提取有效的数据信息。借鉴了一些航海学的方法来进行算法设计,通过这些算法把这些有效的数据进行相应的转换,得到所需的速度参数值,将结果用全新的编程语言C#和第三方软件MEASUREMENT STUDIO实现图形显示,并以水晶报表的形式进行打印。
论文最后论述了该模块在现实应用中的深远意义,以及对本次设计任务作了全面细致的总结。
关键词:数据处理,图形显示,串口通信,水晶报表
ABSTRACT
The software of Measurement Speed-precision for Velocity Logs (VL) based on C# is used in testing speed.Data Transceiver Module as core module of software is a module that sending data,receiving data,processing data,displaying graphic and printing report.Thesis focus on designing and developing Data Transceiver by C# program language,we complete it on the base of the Visual Studio 2005 development environment.
Thesis tells around the structure picture of module developing. Introduces several date format and use com to receive these dates in real time, extract valid date information through method of string. Refer to the method of navigation in designing the arithmetic, convert to these valid dates through this arithmetic. At last acquire the speed value of parameter, Display the result in graph using the latest C# Programming Language and the third party system measurement studio, print the result in the form of Crystal Report Forms.
At the end of thesis describes outstanding signification for the module in the application . And summarize this duty of thesis for whole aspects.
Keywords: Data processing,Graphic display,serialPort communication,Crystal Report
目录
摘要……………………………………………………………………………………..I
ABSTRACT…………………………………………………………………………...II
第1章 绪论…………………………………………………………………………...1
1.1 系统开发目的、背景及意义 1
1.2 国内外文献综述 1
1.3 研究内容 2
第2章 开发语言与开发工具………………………………………………………...3
2.1 开发工具VISUAL STUDIO介绍 3
2.2 开发工具MEASUREMENT STUDIO介绍 4
2.3 开发语言C#介绍 5
2.4 本章小结 5
第3章 系统开发的基本原理………………………………………………………...6
3.1 模块开发的基本框架图 6
3.1.1 模块开发的基本流程图 8
3.1.2 模块开发的数据流程图 9
3.2 通信协议介绍 10
3.2.1 SF2050/MS860 DGPS设备提供的数据格式 10
3.2.2 高精度平台罗经(或惯导)设备提供的数据格式 11
3.2.3 多普勒计程仪设备提供的数据格式 13
3.3 数据的处理方法 14
3.3.1 准实时法 14
3.3.2 中分纬度法 17
3.4 本章小结 18
第4章 程序的设计与实现………………………………………………………….19
4.1 数据收发处理模块功能和主界面参数介绍 19
4.2 文件系统数据 21
4.2.1 StreamWrite对象 22
4.2.2 StreamRead对象 23
4.3 定时器的程序设计方法 24
4.4 串口编程 24
4.4.1 委托和事件 24
4.4.2 回调函数 25
4.5 Windows和Measurement Studio控件的使用 26
4.6 字符串的处理 27
4.6.1 分隔符 27
4.6.2 正则表达式 27
4.7 航向角与字节之间的转换 28
4.7.1 航向角到字节的转换 28
4.7.2 字节到航向角的转换 30
4.8 图形的显示程序 32
4.9 水晶报表的使用 32
4.10 本章小结 33
第5章 结论 34
致谢 35
参考文献 36
- 36 -
第1章 绪论
1.1 系统开发目的、背景及意义
多普勒计程仪[1]作为一种能够提供船只相对于海底运动特征的海军军工设备。它最显著的特点是能够提供船舶的速度信息,能够准确测出船速为零或接近于零时船只的运动矢量。多普勒计程仪(DVL)速度精度分析处理机软件是中科院声学研究所2006年研制开发,主要使用C++ builder编写程序,主要作用是测定多普勒计程仪速度的精度,证明多普勒计程仪的速度精度是达到技术指标要求的。多普勒计程仪一般研制出厂后用该软件来测定速度精度,所以该软件在现实应用中有重大意义。但该软件在图形界面上还是有些欠缺,它不能给用户提供一个良好的图形界面,从某种意义上说不能完全满足客户的需求,为进一步优化该软件,我们选择全新的编程语言C#和新的开发平台VS2005,因为它对外提供了一个良好的接口,能集成第三方软件MEASUREMENT STUDIO,这个软件能给我们提供丰富图形控件,为我们在优化图形界面上提供了便利。
基于C#计程仪速度精度分析处理机软件是多普勒计程仪速度精度分析处理机软件进行平台移植后的名称。数据收发处理模块是一个发送数据,接受数据,处理数据,图形显示和打印报表的模块。该模块是基于C#计程仪速度精度分析处理机软件的核心模块,该模块实现了数据的收发,处理和图形显示等功能,完成了基于C#计程仪速度精度分析处理机软件的核心功能,优化了原有软件的图形界面。所以数据收发模块在整个开发中有着深远的意义。通过编写该模块,本人进一步熟悉C#语言和VS2005开发环境,并为以后工作的项目开发做了更好的铺垫和充分的准备。
1.2 国内外文献综述
多普勒计程仪是一种重要的测速仪器[2],利用它可以测得舰船的航速、航程等参数。随着航海事业的发展,计程仪也在不断的更新。十九世纪中期制成了叶轮式测速计程仪。二十实际二十年代研制成水压式计程仪。到二十世纪中期,利用法拉第电磁感应原理制成的电磁式计程仪,弥补了水压式计程仪不能测量倒车速度以及测速灵敏度低的缺陷[3]。但是,上述各类计程仪本质上都是测量船只相对于周围海水的速度,而不是船只相对于海底的真实速度。近年来,GPS卫星导航系统[4]在船舶导航方面得到了广泛的应用,它具有功能强,精度高的特点。但是,它的使用也与一定的局限性,GPS导航系统的工作依赖于卫星,假设卫星通信系统受到外界干扰,或者在站时被关闭,这将导致GPS导航系统陷入瘫痪。计程仪属自主式声学导航系统,可独立工作,而不需要外界辅助设备。利用它可以测得舰船的对底速度、航程等参数,具有较高的精度,同时它弥补了其它导航手段的不足,它在导航技术的发展方面有着举足轻重的作用。
多普勒计程仪[5]速度精度分析处理机软件,进行速度精度的测定时,需要一台数据处理计算机。数据处理计算机通过串行口与被测的多普勒计程仪、高精度平台罗经以及MS860 DGPS相连。多普勒计程仪提供实测的船的纵向速度和横向速度,高精度平台罗经提供瞬时航向,MS860 DGPS 提供两个不同时刻的船的位置和航迹向,再通过多普勒计程仪速度精度分析处理机软件进行分析,可得出多普勒计程仪的纵向和横向测速精度。基于C#计程仪速度精度分析处理机软件是多普勒计程仪速度精度分析处理机软件平台移植后的名称。作为其核心模块的数据收发处理模块是一个模拟设备发送数据,接受数据,处理数据,显示图形和打印报表的模块。在完成原有软件功能的同时,利用第三方软件MEASUREMENT STUDIO优化了软件的图形界面,丰富了软件的内容,进一步升级和维护了原有的软件。
1.3 研究内容
多普勒计程仪是一台测速仪器,如同所有的测量仪器,它也要有一个测量的精度,对此本人编写了基于C#数据收发处理模块模拟数据发送,接受数据,处理数据,最后来测定它的测速精度。本人主要使用定时器来模拟三台设备(高精度平台罗经和DGPS,多普勒计程仪)发送数据,再通过串行通信进行对数据的实时采集,采集过来的数据使用字符串处理方法提取分析有效的数据,并且通过现有的基于航海学的数据处理方法进行算法设计,得到由高精度平台罗经和DGPS组成的测速参照系统的速度值和多普勒计程仪的速度值,将速度参数值通过图形显示出来,最后通过水晶报表打印数据结果,从而为测定计程仪的速度精度提供了可靠的科学数据。
第2章 开发语言与开发工具
本毕业设计用到了C#开发语言和Visual Studio 2005开发环境,之所以选择这个开发环境和开发语言主要是C# 从 Microsoft C 和 Microsoft C++ 演变而来,它是一种简单、现代、类型安全和面向对象的语言,吸取了C++和VB的优点,从而缩减了开发软件的周期和提高了开发效率。而为什么会原则VS2005,是因为它提供了非常良好的接口,可以兼容很多第三方软件,如本软件用到的NI Measurement Studio,如果有人用过LABVIEW肯定对这个系统不陌生,因为这个系统的很多控件就是来源于LABVIEW。所以有了非常好的开发工具,对我在开发本模块上提供了很多的便利和帮助。
2.1 开发工具Visual Studio介绍
Visual Studio[7]是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
Microsoft Visual Studio 2005[8]Tools for the Microsoft Office System 使用 Visual Basic 和 Visual C# 扩展了 Word 2003 文档和 Excel 2003 工作簿,可帮助您创建解决方案。Visual Studio Tools for Office 包括新的 Visual Studio 项目,用于创建 Word 文档、Word 模板、Excel 工作簿和 Excel 模板的后台代码。
Visual Studio 提供了一个全新的网页设计器(称为 Visual Web Developer),其中包含了许多用于创建和编辑 ASP.NET 网页和 HTML 页的增强功能。该设计器提供了比在 Visual Studio .NET 2003 中更简单、更迅速的 Web 窗体页创建方法。
Visual Web Developer全面改进网站开发的各个领域。您可以创建网站并将其作为本地文件夹来进行维护,也可以将其放在 Internet 信息服务 (IIS) 中,或放在 FTP 或 SharePoint 服务器上进行维护。Visual Web Developer 设计器支持所有的 ASP.NET 增强功能,包括可以简化许多 Web 开发任务的近二十余种新控件。
Visual Studio 集成环境包括用于目标设备(如 PDA 和 Smartphone)的工具。改进功能包括 Visual C++ 工具和本机设备运行库、托管设计器(提供改进的特定于平台的 WYSIWYG 和多种外观设置支持)、新的仿真程序、类似于桌面的数据处理工具,以及最终用户部署项目(消除 .inf 文件的手动编辑工作)。
Windows 窗体用于在 .NET Framework 上创建 Microsoft Windows 应用程序。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。
2.2 开发工具Measurement Studio介绍
NI Measurement Studio 是为Visual Studio .NET和Visual Studio 6.0环境提供的一个集成式套件,包括各种常用的测量和自动化控件、工具和类库。NI Measurement Studio带有的ActiveX和.NET控件、面向对象的测量硬件接口、高级的分析库、科学的用户界面控件、测量数据网络化、向导、交互式代码设计器和高扩展性类库等功能,极大的减少了您应用程序的开发时间。
NI 公司以超过16年的专业测量编程经验为背景,开发出了Measurement Studio这一编程平台。它带有专门为微软Visual Basic、Visual C# .NET和 Visual C++语言而设计的各种测量工具,使您简化了与数据采集和仪器控制接口的结合,从而更加方便的实现硬件集成。利用Measurement Studio,您可以在您已有的Visual Studio编程知识基础上,快速启动测量并创建一个完整的测量解决方案——从采集到分析直到显示。
Measurement Studio提供了一系列与Visual Studio .NET 2005环境紧密结合的.NET控件,专门为科学家和工程师建立虚拟仪器系统而设计。利用Measurement Studio,您可以从交互式向导里配置插入式数据采集设备、GPIB仪器和串口设备,也可以从中生成Visual Basic .NET或Visual C# .NET源代码。利用科学用户界面控件,您可以在属性页面或收藏编辑器里交互地配置图表、旋钮、仪表、标尺、表盘、容器、温度计、二位开关和LED灯等。此外,Measurement Studio还提供了强大的网络组件,这样您就可以轻松地通过互联网在应用程序之间共享实时测量数据了。
2.3 开发语言C#介绍
Microsoft C#(读作 C sharp)是一种新的编程语言,它是为生成运行在 .NET Framework 上的、广泛的企业级应用程序而设计的。C# 从 Microsoft C 和 Microsoft C++ 演变而来,它是一种简单、现代、类型安全和面向对象的语言。C# 代码被作为托管代码编译,这意味着它能够从公共语言运行库的服务中受益。这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。
C# 在 Visual Studio .NET 套件中作为 Visual C# 引入。对 Visual C# 的支持包括项目模板、设计器、属性页、代码向导、一个对象模型以及开发环境的其他功能。Visual C# 编程的库是 .NET Framework。
2.4 本章小结
本节主要介绍了模块开发过程中所使用到的一些开发工具包括Visual Studio 2005,第三方插件National Instruments Measurement Studio和开发语言C#的一些特点,作用和适用范围,为进一步介绍模块开发奠定了基础。
第3章 系统开发的基本原理
3.1 模块开发的基本框架图
图3-1 模块开发的基本框架图
模块开发的基本框架图(图3-1)中,需要一台带有四个串口的数据处理计算机(图3-2)。数据处理计算机有两个RS422和两个RS232串口(图3-3),它通过串行口与另外三台外围设备相连。其中MS860/SF2050 DGPS设备和高精度平台罗经/惯导设备组成测速参照系统,MS860/SF2050 DGPS设备提供遵循GPS通信NEMA0183协议(见下一节通讯协议)数据的时间经度纬度信息,高精度平台罗经/惯导设备提供航向信息,通过这些信息再根据现有的准实时法和中分纬度法(见下一节数据处理方法),得到测速参照系统速度;多普勒计程仪设备提供多普勒计程仪速度信息。通过基于C#数据收发处理模块实现接受数据,处理数据,图形显示和报表打印功能。其中数据收发处理模块包括数据发送模拟程序和数据接受处理程序。在其中一台数据处理安装数据发送模拟程序,再在另外一台数据处理计算机安装数据接受处理程序,进行数据收发处理程序的调试实验。首先在数据发送模拟程序中读取文件数据,通过定时器定时发送数据,再将这些数据写入串口中;在数据接受处理程序中,我们通过读串口数据,再通过字符串处理方法进行提取分析有效数据,并且借鉴航海学的知识进行算法的设计,得到速度等参数,最后通过图形显示和报表打印速度信息参数。
图3-2 带四个串口的数据处理机
图3-3 两个RS232和两个RS422串口
3.1.1 模块开发的基本流程图
图3-4 模块开发的基本流程图
数据收发处理模块包括数据发送模拟程序和数据接受处理程序。在其中一台数据处理安装数据发送模拟程序,再在另外一台数据处理计算机安装数据接受处理程序,进行收发处理程序的调试实验。首先在数据发送模拟程序中读取文件数据,通过定时器定时发送数据,再将这些数据写入串口中;在数据接受处理程序中,通过读串口数据,再通过字符串处理方法进行提取分析有效数据,并且借鉴航海学的知识进行算法的设计,得到速度等参数,最后通过图形的显示和报表的打印。这里简单介绍一下数据发送模拟程序中涉及到的数据来源,我们模拟发送的三中数据格式分别来自由美国制造的高精度平台罗经(或惯导),高精度差分卫星定位仪(SF2050/MS860 DGPS)和多普勒计程仪通讯协议。其中高精度平台罗经和DGPS两台设备组成测速参照系统,而被测的多普勒计程仪以此为标准,它的速度与测速参照系统的速度值进行对照就可以测得多普勒计程仪的速度精度[10]。数据接受处理程序通过串行接口接收对底/水实时测量的速度数据、DGPS输出的地理位置数据和航向数据、罗经或惯导输出的航向数据,实时分析多普勒计程仪的测速精度。
3.1.2 模块开发的数据流程图
是
显示区域清空
初始化状态变量
定时器模拟发送数据
通过串口接受数据
关闭文件
是
去野点
否
分析处理读取数据
图形显示
报表打印
从文件中读取数据
文件末尾?
关闭已打开的数据文件
去野点?
否
结束退出
图3-5 模块开发的数据流程图
图3-5中,模块开发的数据流程图中,数据收发处理模块根据这个数据流程图对数据进行处理,首先关闭已打开的的数据文件,清空显示数据文本框,初使化状态变量,从文件中读取数据,判断文件是否到末尾,如果是则关闭文件,结束退出;如果不是则通过定时器发送数据,再通过串口实时接受数据,判断是否要去野点,如果不要去野点,则直接分析处理读取数据;如果要去野点,则先去野点处理,在分析处理读取数据;最后通过图形显示和报表打印速度信息结果。
3.2 通信协议介绍
上一节提到了数据接受处理程序可以通过串口实时的接受另外一台数据计算机的数据格式,这一节介绍一下这些数据的格式。
3.2.1 SF2050/MS860 DGPS设备提供的数据格式
1.GPGGA数据格式
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
传送的信息说明如下:
$GPGGA: 起始引导符及语句格式说明(本句为GPS定位数据)
<1> UTC时间,时时分分秒秒格式
<2> 纬度,度度分分.分分分分格式(第一位是零也将传送)
<3> 纬度半球,N或S(北纬或南纬)
<4> 经度,度度分分.分分分分格式(第一位零也将传送)
<5> 经度半球,E或W(东经或西经)
<6> GPS质量指示,0=方位无法使用,1=非差分GPS获得方位,2=差分方式获 得方位(DGPS),6=估计获得
上面介绍了GPGGA数据格式,那我们就以实验中的一组数据为例进行相应的说明:
$GPGGA,005704.00,3118.424765,N,12133.529287,E,2,08,1.1,5.935,M,11.275,M,9.0,0130*42;
$GPGGA,005706.00,3118.428653,N,12133.528714,E,2,07,1.5,5.928,M,11.275,M,9.0,0130*41;
其中005704和005706为UTC时间,3118.424765和3118.428653为纬度,N为北纬,12133.529287和12133.528714为经度,E为东经。2和2为差分方式获得方位(DGPS),而程序中所需要的数据就这些。
2. GPHDT数据格式:
$GPHDT - Heading, True
上面介绍了GPHDT数据格式,那就以实验中的一组数据为例进行相应的说明:
$GPHDT,350.434,T*30
$GPHDT,350.396,T*3F
其中350.396和350.434为所需要的航向数据。这两种数据格式遵循GPS[9]通信的NMEA0183协议。
3.2.2 高精度平台罗经(或惯导)设备提供的数据格式
1.惯导通讯协议
1)接口标准:按EIA RS-422A接口通讯标准,串行异步;
2)传输速率:19200 bit/s,每秒20次;
3)数据编码:二进制补码、起始位1位、数据位8位、无奇偶校验位、停止位1位、低字节先发;
4)数据格式与内容:
表3-1 惯导通讯协议表
序号
字段名称
字段长度
信息名称及说明
1
通信标志
2
0xA10xA2
2
状态标志
1
“0x81”表示数据有效,“0x80”表示数据无效
3
航向角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为360°×2-22。航向无符号,D23、D22位填0。
4
纵摇角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为45°×2-22。
符号位“0”为正(艏高),“1”为负(艏低)。
`5
横摇角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为45°×2-22。
符号位“0”为正(左舷高),“1”为负(左舷低)。
6
结束标志
1
0xBF
上面介绍了惯导数据格式,那就以实验中的一组数据为例进行相应的说明:
A1 A2 81 39 21 2E 00 00 00 00 00 00 BF
A1 A2 81 E9 6D 3B 00 00 00 00 00 00 BF
其中81 39 21和81 E9 6D三个字节为所需要的航向数据。
2.平台罗经通讯协议
1)接口标准:按EIA RS-422A接口通讯标准,串行异步;
2)传输速率:19200 bit/s,每秒40次或者20次;
3)数据编码:二进制补码、起始位1位、数据位8位、奇校验1位、停止位1位、低字节先发;
4.数据格式与内容:
表3-2 平台罗经通讯协议表
序号
字段名称
字段长度
信息名称及说明
1
通信标志
2
0xA10xA2
2
状态标志
1
“0x81”表示数据有效,“0x80”表示数据无效
3
航向角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为360°×2-22。航向无符号,D23、D22位填0。
4
纵摇角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为45°×2-22。
符号位“0”为正(艏高),“1”为负(艏低)。
5
横摇角
3
3个字节(D23~D0),D23、D22为符号位,D21~D0为有效位。D0的位权为45°×2-22。
符号位“0”为正(左舷高),“1”为负(左舷低)。
6
结束标志
1
0xBF
上面介绍了惯导数据格式,那就以实验中的一组数据为例进行相应的说明:
A1 A2 81 39 21 2E 0 0 0 0 0 0 BF
A1 A2 81 E9 6D 3B 0 0 0 0 0 0 BF
其中81 39 21和81 E9 6D三个字节为所需要的航向数据。
3.2.3 多普勒计程仪设备提供的数据格式
1.数据格式有两种
1)无深度、航程信息
$VDVBW,sww.ww,sxx.xx,a,syy.yy,szz.zz,a*cc<CR><CF>
2)有深度、航程信息
$VDVBW,sww.ww,sxx.xx,a,syy.yy,szz.zz,a,ppp.pp,qqqq.qq*cc<CR><CF>
$ —— 起始标志;
VD —— 多普勒测速系统标志;
VBW —— 数据内容标志;
s —— s = +/-,“+”表示前进方向运动,“-”表示后退方向运动;
ww.ww —— 对水层纵向速度,kn (精确到0.1kn);
s —— s = +/-,“+”表示右舷方向运动,“ -”表示左舷方向运动;
xx.xx —— 对水层横向速度,kn (精确到0.1kn);
a —— 数据状态。A表示对水测速数据有效,V表示数据无效;
s —— s = +/-,“+”表示前进方向运动,“ -”表示后退方向运动;
yy.yy —— 对底纵向速度,kn (精确到0.1kn);
s —— s = +/-,“+”表示右舷方向运动,“ -”表示左舷方向
运动;
zz.zz —— 对底横向速度,kn (精确到0.1kn);
a —— 数据状态。A表示对底测速数据有效,V表示数据无效;
ppp.pp —— 当对底测速时,为换能器基阵表面[11]至海底的深度;对水测速时为工作水层的深度,m。
qqqq.qq —— 单次航程,nm。
上面介绍了计程仪通讯协议,那就以实验中的一组数据为例进行相的说明:
$VDVBW,+00.00,+00.00,V,+06.93,+00.12,A,010.50*7F
$VDVBW,+00.00,+00.00,V,+07.00,+00.11,A,010.50*77
其中第一个+00.00表示前进运动方向上对水层纵向速度,第二个+00.00表示右舷运动方向上对水层横向速度,V表示对水测速数据无效,+06.93和+07.00表示前进运动方向上对底层纵向速度,+00.12和+00.11表示右舷运动方向上对底层横向速度,A表示对底测速数据有效,010.50表示深度,当对底测速时为换能器基阵表面至海底的深度,当对水测速时为工作水层的深度。单位为m。
3.3 数据的处理方法
数据接受处理程序的主要目的是测定多普勒计程仪的测速精度,现在我们可以通过串口得到计程仪实时测量的速度数据(该速度数据就是多普勒计程仪以船舶为载体,当船舶做匀速直线运动时所采集到的实时数据),而我们现在如果能够获得测速参照系统的速度测量值,就可以得到我们想要的分析数据,从而解决多普勒计程仪速度精度的测定问题。
这些数据的处理方法并不是本人研究,本人主要借鉴了同事们研究的成果,根据这些处理方法来指导软件思想,再通过软件思想进行程序的设计,最终完成软件的编写,最终实现了对多普勒计程仪速度精度的测定。下面我们主要介绍系统用到的处理方法。
3.3.1 准实时法
若对高精度平台罗经和高精度差分卫星定位仪(DGPS)所给出的数据进行准实时处理,则系统的精度就会进一步提高,从而满足计程仪的测速精度的测定要求。
新型的平台罗经的航向精度已经能达到0.1°,载体姿态测量精度达到0.02°,因此,航向BRGR(i)的测量误差对计程仪测速精度的测定不会构成明显的影响,载体姿态变化引起的误差经三角投影补偿后也可忽略。只要我们能提高DGPS的COG与SOG的精度,就能把这个系统当作测速参照系统。
若采用匀速直线运动,则我们可以将一小段航程段的航迹向与平均航速当作该航程段中点的COG与SOG。若航程段中点的航向为BRGR(i) 、航迹向为COGR(i)、航程段的航程为LR (i)而该航程段的航行时间为ΔTR(i),则
UYR(i) = LR (i) / ΔTR(i) × cos[COGR(i)- BRGR(i)] (3-1)
UXR(i) = LR (i) /ΔTR(i) × sin[COGR(i)- BRGR(i)] (3-2)
从上式还需要求解COGR(i), LR (i), ΔTR(i), BRGR(i) ,当然很容易从高精度平台罗精或者DGPS设备中求得BRGR(i) , ΔTR(i),但如何去求COGR(i), LR (i)就要用航海学的另一个方法,中分纬度法。通过以下代码可以求得上面的UYR(i)和UXR(i),首先通过AVR_LATITUDE(int i, int j)函数得到LR (i) / ΔTR(i),COGR(i),这个函数用到了中分纬度法,最后通过Post_Process()函数得到UYR(i)和UXR(i)。
表3-3 准实时法程序代码表
private void AVR_LATITUDE(int i, int j)
{
double Delta_LAT, AVR_LAT, Delta_LON;
double Dep;
double T1, T2;
LAT1 = DDGPS_LAT_E[i] * Cont;
LON1 = DDGPS_LON_E[i] * Cont;
LAT2 = DDGPS_LAT_E[j] * Cont;
LON2 = DDGPS_LON_E[j] * Cont;
T1 = DDGPS_TIME_E[i];
T2 = DDGPS_TIME_E[j];
if (T2 < T1) T2 = T2 + 24 * 3600;
Delta_LAT = LAT2 - LAT1;
AVR_LAT = (LAT1 + LAT2) / 2;
Delta_LON = LON2 - LON1;
Dep = Delta_LON *Math.Cos(AVR_LAT);
if (Delta_LAT != 0)
{
AVR_COG =Math.Abs((Math.Atan(Dep / Delta_LAT)) / Cont);
if ((Dep >= 0) && (Delta_LAT < 0)) AVR_COG =
180 - AVR_COG;
if ((Dep <= 0) && (Delta_LAT < 0)) AVR_COG =
-180 + AVR_COG;
if ((Dep <= 0) && (Delta_LAT > 0)) AVR_COG =
-1 * AVR_COG;
}
else
{
if (Dep > 0) AVR_COG = 90;
else AVR_COG = -90;
}
AVR_LOG =Math.Sqrt(Delta_LAT * Delta_LAT + Dep * Dep)
* 6371000 / 1852.0;
if (T1 != T2) AVR_SOG = (AVR_LOG / (T2 - T1)) * 3600.0;
}
private void Post_Process()
{
double delta;
int num1 = K - (NUM - 1) / 2;
int num2 = (NUM - 1) / 2;
double[] num11, num22;
num11 = new double[1000];
num22 = new double[1000];
num11[0] =num1;
num22[0] =K;
int K_Total = K - NUM + 1;
if (K >= NUM)
{
Bear_E[num1] = BearingN[num1];
展开阅读全文