FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
PidController.h
1#pragma once
2
111#include "trawl/subroutines/PidWithExternalState.h"
112
113#include <fhsim/simobject/SimObject.h>
114#include <string>
115
116class PidController : public SimObject
117{
118public:
119 PidController(std::string simObjectName, ISimObjectCreator* creator);
120
121 void OdeFcn(const double T, const double* const X, double* const XDot) const override;
122 void AcceptedStep(const double T, const double* const X) override;
123
124protected:
125 const double* Out(const double T, const double* const X);
126
128 double Error(const double T, const double* const X) const;
129
130 ISignalPort* m_inMeasurement;
131 ISignalPort* m_inReference;
132 PidWithExternalState m_controller;
133 int m_IStateIntegratedError = 0;
134 double m_output = 0.0;
135};
Definition PidController.h:117
ISignalPort * m_inReference
The desired value.
Definition PidController.h:131
double Error(const double T, const double *const X) const
Measurement - Reference; the controller negates it again (see "The sign of the gains").
ISignalPort * m_inMeasurement
The measured value.
Definition PidController.h:130
PID controller for use inside a SimObject, whose integral is a state that FhSim integrates.
Definition PidWithExternalState.h:44