|
@@ -3,9 +3,9 @@
|
|
|
*
|
|
|
* Code generated for Simulink model 'SOH'.
|
|
|
*
|
|
|
- * Model version : 1.14
|
|
|
+ * Model version : 1.31
|
|
|
* Simulink Coder version : 9.4 (R2020b) 29-Jul-2020
|
|
|
- * C/C++ source code generated on : Thu Aug 12 17:54:32 2021
|
|
|
+ * C/C++ source code generated on : Thu Sep 2 11:40:39 2021
|
|
|
*
|
|
|
* Target selection: ert.tlc
|
|
|
* Embedded hardware selection: Intel->x86-64 (Windows64)
|
|
@@ -18,197 +18,238 @@
|
|
|
#include "div_nde_s32_floor.h"
|
|
|
#include "look1_iu16lu16n16tu16_binlcase.h"
|
|
|
|
|
|
-/* System initialize for referenced model: 'SOH' */
|
|
|
-void SOH_Init(DW_SOH_f_T *localDW)
|
|
|
-{
|
|
|
- /* InitializeConditions for UnitDelay: '<S4>/Unit Delay1' */
|
|
|
- localDW->UnitDelay1_DSTATE_m = true;
|
|
|
+MdlrefDW_SOH_T SOH_MdlrefDW;
|
|
|
|
|
|
- /* SystemInitialize for Chart: '<S3>/Chart' */
|
|
|
- localDW->flg = true;
|
|
|
+/* Block signals (default storage) */
|
|
|
+B_SOH_c_T SOH_B;
|
|
|
+
|
|
|
+/* Block states (default storage) */
|
|
|
+DW_SOH_f_T SOH_DW;
|
|
|
+
|
|
|
+/*
|
|
|
+ * System initialize for atomic system:
|
|
|
+ * '<S14>/ArrMin'
|
|
|
+ * '<S15>/ArrMin'
|
|
|
+ */
|
|
|
+void SOH_ArrMin_Init(uint16_T *rty_minCap)
|
|
|
+{
|
|
|
+ *rty_minCap = 0U;
|
|
|
}
|
|
|
|
|
|
-/* Output and update for referenced model: 'SOH' */
|
|
|
-void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
+/*
|
|
|
+ * Output and update for atomic system:
|
|
|
+ * '<S14>/ArrMin'
|
|
|
+ * '<S15>/ArrMin'
|
|
|
+ */
|
|
|
+void SOH_ArrMin(const uint16_T rtu_sohn_Q_cellCap[28], uint8_T rtu_N, uint16_T
|
|
|
+ *rty_minCap)
|
|
|
{
|
|
|
- int32_T i_0;
|
|
|
- int32_T tmp;
|
|
|
- uint32_T tmp_1;
|
|
|
- int16_T tmp_0;
|
|
|
- uint16_T rtb_Divide2[28];
|
|
|
- uint16_T rtb_Merge1[28];
|
|
|
- uint16_T rtb_Merge3[10];
|
|
|
- uint16_T rtb_Divide2_i;
|
|
|
- uint16_T rtb_Merge2;
|
|
|
- uint16_T tmp_2;
|
|
|
uint8_T i;
|
|
|
- boolean_T rtb_RelationalOperator2;
|
|
|
- boolean_T rtb_RelationalOperator_e;
|
|
|
|
|
|
- /* Logic: '<S6>/Logical Operator' incorporates:
|
|
|
- * Constant: '<S6>/Constant'
|
|
|
- * Constant: '<S6>/Constant1'
|
|
|
- * Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
- * RelationalOperator: '<S6>/Relational Operator'
|
|
|
- * RelationalOperator: '<S6>/Relational Operator1'
|
|
|
- * UnitDelay: '<S6>/Unit Delay'
|
|
|
- */
|
|
|
- rtb_RelationalOperator_e = ((localDW->UnitDelay_DSTATE_e != 2) &&
|
|
|
- (ihd_st_workStat == 2));
|
|
|
- for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- /* Switch: '<S6>/Switch' */
|
|
|
- if (rtb_RelationalOperator_e) {
|
|
|
- /* Switch: '<S6>/Switch' incorporates:
|
|
|
- * Inport: '<Root>/ihv_V_cellU'
|
|
|
- */
|
|
|
- sohv_V_chrgStartStatEo[i_0] = ihv_V_cellU[i_0];
|
|
|
- } else {
|
|
|
- /* Switch: '<S6>/Switch' incorporates:
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
- */
|
|
|
- sohv_V_chrgStartStatEo[i_0] = localDW->UnitDelay1_DSTATE_i[i_0];
|
|
|
+ /* Chart: '<S14>/ArrMin' */
|
|
|
+ i = 0U;
|
|
|
+ *rty_minCap = rtu_sohn_Q_cellCap[0];
|
|
|
+ while (i < rtu_N) {
|
|
|
+ if (*rty_minCap > rtu_sohn_Q_cellCap[i]) {
|
|
|
+ *rty_minCap = rtu_sohn_Q_cellCap[i];
|
|
|
}
|
|
|
|
|
|
- /* End of Switch: '<S6>/Switch' */
|
|
|
+ i++;
|
|
|
}
|
|
|
|
|
|
- /* Abs: '<S6>/Abs' incorporates:
|
|
|
- * Inport: '<Root>/ihd_I_curr'
|
|
|
- */
|
|
|
- if (ihd_I_curr < 0) {
|
|
|
- tmp_0 = (int16_T)-ihd_I_curr;
|
|
|
- } else {
|
|
|
- tmp_0 = ihd_I_curr;
|
|
|
- }
|
|
|
+ /* End of Chart: '<S14>/ArrMin' */
|
|
|
+}
|
|
|
|
|
|
- /* End of Abs: '<S6>/Abs' */
|
|
|
+/* System initialize for referenced model: 'SOH' */
|
|
|
+void SOH_Init(void)
|
|
|
+{
|
|
|
+ /* local block i/o variables */
|
|
|
+ uint16_T rtb_minCap;
|
|
|
+ uint16_T rtb_minCap_g;
|
|
|
|
|
|
- /* RelationalOperator: '<S6>/Relational Operator2' */
|
|
|
- rtb_RelationalOperator2 = (tmp_0 >= 20);
|
|
|
+ /* InitializeConditions for UnitDelay: '<S4>/First_Delay' */
|
|
|
+ SOH_DW.First_Delay_DSTATE = true;
|
|
|
|
|
|
- /* Outputs for Resettable SubSystem: '<S6>/Resettable Subsystem' incorporates:
|
|
|
- * ResetPort: '<S9>/Reset'
|
|
|
- */
|
|
|
- if (rtb_RelationalOperator2) {
|
|
|
- /* InitializeConditions for UnitDelay: '<S9>/Unit Delay' */
|
|
|
- localDW->UnitDelay_DSTATE_o = 0U;
|
|
|
- }
|
|
|
+ /* InitializeConditions for UnitDelay: '<S3>/Unit Delay' */
|
|
|
+ SOH_DW.UnitDelay_DSTATE_e = true;
|
|
|
|
|
|
- /* Sum: '<S9>/Add' incorporates:
|
|
|
- * Constant: '<S9>/Constant'
|
|
|
- * UnitDelay: '<S9>/Unit Delay'
|
|
|
+ /* InitializeConditions for UnitDelay: '<S6>/Unit Delay' */
|
|
|
+ SOH_DW.UnitDelay_DSTATE = 1U;
|
|
|
+
|
|
|
+ /* InitializeConditions for Logic: '<S6>/Logical Operator1' incorporates:
|
|
|
+ * UnitDelay: '<S6>/Unit Delay1'
|
|
|
*/
|
|
|
- localDW->UnitDelay_DSTATE_o++;
|
|
|
+ SOH_DW.UnitDelay1_DSTATE_j = true;
|
|
|
|
|
|
- /* End of Outputs for SubSystem: '<S6>/Resettable Subsystem' */
|
|
|
+ /* SystemInitialize for Enabled SubSystem: '<S3>/Subsystem' */
|
|
|
+
|
|
|
+ /* SystemInitialize for Chart: '<S14>/ArrMin' */
|
|
|
+ SOH_ArrMin_Init(&rtb_minCap_g);
|
|
|
|
|
|
- /* Switch: '<S10>/Switch3' incorporates:
|
|
|
- * UnitDelay: '<S10>/Unit Delay3'
|
|
|
+ /* SystemInitialize for Chart: '<S15>/ArrMin' */
|
|
|
+ SOH_ArrMin_Init(&rtb_minCap);
|
|
|
+
|
|
|
+ /* End of SystemInitialize for SubSystem: '<S3>/Subsystem' */
|
|
|
+
|
|
|
+ /* SystemInitialize for Chart: '<S3>/Chart' */
|
|
|
+ SOH_DW.Fflg = true;
|
|
|
+ SOH_B.Divide1=0;
|
|
|
+ SOH_DW.ResettableSubsystem_MODE=false;
|
|
|
+ SOH_DW.UnitDelay1_DSTATE=false;
|
|
|
+ SOH_DW.UnitDelay1_DSTATE_j=0;
|
|
|
+ SOH_DW.Time_Delay_DSTATE=0;
|
|
|
+ SOH_DW.sohd_tm_chrgStartSta_Delay_DSTA=0;
|
|
|
+ SOH_DW.UnitDelay_DSTATE_e=false;
|
|
|
+ SOH_DW.ResettableSubsystem_MODE_i=false;
|
|
|
+ SOH_DW.Time_Delay_DSTATE_k=0;
|
|
|
+}
|
|
|
+
|
|
|
+/* Disable for referenced model: 'SOH' */
|
|
|
+void SOH_Disable(void)
|
|
|
+{
|
|
|
+ /* Disable for Enabled SubSystem: '<S6>/Resettable Subsystem' */
|
|
|
+ SOH_DW.ResettableSubsystem_MODE_i = false;
|
|
|
+
|
|
|
+ /* End of Disable for SubSystem: '<S6>/Resettable Subsystem' */
|
|
|
+
|
|
|
+ /* Disable for Enabled SubSystem: '<S8>/Resettable Subsystem' */
|
|
|
+ SOH_DW.ResettableSubsystem_MODE = false;
|
|
|
+
|
|
|
+ /* End of Disable for SubSystem: '<S8>/Resettable Subsystem' */
|
|
|
+}
|
|
|
+
|
|
|
+/* Output and update for referenced model: 'SOH' */
|
|
|
+void SOH(void)
|
|
|
+{
|
|
|
+ /* local block i/o variables */
|
|
|
+ uint16_T rtb_minCap;
|
|
|
+ uint16_T rtb_minCap_g;
|
|
|
+ int32_T i_0;
|
|
|
+ int32_T i_1;
|
|
|
+ uint32_T rtb_LogicalOperator1_0;
|
|
|
+ int16_T tmp;
|
|
|
+ uint16_T rtb_sohn_V_chrgStartStatEE_Merg[28];
|
|
|
+ uint16_T rtb_sohn_Q_packCapArrEE_Merge[10];
|
|
|
+ uint16_T maxV;
|
|
|
+ uint16_T rtb_sohn_Q_chrgEE_Merge;
|
|
|
+ uint16_T tmp_0;
|
|
|
+ uint8_T i;
|
|
|
+ boolean_T rtb_RelationalOperator1_n;
|
|
|
+ boolean_T rtb_sohn_flg_chrgEndEE_Merge;
|
|
|
+
|
|
|
+
|
|
|
+ /* MinMax: '<S18>/Min' incorporates:
|
|
|
+ * Inport: '<Root>/sohv_Q_packCapArrEi '
|
|
|
*/
|
|
|
- localDW->UnitDelay3_DSTATE = (rtb_RelationalOperator2 ||
|
|
|
- localDW->UnitDelay3_DSTATE);
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = sohv_Q_packCapArrEi[0];
|
|
|
|
|
|
- /* Switch: '<S6>/Switch2' incorporates:
|
|
|
- * Constant: '<S9>/Constant1'
|
|
|
- * Product: '<S9>/Divide'
|
|
|
- * Sum: '<S6>/Add'
|
|
|
- * UnitDelay: '<S6>/Unit Delay2'
|
|
|
- * UnitDelay: '<S9>/Unit Delay'
|
|
|
+ /* MinMax: '<S18>/Min1' incorporates:
|
|
|
+ * Inport: '<Root>/sohv_Q_packCapArrEi '
|
|
|
*/
|
|
|
- if (rtb_RelationalOperator_e) {
|
|
|
- /* Switch: '<S6>/Switch1' incorporates:
|
|
|
- * Constant: '<S6>/Constant3'
|
|
|
- * Inport: '<Root>/ihd_tm_parkTime'
|
|
|
- * UnitDelay: '<S10>/Unit Delay3'
|
|
|
+ maxV = sohv_Q_packCapArrEi[0];
|
|
|
+ for (i_0 = 0; i_0 < 9; i_0++) {
|
|
|
+ /* MinMax: '<S18>/Min' incorporates:
|
|
|
+ * Inport: '<Root>/sohv_Q_packCapArrEi '
|
|
|
+ * MinMax: '<S18>/Min1'
|
|
|
*/
|
|
|
- if (localDW->UnitDelay3_DSTATE) {
|
|
|
- tmp_1 = 0U;
|
|
|
- } else {
|
|
|
- tmp_1 = ihd_tm_parkTime;
|
|
|
+ tmp_0 = sohv_Q_packCapArrEi[i_0 + 1];
|
|
|
+ if (rtb_sohn_Q_chrgEE_Merge >= tmp_0) {
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = sohv_Q_packCapArrEi[i_0 + 1];
|
|
|
}
|
|
|
|
|
|
- /* End of Switch: '<S6>/Switch1' */
|
|
|
-
|
|
|
- /* Outputs for Resettable SubSystem: '<S6>/Resettable Subsystem' incorporates:
|
|
|
- * ResetPort: '<S9>/Reset'
|
|
|
+ /* MinMax: '<S18>/Min1' incorporates:
|
|
|
+ * Inport: '<Root>/sohv_Q_packCapArrEi '
|
|
|
+ * MinMax: '<S18>/Min'
|
|
|
*/
|
|
|
- localDW->UnitDelay2_DSTATE = (uint16_T)(localDW->UnitDelay_DSTATE_o / 10U +
|
|
|
- tmp_1);
|
|
|
-
|
|
|
- /* End of Outputs for SubSystem: '<S6>/Resettable Subsystem' */
|
|
|
+ if (maxV <= tmp_0) {
|
|
|
+ maxV = tmp_0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- /* End of Switch: '<S6>/Switch2' */
|
|
|
-
|
|
|
- /* Saturate: '<S6>/Saturation' incorporates:
|
|
|
- * UnitDelay: '<S6>/Unit Delay2'
|
|
|
- */
|
|
|
- sohd_tm_chrgStartStatEo = localDW->UnitDelay2_DSTATE;
|
|
|
-
|
|
|
/* If: '<S5>/If' incorporates:
|
|
|
+ * Constant: '<S18>/C'
|
|
|
+ * Constant: '<S18>/C1'
|
|
|
+ * Constant: '<S18>/Constant'
|
|
|
* Inport: '<Root>/sohd_Q_chrgEi '
|
|
|
* Inport: '<Root>/sohd_flg_chrgEndEi '
|
|
|
+ * Inport: '<Root>/sohv_Q_cellCapArrEi 1'
|
|
|
* Inport: '<Root>/sohv_Q_packCapArrEi '
|
|
|
* Inport: '<Root>/sohv_V_chrgStartStatEi '
|
|
|
- * Inport: '<S16>/sohd_Q_chrgEi '
|
|
|
- * Inport: '<S16>/sohd_flg_chrgEndEi '
|
|
|
- * Inport: '<S16>/sohv_Q_packCapArrEi '
|
|
|
- * Inport: '<S16>/sohv_V_chrgStartStatEi '
|
|
|
- * Merge: '<S5>/Merge1'
|
|
|
- * Merge: '<S5>/Merge2'
|
|
|
- * Merge: '<S5>/Merge3'
|
|
|
- * RelationalOperator: '<S14>/Relational Operator2'
|
|
|
+ * Inport: '<S20>/sohd_Q_chrgEi '
|
|
|
+ * Inport: '<S20>/sohd_flg_chrgEndEi '
|
|
|
+ * Inport: '<S20>/sohv_Q_cellCapArrEi'
|
|
|
+ * Inport: '<S20>/sohv_Q_packCapArrEi '
|
|
|
+ * Inport: '<S20>/sohv_V_chrgStartStatEi '
|
|
|
+ * Logic: '<S18>/Logical Operator3'
|
|
|
+ * Merge: '<S5>/sohn_Q_chrgEE_Merge'
|
|
|
+ * Merge: '<S5>/sohn_Q_packCapArrEE_Merge'
|
|
|
+ * Merge: '<S5>/sohn_V_chrgStartStatEE_Merge'
|
|
|
+ * MinMax: '<S18>/Min'
|
|
|
+ * MinMax: '<S18>/Min1'
|
|
|
+ * RelationalOperator: '<S18>/Relational Operator1'
|
|
|
+ * RelationalOperator: '<S18>/Relational Operator2'
|
|
|
+ * RelationalOperator: '<S18>/Relational Operator3'
|
|
|
+ * UnitDelay: '<S6>/sohv_V_chrgStartEo_Delay'
|
|
|
*/
|
|
|
- if (sohd_Q_chrgEi < 300) {
|
|
|
+ if ((sohd_Q_chrgEi < cmnc_Q_ratedCp) && (!((real_T)rtb_sohn_Q_chrgEE_Merge *
|
|
|
+ 0.1 < 1.0)) && (maxV <= cmnc_Q_ratedCp)) {
|
|
|
/* Outputs for IfAction SubSystem: '<S5>/TureAction' incorporates:
|
|
|
- * ActionPort: '<S16>/Action Port'
|
|
|
+ * ActionPort: '<S20>/Action Port'
|
|
|
*/
|
|
|
- rtb_RelationalOperator_e = sohd_flg_chrgEndEi;
|
|
|
+ rtb_sohn_flg_chrgEndEE_Merge = sohd_flg_chrgEndEi;
|
|
|
for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- rtb_Merge1[i_0] = sohv_V_chrgStartStatEi[i_0];
|
|
|
+ rtb_sohn_V_chrgStartStatEE_Merg[i_0] = sohv_V_chrgStartStatEi[i_0];
|
|
|
}
|
|
|
|
|
|
- rtb_Merge2 = sohd_Q_chrgEi;
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = sohd_Q_chrgEi;
|
|
|
for (i_0 = 0; i_0 < 10; i_0++) {
|
|
|
- rtb_Merge3[i_0] = sohv_Q_packCapArrEi[i_0];
|
|
|
+ rtb_sohn_Q_packCapArrEE_Merge[i_0] = sohv_Q_packCapArrEi[i_0];
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
+ sohv_Q_cellCapArrEo[i_0] = sohv_Q_cellCapArrEi[i_0];
|
|
|
}
|
|
|
|
|
|
/* End of Outputs for SubSystem: '<S5>/TureAction' */
|
|
|
} else {
|
|
|
/* Outputs for IfAction SubSystem: '<S5>/FalseAction' incorporates:
|
|
|
- * ActionPort: '<S15>/Action Port'
|
|
|
- */
|
|
|
- /* SignalConversion generated from: '<S15>/sohn_V_chrgStartStatEE1' incorporates:
|
|
|
- * Merge: '<S5>/Merge1'
|
|
|
+ * ActionPort: '<S19>/Action Port'
|
|
|
*/
|
|
|
for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- rtb_Merge1[i_0] = 0U;
|
|
|
- }
|
|
|
+ /* SignalConversion generated from: '<S19>/sohn_V_chrgStartStatEE1' incorporates:
|
|
|
+ * Merge: '<S5>/sohn_V_chrgStartStatEE_Merge'
|
|
|
+ */
|
|
|
+ rtb_sohn_V_chrgStartStatEE_Merg[i_0] = 0U;
|
|
|
|
|
|
- /* End of SignalConversion generated from: '<S15>/sohn_V_chrgStartStatEE1' */
|
|
|
+ /* Product: '<S19>/Product1' incorporates:
|
|
|
+ * Constant: '<S19>/Constant7'
|
|
|
+ * UnitDelay: '<S6>/sohv_V_chrgStartEo_Delay'
|
|
|
+ */
|
|
|
+ sohv_Q_cellCapArrEo[i_0] = (uint16_T)((((5U * cmnc_Q_ratedCp) >> 3) *
|
|
|
+ 52429U) >> 15);
|
|
|
+ }
|
|
|
|
|
|
- /* Product: '<S15>/Product' incorporates:
|
|
|
- * Constant: '<S15>/Constant2'
|
|
|
- * Constant: '<S15>/Constant5'
|
|
|
- * Merge: '<S5>/Merge3'
|
|
|
+ /* Product: '<S19>/Product' incorporates:
|
|
|
+ * Constant: '<S19>/Constant5'
|
|
|
+ * Merge: '<S5>/sohn_Q_packCapArrEE_Merge'
|
|
|
*/
|
|
|
for (i_0 = 0; i_0 < 10; i_0++) {
|
|
|
- rtb_Merge3[i_0] = 299U;
|
|
|
+ rtb_sohn_Q_packCapArrEE_Merge[i_0] = (uint16_T)((((5U * cmnc_Q_ratedCp) >>
|
|
|
+ 3) * 52429U) >> 15);
|
|
|
}
|
|
|
|
|
|
- /* End of Product: '<S15>/Product' */
|
|
|
+ /* End of Product: '<S19>/Product' */
|
|
|
|
|
|
- /* SignalConversion generated from: '<S15>/sohn_flg_chrgEndEE1' incorporates:
|
|
|
- * Constant: '<S15>/Constant'
|
|
|
+ /* SignalConversion generated from: '<S19>/sohn_flg_chrgEndEE1' incorporates:
|
|
|
+ * Constant: '<S19>/Constant'
|
|
|
*/
|
|
|
- rtb_RelationalOperator_e = false;
|
|
|
+ rtb_sohn_flg_chrgEndEE_Merge = false;
|
|
|
|
|
|
- /* SignalConversion generated from: '<S15>/sohn_Q_chrgEE1' incorporates:
|
|
|
- * Constant: '<S15>/Constant3'
|
|
|
- * Merge: '<S5>/Merge2'
|
|
|
+ /* SignalConversion generated from: '<S19>/sohn_Q_chrgEE1' incorporates:
|
|
|
+ * Constant: '<S19>/Constant3'
|
|
|
+ * Merge: '<S5>/sohn_Q_chrgEE_Merge'
|
|
|
*/
|
|
|
- rtb_Merge2 = 0U;
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = 0U;
|
|
|
|
|
|
/* End of Outputs for SubSystem: '<S5>/FalseAction' */
|
|
|
}
|
|
@@ -216,192 +257,311 @@ void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
/* End of If: '<S5>/If' */
|
|
|
|
|
|
/* Logic: '<S4>/Logical Operator' incorporates:
|
|
|
+ * Constant: '<S4>/Constant1'
|
|
|
* Inport: '<Root>/ihd_tm_parkTime'
|
|
|
- * Merge: '<S5>/Merge2'
|
|
|
+ * Merge: '<S5>/sohn_Q_chrgEE_Merge'
|
|
|
* RelationalOperator: '<S4>/Relational Operator'
|
|
|
* RelationalOperator: '<S4>/Relational Operator1'
|
|
|
- * UnitDelay: '<S4>/Unit Delay1'
|
|
|
+ * UnitDelay: '<S4>/First_Delay'
|
|
|
*/
|
|
|
- rtb_RelationalOperator_e = ((ihd_tm_parkTime >= 1800U) &&
|
|
|
- rtb_RelationalOperator_e && (rtb_Merge2 >= 150) &&
|
|
|
- localDW->UnitDelay1_DSTATE_m);
|
|
|
+ rtb_sohn_flg_chrgEndEE_Merge = ((ihd_tm_parkTime >= cmnc_tm_parkTime) &&
|
|
|
+ rtb_sohn_flg_chrgEndEE_Merge && (rtb_sohn_Q_chrgEE_Merge >= 150) &&
|
|
|
+ SOH_DW.First_Delay_DSTATE);
|
|
|
|
|
|
/* Outputs for Enabled SubSystem: '<S3>/Subsystem' incorporates:
|
|
|
* EnablePort: '<S13>/Enable'
|
|
|
*/
|
|
|
- if (rtb_RelationalOperator_e) {
|
|
|
+ if (rtb_sohn_flg_chrgEndEE_Merge) {
|
|
|
for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- /* Lookup_n-D: '<S13>/1-D Lookup Table1' incorporates:
|
|
|
- * Merge: '<S5>/Merge1'
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
+ /* Lookup_n-D: '<S13>/SOC2' incorporates:
|
|
|
+ * Inport: '<Root>/ihv_V_cellU'
|
|
|
*/
|
|
|
- localDW->UnitDelay1_DSTATE_i[i_0] = look1_iu16lu16n16tu16_binlcase
|
|
|
- (rtb_Merge1[i_0], rtCP_uDLookupTable1_bp01Data,
|
|
|
- rtCP_uDLookupTable1_tableData, 12U);
|
|
|
+ SOC2[i_0] = look1_iu16lu16n16tu16_binlcase(ihv_V_cellU[i_0],
|
|
|
+ (&(cmnm_V_ocv[0])), (&(cmnm_pct_soc[0])), 12U);
|
|
|
|
|
|
- /* Lookup_n-D: '<S13>/1-D Lookup Table2' incorporates:
|
|
|
- * Inport: '<Root>/ihv_V_cellU'
|
|
|
+ /* Lookup_n-D: '<S13>/SOC1' incorporates:
|
|
|
+ * Merge: '<S5>/sohn_V_chrgStartStatEE_Merge'
|
|
|
*/
|
|
|
- rtb_Divide2_i = look1_iu16lu16n16tu16_binlcase(ihv_V_cellU[i_0],
|
|
|
- rtCP_uDLookupTable2_bp01Data, rtCP_uDLookupTable2_tableData, 12U);
|
|
|
+ SOC1[i_0] = look1_iu16lu16n16tu16_binlcase
|
|
|
+ (rtb_sohn_V_chrgStartStatEE_Merg[i_0], (&(cmnm_V_ocv[0])),
|
|
|
+ (&(cmnm_pct_soc[0])), 12U);
|
|
|
|
|
|
/* Product: '<S13>/Divide4' incorporates:
|
|
|
- * Product: '<S13>/Divide2'
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
+ * Lookup_n-D: '<S13>/SOC1'
|
|
|
+ * Lookup_n-D: '<S13>/SOC2'
|
|
|
* Sum: '<S13>/Add'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
*/
|
|
|
- localDW->UnitDelay1_DSTATE_i[i_0] = (uint16_T)((((uint32_T)(uint16_T)
|
|
|
- (rtb_Divide2_i - localDW->UnitDelay1_DSTATE_i[i_0]) << 6) / 125U * 125U)
|
|
|
- >> 6);
|
|
|
+ deltaSoc[i_0] = (uint16_T)((((uint32_T)(uint16_T)(SOC2[i_0] - SOC1[i_0]) <<
|
|
|
+ 6) / 125U * 125U) >> 6);
|
|
|
|
|
|
- /* Product: '<S13>/Divide1' incorporates:
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
+ /* Product: '<S13>/d' incorporates:
|
|
|
+ * Product: '<S13>/Divide4'
|
|
|
*/
|
|
|
- tmp = localDW->UnitDelay1_DSTATE_i[i_0];
|
|
|
+ i_1 = deltaSoc[i_0];
|
|
|
|
|
|
- /* Product: '<S13>/Divide1' incorporates:
|
|
|
- * Merge: '<S5>/Merge2'
|
|
|
+ /* Product: '<S13>/d' incorporates:
|
|
|
+ * Merge: '<S5>/sohn_Q_chrgEE_Merge'
|
|
|
*/
|
|
|
- localB->Divide1[i_0] = (uint16_T)(((uint16_T)((uint32_T)tmp == 0U ?
|
|
|
- MAX_uint32_T : ((uint32_T)rtb_Merge2 << 9) / tmp) * 125U) >> 6);
|
|
|
+ SOH_B.d[i_0] = (uint16_T)(((uint16_T)((uint32_T)i_1 == 0U ? MAX_uint32_T :
|
|
|
+ ((uint32_T)rtb_sohn_Q_chrgEE_Merge << 9) / i_1) * 125U) >> 6);
|
|
|
|
|
|
- /* Product: '<S13>/Divide5' */
|
|
|
- rtb_Divide2_i = (uint16_T)((((uint32_T)rtb_Divide2_i << 6) / 125U * 125U) >>
|
|
|
+ /* Product: '<S13>/Divide5' incorporates:
|
|
|
+ * Lookup_n-D: '<S13>/SOC2'
|
|
|
+ */
|
|
|
+ minDischrg[i_0] = (uint16_T)((((uint32_T)SOC2[i_0] << 6) / 125U * 125U) >>
|
|
|
6);
|
|
|
|
|
|
/* Product: '<S13>/Divide3' incorporates:
|
|
|
* Constant: '<S13>/Constant3'
|
|
|
- * Product: '<S13>/Divide1'
|
|
|
+ * Product: '<S13>/Divide5'
|
|
|
+ * Product: '<S13>/d'
|
|
|
* Sum: '<S13>/Add1'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
*/
|
|
|
- localDW->UnitDelay1_DSTATE_i[i_0] = (uint16_T)(((uint16_T)(((uint32_T)
|
|
|
- (uint16_T)(1000 - rtb_Divide2_i) * localB->Divide1[i_0]) >> 10) * 16777U)
|
|
|
- >> 14);
|
|
|
+ minChrg[i_0] = (uint16_T)(((uint16_T)(((uint32_T)(uint16_T)(1000 -
|
|
|
+ minDischrg[i_0]) * SOH_B.d[i_0]) >> 10) * 16777U) >> 14);
|
|
|
|
|
|
- /* Lookup_n-D: '<S13>/1-D Lookup Table2' incorporates:
|
|
|
- * Product: '<S13>/Divide1'
|
|
|
- * Product: '<S13>/Divide2'
|
|
|
+ /* Product: '<S13>/Divide2' incorporates:
|
|
|
+ * Product: '<S13>/Divide5'
|
|
|
+ * Product: '<S13>/d'
|
|
|
*/
|
|
|
- rtb_Divide2[i_0] = (uint16_T)(((uint16_T)(((uint32_T)localB->Divide1[i_0] *
|
|
|
- rtb_Divide2_i) >> 10) * 16777U) >> 14);
|
|
|
+ minDischrg[i_0] = (uint16_T)(((uint16_T)(((uint32_T)SOH_B.d[i_0] *
|
|
|
+ minDischrg[i_0]) >> 10) * 16777U) >> 14);
|
|
|
}
|
|
|
|
|
|
- /* MinMax: '<S13>/Min1' incorporates:
|
|
|
- * Product: '<S13>/Divide2'
|
|
|
+ /* Chart: '<S14>/ArrMin' incorporates:
|
|
|
+ * Constant: '<S14>/Constant'
|
|
|
*/
|
|
|
- rtb_Merge2 = rtb_Divide2[0];
|
|
|
+ SOH_ArrMin((&(minChrg[0])), cmnc_num_cellUnum, &rtb_minCap_g);
|
|
|
|
|
|
- /* MinMax: '<S13>/Min' incorporates:
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
+ /* Chart: '<S15>/ArrMin' incorporates:
|
|
|
+ * Constant: '<S15>/Constant'
|
|
|
*/
|
|
|
- rtb_Divide2_i = localDW->UnitDelay1_DSTATE_i[0];
|
|
|
- for (i_0 = 0; i_0 < 27; i_0++) {
|
|
|
- /* MinMax: '<S13>/Min1' incorporates:
|
|
|
- * Product: '<S13>/Divide2'
|
|
|
- */
|
|
|
- tmp_2 = rtb_Divide2[i_0 + 1];
|
|
|
- if (rtb_Merge2 >= tmp_2) {
|
|
|
- rtb_Merge2 = tmp_2;
|
|
|
- }
|
|
|
+ SOH_ArrMin((&(minDischrg[0])), cmnc_num_cellUnum, &rtb_minCap);
|
|
|
|
|
|
- /* MinMax: '<S13>/Min' incorporates:
|
|
|
- * Product: '<S13>/Divide3'
|
|
|
- * UnitDelay: '<S6>/Unit Delay1'
|
|
|
- */
|
|
|
- tmp_2 = localDW->UnitDelay1_DSTATE_i[i_0 + 1];
|
|
|
- if (rtb_Divide2_i >= tmp_2) {
|
|
|
- rtb_Divide2_i = tmp_2;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /* Sum: '<S13>/Add2' incorporates:
|
|
|
- * MinMax: '<S13>/Min'
|
|
|
- * MinMax: '<S13>/Min1'
|
|
|
- */
|
|
|
- localB->Add2 = (uint16_T)((uint32_T)rtb_Divide2_i + rtb_Merge2);
|
|
|
+ /* Sum: '<S13>/Add2' */
|
|
|
+ SOH_B.Add2 = (uint16_T)((uint32_T)rtb_minCap_g + rtb_minCap);
|
|
|
}
|
|
|
|
|
|
/* End of Outputs for SubSystem: '<S3>/Subsystem' */
|
|
|
+
|
|
|
+ /* Logic: '<S3>/Logical Operator' incorporates:
|
|
|
+ * UnitDelay: '<S3>/Unit Delay'
|
|
|
+ */
|
|
|
+ SOH_DW.UnitDelay_DSTATE_e = (rtb_sohn_flg_chrgEndEE_Merge ||
|
|
|
+ SOH_DW.UnitDelay_DSTATE_e);
|
|
|
for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- /* SignalConversion generated from: '<S3>/Subsystem' incorporates:
|
|
|
- * Product: '<S13>/Divide1'
|
|
|
+ /* Switch: '<S3>/Switch' incorporates:
|
|
|
+ * UnitDelay: '<S3>/Unit Delay'
|
|
|
+ */
|
|
|
+ if (SOH_DW.UnitDelay_DSTATE_e) {
|
|
|
+ /* Switch: '<S3>/Switch' incorporates:
|
|
|
+ * Product: '<S13>/d'
|
|
|
+ */
|
|
|
+ sohv_Q_cellCapArrEo[i_0] = SOH_B.d[i_0];
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Switch: '<S3>/Switch' */
|
|
|
+
|
|
|
+ /* SignalConversion: '<S3>/Signal Conversion' incorporates:
|
|
|
+ * Switch: '<S3>/Switch'
|
|
|
*/
|
|
|
- sohv_Q_cellCap[i_0] = localB->Divide1[i_0];
|
|
|
+ sohv_Q_cellCap[i_0] = sohv_Q_cellCapArrEo[i_0];
|
|
|
}
|
|
|
|
|
|
/* Chart: '<S3>/Chart' incorporates:
|
|
|
- * Merge: '<S5>/Merge3'
|
|
|
+ * Merge: '<S5>/sohn_Q_packCapArrEE_Merge'
|
|
|
* Sum: '<S13>/Add2'
|
|
|
*/
|
|
|
i = 0U;
|
|
|
- if (localDW->flg) {
|
|
|
+ if (SOH_DW.Fflg) {
|
|
|
for (i_0 = 0; i_0 < 10; i_0++) {
|
|
|
- localB->sohn_Q_packCapArrEo[i_0] = rtb_Merge3[i_0];
|
|
|
+ SOH_B.sohn_Q_packCapArrEo[i_0] = rtb_sohn_Q_packCapArrEE_Merge[i_0];
|
|
|
}
|
|
|
|
|
|
- tmp = rtb_Merge3[9] - localB->Add2;
|
|
|
- if (tmp < 0) {
|
|
|
- tmp = -tmp;
|
|
|
+ i_1 = rtb_sohn_Q_packCapArrEE_Merge[9] - SOH_B.Add2;
|
|
|
+ if (i_1 < 0) {
|
|
|
+ i_1 = -i_1;
|
|
|
}
|
|
|
|
|
|
- if (rtb_RelationalOperator_e && (tmp < 50)) {
|
|
|
+ if (rtb_sohn_flg_chrgEndEE_Merge && (i_1 < 50)) {
|
|
|
while (i < 9) {
|
|
|
- localB->sohn_Q_packCapArrEo[i] = rtb_Merge3[i + 1];
|
|
|
+ SOH_B.sohn_Q_packCapArrEo[i] = rtb_sohn_Q_packCapArrEE_Merge[i + 1];
|
|
|
i++;
|
|
|
}
|
|
|
|
|
|
- localB->sohn_Q_packCapArrEo[9] = localB->Add2;
|
|
|
+ SOH_B.sohn_Q_packCapArrEo[9] = SOH_B.Add2;
|
|
|
}
|
|
|
|
|
|
i = 0U;
|
|
|
- rtb_Merge2 = 0U;
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = 0U;
|
|
|
while (i < 10) {
|
|
|
- tmp = rtb_Merge2 + localB->sohn_Q_packCapArrEo[i];
|
|
|
- if (tmp > 65535) {
|
|
|
- tmp = 65535;
|
|
|
+ i_1 = rtb_sohn_Q_chrgEE_Merge + SOH_B.sohn_Q_packCapArrEo[i];
|
|
|
+ if (i_1 > 65535) {
|
|
|
+ i_1 = 65535;
|
|
|
}
|
|
|
|
|
|
- rtb_Merge2 = (uint16_T)tmp;
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = (uint16_T)i_1;
|
|
|
i++;
|
|
|
}
|
|
|
|
|
|
- localB->Qavrg = (uint16_T)(rtb_Merge2 / 10U);
|
|
|
+ SOH_B.Qavrg = (uint16_T)(rtb_sohn_Q_chrgEE_Merge / 10U);
|
|
|
}
|
|
|
|
|
|
- localDW->flg = false;
|
|
|
+ SOH_DW.Fflg = false;
|
|
|
|
|
|
/* End of Chart: '<S3>/Chart' */
|
|
|
for (i_0 = 0; i_0 < 10; i_0++) {
|
|
|
/* SignalConversion generated from: '<S3>/Chart' */
|
|
|
- sohv_Q_packCapArrEo[i_0] = localB->sohn_Q_packCapArrEo[i_0];
|
|
|
+ sohv_Q_packCapArrEo[i_0] = SOH_B.sohn_Q_packCapArrEo[i_0];
|
|
|
}
|
|
|
|
|
|
- /* UnitDelay: '<S7>/Unit Delay1' incorporates:
|
|
|
- * Product: '<S3>/Divide'
|
|
|
+ /* Product: '<S3>/Divide' incorporates:
|
|
|
+ * Constant: '<S3>/Constant2'
|
|
|
* Product: '<S3>/Product'
|
|
|
+ * UnitDelay: '<S7>/Unit Delay1'
|
|
|
*/
|
|
|
- sohd_pct_bcuSoh = (uint16_T)((((uint32_T)(uint16_T)(((uint16_T)((localB->Qavrg
|
|
|
- * 125U) >> 1) * 52429U) >> 15) << 1) / 75U * 5U) >> 2);
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = (uint16_T)(((uint16_T)(cmnc_Q_ratedCp == 0U ?
|
|
|
+ MAX_uint32_T : ((uint32_T)(uint16_T)(((uint16_T)((SOH_B.Qavrg * 125U) >> 1) *
|
|
|
+ 52429U) >> 15) << 3) / cmnc_Q_ratedCp) * 5U) >> 2);
|
|
|
|
|
|
/* Saturate: '<S3>/Saturation' incorporates:
|
|
|
* UnitDelay: '<S7>/Unit Delay1'
|
|
|
*/
|
|
|
- if (sohd_pct_bcuSoh >= 1000) {
|
|
|
+ if (rtb_sohn_Q_chrgEE_Merge < 1000) {
|
|
|
+ /* Saturate: '<S3>/Saturation' */
|
|
|
+ sohd_pct_bcuSoh = rtb_sohn_Q_chrgEE_Merge;
|
|
|
+ } else {
|
|
|
/* Saturate: '<S3>/Saturation' */
|
|
|
sohd_pct_bcuSoh = 1000U;
|
|
|
}
|
|
|
|
|
|
/* End of Saturate: '<S3>/Saturation' */
|
|
|
|
|
|
+ /* Logic: '<S6>/Logical Operator' incorporates:
|
|
|
+ * Constant: '<S6>/Constant'
|
|
|
+ * Constant: '<S6>/Constant1'
|
|
|
+ * Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
+ * RelationalOperator: '<S6>/Relational Operator'
|
|
|
+ * RelationalOperator: '<S6>/Relational Operator1'
|
|
|
+ * UnitDelay: '<S6>/Unit Delay'
|
|
|
+ */
|
|
|
+ rtb_sohn_flg_chrgEndEE_Merge = ((SOH_DW.UnitDelay_DSTATE != 2) &&
|
|
|
+ (ihd_st_workStat == 2));
|
|
|
+
|
|
|
+ /* Switch: '<S6>/Switch' */
|
|
|
+ if (rtb_sohn_flg_chrgEndEE_Merge) {
|
|
|
+ /* Switch: '<S6>/Switch' incorporates:
|
|
|
+ * Inport: '<Root>/ihv_V_cellU'
|
|
|
+ */
|
|
|
+ for (i_1 = 0; i_1 < 28; i_1++) {
|
|
|
+ sohv_V_chrgStartStatEo[i_1] = ihv_V_cellU[i_1];
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Switch: '<S6>/Switch' */
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Switch: '<S6>/Switch' */
|
|
|
+
|
|
|
+ /* Saturate: '<S10>/Saturation' incorporates:
|
|
|
+ * Constant: '<S10>/Constant'
|
|
|
+ * Sum: '<S10>/Add'
|
|
|
+ * UnitDelay: '<S10>/Time_Delay'
|
|
|
+ */
|
|
|
+ if ((uint16_T)(SOH_DW.Time_Delay_DSTATE + 1U) < 60000) {
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = (uint16_T)(SOH_DW.Time_Delay_DSTATE + 1U);
|
|
|
+ } else {
|
|
|
+ rtb_sohn_Q_chrgEE_Merge = 60000U;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Saturate: '<S10>/Saturation' */
|
|
|
+
|
|
|
+ /* RelationalOperator: '<S10>/Relational Operator1' incorporates:
|
|
|
+ * Constant: '<S10>/para'
|
|
|
+ */
|
|
|
+ rtb_RelationalOperator1_n = (rtb_sohn_Q_chrgEE_Merge >= 20);
|
|
|
+
|
|
|
+ /* Outputs for Enabled SubSystem: '<S6>/Resettable Subsystem' incorporates:
|
|
|
+ * EnablePort: '<S9>/Enable'
|
|
|
+ */
|
|
|
+ if (rtb_RelationalOperator1_n) {
|
|
|
+ if (!SOH_DW.ResettableSubsystem_MODE_i) {
|
|
|
+ /* InitializeConditions for UnitDelay: '<S9>/Time_Delay' */
|
|
|
+ SOH_DW.Time_Delay_DSTATE_k = 0U;
|
|
|
+ SOH_DW.ResettableSubsystem_MODE_i = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Sum: '<S9>/Add' incorporates:
|
|
|
+ * Constant: '<S9>/Constant'
|
|
|
+ * UnitDelay: '<S9>/Time_Delay'
|
|
|
+ */
|
|
|
+ SOH_DW.Time_Delay_DSTATE_k++;
|
|
|
+
|
|
|
+ /* Product: '<S9>/Divide' incorporates:
|
|
|
+ * Constant: '<S9>/Constant1'
|
|
|
+ * UnitDelay: '<S9>/Time_Delay'
|
|
|
+ */
|
|
|
+ SOH_B.Divide = (uint16_T)(SOH_DW.Time_Delay_DSTATE_k / 10U);
|
|
|
+ } else {
|
|
|
+ SOH_DW.ResettableSubsystem_MODE_i = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Outputs for SubSystem: '<S6>/Resettable Subsystem' */
|
|
|
+
|
|
|
+ /* Logic: '<S6>/Logical Operator1' incorporates:
|
|
|
+ * UnitDelay: '<S6>/Unit Delay1'
|
|
|
+ */
|
|
|
+ SOH_DW.UnitDelay1_DSTATE_j = (rtb_RelationalOperator1_n ||
|
|
|
+ SOH_DW.UnitDelay1_DSTATE_j);
|
|
|
+
|
|
|
+ /* Switch: '<S6>/Switch2' incorporates:
|
|
|
+ * Sum: '<S6>/Add'
|
|
|
+ * UnitDelay: '<S6>/sohd_tm_chrgStartSta_Delay'
|
|
|
+ */
|
|
|
+ if (rtb_sohn_flg_chrgEndEE_Merge) {
|
|
|
+ /* Switch: '<S6>/Switch1' incorporates:
|
|
|
+ * Constant: '<S6>/Constant3'
|
|
|
+ * Inport: '<Root>/ihd_tm_parkTime'
|
|
|
+ */
|
|
|
+ if (SOH_DW.UnitDelay1_DSTATE_j) {
|
|
|
+ rtb_LogicalOperator1_0 = 0U;
|
|
|
+ } else {
|
|
|
+ rtb_LogicalOperator1_0 = ihd_tm_parkTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Switch: '<S6>/Switch1' */
|
|
|
+ SOH_DW.sohd_tm_chrgStartSta_Delay_DSTA = (uint16_T)(SOH_B.Divide +
|
|
|
+ rtb_LogicalOperator1_0);
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Switch: '<S6>/Switch2' */
|
|
|
+
|
|
|
+ /* Saturate: '<S6>/Saturation' incorporates:
|
|
|
+ * UnitDelay: '<S6>/sohd_tm_chrgStartSta_Delay'
|
|
|
+ */
|
|
|
+ sohd_tm_chrgStartStatEo = SOH_DW.sohd_tm_chrgStartSta_Delay_DSTA;
|
|
|
+
|
|
|
+ /* Abs: '<S6>/Abs' incorporates:
|
|
|
+ * Inport: '<Root>/ihd_I_curr'
|
|
|
+ */
|
|
|
+ if (ihd_I_curr < 0) {
|
|
|
+ tmp = (int16_T)-ihd_I_curr;
|
|
|
+ } else {
|
|
|
+ tmp = ihd_I_curr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* End of Abs: '<S6>/Abs' */
|
|
|
+
|
|
|
+ /* Product: '<S10>/Product' incorporates:
|
|
|
+ * RelationalOperator: '<S6>/Relational Operator2'
|
|
|
+ * UnitDelay: '<S10>/Time_Delay'
|
|
|
+ */
|
|
|
+ SOH_DW.Time_Delay_DSTATE = (uint16_T)(tmp >= 20 ? (int32_T)
|
|
|
+ rtb_sohn_Q_chrgEE_Merge : 0);
|
|
|
+
|
|
|
/* UnitDelay: '<S7>/Unit Delay' incorporates:
|
|
|
* UnitDelay: '<S6>/Unit Delay'
|
|
|
*/
|
|
|
- localDW->UnitDelay_DSTATE_e = localDW->UnitDelay_DSTATE_g;
|
|
|
+ SOH_DW.UnitDelay_DSTATE = SOH_DW.UnitDelay_DSTATE_g;
|
|
|
|
|
|
/* Switch: '<S7>/Switch' incorporates:
|
|
|
* Constant: '<S7>/Constant'
|
|
@@ -413,13 +573,8 @@ void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
* UnitDelay: '<S6>/Unit Delay'
|
|
|
* UnitDelay: '<S7>/Unit Delay1'
|
|
|
*/
|
|
|
- sohd_flg_chrgEndEo = (((localDW->UnitDelay_DSTATE_e == 2) && (ihd_st_workStat
|
|
|
- != 2)) || (localDW->UnitDelay1_DSTATE != 0));
|
|
|
-
|
|
|
- /* UnitDelay: '<S8>/Unit Delay' incorporates:
|
|
|
- * UnitDelay: '<S6>/Unit Delay'
|
|
|
- */
|
|
|
- localDW->UnitDelay_DSTATE_e = localDW->UnitDelay_DSTATE_gh;
|
|
|
+ sohd_flg_chrgEndEo = (((SOH_DW.UnitDelay_DSTATE == 2) && (ihd_st_workStat != 2))
|
|
|
+ || (SOH_DW.UnitDelay1_DSTATE != 0));
|
|
|
|
|
|
/* Outputs for Enabled SubSystem: '<S8>/Resettable Subsystem' incorporates:
|
|
|
* EnablePort: '<S11>/Enable'
|
|
@@ -429,33 +584,27 @@ void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
* Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
*/
|
|
|
if (ihd_st_workStat == 2) {
|
|
|
+ if (!SOH_DW.ResettableSubsystem_MODE) {
|
|
|
+ /* InitializeConditions for UnitDelay: '<S11>/curr_icr_Delay' */
|
|
|
+ SOH_DW.curr_icr_Delay_DSTATE = 0;
|
|
|
+ SOH_DW.ResettableSubsystem_MODE = true;
|
|
|
+ }
|
|
|
+
|
|
|
/* Sum: '<S11>/Add' incorporates:
|
|
|
* Inport: '<Root>/ihd_I_curr'
|
|
|
- * UnitDelay: '<S11>/Unit Delay'
|
|
|
+ * UnitDelay: '<S11>/curr_icr_Delay'
|
|
|
*/
|
|
|
- i_0 = ihd_I_curr * 10 + localDW->UnitDelay_DSTATE;
|
|
|
+ SOH_DW.curr_icr_Delay_DSTATE += ihd_I_curr * 10;
|
|
|
|
|
|
/* Product: '<S11>/Divide1' incorporates:
|
|
|
* Product: '<S11>/Divide'
|
|
|
* Sum: '<S11>/Add'
|
|
|
+ * UnitDelay: '<S11>/curr_icr_Delay'
|
|
|
*/
|
|
|
- localB->Divide1_c = (uint16_T)(((uint16_T)(((uint32_T)div_nde_s32_floor(i_0,
|
|
|
- 200) << 1) / 4500U) * 5U) >> 2);
|
|
|
-
|
|
|
- /* Logic: '<S11>/Logical Operator' incorporates:
|
|
|
- * Constant: '<S8>/Constant2'
|
|
|
- * RelationalOperator: '<S8>/Relational Operator2'
|
|
|
- * UnitDelay: '<S4>/Unit Delay1'
|
|
|
- * UnitDelay: '<S6>/Unit Delay'
|
|
|
- */
|
|
|
- localDW->UnitDelay1_DSTATE_m = (localDW->UnitDelay_DSTATE_e == 2);
|
|
|
-
|
|
|
- /* Product: '<S11>/Product' incorporates:
|
|
|
- * Sum: '<S11>/Add'
|
|
|
- * UnitDelay: '<S11>/Unit Delay'
|
|
|
- * UnitDelay: '<S4>/Unit Delay1'
|
|
|
- */
|
|
|
- localDW->UnitDelay_DSTATE = localDW->UnitDelay1_DSTATE_m ? i_0 : 0;
|
|
|
+ SOH_B.Divide1 = (uint16_T)(((uint16_T)(((uint32_T)div_nde_s32_floor
|
|
|
+ (SOH_DW.curr_icr_Delay_DSTATE, 200) << 1) / 4500U) * 5U) >> 2);
|
|
|
+ } else {
|
|
|
+ SOH_DW.ResettableSubsystem_MODE = false;
|
|
|
}
|
|
|
|
|
|
/* End of RelationalOperator: '<S8>/Relational Operator1' */
|
|
@@ -464,39 +613,30 @@ void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
/* SignalConversion generated from: '<S8>/Resettable Subsystem' incorporates:
|
|
|
* Product: '<S11>/Divide1'
|
|
|
*/
|
|
|
- sohd_Q_chrgEo = localB->Divide1_c;
|
|
|
+ sohd_Q_chrgEo = SOH_B.Divide1;
|
|
|
|
|
|
- /* Update for UnitDelay: '<S6>/Unit Delay1' incorporates:
|
|
|
- * Switch: '<S6>/Switch'
|
|
|
+ /* Update for UnitDelay: '<S4>/First_Delay' incorporates:
|
|
|
+ * Constant: '<S4>/Constant2'
|
|
|
*/
|
|
|
- for (i_0 = 0; i_0 < 28; i_0++) {
|
|
|
- localDW->UnitDelay1_DSTATE_i[i_0] = sohv_V_chrgStartStatEo[i_0];
|
|
|
- }
|
|
|
-
|
|
|
- /* End of Update for UnitDelay: '<S6>/Unit Delay1' */
|
|
|
+ SOH_DW.First_Delay_DSTATE = false;
|
|
|
|
|
|
/* Update for UnitDelay: '<S6>/Unit Delay' incorporates:
|
|
|
* Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
*/
|
|
|
- localDW->UnitDelay_DSTATE_e = ihd_st_workStat;
|
|
|
-
|
|
|
- /* Update for UnitDelay: '<S4>/Unit Delay1' incorporates:
|
|
|
- * Constant: '<S4>/Constant2'
|
|
|
- */
|
|
|
- localDW->UnitDelay1_DSTATE_m = false;
|
|
|
+ SOH_DW.UnitDelay_DSTATE = ihd_st_workStat;
|
|
|
|
|
|
/* Update for UnitDelay: '<S7>/Unit Delay' incorporates:
|
|
|
* Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
*/
|
|
|
- localDW->UnitDelay_DSTATE_g = ihd_st_workStat;
|
|
|
+ SOH_DW.UnitDelay_DSTATE_g = ihd_st_workStat;
|
|
|
|
|
|
/* Abs: '<S7>/Abs' incorporates:
|
|
|
* Inport: '<Root>/ihd_I_curr'
|
|
|
*/
|
|
|
if (ihd_I_curr < 0) {
|
|
|
- tmp_0 = (int16_T)-ihd_I_curr;
|
|
|
+ tmp = (int16_T)-ihd_I_curr;
|
|
|
} else {
|
|
|
- tmp_0 = ihd_I_curr;
|
|
|
+ tmp = ihd_I_curr;
|
|
|
}
|
|
|
|
|
|
/* End of Abs: '<S7>/Abs' */
|
|
@@ -506,17 +646,14 @@ void SOH(B_SOH_c_T *localB, DW_SOH_f_T *localDW)
|
|
|
* Product: '<S7>/Product'
|
|
|
* RelationalOperator: '<S7>/Relational Operator3'
|
|
|
*/
|
|
|
- localDW->UnitDelay1_DSTATE = (uint16_T)(sohd_flg_chrgEndEo ? tmp_0 < 20 : 0);
|
|
|
-
|
|
|
- /* Update for UnitDelay: '<S8>/Unit Delay' incorporates:
|
|
|
- * Inport: '<Root>/ihd_st_ChrgStat '
|
|
|
- */
|
|
|
- localDW->UnitDelay_DSTATE_gh = ihd_st_workStat;
|
|
|
+ SOH_DW.UnitDelay1_DSTATE = (uint16_T)(sohd_flg_chrgEndEo ? tmp < 20 : 0);
|
|
|
}
|
|
|
|
|
|
/* Model initialize function */
|
|
|
-void SOH_initialize(const char_T **rt_errorStatus, RT_MODEL_SOH_T *const SOH_M)
|
|
|
+void SOH_initialize(const char_T **rt_errorStatus)
|
|
|
{
|
|
|
+ RT_MODEL_SOH_T *const SOH_M = &(SOH_MdlrefDW.rtm);
|
|
|
+
|
|
|
/* Registration code */
|
|
|
|
|
|
/* initialize error status */
|