嵌入式系统在大射电望远镜5米模型上悬索控制中的应用
时间:08-30
来源:互联网
点击:
2.1 嵌入式实时操作系统μC/OS-II
目前商用的嵌入式操作系统产品很多,十分成熟,并且提供了强大的开发和调试工具,但开发成本昂贵且大部分不提供源代码,并不适合小型系统的开发。μC/OS-II面向中小型嵌入式系统,其主要特点:公开源代码、可移植性、可固化、可裁减、支持多任务、具有可确定性等。本系统不需要网络和文件系统,μC/OS-II是一个很适合本系统的嵌入式系统。
μC/OS-II的移植过程比较简单。它在ARM7处理器上的移植相当成熟。在AT91RM9200上的移植与ARM7处理器上的移植类似, 由于篇幅的限制,本文不具体介绍μC/OS-II在AT91RM9200上的移植过程。μC/OS-II要求用户提供一个周期性的10~100次/秒时钟源,实现时间的延时和超时功能。AT91RM9200内有一个Period Interal Timer(PIT),它是一个十六位的减法计数器, 使用它很容易给μC/OS-II提供10~100次/秒时钟节拍。
PIT计数器产生时钟节拍为100次/秒的程序代码如下:

2.2 应用程序
基于μC/OS-II的应用系统工作时,首先初始化CPU;接着进行操作系统初始化,主要完成任务控制块(TCB)初始化、TCB优先级表初始化、空任务的创建等;然后开始创建新任务;最后调用OSStart()函数启动多任务调度。应用程序的编写主要考虑任务如何划分、任务的优先级、任务之间的通讯。
本系统靠触摸屏实现人机接口,故把检测触摸屏状态设为优先级最高,每10ms检测一次触摸屏状态。控制界面采用类似Windows的控件编程方式,把每一个控件看作一个任务来处理, 以手动精调控制界面(见图5)为例,上面有10个控件:控制电机位置的滚动条控件(6个)、控制馈源舱运动速度的滚动条控件(1个)、6台电机位置复位按钮控件(1个)、切换到自动控制和手动控制按钮控件(各一个)、电机启动控件(1个),加上前面的触摸屏检测任务,在此需建11个任务。它们之间靠消息通讯,触摸屏任务主要完成给其它11个任务发消息。每当检测到ADS7846产生PENIRQ,通过SPI接口向ADS7846发送A/D转换和读A/D转换结果指令,把结果转换到当前触摸屏按下点的坐标值,再把这个坐标值以消息的形式发出去,然后调用OSTimeDly(1)函数延时10ms。其余10个任务调用OSQPend()等待消息(坐标值),如坐标值在此控件内,触发相应的事件。其程序部分代码如下:

要实现六轴联动,就必须在程序中加入控制算法。由于悬索与馈源舱控制系统具有精确模型难以得到、 变结构的特点且控制精度要求较高,可采用的算法能用于动态未知的系统,并能实时适应受控对象的变化,采用非参数模型自适应控制算法。把这种算法加在RUN按钮事件下。
本程序中还有许多中断服务程序,都放在OS_CPU_C.C中。例如,为了使电机运转连续以保证悬索馈源舱系统做平稳的扫描运动,要求当前伺服指令执行后需要更新脉冲的频率(RC的值)和脉冲计数的个数(8254)在几毫秒内完成,同时又要有很好的实时性,必须采用中断服务方式实现。
3 测试
作者编写了底层硬件的驱动,把μC/OS-II成功地移植到AT91RM9200上,并编写了基于触摸屏图形控制界面。本系统中有三个可互相切换触摸屏图形控制界面,其中手动精调控制界面见图5。
本系统输出的脉冲可从7Hz到几MHz, AT91RM9200中TIOA(见图3)最高可输出15MHz的脉冲,但由于8254计数器的最高计数频率为10MHz,制约了整个系统的脉冲输出频率,这完全可以满足一般的伺服驱动器的要求。选择TC计数器(见图3)的CLK为TIMER_CLOCK2(7.5MHz),RA=1,RC=3,这时输出的频率应为CLK/RC=7.5/3=2.5MHz,占空比为(RC-RA)/RA=2,输出电压的平均值为3.3×2/3=2.2V,用Fluke 196C示波器测得实际输出波形与理论完全一致,如图6。
本系统在大射电望远镜5米模型上通过调试,运行良好。目前ARM处理器绝大部分都用于手持设备,对实时性要求不高,但工业控制中要求实时性高。本系统也只用到AT91RM9200处理器的部分资源,从某种角度上讲是有点浪费,但作者把ARM9处理器和μC/OS-II用在工业控制上是一次尝试,从控制的鲁棒性都证明了AR91RM9200和μC/OS-II在控制电机多轴联动的效果是令人满意的。如充分利用AT91RM9200集成的USB2.0接口、以太网10/100BaseT MAC控制器,完全可以满足复杂的工业控制。随着嵌入式系统和ARM处理器的发展,ARM处理器在工业控制中会越来越多。

图5 手动精调控制界面

