Custom uz_GUI for ParameterID#
Since controlling the ParameterID only via the debugger windows is cumbersome and not very practical, a custom-made uz_GUI is shipped. This page details the additional steps needed and how to use the uz_GUI.
Usage#
This section gives an overview of how to use the ParameterID tab in the uz_GUI.
The ParameterID is organized in its own panel, which can be selected via the ParameterID button. Each individual
ID-state
is further organized in its own sub-panel and can be selected in the top left corner.Visible on the right side is the GlobalControl for the UltraZohm. The
Enable System
,Enable Control
andSTOP
buttons are mirrored to the ones in the UltraZohm-GuiControl
tab.The button
ParameterID
enables or disables the ParameterID. The status indicator to the right signals the current state of the ParameterID (on/off).Here all individual
ID-states
can be turned on or off. The current state of theID-state
is signaled via the status indicators next to the buttons. The possible states are:Disabled
, for when the state is disabled and not requested for future use. As long as this status is active, the controls for thisID-state
are locked.Requested
, for when aID-state
is supposed to be executed but has not started yet. In this state, the config values should be changed.Active
. for when this state is currently executing.Finished
, for when the state is finished and anotherID-state
can be started.
The
State Control
buttons are used for general control of the ParameterID.The
ACCEPT
button is used to transition the ParameterID into a different state. This is mostly used to enable theID-states
after requesting them. Other uses can be to continue oneID-state
, after some operations have to be done, i.e., start up the load machine.The
RESET
button resets the entire ParameterID.
Each
ID-state
has a uniqueactiveState
variable for each substate. This is displayed here to give further information to the user that the state is running and what it’s doing.Selection for control method after every Offline-state is finished. The selection can only be changed if the
Control
state of the UltraZohm is disabled.If
CurrentControl
is selected, \(i_d\) and \(i_q\) reference values can be entered in the appropriate field in the JavaScope panel.If
SpeedControl
is selected, a \(n_{ref}\) reference value can be entered in the appropriate field in the JavaScope panel.If
Disable Control
is selected, every previous control method selection is disabled, and nothing happens.
Each
ID-state
has its own individual panel, where the individual config values can be configured, and the identified values can be displayed. They have to be configured before entering theID-state
. Standard values for the config values are displayed, which proved appropriate in the past. They can be used as an introductory baseline.
Setup#
In the
properties.ini
file change the value of theParameterID
variable to 1.Replace the appropriate code in the
javascope.h
file with the following:1// slowData Naming Convention: Use JSSD_FLOAT_ as prefix 2// Do not change the first (zero) and last (end) entries. 3enum JS_SlowData { 4 .... 5 JSSD_FLOAT_Rs_Offline, 6 JSSD_FLOAT_Ld_Offline, 7 JSSD_FLOAT_Lq_Offline, 8 JSSD_FLOAT_PsiPM_Offline, 9 JSSD_FLOAT_J, 10 JSSD_FLOAT_activeState, 11 JSSD_FLOAT_ArrayCounter, 12 JSSD_FLOAT_measArraySpeed, 13 JSSD_FLOAT_measArrayTorque, 14 JSSD_FLOAT_ArrayControlCounter, 15 JSSD_FLOAT_Stribtorque, 16 JSSD_FLOAT_Coulombtorque, 17 JSSD_FLOAT_Viscotorque, 18 JSSD_FLOAT_Rs_online_FMID, 19 JSSD_FLOAT_Wtemp_FMID, 20 JSSD_FLOAT_TrainInertia, 21 JSSD_FLOAT_LoadInertia, 22 JSSD_FLOAT_c_est, 23 JSSD_FLOAT_d_est, 24 JSSD_FLOAT_MapCounter, 25 JSSD_FLOAT_psidMap, 26 JSSD_FLOAT_psiqMap, 27 JSSD_FLOAT_FluxTemp, 28 JSSD_FLOAT_MapControl, 29 JSSD_FLOAT_I_rated, 30 JSSD_FLOAT_Ld_Online, 31 JSSD_FLOAT_Lq_Online, 32 JSSD_FLOAT_PsiPM_Online, 33 JSSD_FLOAT_Rs_Online, 34 JSSD_FLOAT_n_FluxPoints, 35 JSSD_FLOAT_totalRotorInertia, 36 JSSD_FLOAT_MapControlCounter, 37 JSSD_FLOAT_polePairs, 38 JSSD_ENDMARKER 39}
1// Determination of Button IDs via enum. When a button in the GUI is pressed, 2// the GUI sends an ID and a value. IDs of the buttons are the respective enum 3// numbers in the following enum. 4// Do not change the first (zero) and last (end) entries. 5// Do not change names! They are hard coupled within the GUI! 6enum gui_button_mapping { 7 GUI_BTN_ZEROVALUE=0, 8 .... 9 ParaID_Enable_System, 10 ParaID_Enable_Control, 11 ParaID_Enable_ParameterID, 12 ParaID_Disable_ParameterID, 13 ParaID_Enable_ElectricalID, 14 ParaID_Disable_ElectricalID, 15 ParaID_Enable_FrictionID, 16 ParaID_Disable_FrictionID, 17 ParaID_Enable_TwoMassID, 18 ParaID_Disable_TwoMassID, 19 ParaID_Enable_FluxMapID, 20 ParaID_Disable_FluxMapID, 21 ParaID_Enable_OnlineID, 22 ParaID_Disable_OnlineID, 23 ParaID_Enable_Current_Control, 24 ParaID_Enable_Speed_Control, 25 ParaID_Disable_FOC_Control, 26 ParaID_ACCEPT, 27 ParaID_RESET, 28 ParaID_EID_sampleTimeISR, 29 ParaID_EID_n_ref_meas, 30 ParaID_EID_goertzl_Torque, 31 ParaID_EID_goertzl_Freq, 32 ParaID_EID_DutyCyc, 33 ParaID_EID_MaxContinousCurrent, 34 ParaID_EID_Enable_IdentLQ, 35 ParaID_EID_Disable_IdentLQ, 36 ParaID_EID_Admit_Params, 37 ParaID_FID_max_speed, 38 ParaID_FID_N_Brk, 39 ParaID_FID_N_Visco, 40 ParaID_FID_s_step, 41 ParaID_FID_Brk_Count, 42 ParaID_FID_eta_speed, 43 ParaID_FID_Array_Control_counter, 44 ParaID_TMID_Scale_PRBS, 45 ParaID_TMID_d_TMS_start, 46 ParaID_TMID_n_ref, 47 ParaID_TMID_f_min, 48 ParaID_TMID_f_max, 49 ParaID_TMID_Admit_Params, 50 ParaID_FMID_i_d_start, 51 ParaID_FMID_i_d_stop, 52 ParaID_FMID_i_d_step, 53 ParaID_FMID_i_q_start, 54 ParaID_FMID_i_q_stop, 55 ParaID_FMID_i_q_step, 56 ParaID_FMID_Rs_ref, 57 ParaID_FMID_Temp_ref, 58 ParaID_FMID_identRAmp, 59 ParaID_FMID_enable_ident_R, 60 ParaID_FMID_disable_ident_R, 61 ParaID_FMID_enable_AMM, 62 ParaID_FMID_disable_AMM, 63 ParaID_OID_Refresh_Flux_Maps, 64 ParaID_OID_Reset_OnlineID, 65 ParaID_OID_Enable_AutoCurrentControl, 66 ParaID_OID_Disable_AutoCurrentControl, 67 ParaID_OID_d_current_steps, 68 ParaID_OID_q_current_steps, 69 ParaID_OID_max_current, 70 ParaID_OID_ref_temp, 71 ParaID_OID_ref_Rs, 72 ParaID_OID_max_speed, 73 ParaID_OID_min_speed, 74 ParaID_OID_Ident_range_factor, 75 ParaID_OID_max_ident_pause, 76 ParaID_OID_identR_Amp, 77 ParaID_OID_Fluxmap_Control_counter, 78 GUI_BTN_ENDMARKER 79};
1/* Visualization Config for GUI*/ 2// LEAVE IT COMMENTED OUT AS IT IS, the plain text below is parsed by the GUI! 3// Change entries according to your needs. 4/* 5// Description (printed text) for the send_fields top to bottom 6// Do not change the first (zero) and last (end) entries. 7 8SND_FLD_ZEROVALUE=0, 9n_ref, 10i_d_ref, 11i_q_ref, 12.... 13SND_FLD_ENDMARKER 14 15 16// Physical unit label (printed text) for the send_fields top to bottom 17// Do not change the first (zero) and last (end) entries. 18 19SND_LABELS_ZEROVALUE=0, 20RPM, 21A, 22A, 23.... 24SND_LABELS_ENDMARKER
1// Description (printed text) for the receive_fields top to bottom 2// Do not change the first (zero) and last (end) entries. 3 4RCV_FLD_ZEROVALUE=0, 5speed, 6torque, 7i_d, 8i_q, 9u_d, 10u_q, 11.... 12RCV_FLD_ENDMARKER 13 14 15// Physical unit label (printed text) for the receive_fields top to bottom 16// Do not change the first (zero) and last (end) entries. 17 18RCV_LABELS_ZEROVALUE=0, 19RPM, 20Nm, 21A, 22A, 23V, 24V, 25.... 26RCV_LABELS_ENDMARKER 27 28 29// Slow Data values that are displayed in the receive_fields top to bottom 30// Do not change the first (zero) and last (end) entries. 31// Make sure that the signal names below are also present in the JS_SlowData enum! 32 33SLOWDAT_DISPLAY_ZEROVALUE=0, 34JSSD_FLOAT_speed, 35JSSD_FLOAT_torque, 36JSSD_FLOAT_i_d, 37JSSD_FLOAT_i_q, 38JSSD_FLOAT_u_d, 39JSSD_FLOAT_u_q, 40JSSD_FLOAT_Error_Code, 41.... 42SLOWDAT_DISPLAY_ENDMARKER 43*/
Add the following code to the
ipc_ARM.c
file.1// slowData Naming Convention: Use JSSD_FLOAT_ as prefix 2// Do not change the first (zero) and last (end) entries. 3extern uz_ParameterID_Data_t ParaID_Data; 4//If FOC is used 5extern uz_CurrentControl_t* CC_instance; 6extern uz_SetPoint_t* SP_instance; 7 8void ipc_Control_func(uint32_t msgId, float value, DS_Data *data) 9{ 10 // HANDLE RECEIVED MESSAGE 11 if (msgId != 0) 12 { 13 // GENERAL VARIABLES 14 switch (msgId) 15 { 16 .... 17 //Change Send_Field 1-3 18 case (Set_Send_Field_1): 19 ParaID_Data.GlobalConfig.n_ref = value; 20 break; 21 22 case (Set_Send_Field_2): 23 ParaID_Data.GlobalConfig.i_dq_ref.d = value; 24 break; 25 26 case (Set_Send_Field_3): 27 ParaID_Data.GlobalConfig.i_dq_ref.q = value; 28 break; 29 .... 30 //After all My_Button cases add the following 31 //ParameterID 32 33 case (ParaID_Enable_System): 34 ultrazohm_state_machine_set_enable_system(true); 35 break; 36 37 case (ParaID_Enable_Control): 38 ultrazohm_state_machine_set_enable_control(true); 39 break; 40 41 case (ParaID_Enable_ParameterID): 42 ParaID_Data.GlobalConfig.enableParameterID = true; 43 break; 44 45 case (ParaID_Disable_ParameterID): 46 ParaID_Data.GlobalConfig.enableParameterID = false; 47 ParaID_Data.GlobalConfig.ElectricalID = false; 48 ParaID_Data.GlobalConfig.TwoMassID = false; 49 ParaID_Data.GlobalConfig.FrictionID = false; 50 ParaID_Data.GlobalConfig.FluxMapID = false; 51 ParaID_Data.GlobalConfig.OnlineID = false; 52 ParaID_Data.FluxMapID_Config.start_FM_ID = false; 53 break; 54 55 case (ParaID_Enable_Current_Control): 56 if (ultrazohm_state_machine_get_state() != control_state) { 57 ParaID_Data.ParaID_Control_Selection = Current_Control; 58 } 59 break; 60 61 case (ParaID_Enable_Speed_Control): 62 if (ultrazohm_state_machine_get_state() != control_state) { 63 ParaID_Data.ParaID_Control_Selection = Speed_Control; 64 } 65 break; 66 67 case (ParaID_Disable_FOC_Control): 68 ParaID_Data.ParaID_Control_Selection = No_Control; 69 break; 70 71 case (ParaID_Enable_ElectricalID): 72 ParaID_Data.GlobalConfig.ElectricalID = true; 73 break; 74 75 case (ParaID_Disable_ElectricalID): 76 ParaID_Data.GlobalConfig.ElectricalID = false; 77 break; 78 79 case (ParaID_Enable_FrictionID): 80 ParaID_Data.GlobalConfig.FrictionID = true; 81 break; 82 83 case (ParaID_Disable_FrictionID): 84 ParaID_Data.GlobalConfig.FrictionID = false; 85 break; 86 87 case (ParaID_Enable_TwoMassID): 88 ParaID_Data.GlobalConfig.TwoMassID = true; 89 break; 90 91 case (ParaID_Disable_TwoMassID): 92 ParaID_Data.GlobalConfig.TwoMassID = false; 93 break; 94 95 case (ParaID_Enable_FluxMapID): 96 ParaID_Data.GlobalConfig.FluxMapID = true; 97 break; 98 99 case (ParaID_Disable_FluxMapID): 100 ParaID_Data.GlobalConfig.FluxMapID = false; 101 ParaID_Data.FluxMapID_Config.start_FM_ID = false; 102 break; 103 104 case (ParaID_Enable_OnlineID): 105 ParaID_Data.GlobalConfig.OnlineID = true; 106 break; 107 108 case (ParaID_Disable_OnlineID): 109 ParaID_Data.GlobalConfig.OnlineID = false; 110 ParaID_Data.AutoRefCurrents_Config.enableCRS = false; 111 break; 112 113 case (ParaID_ACCEPT): 114 ParaID_Data.GlobalConfig.ACCEPT = true; 115 break; 116 117 case (ParaID_RESET): 118 ParaID_Data.GlobalConfig.Reset = true; 119 ParaID_Data.GlobalConfig.ElectricalID = false; 120 ParaID_Data.GlobalConfig.TwoMassID = false; 121 ParaID_Data.GlobalConfig.FrictionID = false; 122 ParaID_Data.GlobalConfig.FluxMapID = false; 123 ParaID_Data.GlobalConfig.OnlineID = false; 124 ParaID_Data.AutoRefCurrents_Config.enableCRS = false; 125 ParaID_Data.ParaID_Control_Selection = No_Control; 126 ParaID_Data.ElectricalID_Config.identLq = false; 127 ParaID_Data.FluxMapID_Config.start_FM_ID = false; 128 129 break; 130 131 case (ParaID_EID_sampleTimeISR): 132 ParaID_Data.GlobalConfig.sampleTimeISR = value * 0.000001f; 133 break; 134 135 case (ParaID_EID_n_ref_meas): 136 ParaID_Data.ElectricalID_Config.n_ref_measurement = value; 137 break; 138 139 case (ParaID_EID_goertzl_Torque): 140 ParaID_Data.ElectricalID_Config.goertzlTorque = value; 141 break; 142 143 case (ParaID_EID_goertzl_Freq): 144 ParaID_Data.ElectricalID_Config.goertzlFreq = value; 145 break; 146 147 case (ParaID_EID_DutyCyc): 148 ParaID_Data.ElectricalID_Config.dutyCyc = value; 149 break; 150 151 case (ParaID_EID_MaxContinousCurrent): 152 ParaID_Data.GlobalConfig.PMSM_config.I_max_Ampere = value; 153 break; 154 155 case (ParaID_EID_Enable_IdentLQ): 156 ParaID_Data.ElectricalID_Config.identLq = true; 157 break; 158 159 case (ParaID_EID_Disable_IdentLQ): 160 ParaID_Data.ElectricalID_Config.identLq = false; 161 break; 162 163 case (ParaID_EID_Admit_Params): 164 //If FOC is used 165 uz_CurrentControl_set_PMSM_parameters(CC_instance, ParaID_Data.ElectricalID_Output->PMSM_parameters); 166 uz_SetPoint_set_PMSM_config(SP_instance, ParaID_Data.ElectricalID_Output->PMSM_parameters); 167 break; 168 169 case (ParaID_FID_max_speed): 170 ParaID_Data.FrictionID_Config.n_eva_max = value; 171 break; 172 173 case (ParaID_FID_N_Brk): 174 ParaID_Data.FrictionID_Config.N_Brk = value; 175 break; 176 177 case (ParaID_FID_N_Visco): 178 ParaID_Data.FrictionID_Config.N_Visco = value; 179 break; 180 181 case (ParaID_FID_s_step): 182 ParaID_Data.FrictionID_Config.StepScale = value; 183 break; 184 185 case (ParaID_FID_Brk_Count): 186 ParaID_Data.FrictionID_Config.BrkCount = value; 187 break; 188 189 case (ParaID_FID_eta_speed): 190 ParaID_Data.FrictionID_Config.eta = value; 191 break; 192 193 case (ParaID_TMID_Scale_PRBS): 194 ParaID_Data.TwoMassID_Config.ScaleTorquePRBS = value; 195 break; 196 197 case (ParaID_TMID_d_TMS_start): 198 ParaID_Data.TwoMassID_Config.d_TMS_start = value; 199 break; 200 201 case (ParaID_TMID_n_ref): 202 ParaID_Data.TwoMassID_Config.n_ref_measurement = value; 203 break; 204 205 case (ParaID_TMID_f_min): 206 ParaID_Data.TwoMassID_Config.f_min = value; 207 break; 208 209 case (ParaID_TMID_f_max): 210 ParaID_Data.TwoMassID_Config.f_max = value; 211 break; 212 213 case (ParaID_FMID_i_d_start): 214 ParaID_Data.FluxMapID_Config.IDstart = value; 215 break; 216 217 case (ParaID_FMID_i_d_stop): 218 ParaID_Data.FluxMapID_Config.IDstop = value; 219 break; 220 221 case (ParaID_FMID_i_d_step): 222 ParaID_Data.FluxMapID_Config.IDstepsize = value; 223 break; 224 225 case (ParaID_FMID_i_q_start): 226 ParaID_Data.FluxMapID_Config.IQstart = value; 227 break; 228 229 case (ParaID_FMID_i_q_stop): 230 ParaID_Data.FluxMapID_Config.IQstop = value; 231 break; 232 233 case (ParaID_FMID_i_q_step): 234 ParaID_Data.FluxMapID_Config.IQstepsize = value; 235 break; 236 237 case (ParaID_FMID_Rs_ref): 238 ParaID_Data.FluxMapID_Config.R_s_ref = value; 239 break; 240 241 case (ParaID_FMID_Temp_ref): 242 ParaID_Data.FluxMapID_Config.Temp_ref = value; 243 break; 244 245 case (ParaID_FMID_identRAmp): 246 ParaID_Data.FluxMapID_Config.identRAmp = value; 247 break; 248 249 case (ParaID_FMID_enable_ident_R): 250 ParaID_Data.FluxMapID_Config.identR = true; 251 break; 252 253 case (ParaID_FMID_disable_ident_R): 254 ParaID_Data.FluxMapID_Config.identR = false; 255 break; 256 257 case (ParaID_FMID_enable_AMM): 258 ParaID_Data.FluxMapID_Config.start_FM_ID = true; 259 break; 260 261 case (ParaID_FMID_disable_AMM): 262 ParaID_Data.FluxMapID_Config.start_FM_ID = false; 263 break; 264 265 case (ParaID_OID_Refresh_Flux_Maps): 266 ParaID_Data.calculate_flux_maps = true; 267 break; 268 269 case (ParaID_OID_Reset_OnlineID): 270 ParaID_Data.OnlineID_Config.OnlineID_Reset = true; 271 ParaID_Data.AutoRefCurrents_Config.Reset = true; 272 ParaID_Data.AutoRefCurrents_Config.enableCRS = false; 273 break; 274 275 case (ParaID_OID_Enable_AutoCurrentControl): 276 ParaID_Data.AutoRefCurrents_Config.enableCRS = true; 277 break; 278 279 case (ParaID_OID_Disable_AutoCurrentControl): 280 ParaID_Data.AutoRefCurrents_Config.enableCRS = false; 281 break; 282 283 case (ParaID_OID_d_current_steps): 284 ParaID_Data.AutoRefCurrents_Config.id_points = value; 285 break; 286 287 case (ParaID_OID_q_current_steps): 288 ParaID_Data.AutoRefCurrents_Config.iq_points = value; 289 break; 290 291 case (ParaID_OID_max_current): 292 ParaID_Data.AutoRefCurrents_Config.max_current = value; 293 break; 294 295 case (ParaID_OID_ref_temp): 296 ParaID_Data.OnlineID_Config.Temp_ref = value; 297 break; 298 299 case (ParaID_OID_ref_Rs): 300 ParaID_Data.GlobalConfig.PMSM_config.R_ph_Ohm = value; 301 break; 302 303 case (ParaID_OID_max_speed): 304 ParaID_Data.OnlineID_Config.max_n_ratio = value; 305 break; 306 307 case (ParaID_OID_min_speed): 308 ParaID_Data.OnlineID_Config.min_n_ratio = value; 309 break; 310 311 case (ParaID_OID_Ident_range_factor): 312 ParaID_Data.OnlineID_Config.nom_factor = value; 313 break; 314 315 case (ParaID_OID_max_ident_pause): 316 ParaID_Data.OnlineID_Config.Rs_time = value; 317 break; 318 case (ParaID_OID_identR_Amp): 319 ParaID_Data.OnlineID_Config.identRAmp = value; 320 break; 321 322 case (ParaID_OID_Fluxmap_Control_counter): 323 ParaID_Data.FluxMap_Control_counter = value; 324 break; 325 326 case (ParaID_FID_Array_Control_counter): 327 ParaID_Data.Array_Control_counter = value; 328 break; 329 .... 330 } 331 } 332 333 .... 334 //Replace Bit 13-19 with the following 335 /* Bit 13 - Ident_Lq */ 336 if (ParaID_Data.ElectricalID_Config.identLq == true) { 337 js_status_BareToRTOS |= (1 << 13); 338 } else { 339 js_status_BareToRTOS &= ~(1 << 13); 340 } 341 342 /* Bit 14 - FluxMapID R-Online */ 343 if (ParaID_Data.FluxMapID_Config.identR == true) { 344 js_status_BareToRTOS |= (1 << 14); 345 } else { 346 js_status_BareToRTOS &= ~(1 << 14); 347 } 348 349 /* Bit 15 - FluxMapID start */ 350 if (ParaID_Data.FluxMapID_Config.start_FM_ID == true) { 351 js_status_BareToRTOS |= (1 << 15); 352 } else { 353 js_status_BareToRTOS &= ~(1 << 15); 354 } 355 356 /* Bit 16 - ParaID_FOC_CC */ 357 if (ParaID_Data.ParaID_Control_Selection == Current_Control) { 358 js_status_BareToRTOS |= (1 << 16); 359 } else { 360 js_status_BareToRTOS &= ~(1 << 16); 361 } 362 363 /* Bit 17 - ParaID_FOC_SC */ 364 if (ParaID_Data.ParaID_Control_Selection == Speed_Control) { 365 js_status_BareToRTOS |= (1 << 17); 366 } else { 367 js_status_BareToRTOS &= ~(1 << 17); 368 } 369 370 /* Bit 18 -ParaID_FOC_no_control */ 371 if (ParaID_Data.ParaID_Control_Selection == No_Control) { 372 js_status_BareToRTOS |= (1 << 18); 373 } else { 374 js_status_BareToRTOS &= ~(1 << 18); 375 } 376 377 /* Bit 19 -ParameterID active */ 378 if (ParaID_Data.GlobalConfig.enableParameterID == true) { 379 ultrazohm_state_machine_set_userLED(true); 380 js_status_BareToRTOS |= (1 << 19); 381 } else { 382 js_status_BareToRTOS &= ~(1 << 19); 383 ultrazohm_state_machine_set_userLED(false); 384 } 385 .... 386}
Change the code of
js_slowDataArray
in thejavascope.c
file.1//ParameterID 2extern uz_ParameterID_Data_t ParaID_Data; 3float activeState = 0.0f; 4float FluxMapCounter = 0.0f; 5float ArrayCounter = 0.0f; 6 7int JavaScope_initalize(DS_Data* data) 8{ 9 .... 10 // Store slow / not-time-critical signals into the SlowData-Array. 11 // Will be transferred one after another 12 // The array may grow arbitrarily long, the refresh rate of the individual values decreases. 13 // Only float is allowed! 14 js_slowDataArray[JSSD_FLOAT_u_d] = &(ParaID_Data.ActualValues.v_dq.d); 15 js_slowDataArray[JSSD_FLOAT_u_q] = &(ParaID_Data.ActualValues.v_dq.q); 16 js_slowDataArray[JSSD_FLOAT_i_d] = &(ParaID_Data.ActualValues.i_dq.d); 17 js_slowDataArray[JSSD_FLOAT_i_q] = &(ParaID_Data.ActualValues.i_dq.q); 18 js_slowDataArray[JSSD_FLOAT_speed] = &(data->av.mechanicalRotorSpeed); 19 js_slowDataArray[JSSD_FLOAT_torque] = &(data->av.mechanicalTorqueObserved); 20 js_slowDataArray[JSSD_FLOAT_PsiPM_Offline] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.Psi_PM_Vs); 21 js_slowDataArray[JSSD_FLOAT_Lq_Offline] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.Lq_Henry); 22 js_slowDataArray[JSSD_FLOAT_Ld_Offline] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.Ld_Henry); 23 js_slowDataArray[JSSD_FLOAT_Rs_Offline] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.R_ph_Ohm); 24 js_slowDataArray[JSSD_FLOAT_polePairs] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.polePairs); 25 js_slowDataArray[JSSD_FLOAT_J] = &(ParaID_Data.ElectricalID_Output->PMSM_parameters.J_kg_m_squared); 26 js_slowDataArray[JSSD_FLOAT_activeState] = &(activeState); 27 js_slowDataArray[JSSD_FLOAT_SecondsSinceSystemStart]= &System_UpTime_seconds; 28 js_slowDataArray[JSSD_FLOAT_ISR_ExecTime_us] = &ISR_execution_time_us; 29 js_slowDataArray[JSSD_FLOAT_ISR_Period_us] = &ISR_period_us; 30 js_slowDataArray[JSSD_FLOAT_Milliseconds] = &System_UpTime_ms; 31 js_slowDataArray[JSSD_FLOAT_encoderOffset] = &(ParaID_Data.ElectricalID_Output->thetaOffset); 32 js_slowDataArray[JSSD_FLOAT_ArrayCounter] = &(ArrayCounter); 33 js_slowDataArray[JSSD_FLOAT_measArraySpeed] = &(ParaID_Data.MeasArraySpeed_pointer); 34 js_slowDataArray[JSSD_FLOAT_measArrayTorque] = &(ParaID_Data.MeasArrayTorque_pointer); 35 js_slowDataArray[JSSD_FLOAT_ArrayControlCounter] = &(ArrayCounter); 36 js_slowDataArray[JSSD_FLOAT_Stribtorque] = &(ParaID_Data.FrictionID_Output->BrkTorque); 37 js_slowDataArray[JSSD_FLOAT_Coulombtorque] = &(ParaID_Data.FrictionID_Output->CoulTorque); 38 js_slowDataArray[JSSD_FLOAT_Viscotorque] = &(ParaID_Data.FrictionID_Output->ViscoTorque); 39 js_slowDataArray[JSSD_FLOAT_TrainInertia] = &(ParaID_Data.TwoMassID_Output->TrainInertia); 40 js_slowDataArray[JSSD_FLOAT_LoadInertia] = &(ParaID_Data.TwoMassID_Output->LoadInertia); 41 js_slowDataArray[JSSD_FLOAT_c_est] = &(ParaID_Data.TwoMassID_Output->c_est_out); 42 js_slowDataArray[JSSD_FLOAT_d_est] = &(ParaID_Data.TwoMassID_Output->d_est_out); 43 js_slowDataArray[JSSD_FLOAT_I_rated] = &(ParaID_Data.GlobalConfig.ratCurrent); 44 js_slowDataArray[JSSD_FLOAT_totalRotorInertia] = &(ParaID_Data.TwoMassID_Output->rotorInertia); 45 js_slowDataArray[JSSD_FLOAT_Ld_Online] = &(ParaID_Data.OnlineID_Output->Ld_out); 46 js_slowDataArray[JSSD_FLOAT_Lq_Online] = &(ParaID_Data.OnlineID_Output->Lq_out); 47 js_slowDataArray[JSSD_FLOAT_PsiPM_Online] = &(ParaID_Data.OnlineID_Output->psi_pm_out); 48 js_slowDataArray[JSSD_FLOAT_Rs_Online] = &(ParaID_Data.OnlineID_Output->Rph_out); 49 js_slowDataArray[JSSD_FLOAT_n_FluxPoints] = &(ParaID_Data.FluxMap_MeasuringPoints); 50 js_slowDataArray[JSSD_FLOAT_Rs_online_FMID] = &(ParaID_Data.FluxMapID_Output->R_s); 51 js_slowDataArray[JSSD_FLOAT_Wtemp_FMID] = &(ParaID_Data.FluxMapID_Output->WindingTemp); 52 js_slowDataArray[JSSD_FLOAT_MapCounter] = &(FluxMapCounter); 53 js_slowDataArray[JSSD_FLOAT_psidMap] = &(ParaID_Data.Psi_D_pointer); 54 js_slowDataArray[JSSD_FLOAT_psiqMap] = &(ParaID_Data.Psi_Q_pointer); 55 js_slowDataArray[JSSD_FLOAT_MapControlCounter] = &(FluxMapCounter); 56 return Status; 57}
In the
JavaScope_update
function in thejavascope.c
file add.1void JavaScope_update(DS_Data* data) 2{ 3 .... 4 uz_ParameterID_update_transmit_values(&ParaID_Data, &activeState, &FluxMapCounter, &ArrayCounter); 5 .... 6}