目录
(1)System Identification 系统辨识工具箱简介
一、前言
本篇文章作为学习自控原理与电力电子的验证过程,仅作为笔记,省略部分推导过程,供各位读者参考,如有错误,敬请批评指正。
其次,因本人水平不足,无法一次性完成本篇博客,在发布博客后会继续修改,添加内容,望见谅。
二、概要
本文提出一种基于PLECS阻抗扫频、Matlab系统辨识与SISO工具链的BUCK电路PID控制器自动化设计方法,结合仿真建模、传递函数拟合、补偿器参数整定及硬件实验验证,实现高效、精准的环路控制设计。
在我的第一遍文章中,介绍了BUCK电路设计方法与PID补偿器参数整定方法。但是,在实际手动计算过程中,经常会出现以下问题:
- 失误导致的计算错误
- 计算的数据因省略位数而导致补偿的不准确问题
- 手算严重拖慢了环路设计的开发速度
针对以上问题,本文提出了以下技术路线:
- 利用PLECS仿真软件的阻抗扫频(通过对电路扫频,得到bode图数据)
- matlab的System Identification 系统辨识工具箱(将上面的bode数据拟合为传递函数)
- matlab的sisotool控制系统设计工具(对系统进行补偿,自动设计控环路的参数)
- sisotool计算的的补偿器参数写入单片机中,进行闭环控制
此技术栈针对计算准确度,补偿器设计开发时间进行优化,有如下优势:
- 大大降低了开发过程中的人为的计算失误问题
- 降低了开发的门槛
- 提高了开发的效率
三、设计原理,使用工具箱简介和补偿器的设计流程
在讲解扫频之前,简单解释下伯德图:西北工业大学 卢京潮老师线性系统的频域分析与校正
1. 系统扫频的设计原理
在自动控制系统中,扫频法(Frequency Sweep)是一种通过向系统注入频率连续变化的正弦信号,测量其输出响应的幅值和相位,从而绘制波德图(Bode Plot)的实验方法。这种方法广泛应用于开关电源、电机控制等场景,尤其适用于分析闭环系统的稳定性。以下结合开关电源的实际案例进行详细讲解:
(1)扫频法的基本原理
扫频法的核心是通过向系统输入不同频率的正弦信号,测量输出信号相对于输入信号的增益(幅值比)和相位差,最终形成频率响应曲线(波德图)。具体步骤包括:
-
信号注入:在系统反馈回路中插入一个小幅值的正弦扰动信号(例如通过注入电阻或隔离变压器),确保不影响系统正常工作。
-
频率扫描:从低频到高频(如10 Hz到100 kHz)逐步改变输入信号的频率。
-
数据采集:通过示波器或专用分析仪记录每个频率点的输出幅值和相位。
-
数据处理:计算增益(dB)和相位差(度),绘制波德图以分析系统的穿越频率、相位裕度和增益裕度37。
(2)扫频法的优势与局限性
优势:
- 直观性:直接反映实际系统的频率特性,无需依赖数学模型。
- 适用性广:适用于非线性系统(如开关电源的PWM调制环节)和复杂控制结构38。
局限性
- 信号注入干扰:可能引入额外噪声或影响系统工作点。
- 动态范围限制:高频段可能因探头带宽或信号衰减导致测量误差3。
(3)与其他方法的对比
-
大/小信号建模:基于数学推导或仿真,适用于理论分析,但对非线性系统的精度有限。
-
扫频法:基于实验数据,更贴近实际工况,但需硬件支持。
(4)总结
扫频法是开关电源等电力电子系统稳定性分析的核心手段,通过实验数据生成波德图,为环路补偿设计提供直接依据。实际应用中需注意信号注入方式、噪声抑制和参数优化。例如,某型号反激电源通过扫频法发现相位裕度不足后,调整补偿网络使裕度从30°提升至60°,显著提高了动态响应和抗干扰能力。
详细可参考文档:
2. 工具箱简介
(1)System Identification 系统辨识工具箱简介
MATLAB系统辨识工具箱(System Identification Toolbox)是一套基于实验数据构建动态系统数学模型的专业工具,支持从时域或频域数据(如扫频测试的输入-输出信号)中自动辨识线性或非线性系统特性。
该工具箱提供数据预处理(去噪、重采样)、参数化模型估计(如状态空间、ARX、传递函数)及非线性建模(Hammerstein-Wiener、神经网络)功能,通过最小二乘法、最大似然估计等算法优化模型参数,并借助残差分析、频域响应对比等手段验证模型精度。
其优势在于无需依赖先验理论模型,可直接从工业过程控制、电力电子系统(如开关电源环路分析)或机电设备的实测数据中提取动态特性,生成高拟合度(NRMSE >90%)的Simulink兼容模型或嵌入式代码,为控制器设计、系统仿真与实时部署提供高效解决方案,尤其适用于理论建模困难或含强非线性环节的复杂系统。
实际使用过程中,拟合的传递函数精度常常能达到 99% 以上。
详细内容可移步:MATLAB系统辨识工具箱介绍(完结)
(2)sisotool控制系统设计工具简介
MATLAB中的SISO Tool(sisotool)是一款专用于单输入单输出(SISO)控制系统设计的交互式工具,支持基于频域/时域响应的控制器参数整定与系统性能分析。
用户可通过图形化界面实时调整补偿器(如超前滞后网络、PID)的零极点位置或频域特性(增益/相位裕度),同步观察根轨迹、波德图、阶跃响应及奈奎斯特曲线的变化,实现闭环稳定性与动态性能(超调量、调节时间)的快速优化。
该工具内置自动调参算法,兼容传递函数、状态空间模型及Simulink模块,支持从工业控制器(如电机调速、开关电源环路补偿)到航空航天系统的设计场景,其直观的可视化反馈与多目标约束分析能力,显著降低了复杂控制结构(如级联控制、多回路系统)的调试难度,并可生成C代码或直接导出至实时硬件平台,实现从仿真验证到嵌入式部署的全流程闭环。
该工具箱可实现一站式的控制系统设计,图形化配置更是大大加快了开发速度,也降低了设计的门槛。
详细内容可移步:MATLAB控制系统校正工具sisotool的使用
(3) PLECS仿真软件简介
PLECS是由瑞士Plexim GmbH公司开发的系统级电力电子仿真软件,专为电路与控制系统的联合仿真设计,尤其适用于电力电子变换器、电机驱动及传动系统的建模与分析。
其核心优势在于 仿真速度与精度 :采用理想开关模型(零导通电阻与无穷大开路电阻),避免了传统仿真中吸收电路带来的复杂性,并通过离散状态空间算法优化步长控制,显著提升仿真效率(比Simulink快2.5倍以上)。
PLECS提供 双版本支持 ——Blockset版(作为Simulink工具箱,实现电路与控制的协同仿真)和Standalone版(独立运行,集成控制与电路元件库),兼容Windows、Linux等多平台。
其功能覆盖 热仿真 (支持温度相关的损耗建模与热阻网络分析)、丰富的电力电子元件库(如无刷电机、三相变压器、齐纳二极管)以及自动C代码生成(嵌套版),可无缝衔接实时硬件部署。全球工业界(如西门子、ABB、松下)及学术界(清华大学、曼彻斯特大学)广泛采用其进行电力电子系统设计与教学,典型应用包括逆变器开发、电机控制及新能源变流器优化。
详细内容可移步:PLECS的基本介绍
3. 补偿器的设计流程
- 利用PLECS仿真软件的阻抗扫频(通过对电路扫频,得到bode图数据)
- matlab的System Identification 系统辨识工具箱(将上面的bode数据拟合为传递函数)
- matlab的sisotool控制系统设计工具(对系统进行补偿,自动设计控制环路的参数)
- sisotool计算的的补偿器参数写入单片机中,进行闭环控制
本文以BUCK降压电路为例,演示使用工具进行自动环路设计过程。
设计目的输入电压60V,降压输出24V,电路仿真数据如下:
四、PLECS阻抗扫频与Bode图数据获取
打开仿真模型,点击Simulation下的analysis tools,选择AC sweep,如下:
进入AC sweep后,配置好选项,即可点击start analysis,如下:
经过软件的阻抗扫频以后,即可得到该BUCK电路的传递函数:
进入到如下界面:
波德图导出为:
从图中可以看出,这个电路的传递函数是一个二阶系统。
信号建模的传递函数计算可以参照我的另一篇博客: BUCK电路设计方法与PID补偿器参数整定方法
将伯德图数据以CSV格式导出,并保存。
导出的数据如下:
可以看到,频率的单位是HZ,在导入到matlab的系统辨识工具箱时,需要将其转化为rad/s的格式。
五、Matlab系统辨识工具箱传递函数拟合
1. 数据预处理
创建.m脚本文件,将导出的csv文件和脚本文件放在同一个文件夹中。
将数据导入到matlab的系统辨识工具箱时,需要对其进行预处理,以及将其导入到matlab的工作台,运行下面这段程序:
data = readmatrix('buck_i.csv');
freqHz = data(:,1);
ampDb = data(:,2);
amp = 10.^(ampDb/20);
pha = data(:,3);
freq = freqHz*2*pi;
运行程序后,在matlab的工作台可以看到以下数据:
· 其中,freq是频率,pha是相位,amp是幅值。
2. 导入数据到System Identification
先打开System Identification,如下:
开始导入数据,点击导入数据,点击Freq domain data,如下:
然后,就可以在操作台看到:
可以勾选下面的frequency resp 来看导入的伯德图,将其与plecs的伯德图进行对比:
注意频率单位。
接下来,选择估计传递函数:
选择两极点,单零点的数据进行拟合方式:
在操作台上会得到:
tf2就是拟合后的传递函数,可以勾选下面的frequency resp 来看他的伯德图。
双击下面的选项:
得到拟合后的传递函数:
拟合精度高达99.5%
将该传递函数复制下来,即可导入到sisotool工具,进行自动设计。
六、SISO Tool工具链的PID补偿器自动设计
运行下面这段程序,将传递函数数据导入到工作区:
fenzi = [9.541e04,3.598e08];
fenmu = [1,3767,2.879e07];
BUCK_I_G = tf(fenzi,fenmu)
bode(BUCK_I_G)
在命令行窗口输入 sisotool ,并运行,打开控制系统设计器,如下:
编辑架构,具体原理参照上一篇博客:
选择框架,导入传递函数:
选择补偿方式为PID补偿:
选择补偿后系统的的穿越频率和相位裕度:
可以看到系统补偿后 伯德图 , 根轨迹图 , 阶跃响应曲线,点击左边栏中的C,左下角出现补偿器的传递函数:
将得到的补偿器参数写入仿真,即可完成闭环设计。
七、双闭环仿真设计
1. 电流内环设计
将上面得到的电流内环参数写入到PLECS软件中,如下:
开始仿真,得到电流电压波形:
可见,仿真波形基本满足预期。
接下来,使用同样的办法,设计电压外环补偿器:
扫频得到电压外环的传递函数,如下:
2. 电压外环设计
3. 波形对比
八、参数离散化与硬件实验验证
1. 补偿器参数离散
下面给出matlab离散传递函数程序:
I_fenzi = [0.0074853,158.239242];
I_fenmu = [1,0];
I_G = tf(I_fenzi,I_fenmu)
bode(I_G)
hold on;
bc_z = c2d(I_G,1/50000,"tustin");
[num_z,num_m] = tfdata(bc_z,'v');
vpa(num_z,7)
vpa(num_m,7)
bode(tf(num_z,num_m,1/50000))
蓝色为连续域传递函数,红色为离散域传递函数,效果如下,可以看到相似度很高:
2. 实验平台介绍
正面:
背面:
3. 实验结果展示
正在调试中.................
九、总结与扩展方向
1. 技术优点
-
高效性与自动化
-
工具链闭环:PLECS仿真→系统辨识→SISO Tool参数整定,减少人工计算与试错成本,显著提升设计效率。
-
频域数据驱动:基于扫频的Bode图拟合传递函数,规避理论建模误差,提升模型可信度。
-
-
理论精度高
-
仿真环境理想化:无硬件噪声干扰,模型参数(电感/电容)严格符合理论值,便于验证控制算法核心逻辑。
-
SISO Tool优化算法:可精确满足相位裕度、穿越频率等频域指标,仿真结果具备理论参考价值。
-
-
快速原型验证
-
参数可直接移植:从仿真到代码部署无缝衔接,缩短从设计到实验的周期。
-
2. 技术缺点
-
忽略实际硬件干扰
-
ADC采样问题:未考虑采样噪声、混叠效应(超出奈奎斯特频率的高频信号混叠至低频),导致实际控制信号失真。
-
环路执行负载率:仿真假设控制器实时运行(无计算延迟),但单片机中断处理、任务调度可能引入额外滞后。
-
-
离散化与量化误差
-
连续域参数直接离散化(如Tustin变换)未适配实际采样率,可能引发相位损失或稳定性问题。
-
ADC/DAC量化位数限制,导致控制量分辨率不足(如12位ADC引入的电压测量误差)。
-
-
非理想元件特性
-
仿真模型忽略寄生参数(电感DCR、电容ESR),导致实际频响与仿真Bode图偏差(如高频相位跌落)。
-
对比总结 | ||
---|---|---|
维度 | PLECS+Matlab自动设计 | 实际工程系统 |
模型精度 | 依赖理想化仿真模型 | 受硬件噪声、寄生参数、离散化影响 |
抗干扰能力 | 无环境干扰,理论纯净 | 需处理ADC混叠、PCB噪声、负载瞬变 |
实时性 | 假设零延迟闭环 | 受限于单片机算力、中断响应时间 |
参数鲁棒性 | 针对固定工况优化 | 需适配宽输入/负载范围及元件公差 |
3. 扩展方向
-
-
-
-
为克服仿真设计与实际系统的偏差,需从“理想模型驱动”转向“实测数据驱动”,核心改进方向如下:
-
-
硬件在环验证替代纯仿真建模
-
问题:PLECS仿真依赖理想元件模型,无法反映实际电路寄生参数(如电容ESR、电感DCR)及PCB布局噪声。
-
解决方案:采用TI SFRA工具直接对硬件电路扫频,获取包含真实干扰与非线性特性的Bode图,彻底规避理论建模误差。
-
-
离散化与抗混叠设计优化
-
问题:PLECS+Matlab流程忽略ADC采样混叠效应与离散化相位损失,导致数字控制器性能下降。
-
解决方案:基于TI Compensation Designer的离散化参数自动适配,结合抗混叠滤波器设计与Nyquist频率约束,确保数字控制环路稳定性。
-
-
多工况鲁棒性优化
-
问题:仿真仅针对固定工况设计,未覆盖实际宽负载/输入电压范围下的参数鲁棒性需求。
-
解决方案:通过SFRA多条件扫频(如轻载/重载、输入瞬变),提取动态频响特征,利用Compensation Designer生成自适应补偿参数,提升系统抗扰动能力。
-
-
-
参考文献
[1] 巫付专、沈虹 《电能变换与控制》 机械工业出版社, 2014.
[2] 理查德·C·多尔夫(Richard C. Dorf)、罗伯特·H·毕晓普(Robert H. Bishop) 《现代控制系统(第十二版)》 电子工业出版社, 2017.
[3] 胡寿松 《自动控制原理(第七版)》 科学出版社, 2019.
[3] 刘进军 《电力电子技术》 机械工业出版社, 2009.
2025.5.6 第一次发布