电动窗
研究电动窗
汽车用电子控制操作,如:
打开和关闭窗户和天窗
调整镜子和灯光
锁定,解锁的门
操作这些系统都受到严格的限制。失败会导致危险,可能危及生命的情况。因此,在部署前需要仔细设计和分析。
这个例子中关注的设计的汽车电动车窗系统,特别是,风格的窗口。该系统的一个关键方面是它不能施加的力超过100 N窗口关闭时一个对象。当系统检测到这样一个对象,它必须低约10厘米的窗口。
作为设计过程的一部分,考虑的例子:
定量要求窗口控制系统,如时间和力量的需求
系统需求,捕捉到活动图
数据定义为信号用于活动图
这个例子的设计过程包含的其他方面是:
管理系统的组件
建筑模型
验证系统仿真的结果
生成代码
MathWorks这个示例中所使用的软件
除了仿真软件,这个示例使用这些金宝app额外的MathWorks®下载188bet金宝搏产品:
DSP系统工具箱™
定点设计师™
Simscape™多体™
Simscape电气™
Simscape
金宝app®3 d动画™
金宝app仿真软件实时™
金宝app仿真软件覆盖™
Stateflow®
定量要求
定量控制的要求是:
窗户必须在4 s完全开放和完全关闭。
如果是发布在200 ms和1之间,必须完全开放的窗口。如果下命令发出200 ms和1之间,必须完全关闭的窗口。
窗户必须开始命令发出后200毫秒。
力来检测当一个对象存在小于100 N。
关闭窗口时,如果一个对象的方式,停止关闭窗口和降低窗口大约10厘米。
在活动和上下文图捕获需求
规范活动图帮助你生动地捕捉和理解系统如何运作。一个层次结构有助于分析甚至大型系统。在顶层,上下文图描述了系统环境及其与系统的交互研究的数据交换和控制操作。然后你可以将系统分解成一个活动图与流程和控制规范(CSPEC)。
指导层次分解的过程。你使用另一个指定每个流程活动图或原始规范(PSPEC)。您可以指定一个PSPEC交涉的正式的语义,比如仿真软件框图。金宝app此外,上下文图生动地捕捉系统操作的上下文。
环境图:电动车窗系统
这个数字代表了电动车窗系统的环境图。方盒子捕捉环境,在这种情况下,司机,乘客,和窗口。司机和乘客都可以将命令发送到窗口上下移动它。控制器推断正确的命令发送到窗口执行机构(例如,司机命令有优先于乘客命令)。此外,图监控窗口系统建立的状态完全开启和关闭窗口时,发现如果有窗口和框架之间的一个对象。
圆(也称为泡沫)代表了电动车窗控制器。圆的图形符号是一个过程。流程捕获输入数据到输出数据的变换。原始的过程也可能产生。CSPECs通常由组合或时序逻辑来推断从输入输出控制信号控制。
仿真软件的实现环境,明白了金宝app实施环境图:电动车窗系统。
活动图:电动车窗控制
电动窗控制包括三个过程,CSPEC。两个过程验证司机和乘客的输入来确保他们的输入有意义的系统的状态。例如,如果窗户完全打开,向下移动
命令没有意义。剩下的过程检测如果窗口完全开启或完全关闭,如果一个对象。CSPEC将控制信号和推断是否向上或向下移动窗口(例如,如果一个对象存在,窗口向下移动了大约1秒或直到它到达一个endstop)。
仿真软件的实现环境,明白了金宝app的实现活动图:电动车窗控制。
活动图:验证司机
每个进程在指定的验证司机活动图是原始和以下PSPEC。使独家PSPEC,出于安全原因下来
命令优先于向上
命令。
PSPEC 1.1.1:检查下来CHECKED_DOWN =而不是重置
PSPEC 1.1.2:检查CHECKED_UP =而不是重置
PSPEC 1.1.3:独家VALIDATED_DOWN = CHECKED_DOWN VALIDATED_UP = CHECKED_UP而不是CHECKED_DOWN VALIDATED_NEUTRAL =(中性的,而不是(CHECKED_UP而不是CHECKED_DOWN))不(CHECKED_UP或CHECKED_DOWN)
仿真软件的实现环境,明白了金宝app的实现活动图:验证。
活动图:验证乘客
乘客的内部验证过程验证驱动程序是一样的过程。唯一的区别是不同的输入和输出。
PSPEC 1.2.1:检查CHECKED_DOWN =下来不重置
PSPEC 1.2.2:检查CHECKED_UP =而不是重置
PSPEC 1.2.3:独家VALIDATED_DOWN = CHECKED_DOWN VALIDATED_UP = CHECKED_UP而不是CHECKED_DOWN VALIDATED_NEUTRAL =(中性的,而不是(CHECKED_UP而不是CHECKED_DOWN))不(CHECKED_UP或CHECKED_DOWN)
仿真软件的实现环境,明白了金宝app活动图:验证乘客。
活动图:Endstop检测障碍
第三个过程在电动窗控制活动图检测时存在一个障碍或窗口达到顶部或底部(ENDSTOP
)。检测机制是基于窗口的电枢电流驱动器。在正常操作期间,这个电流在一定范围内。窗口的顶部或底部时,电动机画了一个大电流(超过15个或少于-15 a),试图维持其角速度。同样的,在正常操作当前大约是2或2(取决于是否打开或关闭窗口)。当一个对象,有轻微偏离这个值。保持对象的窗口力小于100 N,控制切换到紧急操作当它检测到电流小于-2.5。这个操作是必要的,只有当窗口滚动起来,对应于一个负的电流在特定连接的这个模型。检测的障碍ENDSTOP活动图体现了这个功能。
CSPEC 1.3: ENDSTOP重置=障碍或ENDSTOP检测障碍
PSPEC 1.3.1:检测ENDSTOP ENDSTOP = WINDOW_POSITION > ENDSTOP_MAX
PSPEC 1.3.2:检测障碍障碍= (WINDOW_POSITION > OBSTACLE_MAX)和MOVE_UP 500 ms
仿真软件的实现环境,明白了金宝app活动图:Endstop检测障碍。
数据定义
功能分解明确指定每个流程的分解或原始规范(PSPEC)。此外,它还必须正式在活动图中指定的信号。对这些规范使用数据定义。
以下表数据定义中使用的信号活动图。
相关的活动图,请参阅环境图:电动车窗系统。
背景图:电动车窗系统数据定义
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
DRIVER_COMMAND |
数据 |
离散 |
总 |
|
PASSENGER_COMMAND |
数据 |
离散 |
总 |
|
WINDOW_POSITION |
数据 |
连续 |
真正的 |
0到0.4 |
MOVE_UP |
控制 |
离散 |
布尔 |
|
MOVE_DOWN |
控制 |
离散 |
布尔 |
|
相关的活动图,请参阅活动图:电动车窗控制。
活动图:电动车窗控制数据定义
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
DRIVER_COMMAND |
数据 |
离散 |
总 |
|
PASSENGER_COMMAND |
数据 |
离散 |
总 |
|
WINDOW_POSITION |
数据 |
连续 |
真正的 |
0到0.4 |
MOVE_UP |
控制 |
离散 |
布尔 |
|
MOVE_DOWN |
控制 |
离散 |
布尔 |
|
相关的活动图,请参阅活动图:验证司机。
活动图:验证司机数据定义
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
DRIVER_COMMAND |
数据 |
离散 |
总 |
|
PASSENGER_COMMAND |
数据 |
离散 |
总 |
|
WINDOW_POSITION |
数据 |
连续 |
真正的 |
0到0.4 |
MOVE_UP |
控制 |
离散 |
布尔 |
|
MOVE_DOWN |
控制 |
离散 |
布尔 |
|
相关的活动图,请参阅活动图:验证乘客。
活动图:验证乘客数据定义
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
中性 |
数据 |
离散 |
布尔 |
|
向上 |
数据 |
离散 |
布尔 |
|
下来 |
数据 |
离散 |
布尔 |
|
CHECKED_UP |
数据 |
离散 |
布尔 |
|
CHECKED_DOWN |
数据 |
离散 |
布尔 |
|
相关的活动图,请参阅活动图:Endstop检测障碍。
活动图:检测障碍Endstop数据定义
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
ENDSTOP_MIN |
数据 |
常数 |
真正的 |
0.0米 |
ENDSTOP_MAX |
数据 |
常数 |
真正的 |
0.4米 |
OBSTACLE_MAX |
数据 |
常数 |
真正的 |
0.3米 |
模型设计迭代,我们了解到更详细的实现。信息模型设计迭代如何像你介绍更多细节,明白了迭代设计。
金宝app电动车窗控制器项目
MATLAB®和模型支金宝app持基于模金宝app型设计为嵌入式控制设计,从最初的规范来生成代码。组织大型项目和与他人分享你的工作,使用项目管理。
电动窗控制项目显示了如何使用MathWorks工具和基于模型的设计过程从概念到实现汽车电动车窗系统。它使用项目组织文件和其他模型组件。
此外,这个例子展示了如何链接模型系统文档。
探索电动车窗控制器项目
打开电动车窗控制器项目,在MATLAB命令窗口中,类型:
slexPowerWindowStart
探索项目文件夹。特别是,注意任务文件夹。这个文件夹包含脚本运行频繁任务模型。电动车窗控制器项目,这些脚本:
设置模型控制窗口运动控制器区域网络(可以)。
设置模型使用Stateflow和Simulink仿真软件模型离散事件反应行为和连续时金宝app间行为,与低阶植物模型。
设置模型与一个更详细的植物模型,包括权力影响电气和机械领域。工厂模型验证的力困的窗口对象。
设置模型与模型,包括可能更改模型的其他影响,如量化的测量。
请注意
这些脚本还模拟模型。只有配置模型,看到的脚本configureModel文件夹中。
使用增加覆盖模型来生成模型的覆盖率报告。
的项目的快捷方式部分包含快速访问命令,您可以双击执行常见任务,如:
MATLAB的路径添加项目。
执行交互式测试。
验证模型试验与模型的报道。
开放的主要模型。
模拟各种配置的模型。
生成一个模型覆盖率报告增加模型的报道。
打开模型用于增加模型覆盖。
金宝app电动车窗控制器
的实现活动图:电动车窗控制
这个主题描述了高层离散事件控制电动窗控制规范。
你可以模型的离散事件控制窗口Stateflow图表。Stateflow图表是一个有限状态机与层次结构和并行性。这个状态机包含基本的电动车窗系统:,auto-up,下来,auto-down,休息,和紧急。模型状态转换和占乘客命令司机命令的优先级。它还包括紧急行为激活当软件检测到一个对象之间的窗口和框架,同时向上移动。
最初的电动窗控制仿真软件金宝app模型,slexPowerWindowControl
,是一个离散事件控制器运行在一个给定的采样率。
在这个实现中,打开电动窗控制子系统和观察CSPEC Stateflow图表与离散事件控制形式,由倾斜厚栏右下角。detect_obstacle_endstop子系统封装阈值检测机制。
离散事件控制Stateflow模型,扩展了状态转换图的概念层次结构和并行性。状态改变,因为乘客都封装在一个命令超级状态这并不对应于一个活跃的司机命令。
考虑乘客的控制窗口。乘客或司机可以上下移动该窗口。
这个状态机包含基本的电动车窗系统:,auto-up,下来,auto-down,休息,和紧急。
交互式测试
控制输入。的slexPowerWindowCntlInteract
模型包括这个控制输入开关。双击这些开关手动操作。
测试状态机控制功率窗口通过运行输入测试向量和检查它达到所需的内部状态和生成输出。电动窗具有以下外部输入:
乘客输入
司机输入
窗口向上或向下
障碍在窗
每个输入包含一个与这些输入向量。
乘客输入
元素 | 描述 |
---|---|
中性 |
乘客控制开关不沮丧。 |
向上 |
乘客控制开关信号生成。 |
下来 |
乘客控制开关信号生成。 |
司机输入
元素 | 描述 |
---|---|
中性 |
司机控制开关不沮丧。 |
向上 |
司机控制开关信号生成。 |
下来 |
司机控制开关信号生成。 |
窗口向上或向下
元素 | 描述 |
---|---|
0 |
窗口顶部或底部之间自由移动。 |
1 |
窗口是停留在顶部或底部,因为身体上的缺陷。 |
障碍在窗
元素 | 描述 |
---|---|
0 |
窗口顶部或底部之间自由移动。 |
1 |
在框架窗口有障碍。 |
生成的乘客和司机输入信号映射上下信号根据这个表:
输入 | 输出 | |||
---|---|---|---|---|
向上 | 下来 | 向上 | 下来 | 中性 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
输入明确的生成中性
事件的向上
和下来
事件,生成按电动窗控制开关。输入的输入作为真值表在乘客的中立,,地图和司机中性,上,下地图。
实验结果从交互测试
案例1:窗口。观察状态机行为:
打开
slexPowerWindowCntlInteract
模型。运行仿真,然后双击乘客开关。
如果你按物理窗口开关超过一秒,窗口移动直到开关释放(或窗口框架的顶部和
endstop
事件生成)。双击选中的乘客开关释放它。
模拟模型。
设置endstop开关生成endstop事件。
案例2:Auto-Up窗口。如果你按物理客运窗口切换为短时间内(不超过一秒),软件激活auto-up行为和窗口继续向上移动。
按物理客运窗口切换为一个短的时间内(不超过一秒)。
最终,窗口到达顶部的框架和软件生成
endstop
事件。这个事件动作状态机回到它的中立状态。模拟模型。
案例3:驾驶员一侧优先级。乘客的司机开关窗口优先于司机命令。观察状态机行为在这种情况下:
运行仿真,然后移动系统
乘客了
国家通过双击客运窗口切换。双击司机开关。
模拟模型。
注意状态机转移到驱动控制部分生成输出窗口的输出窗口。
双击司机控制驱动程序。双击司机开关。
司机窗口状态是到达,再次生成窗口的输出,即,
windowUp = 1
。观察状态行为对象时在窗口和框架,双击障碍开关。
模拟模型。
在下一个采样时间,状态机的移动
emergencyDown
国家降低窗口几英寸。多远取决于软件降低了窗口的状态机是多久emergencyDown
状态。这种行为是下一个分析阶段的一部分。如果一个司机或乘客窗户开关仍然活跃,状态机进入向上或向下的州在接下来的样品时间离开紧急状态。如果障碍开关也仍然活跃,软件再次激活紧急状态下一个样品的时间。
模型覆盖
验证控制子系统。验证窗口使用模型的离散事件控制覆盖工具。这个工具可以帮助您确定在多大程度上测试用例模型运动控制器的条件分支。它有助于评估所有转换是否离散事件控制,考虑到测试用例,以及所有条款是否在一个条件,使特定的过渡已经成为事实。多个条款可以使一个过渡,例如,从紧急回中性时100发生蜱虫或如果endstop达成。
实现全覆盖,每个子句的计算结果为真时,错误的使用的测试用例。转换的百分比称为其测试用例演习模型覆盖。模型覆盖率是衡量如何彻底测试练习模式。
使用金宝app仿真软件覆盖软件,可以将以下测试应用到电动车窗控制器。
位置 | 一步 | ||||||
---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
乘客了 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
乘客下来 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
司机了 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
司机下来 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
这个测试,所有开关都不活跃时间0。在定期1 s的步骤,一个或多个开关状态的变化。例如,在1 s,司机开关变得活跃。自动运行这些输入向量,取代手动开关由规定的输入序列。看到preconstructed模型:
在MATLAB命令窗口中,键入:
slexPowerWindowCntlCoverage
模拟模型生成金宝app仿真软件覆盖覆盖率报告。
为slexPowerWindowCntlCoverage
模型,此测试处理的报告显示,100%的决策结果从司机中性,向上、向下映射块。然而,乘客的测试仅达到50%覆盖中立,向上、向下映射块。这报道意味着整体覆盖slexPowerWindowCntlCoverage
是45%,而整体覆盖slexPowerWindowControl
模型是42%。一些报道水平的因素:
乘客块不会改变。
块不改变Endstop和障碍。
增加模型的报道。总覆盖率提高到100%,你需要考虑所有可能的组合的司机,乘客,障碍,和endstop设置。当你满意的控制行为,您可以创建窗口系统。有关更多信息,请参见使用基于模型的创建模型的设计。
本例中增加了验证的模型覆盖的离散事件控制窗口。首先,示例使用的输入slexPowerWindowCntlCoverage
作为基准模型的报道。接下来,进一步锻炼的离散事件控制窗口,它创造了更多的输入集。电子表格文件,inputCntlCoverageIncrease.xlsx
,包含这些输入设置使用一个输入组每单。
在这个例子中,slexPowerWindowSpreadsheetGeneration
效用函数,它创建了一个电子表格模板从控制器模型,slexPowerWindowControl
,创建inputCntlCoverageIncrease.xlsx
。在inputCntlCoverageIncrease.xlsx
,该函数使用块名称在控制器模型信号名称。slexPowerWindowSpreadsheetGeneration
定义了表的名字。的slexWindowSpreadsheetAddInput
效用函数填充inputCntlCoverageIncrease.xlsx
信号数据。
这些输入集的表名称及其描述是:
表的名字 | 描述 |
---|---|
|
输入记录的 |
|
输入记录的 |
|
输入记录的 |
|
输入记录的 |
|
输入记录的 |
|
司机放下车窗,乘客不采取任何行动 |
|
司机是窗口和乘客不采取任何行动 |
|
司机放下窗口一秒(auto-down)和乘客不采取任何行动 |
|
司机把窗口一秒(auto-up)和乘客不采取任何行动 |
|
乘客放下窗口一秒(auto-down)和司机不采取任何行动 |
|
旅客把窗口一秒(auto-up)和司机不采取任何行动 |
自动运行这些输入向量,把输入的离散事件控制从电子表格使用文件块,inputCntlCoverageIncrease.xlsx
。这个文件包含多个输入集。看到preconstructed模型:
在MATLAB命令窗口中,键入:
slexPowerWindowCntlCoverageIncrease
生成金宝app仿真软件覆盖覆盖率报告多个输入组,双击运行覆盖子系统模型中。
为
slexPowerWindowCntlCoverageIncrease
报告显示,使用多个模型,输入设置已经成功地提高了整体覆盖率slexPowerWindowControl
模型从42%降至78%。覆盖水平不到100%,因为缺少输入集:乘客状态
司机上下
乘客自动,自动状态
使用基于模型的创建模型的设计
为什么要使用基于模型的设计?
在基于模型的设计中,系统模型的中心开发过程,从需求开发,通过设计实现和测试。使用基于模型的设计:
在项目团队使用一个通用的设计环境。
直接链接的设计要求。
集成测试与设计,不断识别和纠正错误。
改进算法通过多畴的模拟。
嵌入式软件自动生成的代码。
开发和重用测试套件。
模型自动生成文档。
跨多个处理器和硬件重用设计部署系统的目标。
实施环境图:电动车窗系统
需求作为一个环境图,请参阅环境图:电动车窗系统。
创建一个模型模型类金宝app似于环境图。
把植物为一个子系统的行为。
创建两个子系统包含司机和乘客的开关。
添加一个控制机制,方便的存在和缺乏对象之间切换。
把控制在一个子系统。
连接新的子系统。
看到这个模型的一个实现,在MATLAB命令窗口中,类型:
slexPowerWindowStart
您可以使用电动窗控制活动图(活动图:电动车窗控制)的电动车窗控制器上下文图分解成部分。这个图表显示了输入和输出信号出现在上下文图更容易跟踪他们的起源。
实现电动窗控制系统
充分满足需求,电动窗控制必须与司机和乘客的验证输入和检测endstop。
对于需求表示为一个活动图,看看活动图:电动车窗控制。
双击slexPowerWindowExample / power_window_control_system块打开以下子系统:
的实现活动图:验证
活动图添加数据验证功能为司机和乘客命令来确保正确的操作。例如,当窗口到达顶部时,软件模块向上
命令。在新子系统实现分解每个验证过程。考虑司机命令的验证(验证乘客命令相似)。检查模型是否可以执行向上
或下来
命令,根据以下:
该模型允许
下来
命令只有当窗口并不是完全打开了。该模型允许
向上
命令只有当窗口并不是完全封闭的,没有检测到对象。
第三个活动图过程检查软件发送的三个命令(只有一个中性
,向上
,下来
)控制器。在实际的实现中,两者都有向上
和下来
同时可以真正的(例如,因为开关跳跃的效果)。
从power_window_control_system子系统,这是validate_driver_state子系统:
从power_window_control_system子系统,这是validate_passenger_state子系统:
的实现活动图:Endstop检测障碍
对于需求表示为一个活动图,看看活动图:Endstop检测障碍。
在slexPowerWindowExample
模型,power_window_control_system / detect_obstacle_endstop块实现这个活动图块连续变异的变异子系统。在设计迭代,您可以添加额外的变体。
双击slexPowerWindowExample
模型power_window_control_system / detect_obstacle_endstop /连续/ verify_position块:
混合动态系统:结合离散事件控制和连续的植物
设计和验证了离散事件控制之后,将它与连续时间工厂的行为。这一步是设计最简单的第一次迭代版本的植物。
在项目中,导航到文件并点击项目。在configureModel文件夹,运行slexPowerWindowContinuous
实用程序打开并初始化模型。
window_system块使用不同的子系统块,允许不同程度的忠诚的植物建模。双击window_system /连续/ 2 nd_order_window_system块连续变异。
植物被建模为一个二阶微分方程与步进式改变输入:
当Stateflow图表生成
windowUp
,输入是1。当Stateflow图表生成
windowDown
,输入是1。否则,输入0。
这一阶段允许分析离散事件状态之间的交互行为,其采样率,窗口的连续行为的运动。有阈值生成窗口框架顶部和底部:
endStop
事件时存在一个障碍,
障碍
其他活动
双击slexPowerWindowExample
模型power_window_control_system / detect_obstacle_endstop /连续/ verify_position块连续变异。
当您运行这个slexPowerWindowContinuous
configureModel效用,使用连续时间模型解算器ode23 (Bogacki-Shampine)。
一个系统的结构分析结果:
系统的功能分解
数据定义与系统的细节信号
时间限制
结构分析还可以包括实现架构(超出了本文的范围)。
方便的实现还增加了一个控制机制的存在和缺乏对象之间切换。
将控制器响应。视图窗口运动项目的快捷方式,双击SimHybridPlantLowOrder
。或者,您可以运行的任务slexPowerWindowContinuousSim
。
位置范围显示预期的结果从控制器。30厘米后,模型生成障碍
事件和Stateflow图进入它emergencyDown
状态。在这种状态下,windowDown
输出,直到窗口降低约10厘米。因为乘客窗户开关仍在进行,窗外又开始向上移动,重复着这个过程。停止仿真,打开位置范围观察振荡的过程。在紧急情况下,离散事件控制将车窗大约10厘米。
详细的建模的影响
在最初的分析离散事件控制和连续动态,您可以使用一个详细的植物模型来评估性能在一个更现实的情况下。最好是在这样一个设计模型在电力领域的详细程度,换句话说,能量流动。一些特定领域MathWorks blocksets可以为此提供帮助。
考虑到能量流动,添加一个更详细的变体包括电力电子和window_system变体子系统的多体系统。
打开模型,探索更详细的植物的变种,在项目中,configureModel运行slexPowerWindowPowerEffects
。
双击slexPowerWindowExample
模型window_system /权力效应——可视化/ detailed_window_system块。
电力电子子系统。生成的模型必须放大控制信号离散事件控制器是强大到足以驱动直流电机移动窗口。
这种行为放大模块模型。他们表明,开关连接直流电机和电池电压或地面。通过连接电池反过来,系统生成一个负电压和窗口可以移动,向下,或保持静止。总是在最大功率驱动的窗口。换句话说,没有直流电机控制器适用于规定的速度。
的实现,双击slexPowerWindowExample
模型window_system /权力影响-可视化/ detailed_window_system / amplification_up块。
多体系统。这个实现模型使用的窗口Simscape多体块。
查看执行机构实现,双击slexPowerWindowExample
模型window_system /权力影响-可视化/ detailed_window_system /致动器块。
看到窗口实现,双击slexPowerWindowExample
模型window_system /权力效应——可视化/ detailed_window_system /块。
这个实现使用Simscape多体块体、关节和执行机构。窗口模式包括:
一个蜗轮
杠杆移动窗口持有人在垂直方向
图显示了机械部分移动。
迭代设计。更详细的实现的一个重要影响是没有窗口的位置测量。相反,该模型测量直流电机电流,用它来检测endstops和是否存在一个障碍。下一阶段的系统设计分析了控制以确保它不会引起过度使用武力时存在一个障碍。
在原系统中,设计消除了障碍和endstop检测基于窗口的位置,取代current-based实现。它还连接到控制器和位置和力测量过程。反映了不同的信号使用,您必须修改数据的定义。此外,观察到,因为权力的影响,现在单位是安培。
PSPEC 1.3.1:检测ENDSTOP ENDSTOP = ARMATURE_CURRENT > ENDSTOP_MAX
PSPEC 1.3.2:检测障碍障碍= (ARMATURE_CURRENT > OBSTACLE_MAX)和MOVE_UP 500 ms
PSPEC 1.3.3:绝对值ABSOLUTE_ARMATURE_CURRENT = abs (ARMATURE_CURRENT)
此表列出了额外的信号背景图:电动车窗系统数据定义。
环境图:电动车窗系统数据定义的变化
信号 | 信息类型 | 连续/ 离散 |
数据类型 | 值 |
---|---|---|---|---|
ARMATURE_CURRENT |
数据 |
连续 |
真正的 |
-20 - 20 |
此表列出了改变了活动图的信号:检测障碍Endstop数据定义。
活动图:检测障碍Endstop数据定义的变化
信号 | 信息类型 | 连续/ 常数 |
数据类型 | 值 |
---|---|---|---|---|
ABSOLUTE_ARMATURE_CURRENT |
数据 |
连续 |
真正的 |
0到20 |
ENDSTOP_MAX |
数据 |
常数 |
真正的 |
15一个 |
OBSTACLE_MAX |
数据 |
常数 |
真正的 |
2.5 |
看到窗外子系统,双击slexPowerWindowExample
模型window_system /权力影响——可视化窗口/ detailed_window_system /工厂/块。
实现使用一个查找表并添加噪声,使评估的控制鲁棒性。看到摩擦子系统的实现,双击slexPowerWindowExample
模型window_system /权力影响——可视化/ detailed_window_system /工厂/窗/摩擦块。
控制律的评估
理想化的连续工厂允许访问的窗口位置endStop
和障碍
事件的一代。在更现实的实现中,该模型必须生成这些事件从访问物理变量。对于电动车窗系统,这个物理变量通常是电枢电流,Ia
的直流电机驱动蜗轮。
窗口移动时,当前的近似值2 A。当您切换窗口时,该模型做了一个瞬变电流,可以达到一个值约为10。当电流超过15,模型激活endstop检测。模型绘制当前电机角速度时几乎保持在0尽管积极或消极的输入电压。
检测对象的存在在这个设置更加困难。因为安全问题限制窗口力不超过100 N,电枢电流远低于10应该检测对象。然而,这种行为与瞬时值实现冲突在正常操作。
期间禁用对象检测的实现控制律实现瞬态值。现在,当系统检测到一个电枢电流超过2,它认为现在和进入一个对象emergencyDown
状态的离散事件控制。打开力范围窗口(测量在牛顿)检查力仍低于100 N现在和窗口对象时改变它的速度。
在现实中,更复杂的控制律是可能的和实现的。例如,您可以实现神经元网络学习前馈控制技术来模拟每个车辆的摩擦特性,会随着时间而改变。
可视化系统的运动
如果你有金宝app仿真软件3 d动画软件安装,您可以查看系统的几何学图形运动通过一个虚拟现实的世界。如果VR沉块尚未开放,slexPowerWindowExample / window_worl金宝appd Simulink_3D_Animation视图
模型中,双击VR沉块。
模拟模型用硬解算器:
在一个项目中,运行任务,
slexPowerWindowPowerEffectsSim
。这批处理作业集解算器ode23tb(硬/ TR-BDF2)。在
slexPowerWindowExample
passenger_switch /正常块模型,设置乘客转向。在
slexPowerWindowExample
driver_switch /正常块模型,设置司机转向。模拟模型。
10 ms和1之间的仿真时间,关掉slexPowerWindowExample passenger_switch /正常块乘客开关启动auto-up行为。
观察窗口持有人开始垂直移动到关闭窗口。当模型遇到的对象时,它滚下来的窗口。
双击
slexPowerWindowExample
模型passenger_switch /正常块驱动开关完全把车窗放下来,然后模拟模型。在这一块,在不到一秒的模拟时间,关掉开关启动auto-down行为司机下来。当窗口框架的底部,停止仿真。
看的位置测量(单位:米)和电枢电流(Ia)测量(安培数)。
请注意
电枢电流的绝对值不超过10瞬态在正常行为。模型检测的障碍时所需的电枢电流的绝对值来移动窗口超过2.5(实际上,它是小于-2.5)。在正常操作期间,这是关于2 A。你可能需要放大了看到这测量范围。模型检测窗口endstop当电枢电流的绝对值超过15一个。
电枢电流的变化在正常操作期间由于摩擦所包括的传感关节速度和位置和特定系数应用窗口。
现实的电枢测量
电枢电流用于电动窗控制是一个理想的值,可以因为一个致动器模型的使用。在更现实的情况下,数据采集组件必须衡量当前的价值。
包括数据采集组件,更实际的测量变量添加到window_system变体子系统。这个现实的测量变量包含信号调节块的电流导出基于电压测量。
打开一个模型和配置实际的测量,在项目运行configureModel任务slexPowerWindowRealisticArmature
。
把现实的电枢,通信协议的内容块,双击SlexPowerWindowExample
模型window_system /现实的电枢-通信协议/ detailed_window_system_with_DAQ。
测量电压的范围内是一个模拟-数字转换器(ADC),可根据给定的比特数。你必须规模结果值基于电阻的值和ADC的范围。
包括这些操作定点计算。用给定的范围内,实现必要的决议需要16位而不是8。
研究相同的场景:
在slexPowerWindowExample / passenger_switch /正常块,设置乘客开关。
运行仿真。
过了一段时间,在slexPowerWindowExample / passenger_switch /正常块,乘客关掉开关。
当窗口被摇下,单击slexPowerWindowExample / passenger_switch /正常块驱动开关。
过了一段时间,关掉slexPowerWindowExample / passenger_switch /正常块驱动开关。
当窗口框架的底部,停止仿真。
放大armature_current范围窗口,注意到离散的外表。
通信协议
类似于电动窗输出控制、硬件必须生成输入事件。在这种情况下,硬件控制开关门窗和中心控制面板。本地处理器生成这些事件,然后传达给窗口通过CAN总线控制器。
包括这些事件,添加一个包含输入变量从CAN总线和开关组件,生成事件交付的CAN总线驱动程序开关和乘客开关变体子系统。打开模型和配置可以通信协议,运行configureModel任务,slexPowerWindowCommunicationProtocolSim
。
看到开关子系统的实现,双击slexPowerWindowExample / driver_switch /通信协议/司机窗口控制开关块。
观察的结构非常类似于窗控制系统。这个结构包含:
工厂模式,代表了控制开关
数据采集子系统,包括,除其他事项外,信号调节组件
控制模块将从物理开关命令映射到逻辑命令
能模块发布到车辆数据总线的事件吗
您可以添加通信效果,如其他系统使用can总线,和更多的现实主义的描述阶段。每个阶段允许分析离散事件控制器在一个日益现实的情况。当你有足够的细节,你可以为任何特定的目标平台自动生成控制器代码。
自动代码生成控制子系统
您可以生成代码控制模型设计,slexPowerWindowExample
。
显示控制器的采样率。在模型编辑器中金宝app,在调试选项卡上,选择信息覆盖>样品时间>颜色。观察到控制器运行在一个统一的采样率。
右键单击power_window_control_system块并选择C / c++代码>构建这个子系统。
引用
Mosterman Pieter J。,Janos Sztipanovits, and Sebastian Engell, “Computer-Automated Multiparadigm Modeling in Control Systems Technology,”IEEE控制系统技术2号,卷。12日,2004年,页223 - 234。