CBuilder 教程 5- 简单变压器

技术咨询、模型免费上机运行 请加微信号 rtdsim

1 介绍

本教程中开发的变压器模型将包括绕组电阻、漏抗以及线性励磁电抗。不考虑铁心饱和的影响

2 理论

  1. 变压器建模
    大多数电力系统组件,无论其复杂程度如何,都经过简化,以便将其建模为与电导并联的一个或多个电流源。元器件建模的难点往往在于找到这样一种能准确表示被建模器件物理特性的表示。我们的目标是将双绕组变压器简化为类似于图8.1所示的形式。所开发的方程必须模拟变压器两个绕组之间的耦合。


图8.1:如何为变压器建模的框架
写出一个成功的电力系统模型的关键之一是写出正确的方程。在连续时域中写出一组方程来精确地表示某一特定设备的行为是可能的,但也可能不能离散这些方程,使它们能够与RTDS解算法无缝集成。所写的方程不仅必须在物理上是正确的,而且还必须集成到仿真器的现有解框架中。合适方程的选择往往依赖于经验。
考虑图8.2所示的变压器的单位等效电路。绕组电阻和漏抗被分成两半,中间连接磁化支路。对于这个电路,可以写出两个回路方程。得到的方程由式8-1和式8-2给出。


图8.2:变压器的单位等效电路


式8-1和式8-2中的值都是per -单位化的;将式8-1和式8-2分别以欧姆值重新写成式8-3和式8-4。式8-3指的是一次面,而式8-4指的是二次面。


将方程8-3和方程8-4写成矩阵形式,分别变成方程8-5和方程8-6。


方程8-6可以从拉普拉斯域转换到时域,得到方程8-7。


然后可以使用梯形在时间步长上对方程8-8进行数值积分集成。


式8-10描述了进入变压器两个端子的电流。这两个电流各有两个分量。每个电流的一部分是在电流时间步长处变压器两端电压的函数。另一部分每个电流的一部分可以被认为是由一个电流源提供的,这个电流源严格地是流入变压器的电流和前一个时间步长变压器两端电压的函数。电流向量[i(t)]的分量是过去电压和电流的函数,被分组并标记为[ih(t)]。这个术语通常被称为历史电流,因为它严格地是过去电压和电流穿过变压器的函数。
在这一点上,退一步看看RTDS仿真器的算法是有指导意义的为了展示如何将公式8-10纳入其中。

      1. RTDS求解算法
        解释RTDS求解算法最有效的方法是通过实例来解释。数字
        图8.3显示了一个连接到RLC电路的简单源。已经标记了两个节点。


图8.3:用于演示RTDS求解算法的任意电路
可以找到电压源和串联电阻的诺顿等效。可以证明,电感和电容都可以分别用一个电流源和一个电导并联来表示。[1]电流源成为过去穿过元件的电压和电流的函数,通常被称为历史电流。对于本教程来说,如何计算这些历史电流的细节并不重要;假设它们是已知的量。然后可以画出图8.3的等价物,如图所示
8.4. 电路现在严格地由电流源和电导组成。


图8.4:修改后的任意电路,使其完全由电流源和电导值组成
将节点1和节点2的节点方程写成公式8-13和公式8-14,可以写成矩阵形式,如公式8-15所示。


在第8.2.3节中,列举了模拟这一节和前一节的互连电路所需的计算。然后给出了如何在几个处理器之间分配这些计算的细节。

      1. 将变压器模型集成到RTDS求解算法中
        在图8.5的电路中,简单变压器模型被添加到图8.4的任意电路中。这个电路的节点方程可以像以前一样写,只是现在我们的系统有三个节点。得到的方程如公式8-16、公式8-17和公式8-18所示。


图8.5:添加了简单变压器的任意电路


方程8-20的解就是图8.5电路的解。请注意,如果公式8-15和8-19的部分在使用适当的索引时被“覆盖”,则可以通过检查来组装这个矩阵。
假设目标是为所有节点电压求解方程8-20,则可以通过反转方程8-20的电导矩阵来找到向量[v1,v2,v3]T。这就得到了公式8-21;为完整起见,添加了时间下标。


