基于Matlab的变压器铁芯截面优化设计

2023-11-10

基于Matlab的变压器铁芯截面优化设计

前言

  变压器是电力系统中非常重要的设备,在变压器设计过程中,给定的铁心直径条件下,铁心截面积越大、填充率越高,变压器经济指标越好,因此铁心截面优化在变压器优化设计中是一个比较重要的环节。
  为了充分利用圆形绕组内空间,铁心柱截面常采用多级阶梯形结构,如下图所示,截面在圆内是轴向对称的。阶梯形结构的每级都是由许多同种宽度的硅钢片叠起来的,当铁心柱外接圆直径一定时,使铁心柱有效面积最大是本设计的关键。铁心截面最大面积计算是一个典型的非线性整数规划问题,而本文从极值原理出发,推导出各级片宽和叠厚的关系,通过迭代计算求得较优的铁心截面设计方案。
在这里插入图片描述

优化思路

  考虑到对称性,仅考虑四分之一截面。每级硅钢片对应角度为: θ 1 、 θ 2 … … θ n θ_1 、θ_2……θ_n θ1θ2θn
  叠片宽度: B n = r c o s ( θ n ) B_n=rcos(θ_n) Bn=rcos(θn)
  叠片厚度: A n = r [ s i n ( θ n ) − s i n ( θ n − 1 ) ] ( n ≥ 2 ) ; A 1 = r s i n ( θ 1 ) A_n=r[sin(θ_n )-sin(θ_{n-1})](n\geq2) ; A_1=rsin(θ_1 ) An=r[sin(θn)sin(θn1)](n2);A1=rsin(θ1)
  有效面积:
S = ∑ A n B n = r 2 [ s i n ( θ 1 ) c o s ( θ 1 ) + ( s i n ( θ 2 ) − s i n ( θ 1 ) ) c o s ( θ 2 ) + ⋯ ⋯ + ( s i n ( θ n ) − s i n ( θ n − 1 ) ) c o s ( θ n ) ] S=∑A_n B_n=r^2 [sin(θ_1 )cos(θ_1 )+(sin(θ_2 )-sin(θ_1 ))cos(θ_2 )+⋯⋯+(sin(θ_n )-sin(θ_{n-1} ))cos(θ_n )] S=AnBn=r2[sin(θ1)cos(θ1)+(sin(θ2)sin(θ1))cos(θ2)++(sin(θn)sin(θn1))cos(θn)]
  利用极值原理求S最大值,分别对 θ 1 、 θ 2 … … θ n θ_1 、θ_2……θ_n θ1θ2θn求导,令导数为零得:
∂ S ∂ θ 1 = r 2 ( c o s ⁡ ( 2 θ 1 ) − c o s ( ⁡ θ 1 ) c o s ⁡ ( θ 1 ) ) = 0 \frac{∂S}{∂θ_1}=r^2 (cos⁡(2θ_1 )-cos(⁡θ_1) cos⁡(θ_1) )=0 θ1S=r2(cos(2θ1)cos(θ1)cos(θ1))=0
∂ S ∂ θ 2 = r 2 ( c o s ( ⁡ 2 θ 2 ) + s i n ( θ 1 ) s i n ⁡ ( θ 2 ) − c o s ⁡ ( θ 2 ) c o s ⁡ ( θ 3 ) ) = 0 \frac{∂S}{∂θ_2}=r^2 (cos(⁡2θ_2)+sin(θ_1)sin⁡( θ_2)-cos⁡(θ_2) cos⁡(θ_3) )=0 θ2S=r2(cos(2θ2)+sin(θ1)sin(θ2)cos(θ2)cos(θ3))=0

……

∂ S ∂ θ n − 1 = r 2 ( c o s ⁡ ( 2 θ n − 1 ) ⁡ + s i n ⁡ ( θ n − 2 ) s i n ( θ n − 1 ) − c o s ⁡ ( θ n − 1 ) c o s ⁡ ( θ n ) ) = 0 \frac{∂S}{∂θ_{n-1} }=r^2 (cos⁡(2θ_{n-1} )⁡+sin⁡(θ_{n-2})sin(θ_{n-1})-cos⁡(θ_{n-1}) cos⁡(θ_n) )=0 θn1S=r2(cos(2θn1)+sin(θn2)sin(θn1)cos(θn1)cos(θn))=0
  化简得:
