summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
Diffstat (limited to 'Project')
-rw-r--r--Project/ControlElementSolver.cpp3
-rw-r--r--Project/ControlElementSolver.h3
-rw-r--r--Project/Electromechanical.cpp1
-rw-r--r--Project/GeneratorStabForm.cpp2
-rw-r--r--Project/IOControl.cpp5
-rw-r--r--Project/IOControl.h1
-rw-r--r--Project/IOControlForm.cpp6
7 files changed, 20 insertions, 1 deletions
diff --git a/Project/ControlElementSolver.cpp b/Project/ControlElementSolver.cpp
index ad2e79b..9043358 100644
--- a/Project/ControlElementSolver.cpp
+++ b/Project/ControlElementSolver.cpp
@@ -227,6 +227,9 @@ void ControlElementSolver::SolveNextStep()
case IOControl::IN_INITIAL_VELOCITY: {
child->SetValue(m_initVelocity);
} break;
+ case IOControl::IN_DELTA_VELOCITY: {
+ child->SetValue(m_deltaVelocity);
+ } break;
default: {
inputType = false;
} break;
diff --git a/Project/ControlElementSolver.h b/Project/ControlElementSolver.h
index 786ae78..fd27ad6 100644
--- a/Project/ControlElementSolver.h
+++ b/Project/ControlElementSolver.h
@@ -65,8 +65,10 @@ class ControlElementSolver
void SetInitialTerminalVoltage(double value) { m_initTerminalVoltage = value; }
void SetInitialMecPower(double value) { m_initMecPower = value; }
void SetInitialVelocity(double value) { m_initVelocity = value; }
+ void SetDeltaVelocity(double value) { m_deltaVelocity = value; }
double GetFieldVoltage() { return m_fieldVoltage; }
double GetMechanicalPower() { return m_mecPower; }
+ double GetVelocity() { return m_velocity; }
protected:
void Initialize(wxWindow* parent, double timeStep, double integrationError);
void FillAllConnectedChildren(ConnectionLine* parent);
@@ -89,6 +91,7 @@ class ControlElementSolver
double m_initTerminalVoltage = 0.0;
double m_initMecPower = 0.0;
double m_initVelocity = 0.0;
+ double m_deltaVelocity = 0.0;
// Outputs
double m_fieldVoltage = 0.0;
double m_mecPower = 0.0;
diff --git a/Project/Electromechanical.cpp b/Project/Electromechanical.cpp
index 909642b..dfd95d9 100644
--- a/Project/Electromechanical.cpp
+++ b/Project/Electromechanical.cpp
@@ -902,6 +902,7 @@ bool Electromechanical::SolveSynchronousMachines()
data.avrSolver->SetTerminalVoltage(std::abs(data.terminalVoltage));
data.avrSolver->SetActivePower(data.electricalPower.real());
data.avrSolver->SetReactivePower(data.electricalPower.imag());
+ data.avrSolver->SetDeltaVelocity(data.speed - data.avrSolver->GetVelocity());
data.avrSolver->SetVelocity(data.speed);
for(int i = 0; i < ctrlRatio; ++i) data.avrSolver->SolveNextStep();
diff --git a/Project/GeneratorStabForm.cpp b/Project/GeneratorStabForm.cpp
index 82d85ab..7a70039 100644
--- a/Project/GeneratorStabForm.cpp
+++ b/Project/GeneratorStabForm.cpp
@@ -70,7 +70,7 @@ void GeneratorStabForm::OnEditAVRButtonClick(wxCommandEvent& event)
ControlEditor* cEditor = new ControlEditor(
m_parent, IOControl::IN_TERMINAL_VOLTAGE | IOControl::IN_ACTIVE_POWER | IOControl::IN_REACTIVE_POWER |
IOControl::IN_INITIAL_TERMINAL_VOLTAGE | IOControl::IN_VELOCITY | IOControl::IN_INITIAL_VELOCITY |
- IOControl::OUT_FIELD_VOLTAGE);
+ IOControl::IN_DELTA_VELOCITY | IOControl::OUT_FIELD_VOLTAGE);
cEditor->SetElementsList(data.avr->GetControlElementsList());
cEditor->SetConnectionsList(data.avr->GetConnectionLineList());
cEditor->SetControlContainer(data.avr);
diff --git a/Project/IOControl.cpp b/Project/IOControl.cpp
index 2479f47..aef7944 100644
--- a/Project/IOControl.cpp
+++ b/Project/IOControl.cpp
@@ -153,6 +153,7 @@ wxString IOControl::GenerateText()
{
wxString omega = wxString::FromUTF8("\xCF\x89");
wxString subZero = wxString::FromUTF8("\xE2\x82\x92");
+ wxString capDelta = wxString::FromUTF8("\xCE\x94");
switch(m_value) {
case IN_TERMINAL_VOLTAGE: {
@@ -191,6 +192,10 @@ wxString IOControl::GenerateText()
m_ioNodeType = Node::NODE_OUT;
return omega + subZero;
} break;
+ case IN_DELTA_VELOCITY: {
+ m_ioNodeType = Node::NODE_OUT;
+ return capDelta + omega;
+ } break;
}
return "";
}
diff --git a/Project/IOControl.h b/Project/IOControl.h
index eb0b763..cff96a0 100644
--- a/Project/IOControl.h
+++ b/Project/IOControl.h
@@ -45,6 +45,7 @@ class IOControl : public ControlElement
IN_INITIAL_TERMINAL_VOLTAGE = 1 << 6,
IN_INITIAL_MEC_POWER = 1 << 7,
IN_INITIAL_VELOCITY = 1 << 8,
+ IN_DELTA_VELOCITY = 1 << 9,
};
IOControl(int ioFlags, int id);
diff --git a/Project/IOControlForm.cpp b/Project/IOControlForm.cpp
index bb049a1..73ac331 100644
--- a/Project/IOControlForm.cpp
+++ b/Project/IOControlForm.cpp
@@ -77,6 +77,12 @@ IOControlForm::IOControlForm(wxWindow* parent, IOControl* ioControl) : IOControl
m_inputFlags.push_back(IOControl::IN_INITIAL_VELOCITY);
if(m_ioControl->GetValue() == IOControl::IN_INITIAL_VELOCITY) inChoiceNumber = (int)m_inputFlags.size() - 1;
}
+
+ if(ioFlags & IOControl::IN_DELTA_VELOCITY) {
+ m_choiceInput->Append(_("Velocity variation"));
+ m_inputFlags.push_back(IOControl::IN_DELTA_VELOCITY);
+ if(m_ioControl->GetValue() == IOControl::IN_DELTA_VELOCITY) inChoiceNumber = (int)m_inputFlags.size() - 1;
+ }
if(inChoiceNumber != -1) {
m_choiceInput->SetSelection(inChoiceNumber);