关键字: RTX 实时平台 Win32程序
这也就是说不用更改W32程序构架,也能享受到实时控制。
那么首先说说Win32程序的一些缺陷,即为什么要在Win32程序上加上实时控制。
第一是Win32系统它没有一个很准确的时钟触发信号,也就是说Sleep(1)很不准确,这个我会在下一篇”说说Sleep(1)”会详细介绍。
第二个Win32程序是用户模式下的程序,要与硬件沟通必须得透过相应的驱动来实现,且这个不透明的,限制性的。这样就可能造成信号不能及时送出和接收,还有Windows在用户模式下没有直接提供的中断函数接口,对工控软件来说是致命的,且功能受受限制,Debug也很困难。
我这里介绍的RTX实时平台,是基于RTX runtime的,它透过驱动程序,直接从用户模式跳到内核模式,从Ring3转到Ring0, 直接与HAL(硬件抽象层)对话。一方面,通过这个平台你可以享受到实时RTX带来的好处,另一方面,他可以让你不必要改动现有W32程序的构架,直接就可以享受到实时的好处。
下面,我就介绍一下怎么一回事:
1. 我这个RTX实时平台提供的东西有如下:
a. 提供20个准确的Timer,可达100us的循环间隔
b. 提供20个RTSS系统运行的线程
c. 提供IO卡, motion卡通用的控制函数
如何操作这个平台,见手册说明
1. 安装RTX实时平台
第一步,安装RTXruntime, 安装程序链接:
RTX8.1DemoSetup-Part1/2 http://download.csdn.net/source/2367420
RTX8.1DemoSetup-Part2/2 http://download.csdn.net/source/2367426
第二步, 下载Real-Time-Platform-V209压缩包(试用版)
RTX实时平台-Win32程序实现实时控制-Part1/2 http://download.csdn.net/source/2386537
RTX实时平台-Win32程序实现实时控制-Part2/2 http://download.csdn.net/source/2386544
第三步,默认把压缩包里的文件夹rtx_control放在D盘根目录下,如果放在其他地方,请把rtx_cotnrol文件夹下的批处理文件ControllerInit.bat路径修改一下。
第四步,在rtx_cotrol下有一个Editor-Setup文件夹,根据提示一步一步把编辑器安装完成。
第五步,就是执行ControllerInit.bat文件来启动Ctrlfunction.rtss和ControllerInit.exe程序。
这样就安装好了。
2. Win32程序实现实时功能
该平台提供一个动态链接库(LinkControl.dll)来实现Win32程序和RTX实时平台的连接。
只有在你的Win32程序里嵌入该动态链接库就可以实现了。
举例:While Loop里面的Sleep(1)用实时时间延时的表示
修改如下:
关于更详细的操作,请参考RTX实时平台使用手册。
hongxin
2010-5-23
PC Based实时系统开发
hongxin.he#gmail.com