DPsim
Loading...
Searching...
No Matches
VCO.cpp
1// SPDX-FileCopyrightText: 2026 Institute for Automation of Complex Power Systems, EONERC, RWTH Aachen University
2// SPDX-License-Identifier: MPL-2.0
3
4#include <dpsim-models/Signal/VCO.h>
5
6using namespace CPS;
7using namespace CPS::Signal;
8
9VCO::VCO(String name, Logger::Level logLevel)
10 : SimSignalComp(name, name, logLevel),
11 mInputRef(mAttributes->createDynamic<Real>("input_ref")),
12 mInputPrev(mAttributes->create<Real>("input_prev", 0)),
13 mStatePrev(mAttributes->create<Real>("state_prev", 0)),
14 mOutputPrev(mAttributes->create<Real>("output_prev", 0)),
15 mInputCurr(mAttributes->create<Real>("input_curr", 0)),
16 mStateCurr(mAttributes->create<Real>("state_curr", 0)),
17 mOutputCurr(mAttributes->create<Real>("output_curr", 0)) {}
18
19void VCO::setParameters(Real omegaNom) {
20 // Input is OmegaNom
21 // Output is Theta
22 mOmegaNom = omegaNom;
23 SPDLOG_LOGGER_INFO(mSLog, "OmegaNom = {}", mOmegaNom);
24
27}
28
29void VCO::setSimulationParameters(Real timestep) {
30 mTimeStep = timestep;
31 SPDLOG_LOGGER_INFO(mSLog, "Integration step = {}", mTimeStep);
32}
33
34void VCO::setInitialValues(Real input_init, Real state_init, Real output_init) {
35 **mInputCurr = input_init;
36 **mStateCurr = state_init;
37 **mOutputCurr = output_init;
38
39 SPDLOG_LOGGER_INFO(mSLog, "Initial values:");
40 SPDLOG_LOGGER_INFO(
41 mSLog,
42 "inputCurrInit = ({}), stateCurrInit = ({}), outputCurrInit = ({})",
44}
45
47 AttributeBase::List &prevStepDependencies,
48 AttributeBase::List &attributeDependencies,
49 AttributeBase::List &modifiedAttributes) {
50 prevStepDependencies.push_back(mInputCurr);
51 prevStepDependencies.push_back(mOutputCurr);
52 modifiedAttributes.push_back(mInputPrev);
53 modifiedAttributes.push_back(mOutputPrev);
54};
55
56void VCO::signalPreStep(Real time, Int timeStepCount) {
60}
61
62void VCO::signalAddStepDependencies(AttributeBase::List &prevStepDependencies,
63 AttributeBase::List &attributeDependencies,
64 AttributeBase::List &modifiedAttributes) {
65 attributeDependencies.push_back(mInputRef);
66 modifiedAttributes.push_back(mInputCurr);
67 modifiedAttributes.push_back(mOutputCurr);
68};
69
70void VCO::signalStep(Real time, Int timeStepCount) {
72
73 SPDLOG_LOGGER_DEBUG(
74 mSLog,
75 "Time {}\n: inputCurr = \n{}\n , inputPrev = \n{}\n , statePrev = \n{}",
76 time, **mInputCurr, **mInputPrev, **mStatePrev);
77
78 // calculate new states
80 SPDLOG_LOGGER_DEBUG(mSLog, "stateCurr = \n {}", **mStateCurr);
81
82 // calculate new outputs
84 SPDLOG_LOGGER_DEBUG(mSLog, "Output values: outputCurr = \n{}", **mOutputCurr);
85}
86
87Task::List VCO::getTasks() {
88 return Task::List(
89 {std::make_shared<PreStep>(*this), std::make_shared<Step>(*this)});
90}
Real mOmegaNom
Nominal frequency (Input)
Definition VCO.h:17
void signalPreStep(Real time, Int timeStepCount)
pre step operations
Definition VCO.cpp:56
void signalAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes)
pre step dependencies
Definition VCO.cpp:46
const Attribute< Real >::Ptr mInputPrev
Previous Input.
Definition VCO.h:25
const Attribute< Real >::Ptr mOutputPrev
Previous Output.
Definition VCO.h:33
void setParameters(Real omegaNom)
Setter for VCO parameters.
Definition VCO.cpp:19
void signalAddStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes)
add step dependencies
Definition VCO.cpp:62
void setInitialValues(Real input_init, Real state_init, Real output_init)
Setter for initial values.
Definition VCO.cpp:34
const Attribute< Real >::Ptr mOutputCurr
Current Output.
Definition VCO.h:35
const Attribute< Real >::Ptr mInputRef
Input reference which comes as measurement from outside of the class.
Definition VCO.h:23
const Attribute< Real >::Ptr mInputCurr
Current Input.
Definition VCO.h:27
void signalStep(Real time, Int timeStepCount)
step operations
Definition VCO.cpp:70
void setSimulationParameters(Real timestep)
Setter for simulation parameters.
Definition VCO.cpp:29
const Attribute< Real >::Ptr mStateCurr
Current State.
Definition VCO.h:31
const Attribute< Real >::Ptr mStatePrev
Previous State.
Definition VCO.h:29
Real mTimeStep
Integration time step.
Definition VCO.h:19
Logger::Log mSLog
Component logger.