10#include <dpsim-models/Base/Base_Governor.h>
11#include <dpsim-models/Base/Base_PSS.h>
12#include <dpsim-models/Base/Base_Turbine.h>
13#include <dpsim-models/CSVReader.h>
14#include <dpsim-models/IdentifiedObject.h>
15#include <dpsim-models/Signal/HydroTurbine.h>
16#include <dpsim-models/Signal/HydroTurbineGovernor.h>
17#include <dpsim-models/Signal/PSS1A.h>
18#include <dpsim-models/Signal/SteamTurbine.h>
19#include <dpsim-models/Signal/SteamTurbineGovernor.h>
20#include <dpsim/RealTimeSimulation.h>
21#include <dpsim/Simulation.h>
22#include <dpsim/pybind/SignalComponents.h>
23#include <dpsim/pybind/Utils.h>
25namespace py = pybind11;
26using namespace pybind11::literals;
28void addSignalComponents(py::module_ mSignal) {
31 std::shared_ptr<CPS::TopologicalSignalComp>,
33 py::class_<CPS::SimSignalComp, std::shared_ptr<CPS::SimSignalComp>,
36 py::class_<CPS::Base::Exciter, std::shared_ptr<CPS::Base::Exciter>>(
40 std::shared_ptr<CPS::Base::ExciterParameters>>(
41 mSignal,
"ExciterParameters");
44 std::shared_ptr<CPS::Signal::ExciterDC1Parameters>,
58 .def_readwrite(
"MaxVa", &CPS::Signal::ExciterDC1Parameters::MaxVa)
59 .def_readwrite(
"MinVa", &CPS::Signal::ExciterDC1Parameters::MinVa);
62 std::shared_ptr<CPS::Signal::ExciterDC1SimpParameters>,
74 .def_readwrite(
"MaxVa", &CPS::Signal::ExciterDC1SimpParameters::MaxVa)
75 .def_readwrite(
"MinVa", &CPS::Signal::ExciterDC1SimpParameters::MinVa);
78 std::shared_ptr<CPS::Signal::ExciterST1Parameters>,
83 .def_readwrite(
"MaxVa", &CPS::Signal::ExciterST1Parameters::MaxVa)
84 .def_readwrite(
"MinVa", &CPS::Signal::ExciterST1Parameters::MinVa);
87 std::shared_ptr<CPS::Signal::ExciterStaticParameters>,
99 py::class_<CPS::Signal::ExciterDC1, std::shared_ptr<CPS::Signal::ExciterDC1>,
101 py::multiple_inheritance())
102 .def(py::init<std::string>())
103 .def(py::init<std::string, CPS::Logger::Level>())
107 std::shared_ptr<CPS::Signal::ExciterDC1Parameters> params) {
115 py::multiple_inheritance())
116 .def(py::init<std::string>())
117 .def(py::init<std::string, CPS::Logger::Level>())
121 std::shared_ptr<CPS::Signal::ExciterDC1SimpParameters> params) {
129 py::multiple_inheritance())
130 .def(py::init<std::string>())
131 .def(py::init<std::string, CPS::Logger::Level>())
135 std::shared_ptr<CPS::Signal::ExciterST1Parameters> params) {
143 py::multiple_inheritance())
144 .def(py::init<std::string>())
145 .def(py::init<std::string, CPS::Logger::Level>())
149 std::shared_ptr<CPS::Signal::ExciterStaticParameters> params) {
156 mSignal,
"DecouplingLine", py::multiple_inheritance())
157 .def(py::init<std::string>())
158 .def(py::init<std::string, CPS::Logger::Level>())
159 .def(
"set_parameters", &CPS::Signal::DecouplingLine::setParameters,
160 "node_1"_a,
"node_2"_a,
"resistance"_a,
"inductance"_a,
162 .def(
"get_line_components",
163 &CPS::Signal::DecouplingLine::getLineComponents);
166 std::shared_ptr<CPS::Signal::DecouplingLineEMT>,
168 py::multiple_inheritance())
169 .def(py::init<std::string>())
170 .def(py::init<std::string, CPS::Logger::Level>())
171 .def(
"set_parameters", &CPS::Signal::DecouplingLineEMT::setParameters,
172 "node_1"_a,
"node_2"_a,
"resistance"_a,
"inductance"_a,
174 .def(
"get_line_components",
175 &CPS::Signal::DecouplingLineEMT::getLineComponents);
178 std::shared_ptr<CPS::Signal::DecouplingLineEMT_Ph3>,
180 py::multiple_inheritance())
181 .def(py::init<std::string>())
182 .def(py::init<std::string, CPS::Logger::Level>())
183 .def(
"set_parameters", &CPS::Signal::DecouplingLineEMT_Ph3::setParameters,
184 "node_1"_a,
"node_2"_a,
"resistance"_a,
"inductance"_a,
186 .def(
"get_line_components",
187 &CPS::Signal::DecouplingLineEMT_Ph3::getLineComponents);
190 std::shared_ptr<CPS::Base::PSSParameters>>(mSignal,
193 py::class_<CPS::Base::PSS, std::shared_ptr<CPS::Base::PSS>>(mSignal,
"PSS");
196 std::shared_ptr<CPS::Signal::PSS1AParameters>,
198 py::multiple_inheritance())
211 py::class_<CPS::Signal::PSS1A, std::shared_ptr<CPS::Signal::PSS1A>,
213 py::multiple_inheritance())
214 .def(py::init<std::string>())
215 .def(py::init<std::string, CPS::Logger::Level>())
216 .def(
"set_parameters", &CPS::Signal::PSS1A::setParameters,
220 std::shared_ptr<CPS::Signal::TurbineGovernorType1>,
222 py::multiple_inheritance())
223 .def(py::init<std::string>())
224 .def(py::init<std::string, CPS::Logger::Level>())
226 "T3"_a,
"T4"_a,
"T5"_a,
"Tc"_a,
"Ts"_a,
"R"_a,
"Tmin"_a,
"Tmax"_a,
228 .def(
"initialize_states",
233 std::shared_ptr<CPS::Base::GovernorParameters>>(
234 mSignal,
"GovernorParameters");
235 py::class_<CPS::Base::Governor, std::shared_ptr<CPS::Base::Governor>>(
236 mSignal,
"Governor");
239 std::shared_ptr<CPS::Base::TurbineParameters>>(
240 mSignal,
"TurbineParameters");
241 py::class_<CPS::Base::Turbine, std::shared_ptr<CPS::Base::Turbine>>(
246 std::shared_ptr<CPS::Signal::SteamGovernorParameters>,
248 py::multiple_inheritance())
262 std::shared_ptr<CPS::Signal::SteamTurbineGovernor>,
264 mSignal,
"SteamTurbineGovernor", py::multiple_inheritance())
265 .def(py::init<std::string>())
266 .def(py::init<std::string, CPS::Logger::Level>())
267 .def(
"set_parameters", &CPS::Signal::SteamTurbineGovernor::setParameters,
269 .def(
"initialize_states",
274 std::shared_ptr<CPS::Signal::SteamTurbineParameters>,
276 py::multiple_inheritance())
288 py::multiple_inheritance())
289 .def(py::init<std::string>())
290 .def(py::init<std::string, CPS::Logger::Level>())
291 .def(
"set_parameters", &CPS::Signal::SteamTurbine::setParameters,
298 std::shared_ptr<CPS::Signal::HydroGovernorParameters>,
300 py::multiple_inheritance())
311 std::shared_ptr<CPS::Signal::HydroTurbineGovernor>,
313 mSignal,
"HydroTurbineGovernor", py::multiple_inheritance())
314 .def(py::init<std::string>())
315 .def(py::init<std::string, CPS::Logger::Level>())
316 .def(
"set_parameters", &CPS::Signal::HydroTurbineGovernor::setParameters,
318 .def(
"initialize_states",
323 std::shared_ptr<CPS::Signal::HydroTurbineParameters>,
325 py::multiple_inheritance())
332 py::multiple_inheritance())
333 .def(py::init<std::string>())
334 .def(py::init<std::string, CPS::Logger::Level>())
335 .def(
"set_parameters", &CPS::Signal::HydroTurbine::setParameters,
Base model for Governors.
Base model for power system stabilizers.
void setParameters(std::shared_ptr< Base::ExciterParameters > parameters) final
Initializes exciter parameters.
Real Aef
First ceiling coefficient.
Real Tf
Stabilizer time constant.
Real Kef
Field circuit integral deviation.
Real Bef
Second ceiling coefficient.
Real Tr
Transducer time constant (s)
Real Tef
Field circuit time constant.
Real Tb
Pole of the regulator inherent dynamic.
Real Tc
Zero of the regulator inherent dynamic.
Real Ta
Amplifier time constant.
void setParameters(std::shared_ptr< Base::ExciterParameters > parameters) final
Initializes exciter parameters.
Real Tef
Field circuit time constant.
Real Tf
Stabilizer time constant.
Real Bef
Second ceiling coefficient.
Real Kef
Field circuit integral deviation.
Real Tr
Transducer time constant (s)
Real Aef
First ceiling coefficient.
Real Ta
Amplifier time constant.
Real Tr
Transducer time constant (s)
void setParameters(std::shared_ptr< Base::ExciterParameters > parameters) final
Initializes exciter parameters.
void setParameters(std::shared_ptr< Base::ExciterParameters > parameters) final
Initializes exciter parameters.
Real Tr
Transducer time constant (s) (optional parameter)
Real Kbc
Proportional gain of anti-Windup.
Real Ta
Time constant of the numerator in the lead lag block (s)
Real Tb
Time constant of the denumerator in the lead lag block (s)
Real Ka
Proportional controller with the gain Ka.
Real Te
Time constant of the exciter machine (s)
Real T3
Time constant of the second PT1 block (lag, denominator)
Real Pmin
Minimum mechanical power (pu)
Real T2
Time constant of the lead numerator.
Real OmRef
Speed setpoint (pu); typically 1.
Real T1
Time constant of the first PT1 block (lag, denominator)
Real Pmax
Maximum mechanical power (pu)
void initializeStates(Real Pref) final
Set steady-state initial values (call after setParameters, before first step)
void initializeStates(Real Pminit) final
Set steady-state initial values (call after setParameters, before first step)
Real Tw
Water starting time (s)
Real Kp
Gain for active power (pu/pu)
Real Vs_max
Max stabilizer output signal (pu)
Real T3
Third stabilizer time constant (s)
Real Vs_min
Min stabilizer output signal (pu)
Real Kv
Gain for bus voltage magnitude (pu/pu)
Real T4
Fourth stabilizer time constant (s)
Real Tw
Wash-out time constant (s)
Real T2
Second stabilizer time constant (s)
Real Kw
Stabilizer gain (pu/pu)
Real T1
First stabilizer time constant (s)
Real Pmin
Minimum mechanical power (pu)
Real dPmax
Maximum rate of change of Pgv (pu/s)
Real T3
Time constant T3 of the actuator.
Real Pmax
Maximum mechanical power (pu)
Real dPmin
Minimum rate of change of Pgv (pu/s)
Real T2
T2 related to the lead in the controller K(1+sT2)
Real R
Droop — the value 1/K in the controller K(1+sT2)/(1+sT1)
Real OmRef
Speed setpoint (pu); typically 1.
Real T1
T1 related to the lag in the controller K(1+sT2)/(1+sT1)
Real Kbc
Anti-windup proportional gain.
void initializeStates(Real Pref) final
Set steady-state initial values (call after setParameters, before first step)
void initializeStates(Real Pminit) final
Set steady-state initial values (call after setParameters, before first step)
Real Trh
Time constant of reheater (s)
Real Tco
Time constant of crossover piping and LP inlet volumes (s)
Real Fhp
Power fraction of the high-pressure stage.
Real Fip
Power fraction of the intermediate-pressure stage.
Real Tch
Time constant of main inlet volume and steam chest (s)
Real Flp
Power fraction of the low-pressure stage.
void setParameters(Real T3, Real T4, Real T5, Real Tc, Real Ts, Real R, Real Tmin, Real Tmax, Real OmRef)
Initializes exciter parameters.
void initializeStates(Real TmRef)