【问题标题】:Is it possible to replace a 3phase inverter in matlab by a function是否可以用函数替换matlab中的三相逆变器
【发布时间】:2017-07-20 03:55:41
【问题描述】:
我正在 Opal-RT 模拟器 中进行实时仿真,使用 RT-LAB 和 MATLAB/Simulink 进行 有源电力滤波器。
我想实时运行模拟,但正在发生溢出,因为模型显然太大,所以我有优化,其中一个消耗大量计算时间的模块是三相逆变器(基于 IGBT),一位朋友告诉我,可以用一个简单的矩阵(我不确定 S 函数或传递函数)替换块,他说这将减少模型的计算时间,并帮助我实时运行它。
- 这可能吗?
- Matlab/Simulink 中是否存在这样的哲学?
- 如果是,你们能推荐一些可以帮助我的文档吗?
谢谢。
【问题讨论】:
标签:
matlab
optimization
real-time
simulink
【解决方案1】:
理论
你的朋友想说:将三相逆变器转换为s传递函数模型。现在这里要理解的要点是
-
System Modeling 是工程而不是 MATLAB,您还可以将任何系统(如 三相逆变器)建模为 状态空间、s-传递函数等模型>、多项式拟合、神经网络等
- 要通过模型拟合或近似系统,请注意以下几点
- 如果系统是非线性的、不连续的或数据点是分散的,像状态空间这样的正常模型将无法工作。 明智地选择您的模型
- 您必须拥有完整的输入和输出范围才能为您的 IGBT 生成模型。
- 对于模拟真实模拟系统的建模,离散步长需要变化很小,因此您需要平衡精度和模型计算时间(如果它是循环的一部分)
动作
如果你知道逆变器的传递函数方程,然后尝试拟合并找到系数。否则结果将不准确。神经拟合可提供最佳结果,但超出范围。
所以优化模型如下:
尽可能尝试使用内置 Fcn 块而不是 S-Function。以 MATLAB 文件形式编写的 S-Function,速度较慢。通过将 MATLAB 文件转换为 MEX 文件,可以大大提高性能。此外,尽可能使用内置模块对 S-Function 进行建模。
增加步长,如果模型精度允许,则无需以非常小的步长进行计算。我们可以在步骤 1e-20 或 1e-2 设置 simulink 计算。但是是的,步长为 1e-2 会快得多。通过实验找到步长
调整模型容差,假设系统输出在 1e-2 以下微不足道,那么我们不应该选择计算容差为 1e-3(为什么要计算更多?)。寻找模型公差调整
减少时间尺度,为什么要一次计算一个小时。这样系统将尝试保留更多内存,并且在磁盘缓存的情况下可能会变慢。计算较小的周期可以说是几分钟。
尝试为您的模型改用一个快速但相对简单的求解器,并且可以提供更快的速度。 Solver List
从模拟中移除图形元素,在模拟后绘制结果,因为图形更新很慢。