矩阵式8-21代表了RTDS网络求解器完成的主要计算。它描述了电路中所有元件的相互作用。
可以计算这个方程的RHS之前,电流is(t)ihl(t)ihc(t)ihpri(t)Ihsec (t)必须是已知的。这就是模拟被分解成几个部分的地方。
为了减少计算时间,pri可以在不同的处理器上并行计算来自电压源和变压器的电流is(t), ihsec(t)和ih(t)。这些当前贡献将被称为当前注入,因为它们被注入到RTDS网络求解器中。
电流ihl(t)ihc(t)是来自电路电感和电容的贡献。一般来说,与无源RLC元件相关的计算都包含在网络求解器中。
图8.6说明了公式8-21的计算如何在几个处理器之间进行划分,并给出了简单变压器模型如何与网络求解器交互的一些细节。图8.6非常简化,很多细节都被省略了。


图8.6:简单变压器和网络求解器之间的交互

        1. 在任意给定时间步长的第一部分,网络电压向量来自于前面时间步长[V(t−1)]用于计算在前一时间步长ipri(t−1)和isec(t−1)处流入变压器的电流。然后,这两个量可以用来计算变压器的历史电流ih(prit−1)和ihsec(t−1),使用公式8-12。计算是在一个标记为组件处理器的专用处理器# 1上完成的
        2. 当对组件处理器#1上的简单变压器计算历史电流时,对电压源is(t−1)的计算在标记为组件处理器#2的不同处理器上完成。is(t−1)计算的细节不是本教程的重点。如果示例电路包含额外的组件,如发电机或传输线,则可以在其他处理器上同时计算与这些组件相关的电流,以减少计算时间。
        3. RTDS网络求解器负责与大多数无源RLC组件相关的计算,因此它计算ihl(t - 1)和ihc(t-1)。
        4. 在(1)-(3)中计算的电流成为该网络求解器的电流注入。电流注入被发送到处理器,处理器在指定时间计算主网络求解器,标记通信间隔T0然后,网络求解器通过求解公式8-21,使用电流注入来计算电路的节点电压。
        5. 计算出的电压被传递给所有的组件处理器和进程在下一个时间步重新开始。
          这五个步骤说明了如何在RTDS仿真器上将公式8-21的计算分配给几个处理器。将在CBuilder中组装的简单变压器模型负责第1步,即计算变压器的电流注入,以及计算变压器对公式8-21的电导矩阵的贡献。
          每个电力系统组件都对RTDS网络求解器做出两种类型的贡献:(1)电流注入和(2)电导值。电流注入计算每个时间步长,并通信到RTDS网络求解器。根据组件的复杂程度,组件的电导值贡献可以是固定的,也可以是时变的。如果它们是固定的,则在模拟运行之前计算一次;如果它们是时变的,则每隔一段时间计算一次,并且必须每隔一段时间与网络解进行通信。本教程的简单变压器不包括可变电导值。
          接下来,在8.2.4节实现该组件之前,完成前面推导的变压器方程的推广。

      1. 变压器方程的一般化
        到目前为止所做的所有推导都假定变压器的每一端都与地相连。现在将对该模型进行推广,以便不假设绕组处直接接地。不再测量每个绕组两端的电压,而是给每个绕组端子贴上自己的标签。这在图8.7中有所体现。


图8.7:调整后的变压器模型框架
式8-10可以改写为式8-22。


公式8-23、公式8-24、公式8-25、公式8-26和公式8-27共同构成了将用于实现简单变压器示例的方程。关于实现的细节在8.3节中给出。

绘制图形并添加参数

  1. 绘制一个类似于图8.8所示的变压器图标。根据图8.5的电路,简单变压器的组件图标应该包括4个电力系统节点。要使用的节点名称如图8.8所示。


