参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili
一、非线性模块库中的模块概览
二、动态饱和和死区模块
1、Saturation Dynamic动态饱和模块
(1)Saturation饱和模块可认为是Saturation Dynamic动态饱和模块的功能子集,它们都能限制输出的上下限,不同的是动态饱和模块每个时刻的输出上下限(即Limit output功能)是由当前的外界输入决定的(当然,动态饱和模块的输出上下限也可以通过双击模块直接设定)。这里仅介绍Saturation Dynamic动态饱和模块。
(2)如下例所示,up端口输入的是该模块的输出上限信号,lo端口输入的是该模块的输出下限信号,u端口输入的则是需要处理的输入信号。
2、Dead Zone Dynamic动态死区模块
(1)Dead Zone死区模块可认为是Dead Zone Dynamic动态死区模块的功能子集,它们有上死区和下死区的概念,当输入信号在死区范围内时输出为0,否则按输入信号原本的值与最近死区边界的差值(最近死区边界做减数)进行输出,不同的是动态死区模块每个时刻的死区范围是由当前的外界输入决定的。这里仅介绍Dead Zone Dynamic动态死区模块。
(2)如下例所示,up端口输入的是该模块的上死区信号,lo端口输入的是该模块的下死区信号,u端口输入的则是需要处理的输入信号。
三、反向间隙及继电器模块
1、Backlash反向间隙模块
(1)齿隙指的是两个互相啮合的齿轮在传动过程中存在的间隙,当某一个齿轮突然反向转动时,齿隙的存在将使得另一个齿轮不能马上也跟着反转。在simulink中可以用Backlash模块模拟齿隙(由死区宽度指定),或者与这种物理现象相类似的其它具有非线性特征的物理现象。
(2)当仿真开始时,Backlash模块的死区中心位于设定的初始输出值处(即上死区和下死区的平均值等于初始输出值);在仿真过程中,死区宽度保持不变,死区宽度的作用见下例。
(3)下例所示的Backlash模块,其死区宽度为1,初始时刻时输出值为0,故初始时刻的死区位于[-0.5, 0.5]。
①由于死区的存在,当输入的正弦信号的值从0达到0.5以后,Backlash模块才会有大于0的输出。
②当输入的正弦信号的值从0.5达到1以后,其值开始下降,这对应的实际物理现象可以是齿轮反转,由于死区的宽度为1,Backlash模块的输出会保持不变一段时间,直到输入达到0及以下(正好下降了一个死区宽度),输出才会开始下降。
③当输入的正弦信号的值从0达到-1以后,其值开始上升,这对应的实际物理现象可以是齿轮再反转,由于死区的宽度为1,Backlash模块的输出会保持不变一段时间,直到输入达到0及以上(正好上升了一个死区宽度),输出才会开始上升。
2、Relay继电器模块
(1)继电器中有开启点和关闭点的概念:
①当输入信号的值小于关闭点,逐渐向关闭点靠近时,当达到关闭点后,继电器的输出仍保持关闭点的值,直到输入信号的值大于开启点,继电器的输出才会切换为开启点的值。
②当输入信号的值大于开启点,逐渐向开启点靠近时,当达到开启点后,继电器的输出仍保持开启点的值,直到输入信号的值小于关闭点,继电器的输出才会切换为关闭点的值。
(2)下例所示的Relay模块,其开启点和关闭点分别为0.5和-0.5,开启点输出为1,关闭点输出为0。
四、比例极限及穿越点检查模块
1、Rate Limiter比例极限模块
(1)Rate Limiter比例极限模块可认为是Rate Limiter Dynamic动态比例极限模块的功能子集,动态比例极限模块每个时刻的比例极限都由当前输入的up和lo信号决定,比例极限模块的比例极限则是在窗口中进行设定,除此之外二者没有差别,下面主要介绍比例极限模块。
(2)当输入信号u的变化率大于上升比例极限(大于0)或者小于下降比例极限(小于0)时,比例极限模块将会按照比例极限值对输入信号进行“缓变”处理,这和饱和模块类似,只是限制的是数值变化率而不是数值。
(3)下例所示的比例极限模块,其上下比例极限分别为0.5和-0.5。
2、Hit Crossing穿越点检测模块
(1)当输入信号达到某个条件时,穿越点检测模块会产生相应的布尔类型输出,除了下面三种情况外,穿越点检测模块的输出均为0。
①如果输入信号沿指定方向(Hit crossing direction)越过偏移值(Hit crossing offset),则穿越点检测模块在越过时输出1。
②如果输入信号沿指定方向到达偏移值(这个时刻称为“击中时间”),然后停留在偏移值上,则从击中时间到信号离开偏移值的时间内,穿越点检测模块输出1。
③如果输入信号恒定且等于偏移值,则只有在指定方向为任一(either)的情况下,穿越点检测模块才会输出1。
(2)下例所示的穿越点检测模块,其偏移值为1,指定方向为either。
五、量化及归零模块
1、Quantizer量化模块
(1)量化模块的功能是按照所设定的时间间隔,将输入的平滑信号量化为阶梯状信号,其量化规则如下,其中u为输入信号,q为时间间隔(Quantization interval),y为输出信号,round函数起到一个四舍五入的作用。
(2)下例所示的量化模块,其时间间隔为0.01。
2、Wrap To Zero归零模块
(1)归零模块的功能是如果输入大于所设定的阈值(Threshold),输出结果归零,否则输出信号等于输入信号。
(2)下例所示的归零模块,其阈值为5。
六、库仑摩擦和粘滞摩擦模块
1、概述
所有的摩擦力可以划分为两大类——库仑摩擦和粘滞摩擦,前者与运动速度无关(当然,静止与非静止还是需要关注的),后者与运动速度成正比关系。
2、Coulomb & Viscous Friction模块
(1)在simulink中,可以使用Coulomb & Viscous Friction模块模拟库仑摩擦及粘滞摩擦,模块计算摩擦力的公式为y = sign(x) * (Gain * abs(x) + Offset),其中x为输入信号(速度),y为输出(摩擦力),sign为符号函数,abs为取绝对值函数。
①符号函数sign(x):当x>0时,sign(x)=1;当x=0时,sign(x)=0;当x<0时,sign(x)=-1。
②取绝对值函数abs(x):当x≥0时,abs(x)=x;当x<0时,abs(x)=-x。
(2)默认情况下,Offset是一个具有四个元素的向量[1 3 2 0],此默认向量使用四个不同的偏移值测试相同的输入值,实际上用户可以指定具有不同元素数目的向量。
(3)Coulomb & Viscous Friction模块接受一个输入并产生一个输出,输入可以是标量、向量或矩阵。
①对于向量或矩阵输入,偏移量和增益必须具有与输入相同的维度或为标量。
②对于标量输入,输出将是标量、向量或矩阵,具体取决于偏移量和增益的维度。