详细:http://www.docin.com/p-1590326155.html
一) 仿真设置:(窗口菜单”Simulation”→”Configguration parameters…”)
在了解这些设置之前必须先了解一下Simulink的工作原理:我们在Simulink中连线的过程实际上是定义微分(差分)方程(组)的过程。而仿真则是求微分(差分)方程(组)数值解的过程。
1. Solver中的参数设置:
(1)“Type”:设置微分(差分)方程求解类型,”Variable-step”表示采用变步长算法。”Fixed-step”表示采用定步长算法。(参阅微分方程数值解的书籍)
(2)当求解类型是”Variable-step”时,有以下选项:
1”Max step size”——最大步长,若为auto,则最大步长位(Stop time-Start time)/50。
2”Min step size”——最小步长。
3”Initial step size”——初始步长。
4”Relative tolerance”——设置相对容许误差限。
5”Absolute tolerance”——设置绝对容许误差限。
在变步长算法中,步长大小与信号变化快慢反向相关。容许误差限的作用是控制计算精度。当误差超过容许误差限时会自动修正步长。在迭代的每一步(不妨设是第i次迭代),程序都会将计算出来的值与期望值相见得出一个误差e(i),若e(i)满足:e(i)<=max(相对容许误差限*|y(i)|, 绝对容许误差限),则表明第i次迭代是正确的,否则,程序会自动将步长减小,再来验证上述不等式是否成立。重复上述过程,直到上述不等式成立为止。
(3)当求解类型是”Fixed-step”时,有以下选项:
1”Fixed step size”——设置步长
2”Tasking mode for periodic sample times” ——设置模型类型。
(4)无论是定步长还是变步长,都可以用Solver下拉框选择求解微分(差分)方程数值解的算法。算法的选择可以参考以下原则:
1如果模型全部是离散的,则对于变步长和定步长,解法都采用discrete方式。
2ode45和ode23实际上都是采用Runge-Kutta法,而ode23达到同样的精度时要比ode45步长小。
3ode23s和ode15s可以解Stiff方程。
4ode113是变阶的Adams法,可以多步预报校正。
关于上述算法具体细节有什么不明白的欢迎和我讨论!
2. Data Import/Export中的参数设置:
关于这个,我不想多说了,只要理解了simulink的工作原理,应该不难。只是要强调一点,把那就是Ipute栏中的向量可以是两列,如[t,u],也可以是多列。若为多列,则第一列是时间向量,后面几列按顺序依次为对应的输入端口。
(二)例子:(包括示波器scope的设置)
例1:如下图连线:(方针时间设为10秒)
Sine Wave参数设置如下:
示波器Scope设置如下
在Configguration parameters…为默认的情况下运行后的结果如下所示:
若把Configguration parameters…改为:(把max step size改为2)
则运行后的图如下图中的折线所示:
这时在上图上点击右键,在popup menu中选autoscale,这时可以得到下图:
至于为什么是这样子我就不用多说了吧?
再把max step size改为1.0,同时确认示波器属性设置为:Sampling→Decimation→1
则输出如下:
此时再将示波器属性设置为:Sampling→Decimation→2
则输出如下:
注:示波器的Decimation 设置显示频度。若取n,则每隔(n-1)个数据点给予显示。
这时再看command 窗口,有1个warning:
Warning: The model '你的mdl文件名' does not have continuous states, hence using the solver 'VariableStepDiscrete' instead of the solver 'ode45' specified in the Configuration Parameters dialog.
这时只要将Configguration parameters…中的Solver改为discrete就行了
若你的Configguration parameters…中的max step size设置为auto,则还会有一个warning:
Warning: Using a default value of 0.2 for maximum step size. The simulation step size will be limited to be less than this value.
这里之所以是0.2前面已经说过了!(0.2=(10-0)/50)
注:若把max step size改小则图像更精确!但计算量会增大!
如果我们把max step size改为0.0001,则可以看到输出波形如下:
这是为什么呢?原来是示波器属性设置不对!我们看到示波器属性如下:
这就意味着示波器只显示从后往前数5000个点,故显示只有横坐标从9.5到10这一段!
如果我们把Limit data points to last改为100001 (这里100001=(10-0)/ 0.0001 1)。那么波形就对了!如下图所示: