更新了simulink控制器代码

This commit is contained in:
zjk
2025-06-18 22:30:06 +08:00
parent f170b741da
commit 44dd1f0470
11 changed files with 726 additions and 269 deletions

View File

@@ -164,7 +164,7 @@ ProcessConfig = pAUV150
//server_host = 10.127.0.18
//server_host = 127.0.0.1
server_host = 172.16.2.223
server_host = 172.18.96.1
LatOrigin = 43.825300
LongOrigin = -70.330400

View File

@@ -55,6 +55,10 @@ AUV150::AUV150()
m_overrived = true; //手动控制
m_control.initialize();
// Controler::rtP.pid_heading.P = 10.0f;
// Controler::rtP.pid_heading.I = 0.1;
// Controler::rtP.pid_heading.D = 0.1f;
}
//---------------------------------------------------------
@@ -101,30 +105,30 @@ bool AUV150::OnNewMail(MOOSMSG_LIST &NewMail)
m_overrived == true;
}
}
else if(key == "DESIRED_RUDDER")
{
if(m_overrived)
{
m_CommandFrame.rudderUp = msg.GetDouble() + 30.0f;
m_CommandFrame.rudderDown = msg.GetDouble() + 30.0f;
m_desiredVarTime = msg.GetTime();
}
}
else if(key == "DESIRED_ELEVATOR")
{
if(m_overrived)
{
m_CommandFrame.rudderLeft = msg.GetDouble()+ 30.0f;
m_CommandFrame.rudderRight = msg.GetDouble()+ 30.0f;
}
}
else if(key == "DESIRED_THRUST")
{
if(m_overrived)
{
m_CommandFrame.mainThruster = msg.GetDouble();
}
}
// else if(key == "DESIRED_RUDDER")
// {
// if(m_overrived)
// {
// m_CommandFrame.rudderUp = msg.GetDouble() + 30.0f;
// m_CommandFrame.rudderDown = msg.GetDouble() + 30.0f;
// m_desiredVarTime = msg.GetTime();
// }
// }
// else if(key == "DESIRED_ELEVATOR")
// {
// if(m_overrived)
// {
// m_CommandFrame.rudderLeft = msg.GetDouble()+ 30.0f;
// m_CommandFrame.rudderRight = msg.GetDouble()+ 30.0f;
// }
// }
// else if(key == "DESIRED_THRUST")
// {
// if(m_overrived)
// {
// m_CommandFrame.mainThruster = msg.GetDouble();
// }
// }
else if(key == "DESIRED_HEADING")
{
m_control.rtU.heading_cmd = msg.GetDouble();
@@ -317,10 +321,10 @@ bool AUV150::ListenLoop()
m_control.rtU.y = m_status.y;
m_control.rtU.z = m_status.z;
m_control.step();
m_CommandFrame.rudderUp = m_control.rtY.DirectUpperRudderServoAngleCmd + 30.0f;
m_CommandFrame.rudderDown = m_control.rtY.DirectLowerRudderServoAngleCmd + 30.0f;
m_CommandFrame.rudderLeft = m_control.rtY.DirectLeftRudderServoAngleCmd + 30.0f;
m_CommandFrame.rudderRight = m_control.rtY.DirectRightRudderServoAngleCmd + 30.0f;
m_CommandFrame.rudderUp = m_control.rtY.DirectUpperRudderServoAngleCmd + 35.0f;
m_CommandFrame.rudderDown = m_control.rtY.DirectLowerRudderServoAngleCmd + 35.0f;
m_CommandFrame.rudderLeft = m_control.rtY.DirectLeftRudderServoAngleCmd + 35.0f;
m_CommandFrame.rudderRight = m_control.rtY.DirectRightRudderServoAngleCmd + 35.0f;
m_CommandFrame.mainThruster = m_control.rtY.MainThrusterSpeedCmd;
// }
// 发送消息
@@ -473,7 +477,16 @@ bool AUV150::buildReport()
//=================DEGUB==========================
m_msgs << "MOOS_MANUAL_OVERIDE : " << m_overrived << std::endl;
m_msgs << "DirectUpperRudderServoAngleCmd : " << m_control.rtY.DirectUpperRudderServoAngleCmd << std::endl;
m_msgs << "DirectLowerRudderServoAngleCmd : " << m_control.rtY.DirectLowerRudderServoAngleCmd << std::endl;
m_msgs << "DirectLeftRudderServoAngleCmd : " << m_control.rtY.DirectLeftRudderServoAngleCmd << std::endl;
m_msgs << "DirectRightRudderServoAngleCmd : " << m_control.rtY.DirectRightRudderServoAngleCmd << std::endl;
m_msgs << "mainThruster : " << m_control.rtY.MainThrusterSpeedCmd << std::endl;
// m_CommandFrame.rudderUp = m_control.rtY.DirectUpperRudderServoAngleCmd + 35.0f;
// m_CommandFrame.rudderDown = m_control.rtY.DirectLowerRudderServoAngleCmd + 35.0f;
// m_CommandFrame.rudderLeft = m_control.rtY.DirectLeftRudderServoAngleCmd + 35.0f;
// m_CommandFrame.rudderRight = m_control.rtY.DirectRightRudderServoAngleCmd + 35.0f;
// m_CommandFrame.mainThruster = m_control.rtY.MainThrusterSpeedCmd;
// =============== Navigation Info ===============
printTable(
{"Connect", "Read", "Writ" ,"Conter" ,"Server ip","Latitude", "Longitude","Gap"},
@@ -538,10 +551,10 @@ bool AUV150::buildReport()
{
doubleToString(m_status.thrusterRPM, 1) + "rpm",
doubleToString(m_CommandFrame.mainThruster, 1) + "%",
doubleToString(m_CommandFrame.rudderUp-30.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderDown-30.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderLeft-30.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderRight-30.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderUp-35.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderDown-35.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderLeft-35.0f, 1) + "deg",
doubleToString(m_CommandFrame.rudderRight-35.0f, 1) + "deg",
}
);
// m_msgs << "---------------------------------\n";
@@ -587,8 +600,8 @@ bool AUV150::updateStatus(FeedbackFrame_150AUV &feedbackFrame)
m_status.velocityEast = feedbackFrame.velocityEast / 100.0f;
m_status.velocityNorth = feedbackFrame.velocityNorth / 100.0f;
m_status.velocityDown = feedbackFrame.velocityDown / 100.0f;
m_status.insLongitude = feedbackFrame.insLongitude / 1e7 - 180.0f;
m_status.insLatitude = feedbackFrame.insLatitude / 1e7 - 90.0f;
m_status.insLongitude = feedbackFrame.insLongitude / 1e5 - 180.0f;
m_status.insLatitude = feedbackFrame.insLatitude / 1e5 - 90.0f;
m_status.insAltitude = feedbackFrame.insAltitude / 100.0f;
m_status.dvlVelX = feedbackFrame.dvlVelX / 100.0f;
m_status.dvlVelY = feedbackFrame.dvlVelY / 100.0f;

View File

@@ -12,12 +12,16 @@ message(STATUS "Manually set MOOSGeodesy paths:")
message(STATUS " - Include dirs: ${MOOSGEODESY_INCLUDE_DIRS}")
message(STATUS " - Libraries: ${MOOSGEODESY_LIBRARIES}")
file(GLOB SRC_FILES
"*.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Controler/*.cpp"
)
SET(SRC
AUV150.cpp
AUV150_Info.cpp
main.cpp
# 添加Controller源文件
${CMAKE_CURRENT_SOURCE_DIR}/Controler/Controler.cpp
${SRC_FILES}
)
# 添加头文件目录

View File

@@ -7,9 +7,9 @@
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.11
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Tue Jun 17 18:31:17 2025
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
@@ -24,97 +24,305 @@
// Model step function
void Controler::step()
{
real_T rtb_DeadZone;
real_T rtb_Filter;
real_T rtb_FilterCoefficient;
real_T rtb_FilterCoefficient_a;
real_T rtb_FilterCoefficient_lc;
real_T rtb_IntegralGain;
real_T rtb_Sum1;
real_T rtb_Sum2;
real_T rtb_Filter_k;
real_T rtb_Integrator_l;
real_T rtb_Integrator_p;
int8_T tmp;
int8_T tmp_0;
boolean_T rtb_RelationalOperator;
// Outputs for Atomic SubSystem: '<Root>/Controler'
// Sum: '<S1>/Sum' incorporates:
// Inport: '<Root>/heading_cmd'
// Inport: '<Root>/psi'
rtb_Sum1 = rtU.heading_cmd - rtU.psi;
rtb_Filter = rtU.heading_cmd - rtU.psi;
// Gain: '<S42>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S34>/Filter'
// Gain: '<S32>/Derivative Gain'
// Sum: '<S34>/SumD'
// Gain: '<S38>/Integral Gain'
rtb_Integrator_l = rtP.pid_heading.I * rtb_Filter;
rtb_FilterCoefficient = (0.01 * rtb_Sum1 - rtDW.Filter_DSTATE) * 10.0;
// Gain: '<S44>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S36>/Filter'
// Gain: '<S34>/Derivative Gain'
// Sum: '<S36>/SumD'
// Outport: '<Root>/DirectUpperRudderServoAngleCmd' incorporates:
// DiscreteIntegrator: '<S39>/Integrator'
// Gain: '<S44>/Proportional Gain'
// Sum: '<S48>/Sum'
rtb_FilterCoefficient = (rtP.pid_heading.D * rtb_Filter - rtDW.Filter_DSTATE) *
rtP.pid_heading.N;
rtY.DirectUpperRudderServoAngleCmd = (0.1 * rtb_Sum1 + rtDW.Integrator_DSTATE)
+ rtb_FilterCoefficient;
// Sum: '<S50>/Sum' incorporates:
// DiscreteIntegrator: '<S41>/Integrator'
// Gain: '<S46>/Proportional Gain'
// Gain: '<S36>/Integral Gain'
rtb_IntegralGain = 0.0 * rtb_Sum1;
rtb_Filter = (rtP.pid_heading.P * rtb_Filter + rtDW.Integrator_DSTATE) +
rtb_FilterCoefficient;
// DeadZone: '<S33>/DeadZone' incorporates:
// Saturate: '<S48>/Saturation'
if (rtb_Filter > 35.0) {
rtb_Filter_k = rtb_Filter - 35.0;
// Switch: '<S31>/Switch1' incorporates:
// Constant: '<S31>/Constant'
tmp = 1;
// Outport: '<Root>/DirectUpperRudderServoAngleCmd'
rtY.DirectUpperRudderServoAngleCmd = 35.0;
} else {
if (rtb_Filter >= -35.0) {
rtb_Filter_k = 0.0;
} else {
rtb_Filter_k = rtb_Filter - -35.0;
}
// Switch: '<S31>/Switch1' incorporates:
// Constant: '<S31>/Constant2'
tmp = -1;
if (rtb_Filter < -35.0) {
// Outport: '<Root>/DirectUpperRudderServoAngleCmd'
rtY.DirectUpperRudderServoAngleCmd = -35.0;
} else {
// Outport: '<Root>/DirectUpperRudderServoAngleCmd'
rtY.DirectUpperRudderServoAngleCmd = rtb_Filter;
}
}
// End of DeadZone: '<S33>/DeadZone'
// RelationalOperator: '<S31>/Relational Operator' incorporates:
// Constant: '<S31>/Clamping_zero'
rtb_RelationalOperator = (rtb_Filter_k != 0.0);
// Sum: '<S1>/Sum1' incorporates:
// Inport: '<Root>/depth_cmd'
// Inport: '<Root>/z'
rtb_Sum1 = rtU.z - rtU.depth_cmd;
rtb_Filter_k = rtU.z - rtU.depth_cmd;
// Gain: '<S94>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S86>/Filter'
// Gain: '<S84>/Derivative Gain'
// Sum: '<S86>/SumD'
// Gain: '<S92>/Integral Gain'
rtb_Filter = 0.0 * rtb_Filter_k;
rtb_FilterCoefficient_lc = (0.0 * rtb_Sum1 - rtDW.Filter_DSTATE_m) * 10.0;
// Gain: '<S98>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S90>/Filter'
// Gain: '<S88>/Derivative Gain'
// Sum: '<S90>/SumD'
rtb_FilterCoefficient_lc = (0.0 * rtb_Filter_k - rtDW.Filter_DSTATE_m) * 10.0;
// Sum: '<S104>/Sum' incorporates:
// DiscreteIntegrator: '<S95>/Integrator'
// Gain: '<S100>/Proportional Gain'
rtb_Filter_k = (2.0 * rtb_Filter_k + rtDW.Integrator_DSTATE_o) +
rtb_FilterCoefficient_lc;
// DeadZone: '<S87>/DeadZone' incorporates:
// Saturate: '<S102>/Saturation'
if (rtb_Filter_k > 30.0) {
rtb_Integrator_p = rtb_Filter_k - 30.0;
rtb_Filter_k = 30.0;
} else {
if (rtb_Filter_k >= -30.0) {
rtb_Integrator_p = 0.0;
} else {
rtb_Integrator_p = rtb_Filter_k - -30.0;
}
if (rtb_Filter_k < -30.0) {
rtb_Filter_k = -30.0;
}
}
// End of DeadZone: '<S87>/DeadZone'
// Sum: '<S1>/Sum2' incorporates:
// DiscreteIntegrator: '<S91>/Integrator'
// Gain: '<S96>/Proportional Gain'
// Inport: '<Root>/theta'
// Sum: '<S100>/Sum'
// Saturate: '<S102>/Saturation'
rtb_Sum2 = ((2.0 * rtb_Sum1 + rtDW.Integrator_DSTATE_o) +
rtb_FilterCoefficient_lc) - rtU.theta;
rtb_Filter_k -= rtU.theta;
// Gain: '<S146>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S138>/Filter'
// Gain: '<S136>/Derivative Gain'
// Sum: '<S138>/SumD'
// Gain: '<S152>/Filter Coefficient' incorporates:
// DiscreteIntegrator: '<S144>/Filter'
// Gain: '<S142>/Derivative Gain'
// Sum: '<S144>/SumD'
rtb_FilterCoefficient_a = (0.1 * rtb_Sum2 - rtDW.Filter_DSTATE_l) * 10.0;
rtb_FilterCoefficient_a = (rtP.pid_pitch.D * rtb_Filter_k -
rtDW.Filter_DSTATE_l) * rtP.pid_pitch.N;
// Outport: '<Root>/DirectLeftRudderServoAngleCmd' incorporates:
// DiscreteIntegrator: '<S143>/Integrator'
// Gain: '<S148>/Proportional Gain'
// Sum: '<S152>/Sum'
// Sum: '<S158>/Sum' incorporates:
// DiscreteIntegrator: '<S149>/Integrator'
// Gain: '<S154>/Proportional Gain'
rtY.DirectLeftRudderServoAngleCmd = (0.5 * rtb_Sum2 + rtDW.Integrator_DSTATE_f)
+ rtb_FilterCoefficient_a;
rtb_DeadZone = (rtP.pid_pitch.P * rtb_Filter_k + rtDW.Integrator_DSTATE_f) +
rtb_FilterCoefficient_a;
// Update for DiscreteIntegrator: '<S34>/Filter'
// Saturate: '<S156>/Saturation' incorporates:
// DeadZone: '<S141>/DeadZone'
if (rtb_DeadZone > 35.0) {
// Outport: '<Root>/DirectLeftRudderServoAngleCmd'
rtY.DirectLeftRudderServoAngleCmd = 35.0;
rtb_DeadZone -= 35.0;
} else {
if (rtb_DeadZone < -35.0) {
// Outport: '<Root>/DirectLeftRudderServoAngleCmd'
rtY.DirectLeftRudderServoAngleCmd = -35.0;
} else {
// Outport: '<Root>/DirectLeftRudderServoAngleCmd'
rtY.DirectLeftRudderServoAngleCmd = rtb_DeadZone;
}
if (rtb_DeadZone >= -35.0) {
rtb_DeadZone = 0.0;
} else {
rtb_DeadZone -= -35.0;
}
}
// End of Saturate: '<S156>/Saturation'
// Gain: '<S146>/Integral Gain'
rtb_Filter_k *= rtP.pid_pitch.I;
// Switch: '<S31>/Switch2' incorporates:
// Constant: '<S31>/Clamping_zero'
// Constant: '<S31>/Constant3'
// Constant: '<S31>/Constant4'
// RelationalOperator: '<S31>/fix for DT propagation issue1'
if (rtb_Integrator_l > 0.0) {
tmp_0 = 1;
} else {
tmp_0 = -1;
}
// Switch: '<S31>/Switch' incorporates:
// Constant: '<S31>/Constant1'
// Logic: '<S31>/AND3'
// RelationalOperator: '<S31>/Equal1'
// Switch: '<S31>/Switch1'
// Switch: '<S31>/Switch2'
if (rtb_RelationalOperator && (tmp == tmp_0)) {
rtb_Integrator_l = 0.0;
}
// Update for DiscreteIntegrator: '<S41>/Integrator' incorporates:
// Switch: '<S31>/Switch'
rtDW.Integrator_DSTATE += rtb_Integrator_l;
if (rtDW.Integrator_DSTATE > 15.0) {
rtDW.Integrator_DSTATE = 15.0;
} else if (rtDW.Integrator_DSTATE < -15.0) {
rtDW.Integrator_DSTATE = -15.0;
}
// End of Update for DiscreteIntegrator: '<S41>/Integrator'
// Update for DiscreteIntegrator: '<S36>/Filter'
rtDW.Filter_DSTATE += 0.1 * rtb_FilterCoefficient;
// Update for DiscreteIntegrator: '<S39>/Integrator'
rtDW.Integrator_DSTATE += 0.1 * rtb_IntegralGain;
// Switch: '<S85>/Switch1' incorporates:
// Constant: '<S85>/Clamping_zero'
// Constant: '<S85>/Constant'
// Constant: '<S85>/Constant2'
// RelationalOperator: '<S85>/fix for DT propagation issue'
// Update for DiscreteIntegrator: '<S86>/Filter'
if (rtb_Integrator_p > 0.0) {
tmp = 1;
} else {
tmp = -1;
}
// Switch: '<S85>/Switch' incorporates:
// Constant: '<S85>/Clamping_zero'
// Constant: '<S85>/Constant1'
// Logic: '<S85>/AND3'
// RelationalOperator: '<S85>/Equal1'
// RelationalOperator: '<S85>/Relational Operator'
// Switch: '<S85>/Switch1'
// Switch: '<S85>/Switch2'
if ((rtb_Integrator_p != 0.0) && (tmp == -1)) {
rtb_Filter = 0.0;
}
// Update for DiscreteIntegrator: '<S95>/Integrator' incorporates:
// Switch: '<S85>/Switch'
rtDW.Integrator_DSTATE_o += rtb_Filter;
if (rtDW.Integrator_DSTATE_o > 10.0) {
rtDW.Integrator_DSTATE_o = 10.0;
} else if (rtDW.Integrator_DSTATE_o < -10.0) {
rtDW.Integrator_DSTATE_o = -10.0;
}
// End of Update for DiscreteIntegrator: '<S95>/Integrator'
// Update for DiscreteIntegrator: '<S90>/Filter'
rtDW.Filter_DSTATE_m += 0.1 * rtb_FilterCoefficient_lc;
// Update for DiscreteIntegrator: '<S91>/Integrator' incorporates:
// Gain: '<S88>/Integral Gain'
// Switch: '<S139>/Switch1' incorporates:
// Constant: '<S139>/Clamping_zero'
// Constant: '<S139>/Constant'
// Constant: '<S139>/Constant2'
// RelationalOperator: '<S139>/fix for DT propagation issue'
rtDW.Integrator_DSTATE_o += 0.0 * rtb_Sum1 * 0.1;
if (rtb_DeadZone > 0.0) {
tmp = 1;
} else {
tmp = -1;
}
// Update for DiscreteIntegrator: '<S138>/Filter'
// Switch: '<S139>/Switch2' incorporates:
// Constant: '<S139>/Clamping_zero'
// Constant: '<S139>/Constant3'
// Constant: '<S139>/Constant4'
// RelationalOperator: '<S139>/fix for DT propagation issue1'
if (rtb_Filter_k > 0.0) {
tmp_0 = 1;
} else {
tmp_0 = -1;
}
// Switch: '<S139>/Switch' incorporates:
// Constant: '<S139>/Clamping_zero'
// Constant: '<S139>/Constant1'
// Logic: '<S139>/AND3'
// RelationalOperator: '<S139>/Equal1'
// RelationalOperator: '<S139>/Relational Operator'
// Switch: '<S139>/Switch1'
// Switch: '<S139>/Switch2'
if ((rtb_DeadZone != 0.0) && (tmp == tmp_0)) {
rtb_Filter_k = 0.0;
}
// Update for DiscreteIntegrator: '<S149>/Integrator' incorporates:
// Switch: '<S139>/Switch'
rtDW.Integrator_DSTATE_f += rtb_Filter_k;
if (rtDW.Integrator_DSTATE_f > 15.0) {
rtDW.Integrator_DSTATE_f = 15.0;
} else if (rtDW.Integrator_DSTATE_f < -15.0) {
rtDW.Integrator_DSTATE_f = -15.0;
}
// End of Update for DiscreteIntegrator: '<S149>/Integrator'
// Update for DiscreteIntegrator: '<S144>/Filter'
rtDW.Filter_DSTATE_l += 0.1 * rtb_FilterCoefficient_a;
// Update for DiscreteIntegrator: '<S143>/Integrator' incorporates:
// Gain: '<S140>/Integral Gain'
rtDW.Integrator_DSTATE_f += 0.0 * rtb_Sum2 * 0.1;
// End of Outputs for SubSystem: '<Root>/Controler'
// Outport: '<Root>/MainThrusterSpeedCmd' incorporates:

View File

@@ -7,9 +7,9 @@
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.11
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Tue Jun 17 18:31:17 2025
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
@@ -22,6 +22,7 @@
#define Controler_h_
#include <cmath>
#include "rtwtypes.h"
#include "rt_nonfinite.h"
#include "Controler_types.h"
// Class declaration for model Controler
@@ -31,12 +32,12 @@ class Controler final
public:
// Block signals and states (default storage) for system '<Root>'
struct DW {
real_T Filter_DSTATE; // '<S34>/Filter'
real_T Integrator_DSTATE; // '<S39>/Integrator'
real_T Filter_DSTATE_m; // '<S86>/Filter'
real_T Integrator_DSTATE_o; // '<S91>/Integrator'
real_T Filter_DSTATE_l; // '<S138>/Filter'
real_T Integrator_DSTATE_f; // '<S143>/Integrator'
real_T Integrator_DSTATE; // '<S41>/Integrator'
real_T Filter_DSTATE; // '<S36>/Filter'
real_T Integrator_DSTATE_o; // '<S95>/Integrator'
real_T Filter_DSTATE_m; // '<S90>/Filter'
real_T Integrator_DSTATE_f; // '<S149>/Integrator'
real_T Filter_DSTATE_l; // '<S144>/Filter'
};
// External inputs (root inport signals with default storage)
@@ -71,6 +72,24 @@ class Controler final
// '<Root>/DirectRightRudderServoAngleCmd'
};
// Parameters (default storage)
struct P {
struct_n3jlyiLoC0PV1TieyhpPwD pid_heading;// Variable: pid_heading
// Referenced by:
// '<S34>/Derivative Gain'
// '<S38>/Integral Gain'
// '<S44>/Filter Coefficient'
// '<S46>/Proportional Gain'
struct_n3jlyiLoC0PV1TieyhpPwD pid_pitch;// Variable: pid_pitch
// Referenced by:
// '<S142>/Derivative Gain'
// '<S146>/Integral Gain'
// '<S152>/Filter Coefficient'
// '<S154>/Proportional Gain'
};
// Real-time Model Data Structure
struct RT_MODEL {
const char_T * volatile errorStatus;
@@ -116,6 +135,9 @@ class Controler final
// Block states
DW rtDW;
// Tunable parameters
static P rtP;
// Real-Time Model
RT_MODEL rtM;
};
@@ -138,172 +160,178 @@ class Controler final
// MATLAB hilite_system command to trace the generated code back
// to the parent model. For example,
//
// hilite_system('SimModelR2022b_0617/Controler') - opens subsystem SimModelR2022b_0617/Controler
// hilite_system('SimModelR2022b_0617/Controler/Kp') - opens and selects block Kp
// hilite_system('SimModel0618/Controler') - opens subsystem SimModel0618/Controler
// hilite_system('SimModel0618/Controler/Kp') - opens and selects block Kp
//
// Here is the system hierarchy for this model
//
// '<Root>' : 'SimModelR2022b_0617'
// '<S1>' : 'SimModelR2022b_0617/Controler'
// '<S2>' : 'SimModelR2022b_0617/Controler/PID Controller'
// '<S3>' : 'SimModelR2022b_0617/Controler/PID Controller1'
// '<S4>' : 'SimModelR2022b_0617/Controler/PID Controller2'
// '<S5>' : 'SimModelR2022b_0617/Controler/PID Controller/Anti-windup'
// '<S6>' : 'SimModelR2022b_0617/Controler/PID Controller/D Gain'
// '<S7>' : 'SimModelR2022b_0617/Controler/PID Controller/External Derivative'
// '<S8>' : 'SimModelR2022b_0617/Controler/PID Controller/Filter'
// '<S9>' : 'SimModelR2022b_0617/Controler/PID Controller/Filter ICs'
// '<S10>' : 'SimModelR2022b_0617/Controler/PID Controller/I Gain'
// '<S11>' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain'
// '<S12>' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain Fdbk'
// '<S13>' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator'
// '<S14>' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator ICs'
// '<S15>' : 'SimModelR2022b_0617/Controler/PID Controller/N Copy'
// '<S16>' : 'SimModelR2022b_0617/Controler/PID Controller/N Gain'
// '<S17>' : 'SimModelR2022b_0617/Controler/PID Controller/P Copy'
// '<S18>' : 'SimModelR2022b_0617/Controler/PID Controller/Parallel P Gain'
// '<S19>' : 'SimModelR2022b_0617/Controler/PID Controller/Reset Signal'
// '<S20>' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation'
// '<S21>' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation Fdbk'
// '<S22>' : 'SimModelR2022b_0617/Controler/PID Controller/Sum'
// '<S23>' : 'SimModelR2022b_0617/Controler/PID Controller/Sum Fdbk'
// '<S24>' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode'
// '<S25>' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode Sum'
// '<S26>' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Integral'
// '<S27>' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Ngain'
// '<S28>' : 'SimModelR2022b_0617/Controler/PID Controller/postSat Signal'
// '<S29>' : 'SimModelR2022b_0617/Controler/PID Controller/preInt Signal'
// '<S30>' : 'SimModelR2022b_0617/Controler/PID Controller/preSat Signal'
// '<S31>' : 'SimModelR2022b_0617/Controler/PID Controller/Anti-windup/Passthrough'
// '<S32>' : 'SimModelR2022b_0617/Controler/PID Controller/D Gain/Internal Parameters'
// '<S33>' : 'SimModelR2022b_0617/Controler/PID Controller/External Derivative/Error'
// '<S34>' : 'SimModelR2022b_0617/Controler/PID Controller/Filter/Disc. Forward Euler Filter'
// '<S35>' : 'SimModelR2022b_0617/Controler/PID Controller/Filter ICs/Internal IC - Filter'
// '<S36>' : 'SimModelR2022b_0617/Controler/PID Controller/I Gain/Internal Parameters'
// '<S37>' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain/Passthrough'
// '<S38>' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain Fdbk/Disabled'
// '<S39>' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator/Discrete'
// '<S40>' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator ICs/Internal IC'
// '<S41>' : 'SimModelR2022b_0617/Controler/PID Controller/N Copy/Disabled'
// '<S42>' : 'SimModelR2022b_0617/Controler/PID Controller/N Gain/Internal Parameters'
// '<S43>' : 'SimModelR2022b_0617/Controler/PID Controller/P Copy/Disabled'
// '<S44>' : 'SimModelR2022b_0617/Controler/PID Controller/Parallel P Gain/Internal Parameters'
// '<S45>' : 'SimModelR2022b_0617/Controler/PID Controller/Reset Signal/Disabled'
// '<S46>' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation/Passthrough'
// '<S47>' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation Fdbk/Disabled'
// '<S48>' : 'SimModelR2022b_0617/Controler/PID Controller/Sum/Sum_PID'
// '<S49>' : 'SimModelR2022b_0617/Controler/PID Controller/Sum Fdbk/Disabled'
// '<S50>' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode/Disabled'
// '<S51>' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode Sum/Passthrough'
// '<S52>' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Integral/TsSignalSpecification'
// '<S53>' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Ngain/Passthrough'
// '<S54>' : 'SimModelR2022b_0617/Controler/PID Controller/postSat Signal/Forward_Path'
// '<S55>' : 'SimModelR2022b_0617/Controler/PID Controller/preInt Signal/Internal PreInt'
// '<S56>' : 'SimModelR2022b_0617/Controler/PID Controller/preSat Signal/Forward_Path'
// '<S57>' : 'SimModelR2022b_0617/Controler/PID Controller1/Anti-windup'
// '<S58>' : 'SimModelR2022b_0617/Controler/PID Controller1/D Gain'
// '<S59>' : 'SimModelR2022b_0617/Controler/PID Controller1/External Derivative'
// '<S60>' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter'
// '<S61>' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter ICs'
// '<S62>' : 'SimModelR2022b_0617/Controler/PID Controller1/I Gain'
// '<S63>' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain'
// '<S64>' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain Fdbk'
// '<S65>' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator'
// '<S66>' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator ICs'
// '<S67>' : 'SimModelR2022b_0617/Controler/PID Controller1/N Copy'
// '<S68>' : 'SimModelR2022b_0617/Controler/PID Controller1/N Gain'
// '<S69>' : 'SimModelR2022b_0617/Controler/PID Controller1/P Copy'
// '<S70>' : 'SimModelR2022b_0617/Controler/PID Controller1/Parallel P Gain'
// '<S71>' : 'SimModelR2022b_0617/Controler/PID Controller1/Reset Signal'
// '<S72>' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation'
// '<S73>' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation Fdbk'
// '<S74>' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum'
// '<S75>' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum Fdbk'
// '<S76>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode'
// '<S77>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode Sum'
// '<S78>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Integral'
// '<S79>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Ngain'
// '<S80>' : 'SimModelR2022b_0617/Controler/PID Controller1/postSat Signal'
// '<S81>' : 'SimModelR2022b_0617/Controler/PID Controller1/preInt Signal'
// '<S82>' : 'SimModelR2022b_0617/Controler/PID Controller1/preSat Signal'
// '<S83>' : 'SimModelR2022b_0617/Controler/PID Controller1/Anti-windup/Passthrough'
// '<S84>' : 'SimModelR2022b_0617/Controler/PID Controller1/D Gain/Internal Parameters'
// '<S85>' : 'SimModelR2022b_0617/Controler/PID Controller1/External Derivative/Error'
// '<S86>' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter/Disc. Forward Euler Filter'
// '<S87>' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter ICs/Internal IC - Filter'
// '<S88>' : 'SimModelR2022b_0617/Controler/PID Controller1/I Gain/Internal Parameters'
// '<S89>' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain/Passthrough'
// '<S90>' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain Fdbk/Disabled'
// '<S91>' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator/Discrete'
// '<S92>' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator ICs/Internal IC'
// '<S93>' : 'SimModelR2022b_0617/Controler/PID Controller1/N Copy/Disabled'
// '<S94>' : 'SimModelR2022b_0617/Controler/PID Controller1/N Gain/Internal Parameters'
// '<S95>' : 'SimModelR2022b_0617/Controler/PID Controller1/P Copy/Disabled'
// '<S96>' : 'SimModelR2022b_0617/Controler/PID Controller1/Parallel P Gain/Internal Parameters'
// '<S97>' : 'SimModelR2022b_0617/Controler/PID Controller1/Reset Signal/Disabled'
// '<S98>' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation/Passthrough'
// '<S99>' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation Fdbk/Disabled'
// '<S100>' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum/Sum_PID'
// '<S101>' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum Fdbk/Disabled'
// '<S102>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode/Disabled'
// '<S103>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode Sum/Passthrough'
// '<S104>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Integral/TsSignalSpecification'
// '<S105>' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Ngain/Passthrough'
// '<S106>' : 'SimModelR2022b_0617/Controler/PID Controller1/postSat Signal/Forward_Path'
// '<S107>' : 'SimModelR2022b_0617/Controler/PID Controller1/preInt Signal/Internal PreInt'
// '<S108>' : 'SimModelR2022b_0617/Controler/PID Controller1/preSat Signal/Forward_Path'
// '<S109>' : 'SimModelR2022b_0617/Controler/PID Controller2/Anti-windup'
// '<S110>' : 'SimModelR2022b_0617/Controler/PID Controller2/D Gain'
// '<S111>' : 'SimModelR2022b_0617/Controler/PID Controller2/External Derivative'
// '<S112>' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter'
// '<S113>' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter ICs'
// '<S114>' : 'SimModelR2022b_0617/Controler/PID Controller2/I Gain'
// '<S115>' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain'
// '<S116>' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain Fdbk'
// '<S117>' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator'
// '<S118>' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator ICs'
// '<S119>' : 'SimModelR2022b_0617/Controler/PID Controller2/N Copy'
// '<S120>' : 'SimModelR2022b_0617/Controler/PID Controller2/N Gain'
// '<S121>' : 'SimModelR2022b_0617/Controler/PID Controller2/P Copy'
// '<S122>' : 'SimModelR2022b_0617/Controler/PID Controller2/Parallel P Gain'
// '<S123>' : 'SimModelR2022b_0617/Controler/PID Controller2/Reset Signal'
// '<S124>' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation'
// '<S125>' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation Fdbk'
// '<S126>' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum'
// '<S127>' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum Fdbk'
// '<S128>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode'
// '<S129>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode Sum'
// '<S130>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Integral'
// '<S131>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Ngain'
// '<S132>' : 'SimModelR2022b_0617/Controler/PID Controller2/postSat Signal'
// '<S133>' : 'SimModelR2022b_0617/Controler/PID Controller2/preInt Signal'
// '<S134>' : 'SimModelR2022b_0617/Controler/PID Controller2/preSat Signal'
// '<S135>' : 'SimModelR2022b_0617/Controler/PID Controller2/Anti-windup/Passthrough'
// '<S136>' : 'SimModelR2022b_0617/Controler/PID Controller2/D Gain/Internal Parameters'
// '<S137>' : 'SimModelR2022b_0617/Controler/PID Controller2/External Derivative/Error'
// '<S138>' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter/Disc. Forward Euler Filter'
// '<S139>' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter ICs/Internal IC - Filter'
// '<S140>' : 'SimModelR2022b_0617/Controler/PID Controller2/I Gain/Internal Parameters'
// '<S141>' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain/Passthrough'
// '<S142>' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain Fdbk/Disabled'
// '<S143>' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator/Discrete'
// '<S144>' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator ICs/Internal IC'
// '<S145>' : 'SimModelR2022b_0617/Controler/PID Controller2/N Copy/Disabled'
// '<S146>' : 'SimModelR2022b_0617/Controler/PID Controller2/N Gain/Internal Parameters'
// '<S147>' : 'SimModelR2022b_0617/Controler/PID Controller2/P Copy/Disabled'
// '<S148>' : 'SimModelR2022b_0617/Controler/PID Controller2/Parallel P Gain/Internal Parameters'
// '<S149>' : 'SimModelR2022b_0617/Controler/PID Controller2/Reset Signal/Disabled'
// '<S150>' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation/Passthrough'
// '<S151>' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation Fdbk/Disabled'
// '<S152>' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum/Sum_PID'
// '<S153>' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum Fdbk/Disabled'
// '<S154>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode/Disabled'
// '<S155>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode Sum/Passthrough'
// '<S156>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Integral/TsSignalSpecification'
// '<S157>' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Ngain/Passthrough'
// '<S158>' : 'SimModelR2022b_0617/Controler/PID Controller2/postSat Signal/Forward_Path'
// '<S159>' : 'SimModelR2022b_0617/Controler/PID Controller2/preInt Signal/Internal PreInt'
// '<S160>' : 'SimModelR2022b_0617/Controler/PID Controller2/preSat Signal/Forward_Path'
// '<Root>' : 'SimModel0618'
// '<S1>' : 'SimModel0618/Controler'
// '<S2>' : 'SimModel0618/Controler/PID Controller'
// '<S3>' : 'SimModel0618/Controler/PID Controller1'
// '<S4>' : 'SimModel0618/Controler/PID Controller2'
// '<S5>' : 'SimModel0618/Controler/PID Controller/Anti-windup'
// '<S6>' : 'SimModel0618/Controler/PID Controller/D Gain'
// '<S7>' : 'SimModel0618/Controler/PID Controller/External Derivative'
// '<S8>' : 'SimModel0618/Controler/PID Controller/Filter'
// '<S9>' : 'SimModel0618/Controler/PID Controller/Filter ICs'
// '<S10>' : 'SimModel0618/Controler/PID Controller/I Gain'
// '<S11>' : 'SimModel0618/Controler/PID Controller/Ideal P Gain'
// '<S12>' : 'SimModel0618/Controler/PID Controller/Ideal P Gain Fdbk'
// '<S13>' : 'SimModel0618/Controler/PID Controller/Integrator'
// '<S14>' : 'SimModel0618/Controler/PID Controller/Integrator ICs'
// '<S15>' : 'SimModel0618/Controler/PID Controller/N Copy'
// '<S16>' : 'SimModel0618/Controler/PID Controller/N Gain'
// '<S17>' : 'SimModel0618/Controler/PID Controller/P Copy'
// '<S18>' : 'SimModel0618/Controler/PID Controller/Parallel P Gain'
// '<S19>' : 'SimModel0618/Controler/PID Controller/Reset Signal'
// '<S20>' : 'SimModel0618/Controler/PID Controller/Saturation'
// '<S21>' : 'SimModel0618/Controler/PID Controller/Saturation Fdbk'
// '<S22>' : 'SimModel0618/Controler/PID Controller/Sum'
// '<S23>' : 'SimModel0618/Controler/PID Controller/Sum Fdbk'
// '<S24>' : 'SimModel0618/Controler/PID Controller/Tracking Mode'
// '<S25>' : 'SimModel0618/Controler/PID Controller/Tracking Mode Sum'
// '<S26>' : 'SimModel0618/Controler/PID Controller/Tsamp - Integral'
// '<S27>' : 'SimModel0618/Controler/PID Controller/Tsamp - Ngain'
// '<S28>' : 'SimModel0618/Controler/PID Controller/postSat Signal'
// '<S29>' : 'SimModel0618/Controler/PID Controller/preInt Signal'
// '<S30>' : 'SimModel0618/Controler/PID Controller/preSat Signal'
// '<S31>' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel'
// '<S32>' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone'
// '<S33>' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
// '<S34>' : 'SimModel0618/Controler/PID Controller/D Gain/Internal Parameters'
// '<S35>' : 'SimModel0618/Controler/PID Controller/External Derivative/Error'
// '<S36>' : 'SimModel0618/Controler/PID Controller/Filter/Disc. Forward Euler Filter'
// '<S37>' : 'SimModel0618/Controler/PID Controller/Filter ICs/Internal IC - Filter'
// '<S38>' : 'SimModel0618/Controler/PID Controller/I Gain/Internal Parameters'
// '<S39>' : 'SimModel0618/Controler/PID Controller/Ideal P Gain/Passthrough'
// '<S40>' : 'SimModel0618/Controler/PID Controller/Ideal P Gain Fdbk/Disabled'
// '<S41>' : 'SimModel0618/Controler/PID Controller/Integrator/Discrete'
// '<S42>' : 'SimModel0618/Controler/PID Controller/Integrator ICs/Internal IC'
// '<S43>' : 'SimModel0618/Controler/PID Controller/N Copy/Disabled'
// '<S44>' : 'SimModel0618/Controler/PID Controller/N Gain/Internal Parameters'
// '<S45>' : 'SimModel0618/Controler/PID Controller/P Copy/Disabled'
// '<S46>' : 'SimModel0618/Controler/PID Controller/Parallel P Gain/Internal Parameters'
// '<S47>' : 'SimModel0618/Controler/PID Controller/Reset Signal/Disabled'
// '<S48>' : 'SimModel0618/Controler/PID Controller/Saturation/Enabled'
// '<S49>' : 'SimModel0618/Controler/PID Controller/Saturation Fdbk/Disabled'
// '<S50>' : 'SimModel0618/Controler/PID Controller/Sum/Sum_PID'
// '<S51>' : 'SimModel0618/Controler/PID Controller/Sum Fdbk/Disabled'
// '<S52>' : 'SimModel0618/Controler/PID Controller/Tracking Mode/Disabled'
// '<S53>' : 'SimModel0618/Controler/PID Controller/Tracking Mode Sum/Passthrough'
// '<S54>' : 'SimModel0618/Controler/PID Controller/Tsamp - Integral/TsSignalSpecification'
// '<S55>' : 'SimModel0618/Controler/PID Controller/Tsamp - Ngain/Passthrough'
// '<S56>' : 'SimModel0618/Controler/PID Controller/postSat Signal/Forward_Path'
// '<S57>' : 'SimModel0618/Controler/PID Controller/preInt Signal/Internal PreInt'
// '<S58>' : 'SimModel0618/Controler/PID Controller/preSat Signal/Forward_Path'
// '<S59>' : 'SimModel0618/Controler/PID Controller1/Anti-windup'
// '<S60>' : 'SimModel0618/Controler/PID Controller1/D Gain'
// '<S61>' : 'SimModel0618/Controler/PID Controller1/External Derivative'
// '<S62>' : 'SimModel0618/Controler/PID Controller1/Filter'
// '<S63>' : 'SimModel0618/Controler/PID Controller1/Filter ICs'
// '<S64>' : 'SimModel0618/Controler/PID Controller1/I Gain'
// '<S65>' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain'
// '<S66>' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain Fdbk'
// '<S67>' : 'SimModel0618/Controler/PID Controller1/Integrator'
// '<S68>' : 'SimModel0618/Controler/PID Controller1/Integrator ICs'
// '<S69>' : 'SimModel0618/Controler/PID Controller1/N Copy'
// '<S70>' : 'SimModel0618/Controler/PID Controller1/N Gain'
// '<S71>' : 'SimModel0618/Controler/PID Controller1/P Copy'
// '<S72>' : 'SimModel0618/Controler/PID Controller1/Parallel P Gain'
// '<S73>' : 'SimModel0618/Controler/PID Controller1/Reset Signal'
// '<S74>' : 'SimModel0618/Controler/PID Controller1/Saturation'
// '<S75>' : 'SimModel0618/Controler/PID Controller1/Saturation Fdbk'
// '<S76>' : 'SimModel0618/Controler/PID Controller1/Sum'
// '<S77>' : 'SimModel0618/Controler/PID Controller1/Sum Fdbk'
// '<S78>' : 'SimModel0618/Controler/PID Controller1/Tracking Mode'
// '<S79>' : 'SimModel0618/Controler/PID Controller1/Tracking Mode Sum'
// '<S80>' : 'SimModel0618/Controler/PID Controller1/Tsamp - Integral'
// '<S81>' : 'SimModel0618/Controler/PID Controller1/Tsamp - Ngain'
// '<S82>' : 'SimModel0618/Controler/PID Controller1/postSat Signal'
// '<S83>' : 'SimModel0618/Controler/PID Controller1/preInt Signal'
// '<S84>' : 'SimModel0618/Controler/PID Controller1/preSat Signal'
// '<S85>' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel'
// '<S86>' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel/Dead Zone'
// '<S87>' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
// '<S88>' : 'SimModel0618/Controler/PID Controller1/D Gain/Internal Parameters'
// '<S89>' : 'SimModel0618/Controler/PID Controller1/External Derivative/Error'
// '<S90>' : 'SimModel0618/Controler/PID Controller1/Filter/Disc. Forward Euler Filter'
// '<S91>' : 'SimModel0618/Controler/PID Controller1/Filter ICs/Internal IC - Filter'
// '<S92>' : 'SimModel0618/Controler/PID Controller1/I Gain/Internal Parameters'
// '<S93>' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain/Passthrough'
// '<S94>' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain Fdbk/Disabled'
// '<S95>' : 'SimModel0618/Controler/PID Controller1/Integrator/Discrete'
// '<S96>' : 'SimModel0618/Controler/PID Controller1/Integrator ICs/Internal IC'
// '<S97>' : 'SimModel0618/Controler/PID Controller1/N Copy/Disabled'
// '<S98>' : 'SimModel0618/Controler/PID Controller1/N Gain/Internal Parameters'
// '<S99>' : 'SimModel0618/Controler/PID Controller1/P Copy/Disabled'
// '<S100>' : 'SimModel0618/Controler/PID Controller1/Parallel P Gain/Internal Parameters'
// '<S101>' : 'SimModel0618/Controler/PID Controller1/Reset Signal/Disabled'
// '<S102>' : 'SimModel0618/Controler/PID Controller1/Saturation/Enabled'
// '<S103>' : 'SimModel0618/Controler/PID Controller1/Saturation Fdbk/Disabled'
// '<S104>' : 'SimModel0618/Controler/PID Controller1/Sum/Sum_PID'
// '<S105>' : 'SimModel0618/Controler/PID Controller1/Sum Fdbk/Disabled'
// '<S106>' : 'SimModel0618/Controler/PID Controller1/Tracking Mode/Disabled'
// '<S107>' : 'SimModel0618/Controler/PID Controller1/Tracking Mode Sum/Passthrough'
// '<S108>' : 'SimModel0618/Controler/PID Controller1/Tsamp - Integral/TsSignalSpecification'
// '<S109>' : 'SimModel0618/Controler/PID Controller1/Tsamp - Ngain/Passthrough'
// '<S110>' : 'SimModel0618/Controler/PID Controller1/postSat Signal/Forward_Path'
// '<S111>' : 'SimModel0618/Controler/PID Controller1/preInt Signal/Internal PreInt'
// '<S112>' : 'SimModel0618/Controler/PID Controller1/preSat Signal/Forward_Path'
// '<S113>' : 'SimModel0618/Controler/PID Controller2/Anti-windup'
// '<S114>' : 'SimModel0618/Controler/PID Controller2/D Gain'
// '<S115>' : 'SimModel0618/Controler/PID Controller2/External Derivative'
// '<S116>' : 'SimModel0618/Controler/PID Controller2/Filter'
// '<S117>' : 'SimModel0618/Controler/PID Controller2/Filter ICs'
// '<S118>' : 'SimModel0618/Controler/PID Controller2/I Gain'
// '<S119>' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain'
// '<S120>' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain Fdbk'
// '<S121>' : 'SimModel0618/Controler/PID Controller2/Integrator'
// '<S122>' : 'SimModel0618/Controler/PID Controller2/Integrator ICs'
// '<S123>' : 'SimModel0618/Controler/PID Controller2/N Copy'
// '<S124>' : 'SimModel0618/Controler/PID Controller2/N Gain'
// '<S125>' : 'SimModel0618/Controler/PID Controller2/P Copy'
// '<S126>' : 'SimModel0618/Controler/PID Controller2/Parallel P Gain'
// '<S127>' : 'SimModel0618/Controler/PID Controller2/Reset Signal'
// '<S128>' : 'SimModel0618/Controler/PID Controller2/Saturation'
// '<S129>' : 'SimModel0618/Controler/PID Controller2/Saturation Fdbk'
// '<S130>' : 'SimModel0618/Controler/PID Controller2/Sum'
// '<S131>' : 'SimModel0618/Controler/PID Controller2/Sum Fdbk'
// '<S132>' : 'SimModel0618/Controler/PID Controller2/Tracking Mode'
// '<S133>' : 'SimModel0618/Controler/PID Controller2/Tracking Mode Sum'
// '<S134>' : 'SimModel0618/Controler/PID Controller2/Tsamp - Integral'
// '<S135>' : 'SimModel0618/Controler/PID Controller2/Tsamp - Ngain'
// '<S136>' : 'SimModel0618/Controler/PID Controller2/postSat Signal'
// '<S137>' : 'SimModel0618/Controler/PID Controller2/preInt Signal'
// '<S138>' : 'SimModel0618/Controler/PID Controller2/preSat Signal'
// '<S139>' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel'
// '<S140>' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel/Dead Zone'
// '<S141>' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled'
// '<S142>' : 'SimModel0618/Controler/PID Controller2/D Gain/Internal Parameters'
// '<S143>' : 'SimModel0618/Controler/PID Controller2/External Derivative/Error'
// '<S144>' : 'SimModel0618/Controler/PID Controller2/Filter/Disc. Forward Euler Filter'
// '<S145>' : 'SimModel0618/Controler/PID Controller2/Filter ICs/Internal IC - Filter'
// '<S146>' : 'SimModel0618/Controler/PID Controller2/I Gain/Internal Parameters'
// '<S147>' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain/Passthrough'
// '<S148>' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain Fdbk/Disabled'
// '<S149>' : 'SimModel0618/Controler/PID Controller2/Integrator/Discrete'
// '<S150>' : 'SimModel0618/Controler/PID Controller2/Integrator ICs/Internal IC'
// '<S151>' : 'SimModel0618/Controler/PID Controller2/N Copy/Disabled'
// '<S152>' : 'SimModel0618/Controler/PID Controller2/N Gain/Internal Parameters'
// '<S153>' : 'SimModel0618/Controler/PID Controller2/P Copy/Disabled'
// '<S154>' : 'SimModel0618/Controler/PID Controller2/Parallel P Gain/Internal Parameters'
// '<S155>' : 'SimModel0618/Controler/PID Controller2/Reset Signal/Disabled'
// '<S156>' : 'SimModel0618/Controler/PID Controller2/Saturation/Enabled'
// '<S157>' : 'SimModel0618/Controler/PID Controller2/Saturation Fdbk/Disabled'
// '<S158>' : 'SimModel0618/Controler/PID Controller2/Sum/Sum_PID'
// '<S159>' : 'SimModel0618/Controler/PID Controller2/Sum Fdbk/Disabled'
// '<S160>' : 'SimModel0618/Controler/PID Controller2/Tracking Mode/Disabled'
// '<S161>' : 'SimModel0618/Controler/PID Controller2/Tracking Mode Sum/Passthrough'
// '<S162>' : 'SimModel0618/Controler/PID Controller2/Tsamp - Integral/TsSignalSpecification'
// '<S163>' : 'SimModel0618/Controler/PID Controller2/Tsamp - Ngain/Passthrough'
// '<S164>' : 'SimModel0618/Controler/PID Controller2/postSat Signal/Forward_Path'
// '<S165>' : 'SimModel0618/Controler/PID Controller2/preInt Signal/Internal PreInt'
// '<S166>' : 'SimModel0618/Controler/PID Controller2/preSat Signal/Forward_Path'
#endif // Controler_h_

View File

@@ -0,0 +1,58 @@
//
// Academic License - for use in teaching, academic research, and meeting
// course requirements at degree granting institutions only. Not for
// government, commercial, or other organizational use.
//
// File: Controler_data.cpp
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
// Code generation objectives:
// 1. Execution efficiency
// 2. RAM efficiency
// Validation result: Not run
//
#include "Controler.h"
// Block parameters (default storage)
Controler::P Controler::rtP{
// Variable: pid_heading
// Referenced by:
// '<S34>/Derivative Gain'
// '<S38>/Integral Gain'
// '<S44>/Filter Coefficient'
// '<S46>/Proportional Gain'
{
1,
0.1,
0.01,
10.0
},
// Variable: pid_pitch
// Referenced by:
// '<S142>/Derivative Gain'
// '<S146>/Integral Gain'
// '<S152>/Filter Coefficient'
// '<S154>/Proportional Gain'
{
0.5,
0.1,
0.1,
10.0
}
};
//
// File trailer for generated code.
//
// [EOF]
//

View File

@@ -7,9 +7,9 @@
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.11
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Tue Jun 17 18:31:17 2025
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)

