基于RTX的舵机控制系统研制
扫描二维码
随时随地手机看文章
摘要 设计并研制了一种基于RTX实时扩展模块的2.4 m风洞虚拟飞行试验的舵机控制系统。该系统用于采集天平、陀螺仪、舵机、光电编码器信号,为飞机各主要部件的气动特性评估提供了重要依据。文中介绍了RTX实时模块和硬件设计、软件设计。并通过实际应用表明,该系统具有实时性强、算法可靠、精度高、用户操作简单等优点。
关键词 RTX;驱动程序;PXI;舵控仿真
舵机控制是虚拟飞行实验中的关键技术,为满足测试的实时性要求,文中设计了一套基于Windows RTX环境下的舵机控制系统,通过采集天平、陀螺仪、舵机、光电编码器信号,分析飞机各主要部件的气动特性。该控制系统的主要功能包括:舵机控制软件可以自动完成对舵机的上电及解锁操作;舵机响应可根据实际需要作出相应的模式选择和参数设置;采集到的数据可做到实时界面显示,用于现场实验分析。
1 RTX实时模块
在工业控制、航空航天等领域,对系统实时性有很高的要求。系统的事件响应如果不确定或超时,就可能会导致系统出错,甚至崩溃,Windows系统很难满足实时性的要求。RTX正是应这一要求,利用Windows平台提供的丰富的设备驱动模型,通过定制硬件抽象层(HAL,Hardw are Abstraction Layer),对Windows系统进行了实时扩展。RTX使得系统具有较强的实时性,能在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理RTX是一个嵌入Windows的独立实时系统,支持在Windows平台下基于Visual Studio的实时应用程序开发。RTX给开发者提供了操作系统和实时性的最佳结合,既可以使用Windows的丰富资源和软件开发调试工具,又可以在一个独立的控制子系统上实现硬实时。RTX Release7.1支持绝大部分的Microsoft操作系统,同时支持单处理器(Uniprocessor)、多处理器(Multi-processor)、移动处理器(Mobile Processor)、超线程(Hyper-threading-enabled),以及多核平台(Multiple-core platform)。
文中基于RTX,在Windows平台上实现了舵控仿真系统中高确定性和高速反应时间的应用部件和模块与其它非实时应用部件的正常运行。
2 系统的硬件设计
该系统的构成如图1所示。硬件系统包括上位机一工业控制计算、下位机-PXI机箱、位于PXI机箱中的PXI测试板卡、电源和显示器构成,所有这些部件都组装在一个双联测试机柜中。PXI测试板卡包括数字I/O板卡、A/D转换卡、串口卡、RS422卡和PXI转PCI套件。
3 软件设计
为提高Windows下数据采集的实时性,又满足舵机控制实时性的要求,舵机控制采用模块化的设计,设计分为上下两层,两层之间需要共享内存进行数据通信。软件组成的结构体系如图2所示。
RTX程序开发平台选择VC6.0+Ardence RTX,RTX将开发环境直接嵌入到用户熟悉的VC6.0中,用RTX提供的向导即可生成RTX环境下的设备驱动和应用程序,大大缩短了开发周期。RTX和Windows运行在一台计算机上,也节省了系统的硬件成本,提高了系统可靠性。[!--empirenews.page--]
3.1 上层软件
在启动舵机控制程序之前,先要启动RTX实时环境,因为底层驱动程序和上层舵机控制程序是同时运行的。软件的具体操作流程如图3所示。
3.2 底层软件
根据舵机控制软件对数据采集的实时性要求,首先要对各采集板卡做在RTX下的驱动开发,这是舵机控制系统解决实时性问题的重点和难点。编写基于RTX的驱动程序,可以通过调用实时应用程序编程接口(RTAPI,Real-Time Applieation Programming Interface)函数来访问实时子系统(RTSS,Real-Time Sub-System),并维持其系统的实时性。这样处理的优点是硬件可以通过RTX函数直接访问,驱动开发也更加简单。
所谓驱动程序,就是直接控制设备进行工作的底层程序,实现了硬件和高层应用程序的交互。如果要使用PXI总线设备上的某个功能,就需要CPU能通过某段范围的地址访问或内存访问的方式与该功能交互。RTX驱动程序可以将获得的基地址转换成系统能够识别的虚拟地址,然后通过读写函数对不同板卡的底层寄存器进行操作,从而实现控制板卡正常工作。PCI定位寄存器配置由BIOS自动完成初始化,如分配总线号、中断向量、地址空间等,驱动程序只需要对数据偏移寄存器,即设备内部寄存器进行配置。访问内部寄存器,首先要获得PCI设备在BIOS上的映射基地址,然后根据设备的寄存器偏移量和格式对寄存器进行访问。
[!--empirenews.page--]
在RTX环境下,PXI设备驱动程序的基本结构如图4所示。其中,PXI设备和RTX位于结构底层,PXI设备与RTX内核通过中断和I/O端口来进行数据交互,RTX内核通过库函数和设备驱动程序来提供所需服务。上层应用程序与底层驱动程序通过建立共享内存来进行通信。
在RTX环境下进行PXI设备驱动开发,首先需要将Windows下的设备转换为RTX下的设备。RTX提供实现该功能的属性窗,如图5所示。利用RTX属性窗进行转换分主要分为两个步骤:
(1)添加RTX的INF支持;
(2)在设备管理器中更新设备驱动,将PXI设备从Windows支持转换为RTX支持。
RTX环境下一个完整的PXI驱动程序至少由以下几方面组成:
(1)设备初始化和释放。查找PCI设备传送设备号和厂家号两个主要参数,并遍历所有的PCI插槽直到匹配为止。找到设备后,读出中断号、基地址等,为以后的工作做准备。
(2)地址到虚拟地址的映射,使系统能够识别硬件。由于对硬件的读写操作是基于物理地址,而应用程序实现读写操作使用的是虚拟地址,所以驱动程序必须要完成地址映射。
设计的PXI板卡驱动程序首先用接口函数DeviceSearch()在总线上轮询,并查找到设备。然后通过DeviceInit()函数获得设备的硬件资源,如中断号、内存、输入输出I/O和DMA等。通过RtGetBusDataByOffset()函数访问设备的整个PCI配置空间,得到本地配置寄存器和存储空间内存的基地址和中断号等信息,然后根据获得的基地址利用RtTranslateBusAddress()和RtMapMem ory()函数将读取出来的基地址转换为系统能够访问的虚拟地址。需要指出的是,板卡的本地寄存器和存储空间可以通过Memory映像和I/O直接访问,文中设计的驱动程序的运用的是Memory映像。如选用I/O直接访问,可以通过调用RtEnablePortIo()和RtReadPortUchar()等函数即实现对端口的直接读写。当找到并打开板卡后就可以自定义读写函数对板卡进行读写操作,从而达到控制板卡的目的,具体开发流程如图6所示。
4 结束语
RTX环境下的驱动程序可以通过RTX函数进行直接访问的,能够随时停止随时配置。文中基于RTX,在Windows平台实现了风洞虚拟飞行试验舵控仿真系统。与直接基于Windows平台设计的系统相比,系统的响应时间提高到ms级,满足了实时性要求。由于测试软件是基于VC++环境开发的可视化软件,系统具有良好的可扩展性,通用性较强。通过联调,验证了仿真系统的可靠性和实时性。