武神裝攻 发表于 2010-6-3 13:50:21

求助变压器(TR 三角-Yg)注入电流支路模型实现-程式用途可用于九种TR求解

本帖最后由 武神裝攻 于 2010-6-8 16:28 编辑

跪求帮助实现程序
想到可以大幅简化与加快潮流计算变压器算式方法
且Yg-Yg又可再度简化直接求I
以下题目是
线
Yg-Yg
三角-Yg
线

小弟的EXCEL表格1内容:

支路号起始点终止点 支路类型编号1011212232334241
小弟的EXCEL表格2内容:
10011002100320012002200330013002300340014003

小弟的EXCEL表格3内容:
編號RXα1β1α2β2α3β321011324252312131018191
开始:
设:
A=0
B=EXCEL表格3内容 编号=2 的R+j*X   =10+j*11   ( j为虚数)
C=EXCEL表格3内容 编号=3 的R+j*X   =12+j*13   ( j为虚数)
一开始
Itr = zeros(size(EXCEL_2);
V1 = [1;2;3;4;5;6;7;8;9;10;11]    PS Itr 与 V 与 EXCEL表格2内容 矩阵大小一样

(1)看表1支路号 = 1 支路类型编号 = 1找到 终止点 = 1 起始点 = 0
看表2内容与相终止同千位数为1的有1001,1002,1003共3个
因为支路类型编号 =1       支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
I =
      0                        0
      0]                     0]

