碧波液压网 欢迎你,游客。 登录 注册

高精度液压控制软件设计方案

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  在2005年的一个导弹液压伺服系统项目的研制中,我们需要利用研华的PCL一812pg A/D D/A卡对马达进行控制并观察通过传感器反馈的位移,速度等波形数据,并要求能可视化的比较指令和反馈数据,观察整个伺服系统的运行情况,通过对采集的数据分析,来判断伺服系统设计方案的合理性,由于整个伺服系统对指令的输出精度要求很高,输出指令的频率也要求很高,而PCL一812pg卡的数据的单个通道的指令输出频率只要30K/s,经过实际的测试,输出一个指令数据的时间达到3ms,这离我们的要求很远,这就迫切的要求我们采用一种比较好的软件设计方案,在已经存在的硬件环境下最高限度的提高系统的性能。而经过测试发现不同的波形输出方式,线程操作与非线程操作,线程与多媒体定时器的不同的结合,对整个系统的性能有很大的影响,这也就说明磅实存在着一个比较好的组合方式可以使我们系统的性能达到提高。在经过反复地对代码的组合,反复地实验,通过对各种组台下系统性能的分析,我们最终找到了一个比较好的可视化的控制方案。该方案在我们研发的其它的工业控制项目中也得到了很好的推广应用,从几个项目的实际的运行效果来看,这种设计方案还是比较合理的,具有很好的实际应用价值。

  1 采用多线程技术与高精度定时器结合方式

  在指令输出的控制系统中,最重要的一点是要保证输出指令的准确性,输出的指令与输出函数的实际值产生大的抖动。这样会造成外围设备出现失控现象,使受控设备出现不可预料的损坏。首先我们知道在Windows系统中,线程是系统中最小的时间分配单位,也就是说采用线程技术不会出现一个代码段完全的占有CPU的情况。虽然线程的上下文切换(context

  switch)可能会引起一部分的系统花销,但在设计的系统中,这些花销相对与给带来的回报来说是可以不取考虑的,同时线程是存在优先级的,为了尽量地减少系统中其余的线程对控制的影响,将程序的主线程的优先级设为REALTJME—PRIORI—TY—CLASS。再者,微软在32位版本的系统里提供了一组所谓的“多媒体定时器”API,多媒体定时器可以使应用程序最大限度的获得硬件平台支持的定时精度。可以实现高精度的定时,同时一个很重要的特点是这些定时器是运行在主线程中的。例如可以应用于MIDI序列发生器,MIDI时间产生的精度在1ms之内。而一个毫秒的精度对我们采用的PCL一812pg来说精度是完全可以达到要求的。

  当然还有其余的定时器,如采用线程+Sleep()函数,但是Sleep()函数是非常的不准确的。Sleep()的输出精度经过我们测试在10ms,采用单线程技术+时间等待,这种方式的精度虽然会更加的高,但是不适合多任务的控制系统。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论