图8.8:简单变压器组件图标
创建一个名为“TRANSFORMER PARAMETERS”的新部分,然后为图8.9中的每个参数添加一个条目。默认数据如图所示。该模型包括漏电抗、串联电阻等典型变压器特性。作为一个简单的例子,没有特别注意限制在这些参数中输入的数据。
将刚刚创建的定义文件保存为' SimpleTR.def '。


图8.9:简单变压器元件参数数据

添加模型代码

  • 选择“C File Association”选项卡。
  • 添加新关联。

当为电力系统组件创建新的C文件关联时,将出现一个菜单,必须在其中输入型号名称。

为组件创建C文件关联会自动生成以下关联:

节点:V1p、V1n、V2p、V2n(电力系统节点)

PARAMETERS:Name[11]、Xl、Ra、MVA、V1rate、V2rate、frequency、Xm(变压器参数)

除了上面列出的这些,还需要做以下额外的关联:

INJECTIONS:将在四个电力系统节点中的每个节点进行电流注入。要添加注入,请单击“INJECTIONS”菜单旁边的“+”号。输入当前注入变量的名称为“V1p”。选择OK后,将添加INJECTIONS部分,其中单行表示一个当前INJECTIONS关联。选择“V1p”变量的向下箭头图标,并选择节点“V1p”,以便注入与正确的节点相关联。的

在这种情况下,所有INJECTIONS的类型都是REAL。添加当前注入变量“I1n”,“I2p”和“I2n”,然后将它们与适当的节点关联起来。

图8.10:变压器所需的INJECTIONS

选择File - >Save会导致新添加的inject变量被写入到。h文件中,这样就可以在。c文件中访问它们。

  1. 基本算法
  2. 在编译案例时,计算变压器对全局G−矩阵的贡献。贡献是固定的。
  3. 读取四个节点电压V1p(t−1)、V2p(t−1)、V1n(t−1)和V2n(t−1)。
  4. 计算前一个过程中初级和次级绕组的电压
    时间步长,V1(t−1)和V(2t−1)。
  5. 使用计算得到的电压来计算前一时刻各绕组的电流时间步长,I1(t−1)和I2(t−1)。
  6. 使用前一个时间步长的电压和电流来计算当前时间步长的电流注入,并将其传递给网络解。
  7. 让网络解完成类似于公式8-23的计算然后在下一个时间- step返回到步骤2。

简单变压器对全局电导矩阵的贡献是固定的,不随时间变化。正因为如此,这些贡献只需要在编译仿真时计算一次。与必须在每个时间步长计算模型的电导贡献的情况相比,这将节省计算和通信时间。

设置贡献相当直接,但需要将初始化代码放在RAM_PASS1部分而不是RAM部分中。它还要求调用一些特殊的函数,这些函数在下面的代码中列出。

点击“编辑C文件”按钮开始编辑C代码。

−−−−−−−−−−−

// Simple Transformer Tutorial Example

// E RTDS Technologies, Inc.

// Written by Gregory Jackson

// August 22nd, 2013

#include ”simpleTR01.h”

// Declare some variable that will be

// used in the RAM_PASS1 and CODE sections STATIC:

double v1_old, v2_old; double i1_old, i2_old;

double IH1, IH1_old, IH2, IH2_old; double dt;

double R11, R12, R21, R22; double L11, L12, L21, L22;

double Gtr11, Gtr12, Gtr21, Gtr22; double A, B, C, D;

double M11, M21;

RAM:

RAM_PASS1:

//read the simulation time−step

dt = getTime-step();

//Determine which row and column in the G−matrix is

//associated with each node. The first statement below,

//for example, associates row and column 1 of the G

//matrix to node ”V1p”. The ’g_mat_nods[]’ array is

//reserved and must be used.

g_mat_nods[0]= getNodeNum(comp,”V1p”);

g_mat_nods[1]= getNodeNum(comp,”V2p”);

g_mat_nods[2]= getNodeNum(comp,”V1n”);

g_mat_nods[3]= getNodeNum(comp,”V2n”);

//Calculate Elements of the R and L matrices [Eq. 24] 
R11 = Ra*0.5*V1rate*V1rate/MVA;

