的开关block实现了一个由外部物理信号控制的开关。该块使用if - else
声明。如果控制口的外部物理信号大于阈值,则开关关闭,否则开关开启。
此示例实现了一个将迟滞效应应用到开关阈值级别的开关。当控制信号有噪声时,迟滞效应可以防止快速杂散开关。
该开关有两种不同的工作模式,如图所示。如果控制口的外部物理信号大于上门限,则开关关闭。如果信号低于下限阈值,则开关打开。
下面的组件通过使用模式图实现图中的逻辑。
u = {0.0, '1'};结束节点p = foundation.electric .electric;% + n = foundation.electric .electric;% -:右端参数r_close ={0.01, '欧姆'};%闭合电阻R_closed G_open = {1e-8, '1/欧姆'};%开导G_open T_closed = {0.5, '1'};%上限阈值T_open = {0, '1'};%下限阈值InitMode = switch .open;%初始模式结束变量i = {0, 'A'};%电流v = {0, ' v '}; % Voltage end branches i : p.i -> n.i; end % Validate parameter values equations assert( T_closed >= T_open, 'Upper threshold must be higher than Lower threshold' ); end modecharts(ExternalAccess = observe) m1 = modechart modes mode CLOSED equations v == p.v - n.v; v == i*R_closed; end end mode OPEN equations v == p.v - n.v; v == i/G_open; end end end transitions CLOSED -> OPEN : u < T_open; OPEN -> CLOSED : u > T_closed; end initial OPEN : InitMode <= 0; end end end end
模式图m1
定义两种模式,关闭
而且开放
.每个模式都有一个方程
节,该节列出了所有适用的方程。的转换
节根据谓词条件定义了操作模式之间的转换:
开关从关闭
来开放
当控制信号低于较低阈值时,T_open
.
开关从开放
来关闭
当控制信号高于上门限时,T_closed
.
的最初的
节根据谓词条件指定初始操作模式:
如果谓词为真(即最初的模式参数值小于或等于0),则开放
模式在模拟开始时是活动的。
如果谓词不为真,则关闭
模式(中列出的第一种模式模式
段)在模拟开始时是活动的。
请注意
的最初的模式参数使用枚举:
classdef切换< int32枚举开(0)闭(1)结束方法(静态)函数map = displayText() map = containers.Map;地图(“开放”) =“开关已打开”;地图(“关闭”) =“开关已关闭”;结束结束结束
为了使组件像所描述的那样工作,此枚举需要位于单独的switching.m
文件。该文件可以在MATLAB中找到®路径或导入组件的包中。一般来说,枚举在模式图中非常有用,因为它们允许您指定一组可接受的参数值。有关更多信息,请参见枚举.
若要验证正确的组件行为,请将其部署在Simscape组件块。创建一个简单的测试模型,如图所示,其中所有块使用默认参数值。
使用默认值模拟模型。
的最初的模式参数值为开关打开
.此枚举值的值为0,这使得谓词在最初的
部分真实。因此,在模拟开始时,开关是打开的,没有电流通过电阻R1。当控制信号值达到0.5时上阈值参数值),则开关闭合,根据其他参数值,通过支路的电流为1A。当控制信号降至0以下时低阈值参数值),开关打开。
现在更改最初的模式参数值为开关关闭
并对模型进行仿真。枚举值计算为1,即谓词条件最初的
节不再为真,因此第一个模式列在模式
部分处于活动状态。在模拟开始时,开关关闭,并保持关闭状态,直到控制信号降至0以下。