[关闭]
@Pigmon 2017-11-02T01:13:39.000000Z 字数 2316 阅读 82

实验默认的 Driver 控制模型

PanoSim


[2017.11.01] 更新关于 S-Function 中 C 程序的说明
[2017.10.31]

简介

在 PanoSim 默认实验的 Simulink 动力学模拟系统中,默认实验是最简单的模型——只有一辆车,并且除了正向行驶外没有其他控制功能。

输入信号是[车辆模型]输出的[Body, Brake, Steer, Power]这4个 Group 中的信号,即车身状态,制动状态,转向状态和动力状态;

输出信号是对车辆的控制信息,包括油门,挡位,制动,转向等。

default_simple.PNG-8.8kB
图1 简化的车辆与驾驶员模型的关系。驾驶员模型通过输出对车辆的控制信号(油门,挡位,制动,转向)控制车辆,进而改变车辆状态;车辆计算完毕自身状态后,将其输出给驾驶员模型,驾驶员参考当前车辆状态再决定对车辆的控制内容,这样循环。

default_whole.PNG-161.3kB
图2 默认控制模型的整体图

如图2所示,整个模型中,有2个子模型,分别是[DriverModel1]和[veh_1]。

  • [veh_1]的输出为其自身的状态(Body, Brake, Steer, Power等),输出信号给 Goto 模块 [VehicleOut1];
  • [DriverModel1]左侧的 From 模块接收 {Goto 模块 [VehicleOut1]} 的信号,以达成 图1 所示的循环;
  • 在 2 个子模型之间,是[DriverModel1]将控制车辆的信号输出给[veh_1]

模型说明

输入信号

Signal Group 说明
Chassi_States.q0 Body_Out_Bus 簧载质量重心位移X
Chassi_States.q1 Body_Out_Bus 簧载质量重心位移Y
Chassi_States.q3 Body_Out_Bus 簧载质量重心横摆角
Chassi_States.u0 Body_Out_Bus 车体坐标系簧载质量重心速度
Chassi_States.u1 Body_Out_Bus 车体坐标系簧载质量重心速度
Chassi_States.u3 Body_Out_Bus 车体坐标系簧载质量重心横摆角速度
Wheel_LF.u1 Body_Out_Bus 左前车轮旋转速度
Wheel_RF.u1 Body_Out_Bus 右前车轮旋转速度
Wheel_LR.u1 Body_Out_Bus 左后车轮旋转速度
Wheel_RR.u1 Body_Out_Bus 右后车轮旋转速度
Powertrain_Output.av_eng Power_Out_Bus 发动机曲轴角加速度
Powertrain_Output.aa_eng Power_Out_Bus 发动机曲轴角速度
Steer_Kinematics.str_sus_f Steer_Out_Bus 前轮转向K性
Steer_Kinematics.str_sus_r Steer_Out_Bus 后轮转向K性
Brake_Output.turn_off Brake_Out_Bus 制动压力不输出

输出信号

Signal Group 说明
throttle Driver_Powertrian 油门
modetr Driver_Powertrian 档位标志
geartr Driver_Powertrian 手动挡时,决定档位
pcon_bk Driver_Brake 制动主缸压力
drstr_drv Driver_Steer 方向盘转角

[DriverModel1]模型

[DriverModel1]是图2中代表驾驶员的子模型。其总体结构比较简单,将输入的车辆状态信号进行筛选(BusSelector),重组(BusCreator)传递给子模型[Driver]。
子模型[Driver]负责计算控制车辆的输出信号,计算完成后,经过 BusCreator 汇总,成为整个[DriverModel1]的输出。
default_driver_sub.PNG-35.5kB
图3 [DriverModel1]模型,其中有子模型 [Driver]

[Driver]模型

图3 是 [DriverModel1] 的整体图,[DriverModel1] 是整个实验模型的一个子模型。在[DriverModel1] 中还有一个子模型[Driver],它们的关系如下图:
default_layer1.PNG-9.5kB
图4 [DriverModel1]相关的层次结构

[Driver] 模型是整个驾驶员控制模型 [DriverModel1] 的核心内容,也是 [DriverModel1] 中唯一的不止是数据的筛选分割重组功能的子模型,其核心控制逻辑是由 S Function 模块 [Driver Model] 实现的;[Driver Model] 的运算过程由 C 语言程序 [panoDriver_sfun.c] 实现。

default_driver_model.PNG-29.9kB
图5 [Driver] 模型实际图;除了 S Function [Driver Model] 以外,其他模块都是信号的传输集散相关的。

[panoDriver_sfun.c]

PanoSim 开发方定义的函数以 mdl 开头,放在 S-Function 的 Callback 函数中,封装所有的控制实现。其实现方式,内容不对用户开放。

  1. extern void mdlInitializeSizes_Driver(SimStruct *S);
  2. extern void mdlStart_Driver(SimStruct *S);
  3. extern void mdlOutputs_Driver(SimStruct *S, int_T tid);
  4. extern void mdlTerminate_Driver(SimStruct *S);

在目前 PanoSim 提供的所有例子工程中,相同模块的 S-Function 的程序都是一样的。

而因为无法知道,也无法修改这些 PanoSim 自定义函数,而且 PanoSim 底层接口更是不可见(即无法自行开发功能替代这些封装了的函数),所以无法在 PanoSim 现有的控制类 S-Function 中修改核心控制逻辑。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注