关于saber的环路仿真

在这里先放一个我自己用buck做的一个环路仿真例子吧。

用的sg3525芯片做的一个buck。图是以前画的,现在加个了个tdsa环路扫频。

http://download.csdn.net/download/qq_30835339/10021642


buck原理就不啰嗦了,直接说仿真。

PS:saber是通过扫频仿真的,就是从设置的低频到高频一个点一个点的计算,这就导致仿真时间特别长,这一点很恶心。而且仿的是开环。


首先是需要一个控件工具tdsa.

要实现频域的环路仿真,就必须用到 saber中的环路扫描仪 tdsa,它能够向环路注入频率可
变的正弦波信号,通过测试反馈信号,获得两者之间的增益和相位关系。

关于saber的环路仿真_第1张图片
一共有
5 个脚需要连接相关的信号线, 其中ON/OFF tdsa的使能引脚, 通过接入一个 logic
clock
就可以实现 tdsa 何时开始扫描, 可是停止。 Inputmeasure)的+-线分别接入需要测量
的回馈信号的正负引脚,
outputsource)的+-线分别接入信号注入点的正负引脚。

关于saber的环路仿真_第2张图片
需要设置的属性,
fbegin:扫描起始频率
fend:扫描截止频率
ampl:注入信号的幅值(信号是以0 为轴的正弦波)
npoints:从 fbegin fend总共需要扫描的频率点数
max_err:最大误差系数
mode:频率扫描执行的类型
max_nper:每个频点允许扫描的最大周期数
min_nper:每个频点允许扫描的最小周期数
min_tspp:每个扫描周期中允许的最少时间步进数
filter:选择是否需要对输入信号进行滤波
a0:滤波器的增益
f0:滤波器的品质因素
以上参数需要特别设置,其他的参数则不需改变。那么以上这些参数应该如何进行设置呢?
分别代表什么意思?
我们要测试开环特性,首先要向环路中的某一点注入频率连续变化的扰动信号,然后在环路
的另一点上测量回馈信号,通过对比两者的幅值和相位差就可以获得一定频段内注入点和反
馈点之间增益曲线和相位曲线。
那么通过
source 端向环路中的某一点注入频率连续变化的正弦波电压信号,其幅值就是
ampl,一般设置为 0.1V 即可,如果想测量准确,也可设置的大一点。
注入信号频率变化的范围由
fbegin fend 决定,假如说我们想测量 100Hz~100kHz 之间的
开环特性,那么选择
fbegin 100fend100k
Tdsa如何扫描呢?即如何实现频率连续变化的信号注入呢?实际上频率是不可能连续变化
的,注入的信号还是离散的,即从一个频点间隔的跳到下一个频点,扫描的频点越多,间隔
越小,测试结果的准确性越高。在参数栏中,
modenpoints两个参数决定了扫描的频率间
隔形式,
mode为扫描形式, npoints为总共需要扫描的频点数。 Mode有三个可选项: linswp
logswprlogswpLinswp就是线性扫描,假定扫描频率从100Hz~100kHznpoints1000
那么从
100Hz~100kHz总共有99.9kHz的频谱宽度,每个频点间隔为99.9kHz / 1000=99.9Hz
注入信号的频率为
100Hz,199.9Hz,299.8Hz,399.7Hz100kHzlogswp就是以对数间隔的方式
进行扫描,
100kHz / 100Hz=1000log1000=3,那么注入的信号频率为100Hz,100Hz*103/1000,
100Hz*10
3*2/1000, 100Hz*103*3/1000100Hz*103*1000/1000。至于rlogswp,我也没搞清楚是如何设
置的,大家有时间可以自己研究一下
tdsa的使用说明书。对于两种扫描方式,虽然总的频点
数一样,但是
linswp方式下频点之间的间隔是固定的,而logswp方式下,刚开始时频点之间
的间隔很小,越往后频点间隔越大。
另外的几个关键参数都跟仿真的精度相关,首先是
max_err,即最大误差系数,在某一个频
率点上,
tdsa 向环路连续注入扰动信号,然后测量回馈的信号,对比增益和相位的变化,直
到获得稳定的值。如何判断是否达到稳定?即由
max_err 决定,将前面三个注入信号和回馈
信号的增益和相移取平均值,与当前注入信号和回馈信号的增益和相移对比,如果误差在
max_err 限定的范围之内,即认为已达稳定状态,可以进行下一个频点的扫描。
Max_nper 是在同一个频点上允许扫描的最大周期数,假如在同一个频点上扫描多次还没有
达到
max_err 限定的误差范围,而反复的扫描可能导致仿真周期变得很漫长,或者在某个频
点上由于电路某些参数设置不可能,根本就无法获得稳定值,那么这时候就需要跳过这个频
点,进入下一个频点进行扫描,
max_nper 即是允许tdsa 在同一个频点扫描的最大次数,一
旦达到这个次数,即使还没有达到
max_err 限定的误差范围,也直接跳过这个频点,进入下
一个频点。
Min_nper,这是与 max_nper 对应的,即在同一个频点最少要扫描的次数,一般取大于3
Min_tspp
,设定每一个扫描周期中的最小时间步进数,假如在频点 10kHz,扫描一个周期是
100uS,那么希望 100uS 的正弦波尽量准确,就希望分段输入的波形光滑一些,所以需要设
定这段正弦波被分割的最少片段数,这个值设定的越大,波形越光滑,测得的相位越准确。
Filter,即是否要对 tdsa 的输入( input)信号进行滤波,默认是要滤波的,因为里面含有高
频开关纹波以及一些其他高次谐波,并不是我们环路扫描所需要的。
a0,滤波器的增益。
p0,滤波器的品质因素,滤波器的带宽由f0/p0,假如扫描频点为 10kHzp010,那么滤
波器的带宽为
1kHz,即在 input 端将把 9.5kHz~10.5kHz以外的信号滤掉。


