这个例子展示了如何创建一个接口之间Stateflow®图表,使用MATLAB®作为动作语言和MATLAB应用程序中创建的应用程序设计师。更多信息连接一个Stateflow图表,使用C作为行动语言MATLAB应用程序,看看模拟一个媒体播放器。
在这个例子中,一个汽车电动车窗系统提高和降低风格的窗口在一双窗口控制开关。MATLAB应用程序代表的开关控制司机和乘客门。应用程序还包含几个指标灯监控电力窗口系统和一个按钮的状态引入一个障碍在窗口的路径。
Stateflow图应用程序接口
提供了一个双向MATLAB应用程序之间的连接和控制和植物系统仿真软件®模型。金宝app当你点一个开关在应用到一个新的位置,图发送一个相应的“,”“,”或“中性”命令电动窗控制系统。相反,当控制系统的状态发生变化时,图表启用或禁用相应的状态灯的应用。
要运行示例,并点击打开仿真软件模型金宝app运行。图表应用程序接口
打开应用程序,初始化控制和植物系统的电动车窗系统。停止仿真,点击停止或关闭应用程序。
图表应用程序接口
已经配置为与MATLAB应用sf_power_window_app
。MATLAB应用程序之间建立双向连接和Stateflow图表,使用MATLAB作为动作语言,遵循这些步骤。在MATLAB应用程序:
创建一个自定义属性和图表在仿真界面。这个应用程序使用此属性来访问图表输入,图表输出,和本地数据。有关更多信息,请参见在应用程序设计应用程序共享数据。
修改startupFcn
回调程序通过添加一个新的输入参数并存储其值作为您在前面步骤中创建的属性。有关更多信息,请参见写回调程序设计师。
Stateflow图表:
创建一个本地数据对象接口的应用。该图表使用本地数据对象作为参数调用时辅助函数的应用。
设置本地数据对象的类型您在前面步骤中创建的继承:从表中定义
。有关更多信息,请参见指定类型的Stateflow数据。
调用coder.extrinsic
函数声明应用程序和任何辅助函数作为外在MATLAB代码。有关更多信息,请参见调用外部MATLAB函数在Stateflow图表。
运行应用程序使用关键字这
作为参数给应用程序访问在模拟图。存储返回的值函数调用创建的应用程序的本地数据对象接口的应用程序。
在这个例子中,权力窗口应用程序使用一个属性图表
与图表界面应用程序接口
。应用回调使用这个属性来编写输出的图表:
当你驾驶员位置的控制开关旁移动到一个新的位置,DriverControlValueChanged
回调函数集的值switches.driver_up
和switches.driver_down
。
当你风格的控制开关移动到一个新的位置,PassengerControlValueChanged
回调函数集的值switches.passenger_up
和switches.passenger_down
。
当你点击障碍按钮时,ObstacleButtonPushed
回调的值集障碍
来真正的
。
当你关闭应用程序,UIFigureCloseRequest
回调的值集停止
来真正的
。
相反,图表,进入行动InterfaceWithApp
状态运行应用程序sf_power_window_app
和存储返回的值作为本地数据对象应用程序
。图表使用本地数据对象时调用这个helper函数updateLamps
。应用,这个helper函数把灯和基于图的值输入灯
。
电动窗控制系统使用模式逻辑来确定当窗口应该和输出一个统一的运动命令一个伺服电机。降低生产成本,控制系统不跟踪窗口的位置。相反,它依靠伺服电机的信号来确定当窗口完全开启或完全关闭时,或者当它遇到一个障碍。
控制系统满足这些性能要求:
窗户必须完全打开或关闭5秒。
汽车必须停止当窗口达到完全开启或完全关闭位置。
电动机必须能够检测窗口移动时的障碍。当电机检测到障碍物的路径窗口,窗口必须降低一秒或者直到窗户完全打开。
连续运动的汽车必须停止10秒后在任何方向。这一需求提供了一个故障安全保护机制的窗口中,电动机和驱动器。
如果一个控制开关按不到半秒钟,或者要求超过一秒,必须停止开关释放后的窗口。
如果一个控制开关被按下超过半秒,一秒钟前公布,窗户必须完全打开或关闭,除非它是打断了新的命令或通过一个障碍。这个需求代表了电动车窗的自动模式功能。
驾驶员一侧的控制优先于风格的控制。
障碍检测优先于驾驶员一侧和风格的控制。
Stateflow图控制系统
模型一个事件驱动控制器,满足这些需求。图表包含两个州(开关
和逻辑
)并行分解。这些国家应对图表输入的变化,确定操作模式的窗口系统,和管理启动伺服电机的输出信号。
国家开关
读图的值输入和当地广播事件改变操作模式的窗口系统。有关更多信息,请参见广播本地事件同步平行状态。
在每一个时间步的仿真,调用真值表函数checkSwitches
确定驾驶员一侧的位置和风格的控制开关。根据输入的价值结构开关
,这个函数广播向上
,下来
,中性
事件。因为函数忽略了任何输入从风格的控制当驾驶员一侧的控制不是在“中立”的位置,驾驶员一侧的控制优先于风格的控制,按照要求7。
以类似的方式,调用图形函数detectObstacles
确定伺服电机的电枢电流的强度。如果该值的当前的
很小,非零,存在一个障碍函数广播事件吗障碍
。相反,如果该值当前的
很大,窗外已经到了一个完全开启或完全关闭位置函数广播事件呢ENDSTOP
。因为图表调用detectObstacles
之前checkSwitches
、障碍检测优先于驾驶员一侧和风格的控制,按照要求8。
国家逻辑
包含故障检测算法来保护窗口的硬件和任何障碍的路径窗口。包含三个亚态,停止
,移动
,EmergencyDown
,代表了电动车窗系统的操作模式。
最初,国家停止
是活跃的。这个状态包含两个平行的亚态命名模式
和位置
。
模式
决定当电力系统准备接受新命令的控制开关。系统准备好新命令控制开关都在“中立”的位置。
位置
记录窗口是否完全开放,完全关闭,或在中间。图表使这一决心注意窗口移动的方向当伺服电机达到的范围。
停止
保持活跃,直到一个广播的事件向上
或下来
表示命令的控制开关。只要没有完全开启或完全关闭的窗口中,这些事件触发转换的状态移动
。然而,事件向上
被认为是无效的,当窗口已经完全关闭。同样,事件下来
窗口是完全打开时是无效的。
国家移动
当窗口在运动很活跃。这个国家实现了几个相关的电动窗的要求自动窗口运动和故障检测。有两个平行的亚态命名方向
和模式
。
方向
决定了窗口的方向应该和调用函数go.up
和go.down
,如适当。这些函数设置值的输出信号,控制伺服电机和“向上”和“向下”状态灯的应用。
模式
实现了自动和手动模式的窗口指定的需求5和6。这个州有三个独家亚态(初始化
,汽车
,手册
)。最初,亚态初始化
是活跃的。亚态等待广播的中性
事件,这表明控制开关返回到“中立”的位置。如果广播半秒内发生初始化
变得活跃,事件触发的过渡停止
状态,表明窗口必须停止移动。如果广播出现半秒后不过一秒之前初始化
变得活跃,事件触发转换到亚态汽车
,这表明电动车窗系统自动模式操作。这个亚态仍然是活跃的,直到打断了广播的事件ENDSTOP
(当窗口是完全开启或完全关闭),障碍
(当窗口遇到一个障碍),或向上
或下来
(当系统接收到一个新的命令的控制开关)。最后,如果广播不会一秒钟前发生初始化
变得活跃,时序逻辑表达式后(1秒)
触发转换到亚态手册
。这个亚态依然活跃,直到事件的广播中性
触发转换回停止
状态。
独立于系统是否在自动或手动模式,直接从图表转换移动
来停止
在事件的广播ENDSTOP
或者当移动
时间比活跃吗FAILSAFE_TIMEOUT
2和4秒,所指定的要求。默认情况下,这个常数的值设置为10。
当窗口遇到障碍时,窗口上的作用力增加伺服电机上的负载,使电枢电流的上升。通过监测电枢电流急剧增加,系统检测到障碍的路径窗口。
在这个例子中,一个子系统仿真软件模拟伺金宝app服电机。一个窗口的位置计算积分器(金宝app模型)块的饱和限制0(全开)和10(完全关闭)。因为这个块的输入增益的窗户完全打开和关闭在5秒,按照要求1。积分器块达到饱和点时,系统的输出电枢电流
增加到10。这个值表明完全开启或完全关闭的窗口。
引入一个障碍的路径窗口中,单击障碍按钮在应用程序窗口移动。的应用程序接口
图表会发送一个积极的信号,伺服电机,从而产生一个小电枢电流的增加。在控制系统
图,功能detectObstacles
在当前和广播事件注册这一变化障碍
。在逻辑
状态,这个事件触发亚态的过渡移动
到亚态EmergencyDown
。虽然这亚态是活跃的,系统移动窗口下一秒或直到窗口是完全开放的。然后,图表转换回亚态停止
,这表明窗口必须停止移动,按照要求3。
后|焕然一新|发送|这|coder.extrinsic
(MATLAB编码器)|积分器(金宝app模型)