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

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

35
.gitignore vendored
View File

@ -1,30 +1,7 @@
/.vs
/.vs/slnx.sqlite
/.vs/tasks.vs.json
/.vs/test/v16/.suo
/.vs/test/v16/Browse.VC.db
/.vs/test/v16/Browse.VC.db-shm
/.vs/test/v16/Browse.VC.db-wal
/.vs/test/v16/Browse.VC.opendb
/.vs/test/v16/ipch/AutoPCH/291705294dd594cc/MAIN.ipch
/.vs/test/v16/ipch/AutoPCH/3854b8d8fc67ea4/STM32F4XX_HAL.ipch
/.vs/test/v16/ipch/AutoPCH/3cb8fc0ec124017c/STM32F407XX_MATLAB.ipch
/.vs/test/v16/ipch/AutoPCH/5fbc2639f7ec2c10/STM32F407XX_MATLAB.ipch
/.vs/test/v16/ipch/AutoPCH/c31768203856fa04/STM32F407XX_MATLAB.ipch
/.vs/test/v16/ipch/AutoPCH/f64e8f1797b0f4bf/SETJMP.ipch
/.vs/test/v16/.suo
/.vs/test/v16/Browse.VC.db
/.vs/slnx.sqlite
/.vs/test/v16/.suo
/.vs/VSWorkspaceState.json
/Code/.vs/Code/v16/.suo
/Code/.vs/Code/v16/Browse.VC.db
/Code/.vs/ProjectSettings.json
/Code/.vs/slnx.sqlite
/Code/.vs/VSWorkspaceState.json
/mcu_test_r2021a.slxc
/MCU.mexw64
/MCU.mexw64.pdb
/slprj/sim/varcache/mcu_test_r2021a/checksumOfCache.mat
/slprj/sim/varcache/mcu_test_r2021a/tmwinternal/simulink_cache.xml
/slprj/sim/varcache/mcu_test_r2021a/varInfo.mat
/slprj
/Code/.vs/
*.slxc
*.mexw64
*.mexw64.pdb

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

Some files were not shown because too many files have changed in this diff Show More