RTX在半实物仿真中的应用

更新时间:2023-04-19 19:24:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业设计论文

I

摘 要

在导弹的控制系统半实物仿真中,为了确保高动态运动下的仿真可信度以及三轴转台、高精度惯导等仿真设备的安全,通常需要仿真时钟的推进与物理时钟保持严格同步,具体体现于仿真系统的实时性要求。

当前,采用Windows+RTX 实时系统平台构建实时仿真系统成为良好的解决方案,可以兼顾成本与性能。这种方法在实际工程中会带来两个方面的问题:首先,RTX 系统时钟的实测精度有限,尤其面对细粒度的半实物仿真时会带来置信度的下降;其次,当采用RTX 构建分布式实时仿真系统时,各个实时节点计算机时钟性能的差异会带来时钟同步误差。为了解决这两方面的实际问题,本毕业设计提出采用外部硬时钟作为时钟信号对仿真系统进行精确定时,论文主要完成了以下几个方面的工作:

1)研究RTX 自身软时钟定时方法,并结合真实的制导控制算法对其定时精度、稳定度进行详细的分析与测试;

2)在RTX 实时系统下基于工控机并口实现了外部周期性定时信号的采集以及中断驱动;

3)设计外部硬时钟定时精度测试方案,基于VC2005+RTX 实时内核采用多线程编程技术完成测试软件的编写,并针对硬时钟定时方案进行了详细的测试;

4)对两种定时方案的测试结果进行了对比分析,同时提出分布式实时系统硬时钟定时方案。

大量的测试对比结果表明,在系统空载情况下,单台仿真计算机外部硬时钟定时精度和RTX 软时钟定时的精度相当,在系统植入制导控制算法后,外部硬时钟定时方法体现出了优势,其定时稳定度以及精度相比更高,尤其是针对分布式实时仿真时有重要的工程应用价值。

关键词:半实物仿真,RTX ,外部硬时钟,并口。

本科毕业设计论文

II

ABSTRACT

In the hardware-in-the-loop simulation of the missile control system, in order to ensure the credence of experiment as well as the safety of three axis turntable or the high precision inertial navigation devices, we usually need the synchronization of simulation clock and physical clock. These all require the simulation systems running under real-time.

Nowadays, using the Windows+RTX real-time system platform as a real-time simulation system can settle the balance problem between cost and efficiency easily. This solution would bring about two problems: Firstly, the RTX system has finitude accuracy according to real test. When facing the fine grain hardware-in-the-loop simulation it would cause the decline of system reliability. Secondly, when using distributed hardware-in-the-loop simulation systems, which each real-time spot has their own clock, including the performance differences between the main simulation computer and other subordinate computer, will bring about clock synchronization errors.

Therefore, in order to achieve the clock unify scheduling in hardware-in-the-loop simulation systems, this paper came up with the idea of using outside hardware clock to synchronize simulation system. This paper mainly finished the works bellow:

1) Studied the RTX software clock timing method. Finished some detailed analysis and tests about timer accuracy and stability combined with guidance control algorithm.

2) Achieved external periodic timing signal acquisition and interrupt driver programming using the parallel interface under the RTX real-time system.

3) Designed the test scheme of the accuracy of external periodic timing signal. Finished the testing program using multithreaded programming technology of VC2005+RTX, and also have the hardware clock tested.

4) Compared and analyzed the two kinds of timing schemes, and also put forward the timing scheme of hardware clock using on distributed real-time systems.

A lot of test results show that, under no-load condition, the performance of hardware clock accuracy are hardly the same as the RTX software clock on single simulation computer. When running the guidance control algorithm program, the

本科毕业设计论文

III hardware clock has showed some advantages which have better accuracy and higher stability. Especially for distributed real-time simulation the hardware clock may have great engineering application value.

KEY WORDS :hardware-in-the-loop simulation, RTX, external hardware clock, parallel interface

本科毕业设计论文

IV

目 录

第一章 绪论 (1)

1.1半实物仿真技术的发展现状 (1)

1.1.1半实物仿真概述 (1)

1.1.2 半实物仿真发展现状 (1)

1.2 半实物仿真实验设备 (2)

1.3 本文主要研究内容与安排 (3)

第二章 RTX 实时仿真技术 (5)

