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

Simulink光伏阵列故障仿真:从单二极管模型到IV/PV曲线分析

光伏阵列故障仿真估计很多做光伏发电系统研究的人都在这一块折腾过。无论是做MPPT算法验证、分布式光伏并网分析还是搞电站智能运维的故障诊断都需要一个能真实反映光伏阵列运行状态的仿真平台。但大家在Simulink里搭模型时普遍会遇到两个痛点一是不知道故障怎么“设置”进去二是不知道故障发生后输出曲线长什么样才算对。这个项目就是干这个事的。用Simulink建立光伏阵列的仿真模型把最常见的几种故障——局部阴影遮挡、组件开路、短路、老化失配——通过参数调整和开关切换的方式“植入”到模型中仿真得到故障状态下的I-V特性曲线和P-V特性曲线为后续的故障诊断算法、MPPT优化策略提供一个可以被反复验证和复现的实验环境。我最早搭这套模型的时候走了一堆弯路。一开始用Simscape Electrical自带的PV Array模型简单是简单但故障注入特别别扭后来干脆自己写单二极管五参数方程用Matlab Function模块做核心求解才算是真正把模型的“手势”给掌握住。这篇就把这套模型的搭建思路、故障注入方法、结果分析技巧全部理顺从底层原理到Simulink实操一次性讲透。1. 项目思路拆解为什么要给光伏阵列做故障仿真1.1 光伏阵列的“故障”到底指什么光伏阵列在真实电站里会遇到的问题和我们在课本上看到的“理想光伏电池”完全是两回事。真实运行中故障来源大体可以归成四类第一类是阴影遮挡。这最常见云层移动、建筑物遮挡、树叶鸟粪、前后排组件相互遮挡都会造成。它的特征不是整个阵列光照均匀下降而是阵列中不同组件接收到不同的光照强度。这就导致阵列的P-V曲线出现多个峰值传统MPPT算法如果只有一个峰值跟踪逻辑就会跑到局部最优值上去直接损失发电量。第二类是开路故障。连接器松动、线缆断裂、熔断器熔断都会引起组件或组串的开路。特征是阵列输出电流突然下降甚至整串失电。第三类是短路故障。旁路二极管击穿、接线盒进水、组件内部漏电都会造成组件局部短路。特征是输出电压被拉低局部组件长时间处于异常状态容易引发热斑。第四类是老化失配。这是最容易忽略的。光伏组件用个五六年EVA胶膜变黄、电池片隐裂、焊带氧化都会让组件参数偏离出厂值。老化的本质是串联电阻增加、并联电阻减小、光生电流降低表现出来就是同型号组件之间参数不一致失配损耗增加。这些故障如果放到真实电站里去研究成本太高条件也不可控。光伏阵列故障仿真模型就是要解决这个问题——把各种故障变成可复现、可调节、可观测的实验对象。1.2 仿真模型在工程里的三个用途搞清楚这个模型能干什么比急着搭模型更重要。我自己的使用体会是它的用处主要在三块第一块是算法验证。做MPPT算法研究的需要多峰值寻优场景来验证粒子群、灰狼、布谷鸟等群智能算法的全局搜索能力。用故障仿真模型可以反复生成不同阴影遮挡条件下的多峰P-V曲线用来测试算法收敛速度和寻优精度真实电站里你不可能为了验证算法去把一个电站五次三番地遮挡。第二块是故障诊断方法研究。目前比较主流的故障诊断思路是IV曲线扫描法和神经网络法。IV扫描法需要在不同工况下获得阵列的I-V特性数据神经网络法需要大量故障样本做训练集。这两种方法的数据来源靠实测成本太高靠仿真模型则完全可以支撑。我这个模型里通过参数化开关可以批量生成数百组不同故障类型、不同故障程度、不同光照温度组合的样本数据。第三块是教学演示和方案预研。给学生讲光伏发电原理讲热斑效应的形成原因用仿真曲线远比口述直观。做电站设计方案的时候也可以用模型评估阴影遮挡对发电量的影响提前核算不同支架方案的失配损耗。1.3 模型方案选型物理模型 vs 查表模型 vs 数学模型在Simulink里建光伏阵列模型大致有三条路可以走我逐一分析过它们的优劣第一条是用Simscape Electrical库里的PV Array模块。这个模块基于物理模型内部集成了光伏电池的电气方程直接填参数就能用还可以嵌入更大规模的电力电子系统做并网仿真。它的优点是搭建速度快、不需要自己写方程、仿真精度高做逆变器并网、MPPT控制这类系统级仿真时非常合适。但它也有明显的缺点故障注入不灵活。你想模拟某一块组件被遮挡这个模块虽然可以设置光照和温度输入但当你想单独给阵列中某一个子串设置不同的故障条件时操作就变得很别扭通常需要把大阵列拆成多个小阵列再并行连接模型结构变得非常臃肿。第二条是查表法。先把不同光照、不同温度、不同故障状态下的I-V曲线数据提前算好存成表格或者Excel文件仿真时用Lookup Table模块查表输出。好处是仿真速度极快适合大批量数据生成缺点也很致命只能复现预先算好的场景不能做连续变化、动态调节的仿真灵活性差得太多。第三条是数学模型法就是自己用Matlab Function模块编写基于光伏电池物理方程的求解程序。模型的核心是单二极管五参数等效电路通过直接修改方程参数如串联电阻、并联电阻、光生电流来模拟不同故障。这个方案搭建时需要自己处理参数提取和非线性方程求解代码量稍大但换来的自由度是前两种方案没法比的——想模拟什么故障、想改到什么程度全在代码里动态调整。我这几年做光伏系统仿真最终稳定下来的方案就是这一条。也是本项目的核心方案。2. 搭建光伏阵列的Simulink仿真基座2.1 基于单二极管五参数方程的数学模型先把这个数学模型讲透。光伏电池最经典的等效电路是一个光生电流源并联一个二极管再加上串联电阻和并联电阻组成的单二极管模型。对应的I-V特性方程如下I Iph - Io * (exp((V I * Rs) / (n * Vt)) - 1) - (V I * Rs) / Rsh里面五个参数是核心我逐个说明Iph是光生电流正比于光照强度也受温度影响。光照1000 W/m²时Iph约等于短路电流Isc。温度升高时Iph略有增加。Iph的计算基准值是标准测试条件STC1000 W/m²25°C下的短路电流。Io是反向饱和电流决定二极管的正向导通特性量级通常在10的负10次方安培左右对开路电压影响显著。它的计算与开路电压Voc、温度密切相关。Rs是串联电阻反映半导体体电阻、电极接触电阻、焊带电阻的综合效果。Rs增大会让I-V曲线填充因子明显下降最大功率点向左下角偏移这正是组件老化的典型特征。Rsh是并联电阻反映电池片边缘漏电和内部缺陷通常数值从几百欧到几千欧不等。Rsh减小意味着漏电增大曲线在短路电流附近会变得平缓、倾斜这也是判断组件是否受潮或微裂的重要依据。n是二极管理想因子取值范围通常在1到2之间反映PN结的实际特性偏离理想二极管模型的程度。Vt k * T / q是热电压k是玻尔兹曼常数1.38e-23 J/Kq是电子电荷量1.602e-19 CT是组件PN结的绝对温度单位K。常温下Vt约等于0.0257 V。注意这里要用开尔文温度很多人容易在温度换算上出错直接拿摄氏温度代入计算导致开路电压完全不对。单块组件通常有三组关键参数开路电压Voc比如某260W组件约37.5V、短路电流Isc约9A、最大功率点电压Vmp和电流Imp。搭建阵列模型时一般取一个阵列包含N串、每串Ns块组件的结构。如果有10串并联每串18块组件总组件数就是180块。2.2 模型核心在Simulink里用Matlab Function实现方程求解在Simulink里实现这个方程我有两个推荐方案其中一个就是利用简单的simulink模块组网另一个是matlab function。这里着重说matlab function的方案。它可以用一个模块完成整个阵列的电压电流计算。方程本身是一个隐式方程电流I同时出现在等式两侧不能直接写出I f(V)的形式需要用迭代法求解。我在Matlab Function里的实现思路是输入当前端电压V、光照G、温度T输出对应的电流I。内部用牛顿-拉夫逊迭代法求解隐式方程。关键的代码逻辑大致如下function I array_current(V, G, T) % 组件参数以某260W组件为例 Ns 18; % 每串组件数 Np 10; % 并联串数 Voc 37.5; Isc 9.0; Vmp 30.0; Imp 8.7; % 单块组件的五参数 % ... 参数提取过程略可参考常见参数提取算法 Iph (Isc Ki * (T - 298.15)) * G / 1000; % Ki 是短路电流温度系数 I0 ... % 反向饱和电流基于Voc和温度计算 % 单块组件的I-V方程乘以串并联数量扩展 % 对整串V_str Ns * VI_str I % 对方阵V_array Ns * VI_array Np * I_str I 0; for k 1:10 % 迭代步数 f Iph - I0 * (exp((V_str/Ns I*Rs/Np) / (n*Vt)) - 1) - ... (V_str/Ns I*Rs/Np) / Rsh - I; fp -I0 * (Rs/Np / (n*Vt)) * exp((V_str/Ns I*Rs/Np) / (n*Vt)) - ... Rs/Np / Rsh - 1; I I - f / fp; end end迭代求出的电流I是阵列总输出电流。代码里把组件串并联结构映射到方程参数上整串电压累加整串电流流通并联时电流累加电压保持一致。理解这个映射关系是后面做故障注入的基础——想模拟某一串开路直接改这一串的电流通路参数就行。2.3 采用Simscape Electrical的PV Array模块做交叉验证虽然我自己主力用的是Matlab Function方案但有一个习惯保留了下来用Simscape Electrical的PV Array模块对Matlab Function的计算结果做交叉验证。原因很简单。自己写的数学方程参数是否正确、迭代是否收敛、扩展关系是否准确单凭“感觉自己写对了”是靠不住的。Simscape的PV Array模块是软件官方封装好的物理模型参数配置界面里直接填组件参数即可计算可靠性高。我通常会在同一组参数下让两种模型同时跑一遍把输出的I-V曲线叠在一起对比。曲线重合度越高说明自建模型越可信。Simscape PV Array模块的关键设置包括组件参数Voc、Isc、Vmp等直接填厂家数据、阵列结构串联组件数、并联串数、环境条件输入光照和温度可以用常量或者信号源输入。这个模块还自带旁路二极管配置选项模拟部分遮挡时可以让系统自动决定二极管是否导通这点比自建模型在某些场景下更方便。两种方案各用各的长处Simscape方案用在系统级别联仿真上比如后端接Boost电路、逆变器自建数学模型方案用在需要灵活注入故障、批量生成数据的场合。2.4 两种方案对比与适用场景这里把两个方案的特点整理在一个表里方便做选型参考评估维度MatLab Function数学模型Simscape PV Array搭建复杂度中等需要写求解代码低参数界面化配置故障注入灵活度高任意参数动态修改中需拆分子阵列组合仿真速度较快整数迭代计算相对较慢尤其是大阵列系统级联方便性一般需要自己封装接口好自带电气接口模型数据批量生成非常方便可做参数扫描较麻烦需反复修改参数模型可读性强逻辑显式可见弱内部细节黑盒封装我的实际经验是如果只是做简单的MPPT仿真验证Simscape方案够用。但如果项目目标是做故障诊断数据集扩充、故障特征量化分析或者要在不同故障模式下反复切换测试那就别犹豫直接上Matlab Function方案。后面内容全部围绕Matlab Function方案展开。3. 常见故障怎么“装”进模型里3.1 局部阴影遮挡多峰曲线的制造工厂局部阴影是光伏阵列最常出现的非均匀工况。严格来说它不算系统故障但它的电气表现非常恶劣阵列中不同组件因光照不同而产生失配未遮挡部分产生的电流会灌入被遮挡组件造成其发热并可能形成热斑。在Simulink模型里模拟局部阴影的思路是把整个阵列分成不同的光照区域每个区域对应一组光照值。举例来说一个3串并联的阵列让第一串光照1000 W/m²第二串光照800 W/m²第三串光照500 W/m²。这时候阵列的输出电流是由电压决定的电压较低时三串都导通电压升高到一定程度光照弱的组串被反向偏置旁路二极管导通该串被“短路掉”输出电流曲线下降一个台阶。实现这个方法的核心是把Matlab Function里的输入G从单值改成数组function I array_current_with_shadow(V, G_array, T) Ns 18; Np 3; % G_array: [G1, G2, G3] 表示三串各自的光照强度 I_total 0; for k 1:Np G_k G_array(k); % 用单串模型计算该串的输出电流I_k I_k string_current(V, G_k, T); % 对未遮挡串直接累加对遮挡串若电压过高旁路二极管导通 if V (本串开路电压) I_k 0; % 该串被旁路电流清零 end I_total I_total I_k; end end更贴近真实物理的仿真会引入旁路二极管的导通判定这里简化处理当某串端电压为零时旁路二极管导通该串不输出功率但也不阻断电流通路。实际上细究起来还要考虑二极管正向压降一般是0.3到0.7V但我实测下来这个压降对整体曲线趋势影响不大简化掉不会影响故障识别。关键参数设计思路光照差越大P-V曲线多峰现象越明显。比如1000和200相差很大低光强那串完全被旁路曲线只剩一个主峰。光照越均匀比如900和800曲线虽然看似平坦但也可能隐藏最大功率点偏移问题。研究MPPT算法时建议覆盖这几类典型工况不要只盯一个极端场景。被遮挡串的组件数量多少决定阶梯下落的位置。3串每串10块组件被完全遮挡和每串50块中被遮挡10块曲线形态完全不同。建模时把“遮挡比例”作为一个参数提取出来方便批量扫描。3.2 组件开路故障断开一个节点看整串电流清零组件开路在真实电站里是发生率最高的故障之一连接器没插紧、MC4端子接触不良、熔丝熔断都会引起。开路故障对阵列的影响范围视位置而定如果是某一串中的一块组件开路整串电流通路被切断这一串输出电流变为零阵列总电流等于其余各串电流之和。在Simulink的数学模型里实现开路非常直接把故障串的电流贡献直接设为0。我推荐用一个开关参数Fault_open作为控制信号当Fault_open 1时该串的电流输出强制清零if open_flag(k) 1 I_k 0; end这个做法的物理意义是开路后该串虽然两端电压仍然存在被其他正常串反向偏置但内部没有电流导通路径。如果想要更细致的模型可以串联一个很大的电阻比如1e6欧代替完全断开这样更符合开路不完全、仍存在电弧通道的实际情况。仿真时要注意开路后阵列的最大功率会显著下降但开路电压变化不大这个特征在故障诊断中很关键。多串并联架构下某一串开路会导致其他串的电流重新分配总功率下降量不等于故障串的额定功率。例如10串并联一串开路其余各串仍按各自最大功率点运行总功率减少约10%但I-V曲线形状基本不变。这也是并联结构的容错特性。3.3 组件短路与热斑旁路二极管被击穿后的表现组件内部短路和热斑在建模中经常放在一起考虑因为它们都对应着一个相似的电气状态电池片局部被短路掉组件输出电压降低。模拟类型一完全短路将故障组件两端的电压降设为0或一个很小的内阻表现在模型里就是串组件数量减少。比如原来18块组件一串其中1块完全短路等效于17块组件正常工作。这种情况会让开路电压下降约1/18输出功率相应减少。模拟类型二旁路二极管击穿这是热斑保护失效的典型表现旁路二极管反并联在组件两端正常时它不导通当组件被遮挡导致反偏时二级管导通保护组件。如果这个二极管被击穿短路该组件无论是否被遮挡都被永远旁路掉不再产生任何电能。家长模型里这等效于一串中的某块组件从串式结构中“移出”。我在模型里用一个short_ratio参数来调节“短路严重程度”。取值0表示组件正常取值1表示组件完全短路取值0.5表示半短路等效为组件性能减半。通过连续调节这个参数可以模拟出不同劣化程度的短路状态为神经网络训练提供连续梯度样本。热斑的建模要从温度入手。真实热斑是局部温度超过100°C直接采用高精度热模型比较复杂。可行的简化做法是将被遮挡且持续承受反向电流的组件其局部温度参数人为抬高同时改变该组件的Iph和Rs值。这样虽然不精确反映温度分布但能宏观展示热斑状态下阵列I-V曲线的整体偏移趋势。3.4 老化失配老化和新组件的“性格差异”同型号组件用了几年后老化组件的Iph降低Rs升高Rsh降低。把这些参数偏差引入模型就能仿真老化失配场景。具体参数调整策略我在模型中常用的方案老化程度Iph变化Rs变化Rsh变化n变化轻度老化(3-5年)降低1%~2%增加5%降低10%不变中度老化(8-10年)降低3%~5%增加10%~15%降低20%~30%略有增加重度老化(15年以上)降低8%~10%增加30%~40%降低50%以上明显增加在Simulink中实现老化失配有两种方法。第一种是在Matlab Function里直接给不同串设置不同五参数值每串用一组老化系数去修正基础参数。第二种是用数组参数作为模块输入通过Signal Editor或者From Workspace把老化参数向量导入模型。我的实际效率技巧是建立一个结构体数组每个串对应一个结构体里面存放该串的Ipv、Rs、Rsh、n等参数值。这样做的好处是批量生成故障样本时只需要循环修改结构体数组然后调用sim函数跑仿真不需要手动修改模型循环几千次都不怕。这里提醒一个容易忽视的细节老化失配不一定表现出“曲线变平”这种明显特征它最大的问题是让阵列的最大功率点电压偏移。如果多个老化程度不一的组件混在一起不同串的最大功率点电压不一致阵列整体输出功率就会低于各串最优功率之和。这部分损失失配损耗在仿真中会以P-V曲线多峰的形式体现出来。4. 仿真结果怎么读特征曲线是诊断的“指纹”4.1 先建立一个“正常基准”才分得清故障的异常光伏阵列故障仿真的一个重要前提是先把正常工况曲线做精确建立基准线。我建议第一步先建一个完全健康、光照均匀、温度恒定的阵列模型扫描其I-V和P-V曲线把关键性能指标记录下来。仿真时扫描电压从0到阵列开路电压每个电压点记录对应的电流和功率。用Simulink实现电压扫描我习惯用一个Ramp信号做电压源输出接入Matlab Function模块再用To Workspace模块记录电压、电流、功率三个变量。仿真停止后在MATLAB工作区里用plot函数画曲线。具体的仿真配置仿真时间设为3秒Ramp斜率设为10V/s。0到阵列开路电压比如675V扫描采样间隔设为0.001秒采集约3000个数据点足够把曲线细节绘出来。我遇到过设置仿真步长过大导致曲线毛刺明显的坑建议求解器用固定步长或较慢的变步长ode45配合最大步长不大于0.001秒曲线就非常平滑了。正常状态下I-V曲线是一条近似矩形的曲线电压较低时电流基本恒定在短路电流附近接近开路电压时电流快速下降为零。P-V曲线则是一个单峰抛物面峰值对应最大功率点。这个基准值的意义在于所有故障诊断、算法验证都建立在对正常曲线的偏离量分析上。4.2 各类故障的特征曲线速查表这是整套模型最有实用价值的部分。我整理了不同故障类型下I-V曲线和P-V曲线的特征差异放一张速查表出来故障类型I-V曲线特征P-V曲线特征最大功率点行为均匀光照下降曲线整体按比例缩小单峰峰值降低移动不明显局部阴影遮挡出现阶梯状下降台阶出现多峰全局峰值偏移明显组件开路电流整体下降形状保持单峰峰高降低电压变化小组件短路短路电流下降填充因子下降单峰峰值降低且有左移趋势电压降低老化失配曲线轻度畸变拐角变圆峰值附近略微凹陷电压偏移明显旁路二极管击穿开路电压降低单峰峰值明显下降电压降低约1/Ns获取这些特征现象时最好录制一段指定故障程度从0到100%连续变化的动画观察曲线形态变化的连续性。我经常用MATLAB的getframe函数抓取不同参数下的曲线拼成动态图观察MPPT路径变化效果直观也好排查模型结构是否出错。4.3 从曲线特征反推故障类型模型和诊断算法的对接环节顺着仿真结果往产品应用的方向走这套模型的最终目的多半是给故障诊断算法提供训练数据。用仿真模型生成大量带标签的故障样本用这些样本训练一个分类器这是非常成熟的研究路径。我自己的实操流程是写一个for循环遍历不同类型、不同严重程度的故障参数组合每次修改参数后调用sim函数执行仿真然后提取I-V曲线的关键特征短路电流Isc、开路电压Voc、最大功率Pmp、填充因子FF、曲线曲率等存入表格。批量生成1000组样本耗时大约10分钟。手动搭建这个流程比一个个手动修改模型参数、手动记录数据快两个数量级。如果有人想把这个流程做成端到端的自动诊断方案可以再接一步用一个分类器模型输入特征向量输出故障类型标签。仿真样本的多样性取决于参数扫描的覆盖范围我建议每个故障类型至少覆盖10种不同严重程度每种至少3种不同光照和温度组合这样分类器才能学到工况变化和故障特征之间的解耦关系。5. 常见问题与排查技巧实录5.1 代数环问题Matlab Function模块的隐式反馈陷阱把Matlab Function模块搭建的电流源接入电路仿真时最常碰见的问题就是代数环。原因是模块的输出电流取决于端电压而端电压又取决于外部电路对电流的响应。Simulink看到这种互相依赖的信号环会报出代数环警告求解速度骤减严重时仿真直接发散。解决办法有三种第一种是加单位延迟模块。在反馈回路里插入一个Unit Delay让当前仿真步的电压用上一仿真步的电流计算结果来求解。这个办法简单有效但会引入一步延迟在分析采样时间敏感的MPPT控制时要谨慎使用。第二种是使用Memory模块。类似Unit Delay的作用但不会改变信号采样率在连续系统的代数环消除中更推荐。第三种是修改求解器配置。在模型配置参数里把“Algebraic Loop”求解方式设置为“robust”或者手动指定每步迭代算法。这通常能解决大多数逻辑上的代数环但会增加仿真时间。我的实践经验是建模阶段就用Memory模块切断代数环等模型功能稳定后再根据具体场景决定是否移除。如果仿真结果和理论值有细微的相位偏离多半是Memory模块引入的延迟所致这一点要心里有数。5.2 初始化不收敛迭代求解的“起跑”要选对单二极管五参数方程用牛顿-拉夫逊法求解时初始值的选取非常关键。迭代初值如果差得太远迭代序列可能发散导致仿真结果全是NaN。我采用的初始值策略是电流迭代初值取短路电流的一半。对于组串较低电压下运行的情况方程的解非常接近Iph初值设个Isc/2通常都能收敛。极端场景下比如电压接近开路电压时电流对电压非常敏感初值需要更靠近0并且迭代步数要适当增加。如果迭代不收敛可以先在MATLAB命令行里单独测试函数给定一组固定电压和照度调用相同的迭代函数看能否得到合理电流值。如果单独测试正常但Simulink仿真时报错那就是仿真步长或信号类型的问题和求解算法无关。这种分步排查法能快速定位问题层级减少无谓的折腾。5.3 仿真速度为何越来越慢步长、采样和数据记录的三重陷阱模型跑起来了曲线也对但仿真速度越来越慢这也是很多人会遇到的事。我总结下来原因大概率出在下面三个地方第一变步长求解器检测到信号快速变化。光照突变、故障开关切换、电压阶跃都会让求解器为了满足误差容限而缩小步长。解决办法是在故障切换点前后让信号平滑过渡或者对阶跃信号添加斜率限制器。第二To Workspace模块记录数据的频率设置过高。仿真10秒采样时间设为0.0001秒会记录10万个数据点每个点都会占用内存。如果仿真时长较长建议适当增大采样间隔或者在仿真脚本里用datastore对象分批存储数据。第三代数环导致的每步迭代。这个问题和5.1是同源的。代数环会让每个仿真步长内部做多次迭代迭代计算量叠加起来非常可观。解决代数环不仅是为了数值稳定性也是为了仿真速度。我的习惯做法是先用宽裕的采样间隔如0.01秒跑通整个模型逻辑确认所有故障场景都能正常仿真后再针对需要精细分析的工况细化解算。5.4 模型复用的两个技巧参数化脚本和Simulink Test迭代模型搭建完成后日常使用频率最高的操作是修改故障类型和故障程度。如果每次修改都去打开模型界面手动调整效率极低还容易出错。我强烈建议把模型参数全部参数化用MATLAB脚本驱动仿真过程。方法是在Matlab Function模块中用掩码Mask封装参数并通过模型工作区Model Workspace或基工作区Base Workspace映射变量名。初始化脚本统一设置所有参数包括组件参数、阵列结构、故障类型和故障程度。然后调用sim(模型名)执行仿真仿真结果通过To Workspace输出到工作区。批量实验时用for循环修改初始化脚本中的参数组每个循环执行一次仿真并把结果保存到数据表格中。我用这套流程生成一个包含500组故障数据的数据库全程只需要几分钟而且不需要手动干预。如果想做得更规范、可追溯可以借助Simulink Test模块创建测试用例每个故障场景是一个独立测试用例设置好输入参数和预期输出范围一键批量执行。这个方法在项目交付、报告审阅阶段特别有用别人可以一键复现所有实验场景不用来问你参数是从哪改的。写在最后的一点实在话光伏阵列故障仿真模型这件事做起来不复杂但如果只是照着公式把方程敲进Simulink很有可能卡在细节上出不来自。个人实际经验中比较有价值的几条一是数学模型的参数提取一定要和标准测试条件下组件出厂参数对齐。我一开始图省事用了网上随便找的参数结果仿真出来的最大功率和实际组件差了几十瓦后续所有分析都建立在错误基调上。二是故障注入的开关逻辑尽量用参数向量一次性控制别让模型结构变得太复杂复杂度上去了排查问题就变成了一件痛苦的事。三是每次修改模型后都要重新做一次正常工况对照测试确认基准线没有漂移再谈故障分析。这套模型后续可以扩展的空间也很大。想往深了做可以把自动发电控制、储能系统接入后端想往细了做可以给I-V扫描加一个电压采样保持电路模拟实际便携式IV测试仪的工作逻辑。我自己的下一个方向是把该模型和Python的机器学习库做联合仿真把Simulink生成的故障样本直接导给TensorFlow做故障分类到时候再单独写一篇详细的操作记录。
分享:

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

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