c o s ⁡ ( θ 2 ) = c o s ⁡ ( 2 θ 1 ) c o s ⁡ ( θ 1 ) cos⁡(θ_2)=\frac{cos⁡(2θ_1 )}{cos⁡(θ_1)} cos(θ2)=cos(θ1)cos(2θ1)
c o s ⁡ ( θ 3 ) = c o s ⁡ ( 2 θ 2 ) c o s ⁡ ( θ 2 ) + s i n ⁡ ( θ 1 ) t a n ⁡ ( θ 2 ) cos⁡(θ_3)=\frac{cos⁡(2θ_2)}{cos⁡(θ_2)} +sin⁡(θ_1)tan⁡(θ_2) cos(θ3)=cos(θ2)cos(2θ2)+sin(θ1)tan(θ2)

……

c o s ⁡ ( θ n ) = c o s ⁡ ( 2 θ n − 1 ) c o s ⁡ ( θ n − 1 ) + s i n ⁡ ( θ n − 2 ) t a n ⁡ ( θ n − 1 ) cos⁡(θ_n)=\frac{cos⁡(2θ_{n-1})}{cos⁡(θ_{n-1})} +sin⁡(θ_{n-2})tan⁡(θ_{n-1}) cos(θn)=cos(θn1)cos(2θn1)+sin(θn2)tan(θn1)
  从而可得:
A 1 = r 2 − B 1 2 A_1=\sqrt{r^2-B_1^2 } A1=r2B12
B 2 = 2 B 1 2 − r 2 B 1 , A 2 = r 2 − B 2 2 B_2=\frac{2B_1^2-r^2}{B_1} ,A_2=\sqrt{r^2-B_2^2 } B2=B12B12r2,A2=r2B22
B 3 = 2 B 2 2 − r 2 + A 1 A 2 B 2 , A 3 = r 2 − B 3 2 B_3=\frac{2B_2^2-r^2+A_1 A_2}{B_2} ,A_3=\sqrt{r^2-B_3^2 } B3=B22B22r2+A1A2,A3=r2B32

……

B n = 2 B n − 1 2 − r 2 + A n − 2 A n − 1 B n − 1 , A n = r 2 − B n 2 B_n=\frac{2B_{n-1}^2-r^2+A_{n-2} A_{n-1}}{B_{n-1}} ,A_n=\sqrt{r^2-B_n^2 } Bn=Bn12Bn12r2+An2An1,An=r2Bn2
  一般硅钢片级数大于2,则有:
B 2 = 2 B 1 2 − r 2 B 1 > 0 B_2=\frac{2B_1^2-r^2}{B_1} >0 B2=B12B12r2>0
  即:
2 2 r < B 1 < r \frac{\sqrt{2}}{2} r<B_1<r 22 r<B1<r
  由此确定 B 1 B_1 B1的范围为:
2 2 r < B 1 < r \frac{\sqrt{2}}{2} r<B_1<r 22 r<B1<r
  当 B 1 B_1 B1确定后, B 2 B_2 B2 B 3 B_3 B3,…… B n B_n Bn的值都可以确定,所以可以在 2 2 r < B 1 < r \frac{\sqrt{2}}{2} r<B_1<r 22 r<B1<r范围内采用迭代的方法,每次迭代 B 1 B_1 B1的值加1(mm),求出最大面积和对应的片宽和叠厚,流程图如下。
在这里插入图片描述

Matlab程序运行结果:

  以铁芯柱直径125mm,分级数6为例,程序运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果分析

  运行代码,计算铁芯柱直径为D=120mm、D=125mm和D=130mm,分级数为6时的最大填充率和对应的片宽和叠厚,并与《电磁装置设计原理》的表A-8的标准值对比:
在这里插入图片描述

  分析:从计算值与实际值来看,计算值的铁心填充率更大一些,但片宽与叠厚不是整数。在加工中,整数的片宽叠厚更容易加工。并且D=125mm和D=130mm等都采用了片宽120,110,100,70,50等规格的硅钢片,所以采用这些数值在加工中可以先加工片宽,再根据不同直径加工叠厚,膜具大大节省了,加工速度显著提高,有利于标准化。对比二者铁心填充率,理论值只是略大于实际值,但若按此尺寸加工,效率大幅下降,成本提高,且对应每一个直径都要采用一套模具,加工繁琐不利于标准化。从实际工程考虑,牺牲小幅填充率提高加工的效率,便于统一标准是很好的选择。

代码

matlab代码如下:

