Advertisement

CarSim仿真快速入门(十四)—CarSim-Simulink联合仿真

阅读量:

本文旨在提供一个详细的指导方案来展示如何将Simulink模型与BikeSim、CarSim或TruckSim的VS数学模型集成到仿真过程中。

一种常见的防抱死制动系统(ABS)示例可在BikeSim、CarSim及TruckSim等仿真软件中实现多种功能应用。本文不涉及ABS相关内容或制动系统算法的建模工作,并不深入介绍其中的制动系统相关Simulink模型细节。相反地,则着重阐述如何配置VS车辆模型以便于在 Simulink 环境下进行参数设置与模拟测试。

为了使用本教程,请先确保您已安装了Simulink(来自The MathWorks)和 Vehicle Sim 软件包。且您需了解这些工具的基本功能和操作方法。

本教程采用了Simulink ABS示例模型作为基础。每个产品通常附带几个示例模型供参考。运行控制库分为几类:在CarSim和TruckSim中为" Simulink and LabVIEW Models",而在BikeSim中则为" Simulink Models"。其中包含一些ABS相关案例。在CarSim和TruckSim中的一个扩展案例命名为"Split Mu"(见图1)。而Bike Sim则提供"Braking in Turn – Low Mu"案例(见图2)。

请注意,每个ABS示例都有一个没有ABS的仿真的对比示例①。

请单击视频按钮以访问现有仿真结果页面。观察结果时,请注意以下几点:首先,在CarSim和TruckSim模拟中,请关注屏幕两侧出现的不同路面效果——其中一侧呈现出冰面般的光滑度(见图3),另一侧则像是人行道区域(见图3)。而在BikeSim模拟中,则可以在封闭轨道上观察到湿滑的人造瓷砖表面效果。无论是在哪种模拟场景下(CarSim、TruckSim或BikeSim),您始终会看到两辆车的存在,请明确区分哪些车辆配备了ABS系统并能够正常工作

图1.用于在对开表面上进行ABS测试的运行控制界面.

图2.BikeSim ABS测试的运行控制界面.

在各个章节中,用户将复制 Simulink 控制器,并按照顺序完成将其依次连接到 VS Vehicle 模型的任务。这些数字通常会呈现 CarSim 和 TruckSim 的具体操作步骤。根据需要提供 BikeSim 相关案例的具体信息。

图3.具有ABS和不具有ABS的车辆仿真结果(CarSim)

创建一个复制的示例

随后基于现有运行控制数据集构建的一个副本被生成。该副本所对应的车辆并未配置ABS制动装置。

在使用Simulink ABS进行测试时,请访问包含示例数据集(图1或图2)的资源库。通过点击Run Control数据集中蓝色标记的链接①即可查看该数据集的具体信息。分别在CarSim和TruckSim环境中运行时,默认名称为Braking – Split Mu:No ABS;而在BikeSim模拟器中,则命名为Brake in Turn – Low Mu以实现类似的制动效果。

2.当单击Duplicate按钮时①时,生成示例数据集的副本文件(图4)。可以选择使用原始名称②作为默认设置。

3.取消选中Overlay videos and plots⑤ 框以禁用任何覆盖。

  1. 点击Run Math Model③按钮。大约一秒后,仿真即将完成,并切换为可用状态。

  2. 点击视频界面按钮④以便查看仿真结果。当系统中缺装ABS时,可能会显示车辆的不稳定性表现。

采用ABS控制器与制动液压系统的组合来复制现有的Simulink模型,并随后利用这一副本与车辆模型进行新连接的建立。接下来需要找到存储这些模型的文件位置。

在"帮助"菜单的最后一项处点击:选择CarSim(可选TruckSim或BikeSim)。这将打开一个小型对话框,在其中包含产品名称、版本、日期以及指向Windows工作目录的链接(见图5)。该工作目录同样是VehicleSim产品的当前数据库。用下划线标记的部分表示它是您电脑文件夹的超链接。