2.1 RTX 实时系统 (5)

2.1.1 实时系统概述 (5)

2.1.2 RTX 实时系统工作原理 (6)

2.1.3 使用RTX 的优点 (7)

2.2 RTX 定时方法 (7)

2.2.1 RTX 时钟服务情况[2] (7)

2.2.2 实现RTX 定时 (8)

2.3 RTX 系统定时优缺点[3] (9)

2.4 本章小结 (9)

第三章 RTX 实时系统定时稳定性研究 (10)

3.1 RTX 定时程序API [2] (10)

3.2 RTX 实时系统软时钟稳定性测试方案 (11)

3.2.1 在VC2005下建立RTX 应用程序 (11)

3.2.2 编写RTX 定时器程序 (11)

3.2.3 完成定时器数据采集 (12)

3.3 RTX 内部软时钟定时测试数据分析 (13)

3.3.1 直接打印方式输出时钟数据 (13)

3.3.2 以文件方式输出时钟数据 (14)

3.4本章小结 (16)

第四章 RTX 下并口中断采集及定时 (17)

4.1 计算机并行端口功能概述 (17)

4.1.1并行端口简介[4] (17)

4.1.2并行端口访问: (18)

4.2 并口中断测试 (21)

本科毕业设计论文

V 4.2.1在RTX 下添加并口驱动 (21)

4.2.2 编写并口中断定时程序 (22)

4.2.3 外部中断引入 (25)

4.3 RTX 下并口采集外部硬中断定时数据分析 (26)

4.2.1 直接打印方式输出时钟数据 (26)

4.2.2 以文件方式输出时钟数据 (27)

4.2.3 用示波器检查时钟精度 (28)

4.3 本章小结 (30)

第五章 外部硬时钟定时精度对比与分析 (31)

5.1 RTX 软时钟定时与外部硬时钟定时精度对比 (31)

5.2 并口中断延迟测试 (32)

5.2.1 并口中断延迟[7] (32)

5.2.2 并口输出延迟验证 (33)

5.3 仿真过程中的定时测试 (34)

5.3.1 RTX 内部软时钟定时测试 (35)

5.3.2 并口外部硬时钟测试 (37)

5.4 本章小结 (39)

第六章 工作总结与展望 (40)

6.1 工作总结 (40)

6.2 工作展望 (40)

参考文献 (42)

致 谢 (43)

毕业设计小结 (44)

附 录 (45)

本科毕业设计论文

1

第一章 绪论

1.1半实物仿真技术的发展现状

1.1.1半实物仿真概述

半实物仿真又称为硬件在回路的仿真,指在仿真系统中接入实物以取代相应的数学模型,这样更能体现真实的情况下系统的反应从而获得更为准确的仿真信息。这种仿真实验会把仿真对象的动态特性通过建立数学模型、编程在计算机上运行。同时还需要有相关的模拟生成传感器用于测量环境的各种物理效应。由于有实物在仿真回路中,半实物仿真系统必须实时运行,因此半实物仿真系统可以归纳为以下几部分:

① 仿真计算机系统和接口;

② 环境模拟设备;

③ 被测实物(传感器、控制计算机、执行机构)。

仿真计算机是仿真系统的核心部分,它运行仿真环境和实体对象的数学模型和程序。无论从混合计算机到全数字仿真计算机,从PC 机到工作站再到巨型计算机,从通用计算机到专用计算机都可以在不同的仿真场合应用。

接口设备是仿真计算机输出的驱动信号经过接口的转换后驱动相应的环境模拟设备,接口设备同时把私服系统的控制输入信号也反馈给仿真计算机。

目标特性仿真器,以导弹仿真为例,有两种目标环境,一种是电磁效应,另一种是光学效应。不同的目标特性对应不同的目标环境,如射频目标仿真器用以提供辐射目标及背景的射频信号。

运动环境模拟器则包括目标运动仿真器和角运动仿真器(三轴转台),用于模拟被攻击目标相对导弹等的相对运动。

1.1.2 半实物仿真发展现状