ON/OFF需要一个逻辑单位阶跃信号传给他。

需要这样:
关于saber的环路仿真_第3张图片

freq:  频率

duty:占空比

td:延迟时间

V1:占空比过后的值(一般默认)

V2:占空比期间的值(一般默认)

图中参数就是延迟10ms的单位阶跃输出。


工具就需要这些。

我们仿真需要把这个信号加入到电路中去,这就需要断开一个环节,断哪里呢?

我们可以回忆当初讲自控原理时候,所说的开环传递函数是G(s)H(s),利用这个开环传递函数来分析闭环稳定性。这个开环增益就是从误差比较那里断开的,基准信号和经过反馈回路回来的信号做差。放到开关电源就是在采样点到误差输出点,中间的误差放大器就用这个tdsa代替。


另一方面,我们做电压型环路补偿,就是在误差放大器上。

综上所述,我们就在这里断开,进行开环仿真时最合适的。

关于saber的环路仿真_第4张图片

因为整个电路都是共地的,所以负端全接地。

input:输入为vout,即输出电压。

souce:输出扫频信号,需要叠加一个基准电压2.5v,然后送到误差放大器的输出公共端com口。


总图:

关于saber的环路仿真_第5张图片

设置仿真参数:
关于saber的环路仿真_第6张图片


其中第一页的end time是结束时间,真正的结束时间是这个设置和扫频范围到最大频率的时间,去最小。所以这个取大一些可以让频率范围更大。time step是步长时间,这个设置要小一点,一般ns级,因为这个取得大了,计算那么多个点,一天都可能完不了,这里注意第三页的tranction error这个参数要比time step小。第四页的max time step 应该大于time step;min time step 应该小于time step;这里可以提高速度。

还有一点,第五页的target iterations 默认是3,然而仿真时候会出现错误,

***error "Alg_no_solution" *** Cannot find nonlinear system solution. 
***error "Alg_iterations" *** Too many iterations. 
这个错误是找不到非线性解,太多迭代。

这时候增大target iterations ,范围是3-50次,我通常取5.

减小tranction error也可以。

如果网上的方法都试了,还不行,就试着加大time step。我是这么解决的。


接下来就是等来了。。。。。。。。。

====================================

当右上角的三角停转时,就可以看结果了。

关于saber的环路仿真_第7张图片


跟着箭头就可以看图了,由图像可知,系统相角裕度还是可以的。


关于saber的环路仿真_第8张图片

由上图可以看出,系统的LC极点在430Hz左右,ESR零点在4.3k左右。

可以通过二型补偿器进行补偿。



========================================分割线==================

也可以补偿完后再防一次看看区别。就是在注入信号和com端之间加入补偿器。

这里不详细说了,请自行仿真实验。

文首给的是开环未加补偿器的仿真文件,由于仿真输出数据太大,传不上来,所以我把图像数据删掉了,想看图像的运行过后就可以看了。


/* 新手上路,请多指教,如有问题,评论留言 */

你可能感兴趣的:(关于saber的环路仿真)