(2)看表1支路号 = 2 支路类型编号 = 2找到 终止点 = 2 起始点 = 1
看表2内容与相终止同千位数为2的有2001,2002,2003共3个
因为支路类型编号 =2       支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
I = [ ((B*((1./β1^2)-(1./(α1β1)))*V1                   =[(((10+j*11)*((1./2^2)-(1./(3*2)))*4
       ((B*((1./β2^2)-(1./(α2β2)))*V1                        (((10+j*11)*((1./2^2)-(1./(4*2)))*5
         ((B*((1./β3^2)-(1./(α3β3)))*V1 ]                      (((10+j*11)*((1./2^2)-(1./(5*2)))*6 ]
Itr = [   0
            0
            0
          (((10+j*11)*((1./2^2)-(1./(3*2)))*4
          (((10+j*11)*((1./2^2)-(1./(4*2)))*5
          (((10+j*11)*((1./2^2)-(1./(5*2)))*6 ]
因为起始点 = 1   不是0   所以刚刚终止点 = 1 的矩阵要多加
I = [ ((B*((1./α1^2)-(1./(α1β1)))*V1                   =[(((10+j*11)*((1./3^2)-(1./(3*2)))*1
       ((B*((1./α2^2)-(1./(α2β2)))*V1                        (((10+j*11)*((1./4^2)-(1./(4*2)))*2
         ((B*((1./α3^2)-(1./(α3β3)))*V1 ]                      (((10+j*11)*((1./5^2)-(1./(5*2)))*3 ]
Itr = [(((10+j*11)*((1./3^2)-(1./(3*2)))*1
         (((10+j*11)*((1./4^2)-(1./(4*2)))*2
         (((10+j*11)*((1./5^2)-(1./(5*2)))*3
          (((10+j*11)*((1./2^2)-(1./(3*2)))*4
          (((10+j*11)*((1./2^2)-(1./(4*2)))*5
          (((10+j*11)*((1./2^2)-(1./(5*2)))*6 ]

(3)看表1支路号 = 3 支路类型编号 = 3找到 终止点 = 3 起始点 = 2
看表2内容与相终止同千位数为3的有3001,3002,3003共3个
因为支路类型编号 =3       支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
PS:类型3公式跟类型2不同所以目前是想到用switch 跟case 语法来写
I = [ ((C./β1^2)-(C./(sqrt(3)*α2*β1)))*V1                   =[(((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*8*1))*7
       ((C./β2^2)-(C./(sqrt(3)*α3*β2)))*V1                         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*9*1))*8
         ((C./β3^2)-(C./(sqrt(3)*α1*β3)))*V1                         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*10*1))*9 ]
Itr = [(((10+j*11)*((1./3^2)-(1./(3*2)))*1
         (((10+j*11)*((1./4^2)-(1./(4*2)))*2
         (((10+j*11)*((1./5^2)-(1./(5*2)))*3
          (((10+j*11)*((1./2^2)-(1./(3*2)))*4
          (((10+j*11)*((1./2^2)-(1./(4*2)))*5
          (((10+j*11)*((1./2^2)-(1./(5*2)))*6
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*8*1))*7
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*9*1))*8
         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*10*1))*9]
因为起始点 = 2   不是0   所以刚刚终止点 = 2 的矩阵要多加
I = [ ((C./(3*α1*α3))-(C./(3*α1*α2))+(C./(sqrt(3)*α1*β3)))*V1                   =[(((12+j*13)./(3*10*9))-((12+j*13)./(3*10*8))+((12+j*13)./(sqrt(3)*10*1))*4
       ((C./(3*α1*α2))-(C./(3*α2*α3))+(C./(sqrt(3)*α2*β1)))*V1                         (((12+j*13)./(3*10*8))-((12+j*13)./(3*8*9))+((12+j*13)./(sqrt(3)*8*1))*5
         ((C./(3*α2*α3))-(C./(3*α1*α3))+(C./(sqrt(3)*α3*β2)))*V1                         (((12+j*13)./(3*8*9))-((12+j*13)./(3*10*9))+((12+j*13)./(sqrt(3)*9*1))*6
Itr = [(((10+j*11)*((1./3^2)-(1./(3*2)))*1
         (((10+j*11)*((1./4^2)-(1./(4*2)))*2
          (((10+j*11)*((1./5^2)-(1./(5*2)))*3
          (((10+j*11)*((1./2^2)-(1./(3*2)))*4   +   (((12+j*13)./(3*10*9))-((12+j*13)./(3*10*8))+((12+j*13)./(sqrt(3)*10*1))*4
          (((10+j*11)*((1./2^2)-(1./(4*2)))*5   +      (((12+j*13)./(3*10*8))-((12+j*13)./(3*8*9))+((12+j*13)./(sqrt(3)*8*1))*5
          (((10+j*11)*((1./2^2)-(1./(5*2)))*6   +      (((12+j*13)./(3*8*9))-((12+j*13)./(3*10*9))+((12+j*13)./(sqrt(3)*9*1))*6
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*8*1))*7
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*9*1))*8
         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*10*1))*9]

(4)看表1支路号 = 4 支路类型编号 = 1找到 终止点 = 4起始点 = 2
看表2内容与相终止同千位数为4的有4001,4003共2个
因为支路类型编号 =1       支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
I = [ 0
      0 ]
因为起始点 = 2   不是0   所以刚刚终止点 = 2 的矩阵要多加
I = [ 0
      0 ]
最终

Itr = [(((10+j*11)*((1./3^2)-(1./(3*2)))*1
         (((10+j*11)*((1./4^2)-(1./(4*2)))*2
          (((10+j*11)*((1./5^2)-(1./(5*2)))*3
          (((10+j*11)*((1./2^2)-(1./(3*2)))*4   +   (((12+j*13)./(3*10*9))-((12+j*13)./(3*10*8))+((12+j*13)./(sqrt(3)*10*1))*4   +0*4
          (((10+j*11)*((1./2^2)-(1./(4*2)))*5   +      (((12+j*13)./(3*10*8))-((12+j*13)./(3*8*9))+((12+j*13)./(sqrt(3)*8*1))*5
          (((10+j*11)*((1./2^2)-(1./(5*2)))*6   +      (((12+j*13)./(3*8*9))-((12+j*13)./(3*10*9))+((12+j*13)./(sqrt(3)*9*1))*6      +0*6
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*8*1))*7
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*9*1))*8
         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*10*1))*9]
                                     0 *10 =0
                                     0 *11 =0
最後得到Itre=(n*1)大的矩阵
相当烦杂的步骤
但是感覺跟 lin2009 大 所教的有類似之處
http://forum.simwe.com/thread-929302-1-1.html

lin2009 发表于 2010-6-3 13:50:22

本帖最后由 lin2009 于 2010-6-10 17:31 编辑

程序不太难,但是读懂你的意思费了不少时间。


clear all;
clc
         
table1 = [ 1   0   1   1
         2   1   2   2
         3   2   3   3
         4   2   4   1];
% col1col2col3col4
col1 = table1(:,1);
col2 = table1(:,2);
col3 = table1(:,3);
col4 = table1(:,4);

table2 = [1001      1002      1003...
          2001      2002      2003...
          3001      3002      3003...
          4001      4003]';
      
% col2 00 col3
col5= floor(table2 /1000);
col6 = mod(table2 ,10);

% 为统一处理,加入了第一行数据。
table3 = [
    1   0   0   Inf   Inf   Inf   Inf   Inf   Inf
    2    10    11   3   2   4   2   5   2
    3    12    13    10   1   8   1   9   1 ];

R = table3(:,2);
X = table3(:,3);
ABC = R + 1i*X;

alpha = table3(:,)';
beta= table3(:,)';

V1 = (1:11)';
V11 = (1:ceil(V1(end)/3)*3)';

Itr = zeros(size(table2));

alpha231 = alpha(,3);
for k = 1 : length(col1)
    switch col4(k)
      case 1
            IValue = zeros(3,1);
      case 2
            IValue = ABC(2).* (1./beta(:,2).^2 - 1./(alpha(:,2) .*beta(:,2)));
      case 3
            IValue = ABC(3).* (1 ./beta(:,3).^2 - 1./(sqrt(3)*alpha231 .*beta(:,3)));
    end
    lacks = setdiff(,col6(col5 == k));
    if ~isempty(lacks)
      IValue(lacks,:) = 0;
    end
    Iset{k} = IValue;
    lackSet{k} = (k - 1)*3 + lacks;
end


alpha112 = alpha(,3);
alpha323 = alpha(,3);
alpha121 = alpha(,3);
alpha233 = alpha(,3);
beta312= beta(,3);

for tk = 1: length(col1)         % tk - col3 index
    for ok = 1: length(col1)   % ok - col2 index
      if tk ~= ok && col3(tk) == col2(ok)% 终点 = 起点
            switch col4(ok)
                case 1
                case 2
                  addIV = ABC(2)*( 1./alpha(:,2).^2 - 1./(alpha(:,2).*beta(:,2)));
                  Iset{tk} = Iset{tk} + addIV;
                case 3
                  addIV = ABC(3)*( 1./(3*alpha112.*alpha323) - 1./(3*alpha121.*alpha233) + 1./(sqrt(3)*alpha(:,3).*beta312) );
                  Iset{tk} = Iset{tk} + addIV;
            end         
      end
    end
end

format short g;
Itr_tmp = cat(1,Iset{:}).*V11;
Itr_tmp() = [];
Itr = Itr_tmp

Itr =
   -0.55556 -    0.61111i
      -1.25 -      1.375i
         -1.8 -       1.98i
       6.0824 +   6.6448i
       10.552 +   11.536i
       13.685 +   14.976i
       77.938 +   84.433i
       89.842 +   97.328i
       101.76 +   110.25i
            0            
            0

武神裝攻 发表于 2010-6-5 07:43:31

本帖最后由 武神裝攻 于 2010-6-5 09:18 编辑

欧对 真的很抱歉没说清楚
先说 编号就是支路类型 支路类型就是指向编号然后可以获得支路类型的参数
那 EXCEL 内容m00n 这只是用来编码位置用
实际像是1001 1002 1003
指的就是         a                        b                         c
      第一点 [这位置=1001       这位置=1002         这位=1003 ]
千位指第几点      个位数就是abc = 1 2 3
因为公式计算那n*3大的矩阵计算会有问题
所以编码变m*1大的矩阵
而表2小弟是已经自动生成
Itr就是对照这表所说的位置放值
Itr = [w   这位置=1001 数值=w   
          x   这位置=1002数值=x
          y ] 这位置=1003数值=y
然后千位数也可以用来指向我的起始点与终止点
而这次与之前问的程序一样是求终止点是相同的位置要放入啥值
起始点不等于0时 起始点所指的位置也要放啥值
难的是这次分支路类型不同公式不同个位数不同公式不同终止点起始点分别也是带入不同公式

简单原理解说
               a@---------------@
               b@---------------@
               c@---------------@               
                起始点         终止点
那注入電流要加入起始点abc与终止点abc
Itr=[ 起始点a
       起始点b
       起始点c
       终止点a
       终止点b
       终止点c ]

附结果
Itr = [((10+j*11)*((1./3^2)-(1./(3*2))))*1;
         ((10+j*11)*((1./4^2)-(1./(4*2))))*2;
          ((10+j*11)*((1./5^2)-(1./(5*2))))*3;
          ((10+j*11)*((1./2^2)-(1./(3*2))))*4+(((12+j*13)./(3*10*9))-((12+j*13)./(3*10*8))+((12+j*13)./(sqrt(3)*10*1)))*4+0*4;
          ((10+j*11)*((1./2^2)-(1./(4*2))))*5+(((12+j*13)./(3*10*8))-((12+j*13)./(3*8*9))+((12+j*13)./(sqrt(3)*8*1)))*5;
          ((10+j*11)*((1./2^2)-(1./(5*2))))*6+(((12+j*13)./(3*8*9))-((12+j*13)./(3*10*9))+((12+j*13)./(sqrt(3)*9*1)))*6+0*6;
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*8*1)))*7;
          (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*9*1)))*8;
         (((12+j*13)./1^2)-((12+j*13)./(sqrt(3)*10*1)))*9 ;
                                     0 *10;
                                     0 *11; ]

=
-0.555555555555556 - 0.611111111111111i
-1.25000000000000 - 1.37500000000000i
-1.80000000000000 - 1.98000000000000i
6.08239240322132 + 6.64481399237865i
10.5523492411444 + 11.5358783445731i
13.6854688201837 + 14.9759245551990i
77.9378221735089 + 84.4326406879680i
89.8415971286440 + 97.3283968893643i
101.764617092752 + 110.245001850481i
0.00000000000000 + 0.00000000000000i
0.00000000000000 + 0.00000000000000i

lin2009 发表于 2010-6-5 10:03:14

逻辑太复杂,应把思路理清楚。

武神裝攻 发表于 2010-6-5 11:24:57

本帖最后由 武神裝攻 于 2010-6-5 11:39 编辑

好的 先说EXCEL_1跟EXCEL_2的关系好了
EXCEL_1 有 终止点 与 起始点
所以点是有 0,1,2,3,4 总共5个点 (PS:计算加入电流Itr时0不管)
支路号就是连结这些点的线路
示意图 ( 蓝字为支路号 红字为点 )
       @---------------@---------------@---------------@---------------@
      0    1        1      2      2       3     3       4        4
所以对于支路1来说它的 起始点=0终止点=1(PS:但是有时不会照顺序相连例如可能点2分支跟点5连)

而EXCEL_2的千位数就是指点的号码 (PS:如上所说计算加入电流Itr时0不管所以所以由1开始编码)
而EXCEL_2的个位数就是指点与点之间的连接不只1条所以个位数1 2 3 指的就是同支路号的abc如下
@---------------@
   0      1a      1      
@---------------@
   0      1b      1
@---------------@
   0       1c     1
先設Itr=zeros(EXCEL_2);
而我说的注入电流就是分别会有值放入EXCEL_2所指起始点终止点(也就是千位数)
如下:
@-----------------------------------------------------------------------@
   1                                 2a                                  2   
       <--注入起始电=1                      注入终止电=2 -->                                  
@-----------------------------------------------------------------------@
   1                                 2b                                  2
       <--注入起始电=3                      注入终止电=4 -->             
@-----------------------------------------------------------------------@
   1                                    2c                               2
       <--注入起始电=5                        注入终止电=6 -->
Itr=[ 1      -->1001
       3      -->1002
       5      -->1003
       2      -->2001
       4      -->2002
       6]   -->2003       

再来EXCEL_1的支路类型就是我的EXCEL_3的编号已变对映相同号码得到参数

A=0
B=EXCEL表格3内容 编号=2 的R+j*X   =10+j*11   ( j为虚数)
C=EXCEL表格3内容 编号=3 的R+j*X   =12+j*13   ( j为虚数)

类型,编号 = 1注入起始电 注入终止电都是0

类型,编号 = 2
注入终止电
I = [ (B*((1./β1^2)-(1./(α1β1))))*V1         -->支路a= n001            
       (B*((1./β2^2)-(1./(α2β2))))*V1      -->支路b= n002            
         (B*((1./β3^2)-(1./(α3β3))))*V1 ]      -->支路c= n003
V1 = [1;2;3;4;5;6;7;8;9;10;11]             Itr 与 V 与 EXCEL表格2内容 矩阵大小一样
(PS: V是已知跟Itr是一样编码所以是同编码位置相乘如公式1001 乘V11001)
注入起始电
I = [ (B*((1./α1^2)-(1./(α1β1))))*V1                  
       (B*((1./α2^2)-(1./(α2β2))))*V1                  
         (B*((1./α3^2)-(1./(α3β3))))*V1 ]

类型,编号 = 3               
注入终止电
I = [ ((C./(β1^2))-(C./(sqrt(3)*α2*β1)))*V1               
       ((C./(β2^2))-(C./(sqrt(3)*α3*β2)))*V1               
         ((C./(β3^2))-(C./(sqrt(3)*α1*β3)))*V1   ]
注入起始电
I = [ ((C./(3*α1*α3))-(C./(3*α1*α2))+(C./(sqrt(3)*α1*β3)))*V1      
       ((C./(3*α1*α2))-(C./(3*α2*α3))+(C./(sqrt(3)*α2*β1)))*V1            
         ((C./(3*α2*α3))-(C./(3*α1*α3))+(C./(sqrt(3)*α3*β2)))*V1      

这样利用EXCEL_1.2.3就可以求出Itr

武神裝攻 发表于 2010-6-13 15:19:05

不好意思想询问假设我的V1不是连续而是乱数的数字不就是会出错吗?

武神裝攻 发表于 2010-10-4 11:27:57

抱歉 小弟之前再做simulink最近才验证一下发现case3会有点小问题
lin2009大帮写的Y跟推导的是没错的
错的只是要乘的V
先看起始点 终止点就是编码的千位数
以编码+V来看会看出
1001    1
1002    2
1003    3
2001    4
2002    5
2003    6
3001    7
3002    8
3003    9
4001    10
4003    11
小弟在5#有讲解原理
我们以EXCEL1表格支路号3当范例
支路号=3 起始点=2 终止点=3
那起始点电压123 (VS)
VS1 = 4      VS2 = 5      VS3 = 6(也就是看编码的千位数+个位数)
那终止点电压123 (VF)
VF1 = 7      VF2 = 8      VF3 = 9


改的部份就是
看分母就知道要乘的电压
β用VF
α用VS
αβ数字 对应 VF VS数字
当分母都有αβ或是2個α或是β那电压要先相减再乘


类型,编号 = 2
注入终止电
I = [ (B*(1./β1^2)*VF1-B*(1./(α1β1))*(VS1-VF1))         -->支路a= n001            
       (B*(1./β2^2)*VF2-B*(1./(α2β2))*(VS2-VF2))      -->支路b= n002            
         (B*(1./β3^2)*VF3-   B*(1./(α3β3))*(VS2-VF2)) ]      -->支路c= n003
V1 = [1;2;3;4;5;6;7;8;9;10;11]             Itr 与 V 与 EXCEL表格2内容 矩阵大小一样
(PS: V是已知跟Itr是一样编码所以是同编码位置相乘如公式1001 乘V11001)
注入起始电
I = [ (B*(1./α1^2)*VS1-B*(1./(α1β1))*(VS1-VF1))                           
       (B*(1./α2^2)*VS2-B*(1./(α2β2))*(VS2-VF2))                  
         (B*(1./α3^2)*VS3-   B*(1./(α3β3))*(VS2-VF2)) ]

类型,编号 = 3               
注入终止电
I = [ ((C./(β1^2))*VF1-(C./(sqrt(3)*α2*β1))*(VS2-VF1))         --->仔細看    α2对应 VS2
       ((C./(β2^2))*VF2-(C./(sqrt(3)*α3*β2))*(VS3-VF2))          --->仔細看    α3对应 VS3                  
         ((C./(β3^2))*VF3-(C./(sqrt(3)*α1*β3))*(VS1-VF3))    ]   --->仔細看    α1对应 VS1
注入起始电
I = [ ((C./(3*α1*α3))*(VS1-VS3)-(C./(3*α1*α2))*(VS1-VS2)+(C./(sqrt(3)*α1*β3))*(VS1-VF3))      
       ((C./(3*α1*α2))*(VS1-VS2)-(C./(3*α2*α3))*(VS2-VS3)+(C./(sqrt(3)*α2*β1))*(VS2-VF1))            
         ((C./(3*α2*α3))*(VS2-VS3)-(C./(3*α1*α3))*(VS1-VS3)+(C./(sqrt(3)*α3*β2))*(VS3-VF2))
页: [1]
查看完整版本: 求助变压器(TR 三角-Yg)注入电流支路模型实现-程式用途可用于九种TR求解