From c7c1963fae6f88a55b3f7e4a3f9ea17e964d23d2 Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Wed, 4 Oct 2017 21:06:20 -0300 Subject: Saturation fixed in q axis --- Project/Electromechanical.cpp | 16 ++++++++-------- Project/Electromechanical.h | 2 +- Project/Project.mk | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'Project') diff --git a/Project/Electromechanical.cpp b/Project/Electromechanical.cpp index 84e49d5..4b40c53 100644 --- a/Project/Electromechanical.cpp +++ b/Project/Electromechanical.cpp @@ -433,8 +433,8 @@ bool Electromechanical::InitializeDynamicElements() data.terminalVoltage = static_cast(syncGenerator->GetParentList()[0])->GetElectricalData().voltage; std::complex conjS(dataPU.activePower, -dataPU.reactivePower); - std::complex conjV = std::conj(data.terminalVoltage); - std::complex ia = conjS / conjV; + std::complex vt = data.terminalVoltage; + std::complex ia = conjS / std::conj(vt); double xd = data.syncXd * k; double xq = data.syncXq * k; @@ -458,12 +458,12 @@ bool Electromechanical::InitializeDynamicElements() } // Initialize state variables - std::complex eq0 = data.terminalVoltage + std::complex(ra, xq) * ia; + std::complex eq0 = vt + std::complex(ra, xq) * ia; double delta = std::arg(eq0); double id0, iq0, vd0, vq0; ABCtoDQ0(ia, delta, id0, iq0); - ABCtoDQ0(data.terminalVoltage, delta, vd0, vq0); + ABCtoDQ0(vt, delta, vd0, vq0); // Initialize saturation double xqs = xq; @@ -474,8 +474,8 @@ bool Electromechanical::InitializeDynamicElements() int numIt = 0; while(!exit) { oldDelta = delta; - // ABCtoDQ0(ia, delta, id0, iq0); - // ABCtoDQ0(data.terminalVoltage, delta, vd0, vq0); + ABCtoDQ0(ia, delta, id0, iq0); + ABCtoDQ0(vt, delta, vd0, vq0); // Direct-axis Potier voltage. double epd = vd0 + ra * id0 + xp * iq0; @@ -502,7 +502,7 @@ bool Electromechanical::InitializeDynamicElements() eq0 = data.terminalVoltage + std::complex(ra, xqs) * ia; delta = std::arg(eq0);*/ } - + double ef0 = vq0 + ra * iq0 - xds * id0; data.initialFieldVoltage = ef0 * sd; @@ -1065,7 +1065,7 @@ double Electromechanical::CalculateSyncMachineIntVariables(SyncGenerator* syncGe error = std::max(error, std::abs(data.subEq - subEq)); double subEd = - (data.icSubEd.c - data.icSubEd.m * ((syncXq - subXq) * iq)) / (1.0 + data.icSubEd.m * (data.sq - 1.0)); + (data.icSubEd.c - data.icSubEd.m * ((syncXq - subXq) * iq)) / (1.0 + data.icSubEd.m * (sq - 1.0)); error = std::max(error, std::abs(data.subEd - subEd)); data.tranEq = tranEq; diff --git a/Project/Electromechanical.h b/Project/Electromechanical.h index 3dd239a..cbbb600 100644 --- a/Project/Electromechanical.h +++ b/Project/Electromechanical.h @@ -110,7 +110,7 @@ class Electromechanical : public ElectricCalculation double m_ctrlTimeStepMultiplier = 0.1; double m_tolerance = 1e-8; int m_maxIterations = 100; - double m_saturationTolerance = 1e-4; + double m_saturationTolerance = 1e-8; std::vector m_eventTimeList; std::vector m_eventOccurrenceList; diff --git a/Project/Project.mk b/Project/Project.mk index 838fd14..71c206d 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=NDSE-69 -Date :=28/09/2017 +Date :=04/10/2017 CodeLitePath :="C:/Program Files/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC -- cgit