R12 = 0;

R22 = Ra*0.5*V2rate*V2rate/MVA;

R21 = 0;

L11 = (Xm + Xl*0.5)*V1rate*V1rate/MVA;

L12 = Xm*V1rate*V2rate/MVA;

L21 = Xm*V1rate*V2rate/MVA;

L22 = (Xm + Xl*0.5)*V2rate*V2rate/MVA;

// Calculate the elements of the transformer’s G−matrix

// The inversion of a 4x4 matrix is completed. [Eq. 25]

A = R11*dt/2 + L11;

B = R12*dt/2 + L12;

C = R21*dt/2 + L21;

D = R22*dt/2 + L22;

Gtr11 = dt/(2*(A*D−B*C)) * D;

Gtr12 = dt/(2*(A*D−B*C)) * −B;

Gtr21 = dt/(2*(A*D−B*C)) * −C;

Gtr22 = dt/(2*(A*D−B*C)) * A;

//Setup the G−matrix for the transformer. [Eq. 23]

//g_mat_over[][] is a reserved array that must be used.

//The conductance matrix is fixed so it only needs to be

//calculated once here when the case is compiled.

g_mat_over[0][0]= Gtr11;

g_mat_over[0][1]= Gtr12;

g_mat_over[0][2]= −Gtr11;

g_mat_over[0][3]= −Gtr12;

g_mat_over[1][0]= Gtr21;

g_mat_over[1][1]= Gtr22;

g_mat_over[1][2]= −Gtr21;

g_mat_over[1][3]= −Gtr22;

g_mat_over[2][0]= −Gtr11;

g_mat_over[2][1]= −Gtr12;

g_mat_over[2][2]= Gtr11;

g_mat_over[2][3]= Gtr12;

g_mat_over[3][0]= −Gtr21;

g_mat_over[3][1]= −Gtr22;

g_mat_over[3][2]= Gtr21;

g_mat_over[3][3]= Gtr22;

CODE:


//Pass the component’s G−matrix contributions to the main

//network solution. The function’s argument is the

//dimension of the component’s G−matrix.

setupGMatrix(4);

BEGIN_T0:

//Calculate the voltage across each of the transformer’s

// windings at the previous time−step. v1_old = V1p−V1n;

v2_old = V2p−V2n;

//Calculate the current flowing in

//each winding at the previous time−step.

i1_old = Gtr11*v1_old + Gtr12*v2_old + IH1_old;

i2_old = Gtr21*v1_old + Gtr22*v2_old + IH2_old;

//Calculate the transformer’s history currents [Eq. 26]

M11=v1_old−(R11−L11*2/dt)*i1_old−(R12−L12*2/dt)*i2_old;

M21=v2_old−(R21−L21*2/dt)*i1_old−(R22−L22*2/dt)*i2_old;

IH1 = Gtr11*M11 + Gtr12*M21;

IH2 = Gtr21*M11 + Gtr22*M21;

//Keep track of old history terms

IH1_old = IH1;

IH2_old = IH2;

//Current injections: a −ve value implies the current

//flowing into a node;a +ve value implies the current is

//flowing out of a node

I1p = IH1;

I1n = −IH1;

I2p = IH2;

I2n = −IH2;

T0_T2:

−−−−−−−−−−−

添加代码后,尝试编译你的模型。如果成功,将简单变压器添加到DRAFT中,并构建如图8.11所示的简单测试电路。为了稳定起见,在变压器的每个绕组上都有一个参考地是很重要的。

图8.11:用于测试简单变压器模型的简单DRAFT案例

在编写和运行DRAFT案例后,您应该能够观察到变压器一次侧和二次侧之间的正确电压比。当二次侧负载阻抗降低时,您还应该能够观察到负载电压下降。这将是由于变压器漏抗和绕组电阻上的电压降造成的。

  1. 参考文献

[1]Electro−Magnetic Transients Program (EMTP) Theory Book. Hermann W. Dommel.

1987.

技术咨询、模型免费上机运行 请加微信号 rtdsim

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值