DPsim
Loading...
Searching...
No Matches
VCO.h
1// SPDX-FileCopyrightText: 2026 Institute for Automation of Complex Power Systems, EONERC, RWTH Aachen University
2// SPDX-License-Identifier: MPL-2.0
3
4#pragma once
5
6#include <vector>
7
8#include <dpsim-models/SimSignalComp.h>
9#include <dpsim-models/Task.h>
10
11namespace CPS {
12namespace Signal {
13class VCO : public SimSignalComp, public SharedFactory<VCO> {
14
15protected:
20
21public:
23 const Attribute<Real>::Ptr mInputRef;
25 const Attribute<Real>::Ptr mInputPrev;
27 const Attribute<Real>::Ptr mInputCurr;
29 const Attribute<Real>::Ptr mStatePrev;
31 const Attribute<Real>::Ptr mStateCurr;
33 const Attribute<Real>::Ptr mOutputPrev;
35 const Attribute<Real>::Ptr mOutputCurr;
36
37 VCO(String name, Logger::Level logLevel = Logger::Level::off);
39 void setParameters(Real omegaNom);
41 void setSimulationParameters(Real timestep);
43 void setInitialValues(Real input_init, Real state_init, Real output_init);
45 void signalPreStep(Real time, Int timeStepCount);
47 void signalStep(Real time, Int timeStepCount);
49 void signalAddPreStepDependencies(AttributeBase::List &prevStepDependencies,
50 AttributeBase::List &attributeDependencies,
51 AttributeBase::List &modifiedAttributes);
53 void signalAddStepDependencies(AttributeBase::List &prevStepDependencies,
54 AttributeBase::List &attributeDependencies,
55 AttributeBase::List &modifiedAttributes);
56
57 Task::List getTasks();
58
59 class PreStep : public Task {
60 public:
61 PreStep(VCO &VCO) : Task(**VCO.mName + ".PreStep"), mVCO(VCO) {
62 mVCO.signalAddPreStepDependencies(
63 mPrevStepDependencies, mAttributeDependencies, mModifiedAttributes);
64 }
65 void execute(Real time, Int timeStepCount) {
66 mVCO.signalPreStep(time, timeStepCount);
67 };
68
69 private:
70 VCO &mVCO;
71 };
72
73 class Step : public Task {
74 public:
75 Step(VCO &VCO) : Task(**VCO.mName + ".Step"), mVCO(VCO) {
76 mVCO.signalAddStepDependencies(
77 mPrevStepDependencies, mAttributeDependencies, mModifiedAttributes);
78 }
79 void execute(Real time, Int timeStepCount) {
80 mVCO.signalStep(time, timeStepCount);
81 };
82
83 private:
84 VCO &mVCO;
85 };
86};
87} // namespace Signal
88} // namespace CPS
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