View File

@@ -7,9 +7,9 @@
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.11
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Tue Jun 17 18:31:17 2025
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
@@ -20,6 +20,19 @@
//
#ifndef Controler_types_h_
#define Controler_types_h_
#include "rtwtypes.h"
#ifndef DEFINED_TYPEDEF_FOR_struct_n3jlyiLoC0PV1TieyhpPwD_
#define DEFINED_TYPEDEF_FOR_struct_n3jlyiLoC0PV1TieyhpPwD_
struct struct_n3jlyiLoC0PV1TieyhpPwD
{
real_T P;
real_T I;
real_T D;
real_T N;
};
#endif
#endif // Controler_types_h_
//

View File

@@ -0,0 +1,80 @@
//
// Academic License - for use in teaching, academic research, and meeting
// course requirements at degree granting institutions only. Not for
// government, commercial, or other organizational use.
//
// File: rt_nonfinite.cpp
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
// Code generation objectives:
// 1. Execution efficiency
// 2. RAM efficiency
// Validation result: Not run
//
#include "rtwtypes.h"
extern "C"
{
#include "rt_nonfinite.h"
}
#include "limits"
#include "cmath"
extern "C"
{
real_T rtNaN { -std::numeric_limits<real_T>::quiet_NaN() };
real_T rtInf { std::numeric_limits<real_T>::infinity() };
real_T rtMinusInf { -std::numeric_limits<real_T>::infinity() };
real32_T rtNaNF { -std::numeric_limits<real32_T>::quiet_NaN() };
real32_T rtInfF { std::numeric_limits<real32_T>::infinity() };
real32_T rtMinusInfF { -std::numeric_limits<real32_T>::infinity() };
}
extern "C"
{
// Test if value is infinite
boolean_T rtIsInf(real_T value)
{
return std::isinf(value);
}
// Test if single-precision value is infinite
boolean_T rtIsInfF(real32_T value)
{
return std::isinf(value);
}
// Test if value is not a number
boolean_T rtIsNaN(real_T value)
{
return std::isnan(value);
}
// Test if single-precision value is not a number
boolean_T rtIsNaNF(real32_T value)
{
return std::isnan(value);
}
}
//
// File trailer for generated code.
//
// [EOF]
//

