Симуляция генерации синусоидального шим и управление по модбас

note:
- модбас не моделируется,  в s-function просто передаются константы режимов.
- лишние файлы убраны в outdate.
- два канала одной фазы переключаются немного криво: на один такт симуляции проскакивает высокий уровень предыдущего канала и только потом включается текущий канал
This commit is contained in:
alexey
2024-08-21 13:06:16 +03:00
parent 0958cb80c7
commit b82faa62fe
201 changed files with 579 additions and 202 deletions

View File

@@ -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

View File

@@ -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).
*/