查看: 116|回复: 5|关注: 0

[已答复] 控制仿真s函数报错的问题

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2020-1-14 10:11:33 | 显示全部楼层 |阅读模式
本帖最后由 fireXfish 于 2020-1-14 11:51 编辑

      我在进行固定翼的仿真,用的是PID,数学模型是非线性6DOF,PID那部分在没有接入6DOF时是可以运行的。F&Mcal是计算力和力矩,和6DOF一起求平衡点,用ode45运行也没有问题,但是如果像图中这么运行就不行了,用变步长的求解器报错是第二张图,定步长报错是第三张图。我在求平衡点时得出速度是20m/s,但是发现如果把20作为指令,也就是第一张图的左下角这个值,就会报错,如果是21就没有问题,但是19有问题,这是为什么?我的S函数里的确有除法,但是如果把分母改成非零值, 比如常数1,也会有flag=1的报错。

想问:
1.为什么不同的求解器出错不一样?
2.Simulink中每个系统的仿真时间的逻辑是怎么样的?比如是S函数的步长决定了大循环的仿真次数,也就是S函数运行一步,直接将数值传给其他模块,再用其他模块求得的值进行下一步?
3.我的模型问题出在哪里?
1.png
2.png
用变步长,无论是ode45还是ode15s都是如上报错

3.png
用ode4报错如上

论坛优秀回答者

3

主题

1110

帖子

133

最佳答案
  • 关注者: 80
发表于 2020-1-14 15:42:22 | 显示全部楼层
你这个系统里有没有代数环?

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-1-14 18:18:25 | 显示全部楼层
coolchen302 发表于 2020-1-14 15:42
你这个系统里有没有代数环?

您好,感谢答复!没有代数环。我用Simulink.BlockDiagram.getAlgebraicLoops(ModelName)试了,也没有发现代数环。

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-1-14 18:38:21 | 显示全部楼层
coolchen302 发表于 2020-1-14 15:42
你这个系统里有没有代数环?

这个和代数环有什么关系吗?为什么不提示是跟代数环有关的错误?

论坛优秀回答者

3

主题

1110

帖子

133

最佳答案
  • 关注者: 80
发表于 2020-1-14 22:09:52 | 显示全部楼层
fireXfish 发表于 2020-1-14 18:38
这个和代数环有什么关系吗?为什么不提示是跟代数环有关的错误?

代数环不一定是提示错误,看在设置里怎么设置了
只看这个图,好像看不出你的具体问题,看方不方便把模型上传上来看看了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表