基于C++ builder的高采样率动态信号实时绘图研究
作者:关爱锐 刘旭华
来源:《现代电子技术》2013年第12
        要: 针对在颤振飞行试验实时监控过程中高采样率动态信号时间历程曲线实时显示特点,介绍了如何在C++ builder环境中使用TChart控件实时绘制动态参数曲线,并对采用控件和算法的特点及选择准则做了详细分析,给出了相关程序代码。该算法先将颤振数据实时存放在数组里,然后结合TChart控件和TTimer控件采用翻页方式来实时显示其时间历程曲线。通过在颤振试飞监控中实际应用表明,该算法能有效实时显示真实动态信号,满足课题监控需求。该算法还可应用于电力系统的振动检测系统。
        关键词: 高采样率; 动态信号; 定时器; TChart实时绘图; 飞行监控
        中图分类号: TN919⁃34 文献标识码: A 文章编号:teechart控件安装 1004⁃373X201312⁃0053⁃02
        颤振飞行试验是新机或有重大改型飞机都必须进行的试飞科目,是世界公认的类风险试飞科目,所以必须通过实时监控保障飞行安全。颤振试飞与其他试验科目相比,具有风险
高、参数采样率高的特点,对实时监控系统的实时性、可靠性以及精确性都要求较高[1⁃2]。在开发颤振试飞实时监控软件过程中,为了在屏幕上实时精确绘制高采样率颤振参数时间历程曲线,对高采样率动态信号实时绘图技术[3⁃6]做了深入研究,并采用C++ builder进行编程实现。通过软件测评和实时系统验证,该监控软件运行稳定、可靠,能实时精确显示高采样颤振参数时域曲线。
        1 开发平台介绍
        C++ Builder是由Borland公司继Delphi之后又推出的一款高性能可视化集成开发工具[7],它具有快速的可视化开发环境:只要简单地把控件拖到窗体上,定义它的属性,设置它的外观,就可以快速地建立应用程序界面。它内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件。C++ Builder具有一个专业C++开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等,实现了可视化的编程环境和功能强大的编程语言(C++)的完美结合。利用C++ Builder开发实时监控软件,可以充分利用可视化编程语言的高效、灵活等优点,使得开发出来的应用程序具有更好的用户界面,适合飞行监控使用。
        2 高采样率动态信号实时绘图算法研究及实现
        颤振试飞实时监控软件通过接收服务器发送过来的数据,对软件界面上参数进行实时显示,并对关键参数数据进行自动或者手动采集。由于颤振参数为高采样率速变参数,如果按照常规缓变参数那样接收每点数据都画图的方法在屏幕上实时绘制时间历程曲线,发现软件数据显示常有迟滞现象,并且严重影响软件数据采集精度,因此对数据绘图方法进行优化研究,将颤振数据实时采集到内存里,并且用数组来存放采集数据,然后利用TChart控件使用翻页方式来实时显示时间历程曲线,每个页面显示一段时间内的数据曲线,其中翻页时间间隔(由采样频率决定)由定时器控制,也可以通过利用接收服务器发送数据点数到达定值后进行翻页的绘图算法来实现。
        2.1 C++ builder控件介绍
        2.1.1 TTimer控件
        TTimer控件[8⁃9]C++ builder提供的一个普通计时器,使用简单方便,但具有两大缺陷:定时精度差和消息优先权低。首先,基于Windows计时器的硬件计时器每隔54.925 m
s1次(约18.2 /s),也就是说,这种方式的定时器只能精确到大约55 ms,对于55 ms以下的时间精度便无能为力;另外,由于Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。TTimer控件的优先权太低,这样一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的WM_TIMER消息就被暂时挂起,得不到实时处理。
        2.1.2 多媒体定时器
        多媒体定时器[8⁃9]是由Windows系统提供的毫秒级定时器,其定时精度可达1 ms。从运行基理来看,多媒体定时器提供的是硬件中断服务,不传送任何消息,优先级很高。多媒体定时器使用自己独立的线程,调用回调函数进行处理,但在多媒体定时器的使用过程中需要注意的是:在多媒体定时器处理的线程结束之前不要再次启动定时器,否则会造成死机。在使用之后一定要删除定时器及响应的参数,否则系统的响应会变得很慢。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。