从20世纪40年代开始,美国开始了飞行模拟器的设计,从头盔式显示器到美国的先进防御研究项目署开发的虚拟战场再到20世纪90年代美国的“扩展的防空仿真系统”(ESDSIM )计划,都在应用仿真方法进行实验研究。近年来美国更加重视仿真,可以说仿真技术是科学实验的有效手段,对科学技术的发展起到了巨大的推动作用。半实物仿真技术自20世纪60年代问世直到目前都盛行不衰。美国大多数主要的航天和国防承包商都有一个或多个半实物仿真实验室,这些实

本科毕业设计论文

2 验室代表了当前世界先进水平。

在国内,半实物仿真技术也被广泛应用到了导弹制导、火箭控制、卫星姿态控制等应用研究方面。20世纪80年代我们国家建设了一批大规模,高水平的半实物仿真系统,例如射频制导导弹半实物仿真系统、红外制导导弹半实物仿真系统、歼击机工程飞行模拟器等。后来又开展了大规模的复杂系统仿真,由原来的单个武器平台的仿真发展成为多武器平台在作战环境下的对抗仿真。

半实物仿真的关键技术包括以下几点:

① 运动环境模拟技术

② 建模与仿真方法

③ 仿真算法

④ 目标和环境特性仿真技术

⑤ 仿真软件

⑥ 虚拟现实技术

⑦ 信息变换和接口技术

1.2 半实物仿真实验设备

图1-1 半实物仿真系统结构图

图1-1展示了在实验室应用的半实物仿真设备大致由高性能实时控制仿真计

本科毕业设计论文

3 算机系统、目标模拟器控制柜、转台控制柜、智能控制台、转台以及光纤网络交换机等设备组成。根据不同的仿真任务其中的组成部分也会发生变动。这其中最重要最基本的部分就是高性能实时控制仿真计算机(图中红色方框部分),它用于运行实体对象和仿真环境的数学模型和程序,同时控制整个仿真实验。目标模拟器用来仿真被攻击的目标,如坦克装甲车等。仿真计算机计算出的目标相对导弹运动,将计算结果输入目标仿真器,仿真计算机还会通过解算导弹的动力学方程,得到姿态角信号,将这些信号输送给三轴转台的控制系统,实现模拟导弹弹体在空间的姿态变化。转台上安装有导弹的真实部件如导引头和陀螺传感器等,用于产生与实际飞行中相同的角运动,然后输出相应的信号给弹载计算机,弹载计算机产生控制信号经过补偿网络、放大器等推动真实的控制面动作器。然后舵机输出轴的转角信号等经过电位器或同步器形成电信号,经过变换反馈到仿真计算机使整个仿真回路闭合,从而完成仿真任务。以上所有通信传输都会用到光纤网络交换机以最快的速度完成各部分之间的通信传输从而达到半实物仿真所要求的高实时性。

与本次毕业设计相关的是图1-1中的高性能实时仿真计算机,下面对其发展现状进行简单介绍:

仿真中对高性价比的计算机要求是仿真计算机发展的推动力,目前仿真所用的计算机的型号和种类繁多,有混合计算机和全数字型计算机,有PC 机、工作站甚至巨型计算机,有通用计算机也有专用计算机。这种仿真计算机的实时性要求很高,因为实时的仿真对于半实物仿真实验的可信度是至关重要的。

专用仿真计算机在半实物仿真中具有很高的实时性优势,但其造价和维护成本太高,不适合普通实验室作为仿真设备。普通计算机一般运行在Windows 系统下,达不到实验所要求的实时运行,因此很多实验室选用Windows+RTX 实时系统作为仿真运行环境,获得了很好的实时效果。这样的解决方案具有较高的性价比。这也正是本次毕业设计主要的研究背景。

1.3 本文主要研究内容与安排

本文主要研究的内容是仿真控制计算机的实时系统的实时性是否可以通过外部时钟源来提高。Windows+RTX 实时系统作为目前主流的实时控制系统已经具有很好的实时性和用户友好性,但是在实际应用以及分布式半实物仿真中其实测精度不够标称的那么理想,因此本文设想通过外部高精度时钟源来触发硬中断的方式实现更高精度的定时,从而实现更好的仿真系统实时性。

本毕业设计的内容主要包括三大项:RTX 内部软时钟的定时精度测试、计算机并口采集外部硬中断的精度测试以及在实际仿真程序中测试外部硬时钟定时精度。因此本文的内容主要分为五部分:

本科毕业设计论文

