目录

  • GOTO控件和From控件介绍
    • 功能介绍
    • 实验过程
    • 补充
  • S-Function Builder控件
    • 本栏参考
    • 功能介绍
    • 实验过程
    • 案例下载
    • 补充
  • BusCreator控件和BusSelector控件
    • 功能介绍
    • 实验过程
    • 案例下载
    • 补充
  • Inport控件和Outport控件
    • 功能介绍
  • Prescan自带的组合控件:Path Follower with Preview控件
    • 功能介绍
    • 原理
    • 参数对话框
    • 输入输出
      • 输入
      • 输出

GOTO控件和From控件介绍

功能介绍

  • GOTO控件:向具有指定tag的From控件发送信号。如果tag可见范围有三种:local,scoped,global,默认为local。
  • From控件:用指定的tag接收来自Goto控件的信号。若要更换tag,输入新的tag后,点击“Update Tags”,Goto source也会随之更新。

实验过程

  • 搭建如下布局(控件设置均使用默认值)
  • 点击Run,观察Scope1,我们看到虽然Sine Wave和Scope1之间没有直接向量的线段,但Scope依然能够显示Sine Wave的正弦波,这就是Goto和From的作用。

补充

Goto和From控件除了传输正弦波数据,还可以一次传输多组多种格式的数据

S-Function Builder控件

本栏参考

一文教你快速学会在matlab的simulink中调用C语言进行仿真

功能介绍

S-Function Builder用于集成 C 或 C++ 代码以创建 S-Function

实验过程

  • 搭建如下布局(三个常数控件的Constant Value依次为1、50、4000,Scope的输入端口个数为3)
  • 双击S-Function Builder控件,弹出设置界面
  • 对system_Outputs_wrapper函数进行修改,以便实现梯形曲线规划功能

打开时的默认代码:

void system_Outputs_wrapper(const real_T *u0,real_T *y0)
{/* Output_BEGIN */
/* This sample sets the output equal to the inputy0[0] = u0[0]; For complex signals use: y0[0].re = u0[0].re; y0[0].im = u0[0].im;y1[0].re = u1[0].re;y1[0].im = u1[0].im;*/
/* Output_END */
}

修改后的代码:

void sfun_Outputs_wrapper(const real_T *u0,const real_T *u1,const real_T *u2,const real_T *t,real_T *y0,real_T *y1,real_T *y2)
{/* Output_BEGIN */
int Am = u0[0];int Vm = u1[0];int Pf = u2[0];int T = t[0];int Ta = Vm/Am;int Tm = (Pf - Am*Ta*Ta)/Vm;int Tf = 2*Ta+Tm;printf("%d\r\n",Tf);//梯形if(Tm>0){if(T <= Ta){y0[0] = 0.5*Am*T*T;y1[0] = Am*T;y2[0] = Am;}else if(T<=(Ta+Tm)){y0[0] = 0.5*Am*Ta*Ta + Vm*(T-Ta);y1[0] = Vm;y2[0] = 0;}else if(T<=(Ta+Tm+Ta)){y0[0] = 0.5*Am*Ta*Ta + Vm*Tm + 0.5*Am*(T-Ta-Tm)*(T-Ta-Tm);y1[0] = Vm-Am*(T-Ta-Tm);y2[0] = -Am;}}else{//三角形Ta = sqrt(Pf/Am);if(T<Ta){y0[0] = 0.5*Am*T*T;y1[0] = Am*T;y2[0] = Am;}else{y0[0] = 0.5*Am*Ta*Ta + 0.5*Am*(T-Ta)*(T-Ta);y1[0] = Am*Ta - Am*(T-Ta);y2[0] = -Am;}}
/* Output_END */
}

同时,用insert_Ports插入几个变量。默认有u0,y0,我们还需要插入输入变量u1,u2,t和输出变量y1,y2

最后点击Build:(此时我还将左上角S-Function Nmae的名字改成了sfun)

编译成功后,右侧的Build Log会显示如下记录。如果没有成功,请检查函数复制粘贴时,是否遗漏括号,插入的变量数量与名称是否一致。

  • 回到simulink界面,进行连线

  • 然后点击Run,查看Scope的结果

  • 这个显示样式并没有办法明显的区分出不同曲线的变化情况,所以我们点击左上角的齿轮符号,调整布局为三行显示,同时把Stop Time的值改为120。

  • 再次点击Run,我们便可以清晰的看到位置曲线、速度曲线、加速度曲线的变化趋势了。

案例下载

S-Funciton的一个简单实验