1.输入铁芯柱直径D和分级数n
fprintf('请输入铁芯柱直径D:');
D=cell2mat(inputdlg('请输入铁芯柱直径D'));
D=str2double(D)
fprintf('请输入分级数n:');
n=cell2mat(inputdlg('请输入分级数n'));
n=str2double(n)
2.计算最优片宽和叠厚
B=zeros(1,n); %片宽
Bmax=B; %叠厚
A=zeros(1,n);
Amax=A;
%迭代求解
B0=sqrt(2)/4*D;
r=D/2
S=0;
Smax=0;
error=0;
for i=0:(r-B0)
    S=0;
    error=0;
    for l=1:n
        A(1,l)=0;
        B(1,l)=0;
    end
    B(1,1)=B0+i;
    A(1,1)=sqrt(r^2-B(1,1)^2);
    S=S+A(1,1)*B(1,1);
    B(1,2)=(2*(B(1,1)^2)-r^2)/B(1,1);
    if B(1,2)>r||B(1,2)<0
        error=1;
    end
    A(1,2)=sqrt(r^2-B(1,2)^2);
    S=S+(A(1,2)-A(1,1))*B(1,2);
    if n>2
        for j=3:n
            B(1,j)=(2*(B(1,j-1)^2)-r^2+A(1,j-2)*A(1,j-1))/B(1,j-1);
            if B(1,j)>r||B(1,j)<0
                error=1;
            end
            A(1,j)=sqrt(r^2-B(1,j)^2);
            S=S+(A(1,j)-A(1,j-1))*B(1,j);
        end
    end
    if S>Smax&&error==0
        Smax=S;
        for k=1:n
            Amax(1,k)=A(1,k);
            Bmax(1,k)=B(1,k);
        end
    end
end
Amax=Amax*2;
Bmax=Bmax*2;
Smax=Smax*4;
3.输出
fprintf('结果:\n');
fprintf('铁芯柱直径为:%dmm\n分级数为:%d',D,n);
fprintf('硅钢片有效面积为:%d mm^2\n铁心截面圆面积为:%d mm^2',Smax,(pi*D^2/4)*100);
fprintf('铁芯填充率为:%d%%',Smax/(pi*D^2/4)*100);
fprintf('      片宽          叠厚');
for i=1:n
    if i>1
        fprintf('第%d级:%d %d\n',i,Bmax(1,i),(Amax(1,i)-Amax(1,i-1))/2);
    else
        fprintf('第%d级:%d %d\n',i,Bmax(1,1),Amax(1,1));
    end
end
4.画铁芯柱示意图
fprintf('铁芯柱示意图如下:\n');
rectangle('Position',[-r,-r,D,D],'Curvature',[1,1]),axis equal;
hold on;
for i=1:n
    if i>=2
        rectangle('Position',[-Bmax(1,i)/2,-Amax(1,i)/2,Bmax(1,i),(Amax(1,i)-Amax(1,i-1))/2]),axis equal;
        rectangle('Position',[-Bmax(1,i)/2,Amax(1,i-1)/2,Bmax(1,i),(Amax(1,i)-Amax(1,i-1))/2]),axis equal;
    else
        rectangle('Position',[-Bmax(1,1)/2,-Amax(1,1)/2,Bmax(1,1),Amax(1,1)]),axis equal;
    end
end
axis off %隐藏坐标轴

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Matlab的变压器铁芯截面优化设计 的相关文章

  • 如何使用Matlab提高PSD的分辨率

    我有音频信号 我用 Matlab 读取该信号 并使用 pwelch 获取其 PSD 这是我正在使用的代码 x Fs audioread audioFile wav x x 1 mono xPSD f pwelch x hamming 512
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • 在 MATLAB 中将数据拟合到 B 样条

    我正在尝试估计矩阵形式的时间序列数据中的缺失值 列代表时间点 即现在 我想将矩阵的每一行拟合到 B 样条曲线 并用它来估计缺失值 我可以使用 MATLAB 将数据拟合到普通样条曲线 但我完全陷入尝试找出如何拟合数据以创建 B 样条曲线的困境
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之