4 ① 简单介绍RTX 实时仿真技术; ② RTX 实时系统定时稳定性的研究;

③ RTX 下基于外部硬时钟的定时方案研究; ④ 外部硬时钟定时精度分析与对比; ⑤ 总结实验结论。

本科毕业设计论文

5

第二章 RTX 实时仿真技术

2.1 RTX 实时系统

2.1.1 实时系统概述

实时系统可以在规定的时间内响应系统所接受到的事件,根据优先级调度机制快速完成处理,将处理结果返回目标系统,实时系统必须具备任务切换的实时性、对事件响应的快速有效性。在当前的航空航天控制系统中,与日俱增的实时性需求对实时控制系统也提出了越来越苛刻的要求,不仅要求实时系统反应足够快,精度足够高,还要求系统具有强大的图形界面功能和后续处理功能。虽然采用专业的实时操作系统能够达到这些要求,但是其开发和维护的开销太大周期太长,因此微软公司的Windows XP 等操作系统越来越多的用作实时系统平台[1]。

Windows XP 具有强大的综合性能比如:

① 可运行多种应用程序;

② 支持多种开发工具;

③ 具有丰富的Win32应用程序接口;

④ 具有熟悉这些系统的广大的开发支持人员和市场占有率。

但是Windows XP 是一个通用操作系统平台它存在很多不足因此只是一种弱实时操作系统。,它的实时性受到了限制比如:

① 它的线程优先级太少,隐含不确定的线程调度机制,在中断处理中存在优先级倒置。

② 它主要是基于消息机制的,任何事件都通过在消息队列排队完成,当系统资源被无限占用或者系统定时器中断被更高优先级的中断占用时,系统便不能实时中断。

③ 系统的工作方式为抢占式,内部的时间管理函数不能实现等间隔的时间控制,为了获得更高精度的定时,虽然可以通过直接访问硬件来完成,但Windows 封装了底层硬件,屏蔽了用户对硬件的直接操作。

本研究在Windows XP 下安装RTX 实时系统,拓展了Windows 操作系统内核体系,修改并扩展了整个硬件抽象层(HAL , hardware abstraction layer),实现独立的内核驱动模式,使用RTX 的中断管理机制和对实时线程的高速调度策略,形成了与Windows XP 操作系统并列的实时子系统。

本科毕业设计论文

6 2.1.2 RTX 实时系统工作原理

RTX 是基于Windows 平台的硬实时系统,可以为用户提供优秀的实时控制性能,其高效的可扩展性及稳定是迄今为止在Windows 平台上最优秀的基于软件的实时解决方案。

图2-1 RTX 结构框架

RTX 向Windows 添加一个实时子系统,即RTSS (见上图)。RTSS 从概念上类似于其他Windows 子系统(如Win32、POSIX 、WOW 、DOS ),支持自己的运行环境和API 。RTSS 有个重要的特点:它不使用Windows 调度器,RTSS 执行它自己的实时线程调度。也就是说,在一个单处理器环境中,所有的RTSS 线程调度都发生在所有Windows 调度之前,包括Windows 管理的中断和延迟过程调用Deferred Procedure Calls (DPCs)。

RTX 提供了对IRQ 、I\O 、内存的精确控制,以确保实时任务执行时具有100%的可靠性。RTX 支持30KHz 的持续中断触发速度,平均IST 延迟小于1微秒。RTX 与Windows 系统无缝的结合在一起,可以利用Windows 系统的各种优势,包括大量标准的API 函数;高效的内存管理机制;以及各种Windows 下的通用资源。RTX 最高支持1000个独立的进程,每个进程下可以运行的线程数不受限

本科毕业设计论文

7 制。128个优先级可以满足几乎所有用户的编程需要,RTX 调度器可以确保线程切换时间保持在500纳秒到2微秒之间。

RTX 的时钟分辨率可以达到100纳秒,定时器周期最低可以做到100、200、500、1000微秒。

由于RTX 实时系统具有很高的实时性,而且很容易在PC 机上使用,具有很好的用户友好性,因而被选作很多实验研究的实时操作系统。

2.1.3 使用RTX 的优点