View File

@@ -0,0 +1,53 @@
//
// Academic License - for use in teaching, academic research, and meeting
// course requirements at degree granting institutions only. Not for
// government, commercial, or other organizational use.
//
// File: rt_nonfinite.h
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)
// Code generation objectives:
// 1. Execution efficiency
// 2. RAM efficiency
// Validation result: Not run
//
#ifndef rt_nonfinite_h_
#define rt_nonfinite_h_
#include "rtwtypes.h"
#ifdef __cplusplus
extern "C"
{
#endif
extern real_T rtInf;
extern real_T rtMinusInf;
extern real_T rtNaN;
extern real32_T rtInfF;
extern real32_T rtMinusInfF;
extern real32_T rtNaNF;
extern boolean_T rtIsInf(real_T value);
extern boolean_T rtIsInfF(real32_T value);
extern boolean_T rtIsNaN(real_T value);
extern boolean_T rtIsNaNF(real32_T value);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // rt_nonfinite_h_
//
// File trailer for generated code.
//
// [EOF]
//

View File

@@ -7,9 +7,9 @@
//
// Code generated for Simulink model 'Controler'.
//
// Model version : 5.11
// Model version : 5.37
// Simulink Coder version : 24.2 (R2024b) 21-Jun-2024
// C/C++ source code generated on : Tue Jun 17 18:31:17 2025
// C/C++ source code generated on : Wed Jun 18 17:26:02 2025
//
// Target selection: ert.tlc
// Embedded hardware selection: Intel->x86-64 (Linux 64)