图4.不带ABS的制动测试运行控制数据集的副本

图5.使用“About”窗口查找当前工作目录

2. 单击路径名①。这将显示Windows中数据库文件夹的视图(图6)

图6. VS数据库文件夹内容的Windows视图,包括名为Extensions的文件夹

请特别注意:其中有一个文件夹被命名为Extensions①,并将其标记为 Extensions ①(如图7所示)。请单击该文件夹名称即可查看其内容

图7. Windows中Extensions文件夹的内容,包括名为Simulink的文件夹

4. 在Extensions目录中有一个文件夹命名为Simulink。点击打开名为Simulink的文件夹(如图8所示)。该文件夹内含多个具有自定义功能的Simulink模型,并包含一些附加支持 MATLAB 文件的子目录。

图8.复制ABS模型文件,并给副本一个新名称

获取相关ABS模型文件并将其复制至工作目录中。分别为CarSim和TruckSim构建的ABS模型分别为abs_CS9.mdl和ABS_TS9.mdl,请确保这些子模型已被正确配置并在同一目录下使用适当的标签标记以避免混淆。随后,请将所有重复使用的ABS子模型统一命名为abs_tutorial.mdl以便后续操作时能够快速定位和管理这些组件。

切换回CarSim / TruckSim / BikeSim界面。可以通过按下Alt+Tab键或者在任意可见窗口上点击来实现这一目标。关于图5所示的About窗口(如果有),请考虑将其关闭以优化界面布局。

链接到新的Simulink模型

打开CarSim、TruckSim或BikeSim应用程序。
通过按住Alt键并切换工作表或直接点击窗口的活动部分。
关于本节的详细讨论,请参考图5所示的位置。
如果发现该位置仍然存在,则请将其关闭以避免干扰。

图 9.链接到模型:Simulink库 Link to the Models: Simulink library.

通过设置" Models"下拉控件①为" Models: Simulink库 ②"。这将导致一个潜在链接出现在模型下方(图10)。

图10. 选择选项: [Link to New Dataset]

偶尔情况下,在初次操作时无法打开潜在链接。当遇到此情况时,请重新单击下拉列表中的选项 Models:Simulink。

2. 通过下方链接选择框③完成设置,并选择[Link toNewDataset]选项④ 。随后系统会提示您输入新的数据集名称(见图11)。如需测试,请输入一个名称,例如‘ ABS for Tutorial’① ,之后点击‘Create’按钮②。

图 11. 为新建的数据集指定名称.

在连接至新数据集之后,请注意界面上新增了一个编号为④的控件(见图12)。界面中央部分标题现在呈现为"Run Control with Simulink"①,并新增了两个按钮:"RunNow ②"和"SendtoSimulink ③"。点击新链接对应的数据显示集(图13),即可查看相关设置信息。

图12.带有Simulink数据集链接的Run Control界面的外观

图13.使用Windows文件浏览器选择Simulink模型

4. 建立与Simulink模型之间的连接的第一步是定位至界面1,在其路径字段中指定所需的文件路径。通过点击相邻的位置标识符(标记2),即可打开Windows系统中的文件浏览器(标记3)。在导航至位于Extensions子目录下的Simulink工具包目录后,请选择用户自定义放置在该目录下的abs_tutorial.mdl模型文件(标记4)。完成上述操作后,系统将自动将相应的相对路径名称插入到黄色标记区域。

5. 使用Back按钮或者Home 按钮,返回到 Run Control 界面 (图 12).

6. 点击运行控制面板中的"发送到 Simulink"按钮编号③(参考图12)。VS浏览器支持CarSim、Truck Sim 和 Bike Sim 工具包,并通过导入文件abs_tutorial.mdl打开 Simulink。图14展示了 Car Sim 示例模型,在该模型中 S-Function 组件标注了 Car Sim 图标①。Truck Sim 和 Bike_sim 模拟器采用了与各自产品相关的图形元素。

图 14. 修改之前的ABS教程示例.

