From 44dd1f04700e6616657cc994a820cf7673a360bf Mon Sep 17 00:00:00 2001 From: zjk <1553836110@qq.com> Date: Wed, 18 Jun 2025 22:30:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86simulink=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=99=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- missions/alder/alder.moos | 2 +- src/pAUV150/AUV150.cpp | 83 +++-- src/pAUV150/CMakeLists.txt | 8 +- src/pAUV150/Controler/Controler.cpp | 316 ++++++++++++++---- src/pAUV150/Controler/Controler.h | 370 ++++++++++++---------- src/pAUV150/Controler/Controler_data.cpp | 58 ++++ src/pAUV150/Controler/Controler_private.h | 4 +- src/pAUV150/Controler/Controler_types.h | 17 +- src/pAUV150/Controler/rt_nonfinite.cpp | 80 +++++ src/pAUV150/Controler/rt_nonfinite.h | 53 ++++ src/pAUV150/Controler/rtwtypes.h | 4 +- 11 files changed, 726 insertions(+), 269 deletions(-) create mode 100644 src/pAUV150/Controler/Controler_data.cpp create mode 100644 src/pAUV150/Controler/rt_nonfinite.cpp create mode 100644 src/pAUV150/Controler/rt_nonfinite.h diff --git a/missions/alder/alder.moos b/missions/alder/alder.moos index 812c8a7..044b8ae 100644 --- a/missions/alder/alder.moos +++ b/missions/alder/alder.moos @@ -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 diff --git a/src/pAUV150/AUV150.cpp b/src/pAUV150/AUV150.cpp index 3b63e4a..07571fc 100644 --- a/src/pAUV150/AUV150.cpp +++ b/src/pAUV150/AUV150.cpp @@ -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; diff --git a/src/pAUV150/CMakeLists.txt b/src/pAUV150/CMakeLists.txt index 0df5049..f0825be 100644 --- a/src/pAUV150/CMakeLists.txt +++ b/src/pAUV150/CMakeLists.txt @@ -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} ) # 添加头文件目录 diff --git a/src/pAUV150/Controler/Controler.cpp b/src/pAUV150/Controler/Controler.cpp index 2dcdd89..45a50b5 100644 --- a/src/pAUV150/Controler/Controler.cpp +++ b/src/pAUV150/Controler/Controler.cpp @@ -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: '/Controler' // Sum: '/Sum' incorporates: // Inport: '/heading_cmd' // Inport: '/psi' - rtb_Sum1 = rtU.heading_cmd - rtU.psi; + rtb_Filter = rtU.heading_cmd - rtU.psi; - // Gain: '/Filter Coefficient' incorporates: - // DiscreteIntegrator: '/Filter' - // Gain: '/Derivative Gain' - // Sum: '/SumD' + // Gain: '/Integral Gain' + rtb_Integrator_l = rtP.pid_heading.I * rtb_Filter; - rtb_FilterCoefficient = (0.01 * rtb_Sum1 - rtDW.Filter_DSTATE) * 10.0; + // Gain: '/Filter Coefficient' incorporates: + // DiscreteIntegrator: '/Filter' + // Gain: '/Derivative Gain' + // Sum: '/SumD' - // Outport: '/DirectUpperRudderServoAngleCmd' incorporates: - // DiscreteIntegrator: '/Integrator' - // Gain: '/Proportional Gain' - // Sum: '/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: '/Sum' incorporates: + // DiscreteIntegrator: '/Integrator' + // Gain: '/Proportional Gain' - // Gain: '/Integral Gain' - rtb_IntegralGain = 0.0 * rtb_Sum1; + rtb_Filter = (rtP.pid_heading.P * rtb_Filter + rtDW.Integrator_DSTATE) + + rtb_FilterCoefficient; + + // DeadZone: '/DeadZone' incorporates: + // Saturate: '/Saturation' + + if (rtb_Filter > 35.0) { + rtb_Filter_k = rtb_Filter - 35.0; + + // Switch: '/Switch1' incorporates: + // Constant: '/Constant' + + tmp = 1; + + // Outport: '/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: '/Switch1' incorporates: + // Constant: '/Constant2' + + tmp = -1; + if (rtb_Filter < -35.0) { + // Outport: '/DirectUpperRudderServoAngleCmd' + rtY.DirectUpperRudderServoAngleCmd = -35.0; + } else { + // Outport: '/DirectUpperRudderServoAngleCmd' + rtY.DirectUpperRudderServoAngleCmd = rtb_Filter; + } + } + + // End of DeadZone: '/DeadZone' + + // RelationalOperator: '/Relational Operator' incorporates: + // Constant: '/Clamping_zero' + + rtb_RelationalOperator = (rtb_Filter_k != 0.0); // Sum: '/Sum1' incorporates: // Inport: '/depth_cmd' // Inport: '/z' - rtb_Sum1 = rtU.z - rtU.depth_cmd; + rtb_Filter_k = rtU.z - rtU.depth_cmd; - // Gain: '/Filter Coefficient' incorporates: - // DiscreteIntegrator: '/Filter' - // Gain: '/Derivative Gain' - // Sum: '/SumD' + // Gain: '/Integral Gain' + rtb_Filter = 0.0 * rtb_Filter_k; - rtb_FilterCoefficient_lc = (0.0 * rtb_Sum1 - rtDW.Filter_DSTATE_m) * 10.0; + // Gain: '/Filter Coefficient' incorporates: + // DiscreteIntegrator: '/Filter' + // Gain: '/Derivative Gain' + // Sum: '/SumD' + + rtb_FilterCoefficient_lc = (0.0 * rtb_Filter_k - rtDW.Filter_DSTATE_m) * 10.0; + + // Sum: '/Sum' incorporates: + // DiscreteIntegrator: '/Integrator' + // Gain: '/Proportional Gain' + + rtb_Filter_k = (2.0 * rtb_Filter_k + rtDW.Integrator_DSTATE_o) + + rtb_FilterCoefficient_lc; + + // DeadZone: '/DeadZone' incorporates: + // Saturate: '/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: '/DeadZone' // Sum: '/Sum2' incorporates: - // DiscreteIntegrator: '/Integrator' - // Gain: '/Proportional Gain' // Inport: '/theta' - // Sum: '/Sum' + // Saturate: '/Saturation' - rtb_Sum2 = ((2.0 * rtb_Sum1 + rtDW.Integrator_DSTATE_o) + - rtb_FilterCoefficient_lc) - rtU.theta; + rtb_Filter_k -= rtU.theta; - // Gain: '/Filter Coefficient' incorporates: - // DiscreteIntegrator: '/Filter' - // Gain: '/Derivative Gain' - // Sum: '/SumD' + // Gain: '/Filter Coefficient' incorporates: + // DiscreteIntegrator: '/Filter' + // Gain: '/Derivative Gain' + // Sum: '/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: '/DirectLeftRudderServoAngleCmd' incorporates: - // DiscreteIntegrator: '/Integrator' - // Gain: '/Proportional Gain' - // Sum: '/Sum' + // Sum: '/Sum' incorporates: + // DiscreteIntegrator: '/Integrator' + // Gain: '/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: '/Filter' + // Saturate: '/Saturation' incorporates: + // DeadZone: '/DeadZone' + + if (rtb_DeadZone > 35.0) { + // Outport: '/DirectLeftRudderServoAngleCmd' + rtY.DirectLeftRudderServoAngleCmd = 35.0; + rtb_DeadZone -= 35.0; + } else { + if (rtb_DeadZone < -35.0) { + // Outport: '/DirectLeftRudderServoAngleCmd' + rtY.DirectLeftRudderServoAngleCmd = -35.0; + } else { + // Outport: '/DirectLeftRudderServoAngleCmd' + rtY.DirectLeftRudderServoAngleCmd = rtb_DeadZone; + } + + if (rtb_DeadZone >= -35.0) { + rtb_DeadZone = 0.0; + } else { + rtb_DeadZone -= -35.0; + } + } + + // End of Saturate: '/Saturation' + + // Gain: '/Integral Gain' + rtb_Filter_k *= rtP.pid_pitch.I; + + // Switch: '/Switch2' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant3' + // Constant: '/Constant4' + // RelationalOperator: '/fix for DT propagation issue1' + + if (rtb_Integrator_l > 0.0) { + tmp_0 = 1; + } else { + tmp_0 = -1; + } + + // Switch: '/Switch' incorporates: + // Constant: '/Constant1' + // Logic: '/AND3' + // RelationalOperator: '/Equal1' + // Switch: '/Switch1' + // Switch: '/Switch2' + + if (rtb_RelationalOperator && (tmp == tmp_0)) { + rtb_Integrator_l = 0.0; + } + + // Update for DiscreteIntegrator: '/Integrator' incorporates: + // Switch: '/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: '/Integrator' + + // Update for DiscreteIntegrator: '/Filter' rtDW.Filter_DSTATE += 0.1 * rtb_FilterCoefficient; - // Update for DiscreteIntegrator: '/Integrator' - rtDW.Integrator_DSTATE += 0.1 * rtb_IntegralGain; + // Switch: '/Switch1' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant' + // Constant: '/Constant2' + // RelationalOperator: '/fix for DT propagation issue' - // Update for DiscreteIntegrator: '/Filter' + if (rtb_Integrator_p > 0.0) { + tmp = 1; + } else { + tmp = -1; + } + + // Switch: '/Switch' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant1' + // Logic: '/AND3' + // RelationalOperator: '/Equal1' + // RelationalOperator: '/Relational Operator' + // Switch: '/Switch1' + // Switch: '/Switch2' + + if ((rtb_Integrator_p != 0.0) && (tmp == -1)) { + rtb_Filter = 0.0; + } + + // Update for DiscreteIntegrator: '/Integrator' incorporates: + // Switch: '/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: '/Integrator' + + // Update for DiscreteIntegrator: '/Filter' rtDW.Filter_DSTATE_m += 0.1 * rtb_FilterCoefficient_lc; - // Update for DiscreteIntegrator: '/Integrator' incorporates: - // Gain: '/Integral Gain' + // Switch: '/Switch1' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant' + // Constant: '/Constant2' + // RelationalOperator: '/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: '/Filter' + // Switch: '/Switch2' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant3' + // Constant: '/Constant4' + // RelationalOperator: '/fix for DT propagation issue1' + + if (rtb_Filter_k > 0.0) { + tmp_0 = 1; + } else { + tmp_0 = -1; + } + + // Switch: '/Switch' incorporates: + // Constant: '/Clamping_zero' + // Constant: '/Constant1' + // Logic: '/AND3' + // RelationalOperator: '/Equal1' + // RelationalOperator: '/Relational Operator' + // Switch: '/Switch1' + // Switch: '/Switch2' + + if ((rtb_DeadZone != 0.0) && (tmp == tmp_0)) { + rtb_Filter_k = 0.0; + } + + // Update for DiscreteIntegrator: '/Integrator' incorporates: + // Switch: '/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: '/Integrator' + + // Update for DiscreteIntegrator: '/Filter' rtDW.Filter_DSTATE_l += 0.1 * rtb_FilterCoefficient_a; - // Update for DiscreteIntegrator: '/Integrator' incorporates: - // Gain: '/Integral Gain' - - rtDW.Integrator_DSTATE_f += 0.0 * rtb_Sum2 * 0.1; - // End of Outputs for SubSystem: '/Controler' // Outport: '/MainThrusterSpeedCmd' incorporates: diff --git a/src/pAUV150/Controler/Controler.h b/src/pAUV150/Controler/Controler.h index 184f3f2..b04cd7a 100644 --- a/src/pAUV150/Controler/Controler.h +++ b/src/pAUV150/Controler/Controler.h @@ -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 #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 '' struct DW { - real_T Filter_DSTATE; // '/Filter' - real_T Integrator_DSTATE; // '/Integrator' - real_T Filter_DSTATE_m; // '/Filter' - real_T Integrator_DSTATE_o; // '/Integrator' - real_T Filter_DSTATE_l; // '/Filter' - real_T Integrator_DSTATE_f; // '/Integrator' + real_T Integrator_DSTATE; // '/Integrator' + real_T Filter_DSTATE; // '/Filter' + real_T Integrator_DSTATE_o; // '/Integrator' + real_T Filter_DSTATE_m; // '/Filter' + real_T Integrator_DSTATE_f; // '/Integrator' + real_T Filter_DSTATE_l; // '/Filter' }; // External inputs (root inport signals with default storage) @@ -71,6 +72,24 @@ class Controler final // '/DirectRightRudderServoAngleCmd' }; + // Parameters (default storage) + struct P { + struct_n3jlyiLoC0PV1TieyhpPwD pid_heading;// Variable: pid_heading + // Referenced by: + // '/Derivative Gain' + // '/Integral Gain' + // '/Filter Coefficient' + // '/Proportional Gain' + + struct_n3jlyiLoC0PV1TieyhpPwD pid_pitch;// Variable: pid_pitch + // Referenced by: + // '/Derivative Gain' + // '/Integral Gain' + // '/Filter Coefficient' + // '/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 // -// '' : 'SimModelR2022b_0617' -// '' : 'SimModelR2022b_0617/Controler' -// '' : 'SimModelR2022b_0617/Controler/PID Controller' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Anti-windup' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/D Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/External Derivative' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Filter ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/I Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/N Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/N Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/P Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Parallel P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Reset Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Sum Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Integral' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Ngain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/postSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/preInt Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/preSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Anti-windup/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/D Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/External Derivative/Error' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Filter/Disc. Forward Euler Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Filter ICs/Internal IC - Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/I Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Ideal P Gain Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator/Discrete' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Integrator ICs/Internal IC' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/N Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/N Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/P Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Parallel P Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Reset Signal/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Saturation Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Sum/Sum_PID' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Sum Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tracking Mode Sum/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Integral/TsSignalSpecification' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/Tsamp - Ngain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/postSat Signal/Forward_Path' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/preInt Signal/Internal PreInt' -// '' : 'SimModelR2022b_0617/Controler/PID Controller/preSat Signal/Forward_Path' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Anti-windup' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/D Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/External Derivative' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/I Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/N Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/N Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/P Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Parallel P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Reset Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Integral' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Ngain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/postSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/preInt Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/preSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Anti-windup/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/D Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/External Derivative/Error' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter/Disc. Forward Euler Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Filter ICs/Internal IC - Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/I Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Ideal P Gain Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator/Discrete' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Integrator ICs/Internal IC' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/N Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/N Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/P Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Parallel P Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Reset Signal/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Saturation Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum/Sum_PID' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Sum Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tracking Mode Sum/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Integral/TsSignalSpecification' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/Tsamp - Ngain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/postSat Signal/Forward_Path' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/preInt Signal/Internal PreInt' -// '' : 'SimModelR2022b_0617/Controler/PID Controller1/preSat Signal/Forward_Path' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Anti-windup' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/D Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/External Derivative' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/I Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator ICs' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/N Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/N Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/P Copy' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Parallel P Gain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Reset Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum Fdbk' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode Sum' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Integral' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Ngain' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/postSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/preInt Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/preSat Signal' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Anti-windup/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/D Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/External Derivative/Error' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter/Disc. Forward Euler Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Filter ICs/Internal IC - Filter' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/I Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Ideal P Gain Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator/Discrete' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Integrator ICs/Internal IC' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/N Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/N Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/P Copy/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Parallel P Gain/Internal Parameters' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Reset Signal/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Saturation Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum/Sum_PID' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Sum Fdbk/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode/Disabled' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tracking Mode Sum/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Integral/TsSignalSpecification' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/Tsamp - Ngain/Passthrough' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/postSat Signal/Forward_Path' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/preInt Signal/Internal PreInt' -// '' : 'SimModelR2022b_0617/Controler/PID Controller2/preSat Signal/Forward_Path' +// '' : 'SimModel0618' +// '' : 'SimModel0618/Controler' +// '' : 'SimModel0618/Controler/PID Controller' +// '' : 'SimModel0618/Controler/PID Controller1' +// '' : 'SimModel0618/Controler/PID Controller2' +// '' : 'SimModel0618/Controler/PID Controller/Anti-windup' +// '' : 'SimModel0618/Controler/PID Controller/D Gain' +// '' : 'SimModel0618/Controler/PID Controller/External Derivative' +// '' : 'SimModel0618/Controler/PID Controller/Filter' +// '' : 'SimModel0618/Controler/PID Controller/Filter ICs' +// '' : 'SimModel0618/Controler/PID Controller/I Gain' +// '' : 'SimModel0618/Controler/PID Controller/Ideal P Gain' +// '' : 'SimModel0618/Controler/PID Controller/Ideal P Gain Fdbk' +// '' : 'SimModel0618/Controler/PID Controller/Integrator' +// '' : 'SimModel0618/Controler/PID Controller/Integrator ICs' +// '' : 'SimModel0618/Controler/PID Controller/N Copy' +// '' : 'SimModel0618/Controler/PID Controller/N Gain' +// '' : 'SimModel0618/Controler/PID Controller/P Copy' +// '' : 'SimModel0618/Controler/PID Controller/Parallel P Gain' +// '' : 'SimModel0618/Controler/PID Controller/Reset Signal' +// '' : 'SimModel0618/Controler/PID Controller/Saturation' +// '' : 'SimModel0618/Controler/PID Controller/Saturation Fdbk' +// '' : 'SimModel0618/Controler/PID Controller/Sum' +// '' : 'SimModel0618/Controler/PID Controller/Sum Fdbk' +// '' : 'SimModel0618/Controler/PID Controller/Tracking Mode' +// '' : 'SimModel0618/Controler/PID Controller/Tracking Mode Sum' +// '' : 'SimModel0618/Controler/PID Controller/Tsamp - Integral' +// '' : 'SimModel0618/Controler/PID Controller/Tsamp - Ngain' +// '' : 'SimModel0618/Controler/PID Controller/postSat Signal' +// '' : 'SimModel0618/Controler/PID Controller/preInt Signal' +// '' : 'SimModel0618/Controler/PID Controller/preSat Signal' +// '' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel' +// '' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone' +// '' : 'SimModel0618/Controler/PID Controller/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled' +// '' : 'SimModel0618/Controler/PID Controller/D Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller/External Derivative/Error' +// '' : 'SimModel0618/Controler/PID Controller/Filter/Disc. Forward Euler Filter' +// '' : 'SimModel0618/Controler/PID Controller/Filter ICs/Internal IC - Filter' +// '' : 'SimModel0618/Controler/PID Controller/I Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller/Ideal P Gain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller/Ideal P Gain Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Integrator/Discrete' +// '' : 'SimModel0618/Controler/PID Controller/Integrator ICs/Internal IC' +// '' : 'SimModel0618/Controler/PID Controller/N Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/N Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller/P Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Parallel P Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller/Reset Signal/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Saturation/Enabled' +// '' : 'SimModel0618/Controler/PID Controller/Saturation Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Sum/Sum_PID' +// '' : 'SimModel0618/Controler/PID Controller/Sum Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Tracking Mode/Disabled' +// '' : 'SimModel0618/Controler/PID Controller/Tracking Mode Sum/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller/Tsamp - Integral/TsSignalSpecification' +// '' : 'SimModel0618/Controler/PID Controller/Tsamp - Ngain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller/postSat Signal/Forward_Path' +// '' : 'SimModel0618/Controler/PID Controller/preInt Signal/Internal PreInt' +// '' : 'SimModel0618/Controler/PID Controller/preSat Signal/Forward_Path' +// '' : 'SimModel0618/Controler/PID Controller1/Anti-windup' +// '' : 'SimModel0618/Controler/PID Controller1/D Gain' +// '' : 'SimModel0618/Controler/PID Controller1/External Derivative' +// '' : 'SimModel0618/Controler/PID Controller1/Filter' +// '' : 'SimModel0618/Controler/PID Controller1/Filter ICs' +// '' : 'SimModel0618/Controler/PID Controller1/I Gain' +// '' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain' +// '' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain Fdbk' +// '' : 'SimModel0618/Controler/PID Controller1/Integrator' +// '' : 'SimModel0618/Controler/PID Controller1/Integrator ICs' +// '' : 'SimModel0618/Controler/PID Controller1/N Copy' +// '' : 'SimModel0618/Controler/PID Controller1/N Gain' +// '' : 'SimModel0618/Controler/PID Controller1/P Copy' +// '' : 'SimModel0618/Controler/PID Controller1/Parallel P Gain' +// '' : 'SimModel0618/Controler/PID Controller1/Reset Signal' +// '' : 'SimModel0618/Controler/PID Controller1/Saturation' +// '' : 'SimModel0618/Controler/PID Controller1/Saturation Fdbk' +// '' : 'SimModel0618/Controler/PID Controller1/Sum' +// '' : 'SimModel0618/Controler/PID Controller1/Sum Fdbk' +// '' : 'SimModel0618/Controler/PID Controller1/Tracking Mode' +// '' : 'SimModel0618/Controler/PID Controller1/Tracking Mode Sum' +// '' : 'SimModel0618/Controler/PID Controller1/Tsamp - Integral' +// '' : 'SimModel0618/Controler/PID Controller1/Tsamp - Ngain' +// '' : 'SimModel0618/Controler/PID Controller1/postSat Signal' +// '' : 'SimModel0618/Controler/PID Controller1/preInt Signal' +// '' : 'SimModel0618/Controler/PID Controller1/preSat Signal' +// '' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel' +// '' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel/Dead Zone' +// '' : 'SimModel0618/Controler/PID Controller1/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled' +// '' : 'SimModel0618/Controler/PID Controller1/D Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller1/External Derivative/Error' +// '' : 'SimModel0618/Controler/PID Controller1/Filter/Disc. Forward Euler Filter' +// '' : 'SimModel0618/Controler/PID Controller1/Filter ICs/Internal IC - Filter' +// '' : 'SimModel0618/Controler/PID Controller1/I Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller1/Ideal P Gain Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Integrator/Discrete' +// '' : 'SimModel0618/Controler/PID Controller1/Integrator ICs/Internal IC' +// '' : 'SimModel0618/Controler/PID Controller1/N Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/N Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller1/P Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Parallel P Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller1/Reset Signal/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Saturation/Enabled' +// '' : 'SimModel0618/Controler/PID Controller1/Saturation Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Sum/Sum_PID' +// '' : 'SimModel0618/Controler/PID Controller1/Sum Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Tracking Mode/Disabled' +// '' : 'SimModel0618/Controler/PID Controller1/Tracking Mode Sum/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller1/Tsamp - Integral/TsSignalSpecification' +// '' : 'SimModel0618/Controler/PID Controller1/Tsamp - Ngain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller1/postSat Signal/Forward_Path' +// '' : 'SimModel0618/Controler/PID Controller1/preInt Signal/Internal PreInt' +// '' : 'SimModel0618/Controler/PID Controller1/preSat Signal/Forward_Path' +// '' : 'SimModel0618/Controler/PID Controller2/Anti-windup' +// '' : 'SimModel0618/Controler/PID Controller2/D Gain' +// '' : 'SimModel0618/Controler/PID Controller2/External Derivative' +// '' : 'SimModel0618/Controler/PID Controller2/Filter' +// '' : 'SimModel0618/Controler/PID Controller2/Filter ICs' +// '' : 'SimModel0618/Controler/PID Controller2/I Gain' +// '' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain' +// '' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain Fdbk' +// '' : 'SimModel0618/Controler/PID Controller2/Integrator' +// '' : 'SimModel0618/Controler/PID Controller2/Integrator ICs' +// '' : 'SimModel0618/Controler/PID Controller2/N Copy' +// '' : 'SimModel0618/Controler/PID Controller2/N Gain' +// '' : 'SimModel0618/Controler/PID Controller2/P Copy' +// '' : 'SimModel0618/Controler/PID Controller2/Parallel P Gain' +// '' : 'SimModel0618/Controler/PID Controller2/Reset Signal' +// '' : 'SimModel0618/Controler/PID Controller2/Saturation' +// '' : 'SimModel0618/Controler/PID Controller2/Saturation Fdbk' +// '' : 'SimModel0618/Controler/PID Controller2/Sum' +// '' : 'SimModel0618/Controler/PID Controller2/Sum Fdbk' +// '' : 'SimModel0618/Controler/PID Controller2/Tracking Mode' +// '' : 'SimModel0618/Controler/PID Controller2/Tracking Mode Sum' +// '' : 'SimModel0618/Controler/PID Controller2/Tsamp - Integral' +// '' : 'SimModel0618/Controler/PID Controller2/Tsamp - Ngain' +// '' : 'SimModel0618/Controler/PID Controller2/postSat Signal' +// '' : 'SimModel0618/Controler/PID Controller2/preInt Signal' +// '' : 'SimModel0618/Controler/PID Controller2/preSat Signal' +// '' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel' +// '' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel/Dead Zone' +// '' : 'SimModel0618/Controler/PID Controller2/Anti-windup/Disc. Clamping Parallel/Dead Zone/Enabled' +// '' : 'SimModel0618/Controler/PID Controller2/D Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller2/External Derivative/Error' +// '' : 'SimModel0618/Controler/PID Controller2/Filter/Disc. Forward Euler Filter' +// '' : 'SimModel0618/Controler/PID Controller2/Filter ICs/Internal IC - Filter' +// '' : 'SimModel0618/Controler/PID Controller2/I Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller2/Ideal P Gain Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Integrator/Discrete' +// '' : 'SimModel0618/Controler/PID Controller2/Integrator ICs/Internal IC' +// '' : 'SimModel0618/Controler/PID Controller2/N Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/N Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller2/P Copy/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Parallel P Gain/Internal Parameters' +// '' : 'SimModel0618/Controler/PID Controller2/Reset Signal/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Saturation/Enabled' +// '' : 'SimModel0618/Controler/PID Controller2/Saturation Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Sum/Sum_PID' +// '' : 'SimModel0618/Controler/PID Controller2/Sum Fdbk/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Tracking Mode/Disabled' +// '' : 'SimModel0618/Controler/PID Controller2/Tracking Mode Sum/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller2/Tsamp - Integral/TsSignalSpecification' +// '' : 'SimModel0618/Controler/PID Controller2/Tsamp - Ngain/Passthrough' +// '' : 'SimModel0618/Controler/PID Controller2/postSat Signal/Forward_Path' +// '' : 'SimModel0618/Controler/PID Controller2/preInt Signal/Internal PreInt' +// '' : 'SimModel0618/Controler/PID Controller2/preSat Signal/Forward_Path' #endif // Controler_h_ diff --git a/src/pAUV150/Controler/Controler_data.cpp b/src/pAUV150/Controler/Controler_data.cpp new file mode 100644 index 0000000..fbf551d --- /dev/null +++ b/src/pAUV150/Controler/Controler_data.cpp @@ -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: + // '/Derivative Gain' + // '/Integral Gain' + // '/Filter Coefficient' + // '/Proportional Gain' + + { + 1, + 0.1, + 0.01, + 10.0 + }, + + // Variable: pid_pitch + // Referenced by: + // '/Derivative Gain' + // '/Integral Gain' + // '/Filter Coefficient' + // '/Proportional Gain' + + { + 0.5, + 0.1, + 0.1, + 10.0 + } +}; + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/src/pAUV150/Controler/Controler_private.h b/src/pAUV150/Controler/Controler_private.h index 54d4625..cb6e490 100644 --- a/src/pAUV150/Controler/Controler_private.h +++ b/src/pAUV150/Controler/Controler_private.h @@ -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) diff --git a/src/pAUV150/Controler/Controler_types.h b/src/pAUV150/Controler/Controler_types.h index 5ffc206..f740454 100644 --- a/src/pAUV150/Controler/Controler_types.h +++ b/src/pAUV150/Controler/Controler_types.h @@ -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_ // diff --git a/src/pAUV150/Controler/rt_nonfinite.cpp b/src/pAUV150/Controler/rt_nonfinite.cpp new file mode 100644 index 0000000..50d8701 --- /dev/null +++ b/src/pAUV150/Controler/rt_nonfinite.cpp @@ -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::quiet_NaN() }; + + real_T rtInf { std::numeric_limits::infinity() }; + + real_T rtMinusInf { -std::numeric_limits::infinity() }; + + real32_T rtNaNF { -std::numeric_limits::quiet_NaN() }; + + real32_T rtInfF { std::numeric_limits::infinity() }; + + real32_T rtMinusInfF { -std::numeric_limits::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] +// diff --git a/src/pAUV150/Controler/rt_nonfinite.h b/src/pAUV150/Controler/rt_nonfinite.h new file mode 100644 index 0000000..92f81a3 --- /dev/null +++ b/src/pAUV150/Controler/rt_nonfinite.h @@ -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] +// diff --git a/src/pAUV150/Controler/rtwtypes.h b/src/pAUV150/Controler/rtwtypes.h index 813c030..a9cbcb3 100644 --- a/src/pAUV150/Controler/rtwtypes.h +++ b/src/pAUV150/Controler/rtwtypes.h @@ -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)