拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Simulink光伏风电建模实战:从光伏阵列到风机并网全流程

很多做新能源方向的同学在入门光伏、风电并网仿真时最容易卡在“模型怎么搭”这一步。Simulink 里面模块很多不知道选哪个搭出来的系统要么跑不动要么波形不符合物理规律。这篇文章围绕太阳能和风能的 Simulink 建模方法从光伏电池模型、风机气动模型、MPPT 算法到并网控制做一次完整的拆解和实战演示。不论你是做毕业设计还是准备新能源方向的工程仿真都可以参照这套思路搭建自己的模型。1. 太阳能和风能仿真模型的核心概念1.1 为什么用 Simulink 做新能源建模太阳能光伏和风力发电系统的核心问题是外部环境不确定性强导致输出功率波动大。光伏板受光照强度和温度影响风机受风速和桨距角影响。如果直接做实物实验成本高、周期长而且天气条件不可控。仿真模型可以把环境参数作为输入在几秒钟内模拟一整天的发电情况。Simulink 的优势在于模块化建模和物理模型库。你可以用 Simscape Electrical 里的光伏阵列模块也可以用自定义方程搭建数学模型可以用平均模型做控制算法验证也可以用开关级模型做谐波分析。仿真步长、求解器、采样时间都可以单独设置这对多时间尺度的新能源系统非常合适。1.2 太阳能光伏模型的基本结构光伏发电系统的基本结构可以用下面这个流程表达光照强度 温度 - 光伏阵列 - DC/DC 变换器 - MPPT 控制器 - 逆变器 - 电网/负载光伏阵列输出的直流电压和电流会随光照变化MPPT最大功率点跟踪算法负责实时调整工作点让光伏板始终输出当前环境下的最大功率。常见的 MPPT 算法有扰动观察法和电导增量法在 Simulink 中都可以用 Stateflow 或 MATLAB Function 模块实现。1.3 风能模型的基本结构风力发电系统的结构比光伏略复杂主要原因是风机有一个机械旋转部分。简化模型可以写成风速 - 风轮气动模型 - 传动系统 - 发电机 - 变流器 - 电网风机从风中捕获的机械功率可以表示为Pm 0.5 * rho * A * Cp(lambda, beta) * V^3其中rho是空气密度A是风轮扫掠面积V是风速Cp是风能利用系数它是叶尖速比lambda和桨距角beta的函数。这个公式是风机建模的核心后续所有控制策略都是在调整Cp的实现。2. 环境准备与版本说明2.1 MATLAB 与 Simulink 版本本文示例采用 MATLAB R2023b 版本演示但整体建模思路兼容 R2020a 之后的绝大多数版本。如果你使用的是更早的版本部分模块名称可能略有差异例如 Simscape Electrical 在旧版本中叫 SimPowerSystems。版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。2.2 需要安装的工具箱搭建太阳能和风能 Simulink 模型建议安装以下工具箱工具箱名称主要用途MATLAB基础环境负责脚本编写和数据处理Simulink图形化建模与仿真Simscape物理建模基础库Simscape Electrical光伏阵列、风机、电机、变流器等电气模块StateflowMPPT 等逻辑控制算法Control System Toolbox控制器设计与频域分析如果你没有 Simscape Electrical也可以使用 Simulink 基础模块和 MATLAB Function 自己搭建光伏、风机的数学模型后面会讲到这种做法。2.3 项目文件结构建议按下面结构组织模型文件solar_wind_sim/ ├── init_params.m # 参数初始化脚本 ├── solar_pv_model.slx # 光伏模型 ├── wind_turbine_model.slx # 风机模型 ├── hybrid_system.slx # 风光联合系统 ├── plot_results.m # 结果可视化脚本 └── data/ ├── irradiance_data.mat # 光照数据 └── wind_speed_data.mat # 风速数据把参数初始化单独放到一个脚本里是工程建模的基本习惯。这样修改参数时不需要打开模型一层层找模块直接编辑脚本即可。3. Simulink 光伏与风机建模原理详解3.1 光伏阵列的三种建模方式在 Simulink 中建立光伏阵列模型根据精度和用途不同有三种方式。第一种方式使用 Simscape Electrical 的 PV Array 模块。这是最简单的方式。在 Simulink 库浏览器中找到Simscape Electrical Specialized Power Systems Solar里面有PV Array模块。双击模块设置参数并联串联数比如 5 串 10 并。开路电压和短路电流可以在模块内部选择标准条件或自定义。光照和温度输入接口通过 Bus 或 Inport 连接外部信号。这种方式适合并网系统做整体仿真优点是模块内部已经完成了光伏电池的工程数学模型不需要自己推导。第二种方式用 MATLAB Function 实现光伏电池工程模型。工程上常用的光伏电池五参数模型简化式如下I Iph - Io * (exp((V I*Rs) / (n*Vt)) - 1) - (V I*Rs) / Rsh其中Iph是光生电流Io是反向饱和电流Rs是串联电阻Rsh是并联电阻n是理想因子Vt是热电压。在 MATLAB Function 块里写这个方程可以根据外部光照和温度实时计算输出 I-V 曲线。function I pv_current(V, G, T) % 光伏电池工程模型 % G: 光照强度 (W/m^2) % T: 温度 (摄氏度) Isc_ref 8.21; % 标准条件下短路电流 Voc_ref 32.9; % 标准条件下开路电压 k 0.0017; % 温度系数 a 0.0014; % 光照系数 Isc Isc_ref * (G / 1000) * (1 k * (T - 25)); Voc Voc_ref * (1 - 0.004 * (T - 25)) * log(1 a * (G / 1000 - 1) 1); % 简化的 I-V 曲线计算 I Isc * (1 - exp((V - Voc) / (0.05 * Voc))); end这种方式的优点是灵活性高可以随意改写方程适合做算法研究。缺点是计算量稍大仿真速度不如封装好的模块。第三种方式使用 Simscape 物理建模基础元件。用 Simscape 里的 Controlled Voltage Source、Controlled Current Source 和电阻电容搭建等效电路。这种方式最接近光伏电池的物理本质适合做精细的电子电路仿真但建模工作量大一般科研论文中用到较多。3.2 风力机与发电机模型建模风机 Simulink 模型包含三个核心部分风轮气动模型、传动系统模型、发电机模型。风轮气动模型是风机建模的核心。常见做法是封装一个 MATLAB Function输入风速、叶尖速比和桨距角输出机械转矩或机械功率。function [Pm, Tm] wind_turbine_model(Vw, w, beta, rho, R) % 风机气动模型 % Vw: 风速 (m/s) % w: 风轮转速 (rad/s) % beta: 桨距角 (度) % rho: 空气密度 (kg/m^3) % R: 风轮半径 (m) A pi * R^2; % 扫掠面积 lambda w * R / Vw; % 叶尖速比 % Cp 函数来源于 Heier 近似模型 % 当 beta 0 时Cp 的最大值约为 0.48 lambda_i 1 / (1/(lambda 0.08*beta) - 0.035/(beta^3 1)); Cp 0.5176 * (116/lambda_i - 0.4*beta - 5) * exp(-21/lambda_i) 0.0068 * lambda; Pm 0.5 * rho * A * Cp * Vw^3; % 机械功率 Tm Pm / w; % 机械转矩 end这里要注意一个常见错误当风速为 0 或者转速为 0 时lambda会出现除零问题。建议在判断后加入保护逻辑例如最小风速限制。传动系统模型通常用双质量块模型包含风轮惯量、发电机转子惯量、传动轴刚度和阻尼。在 Simulink 中可以用积分模块构建也可以使用 Simscape Driveline 里的齿轮箱模块。发电机模型根据风机类型不同有差异永磁同步发电机PMSG多用于直驱式风机模型中包括永磁体励磁、dq 坐标系下的定子方程。双馈异步发电机DFIG转子侧和网侧都有变流器控制逻辑复杂通常用于 1.5MW 以上的大风机。对于入门学习可以先用永磁同步发电机的简化模型。在 Simulink 中可以直接用 Simscape Electrical 里的Permanent Magnet Synchronous Machine模块参数设置包括定子电阻、电感、磁链常数和极对数。4. 完整实战搭建一套风光联合发电仿真系统下面我们搭建一个完整的光伏风能联合发电仿真系统。系统目标是把光伏和风机发出的直流电经各自变换器后在直流母线上汇聚再通过逆变器并网或者供给交流负载。4.1 创建工程结构打开 MATLAB新建一个文件夹命名为solar_wind_sim。在 MATLAB 当前路径下切换到该文件夹。4.2 创建参数初始化脚本新建脚本文件init_params.m内容如下% init_params.m % 风光联合发电系统参数初始化脚本 %% 光伏系统参数 pv.Nseries 20; % 串联电池数 pv.Nparallel 10; % 并联电池串数 pv.Voc 45.5; % 开路电压 (V) pv.Isc 8.21; % 短路电流 (A) pv.Vmp 37.2; % 最大功率点电压 (V) pv.Imp 7.85; % 最大功率点电流 (A) %% 风机系统参数 wind.R 3.5; % 风轮半径 (m) wind.rho 1.225; % 空气密度 (kg/m^3) wind.beta 0; % 桨距角 (度) wind.rated_speed 12; % 额定风速 (m/s) wind.cutin_speed 3; % 切入风速 (m/s) wind.cutout_speed 25; % 切出风速 (m/s) %% DC 母线参数 dc_bus.Vdc 500; % 直流母线电压 (V) dc_bus.C 0.01; % 直流母线电容 (F) %% 并网逆变器参数 inv.fsw 5000; % 开关频率 (Hz) inv.L 5e-3; % 滤波电感 (H) inv.R 0.1; % 滤波电阻 (Ohm) %% 仿真时间 Tsim 10; % 仿真时长 (s) %% 运行模型前必须执行本脚本 disp(参数初始化完成);在运行 Simulink 模型前先执行init_params脚本确保工作区中存在模型所需的全部变量。如果你的模型把参数写死在模块参数里后面改参数就要手动改模型非常容易漏改。4.3 搭建光伏子系统模型新建一个 Simulink 模型命名solar_pv_model.slx。在模型中拖入以下模块Simscape Electrical Specialized Power Systems Solar PV Array。Simscape Electrical Specialized Power Systems Electrical Sources DC Voltage Source作为负载端电源。Simulink Sources Ramp或Signal Builder模拟光照变化。Simulink Sinks Scope查看波形。连接方式PV Array 的正极连接到可变电阻或 DC/DC 变换器。为了先验证光伏阵列模型本身是正常的我们先用一个可变电阻作为负载。在 PV Array 模块参数中将光照设置为外部信号输入温度设置为固定值 25 度。然后使用 Constant 模块输入温度。搭建完成后看起来大致是这样的逻辑[光照信号] - PV Array 光照输入 [温度常量] - PV Array 温度输入 PV Array 正极 - 可变电阻 - PV Array 负极此时用 Scope 测量 PV Array 输出电压和电流可以看到不同光照下的 I-V 曲线和 P-V 曲线。为了观察最大功率的变化我们再把输出功率通过Product模块计算出来P V * I。光照从 400 变化到 1000 W/m²功率最大值也会随之移动。4.4 实现 MPPT 控制器从光伏阵列输出的功率并不总是最大功率点因为光照和温度在不断变化。我们需要 MPPT 控制器来调整工作点。在 Simulink 中用 Stateflow 实现扰动观察法的基本流程function MPPT_PO(V, I, dt) % 扰动观察法 MPPT P V * I; dP P - P_old; dV V - V_old; if dP 0 if dV 0 D D_old dD; else D D_old - dD; end else if dV 0 D D_old - dD; else D D_old dD; end end % 更新状态 P_old P; V_old V; D_old D; end在实际 Simulink 中可以在 Stateflow 图表中定义输入和输出变量。输入为V和I输出为占空比D输出接 PWM 发生器由 PWM 控制 DC/DC 变换器的开关管。4.5 搭建风机子系统模型新建 Simulink 模型命名wind_turbine_model.slx。风机模型的连接结构如下[风速信号] - 气动模型 - 机械转矩 - 永磁同步发电机 - 整流器 - 直流母线在模型中拖入Simulink User-Defined Functions MATLAB Function写入风机气动方程。Simscape Electrical Specialized Power Systems Machines Permanent Magnet Synchronous Machine作为发电机。Simscape Electrical Specialized Power Systems Power Electronics Universal Bridge将三相交流整流为直流。连接风轮气动模型输出的机械转矩到永磁同步发电机的机械输入端口。对于风速信号可以使用Signal Builder构造一组包含阵风、渐变风和随机风的风速曲线。风机只有达到切入风速后才会开始发电低于切入风速时输出功率为 0。4.6 构建风光联合直流母线系统将光伏子系统和风机子系统输出端连接到一个共同的直流母线电容上形成联合供电。结构如下光伏阵列 - DC/DC 变换器 - 直流母线 风机 - 整流器 - 直流母线 直流母线 - 逆变器 - 三相交流负载/电网在 Simulink 中新建hybrid_system.slx把solar_pv_model.slx和wind_turbine_model.slx作为子系统引用Model Reference或直接复制模块进来。直流母线电压由电容维持光伏和风机分别通过各自的变换器向母线输送功率。实际项目中还需要加入蓄电池储能系统但这里先把基础框架跑通。4.7 运行与结果验证执行初始化脚本再运行模型init_params; sim(hybrid_system.slx);仿真结束后用 Scope 查看光照变化曲线。光伏输出功率波形。风速变化曲线。风机输出功率波形。直流母线电压波形。正常情况下光伏输出功率会跟随光照强度变化光照增强时功率增大风机输出功率会随风速变化风速在切入风速以下时不发电超过额定风速后受桨距角限制功率不再上升。使用下面的脚本把仿真结果可视化% plot_results.m plot(tout, solar_power); hold on; plot(tout, wind_power); legend(光伏功率, 风机功率); xlabel(时间 (s)); ylabel(功率 (W)); title(风光联合发电系统输出功率); grid on;如果光伏功率波形出现剧烈振荡说明 MPPT 步长设置过大调小扰动步长即可如果直流母线电压跌落明显可以增大母线电容值。5. 常见问题与排查思路在 Simulink 中搭建新能源模型时新手最常遇到的问题集中在求解器、代数环、模块参数和版本兼容上。下面整理了一张排查表。问题现象常见原因解决思路仿真报错Simulink cannot solve the algebraic loop模型中存在代数环常见于直接连接 Simscape 电气模块和 Simulink 信号模块在电气信号与 Simulink 信号之间加Voltage Sensor、Current Sensor或PS-Simulink Converter光伏功率波形振荡剧烈MPPT 扰动步长太大控制器切换频繁减小扰动步长增大采样保持时间风机在低风速时不发电启动转矩不足或风机未达到切入风速检查风速是否高于切入风速设置转速保护仿真速度极慢开关频率设置过高或求解器步长太小使用离散求解器增大步长或使用平均模型替代开关级模型直流母线电压崩溃负载功率超过光伏和风机总功率增加储能系统或减小负载版本不兼容的模块报错模型在旧版本创建新版本中模块路径变化使用upgrade advisor升级模型或按新版本路径重新放置模块PV Array模块找不到Simscape Electrical 工具箱未安装在 MATLAB 主页检查License和工具箱安装情况仿真步长的选择在新能源建模中很关键。对于光伏风机的这类功率级仿真建议使用变步长ode23tb或ode15s因为系统中存在开关器件和电磁暂态过程刚性较强。如果只关注控制算法验证可以把逆变器用平均模型代替仿真速度会大幅提升。6. 最佳实践与工程建议6.1 模型分层与封装新能源系统模型通常很长建议采用分层设计第一层系统级只有子系统模块和信号连接线。第二层子系统内部例如光伏子系统、风机子系统、储能子系统。第三层模块内部具体电路和控制算法。在 Simulink 中可以使用Subsystem和Model Reference实现分层。Model Reference 比 Subsystem 可维护性更好模型在设计变更时能够独立编译和复用。6.2 参数统一管理上面已经强调过参数尽量放在初始化脚本或Model Explorer中管理。更进一步可以用Simulink.DataDictionary管理参数这样多人协作开发时不会出现参数覆盖问题。6.3 MPPT 算法选型建议算法优点缺点适用场景扰动观察法实现简单稳态时在最大功率点附近振荡入门学习、小功率光伏系统电导增量法稳态振荡小响应快控制逻辑复杂依赖精确测量光照变化剧烈的场景模糊逻辑 MPPT适应性强参数整定困难算法研究、复杂环境下神经网络 MPPT可实现预测控制需要训练数据科研方向学生在做毕业设计时优先推荐扰动观察法先跑通整个链路再进阶到其他算法。6.4 滤波器与电网连接注意光伏和风机通过逆变器并网时输出包含大量开关谐波。需要在逆变器输出侧加 LC 或 LCL 滤波器。LCL 滤波器体积小、滤波效果好但存在谐振峰问题需要加阻尼电阻或有源阻尼策略。连接电网模块时优先使用 Simscape Electrical 中的Three-Phase Source和Three-Phase V-I Measurement并使用Phase-Locked Loop (PLL)模块锁相。6.5 安全与边界约束在做仿真时要注意功率方向和边界约束。风速超过切出风速时风机必须切出否则会造成机械损坏。光伏阵列输出开路电压会随温度降低而升高设计 DC/DC 变换器时要留电压裕量。实际工程中还要考虑防孤岛保护、过压保护和低电压穿越策略这些在仿真中也要添加相应的保护逻辑模块。7. 总结与学习路线本文从太阳能和风能发电的基本原理出发介绍了在 Simulink 中搭建光伏模型、风机模型以及风光联合发电系统的完整流程。重点内容包括光伏电池工程模型的三种实现方式、风机气动模型的 MATLAB Function 写法、MPPT 算法的实现方法以及系统层级划分的思路。下一步你可以做三件事一是把单机模型扩展成多机系统例如配置多台光伏逆变器并联运行观察环流和谐波特性。二是加入储能模块在 Simulink 中使用 Simscape Battery 构建锂电池模型实现风光储联合调度。三是做硬件在环仿真把控制算法部署到控制器中通过 Simulink Desktop Real-Time 或 Speedgoat 硬件平台验证实际控制效果。如果在搭建模型过程中遇到某个模块参数不知道怎么设置可以先用默认参数跑通功能再逐步替换成真实设备数据。Simulink 建模的关键是“从简到全从开环到闭环从模型到实物”不建议一开始就追求把所有细节都做进去。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门