18 std::shared_ptr<Base::GovernorParameters> parameters) {
20 std::dynamic_pointer_cast<Signal::SteamGovernorParameters>(parameters);
24 "Type of parameters class of {} has to be SteamGovernorParameters!",
28 if (params->T3 <= 0) {
29 SPDLOG_LOGGER_ERROR(
mSLog,
"T3 must be positive for {}", this->
name());
33 SPDLOG_LOGGER_ERROR(
mSLog,
"R must be positive for {}", this->
name());
38 SPDLOG_LOGGER_INFO(
mSLog,
39 "\nSteam Governor parameters:"
50 mParameters->OmRef, mParameters->R, mParameters->T1,
51 mParameters->T2, mParameters->T3, mParameters->dPmax,
52 mParameters->dPmin, mParameters->Pmax, mParameters->Pmin,
94 mDelOm_2prev = mDelOm_prev;
95 mDelOm_prev = **mDelOm;
99 **mDelOm = mParameters->OmRef - Omega;
102 if (mParameters->T1 == 0) {
104 (1.0 / mParameters->R) *
105 (mDelOm_prev + (mParameters->T2 / dt) * (mDelOm_prev - mDelOm_2prev));
107 **mP1 = mP1_prev + (dt / mParameters->T1) * (mDelOm_prev * mCb - mP1_prev);
108 **mP = (1.0 / mParameters->R) * (mP1_prev + mDelOm_prev * mCa);
112 mDerPgv = (1.0 / mParameters->T3) * (mPref + **mP - **mPgv);
113 if (mDerPgv < mParameters->dPmin)
114 mDerPgv = mParameters->dPmin;
115 if (mDerPgv > mParameters->dPmax)
116 mDerPgv = mParameters->dPmax;
117 mDerPgv = mDerPgv - mParameters->Kbc * (**mPgvLim - **mPgv);
119 **mPgvLim = **mPgvLim + dt * mDerPgv;
122 if (**mPgvLim < mParameters->Pmin)
123 **mPgv = mParameters->Pmin;
124 else if (**mPgvLim > mParameters->Pmax)
125 **mPgv = mParameters->Pmax;