7. 当前显示的模型仅是用户基于现有ABS控制器所创建的一个复制体。就本教程而言,在模型中移除S-Function。可通过选定该选项并按下Delete键完成操作(图15).

图 15. 没有车辆 S-Function的例子

为了方便操作,请您先打开Simulink库浏览器(可从Simulink View菜单中找到)。根据用户的特定需求选择合适的仿真类型(如图16所示),然后定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别,在功能模块中定位到S-Function类别。

图16.从Simulink库浏览器拖放VS S-Function模块

CarSim、Truck Sim 和 Bike Sim 每个都包含三个库级函数模块:车辆 S 函数 3(编号为 3 的车辆类函数),支持摄像头传感器的功能块(集成摄像头传感器模块)以及实现实时视频捕捉的功能块 4(编号为 4 的实时视频捕捉功能块)。在功能块设计上除名称标识符和图标外(即命名符号及图标设计上),这三个仿真环境完全一致(它们均基于相同的内部代码实现了 VS 求解器与 Simulation Link Simulink 的有效连接)。

制作Simulink模型时, 可通过将S-Function拖拽至所需位置以实现S-Function的添加. 接下来, 连接输入与输出信号, 类似于处理其他模块的方式进行连接(参考图17).

图17. 具有一个车辆S-Function的Simulink模型.

9. 使用File菜单或者Ctrl+S保存当前的Simulink模型

10. 关闭 Simulink 窗口(typeCtrl+W).

VS 数据库与 Simulink 之间的连接基于 'Models: Simulink' 库中的数据集进行构建。用户最近在使用 Simulink 模型时,在指定路径名下新建了一个数据集,并且成功地将车辆图标拖放到了 Simulink 工作区中。随后,请用户提供关于 VS Solver(数学模型)与 Simulink 之间具体连接细节的信息。

用户可通过导航至新 Models Simulink 数据集的 'Run Control' 界面(第 7 页)来查阅相关资料。点击蓝色链接④即可直接访问 Simulink 界面(图 18)。

该界面包含多种功能选项,它们负责配置如何将车辆模型与Simulink建立连接。其中第一个部分涉及用户先前保存的Simulink模型文件①的具体内容。

图18. ABS控制器的Models: Simulink 数据集

通常情况下,在CarSim中设置积分方法和时间步长对于保证用户与外部Simulink模型的一致性至关重要。请确定已选中的选项框②以实现此操作。

该系统中配置有可供选择的六种数值积分方法③。右键点击可查看各选项的具体描述④。其中常见采用的是AB-2算法,在本例中设置的时间步长为5.0×10^-4秒(即0.0005秒)。然而,在当前特定案例中存在一个ABS控制装置(见图19),其特性表现为频繁开启与关闭制动器动作,在这种情况下可能会导致液压系统的不连续性现象出现。因此,在预期行为呈现高度非连续特征时,请考虑选择更为稳健的Euler求解方案。

图19. 选择欧拉方法时可用的选项

该系统除了采用积分方法之外③,在时间步长的选择上也提供了相关控制界面⑥。右键单击时会弹出提示信息(如图18所示)④,并建议采用Euler或AB-2等常规的时间步进方案⑥。

增加一个另选开关, 以实现同步导出与导入功能. 该功能模块的选择基于与Simulink模型之间交换输入与输出变量类型的不同, 其具体设置将在完成导入与输出配置后进行详细说明.

首先,我们将创建新的数据集,指定用于导入和导出的变量:

将库I/O通道配置为Import(图20)⑨。潜在链接 位于控件下方(图21)⑩。

图20. 从Import库中链接到I/O Channels

图 21. 从Import变量链接到新的数据集

2. 采用新增的潜在连接作为选项[Link to New Dataset] ⑪(见图21)。系统会引导用户输入新数据集的名称。将教程标记为‘ ABSImportsforTutorial’。界面中会展示新增的数据集链接⑧(见图22)。

图 22. 链接到I / O通道Export库

