Симуляция генерации синусоидального шим и управление по модбас
note: - модбас не моделируется, в s-function просто передаются константы режимов. - лишние файлы убраны в outdate. - два канала одной фазы переключаются немного криво: на один такт симуляции проскакивает высокий уровень предыдущего канала и только потом включается текущий канал
This commit is contained in:
@@ -158,10 +158,10 @@ static void mdlTerminate(SimStruct *S)
|
||||
{
|
||||
//TerminateThread(hThread, NULL);
|
||||
//CloseHandle(hThread);
|
||||
flag_to_end = 1; // выставляем флаг закончить код МК
|
||||
ResumeThread(hThread); // запускаем код мк
|
||||
WaitForSingleObject(hThread, 1000); // и ждем пока он закончиться
|
||||
SIM_deInitialize_Simulation(); // деинициализируем симуляцию
|
||||
flag_to_end = 1;
|
||||
ResumeThread(hThread);
|
||||
WaitForSingleObject(hThread, 1000);
|
||||
SIM_deInitialize_Simulation();
|
||||
mexUnlock();
|
||||
}
|
||||
#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a
|
||||
|
||||
@@ -117,10 +117,11 @@ extern double SIM_Sample_Time; // sample time
|
||||
/**
|
||||
* @brief While statement for emulate MCU code in Simulink.
|
||||
* @param _expression_ - expression for while.
|
||||
* @note Данный while, работает как обычный, пока флаг окончания симуляции (flag_to_end)
|
||||
* равен нулю. Т.е. симуляция продолжается.
|
||||
Когда время симуляции закончилась (флаг выставляется в 1) все while в коде МК будут пропускаться
|
||||
*
|
||||
* @note Данный while, при условии, что программа в него входит (_expression_ != 0)
|
||||
* сохраняет контекст программы и устанавливает таймаут (определенное кол-во циклов).
|
||||
* Если таймаут истекает происходит прерывание программы. И она возвращается в оболочку,
|
||||
* которая перейдет на следующий такт и снова попробует пройти условие. И так далее
|
||||
* Таким образом программа МК зависнет на этом while, но перефирия продолжит работать.
|
||||
*
|
||||
* @code @ref sim_while_CODE_ to see for replace while sim_while (for debug).
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user