补充

  • S-Function Builder 控件不支持封装。但是,可以封装包含 S-Function Builder 模块的 Subsystem 模块。有关详细信息,请参阅动态封装子系统。
  • 除了使用S-Function Builder控件建立一个S-Function外,我们还可以直接创建一个S-Function。

    • 通过S-Function直接创建的图标和S-Function Builder创建的图标是不一样的。
    • 双击S-Function控件时,显示的不是Builder界面,而是Parameters设置界面,我们可以点击Edit来查看默认代码,同时进行修改。


    • 对于S-Function Builder创建的控件,如果也想查看修改Parameters界面,可以右键单击该控件,点击Block Parameters(S-Function)

BusCreator控件和BusSelector控件

功能介绍

  • Bus Creator控件:可将一组输入信号合并成一条总线。(在配置界面设置输入信号的个数和顺序)
  • BusSelector控件:输出从输入总线选择的信号。(在配置界面设置输入的信号和输出的信号,信号可多次重复输出或不输出)

实验过程

  • 搭建如下布局(控件设置均使用默认值)
  • 双击Bus Selector进入配置界面,选择signal1、signal2、signal1作为输出信号
  • 设置Scope的输入端口数量为3,并以三列的布局显示,调整信号连接。

    • 点击Run,观察Scope,我们可以看到正弦波和常数1都出现在了Scope界面中,并且正弦波出现了两个。

案例下载

BusCreator和BusSelector的简单实验

补充

  • 除了使用BusSelector对信号选择,也可以使用Mux等对信号进行操作,Mux的作用是将相同数据类型和复/实性的输入信号合并为虚拟向量。

Inport控件和Outport控件

功能介绍

  • Inport控件:为子系统或外部输入创建输入端口。

    • Main界面

      • Port number:指该端口在子系统或该模块中,是第几个输入端口。
      • Icon display:指Inport控件显示的图标,默认显示端口号。
    • Signal Attributes界面

      • Data type:数据类型,通常Inherit: auto自动适应就行,有时候我们也会创建一些特殊的类型,来使用,比如上图中,在车辆模型中,我们使用的是Bus: PRESCAN_SELFSENSORDATA类型的输入数据。
      • Sample time:指定采样时间,默认为-1,表示根据模型中的模块上下文继承其采样时间。
  • Outport控件:为子系统或外部输出创建输出端口。界面与Inport控件类似。

Prescan自带的组合控件:Path Follower with Preview控件

功能介绍

在图形用户界面中选择路径跟随器模型来模拟驾驶员行为。

原理

  • 路径跟随器是基于最优预见控制理论,它通过最小化车辆的位置(车辆重心)和参考路径的横向误差计算最佳前轮转向角。它近似于人类驾驶员的一般行为。
  • 该算法使用10个预览点来计算方向盘角度。预览距离通过将车辆速度(单位为米/秒)乘以“预览时间”(默认为1秒)来计算。这实际上是车辆在1秒的预览时间内移动的距离。10个横向误差(e_Latme\_Lat_me_Latm​)是通过首先找到轨迹上最近的点(pvpref,mpvp_{ref,m}pvpref,m​),然后找到该点到车辆纵轴的距离来计算的。
  • 路径跟随器是一个Simulink模块,它将轨迹(路径+速度曲线)转化为车辆动力学模型的转向角输入。油门、刹车和初始速度也受到控制,但这些与轨迹速度曲线无关。

参数对话框

  • 控制器参数

    Longitudinal Controller P:proportional gain,比例增益
    Longitudinal Controller I:integral gain,积分增益
    Longitudinal Controller D:integral gain,导数增益
    Longitudinal Controller AWU:anti-windup gain,AWU反饱和增益
  • 系统参数

    系统参数在simulink中是不可以更改的,如果想要修改,需要在Prascan中进行修改,修改完之后重新构建,位置如下:

输入输出

输入

  • ActorOffset_Left(+)/Right(-):轨道起始位置w.r.t .全球(世界)坐标系。这些值由预扫描自动填充,并与演员活动轨迹相关。通常会连接Ground控件(输出为零)。
  • position x,y,Y:车辆实际位置。x、y是位移,Y是Z坐标偏移值,这个不知道如何解释。
  • Initial velocity:车辆初始速度。
  • Desired Velocity:车辆期望速度。车辆在一定范围内达到设定值。
  • velocity:车辆实际速度。
  • vx:车辆在x轴方向的速度分量。
  • vy:车辆在y轴方向的速度分量。
  • yaw rate:车辆的偏航速度。
  • Cornering Stiffness Tires Front:前轮胎转弯刚度,转弯时每弧度滑移角的前轮胎刚度。数值可以是90943。
  • Cornering Stiffness Tires Rear:后轮胎转弯刚度,转弯时每弧度滑移角的后轮胎刚度。数值可以是148091。
  • Steering ratio:方向盘角度与车轮角度之比。数值可以是20。

输出

  • delta_steerwheel:转向角。

  • Throttle:以0-100%的比例节流。

  • Brake pressure:制动功率为0-制动最大压力。

  • v0:初始速度

  • Auto_GearShift:自动换档的档位,0是N挡(空挡),1是前进挡(D挡位)。

  • Actor/Traj_distance:车辆重心到最近轨迹点的距离。

  • Actor/Traj_angle:车辆纵轴和最近点轨迹切线之间的角度。