第三步,请从菜单栏中的"Export"选项卡中选择一个下拉式输入框,并在其字段中配置相应的库I/O通道参数。完成此操作后,在该控制下方的位置处将出现Potential Links组件(如图23所示)。

图 23.为输出变量链接新的数据集

如同用于Import链接的方式一样,对于新的潜在连接,系统会通过下拉式选择框(图23)设置[Link to New Dataset]选项.系统会引导您输入新数据集的名称.将‘ ABS Exports for Tutorial’命名为教程.界面上会展示对应的新数据集连接(图24)

图 24. 从“Model:Simulink”界面链接到新的“Import和Export”数据集

Import变量

点击进入该通道的蓝色链接⑩后转至I/O Channels: Import界面。此示例使用了一个已命名的数据集。最开始时这是一个空的数据集,在没有任何Import变量被赋值的情况下运行。(见图25)。

图 25. 导入数据集初始为空.

请配置为 import information 源①。当用户选择此选项时会配置为 Run Control 数据集的关联的可能引用(见图26)。

图 26. 选择感兴趣的运行控制数据集

2. 通过PotentialLink的下拉控件来选择与目标车辆相关的Run Control数据集②。在此示例中,默认会跳转至制动运行界面③。当选择"Run Control"数据集时,在此过程中VS浏览器会切换至"Run Control"界面,并随后返回到Import界面。现在,在Import界面上可集成模型中所有相关变量的信息,并可与Simulink协同工作(如图27所示)。

图 27. 当选择Run Control数据集被选中后Import界面出现

自动生成两个文档文件,在数学模型中列出所有可能从Simulink导入的变量。其中一个是带有选项卡式的文本文件,在黄色区域显示其路径名;另一个是表格格式的文档,在下方标注着具体变量数量(如本示例所示为328个可导入变量)。

当用户具备安装Excel或其他用于打开文件表格软件时,请单击ViewSpreadsheet按钮⑤。这些表格将展示所有变量、单位、描述以及各组件类型的数据。如图28所示,该表按照组件分类(C列)展示了各项数据,并对制动相关参数进行了筛选。

图28. 具有所有输入变量的表格例子

在Import界面的 Categories 下拉控件区域中(如图27所示),单击 Select by type of component 以筛选组件类型. 可以观察到一个组件列表用于展示其包含的各种组件(如图29所示).

图29. 制动类别的变量在Import界面的显示

6. 选择部件类型为Brakes⑧ . 变量列表⑦将会调整到只与制动相关的变量。

7. 右键点击每一个变量,则会出现变量相关的信息,比如系统,描述等⑨。

对于CarSim和TruckSim而言,在AvailableVariables列表中查找输入变量IMP_PBK_L1,并双击它。该变量将在VariablesActivatedForImport列表⑩中显示。在变量名称右侧会显示Replace、Add或Multiply三种选项⑪。默认设置为Replace,在当前案例中这是合适的。

依次点击Available Variables 列中的IMP_PBK_L2、IMP_PBK_R1以及IMP_PBK_R2以新增其他三个变量。这样操作后可观察到Variables Activated for Import(图30)保持一致状态。

图 30.在CarSim和TruckSim中激活后的导入变量

对于BikeSim,激活输入变量IMP_PBK_1和 IMP_PBK_2如下(图31).

图 31. BikeSim激活输入的变量.

输出变量

专门设计的用户界面用于定义从VS求解器导出到Simulink的变量集。通过点击“I/O Channels:Export”界面来实现这一操作。具体步骤如下:首先,在主菜单中找到并点击“Back”按钮以返回至主窗体(如图24所示);然后,在工具栏中找到并点击位于左侧侧边栏中的“Export Channels”蓝色链接⑬进行操作。

在此处,请指定在I/O Channels: Export 界面(图32)。
当系统启动时,默认情况下该界面不会显示任何变量(与图25页的输入界面类似)。这表示系统尚未加载任何数据。
按照相同的方法,系统会收集所有可访问的输出变量信息,并根据需要选择应激活的所有相关变量以导出到Simulink。

