环路建模工具
■环路建模工具就是matlab,通常的做法是建立M文件,然后在M文件中 输入各个模块的传递函数,利用matlab进行相乘(串联),连续转离 散,离散转离散等操作,得到高级环路模型。
高级环路模型是指将环路简化为几个基本模块后的结构,这些结构能被 matlab工具箱sisotool所支持。
下图为sisotool支持的所有结构:
DSP设计工具
■DSP参数确定可以使用matlab自带的sisotool工具,这个工具能够根据 要求得到传递函数。得到传递函数后,再将传递函数化为PID和LPF系 数。
■因为我们采用的是平台化的控制方法,因此可以将传递函数通过特定 的公式转成PID和LPF系数。
电压控制环路
■画出整个环路的模块,如下图:
其中K表示输出电压反馈时的缩放系数。
PWM和Convertor的本质可以理解为一个DA,或者将PWM视为DA,将 convertor视为输入模拟量(0-100%),输出模拟电压的一个装置。
电压控制环路离散模型
■为了使用sisotool,将电压控制环路画成如下的形式。
环路设计的工作就是使用Sisotool在已知G和H的情况下求C
采样频率和固有延
■要将模拟模块处理成离散模块,首先要确定的就是采样频率,在这个 环路里面,唯一能作为标准采样频率的就是开关管的切换频率fs。
PWM的周期也为Ts。
固定采样频率后,所有的延迟都只能是Ts的整数倍。
■此系统为LTI系统,可以将所有的延迟集中到一起,此时如果延迟不是 一个整Ts,必须人为加上延迟,凑够Ts的整数倍。
将延迟分离后,所有的模型都视为和其传递函数表达式是完全相同的:
DSP,输入数据,0延迟立即输出数据,输入X[k-1],X[k],立即得到Y[k]。
忽略ADC的量化误差后,ADC变成一个理想采样开关 ZOH,这个ZOH制造了1/2 倍转换时间的延迟。
★注意ADC的转换延迟并不是等于转换时间,而是等于1/2转换时间。
PWM和转换器的延迟
■PWM和转换器合力完成如下工作:
在周期的起始,PWM接收占空比信号D,输出持续一个周期的PWM波形, 在这个周期的结束点,输出电压反映了上一个周期的电压 当前周期占空比 的影响。
■由此可见,如果在周期的末尾采样输出电压的话,PWM和转换器合起 来有1个周期的延迟。
有些资料上将PWM直接等效为一个ZOH,这样是存在问题的,因为ZOH只 有半个周期的延迟,这样处理的前提是要求ADC在Ts/2的位置采样,并假 设Ts/2处采样的值等于周期平均值。
这个问题的根源是没有考虑开关电源的特殊性,而是将开关电源的等效模型当成 真实模型来用了,认为PWM 转换器是一个输入模拟量d,输出稳定电压V的装置。
环路延迟的处理
■前面讨论过,转换器的输出电压在一个周期内是变换的,因此,ADC 在何时采样就很关键了,假设电压在一个周期内是逐渐稳定的,那么 理想的采样点是上一个占空比D刚刚结束,下一个占空比还未更新时。
■按照这个思路,环路延迟(包括PWM的ZOH’等)=2Ts
理想无延迟状况是采样V[k-],产生D[k],决定V[k ],现在是采样V[k-2], 决定V[k]。
提高输出电压采样精度
■前面是假设输出电压在周期结束时最精确,因而在周期末尾进行采样, 这并不是最好的方式,最理想的方式是在整个周期都进行采样,然后 进行平均,得到整个周期的平均电压。
这个方法在理论上是可行的,但实际操作时会面临一个问题是ADC本身的 量化误差可能会超过单个周期内输出电压的波动,使得这种方法毫无意义。
■作为一种折中,需要根据转换器的拓扑,研究转换器在何时的输出电 压接近其周期平均电压。
忽略输出电压单周期纹波
■如果忽略输出电压单周期纹波,那么采样时刻的选取就变简单了,一 个合适的采样时刻是采样后,完成后续的所有工作,恰好更新下一周 期占空比
按照这种方式,环路延迟将减少到Ts,而不是2Ts。
离散化方法的选择
■由前面的分析可知,整个环路的延迟等于,2Ts的延迟,加上模块传递 函数自带的相位改变。
比如传递函数分母出现s或1-z-1,意味着相位要推迟。
■但是光考虑这些还不够,还要注意到,在将连续传递函数进行离散化 的时候,离散化这个过程可能会引入延迟。
如果选择加零阶保持器法,那么会引入半个周期的延迟;
如果选择双线性变换法,那么不会引入延迟,因此,在充分考虑了环路延 迟后,应该选择这种离散化方法,以免得到的离散传递函数不能表达真实 的情况。
考虑延迟后的环路模型
■下图示出了延迟为Ts时的环路模型:
环路延迟的的影响
■从之前的分析可以看到,如果环路有Ts的固有延迟,这Ts的固有延迟 在f=fs处制造了360度的相位延迟,环路稳定性将下降。
■因此,相位交点必须足够低,远离fs处,这样,这Ts的影响将降低, 按照前面的经验,100K的fs,将增益交点定在10K,相位交点也在10K 附近,离100K足够远,可以消除这个延迟的影响。
计算H的传递函数
■H的传递函数很简单:
Hk=K;
Hd=z-1;
H=Hk*Hd;
计算G的传递函数
■G的传递函数如下:
Gpwm=1/VM;
Gcov,Gaalpf;
G=Gpwm*Gcov*Gaalpf;
■将G转成连续传递函数:Gd=c2d(G, 1e-5,’tustin’)
C部分的传递函数
■C部分通常被称为补偿器,因为G和H已知,只能用C来调节环路性能。 C部分由一个PID和一个LPF串联而成,PID提供2个零点和一个极点, LPF提供2个极点和1个零点,两者串联后得到3零3极。
PID传递函数如下:
LPF传递函数如下:
注意LPF中存在一个-1处的零点,这个零点在z平面单位圆的最左边,属于 最高频的位置,对系统响应无影响,可以忽略。
LPF中的零点
■z域是离散抽象后得到的效果,要搞清楚-1处的零点的影响,需要联合 s域来考虑。
将s域传递函数转成z域有几种方法,不同的方法得到的零极点数量不一样。
将传递函数H=1/s转成z域传递函数:
由上可见,使用加zoh法,得到的传递函数其在原点有一个极点,和原s域 传递函数一样,使用双线性变换法后,在最高频有一个零点。
由此也可以看出,z 1这个零点完全是由于不同的离散化方法导致的。
PID和LPF系数的获取
■使用matlab可以得到C(PID LPF)的传递函数,得到传递函数后,需要 得到PID和LPF的系数。
PID和LPF的系数有2种表示方式,一种方式就是得到3个零点和3个极点, 然后将这3个零点和极点分配到PID和LPF中去。
另一种方式就是将零极点转换为KP,KI,KD,A1,A2,A3的值,这是我 们最终需要的值,这些值可以直接写入到硬件寄存器中。
将零极点转为多项式系数
■联立2个式子,可以得出多项式系数的表达式:
PID加LPF v.s. III型补偿器
■PID加LPF这种3零3极的结构和III型补偿器是完全相同的,因此,可以 刻直接在z域设计PID和LPF,也可以在s域设计III型补偿器,转到离散 域,甚至可以直接将设计好的III型补偿器的参数转化为PID和LPF的系数。
通过波特图确定参数的原则
■PID和LPF一共提供了2个有效零点和3个有效极点,在设计时,先设 C(PID LPF)的传递函数为1,画出开环传递函数的波特图,然后在此 波特图上添加零极点,同时通过上移或下移增益曲线来调整0频增益。
这些操作可以在matlab的工具箱sisotool中完成。
在添加零极点和调整增益时通常遵循如下的原则:
将开环截止频率定在开关频率的1/5-1/20,比如100KHz的切换频率,截止频率定 位10K;
截止频率出的增益曲线斜率设为-20dB;
相位裕度定为45-70,增益裕度定为10dB以上;
低频增益尽量高。
插入误差放大器
■按照前面的环路模型进行设计时,会发现一个问题,系统的开环增益 太小,直流增益甚至会小于1。这个问题的原因在于环路中没有任何误 差放大装置,虽然PID中的P能够承担放大任务,但由于寄存器位宽的 限制,P不可能做到很大,因此放大任务必须由专门的增益单元承担。
增益单元可以插在环路中任意位置,但理想的位置是在数字部分,比如插 在DSP内PID之前。
这个增益插入后,会导致输入到PID的数字码进一步加长,而稳定工作时输 入到PID的误差信号是很小的,因此在设计电路时,可以控制误差信号的大 小,当误差信号超过某一值时,溢出成最大值。
设误差信号为[9:0],当误差信号进行放大,比如x256倍,此时信号向左移位8位, 如果左移8位后信号大于1024,那么直接将误差视为11_1111_1111。
甚至可以设计成可变增益放大,当信号的高位为0越多,放大的倍数越大,以保证 不会有溢出丧失线性度的问题。其中最大的放大倍数是定值,这样环路只要在最 大放大倍数下是稳定的,就可以在所有放大倍数下稳定。
使用sisotool设计补偿器
■利用sisotool做设计非常方便,通常按照如下步骤:
在Archiecture标签中选择好环路形式,输入已知的传递函数;
利用直接编辑法,图形设计法,软件辅助设计法设计补偿器的传递函数;
将设计结果用图形显示出来,检验设计结果,Analysis Plot标签中提供了丰 富的分析图,能够分析开环,闭环等多种系统的响应。
SISOTOOL启动
■在matlab主命令窗口中输入sisotool,即可启动sisotool
输入环路模型
直接编辑传递函数
■直接编辑传递函数本质上就是手工添加和编辑零极点,编辑后传递函 数会立即更新,至于传递函数的形式,可以在主菜单:Edit > SISO Tool Preferences中编辑。
利用图形法设计传递函数
■这是最主要和最常用的方法,其方法就是在开环传递函数的波特图和 根轨迹上添加,删除,移动零极点和增益,sisotool会根据修改完的结 果自动产生补偿器的传递函数。
在标签Graphical Tuning中可以选择使用何种图,默认是3种:根轨迹图, 开环波特图,闭环波特图,通常不需要修改。
利用开环波特图设计传递函数
■一开始,补偿器传递函数为1,开环波特图显示的是G*H的传递函数, 为了进行补偿,加入零点和极点,G和H的零极点显示为蓝色,不可修 改,用户加入的零极点显示为红色,可以删除,移动。
在菜单Edit中有undo和redo。
利用根轨迹图设计传递函数
■和波特图类似,也可以利用根轨迹图来设计,同样可以添加删除移动零极点,而且还可以移动k值,点击图中紫色的小方块,可以移动,将k设为不同的值,移动的过程中,波特图也会实时关联更新。
软件辅助设计传递函数
■软件辅助设计是利用matlab内置的机制全自动产生补偿器传递函数,或者交互式的设计,给出带宽和相位裕量要求,软件自动产生传递函数。
这个方法非常适合对环路理解不够深刻的用户,通过软件的辅助,逐渐加深理解,最终得到合适的设计。
系统性能分析图
■设计时,打开系统性能分析图很重要,可以随时观察当前补偿器导致的结果,随时调整设计。
软件使用技巧
■在设计时,一定要打开图形设计界面和系统性能分析界面,这样无论是直接设计还是软件辅助设计,图形都会实时更新,随时监视系统性能。
■对于经验欠缺的用户,刚开始使用软件辅助设计,随后利用图形调整是一个比较好的做法。
利用Matlab的Help
■Matlab的Help是很强大的,与其记住大量的命令格式,不如记住这些命令的专业术语,然后在help中搜索。
■比如要将连续传递函数转为离散传递函数,记住其命令术语为c2d,使用时,在help中搜索c2d,就能得到c2d的完整语法。而且记住c2d了后,也就知道了d2c,d2d命令。
Matlab常用命令
■表示传递函数的方法:
tf:分子分母用多项式的方法表示传递函数,加上采样时间就是离散,不加是连续;
zpk:用零极点的方法表示传递函数,加上采样时间就是离散,不加是连续;
注意tf和zpk既能用来直接描述传递函数,也能用来将传递函数从一个形式转化为另一个形式,省的手工乘因子和做多项式分解。
如果传递函数中含有e-sT这样的项,就只能手工输入多项式了,在输入多项式之前,需要运行s=tf(‘s’)或z=tf(‘z’,T),确保matlab能识别出多项式中的s和z,
■绘图方法:
bode:波特图;margin:带裕量的波特图;step:阶跃响应;impulse:冲激/脉冲响应;rlocus:根轨迹;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/31310.html