随机推荐

  • 文本自动分类

    使用机器学习方法 做文档的自动分类 套路 1 根据每个文件 生成该文件的一个特征 2 根据特征 选择 分类器 进行文本分类 3 可选 根据 2 步结果 调整参数 特征等 示例 数据 搜狗文本分类语料库 精简版 分类器 朴素贝叶斯 编程语言
  • Windows防火墙配置(允许某个网段和部分IP访问某个端口)

    1 win R 2 gpedit msc 3 计算机配置 Windows设置 安全设置 IP安全策略 在本地计算机 4 创建IP安全策略 5 配置IP筛选器列表 筛选器操作 6 分配 https img2018 cnblogs com bl
  • Transformers使用教程

    模型参数下载 数据集查找 Transformers中文使用说明 Huggingface 超详细介绍 知乎 Hugging Face 的 Transformers 库快速入门 文档说明 Transformers 提供文本相关的预训练模型 Di
  • (一)linux系统安装——从0开始大数据开发实战:电影推荐系统(scala版)

    参考资源 厦大实验室博客http dblab xmu edu cn blog 大数据基础编程 实验和案例教程 林子雨 linux版本 ubuntu ubuntukylin 16 04 desktop amd64 https pan baid
  • OpenCV三维图像的创建和数据遍历

    创建一个如图所示的3 X 4 X 6 三维矩阵 include
  • 学习iot_小熊派IoT开发板系列教程正式发布——免费学习

    小宅按 小熊派开源社区针对小熊派IoT开发板首次规划了小熊派未来的系列教程 从基础到进阶的设计 可适应具有不同基础的开发者 通过该系列教程的学习 开发者能够轻松掌握IoT产品的开发 该系列教程包括单片机基础 LiteOS操作系统基础 通信外
  • [第五空间 2021]pklovecloud

    除了按部就班的根据代码来写序列化
  • 42 访问者模式(Visitor模式)详解

    行为型模式 模板方法 Template Method 模式 策略 Strategy 模式 命令 Command 模式 职责链 Chain of Responsibility 模式 状态 State 模式 观察者 Observer 模式 中介
  • stm32---基本定时器(TIM6,TIM7)

    STM32F1的定时器非常多 由两个基本定时器 TIM6 TIM7 4个通用定时器 TIM2 TIM5 和两个高级定时器 TIM TIM 组成 基本定时器的功能最为简单 类似于51单片机内定时器 通用定时器是在基本定时器的基础上扩展而来 增
  • dump文件分析工具_jvm系列:dump文件深度分析

    JVM dump java内存dump是jvm运行时内存的一份快照 利用它可以分析是否存在内存浪费 可以检查内存管理是否合理 当发生OOM的时候 可以找出问题的原因 那么dump文件的内容是什么样的呢 我们一步一步来 获取JVM dump文
  • super()

    super 关键字 关键字的理解 父类中定义了该方法 但是子类中重写了该方法 使用super来修饰这个方法 在调用的时候调用父类的方法 super关键字的使用 1 super理解为父类 2 super可以用来调用 属性方法和构造器 3 su
  • 【Maven】Maven slf4j-api 出现 NoClassDefFoundError:org/slf4j/event/LoggingEvent

    1 背景 程序偶然报错这个 然后我查找了一下 发现这个包是1 7 7版本的 然后我想知道那个版本加入了这个东东 于是去查了一下 可以发现 在1 7 14版本之前都没有和这个包 1 7 14之后就全都有了 换个版本就好了
  • 【速度收藏】20个常用的Python技巧,太赞啦

    Python的可读性和简单性是其广受欢迎的两大原因 本文介绍20个常用的Python技巧来提高代码的可读性 并能帮助你节省大量时间 下面的技巧将在你的日常编码练习中非常实用 1 字符串反转 使用Python切片反转字符串 Reversing
  • 02-express安装apidoc生成接口文档

    02 express安装apidoc生成接口文档 1 安装 npm i apidoc 2 在项目根目录下创建 apidoc json name news是项目接口文档 version 0 1 0 description 新闻接口文档 tit
  • SpringCloud之Feign传递Json参数(个人使用)

    SpringCloud之Feign传递Json参数 个人使用 Client端 启动类 SpringBootApplication EnableDiscoveryClient EnableFeignClientspublic class Fe
  • 条款11:优先选用删除函数,而非private 未定义函数

    使用场景 比如在自定义类中 为了阻止其他程序员使用 拷贝构造 等函数 我们常用的用法 将该函数定义为private 不去定义只是声明 或者delete 区别 区别一 delete 可以修饰任何函数 private 只能修饰类 类对象 的成员
  • myeclipse java错误提示_myeclipse常见错误集锦 及解决方案

    1 An internal error occurred during Add Deployment Container with path org eclipse jdt launching JRE CONTAINER org eclip
  • vcxsrv连linux黑屏,通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)

    当然网络上已经有很多相关教程了 但是对于我的情况那些方法都不完全正确以至于我不能使用图形化界面 所以如果你查了很多方法也不能使用的话可以看看这篇 这是我的系统参数 开门见山 启动 VcXsrv 在 Windows 上下载 VcXsrv 并安
  • 词向量实践(gensim)

    词向量训练步骤 分词并去停用词 词频过滤 训练 项目完整地址 https github com cyandn practice tree master Word2Vec gensim中Word2Vec参数解释 主要参数介绍如下 senten
  • 基于Matlab的变压器铁芯截面优化设计

    基于Matlab的变压器铁芯截面优化设计 前言 优化思路 Matlab程序运行结果 结果分析 代码 前言 变压器是电力系统中非常重要的设备 在变压器设计过程中 给定的铁心直径条件下 铁心截面积越大 填充率越高 变压器经济指标越好 因此铁心截