在下拉控件中进行操作可以选择一个任务以获取导出信息①。当您选择此选项时,系统将显示与该数据集相关的潜在链接②。

图 32. 激活变量以从车辆S-Function块中导出.

2. 通过潜在链接②中的下拉式选择框来设置与该运行控制数据集相同的参数设置(新的制动运行)以导入到Simulink环境中的模型中。类似于Import功能,在此操作后将自动生成两个文档文件:一个是显示在黄色区域④中的标签文本文件(变量说明),其变量数量写在其下方(此示例中有641个输出变量);另一个是表格形式的信息文件⑤(可通过"View Spread sheet"按钮访问)。

第3步, 与之前相同, 通过选择Categories下的下拉式选择器来设置"按组件类型筛选"选项. 这将使您能够查看到各种组件类型的列表.

4. 选择部件类型为Wheels⑧ . 变量列表⑦将会显示和Wheels相关的变量。

5. 右键点击选择的变量,则会显示变量的说明⑨.

对于CarSim 和TruckSim, 请定位到可用变量中的Vx_L1输出变量,并点击它。该标记会标识出相应的输出变量⑩。

增加其它三个变量:Vx_L2, Vx_R1和Vx_R2到Available Variables列表中。

除了Wheel类别外的另外两个变量也被整合到CarSim和TruckSim示例的变量列表中。通过将Categories下拉控件⑥的选区设置为Show all variables,并随后选定Vx_SM和Pbk_Con这两个变量。

Variables Activated for Export ⑩列应和图33相符合。

图 33.在CarSim和TruckSim的例子中激活的六个输出变量

对于BikeSim, 激活的5个输出变量如图34中的列表:

图 34. BikeSim中五个输出变量

此时已成功配置此示例中车辆模型与外部simulink模型之间的变量关系,并通过点击Back按钮返回至Models:Simulink界面(如图35所示)。

按Ctrl键激活"同步运动学导出与力导入"选项⑤ 。该选项仅当积分算法设置为Euler或AB-2时可见;其他情况下不起作用。在采用Euler或AB-2积分算法时(即Euler和AB-2),VS求解器支持两种不同的通信模式以实现控制器在时间域内与外部软件的有效交互。通过此选项卡可调节OPT_IO_SYNC_FM参数的设置。

图35. 使用force imports设置同步输出

a. 在未选择该框的情况下(OPT_IO_SYNC_FM = 0),所有模型计算均基于Simulink接收的真实仿真时间T进行。若将导入至VS S函数的变量设定为基于车辆模型的外部参数(如车机 clocks),则上述流程能够顺利运行。

b. 另一方面, 当Simulink中的车辆模型基于从车辆模型导出的变量计算力、力矩和制动压力时, 也会出现一个时间延迟现象, 因为这些值在下一个时间段步长才会传递给系统。当选中该选项(OPT_IO_SYNC_FM设置为1)时, 从VS S-函数导出的所有运动学变量将在系统处理完当前时间段之后, 即时间段长度之后的时间点(T+TSTEP)被系统处理。采用此配置项⑤, 在导入阶段将同步更新来自Simulink的动力学参数。

在该ABS实例中,请确认已勾选"复选框"选项。其中五个输出端口为运动型量(速度),第六个输出端口为控制型量(主缸制压压力)。

有关此高级功能的更多信息,请参见《VS求解程序参考手册》。

9. 单击 "Home "按钮返回到 "run control "界面①(图36)。

图36. 运行控制数据集

点击 "send to Simulink模块" 按钮.VS浏览器将重新加载Simulink模型(图37),并采用最新的连接参数.

图 37. 连接到CarSim S-Function的Simulink模型

特别提示:请参考图中所示的数据。图中展示了4个输入端子(标记为①)和6个输出端子(标记为②),这些配置与之前输入/输出端子数据集的设定保持一致。此外,在另一幅图中展示了BikeSim的相关数据(包含2个输入端子和5个输出端子)。