Windows XP 是一个通用的操作系统平台,它的体系结构优秀,硬件支持广泛,有大量的应用程序可供选择。然而,Windows XP 的功能并不是面向实时应用的。使其在实时使用受到极大的限制,但Windows XP 良好的微内核和层次化的系统设计提供了良好的可扩展性。美国Ardence 公司的RTX 产品通过向Windows XP 添加实时功能使得Windows XP 跨过了上述限制。通过扩展Windows 操作系统RTX 使得那些需要确定性和快速性的应用组件同那些非实时应用模块同时工作在Windows XP 系统下。使用RTX 可以获得满足实时应用的低费用平台,并可以利用Windows XP 丰富的软硬件及应用开发支持。

2.2 RTX 定时方法

2.2.1 RTX 时钟服务情况[2]

RTX 时钟在Win32运行环境下提供三种时钟计时方式:

① CLOCK_1 (alias CLOCK_SYSTEM) 时钟1的服务由实时HAL 层提供,

它有1ms 的定时精度。在Win32环境下可以用这个时钟来实现每一毫秒的定时。

② CLOCK_2 (alias CLOCK_FASTEST) 时钟2的服务由实时HAL 层提供,

它有1微秒的定时精度。在时钟二下定时步长可以设置为100,200,500或1000微秒。可以再RTX 控制面板选择HAL 层的定时精度。

③ CLOCK_3 时钟3的服务由实时HAL 层提供,并有1微秒的定时精度。

定时时长在这个时钟上是按照可编程计时器在计时周期内的打点数计算的,每一个点代表838.095纳秒。这个时钟有0.001纳秒的精度。

时钟2和时钟3基于相同的HAL 层计时周期,都可以通过RTX 控制面板来设置。区别在于如何中断和时钟计算周期的表示方式。

本科毕业设计论文

8

表2-1 时钟2和时钟3的不同计时周期特点

RTX 定时器用于测量一段确定的时间间隔,平时常用的定时相关API 简介: ① RTGetCockTime (CLOCK Clock, PLARGE_INTEGER pTime );

递交指定时钟的当前时间,这条语句功能实现了返回特定时钟的时间值。时间指定在100ns 的单位内。

② RTSetClockTime (CLOCK Clock, PLARGE_INTEGER pTime );

设定指定时钟的时间,这条语句用于设定指定时钟的时间,时钟被指定在100ns 的单位内。

③ RtGetClockResolution (CLOCK Clock, PLARE_INTEGER pResolution);

检索特定时钟的分辨率;

④ RtGetClockTimerPeriod (CLOCK Clock, PLARGE_INTEGER pTIme);

检索指定时钟最小时间间隔;

⑤ RtGetRtssTimeAsFileTime (LPFILETIME pTime,);

检索RTSS 时钟当前时间;

⑥ RtSetRtssTimeAsFileTime (LPFILETIME pTime,);

设定RTSS 当前时间。

2.2.2 实现RTX 定时

在进行定时程序编写之前首先要保证Windows 已经工作在RTX 环境下(开机时可以进行选择),并在Windows 内对RTX 应用程序进行必要的设置,包括最小时钟周期的设定如图2-2所示,在RTX 属性的System 选项中选择Settings ,可以看到HAL timer period ,此处设置为100微秒。然后根据上文中相关定时器的API 编写相应的定时程序即可实现定时。

本科毕业设计论文

9

图2-2 RTX HAL 定时器周期设定

2.3 RTX 系统定时优缺点[3]

使用RTX 的中断管理机制和对实时线程的高速调度策略,形成了与Windows XP 操作系统并列的实时子系统,RTX 系统实时性能优异,能够基本满足平常仿真实验的需要和技术指标要求。尽管RTX 实时子系统响应迅速,但其最终还是受到任务数量和中断抢占系统资源速度的限制,当系统高负荷运行仿真程序时,它的实时响应速度还是会受到影响。

另外在分布式半实物仿真中,需要通过反射内存网将主仿真计算机的时钟信号向其他仿真计算机进行广播,在广播的过程中产生了一定的时钟延迟和不同程度的时钟误差,这种情况下如果有一个外部时钟源对所有仿真计算机进行时钟广播,可能效果会更理想。

RTX 受到软件设定的限制,最小定时周期为100μs ,也就是定时周期必须是100μs 的整数倍,不够灵活,如果使用外部时钟作为仿真推进,则可以灵活变更仿真周期,不受整数倍的限制。

