当前位置:机电之家首页 >> 电工园地>> 论文资料 >> 软件驱动 >> 工控软件设计中高精度计时的实现
工控软件设计中高精度计时的实现

该方法通过winapl函数访问计算机高速系统计数器实现级计时,相对当前常用的几种其他方法来说,此方法具有精度更高、实现更方便、程序更简单的优点。最后,讨论了使用高速计时器可能出现的计数值上跳现象及解决方法。

86:a收穑日期:2002―随着bbbbbbs2000的普及,使得在win-dow2000平台上开发工业实时控制系统的应用软件成为大势所趋。但是,在bbbbbbs2000平台上开发工控软件,常常必须解决高精度计时方面的问题。

目前常用的解决方法为:⑴使用bbbbbbs中提供的常规定时器timer控件。这种方法相对简单直接使用bbbbbbs的定应用程序中设置一个或多个定时时钟。但是,由于受系统时钟的限制,这种方法的精度很低,最多能达到55ms.而且,此方法所建立的定时器是由定时器消息wm-timer驱动的;但wm -timer在串行消息队列中的优先级很低,往往额外造成无法预料的较大定时误差。因此,此方法弊端较多,在要求高精度或高实时性的工控程序设计中较少使用。

(2)使用多媒体定时器,调用用于多媒体定时的bbbbbbsapi函数来实现。使用bbbbbbs的多媒体扩展库中的几个定时函数:(3)编写驱动程序实现精确计时。这种方法精度较高,但涉及到vxd或wdm方面的专门知识,有较大难度。

还有利用系统定时中断,利用多线程机制等等方法,这些方法比较复杂,而且精度并未得到较大提高。所以,本文介绍利用bbbbbbs和queryperbbbb―ancecounter两个函数,方便简单地实现ms级高精度计时。

1函数介绍如果计算机硬件支持,queryperbbbbancefie―quency函数可读取计算机系统的计时器的频率。

此频率值依不同处理器而得到不同值,但在计算机运行时是稳定不变的。

率的变量。如果计算机硬件不支持,这个参数可能值为0.返回值:如果计算机硬件支持,函数返回值为非0;如果机硬件不支持,函数返回值为0.如果计算机硬件支持,queryperbbbbancecou―nter函数读取计算机系统计数器中的当前计数值。

器当前值的变量。如果计算机硬件不支持,这个参数可能值为0.返回值:如果计算机硬件支持,函数返回值为非0;如果计算机硬件不支持,函数返回值为0.函数,这两个函数有高得多的计时精度。

2程序设计这里以一高速电机瞬时转速精确测量为实例,用vc++6.0编写了一个简单的应用程序来说明如何在bbbbbbs2000平台上实现级高精度计时。

高速电机通过变速箱带动一采样盘转动,采样盘一周均匀分布了1000条采样栅,变速箱速率比为1:10.即电机每转动一周,外围高速采样电路就产生10000个计数脉冲,经整形后送至电路上的累加器单元计数。

应用程序如下,主要给出高精度计时的实现部分,其他部分从简。

前的计数值//计时结束后的计数值//换算后的计时ms值发请求命令至外围采样电路,将累加器清零并开始计采样脉冲数发请求命令至外围采样电路,停止累加器计数发请求命令至外围采样电路,返回累加器计数值至变量ntotal //输出计时结果//输出转速结果cstngstr2;表示从aa处运行到bb处共用时579ms,电机的瞬间转速为5636.8转/min.外围采样电路设计合理且采用高速元件,那么,两次请求外围电路的响应延迟时间所引起的计时误差正负相反,基本可以抵消,总体误差可以忽略。否则,必须经过反复实际测试,得到一个补偿常数e,在程序中对计时加以补偿以减少误差。

请求外围电路的程序语句最好采用汇编语

作者:未知 点击:2190次 [打印] [关闭] [返回顶部]
本文标签:工控软件设计中高精度计时的实现
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《工控软件设计中高精度计时的实现》相关权利人与机电之家网取得联系。
电子样本

富林泰克产品系列j电子样
:胡先生
:13736436955
:嘉兴市科力电子有限公司
个人求购

 【求购】  服务器托管  2024-10-10
芦胜平 【求购】  吹灰器  2024-10-10
冯瑞青 【求购】  储气罐  2024-10-10
陈经理 【求购】  直流风机  2024-10-10
杨先生 【求购】  动力电缆  2024-10-10
蔡经理 【求购】  深水井污水...  2024-10-10
曹经理 【求购】  PDH短管  2024-10-9
李经理 【求购】  赫兹曼转换...  2024-10-9
VIP公司推荐