DPsim
Loading...
Searching...
No Matches
SignalComponents.cpp
1/* Copyright 2017-2021 Institute for Automation of Complex Power Systems,
2 * EONERC, RWTH Aachen University
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7 *********************************************************************************/
8
9#include <DPsim.h>
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>
24
25namespace py = pybind11;
26using namespace pybind11::literals;
27
28void addSignalComponents(py::module_ mSignal) {
29
31 std::shared_ptr<CPS::TopologicalSignalComp>,
32 CPS::IdentifiedObject>(mSignal, "TopologicalSignalComp");
33 py::class_<CPS::SimSignalComp, std::shared_ptr<CPS::SimSignalComp>,
34 CPS::TopologicalSignalComp>(mSignal, "SimSignalComp");
35
36 py::class_<CPS::Base::Exciter, std::shared_ptr<CPS::Base::Exciter>>(
37 mSignal, "Exciter");
38
40 std::shared_ptr<CPS::Base::ExciterParameters>>(
41 mSignal, "ExciterParameters");
42
44 std::shared_ptr<CPS::Signal::ExciterDC1Parameters>,
45 CPS::Base::ExciterParameters>(mSignal, "ExciterDC1Parameters")
46 .def(py::init<>())
47 .def_readwrite("Tr", &CPS::Signal::ExciterDC1Parameters::Tr)
48 .def_readwrite("Ta", &CPS::Signal::ExciterDC1Parameters::Ta)
49 .def_readwrite("Tb", &CPS::Signal::ExciterDC1Parameters::Tb)
50 .def_readwrite("Tc", &CPS::Signal::ExciterDC1Parameters::Tc)
51 .def_readwrite("Tef", &CPS::Signal::ExciterDC1Parameters::Tef)
52 .def_readwrite("Tf", &CPS::Signal::ExciterDC1Parameters::Tf)
53 .def_readwrite("Ka", &CPS::Signal::ExciterDC1Parameters::Ka)
54 .def_readwrite("Kef", &CPS::Signal::ExciterDC1Parameters::Kef)
55 .def_readwrite("Kf", &CPS::Signal::ExciterDC1Parameters::Kf)
56 .def_readwrite("Aef", &CPS::Signal::ExciterDC1Parameters::Aef)
57 .def_readwrite("Bef", &CPS::Signal::ExciterDC1Parameters::Bef)
58 .def_readwrite("MaxVa", &CPS::Signal::ExciterDC1Parameters::MaxVa)
59 .def_readwrite("MinVa", &CPS::Signal::ExciterDC1Parameters::MinVa);
60
62 std::shared_ptr<CPS::Signal::ExciterDC1SimpParameters>,
63 CPS::Base::ExciterParameters>(mSignal, "ExciterDC1SimpParameters")
64 .def(py::init<>())
67 .def_readwrite("Tef", &CPS::Signal::ExciterDC1SimpParameters::Tef)
70 .def_readwrite("Kef", &CPS::Signal::ExciterDC1SimpParameters::Kef)
72 .def_readwrite("Aef", &CPS::Signal::ExciterDC1SimpParameters::Aef)
73 .def_readwrite("Bef", &CPS::Signal::ExciterDC1SimpParameters::Bef)
74 .def_readwrite("MaxVa", &CPS::Signal::ExciterDC1SimpParameters::MaxVa)
75 .def_readwrite("MinVa", &CPS::Signal::ExciterDC1SimpParameters::MinVa);
76
78 std::shared_ptr<CPS::Signal::ExciterST1Parameters>,
79 CPS::Base::ExciterParameters>(mSignal, "ExciterST1Parameters")
80 .def(py::init<>())
81 .def_readwrite("Tr", &CPS::Signal::ExciterST1Parameters::Tr)
82 .def_readwrite("Ka", &CPS::Signal::ExciterST1Parameters::Ka)
83 .def_readwrite("MaxVa", &CPS::Signal::ExciterST1Parameters::MaxVa)
84 .def_readwrite("MinVa", &CPS::Signal::ExciterST1Parameters::MinVa);
85
87 std::shared_ptr<CPS::Signal::ExciterStaticParameters>,
88 CPS::Base::ExciterParameters>(mSignal, "ExciterStaticParameters")
89 .def(py::init<>())
90 .def_readwrite("Tr", &CPS::Signal::ExciterStaticParameters::Tr)
91 .def_readwrite("Ta", &CPS::Signal::ExciterStaticParameters::Ta)
92 .def_readwrite("Tb", &CPS::Signal::ExciterStaticParameters::Tb)
93 .def_readwrite("Te", &CPS::Signal::ExciterStaticParameters::Te)
94 .def_readwrite("Ka", &CPS::Signal::ExciterStaticParameters::Ka)
95 .def_readwrite("MaxEfd", &CPS::Signal::ExciterStaticParameters::MaxEfd)
96 .def_readwrite("MinEfd", &CPS::Signal::ExciterStaticParameters::MinEfd)
97 .def_readwrite("Kbc", &CPS::Signal::ExciterStaticParameters::Kbc);
98
99 py::class_<CPS::Signal::ExciterDC1, std::shared_ptr<CPS::Signal::ExciterDC1>,
100 CPS::SimSignalComp, CPS::Base::Exciter>(mSignal, "ExciterDC1",
101 py::multiple_inheritance())
102 .def(py::init<std::string>())
103 .def(py::init<std::string, CPS::Logger::Level>())
104 .def(
105 "set_parameters",
107 std::shared_ptr<CPS::Signal::ExciterDC1Parameters> params) {
108 self.setParameters(params);
109 },
110 "parameters"_a);
111
113 std::shared_ptr<CPS::Signal::ExciterDC1Simp>, CPS::SimSignalComp,
114 CPS::Base::Exciter>(mSignal, "ExciterDC1Simp",
115 py::multiple_inheritance())
116 .def(py::init<std::string>())
117 .def(py::init<std::string, CPS::Logger::Level>())
118 .def(
119 "set_parameters",
121 std::shared_ptr<CPS::Signal::ExciterDC1SimpParameters> params) {
122 self.setParameters(params);
123 },
124 "parameters"_a);
125
127 std::shared_ptr<CPS::Signal::ExciterST1Simp>, CPS::SimSignalComp,
128 CPS::Base::Exciter>(mSignal, "ExciterST1Simp",
129 py::multiple_inheritance())
130 .def(py::init<std::string>())
131 .def(py::init<std::string, CPS::Logger::Level>())
132 .def(
133 "set_parameters",
135 std::shared_ptr<CPS::Signal::ExciterST1Parameters> params) {
136 self.setParameters(params);
137 },
138 "parameters"_a);
139
141 std::shared_ptr<CPS::Signal::ExciterStatic>, CPS::SimSignalComp,
142 CPS::Base::Exciter>(mSignal, "ExciterStatic",
143 py::multiple_inheritance())
144 .def(py::init<std::string>())
145 .def(py::init<std::string, CPS::Logger::Level>())
146 .def(
147 "set_parameters",
149 std::shared_ptr<CPS::Signal::ExciterStaticParameters> params) {
150 self.setParameters(params);
151 },
152 "parameters"_a);
153
155 std::shared_ptr<CPS::Signal::DecouplingLine>, CPS::SimSignalComp>(
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,
161 "capacitance"_a)
162 .def("get_line_components",
163 &CPS::Signal::DecouplingLine::getLineComponents);
164
166 std::shared_ptr<CPS::Signal::DecouplingLineEMT>,
167 CPS::SimSignalComp>(mSignal, "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,
173 "capacitance"_a)
174 .def("get_line_components",
175 &CPS::Signal::DecouplingLineEMT::getLineComponents);
176
178 std::shared_ptr<CPS::Signal::DecouplingLineEMT_Ph3>,
179 CPS::SimSignalComp>(mSignal, "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,
185 "capacitance"_a)
186 .def("get_line_components",
187 &CPS::Signal::DecouplingLineEMT_Ph3::getLineComponents);
188
189 py::class_<CPS::Base::PSSParameters,
190 std::shared_ptr<CPS::Base::PSSParameters>>(mSignal,
191 "PSSParameters");
192
193 py::class_<CPS::Base::PSS, std::shared_ptr<CPS::Base::PSS>>(mSignal, "PSS");
194
196 std::shared_ptr<CPS::Signal::PSS1AParameters>,
197 CPS::Base::PSSParameters>(mSignal, "PSS1AParameters",
198 py::multiple_inheritance())
199 .def(py::init<>())
200 .def_readwrite("Kp", &CPS::Signal::PSS1AParameters::Kp)
201 .def_readwrite("Kv", &CPS::Signal::PSS1AParameters::Kv)
202 .def_readwrite("Kw", &CPS::Signal::PSS1AParameters::Kw)
203 .def_readwrite("T1", &CPS::Signal::PSS1AParameters::T1)
204 .def_readwrite("T2", &CPS::Signal::PSS1AParameters::T2)
205 .def_readwrite("T3", &CPS::Signal::PSS1AParameters::T3)
206 .def_readwrite("T4", &CPS::Signal::PSS1AParameters::T4)
207 .def_readwrite("Vs_max", &CPS::Signal::PSS1AParameters::Vs_max)
208 .def_readwrite("Vs_min", &CPS::Signal::PSS1AParameters::Vs_min)
209 .def_readwrite("Tw", &CPS::Signal::PSS1AParameters::Tw);
210
211 py::class_<CPS::Signal::PSS1A, std::shared_ptr<CPS::Signal::PSS1A>,
212 CPS::SimSignalComp, CPS::Base::PSS>(mSignal, "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,
217 "parameters"_a);
218
220 std::shared_ptr<CPS::Signal::TurbineGovernorType1>,
221 CPS::SimSignalComp>(mSignal, "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,
227 "OmRef"_a)
228 .def("initialize_states",
230
231 // Base Governor / Turbine
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");
237
239 std::shared_ptr<CPS::Base::TurbineParameters>>(
240 mSignal, "TurbineParameters");
241 py::class_<CPS::Base::Turbine, std::shared_ptr<CPS::Base::Turbine>>(
242 mSignal, "Turbine");
243
244 // SteamTurbineGovernor
246 std::shared_ptr<CPS::Signal::SteamGovernorParameters>,
247 CPS::Base::GovernorParameters>(mSignal, "SteamGovernorParameters",
248 py::multiple_inheritance())
249 .def(py::init<>())
250 .def_readwrite("R", &CPS::Signal::SteamGovernorParameters::R)
251 .def_readwrite("T1", &CPS::Signal::SteamGovernorParameters::T1)
252 .def_readwrite("T2", &CPS::Signal::SteamGovernorParameters::T2)
253 .def_readwrite("T3", &CPS::Signal::SteamGovernorParameters::T3)
254 .def_readwrite("dPmax", &CPS::Signal::SteamGovernorParameters::dPmax)
255 .def_readwrite("dPmin", &CPS::Signal::SteamGovernorParameters::dPmin)
256 .def_readwrite("Pmax", &CPS::Signal::SteamGovernorParameters::Pmax)
257 .def_readwrite("Pmin", &CPS::Signal::SteamGovernorParameters::Pmin)
258 .def_readwrite("OmRef", &CPS::Signal::SteamGovernorParameters::OmRef)
259 .def_readwrite("Kbc", &CPS::Signal::SteamGovernorParameters::Kbc);
260
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,
268 "parameters"_a)
269 .def("initialize_states",
271
272 // SteamTurbine
274 std::shared_ptr<CPS::Signal::SteamTurbineParameters>,
275 CPS::Base::TurbineParameters>(mSignal, "SteamTurbineParameters",
276 py::multiple_inheritance())
277 .def(py::init<>())
278 .def_readwrite("Fhp", &CPS::Signal::SteamTurbineParameters::Fhp)
279 .def_readwrite("Fip", &CPS::Signal::SteamTurbineParameters::Fip)
280 .def_readwrite("Flp", &CPS::Signal::SteamTurbineParameters::Flp)
281 .def_readwrite("Tch", &CPS::Signal::SteamTurbineParameters::Tch)
282 .def_readwrite("Trh", &CPS::Signal::SteamTurbineParameters::Trh)
283 .def_readwrite("Tco", &CPS::Signal::SteamTurbineParameters::Tco);
284
285 py::class_<CPS::Signal::SteamTurbine,
286 std::shared_ptr<CPS::Signal::SteamTurbine>, CPS::SimSignalComp,
287 CPS::Base::Turbine>(mSignal, "SteamTurbine",
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,
292 "parameters"_a)
293 .def("initialize_states", &CPS::Signal::SteamTurbine::initializeStates,
294 "Pminit"_a);
295
296 // HydroTurbineGovernor
298 std::shared_ptr<CPS::Signal::HydroGovernorParameters>,
299 CPS::Base::GovernorParameters>(mSignal, "HydroGovernorParameters",
300 py::multiple_inheritance())
301 .def(py::init<>())
302 .def_readwrite("R", &CPS::Signal::HydroGovernorParameters::R)
303 .def_readwrite("T1", &CPS::Signal::HydroGovernorParameters::T1)
304 .def_readwrite("T2", &CPS::Signal::HydroGovernorParameters::T2)
305 .def_readwrite("T3", &CPS::Signal::HydroGovernorParameters::T3)
306 .def_readwrite("Pmax", &CPS::Signal::HydroGovernorParameters::Pmax)
307 .def_readwrite("Pmin", &CPS::Signal::HydroGovernorParameters::Pmin)
308 .def_readwrite("OmRef", &CPS::Signal::HydroGovernorParameters::OmRef);
309
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,
317 "parameters"_a)
318 .def("initialize_states",
320
321 // HydroTurbine
323 std::shared_ptr<CPS::Signal::HydroTurbineParameters>,
324 CPS::Base::TurbineParameters>(mSignal, "HydroTurbineParameters",
325 py::multiple_inheritance())
326 .def(py::init<>())
327 .def_readwrite("Tw", &CPS::Signal::HydroTurbineParameters::Tw);
328
329 py::class_<CPS::Signal::HydroTurbine,
330 std::shared_ptr<CPS::Signal::HydroTurbine>, CPS::SimSignalComp,
331 CPS::Base::Turbine>(mSignal, "HydroTurbine",
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,
336 "parameters"_a)
337 .def("initialize_states", &CPS::Signal::HydroTurbine::initializeStates,
338 "Pminit"_a);
339}
Base model for exciters.
Base model for Governors.
Base model for power system stabilizers.
Definition Base_PSS.h:18
Base model for Turbines.
void setParameters(std::shared_ptr< Base::ExciterParameters > parameters) final
Initializes exciter parameters.
Real Aef
First ceiling coefficient.
Definition ExciterDC1.h:36
Real Tf
Stabilizer time constant.
Definition ExciterDC1.h:28
Real Kef
Field circuit integral deviation.
Definition ExciterDC1.h:32
Real Bef
Second ceiling coefficient.
Definition ExciterDC1.h:38
Real Tr
Transducer time constant (s)
Definition ExciterDC1.h:18
Real Tef
Field circuit time constant.
Definition ExciterDC1.h:26
Real Tb
Pole of the regulator inherent dynamic.
Definition ExciterDC1.h:22
Real Tc
Zero of the regulator inherent dynamic.
Definition ExciterDC1.h:24
Real Ta
Amplifier time constant.
Definition ExciterDC1.h:20
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)
Definition PSS1A.h:18
Real Vs_max
Max stabilizer output signal (pu)
Definition PSS1A.h:32
Real T3
Third stabilizer time constant (s)
Definition PSS1A.h:28
Real Vs_min
Min stabilizer output signal (pu)
Definition PSS1A.h:34
Real Kv
Gain for bus voltage magnitude (pu/pu)
Definition PSS1A.h:20
Real T4
Fourth stabilizer time constant (s)
Definition PSS1A.h:30
Real Tw
Wash-out time constant (s)
Definition PSS1A.h:36
Real T2
Second stabilizer time constant (s)
Definition PSS1A.h:26
Real Kw
Stabilizer gain (pu/pu)
Definition PSS1A.h:22
Real T1
First stabilizer time constant (s)
Definition PSS1A.h:24
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.