音频应用

 找回密码
 快速注册

QQ登录

只需一步,快速开始

阅读: 14508|回复: 4

[资讯] 如何提高window实时性能

[复制链接]

2万

积分

5

听众

-4449

音贝

音频应用初级会员

Rank: 6Rank: 6

积分
22747
发表于 2005-11-5 | |阅读模式
音频应用公众号资讯免费发布推广
如何提高window实时性能
   
1 概述
此文是在实现modbus-RTU通讯的基础上总结而来的,主要讲述了如何提高window做工业控制时的实时性能。
PC机上做控制系统,一般就是在window或者linux操作系统上做控制系统软件开发,window上做控制系统,有如下优势:
1)现有的设备驱动支持
2)各类厂家提供的现成的卡板
3)以及比较平民化的开发平台
4)数量众多的开发人员。
2 提高实时性手段
window是一个非实时操作系统,如果要做实时任务的话,有必要用些特别的手段,来提高其实时控制的能力。
1) 语言最好选择C语言,之所以选择C语言,因为工业控制主要基于window API编程,使用很多window内核的服务。
2) 多任务一般采用多线程来实现,根据任务的紧要程度,设置线程的优先级别,一定要设置优先级。
3) 如果在一个线程中有多个任务的话,建议采用协程的方式实现多任务,任务内部最好不要调用Sleep()等休眠函数
4) 为了提高内核的时钟的调度精度,必须使用多媒体定时器并且将其精度设置为1ms,这样内核任务调度精度也提高为1ms,这估计是微软的内部耦合。如果不使用多媒体定时器的话,内核定时器时钟精度一般只有15ms左右。
5) 每个线程的一个循环必须释放一次CPU,采用Sleep(1),这样才能保证机器的CPU不被耗光,否则低优先级的任务就没有机会得到执行了。
6)计时采用QueryPerformanceFrequency()和 QueryPerformanceCounter()函数来计时,可以达到ns级别。
上面手段都是用户空间的手段,在内核空间应该也有手段(应用程序作为驱动跑),但是我不熟,就不说了。
3 效果
使用以上几种方式实现的控制程序,时间关键优先级别多线程任务调度精度可以达到2-5ms级别,计时精度可以达到ns级别。这对于很多(大部分)要求不高的控制来说,基本是够用的。
至于驱动部分,window的驱动的反应速度还是挺快的(CPU占用率不过高的情况下面达到us级别的反应),这个和我们用户空间的程序不一样,例如window的串口驱动,可以将接收FIFO设置为1,采用事件方式读串口,即使波特率为115200bps,也不会丢失数据。
使用上面的方法,我在PC机上实现了modbus-RTU客户端,其3.5T设置为5ms,可以很稳定地和PLC主设备通讯。
4 硬实时
如果在PC机上追求真正的硬实时,那么一般是在window或者linux系统中加入硬实时内核,形成双内核系统,例如RTX或者RTAI,这些都有成功的案例,例如西门子的基于RTX的数控系统,基于RTAI的实时控制系统,这些实时系统都是用于100us级别的硬实时系统中,需要开发者自己写驱动,其架构是实时内核上跑实时任务,普通内核上跑一般任务,实时任务和一般任务间通过通讯的方式沟通。由于我还没有在这些实时系统上做过开发,所以暂时不写。
https://shumagang.taobao.com  音频数码港

5025

积分

5

听众

-684

音贝

音频应用注册会员

Rank: 4Rank: 4

积分
5025
发表于 2005-11-5 |
[em23][em23][em23][em23]
沙发支持
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

3万

积分

8

听众

-3309

音贝

音频应用初级会员

Rank: 6Rank: 6

积分
35814
发表于 2005-11-5 |
我分享,谢谢楼主发布啊
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

2万

积分

6

听众

-75

音贝

音频应用初级会员

Rank: 6Rank: 6

积分
28268
发表于 2005-11-5 |
哈哈~~````````[em01][em01]
欢迎厂家入驻,推文!免费!微信:yinpinyingyong

155

积分

0

听众

0

音贝

音频应用新手发布

Rank: 3

积分
155
发表于 2006-4-19 |
不错!
欢迎厂家入驻,推文!免费!微信:yinpinyingyong
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

音频应用搜索

小黑屋|手机版|音频应用官网微博|音频招标|音频应用 (鄂ICP备16002437号)

Powered by Audio app

快速回复 返回顶部 返回列表