void simu_controller_loop(MBSdataStruct *MBSdata) { // variables declaration double tsim; UserIOStruct *uvs; ControllerStruct *cvs; // variables initialization tsim = MBSdata->tsim; uvs = MBSdata->user_IO; cvs = uvs->cvs; // controller called every milli-second (PERIOD_CTRL) if (tsim >= uvs->last_t_ctrl + PERIOD_CTRL - TIME_EPSILON) { uvs->last_t_ctrl = tsim; controller_loop_interface(MBSdata); } // simulation outputs for simulink (useless for the Standalone version) simulink_outputs(MBSdata); // stopping the simulation if needed stop_simu(MBSdata); }
void simu_controller_loop(MBSdataStruct *MBSdata) { double tsim; ControllerStruct *cvs; UserIOStruct *uvs; uvs = MBSdata->user_IO; cvs = uvs->cvs; tsim = MBSdata->tsim; // controller if (tsim >= uvs->last_t_ctrl + PERIOD_CTRL - TIME_EPSILON) { uvs->last_t_ctrl = tsim; controller_inputs(MBSdata); controller_loop(cvs); controller_outputs(MBSdata); } // simulation outputs simu_outputs(MBSdata); // objective function fitness(MBSdata); // stopping the simulation if needed stop_simu(MBSdata); }