图6 Fluke 196C示波器测得实际波形
目前商用的嵌入式操作系统产品很多,十分成熟,并且提供了强大的开发和调试工具,但开发成本昂贵且大部分不提供源代码,并不适合小型系统的开发。μC/OS-II面向中小型嵌入式系统,其主要特点:公开源代码、可移植性、可固化、可裁减、支持多任务、具有可确定性等。本系统不需要网络和文件系统,μC/OS-II是一个很适合本系统的嵌入式系统。
μC/OS-II的移植过程比较简单。它在ARM7处理器上的移植相当成熟。在AT91RM9200上的移植与ARM7处理器上的移植类似, 由于篇幅的限制,本文不具体介绍μC/OS-II在AT91RM9200上的移植过程。μC/OS-II要求用户提供一个周期性的10~100次/秒时钟源,实现时间的延时和超时功能。AT91RM9200内有一个Period Interal Timer(PIT),它是一个十六位的减法计数器, 使用它很容易给μC/OS-II提供10~100次/秒时钟节拍。
PIT计数器产生时钟节拍为100次/秒的程序代码如下:

2.2 应用程序
基于μC/OS-II的应用系统工作时,首先初始化CPU;接着进行操作系统初始化,主要完成任务控制块(TCB)初始化、TCB优先级表初始化、空任务的创建等;然后开始创建新任务;最后调用OSStart()函数启动多任务调度。应用程序的编写主要考虑任务如何划分、任务的优先级、任务之间的通讯。
本系统靠触摸屏实现人机接口,故把检测触摸屏状态设为优先级最高,每10ms检测一次触摸屏状态。控制界面采用类似Windows的控件编程方式,把每一个控件看作一个任务来处理, 以手动精调控制界面(见图5)为例,上面有10个控件:控制电机位置的滚动条控件(6个)、控制馈源舱运动速度的滚动条控件(1个)、6台电机位置复位按钮控件(1个)、切换到自动控制和手动控制按钮控件(各一个)、电机启动控件(1个),加上前面的触摸屏检测任务,在此需建11个任务。它们之间靠消息通讯,触摸屏任务主要完成给其它11个任务发消息。每当检测到ADS7846产生PENIRQ,通过SPI接口向ADS7846发送A/D转换和读A/D转换结果指令,把结果转换到当前触摸屏按下点的坐标值,再把这个坐标值以消息的形式发出去,然后调用OSTimeDly(1)函数延时10ms。其余10个任务调用OSQPend()等待消息(坐标值),如坐标值在此控件内,触发相应的事件。其程序部分代码如下:

要实现六轴联动,就必须在程序中加入控制算法。由于悬索与馈源舱控制系统具有精确模型难以得到、 变结构的特点且控制精度要求较高,可采用的算法能用于动态未知的系统,并能实时适应受控对象的变化,采用非参数模型自适应控制算法。把这种算法加在RUN按钮事件下。
本程序中还有许多中断服务程序,都放在OS_CPU_C.C中。例如,为了使电机运转连续以保证悬索馈源舱系统做平稳的扫描运动,要求当前伺服指令执行后需要更新脉冲的频率(RC的值)和脉冲计数的个数(8254)在几毫秒内完成,同时又要有很好的实时性,必须采用中断服务方式实现。
3 测试
作者编写了底层硬件的驱动,把μC/OS-II成功地移植到AT91RM9200上,并编写了基于触摸屏图形控制界面。本系统中有三个可互相切换触摸屏图形控制界面,其中手动精调控制界面见图5。
本系统输出的脉冲可从7Hz到几MHz, AT91RM9200中TIOA(见图3)最高可输出15MHz的脉冲,但由于8254计数器的最高计数频率为10MHz,制约了整个系统的脉冲输出频率,这完全可以满足一般的伺服驱动器的要求。选择TC计数器(见图3)的CLK为TIMER_CLOCK2(7.5MHz),RA=1,RC=3,这时输出的频率应为CLK/RC=7.5/3=2.5MHz,占空比为(RC-RA)/RA=2,输出电压的平均值为3.3×2/3=2.2V,用Fluke 196C示波器测得实际输出波形与理论完全一致,如图6。
本系统在大射电望远镜5米模型上通过调试,运行良好。目前ARM处理器绝大部分都用于手持设备,对实时性要求不高,但工业控制中要求实时性高。本系统也只用到AT91RM9200处理器的部分资源,从某种角度上讲是有点浪费,但作者把ARM9处理器和μC/OS-II用在工业控制上是一次尝试,从控制的鲁棒性都证明了AR91RM9200和μC/OS-II在控制电机多轴联动的效果是令人满意的。如充分利用AT91RM9200集成的USB2.0接口、以太网10/100BaseT MAC控制器,完全可以满足复杂的工业控制。随着嵌入式系统和ARM处理器的发展,ARM处理器在工业控制中会越来越多。

图5 手动精调控制界面

图6 Fluke 196C示波器测得实际波形
LCD 触摸屏 ARM 嵌入式 PWM 电路 Atmel MIPS 总线 电源管理 USB Linux 电压 Fluke 示波器 相关文章:
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 基于EPA与IEEE802.15.4两用手抄器的设计(06-01)
- ARM在数字化远程视频监控系统的应用(05-20)
- 基于MSP430的低功耗便携式测温仪设计(06-18)
- 以超低功耗微处理器MSP430为核心的热计量表设计(06-18)
- 基于MSP430及PROFIBUS的监测子站设计(06-12)