启动播放按钮③(如图37所示),以确保结果与预期一致。

图 38. 与BikeSim S-Function连接的Simulink模型.

关于车辆 S-Function模块

基于现有关系基础,请进一步探讨图37中所述Simulink模块的具体功能。

VS S-Function有哪些自动设置属性?这些属性可以根据VehicleSim产品中指定的车辆表示方式或满足Simulink模型信号要求的方式来配置。它们主要涉及输入量与输出量的组织安排。

如果改变了车辆及其属性或是 VS 浏览器中的导入或导出变量集,则需在 Simulink 中执行相应的更新操作。

导入和导出变量

当按下发送至Simulink按钮以更新Simulink中的模型时, VS S函数基于与Models相关联的导入与导出数据集中的参数设定, 配置导入与导出数组. 其中涉及的数据集配置可在上一节中详细探讨.

为了确保Simulink模型能够正常运行,在VS端定义的输入和输出变量数量应与Simulink模型中的信号维度保持一致;同样重要的是这些变量应按照Simulink模型所预期的方式进行配置。

上一节中所采用的选择流程是专门用于基于CarSim、TruckSim和BikeSim中的ABS控制器模型的设计。当这些模型所需的导入或导出的变量发生变化时,则必须手动创建相应的导入与导出数据集以满足需求。

Simulink配置参数

本研究中的Simulink模型涉及通过数值方法解决底层微分方程。例如,CarSimTruckSimBikeSim所提供的ABS控制器模型各自包含有采用传递函数块表示流体动力学的制动执行器系统,并标示在洋红色框中。研究者可以通过这一操作进行相应的设置以调整用于求解这些方程的方法。为了实现这一目标,在 Simulink 的 Simulation > Model Configuration Parameters 菜单项下会显示一个对话框(图 39)。

图 39. Simulink配置参数

无论是在单独运行状态还是与其他工具协同工作时(包括与Simulink或其他软件配合使用),VS求解器始终在恒定的时间间隔内求解自身的方程组。从Simulink框架的角度来看,在其内部环境中配置了VS S函数块后,这个模块本质上就是一个离散系统。

当Simulink的参数设置与VS求解器所采用的离散时间间隔相一致时,则可以将Simulink模型配置为连续系统,并选择恒定时间增量法或自适应时间增量法进行数值积分计算。

在向Simulink转移VS浏览器的控制权限时,涉及的仿真参数包括启动时间和截止时间等信息会被自动传递。例如,在本次仿真的Procedure数据集设置中,截止时间被明确指定为10秒。


多端口

VS S功能支持包含多个输入和输出接口的Simulink模型。在VehicleSim产品的数据库中,一个具有多个输入和输出接口的ABS子系统案例得以实现,并如图40所示为CarSim示例提供了一个参考架构。

对比前面所述的单接口版本(图37, 第20页),可以看出制动执行器模型8、ABS控制器模型9以及CarSim S-Function6均具有相同的模块结构。值得注意的是,在采用多接口配置时,CarSim 5拥有4个输入接口和3个输出接口。

在VS浏览器界面中,默认配置设置与上文描述基本一致。图41呈现的是Models.Simulink数据集①位于左下角的部分,在左侧侧边栏可查看相关链接及对应的数据集,在此情境下,默认不启用蓝色通道的导入操作⑦及导出操作⑧。

并链接到一个I/O通道。端口数据集,在图40的背景中显示。

I/O Channels: Ports数据集是在图40的背景中显示的。端口数据集是

I/O通道. 端口 "界面上提供了一个下拉式选择组件②(图40),指定了四个输入接口③和三个输出接口。Ports(端口)"界面上提供了四个输入接口(图40)和三个输出接口。每个输入接口对应一个数据集④表示,每个输出接口对应一个数据集表示。允许设置从0到20个不同的配置。

图40. 使用多端口的ABS模型的替换版本

图41. 模型:Simulink数据集为多端口ABS版本的例子

全部评论 (0)

还没有任何评论哟~