本帖最后由 旭日东升 于 2013-1-12 13:28 编辑
8 控制器模型 本章描述控制程序,任务配置,和nxtscara_controller.mdl.模型的项目。 8.1 控制器程序总结 状态机框图 图 8-1显示 NXT SCARA控制器状态机的流程框图。描述在参考策略下 NXT SCARA的轨迹模式和我们可以调节链接角度和笔高度调节模式。
链接角度和画笔的高度可以通过在调节模式的子状态下按下触控按键传感器来调节。
任务配置 NXT SCARA控制器在表8-1中有3个任务描述。 Table 8-1 NXT SCARA 控制器任务
在5.2控制器设计中,控制器的描述用于轨迹控制策略。 数据类型 我们用单精度浮点数据用于策略轨迹控制减少计算误差。在NXT智能块的ARM7处理器没有FPU(浮点数处理单元),不过我们可以执行软件在单精度架构通过GCC的浮点架构库完成。
8.2 模型总结 nxtscara_controller.mdl 基于 Embedded Coder Robot NXT 框架。
设备接口 我们可以配置设备接口通过传感器设备接口设计及其由Embedded Coder Robot NXT库提供的电机模块。 计划和任务 ExpFcnCalls计划模块有任务配置例如任务名字,任务周期,平台和堆栈大小。我们配置计划配置调度函数来呼叫调度任务子系统。
优先级 我们必须设置设备模块的优先级,ExpFcnCalls计划模块在root级别按照1.设备输入->2.任务->3.设备输出排序。低的数据表示高的优先级,允许负数配置设定。 显示优先级,右击模块后选择 [Block Properties].
共享数据我们通过数据存入内存模块共享任务之间的数据。
8.3 初始化任务: task_init任务配置初始化的值
8.4 50ms Task : task_ts1
任务包括策略轨迹模式和调节模式,operation_mode= 1为轨迹模式,operation_mode= 2为调节模式。
轨迹模式 在轨迹模式下状态的传递转换基于计时器timer_trj. 1.初始状态是准备态,timer_trj初始值是unsigned 32 bit的最大值。 2.当按触控键为1时,状态转换到运行态timer_trj设置为0。 3. 在任务周期内 (50 ms)的运行态, timer_trj 累加1。当在运行完成时,状态转换准备态为time_finish,同时timer_trj重新设置为初始值。 定时器计算(Timer) 定时器子系统计算轨迹策略的定时器 timer_trj和其他的定时器。当 DC马达 1和马达 2开始各自的反向间隙弥补, timer_en1和 timer_en2定时器将复位。当开始控制画笔时, timer_pen定时器将复位。 timer_trj将不递增在反向间隙时( timer_en1, timer_en2),同时当弥补反向空隙和处理画笔时,画笔处理计时( time_pen)保持在相同的位置。图 8-11显示每个计时器在采样时变化。
PWM1 & PWM2 计算 (PWM1_PWM2) pwm1 和 pwm2 计算基于 Figure 5-3所示的框图。
反向间隙弥补(反向间隙1弥补& 反向间隙2弥补)
当马达角度变量参考信号反向和它的绝对值大于dthetam_bl [deg]时, 反向间隙开始弥补。这里dthetam_bl是计算误差的极限阀值。在反向间隙弥补时 ,我们从参考马达角度上加 /减一些角度( backlash1/2)。更多些,完成轨迹绘制后,当前运动态的的齿轮还原到初始化的状态。
PWM3 计算 (PWM3) 由timer_pen来计算出pwm3,推导由图8-15的定时器子系统得到。画笔上下运动的方向由pen_idx的奇偶特性决定。
调节模式 当按下触控按键1时,PWM为正的;当按下触控按键2时,PWM为负的;motor_num 用来切换马达。
8.5 100ms Task:task_ts2 该任务完成操作模式切换和在调节模式的调节。operation_mode对应操作模式,motor_number对应调节的马达。
8.6 标定参数 表8-2显示轨迹控制的标定参数,你可能需要标定这些参数由于部件,模块,传感器和电机个体的差异。
表8-2 标定参数
|