2.4 本章小结

本次毕业设计需要系统实时的运行来模拟仿真实验时的系统时钟的定时情况。Windows+RTX 这样的实时解决方案具有很好的实时性,而且也是普遍在半实物仿真实验室中应用的实时仿真系统,因此本次毕业设计将在RTX 环境下进行所有的时钟测试实验以保证实验的精度和结果的可信度。

本科毕业设计论文

10

第三章 RTX 实时系统定时稳定性研究

3.1 RTX 定时程序API [2]

RTX 支持Win32 API 的一个子集,加附加了一个特殊的实时函数集,即RTAPI (实时API )。RTAPI 函数在函数名的最前面都有标识“Rt”,一些RTAPI 函数只是在标识方面与Win32不同,而有一些则是RTX 所特有的,如中断管理函数。RTX API 仔细挑选了对实时应用有关的函数,而刻意忽略了一些对实时编程用处不大的函数(如GUI 相关的函数调用)。一个期望的目标是大多数程序包含至少两个同时工作的部分——一个是基于Win32的进程(利用GUI 和其他的Win32-only 函数),另一个是执行实时处理的基于RTSS 的进程。 以下给出RTX 实时系统与定时器相关的API 函数②:

(1)RtCreateTimer 用于联合一个特定时钟产生一个计时器,并返回一个值。

RtCreateTimer (

PSECURITY_ATTRIBUTES pThreadAttributes ,

ULONG StackSize ,

VOID (RTFCNDCL *Routine) (PVOID context),

PVOID Context ,

ULONG Priority ,

CLOCK Clock

);

(2)RtDeleteTimer 由给定的处理程序删除特定计时器。

RtDeleteTimer (

HANDLE hTimer

);

(3)RtCancelTimer 取消指示计时器的期满标志。

RtCancelTimer (

HANDLE hTimer ,

PLARGE_INTEGER pTimeRemaining

);

本科毕业设计论文

11

(4)RtSetTimer 设置期满时间并重复间隔在特定计时器上。

RtSetTimer (

HANDLE hTimer ,

PLARGE_INTEGER pExpiration ,

PLARGE_INTEGER pInterval

);

(5)RTGetCockTime 这条语句功能实现了返回特定时钟的时间值

RTGetCockTime (

CLOCK Clock ,

PLARGE_INTEGER pTime

);

3.2 RTX 实时系统软时钟稳定性测试方案

3.2.1 在VC2005下建立RTX 应用程序

在完成RTX 驱动设置后,就可以在C++程序中建立RTX 系统用的工程文件,即打开VC2005初始页面后创建一个project ,不同于之前的编程,这里要创建的是RTX Application 。详细步骤可以参见RTX Help/Developing RTSS Applications/Developing Applications with Visual Studio 2005.

这样就会产生一个后缀为.rtss 的应用程序,需要实现的功能可以用相应的C++语言编写实现。需要注意的是在RTX Application 的编写环境中有一些功能语句的运用不同于普通的C++编译,比如之前的printf 功能在RTX 下要用RtPrintf 来实现。

对比了三种时钟的计时方式和精度差异,结合本次毕业设计的时钟精度要求较高但是周期比较确定等技术要求特点,本次选择使用时钟2来完成毕业设计相关实验,并在RTX 控制面板里把定时器精度设置为100μs 。

3.2.2 编写RTX 定时器程序

① 定义头文件,包括用到的库函数如rtapi.h 、windows.h 、stdio.h 等,以及

需要用到的变量声明。

② 定义需要用到的变量的数值,时钟计数器置零。

③ 主函数,定义计时周期,如一毫秒定时周期设置为10000。

本科毕业设计论文

12 ④ 生成计时器,在RtCreatTimer 中设置指定时向定时器处理程序TimerHa

ndler 。

⑤ 在中断处理程序中要实现的任务有,得到当前的系统时钟时间并将其打

印显示,计时器自加。

⑥ 主函数在生成定时器后要等待一段时间防止程序直接顺序执行退出,然

后取消计时删除定时器,打印出总共次计时次数,退出程序。

图3-1 RTX 定时程序的结构

3.2.3 完成定时器数据采集

定时器数据采集过程中的关键技术有以下两个方面:

