第7 章 高级仿真概念 本章介绍Simulink 仿真中的某些重要概念,它们对于获得准确的仿真结果具有非常重要的意义,本章的主要内容包括: 过零检测 什么是过零检测,过零检测的工作方式以及如何在 Simulink 中启动过零检测 处理代数循环 什么是 Simulink 中的代数循环,如何设置代数循环 高级积分器 如何利用积分器重置功能将积分器模块设置为不同的值 仿真参数的高级选项 如何利用仿真参数对话框设置仿真错误诊断设置和仿真性能优化设置 第 7 章 高级仿真概念 143 7.1 过零检测 在进行动态系统仿真时,Simulink 利用过零检测来检查每个时间步上系统状态变量的不连续性,如果 Simulink 在当前时刻检测到不连续,它会确定不连续状态出现的准确时刻,并在该时刻的前后选取另外的时间步求取仿真结果,这一部分就介绍过零检测的重要性以及过零检测的工作方式。 7 .1 .1 过零检测的工作方式 状态变量中的不连续常常表征了动态系统的重要事件。例如,当弹球撞击地板时,撞击的位置是不连续的。由于不连续性常常表示动态系统的一个重大改变,因此对不连续点进行精确仿真是非常重要的,否则,仿真可能会导致错误的结论。还以仿真小弹球为例,如果在两次仿真步之间小球撞击了地板,那么被仿真的小球在半空中就会翻转方向,这就会使研究人员对小球的物理运动得出错误的结论。 为了避免这样的错误,对不连续点进行仿真是非常重要的,当然,完全依赖仿真算法来确定仿真时间是不能满足这样的要求的。以定步长算法为例,定步长算法在固定步长的整数倍时刻计算状态变量的值,但是,谁也不能保证不连续点的出现时刻就在定步长的整数倍时刻,用户也可以减小步长以增大撞击到不连续点的可能性,但这无疑会增加仿真的执行时间。 这样看来,变步长算法似乎可以解决这样的问题。变步长算法会动态地调整步长,当状态变量变化缓慢时增大步长,而当变量变化快速时减小步长,在不连续点处,变量的变化是非常迅速的,这样,从理论上来说,变步长算法应该可以准确地找到不连续点,问题是定位不连续点的精确性。为了找到不连续点,变步长算法必须采用越来越小的步长,这样就大大降低了仿真的效率。当然,这样会放慢仿真的速度,但这样做对有些模块来讲是至关重要的,因为这些模块的输出可能表示了一个物理值,它的零值有着非常重要的意义,也有可能这些模块用来控制另外的一些模块,事实上,只有少数模块能够发出事件通知,而且...