RTXSleep用法与测试

关键字: RTX 实时平台 Sleep(1)
继上一篇”RTX实时平台介绍(1)-让你的Win32程序享受到实时控制的好处”, 这里我以Sleep(1)来具体展开RTX实时平台的介绍。
在工控或图像采集程序里,我们一定能找到这样的语句:

while(1)
{

Sleep(1);

}
 

 

while(1)说明程序处于一个无限循环的过程,比如图像采集程序,创建一个线程,在线程添加如上语句,就可以让程序一直处于采集状态,直到销毁。那么为什么要加上Sleep(1)呢?

因为Windows系统它是一个preemptive multitasking 和 multithreading的操作系统,也就是该采集程序一旦优先执行,没有Sleep(1)作为暂时的延时的话,该程序将占有所有资源,导致鼠标无法移动,其他程序无法同步执行。
从这里可以看出,Sleep(1)充当的是一个非常关键的角色,在特定的环境下Sleep(1)将直接影响程序执行的效率。

但windows系统自身的Sleep(1)函数,一方面延时不准确,另一方面很不稳定,会受到其他程序的影响。
延时不准确,导致触发信号不能及时发送和接收,势必扰乱工业控制的执行程序。

延时不稳定,比如Sleep(1), 预想延时1ms, 但实际延时超过10ms。这个直接影响生产设备运行的效率,导致产品输出大打折扣。
这也就是为什么要采用实时平台来实现实时控制。

下面就一个Sleep(1)在Win32和RTSS环境下的对比来说明:

1)  Sleep(1)实验情况

实验1: 组装台式机

Intel(R) Core(TM)2 Duo CPU E4500@2.2GHz

技嘉GA-P31-S3G主板

Intel P31+ICH7芯片组

 

 

实验2: 笔记本 HP ProBook 4411s

Intel® Core(TM)2 Duo CPU T6570@2.1GHz

Intel PM45+ICH9M芯片组

 

 

Win32平台下加载5M大小的图像采集:

 

 

实验比较:

 
 最大误差值
 稳定性
 
平台
 RTSS(us)
 Win32(us)
 RTSS
 Win32
 
台式机
 100
 14700
 好
 中
 
笔记本
 (无图像采集)
 100
 1100
 好
 中
 
(加载图像采集)
 100
 13700
 好
 差
 

 

由此可以看出:

n         RTSS下的时间延迟误差非常小

n         RTSS下的时间延迟稳定性好,不受Win32程序影响

2) 实例代码说明

针对该程序,其他就是在RTX平台上创建一个Timer(100us), 另存为Timer-0.并添加相应的代码。

第一步 打开RTX平台编辑器,在最左边Function Tree/Time and Delay, 选择Read_HAL_Clock_Time, 并返回给Q0. 然后同一目录下添加Sleep(1),再选择Read_HAL_Clock_Time, 并返回给Q1, 最后在Math and Logical Operation下对Q1和Q0进行相减,返回值给Q2.

第二步 点击界面右下方【Item Check】,检查有没有错误。

第三步 点击界面左上方【Save as Timer】保存为Timer-0,这样就创建了一个Timer用来检查Sleep(1)的时间延迟。

 

对应的,在Win32程序上创建一个线程来读取RTSS的延时

rt_wait_timer_tick(0); //等待Timer
iRTSSTime = (int)(read_Q_variable(2)/1000); //读取Q2值
 


其他部分就直接看源代码。

RTX runtime, 安装程序链接:

RTX8.1DemoSetup-Part1/2   http://download.csdn.net/source/2367420

RTX8.1DemoSetup-Part2/2   http://download.csdn.net/source/2367426

 

RTX平台程序下载(试用版)

RTX实时平台-Win32程序实现实时控制-Part1/2  http://download.csdn.net/source/2386537

RTX实时平台-Win32程序实现实时控制-Part2/2  http://download.csdn.net/source/2386544

 

演示程序Sleep(1)源代码:

http://download.csdn.net/source/2388231

 

 


Hongxin

2010-5-24

PC Based实时系统开发

hongxin.he#gmail.com

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hongxin7/archive/2010/05/24/5620067.aspx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值