10 控制器的模型(定点算法) 本章介绍NXTway-GS控制器模型的固定点的版本,并认为一个精确的损失和对控制器性能的溢出影响。 10.1 什么是定点数? 定点数是一个近似实数计算的表达方式。它使用整数数据类型代表实数,不使用浮点数据类型。通过以下的比例方程,我们可以
评估定点数的数值。
其中,S代表每1位的实值,而且当Q值为零时B是实值时。一般而言,S被称为LSB或解析范围,B被称为误差。 定点数字有舍入误差,因为它代表在有限范围内的实数。定点数所代表的最大范围受到限制,长度取决于其字长。字长是整数数据
类型的总比特数。一般来说,在固定的字长时,定点的数有精度与最大范围的限制。 范例
定点数对应的数字,VR =2计算条件下的8位有符号整数,S=0.3,B = 1时。 在没有FPU的微处理或者DSP上,我们通过定点数来计算实数。一般来说,定点算术有一个优点,它的运行速度更快,而不是
浮点运算。另一方面,它有一个缺点,它有数据范围超出范围可能会发生溢出。表10-1定点和浮点比较。 表10-1定点与浮点 10.2 浮点到定点数的转换 在MATLAB / Simulink产品内部使用定点数处理能力的定点数工具箱/ 定点数仿真。参考文献[3]了解定点数建模。 nxtway_gs_controller_fixpt.mdl是nxtway_gs_controller.mdl的定点数仿真版本。它采用定点数据类型来定义方向盘角度,
车身仰角,电池,而不是单精度数据类型变量的。定点转换的关键点有以下几种。 定点数据类型 param_controller_fixpt.m定义在nxtway_gs_controller_fixpt.mdl使用Simulink.NumericType对象。 Simulink.NumericType指
定所有数据类型,例如整数,浮点和定点。 一般来说,控制器的性能取决于它使用的数据类型。在使用相同的字长在有精度和覆盖范围之间的取舍,如图示10.1了什么是定点数?
对控制器设计这些是需要考虑的,以便找到最好的定点数的设置。 NXTway-GS的案例中,方向盘角度和车身仰角的定点数的设置非常重要,,如果精度的损失或者发生溢出将导致 NXTway-GS不能平
衡。我们能够估算 NXTway-GS移动多远由下列公式 ​​。
R 是车轮的半径 而 S是 dt_theta的斜率 . Table10-2 显示 NXTway-GS通过不同的斜率得到最大移动距离。
定点模型 (nxtway_gs_controller_fixpt.mdl) nxtway_gs_controller_fixpt.mdl 是 nxtway_gs_controller.mdl 修改版本,修改如下: z 转换单精度数据类型到定点数据类型 z 因为不同类型的数据信号是无法信号矢量化的,通过MUX模块矢量化相同的数据类型的信号 z 在数据类型转化模块中由PWM计算中来调整斜率
图 10-1 NXTway-GS 控制器定点设置 图 10-2 信号矢量化
图 10-3 在 PWM计算中调节斜率 10.3 仿真结果 为了仿真nxtway_gs_controller_fixpt.mdl,以 nxtway_gs.mdl / nxtway_gs_vr.mdl为参考修改控制器为需要模型。 在改变参考模型中,右键单击块,并选择[Model Reference Parameter]编辑[Model name]。
|
我们可以看到控制器的性能是多种多样的,根据定点数数据类型通过使用几个不同斜率(dt_theta)的车轮角(deg)的的精度。图10-4是
通过dt_theta不同斜率时,静态平衡的模拟结果(车体的仰角的初始值是5deg)。结论收敛时间和波动同斜率的变化成正比。当斜率
比2^-5较大时,因为精度损失过大,NXTway-GS不能平衡。
图 10-4 不同斜率仿真结果 (2E-6 = 2-6) 另一方面,较小斜率意味着NXTway-GS的最大移动距离变短。例如,当斜率设置为2-22,因为溢出的,NXTway-GS将运行 0.36[M](参阅表10-2)。
图5是NXTway-GS溢出倒下时捕获的图像。
图 10-5 NXTway-GS数值 溢出而倒下 10.4 代码生成和经验结果 由nxtway_gs_controller_fixpt.mdl的代码生成和下载程序的过程nxtway_gs_controller.mdl相同。生成的代码只使用整数数据类型。
当我们下载定点数代码到NXT中,我们可以看到相同仿真结果(控制器的执行和溢出)。
|