① 在直接打印出定时数据后保存为txt 文件时发现时钟有时会突然发生很

大的跳变,如果计算在内会直接影响测试精度,需要用算法解决。 ② 直接打印出来的数据由于每次打印的过程都可能存在不同程度的延迟,

所以需要考虑直接把所有测得数据先保存在内存中,等程序运行完成后再统一以文件方式输出,避免了每次打印的延迟。

相应解决方法:

① 发现跳变过的数据使得跳变前后的时钟误差会差异很大,一般在200(20

本科毕业设计论文

13 微秒)以上,因此在处理数据计算平均误差值时只筛选了误差小于100(正常情况下不会大于100)的所有数据。这样才可以计算平均误差。 ② 更改程序,在原本的定时程序中在定义文件处定义了缓冲区,打印输出

的部分改成了输出到文件的语句,主函数中加入生成文件的语句,实现了时钟数据直接从内存输出到文件的过程。使得数据能够以文件方式直接保存为txt 格式,这样不仅方便Matlab 处理,更重要的是解决了数据打印过程中时钟的跳变和丢失问题。

3.3 RTX 内部软时钟定时测试数据分析

RTX 内部时钟定时的数据统计分析分为两种情况,一种是前文提到的直接在每次中断时把当时时钟读出打印然后处理,另一种是每次中断先把当时时钟保存在内存中等到程序结束后统一由内存写入文本文件保存,下面先对比这两种方式的时钟误差统计。

3.3.1 直接打印方式输出时钟数据

在处理数据时使用到了Matlab 软件,误差的算法是由相邻的中断时间两两做差,即每一时刻的时钟数减去上一时刻的时钟数,得到每次中断定时的周期,然后用这个差值减去本身设定的中断时常如1ms 定时则减去10000,所得差值取绝对值,然后所有的绝对值数再取平均,取方差。相应的.m 文件如下图3-2所示:

图3-2 直接打印(有跳变)数据处理程序截图

上图中程序用于计算直接打印方式的时钟平均值。

本科毕业设计论文

14 表3-1 RTX 内部软时钟定时测试误差统计

上表中分别是1ms 、5ms 定时数据各五组,每组数据由500次中断误差取平均得到。由于这种方式存在如下图所示数据跳变,需要人为解决,且每次计时器周期期满后执行打印语句延迟较大,所以改用文件输出的方式。

图3-3 数据跳变示意图

3.3.2 以文件方式输出时钟数据

计算的方法与之前的相同,唯一修改的地方就是取消了筛选的过程,由于数据不存在巨大的跳变因而没有必要筛选数据,在完成求差然后取绝对值后就可以直接求平均值和方差了。

本科毕业设计论文

15

图3-4 文件输出数据处理程序截图

上图中程序用于计算文件输出方式下的时钟误差平均值和方差。

表3-2 1ms 定时测试误差统计

表3-3 5ms 定时测试误差统计

表3-4 0.2ms 定时测试误差统计

本科毕业设计论文

16

图3-5 文件输出数据误差示意图

从图中可以看出直接读内存以文件形式输出数据很好的解决了之前的数据跳变问题,同时使得定时测试精度得到很大提高。

表3-5 RTX 内部软时钟定时精度误差统计

从上表可以看出,改用文件输出数据的方式大大提高了定时周期误差的精度。对比表3-1可以发现,以1ms 定时为例,其平均误差缩小了将近5倍。

3.4本章小结

本章内容完成了对RTX 下内部软时钟的0.2ms 、1ms 、5ms 的定时测试,研究了RTX 系统下时钟定时的特点。在完成实验的过程中也遇到了许多问题,通过学习和请教老师也得到了比较满意的解决方法。比如编程时遇到无法把数据输出到文件,经过翻阅其他一些有关文件输出的程序编写方法和相关的程序例子,解决了文件输出的问题,提高了测得的时钟定时数据的精度,减小了因为程序问题导致的结果误差。再比如时钟定时数据用直接打印的方式输出以后获得的数据用Matlab 处理时发现有时钟突然跳变的现象,经过观察跳变的规律发现可以直接在求平均值时忽略较大的数来避免跳变对结果的影响。

本文来源:https://www.bwwdw.com/article/pzmq.html

Top