一种信号限制及恢复的处理算法
为你等待
|
2020.01.08
|
0
+关注

一、 概述

在控制系统算法开发中,需要对于某些重要信号做限制处理,对于限制条件恢复后,信号怎么输出的选择上也有多种选择,比如:限制条件满足,对输出信号作限制,限制条件恢复,输出信号立即恢复为正常值;或者限制条件恢复,输出信号按照一定的梯度逐渐恢复至正常值等等。具体选用哪种处理方式,取决于具体算法需求。本文就第二种处理方式,通过Simulink基本模块库,进行建模以及仿真验证。

二、 Simulink模型

根据以往的汽车电控软件开发经验,以整车跛行(整车出现故障,需要进行限速)扭矩限制搭建了如下图的Simulink算法模型:

模型输入信号说明:

LimCond_flg:信号限制条件

TqOrg_Nm:原始输入扭矩

TqLimMax_Nm:限制最大扭矩

模型输出信号说明:

TqOut_Nm:输出扭矩

模型参数说明:

TqStepInc_Nm:递增扭矩

算法说明

LimCond_flg为TRUE时,限制条件满足,按照如下图红色标记路径计算TqOut_Nm:

TqOut_Nm=Min(TqOrg_Nm,TqLimMax_Nm)

也即:选择原始输入扭矩和限制最大扭矩两者的最小值,作为输出扭矩。

LimCond_flg为FALSE时,限制条件不满足,按照如下图红色标记路径计算TqOut_Nm

TqOut_Nm=Min(TqOrg_Nm,TqOut_Nm+TqStepInc_Nm)

也即:选择原始输入扭矩,输出扭矩与递增扭矩之和,的两者最小值,作为输出扭矩。

说明:

1、 这样就能实现限制条件不满足时,每个计算周期,输出扭矩在限制前的扭矩基础上递增,从而逐渐恢复到正常的原始输入扭矩。

2、 其中通过限制条件的下降沿检测,以及原始输入扭矩与最大限制扭矩比较,置位S-R触发器的S端,使得S-R触发器的输出端Q置TRUE,从而使与S-R触发器相连的SWITCH选择输入1输出。

LimCond_flg为FALSE时,限制条件不满足,当输出扭矩增加到大于或等于输入原始扭矩时,按照如下图红色标记路径计算TqOut_Nm

TqOut_Nm=TqOrg_Nm 也即:选择原始输入扭矩,作为输出扭矩。

说明:

当输出扭矩增加到大于或等于输入原始扭矩时,S-R触发器的复位端R为TRUE,使得S-R触发器的输出端Q置FALSE,从而使与S-R触发器相连的SWITCH选择输入3输出。

三、 算法仿真验证

仿真模型

如上的仿真模型中:

1) 通过Signal Builder模块给定LimCond_flg,0s~2s为0,2s~6s为1,6s以后为0

2) 通过Constant模块给定TqOrg_Nm为100

3) 通过Constant模块给定TqLimMax_Nm为20

4) 给定TqStepInc_Nm为1

5) 设置离散求解器,仿真步长为0.01s,仿真时长为10s

仿真结果:

1)0s~2s,TqOut_Nm为原始输入扭矩100,符合需求

2)2s,TqOut_Nm为限制最大扭矩20,符合需求

3)2s~6s,TqOut_Nm为限制最大扭矩20,符合需求

4)6s~6.8s,TqOut_Nm输出从20递增到100,递增时间0.8s((100-20)*0.01),符合需求

5)6.8s~10s,TqOut_Nm恢复为原始输入扭矩100,符合需求

小结

以上提及的算法是作者以往的实际电控项目实施中,以整车跛行扭矩限制及恢复需求为参考,该算法已经在代码生成以及实车测试中得到充分的验证。为了方便简要介绍,模型已经经过简化处理。

以上算法通过Simulink基本库模块来搭建,可能读者会感觉逻辑及视觉上有些凌乱,没关系,在后续的篇幅中会通过Simulink转态机State Flow的方式来进行算法的建模及仿真验证,敬请期待!

精选留言
延伸阅读
2020.10.02
2880阅读
更多报告干货
写留言
1714
阅读
收藏
回到顶部