【Simulink+Prescan笔记】控件介绍相关推荐

  1. PyQt5学习笔记- PyQt5控件介绍

    PyQt5控件介绍 一.控件的概念 二.控件结构继承图 一.控件的概念 一个程序界面上的各个独立的元素(一块矩形区域) 具备不同的功能:用户点击.接受用户输入.展示内容.存放其他控件 初始常用控件:按 ...

  2. operamasks-ui2.0 +MVC4.0+EF5.0实战之一 开篇及布局控件介绍

    两年前,曾打算自己开发一个web开发框架,把部门.人员.权限.日志作为基本服务加入进去,在其基础上可以做业务快速开发,结果没有坚持下去,仅仅开了个头就夭折了.究其原因,一方面是采用自己完全不熟悉的新技 ...

  3. Flutter 系列文章:Flutter Icon 控件介绍

    Flutter Icon 控件介绍 一.使用方法 构造方法 Icon(this.icon, {Key key,this.size,this.color,this.semanticLabel,this. ...

  4. QT信号与槽-启动系统程序以及相关控件介绍

    1.1 创建一个继承至QWidget的项目. 1.2 设计界面,分析界面采用的布局方式. 首先,每行控件采用水平布局方式,第三行为了使控件靠右,前面添加一个占位控件. 三行采用垂直平局: 选中控件,通 ...

  5. ASP.NET Atlas简单控件介绍——Sys.Component基类与Sys.UI.Control基类

    作者:Dflying Chen (http://dflying.cnblogs.com/) 本系列有三篇文章: ASP.NET Atlas简单控件介绍--Sys.Component基类与Sys.UI. ...

  6. DevExpress控件介绍

    DevExpress ExpressVerticalGrid Suite 3.12 for Delphi BCB (控件)介绍: 这是一款Delphi和C++ builder控件,inverted网格 ...

  7. Web开发中的弹出对话框控件介绍

    Web开发中,目前由于Jquery的大行其道,因此很多弹出对话框,都用到了Jquery技术,反而原始的弹出对话框的方式较为少用了.不过基于JQuery的方式实现对话框窗口弹出,也有很多控件可以利用,由 ...

  8. Flutter 系列文章:Flutter Text 控件介绍

    flutter Text 控件介绍 一.使用方法 构造方法 设置普通的text Text("") Text(this.data, {Key key,this.style,this. ...

  9. ASP.NET Atlas简单控件介绍——InputControl,TextBox,Button和CheckBox

    作者:Dflying Chen (http://dflying.cnblogs.com/) 注:本系列文章比较基础,基本为Atlas官方文档的翻译,熟悉Atlas的朋友可以跳过. 本系列有三篇文章: ...

最新文章

  1. Python连接MYSQL,并做查询操作
  2. 深度学习笔记——基于传统机器学习算法(LR、SVM、GBDT、RandomForest)的句子对匹配方法
  3. C#实现软键盘的几个关键技术实现方法
  4. oracle数据库主键自增序列_Oracle数据库序列详解
  5. 做了三年Java,docker网络映射配置
  6. 01-二维数组中的查找
  7. nginx 4层代理配置
  8. [转]win7 64位下android开发环境的搭建
  9. PLSQL连接Oracle报错 ORA-12154 标识符
  10. 如果降低sbus总线的传输速率/帧率,sbus怎样转UART,sbus接到4G
  11. windows 安装jenkins
  12. selinux --chcon命令
  13. Java权限管理系统
  14. grub4dos 制作WIN7、WINPE2003、Ubuntu、dos工具箱多启动U盘 (不量产)
  15. 东芝2303am维护清零_东芝打印机2303A怎样清零?
  16. 2022基金定投数字货币理财程序源码
  17. Web端的邮件内容HTML格式规范总结
  18. [luogu4315] 月下“毛景树”
  19. rx6800s什么水平N卡 rx6800s什么水平
  20. 深度揭秘Java GC底层,这次让你彻底弄懂她

热门文章

  1. 显示百度地图要注意的:试用setContentView前初始化BMapManager对象,否则会报错
  2. GNSS算法进阶(二)- kalman滤波单点定位算法代码实现
  3. Java教程:Jasper-pdf打印类
  4. go语言编程二维码生成及识别
  5. [数据库系统综合实验]电子图书资源服务系统
  6. 8.3K Star,这才是我们苦苦寻找的PDF阅读器。。。
  7. Perl 语言学习笔记 (一)
  8. Qt报错处理 程序异常结束 The process was ended forcefully.
  9. Linux 运维常见问题场景个人汇总
  10. Matlab的Notebook软件工具设置及程序运行