diff options
Diffstat (limited to 'Project')
-rw-r--r-- | Project/ControlElementSolver.cpp | 3 | ||||
-rw-r--r-- | Project/ControlElementSolver.h | 3 | ||||
-rw-r--r-- | Project/Electromechanical.cpp | 1 | ||||
-rw-r--r-- | Project/GeneratorStabForm.cpp | 2 | ||||
-rw-r--r-- | Project/IOControl.cpp | 5 | ||||
-rw-r--r-- | Project/IOControl.h | 1 | ||||
-rw-r--r-- | Project/IOControlForm.cpp | 6 |
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); |