From fe4bd76d7ed45bdbc8d317693de69244c9e35bcf Mon Sep 17 00:00:00 2001 From: EmanuelFeru Date: Wed, 5 Jun 2019 22:39:30 +0200 Subject: [PATCH] =?UTF-8?q?=E2=96=BA=20Improved=20controller:=20faster=20a?= =?UTF-8?q?nd=20better=20overall?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the controller is faster and more light in memory footprint - motor control is now done intependenly using Reusable code generation setting in Simulink - fixed bug when chaging direction fast --- .../01_Controller/BLDC_controller_Lib.slx | Bin 57146 -> 54799 bytes .../BLDC_controller_Lib_AccelerationBased.slx | Bin 0 -> 60658 bytes .../BLDC_controller_Lib_CounterBased.slx | Bin 0 -> 61629 bytes 01_Matlab/99_RecycleBin/init_model.m | 214 + .../BLDC_controller_ert_rtw/BLDC_controller.c | 1481 +--- .../BLDC_controller_ert_rtw/BLDC_controller.h | 418 +- .../BLDC_controller.mk | 6 +- .../BLDC_controller_data.c | 160 +- .../BLDC_controller_ert_rtw/buildInfo.mat | Bin 35068 -> 22630 bytes .../build_exception.mat | Bin 1319 -> 0 bytes .../BLDC_controller_ert_rtw/codeInfo.mat | Bin 8599 -> 8038 bytes .../codedescriptor.dmr | Bin 696320 -> 493568 bytes 01_Matlab/BLDC_controller_ert_rtw/defines.txt | 2 +- 01_Matlab/BLDC_controller_ert_rtw/ert_main.c | 88 +- .../html/BLDC_controller_c.html | 1807 ++--- .../html/BLDC_controller_contents.html | 13 +- .../html/BLDC_controller_data_c.html | 266 +- .../html/BLDC_controller_h.html | 632 +- .../html/BLDC_controller_interface.html | 424 +- .../html/BLDC_controller_metrics.html | 2980 +------ .../html/BLDC_controller_sid_map.js | 1395 +--- .../html/BLDC_controller_subsystems.html | 204 +- .../html/BLDC_controller_survey.html | 4 +- .../html/BLDC_controller_trace.html | 77 +- .../html/BLDC_controller_traceInfo.js | 4659 ++++------- .../html/codeMetrics.mat | Bin 12676 -> 5439 bytes .../html/contents_file.tmp | 11 +- .../BLDC_controller_ert_rtw/html/define.js | 64 +- .../html/ert_main_c.html | 248 +- .../BLDC_controller_ert_rtw/html/metrics.js | 72 +- .../html/rtwtypes_h.html | 4 +- .../html/traceInfo.mat | Bin 100980 -> 45220 bytes .../html/webview/support/slwebview.json | 70 +- .../BLDCmotorControl_R2017b_1828_d.json | 10 +- .../BLDCmotorControl_R2017b_1828_d.png | Bin 5415 -> 4960 bytes .../BLDCmotorControl_R2017b_1828_d.svg | 24 +- .../BLDCmotorControl_R2017b_1831_d.json | 10 +- .../BLDCmotorControl_R2017b_1831_d.png | Bin 5355 -> 4900 bytes .../BLDCmotorControl_R2017b_1831_d.svg | 24 +- .../BLDCmotorControl_R2017b_1834_d.json | 10 +- .../BLDCmotorControl_R2017b_1834_d.png | Bin 5460 -> 5071 bytes .../BLDCmotorControl_R2017b_1834_d.svg | 24 +- .../BLDCmotorControl_R2017b_1837_d.json | 10 +- .../BLDCmotorControl_R2017b_1837_d.png | Bin 5231 -> 4700 bytes .../BLDCmotorControl_R2017b_1837_d.svg | 24 +- .../BLDCmotorControl_R2017b_2530_10_d.png | Bin 6194 -> 0 bytes .../BLDCmotorControl_R2017b_2530_124_d.json | 1830 ----- .../BLDCmotorControl_R2017b_2530_124_d.png | Bin 8104 -> 0 bytes .../BLDCmotorControl_R2017b_2530_124_d.svg | 1619 ---- .../BLDCmotorControl_R2017b_2530_140_d.json | 798 -- .../BLDCmotorControl_R2017b_2530_140_d.png | Bin 7908 -> 0 bytes .../BLDCmotorControl_R2017b_2530_140_d.svg | 707 -- .../BLDCmotorControl_R2017b_2530_154_d.json | 147 - .../BLDCmotorControl_R2017b_2530_154_d.png | Bin 5614 -> 0 bytes .../BLDCmotorControl_R2017b_2530_154_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_160_d.json | 147 - .../BLDCmotorControl_R2017b_2530_160_d.png | Bin 6449 -> 0 bytes .../BLDCmotorControl_R2017b_2530_160_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_163_d.json | 147 - .../BLDCmotorControl_R2017b_2530_163_d.png | Bin 6813 -> 0 bytes .../BLDCmotorControl_R2017b_2530_163_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_19_d.json | 147 - .../BLDCmotorControl_R2017b_2530_19_d.png | Bin 5910 -> 0 bytes .../BLDCmotorControl_R2017b_2530_19_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_215_d.json | 4805 ----------- .../BLDCmotorControl_R2017b_2530_215_d.png | Bin 10035 -> 0 bytes .../BLDCmotorControl_R2017b_2530_26_d.png | Bin 7511 -> 0 bytes .../BLDCmotorControl_R2017b_2530_272_d.json | 147 - .../BLDCmotorControl_R2017b_2530_272_d.png | Bin 7262 -> 0 bytes .../BLDCmotorControl_R2017b_2530_272_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_275_d.json | 147 - .../BLDCmotorControl_R2017b_2530_275_d.png | Bin 6519 -> 0 bytes .../BLDCmotorControl_R2017b_2530_275_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_282_d.png | Bin 8920 -> 0 bytes .../BLDCmotorControl_R2017b_2530_285_d.json | 968 --- .../BLDCmotorControl_R2017b_2530_285_d.png | Bin 10099 -> 0 bytes .../BLDCmotorControl_R2017b_2530_295_d.json | 968 --- .../BLDCmotorControl_R2017b_2530_295_d.svg | 1816 ----- .../BLDCmotorControl_R2017b_2530_305_d.json | 968 --- .../BLDCmotorControl_R2017b_2530_305_d.png | Bin 10414 -> 0 bytes .../BLDCmotorControl_R2017b_2530_305_d.svg | 1816 ----- .../BLDCmotorControl_R2017b_2530_349_d.json | 147 - .../BLDCmotorControl_R2017b_2530_349_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_34_d.json | 147 - .../BLDCmotorControl_R2017b_2530_34_d.png | Bin 6608 -> 0 bytes .../BLDCmotorControl_R2017b_2530_34_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_352_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_361_d.png | Bin 9979 -> 0 bytes .../BLDCmotorControl_R2017b_2530_361_d.svg | 3599 -------- .../BLDCmotorControl_R2017b_2530_38_d.png | Bin 5777 -> 0 bytes .../BLDCmotorControl_R2017b_2530_402_d.json | 147 - .../BLDCmotorControl_R2017b_2530_402_d.png | Bin 6455 -> 0 bytes .../BLDCmotorControl_R2017b_2530_402_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_405_d.json | 147 - .../BLDCmotorControl_R2017b_2530_405_d.png | Bin 6363 -> 0 bytes .../BLDCmotorControl_R2017b_2530_405_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_408_d.json | 147 - .../BLDCmotorControl_R2017b_2530_408_d.png | Bin 6508 -> 0 bytes .../BLDCmotorControl_R2017b_2530_408_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_435_d.json | 147 - .../BLDCmotorControl_R2017b_2530_435_d.png | Bin 5793 -> 0 bytes .../BLDCmotorControl_R2017b_2530_435_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_438_d.json | 147 - .../BLDCmotorControl_R2017b_2530_438_d.png | Bin 5961 -> 0 bytes .../BLDCmotorControl_R2017b_2530_438_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_441_d.json | 147 - .../BLDCmotorControl_R2017b_2530_441_d.png | Bin 5595 -> 0 bytes .../BLDCmotorControl_R2017b_2530_441_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_444_d.json | 147 - .../BLDCmotorControl_R2017b_2530_444_d.png | Bin 5856 -> 0 bytes .../BLDCmotorControl_R2017b_2530_444_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_479_d.json | 623 -- .../BLDCmotorControl_R2017b_2530_479_d.png | Bin 7252 -> 0 bytes .../BLDCmotorControl_R2017b_2530_479_d.svg | 581 -- .../BLDCmotorControl_R2017b_2530_480_d.json | 623 -- .../BLDCmotorControl_R2017b_2530_480_d.png | Bin 7366 -> 0 bytes .../BLDCmotorControl_R2017b_2530_480_d.svg | 581 -- .../BLDCmotorControl_R2017b_2530_54_d.json | 147 - .../BLDCmotorControl_R2017b_2530_54_d.png | Bin 5265 -> 0 bytes .../BLDCmotorControl_R2017b_2530_54_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_579_d.json | 147 - .../BLDCmotorControl_R2017b_2530_579_d.png | Bin 6515 -> 0 bytes .../BLDCmotorControl_R2017b_2530_579_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_588_d.json | 487 -- .../BLDCmotorControl_R2017b_2530_588_d.png | Bin 5574 -> 0 bytes .../BLDCmotorControl_R2017b_2530_588_d.svg | 413 - .../BLDCmotorControl_R2017b_2530_59_d.png | Bin 11120 -> 0 bytes .../BLDCmotorControl_R2017b_2530_59_d.svg | 5208 ------------ .../BLDCmotorControl_R2017b_2530_616_d.json | 147 - .../BLDCmotorControl_R2017b_2530_616_d.png | Bin 6168 -> 0 bytes .../BLDCmotorControl_R2017b_2530_616_d.svg | 178 - .../BLDCmotorControl_R2017b_2530_65_d.json | 1380 ---- .../BLDCmotorControl_R2017b_2530_65_d.png | Bin 7331 -> 0 bytes .../BLDCmotorControl_R2017b_2530_65_d.svg | 1216 --- .../BLDCmotorControl_R2017b_2530_6_d.png | Bin 10638 -> 0 bytes .../BLDCmotorControl_R2017b_2530_733_d.json | 487 -- .../BLDCmotorControl_R2017b_2530_733_d.png | Bin 5755 -> 0 bytes .../BLDCmotorControl_R2017b_2530_733_d.svg | 413 - .../BLDCmotorControl_R2017b_2530_d.png | Bin 9286 -> 0 bytes .../BLDCmotorControl_R2017b_2530_d.svg | 3498 -------- .../BLDCmotorControl_R2017b_2531_10_d.json | 1293 --- .../BLDCmotorControl_R2017b_2531_10_d.png | Bin 6194 -> 0 bytes .../BLDCmotorControl_R2017b_2531_124_d.json | 1830 ----- .../BLDCmotorControl_R2017b_2531_124_d.png | Bin 8104 -> 0 bytes .../BLDCmotorControl_R2017b_2531_124_d.svg | 1619 ---- .../BLDCmotorControl_R2017b_2531_140_d.json | 798 -- .../BLDCmotorControl_R2017b_2531_140_d.png | Bin 7908 -> 0 bytes .../BLDCmotorControl_R2017b_2531_140_d.svg | 707 -- .../BLDCmotorControl_R2017b_2531_154_d.json | 147 - .../BLDCmotorControl_R2017b_2531_154_d.png | Bin 5614 -> 0 bytes .../BLDCmotorControl_R2017b_2531_154_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_160_d.json | 147 - .../BLDCmotorControl_R2017b_2531_160_d.png | Bin 6449 -> 0 bytes .../BLDCmotorControl_R2017b_2531_160_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_163_d.json | 147 - .../BLDCmotorControl_R2017b_2531_163_d.png | Bin 6813 -> 0 bytes .../BLDCmotorControl_R2017b_2531_163_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_19_d.json | 147 - .../BLDCmotorControl_R2017b_2531_19_d.png | Bin 5910 -> 0 bytes .../BLDCmotorControl_R2017b_2531_19_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_215_d.png | Bin 10035 -> 0 bytes .../BLDCmotorControl_R2017b_2531_215_d.svg | 4133 ---------- .../BLDCmotorControl_R2017b_2531_26_d.png | Bin 7511 -> 0 bytes .../BLDCmotorControl_R2017b_2531_26_d.svg | 787 -- .../BLDCmotorControl_R2017b_2531_272_d.json | 147 - .../BLDCmotorControl_R2017b_2531_272_d.png | Bin 7262 -> 0 bytes .../BLDCmotorControl_R2017b_2531_272_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_275_d.json | 147 - .../BLDCmotorControl_R2017b_2531_275_d.png | Bin 6519 -> 0 bytes .../BLDCmotorControl_R2017b_2531_275_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_282_d.json | 3751 --------- .../BLDCmotorControl_R2017b_2531_282_d.png | Bin 8920 -> 0 bytes .../BLDCmotorControl_R2017b_2531_282_d.svg | 3050 ------- .../BLDCmotorControl_R2017b_2531_285_d.png | Bin 10099 -> 0 bytes .../BLDCmotorControl_R2017b_2531_285_d.svg | 1096 --- .../BLDCmotorControl_R2017b_2531_295_d.png | Bin 10470 -> 0 bytes .../BLDCmotorControl_R2017b_2531_305_d.png | Bin 10414 -> 0 bytes .../BLDCmotorControl_R2017b_2531_349_d.png | Bin 5985 -> 0 bytes .../BLDCmotorControl_R2017b_2531_34_d.json | 147 - .../BLDCmotorControl_R2017b_2531_34_d.png | Bin 6608 -> 0 bytes .../BLDCmotorControl_R2017b_2531_34_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_352_d.json | 147 - .../BLDCmotorControl_R2017b_2531_352_d.png | Bin 6044 -> 0 bytes .../BLDCmotorControl_R2017b_2531_355_d.json | 147 - .../BLDCmotorControl_R2017b_2531_355_d.png | Bin 5969 -> 0 bytes .../BLDCmotorControl_R2017b_2531_355_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_361_d.json | 4402 ---------- .../BLDCmotorControl_R2017b_2531_361_d.png | Bin 9979 -> 0 bytes .../BLDCmotorControl_R2017b_2531_361_d.svg | 3599 -------- .../BLDCmotorControl_R2017b_2531_38_d.json | 1737 ---- .../BLDCmotorControl_R2017b_2531_38_d.png | Bin 5777 -> 0 bytes .../BLDCmotorControl_R2017b_2531_38_d.svg | 1465 ---- .../BLDCmotorControl_R2017b_2531_402_d.json | 147 - .../BLDCmotorControl_R2017b_2531_402_d.png | Bin 6455 -> 0 bytes .../BLDCmotorControl_R2017b_2531_402_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_405_d.json | 147 - .../BLDCmotorControl_R2017b_2531_405_d.png | Bin 6363 -> 0 bytes .../BLDCmotorControl_R2017b_2531_405_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_408_d.json | 147 - .../BLDCmotorControl_R2017b_2531_408_d.png | Bin 6508 -> 0 bytes .../BLDCmotorControl_R2017b_2531_408_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_435_d.json | 147 - .../BLDCmotorControl_R2017b_2531_435_d.png | Bin 5793 -> 0 bytes .../BLDCmotorControl_R2017b_2531_435_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_438_d.json | 147 - .../BLDCmotorControl_R2017b_2531_438_d.png | Bin 5961 -> 0 bytes .../BLDCmotorControl_R2017b_2531_438_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_441_d.json | 147 - .../BLDCmotorControl_R2017b_2531_441_d.png | Bin 5595 -> 0 bytes .../BLDCmotorControl_R2017b_2531_441_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_444_d.json | 147 - .../BLDCmotorControl_R2017b_2531_444_d.png | Bin 5856 -> 0 bytes .../BLDCmotorControl_R2017b_2531_444_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_457_d.json | 2 - .../BLDCmotorControl_R2017b_2531_457_d.png | Bin 1657 -> 0 bytes .../BLDCmotorControl_R2017b_2531_457_d.svg | 14 - .../BLDCmotorControl_R2017b_2531_479_d.json | 623 -- .../BLDCmotorControl_R2017b_2531_479_d.png | Bin 7252 -> 0 bytes .../BLDCmotorControl_R2017b_2531_479_d.svg | 581 -- .../BLDCmotorControl_R2017b_2531_480_d.json | 623 -- .../BLDCmotorControl_R2017b_2531_480_d.png | Bin 7366 -> 0 bytes .../BLDCmotorControl_R2017b_2531_480_d.svg | 581 -- .../BLDCmotorControl_R2017b_2531_54_d.json | 147 - .../BLDCmotorControl_R2017b_2531_54_d.png | Bin 5265 -> 0 bytes .../BLDCmotorControl_R2017b_2531_54_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_579_d.json | 147 - .../BLDCmotorControl_R2017b_2531_579_d.png | Bin 6515 -> 0 bytes .../BLDCmotorControl_R2017b_2531_579_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_588_d.png | Bin 5574 -> 0 bytes .../BLDCmotorControl_R2017b_2531_588_d.svg | 413 - .../BLDCmotorControl_R2017b_2531_589_d.json | 2 - .../BLDCmotorControl_R2017b_2531_589_d.png | Bin 1657 -> 0 bytes .../BLDCmotorControl_R2017b_2531_589_d.svg | 14 - .../BLDCmotorControl_R2017b_2531_59_d.json | 5969 -------------- .../BLDCmotorControl_R2017b_2531_59_d.png | Bin 11119 -> 0 bytes .../BLDCmotorControl_R2017b_2531_616_d.json | 147 - .../BLDCmotorControl_R2017b_2531_616_d.png | Bin 6168 -> 0 bytes .../BLDCmotorControl_R2017b_2531_616_d.svg | 178 - .../BLDCmotorControl_R2017b_2531_65_d.json | 1380 ---- .../BLDCmotorControl_R2017b_2531_65_d.png | Bin 7331 -> 0 bytes .../BLDCmotorControl_R2017b_2531_65_d.svg | 1216 --- .../BLDCmotorControl_R2017b_2531_6_d.png | Bin 10638 -> 0 bytes .../BLDCmotorControl_R2017b_2531_733_d.json | 487 -- .../BLDCmotorControl_R2017b_2531_733_d.png | Bin 5755 -> 0 bytes .../BLDCmotorControl_R2017b_2531_d.json | 3859 --------- .../BLDCmotorControl_R2017b_2531_d.png | Bin 9223 -> 0 bytes .../BLDCmotorControl_R2017b_2550_d.json | 147 - .../BLDCmotorControl_R2017b_2550_d.png | Bin 5786 -> 0 bytes .../BLDCmotorControl_R2017b_2550_d.svg | 178 - .../BLDCmotorControl_R2017b_2553_d.json | 147 - .../BLDCmotorControl_R2017b_2553_d.png | Bin 5792 -> 0 bytes .../BLDCmotorControl_R2017b_2553_d.svg | 178 - .../BLDCmotorControl_R2017b_2556_d.json | 147 - .../BLDCmotorControl_R2017b_2556_d.png | Bin 5634 -> 0 bytes .../BLDCmotorControl_R2017b_2556_d.svg | 178 - .../BLDCmotorControl_R2017b_2559_d.json | 147 - .../BLDCmotorControl_R2017b_2559_d.png | Bin 5832 -> 0 bytes .../BLDCmotorControl_R2017b_2559_d.svg | 178 - ...=> BLDCmotorControl_R2017b_2687_10_d.json} | 350 +- .../BLDCmotorControl_R2017b_2687_10_d.png | Bin 0 -> 6314 bytes ... => BLDCmotorControl_R2017b_2687_10_d.svg} | 499 +- ... BLDCmotorControl_R2017b_2687_1340_d.json} | 253 +- .../BLDCmotorControl_R2017b_2687_1340_d.png | Bin 0 -> 5736 bytes ...> BLDCmotorControl_R2017b_2687_1340_d.svg} | 375 +- ... BLDCmotorControl_R2017b_2687_1401_d.json} | 3788 +++------ .../BLDCmotorControl_R2017b_2687_1401_d.png | Bin 0 -> 10897 bytes .../BLDCmotorControl_R2017b_2687_1401_d.svg | 2547 ++++++ ... BLDCmotorControl_R2017b_2687_1651_d.json} | 721 +- .../BLDCmotorControl_R2017b_2687_1651_d.png | Bin 0 -> 6708 bytes ...> BLDCmotorControl_R2017b_2687_1651_d.svg} | 1280 +-- ...> BLDCmotorControl_R2017b_2687_215_d.json} | 2603 +++--- .../BLDCmotorControl_R2017b_2687_215_d.png | Bin 0 -> 9670 bytes ...=> BLDCmotorControl_R2017b_2687_215_d.svg} | 4697 +++++------ ...=> BLDCmotorControl_R2017b_2687_26_d.json} | 195 +- .../BLDCmotorControl_R2017b_2687_26_d.png | Bin 0 -> 8007 bytes ... => BLDCmotorControl_R2017b_2687_26_d.svg} | 557 +- ...> BLDCmotorControl_R2017b_2687_282_d.json} | 316 +- .../BLDCmotorControl_R2017b_2687_282_d.png | Bin 0 -> 8957 bytes ...=> BLDCmotorControl_R2017b_2687_282_d.svg} | 1204 +-- ...> BLDCmotorControl_R2017b_2687_285_d.json} | 62 +- .../BLDCmotorControl_R2017b_2687_285_d.png | Bin 0 -> 10085 bytes ...=> BLDCmotorControl_R2017b_2687_285_d.svg} | 286 +- ...> BLDCmotorControl_R2017b_2687_295_d.json} | 60 +- ...=> BLDCmotorControl_R2017b_2687_295_d.png} | Bin 10470 -> 10470 bytes ...=> BLDCmotorControl_R2017b_2687_295_d.svg} | 266 +- ...> BLDCmotorControl_R2017b_2687_305_d.json} | 60 +- .../BLDCmotorControl_R2017b_2687_305_d.png | Bin 0 -> 10418 bytes ...=> BLDCmotorControl_R2017b_2687_305_d.svg} | 292 +- ...> BLDCmotorControl_R2017b_2687_349_d.json} | 12 +- ...=> BLDCmotorControl_R2017b_2687_349_d.png} | Bin ...=> BLDCmotorControl_R2017b_2687_349_d.svg} | 10 +- ...> BLDCmotorControl_R2017b_2687_352_d.json} | 12 +- ...=> BLDCmotorControl_R2017b_2687_352_d.png} | Bin ...=> BLDCmotorControl_R2017b_2687_352_d.svg} | 10 +- ...> BLDCmotorControl_R2017b_2687_355_d.json} | 12 +- ...=> BLDCmotorControl_R2017b_2687_355_d.png} | Bin ...=> BLDCmotorControl_R2017b_2687_355_d.svg} | 10 +- ...> BLDCmotorControl_R2017b_2687_361_d.json} | 3303 +++----- .../BLDCmotorControl_R2017b_2687_361_d.png | Bin 0 -> 8194 bytes ...=> BLDCmotorControl_R2017b_2687_361_d.svg} | 3605 ++++---- ...=> BLDCmotorControl_R2017b_2687_38_d.json} | 682 +- .../BLDCmotorControl_R2017b_2687_38_d.png | Bin 0 -> 5740 bytes ... => BLDCmotorControl_R2017b_2687_38_d.svg} | 1031 +-- ...> BLDCmotorControl_R2017b_2687_457_d.json} | 0 ...=> BLDCmotorControl_R2017b_2687_457_d.png} | Bin ...=> BLDCmotorControl_R2017b_2687_457_d.svg} | 4 +- ...> BLDCmotorControl_R2017b_2687_589_d.json} | 0 ...=> BLDCmotorControl_R2017b_2687_589_d.png} | Bin ...=> BLDCmotorControl_R2017b_2687_589_d.svg} | 4 +- ...=> BLDCmotorControl_R2017b_2687_59_d.json} | 5290 ++++++------ .../BLDCmotorControl_R2017b_2687_59_d.png | Bin 0 -> 9015 bytes ... => BLDCmotorControl_R2017b_2687_59_d.svg} | 7220 ++++++++--------- ... => BLDCmotorControl_R2017b_2687_6_d.json} | 1327 ++- .../BLDCmotorControl_R2017b_2687_6_d.png | Bin 0 -> 12134 bytes ...g => BLDCmotorControl_R2017b_2687_6_d.svg} | 3842 +++++---- ...on => BLDCmotorControl_R2017b_2687_d.json} | 879 +- .../BLDCmotorControl_R2017b_2687_d.png | Bin 0 -> 9015 bytes ...svg => BLDCmotorControl_R2017b_2687_d.svg} | 2445 +++--- .../BLDCmotorControl_R2017b_29_d.json | 2797 +------ .../BLDCmotorControl_R2017b_29_d.png | Bin 11961 -> 6773 bytes .../BLDCmotorControl_R2017b_29_d.svg | 2804 +------ .../BLDCmotorControl_R2017b_29_icons.png | Bin 2377 -> 2377 bytes .../BLDCmotorControl_R2017b_h_1.json | 4110 +++------- .../BLDCmotorControl_R2017b_m.json | 6620 +-------------- .../html/zero_crossing_types_h.html | 77 - 01_Matlab/BLDC_controller_ert_rtw/rtwtypes.h | 4 +- .../rtwtypeschksum.mat | Bin 1418 -> 1436 bytes .../zero_crossing_types.h | 57 - 01_Matlab/BLDCmotorControl_R2017b.slx | Bin 114061 -> 109626 bytes 01_Matlab/init_model.m | 18 +- Inc/BLDC_controller.h | 418 +- Inc/config.h | 2 - Inc/rtwtypes.h | 4 +- Inc/zero_crossing_types.h | 57 - Src/BLDC_controller.c | 1481 +--- Src/BLDC_controller_data.c | 214 +- Src/bldc.c | 116 +- Src/main.c | 56 +- Src/setup.c | 16 + 339 files changed, 30978 insertions(+), 148177 deletions(-) create mode 100644 01_Matlab/99_RecycleBin/BLDC_controller_Lib_AccelerationBased.slx create mode 100644 01_Matlab/99_RecycleBin/BLDC_controller_Lib_CounterBased.slx create mode 100644 01_Matlab/99_RecycleBin/init_model.m delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/build_exception.mat delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_10_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_124_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_124_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_124_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_140_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_140_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_140_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_154_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_154_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_154_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_160_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_160_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_160_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_163_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_163_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_163_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_19_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_19_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_19_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_215_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_215_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_26_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_272_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_272_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_272_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_275_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_275_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_275_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_282_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_285_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_285_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_295_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_295_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_305_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_305_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_305_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_349_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_349_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_34_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_34_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_34_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_352_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_361_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_361_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_38_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_402_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_402_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_402_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_405_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_405_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_405_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_408_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_408_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_408_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_435_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_435_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_435_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_438_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_438_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_438_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_441_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_441_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_441_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_444_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_444_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_444_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_479_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_479_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_479_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_480_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_480_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_480_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_54_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_54_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_54_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_579_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_579_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_579_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_588_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_588_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_588_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_59_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_59_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_616_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_616_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_616_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_65_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_65_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_65_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_6_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_733_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_733_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_733_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2530_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_10_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_10_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_124_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_124_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_124_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_140_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_140_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_140_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_154_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_154_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_154_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_160_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_160_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_160_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_163_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_163_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_163_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_19_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_19_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_19_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_215_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_215_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_26_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_26_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_272_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_272_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_272_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_275_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_275_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_275_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_282_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_282_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_282_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_285_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_285_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_295_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_305_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_349_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_34_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_34_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_34_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_352_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_352_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_355_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_355_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_355_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_361_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_361_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_361_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_38_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_38_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_38_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_402_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_402_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_402_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_405_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_405_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_405_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_408_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_408_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_408_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_435_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_435_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_435_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_438_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_438_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_438_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_441_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_441_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_441_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_444_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_444_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_444_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_457_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_457_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_457_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_479_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_479_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_479_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_480_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_480_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_480_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_54_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_54_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_54_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_579_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_579_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_579_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_588_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_588_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_589_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_589_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_589_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_59_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_59_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_616_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_616_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_616_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_65_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_65_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_65_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_6_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_733_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_733_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2531_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2550_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2550_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2550_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2553_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2553_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2553_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2556_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2556_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2556_d.svg delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2559_d.json delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2559_d.png delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2559_d.svg rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_10_d.json => BLDCmotorControl_R2017b_2687_10_d.json} (72%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_10_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_10_d.svg => BLDCmotorControl_R2017b_2687_10_d.svg} (70%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_588_d.json => BLDCmotorControl_R2017b_2687_1340_d.json} (68%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_1340_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_733_d.svg => BLDCmotorControl_R2017b_2687_1340_d.svg} (56%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_361_d.json => BLDCmotorControl_R2017b_2687_1401_d.json} (57%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_1401_d.png create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_1401_d.svg rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_26_d.json => BLDCmotorControl_R2017b_2687_1651_d.json} (70%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_1651_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_10_d.svg => BLDCmotorControl_R2017b_2687_1651_d.svg} (58%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_215_d.json => BLDCmotorControl_R2017b_2687_215_d.json} (83%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_215_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_215_d.svg => BLDCmotorControl_R2017b_2687_215_d.svg} (75%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_26_d.json => BLDCmotorControl_R2017b_2687_26_d.json} (76%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_26_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_26_d.svg => BLDCmotorControl_R2017b_2687_26_d.svg} (71%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_282_d.json => BLDCmotorControl_R2017b_2687_282_d.json} (88%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_282_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_282_d.svg => BLDCmotorControl_R2017b_2687_282_d.svg} (94%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_285_d.json => BLDCmotorControl_R2017b_2687_285_d.json} (91%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_285_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_285_d.svg => BLDCmotorControl_R2017b_2687_285_d.svg} (93%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_295_d.json => BLDCmotorControl_R2017b_2687_295_d.json} (91%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_295_d.png => BLDCmotorControl_R2017b_2687_295_d.png} (97%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_295_d.svg => BLDCmotorControl_R2017b_2687_295_d.svg} (96%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_305_d.json => BLDCmotorControl_R2017b_2687_305_d.json} (91%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_305_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_305_d.svg => BLDCmotorControl_R2017b_2687_305_d.svg} (96%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_349_d.json => BLDCmotorControl_R2017b_2687_349_d.json} (88%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_349_d.png => BLDCmotorControl_R2017b_2687_349_d.png} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_349_d.svg => BLDCmotorControl_R2017b_2687_349_d.svg} (97%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_352_d.json => BLDCmotorControl_R2017b_2687_352_d.json} (88%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_352_d.png => BLDCmotorControl_R2017b_2687_352_d.png} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_352_d.svg => BLDCmotorControl_R2017b_2687_352_d.svg} (97%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_355_d.json => BLDCmotorControl_R2017b_2687_355_d.json} (88%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_355_d.png => BLDCmotorControl_R2017b_2687_355_d.png} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_355_d.svg => BLDCmotorControl_R2017b_2687_355_d.svg} (97%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_6_d.json => BLDCmotorControl_R2017b_2687_361_d.json} (63%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_361_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_6_d.svg => BLDCmotorControl_R2017b_2687_361_d.svg} (62%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_38_d.json => BLDCmotorControl_R2017b_2687_38_d.json} (69%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_38_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_38_d.svg => BLDCmotorControl_R2017b_2687_38_d.svg} (64%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_457_d.json => BLDCmotorControl_R2017b_2687_457_d.json} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_457_d.png => BLDCmotorControl_R2017b_2687_457_d.png} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_457_d.svg => BLDCmotorControl_R2017b_2687_457_d.svg} (84%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_589_d.json => BLDCmotorControl_R2017b_2687_589_d.json} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_589_d.png => BLDCmotorControl_R2017b_2687_589_d.png} (100%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_589_d.svg => BLDCmotorControl_R2017b_2687_589_d.svg} (84%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_59_d.json => BLDCmotorControl_R2017b_2687_59_d.json} (74%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_59_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_59_d.svg => BLDCmotorControl_R2017b_2687_59_d.svg} (64%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_6_d.json => BLDCmotorControl_R2017b_2687_6_d.json} (78%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_6_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_6_d.svg => BLDCmotorControl_R2017b_2687_6_d.svg} (78%) rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2530_d.json => BLDCmotorControl_R2017b_2687_d.json} (85%) create mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/BLDCmotorControl_R2017b_2687_d.png rename 01_Matlab/BLDC_controller_ert_rtw/html/webview/support/slwebview_files/{BLDCmotorControl_R2017b_2531_d.svg => BLDCmotorControl_R2017b_2687_d.svg} (90%) delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/html/zero_crossing_types_h.html delete mode 100644 01_Matlab/BLDC_controller_ert_rtw/zero_crossing_types.h delete mode 100644 Inc/zero_crossing_types.h diff --git a/01_Matlab/01_Libraries/01_Controller/BLDC_controller_Lib.slx b/01_Matlab/01_Libraries/01_Controller/BLDC_controller_Lib.slx index 50475e24ed154afcc54addaa02499eef28746f7b..51ac3488d74efa57d0ba04e3ac9b44eaeafe4524 100644 GIT binary patch delta 45063 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�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 PL5LxMm4RU;C{!2#@g&{< delta 47084 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 diff --git a/01_Matlab/99_RecycleBin/BLDC_controller_Lib_AccelerationBased.slx b/01_Matlab/99_RecycleBin/BLDC_controller_Lib_AccelerationBased.slx new file mode 100644 index 0000000000000000000000000000000000000000..ff4e6519824b02812dac2150b6aceac7e90a3316 GIT binary patch literal 60658 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 literal 0 HcmV?d00001 diff --git a/01_Matlab/99_RecycleBin/BLDC_controller_Lib_CounterBased.slx b/01_Matlab/99_RecycleBin/BLDC_controller_Lib_CounterBased.slx new file mode 100644 index 0000000000000000000000000000000000000000..f7c76e274b51fb87a6f9a8cb339e11049f79a2fa GIT binary patch literal 61629 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 diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_contents.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_contents.html index 66aa5c6..dcf33e3 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_contents.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_contents.html @@ -256,10 +256,10 @@ BLDC_controller_data.c @@ -277,15 +277,6 @@ rtwtypes.h - - - -
-[+] +[+] -Utility files (2) +Utility files (1)
- -zero_crossing_types.h - - -
diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_data_c.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_data_c.html index 3b009bd..e2cd23c 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_data_c.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_data_c.html @@ -21,9 +21,9 @@ 7 * 8 * Code generated for Simulink model 'BLDC_controller'. 9 * - 10 * Model version : 1.817 + 10 * Model version : 1.877 11 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - 12 * C/C++ source code generated on : Tue May 28 19:55:33 2019 + 12 * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 13 * 14 * Target selection: ert.tlc 15 * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -37,193 +37,83 @@ 23 24 #include "BLDC_controller.h" 25 - 26 /* Block parameters (auto storage) */ - 27 P rtP = { - 28 /* Variable: cf_speedCoef - 29 * Referenced by: - 30 * '<S28>/cf_spdCoef' - 31 * '<S66>/cf_spdCoef' - 32 */ - 33 66667, - 34 - 35 /* Variable: n_commAcvLo - 36 * Referenced by: - 37 * '<S15>/Relay' - 38 * '<S53>/Relay' - 39 */ - 40 100, - 41 - 42 /* Variable: n_commDeacvHi - 43 * Referenced by: - 44 * '<S15>/Relay' - 45 * '<S53>/Relay' - 46 */ - 47 180, - 48 - 49 /* Variable: r_commDCDeacv - 50 * Referenced by: - 51 * '<S15>/r_commDCDeacv' - 52 * '<S53>/r_commDCDeacv' - 53 */ - 54 70, - 55 - 56 /* Variable: r_phaAdvDC_XA - 57 * Referenced by: - 58 * '<S13>/r_phaAdvDC_XA' - 59 * '<S51>/r_phaAdvDC_XA' - 60 */ - 61 { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 }, - 62 - 63 /* Variable: a_phaAdv_M1 - 64 * Referenced by: - 65 * '<S13>/a_phaAdv_M2' - 66 * '<S51>/a_phaAdv_M2' - 67 */ - 68 { 0, 0, 7, 2, 2, 2, 4, 5, 9, 16, 25 }, - 69 - 70 /* Variable: z_maxCntRst - 71 * Referenced by: - 72 * '<S23>/z_maxCntRst' - 73 * '<S23>/z_maxCntRst1' - 74 * '<S23>/z_maxCntRst2' - 75 * '<S23>/z_counter2' - 76 * '<S61>/z_maxCntRst' - 77 * '<S61>/z_maxCntRst1' - 78 * '<S61>/z_maxCntRst2' - 79 * '<S61>/z_counter2' - 80 * '<S28>/z_maxCntRst' - 81 * '<S66>/z_maxCntRst' - 82 */ - 83 2000, + 26 /* Constant parameters (auto storage) */ + 27 const ConstP rtConstP = { + 28 /* Computed Parameter: r_trapPhaA_M1_Table + 29 * Referenced by: '<S18>/r_trapPhaA_M1' + 30 */ + 31 { 1000, 1000, 1000, -1000, -1000, -1000, 1000 }, + 32 + 33 /* Computed Parameter: r_trapPhaB_M1_Table + 34 * Referenced by: '<S18>/r_trapPhaB_M1' + 35 */ + 36 { -1000, -1000, 1000, 1000, 1000, -1000, -1000 }, + 37 + 38 /* Computed Parameter: r_trapPhaC_M1_Table + 39 * Referenced by: '<S18>/r_trapPhaC_M1' + 40 */ + 41 { 1000, -1000, -1000, -1000, 1000, 1000, 1000 }, + 42 + 43 /* Computed Parameter: r_sinPhaA_M1_Table + 44 * Referenced by: '<S19>/r_sinPhaA_M1' + 45 */ + 46 { 500, 643, 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, + 47 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, -985, -940, -866, + 48 -766, -643, -500, -342, -174, 0, 174, 342, 500 }, + 49 + 50 /* Computed Parameter: r_sinPhaB_M1_Table + 51 * Referenced by: '<S19>/r_sinPhaB_M1' + 52 */ + 53 { -1000, -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, + 54 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, 0, -174, + 55 -342, -500, -643, -766, -866, -940, -985, -1000 }, + 56 + 57 /* Computed Parameter: r_sinPhaC_M1_Table + 58 * Referenced by: '<S19>/r_sinPhaC_M1' + 59 */ + 60 { 500, 342, 174, 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, + 61 -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, 766, + 62 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500 }, + 63 + 64 /* Computed Parameter: r_sin3PhaA_M1_Table + 65 * Referenced by: '<S20>/r_sin3PhaA_M1' + 66 */ + 67 { 795, 930, 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, + 68 -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, -971, -996, -991, + 69 -930, -795, -584, -310, 0, 310, 584, 795 }, + 70 + 71 /* Computed Parameter: r_sin3PhaB_M1_Table + 72 * Referenced by: '<S20>/r_sin3PhaB_M1' + 73 */ + 74 { -930, -942, -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, + 75 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, -310, + 76 -584, -795, -930, -991, -996, -971, -942, -930 }, + 77 + 78 /* Computed Parameter: r_sin3PhaC_M1_Table + 79 * Referenced by: '<S20>/r_sin3PhaC_M1' + 80 */ + 81 { 795, 584, 310, 0, -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, + 82 -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, 991, 996, + 83 971, 942, 930, 942, 971, 996, 991, 930, 795 }, 84 - 85 /* Variable: z_ctrlTypSel - 86 * Referenced by: - 87 * '<S12>/z_ctrlTypSel1' - 88 * '<S50>/z_ctrlTypSel1' - 89 */ - 90 3U, - 91 - 92 /* Variable: z_nrEdgeSpdAcv - 93 * Referenced by: - 94 * '<S23>/z_nrEdgeSpdAcv' - 95 * '<S61>/z_nrEdgeSpdAcv' - 96 */ - 97 3U, - 98 - 99 /* Variable: b_phaAdvEna - 100 * Referenced by: - 101 * '<S13>/a_elecPeriod1' - 102 * '<S51>/a_elecPeriod1' - 103 */ - 104 1 - 105 }; - 106 - 107 /* Constant parameters (auto storage) */ - 108 const ConstP rtConstP = { - 109 /* Pooled Parameter (Expression: r_trapPhaA_M1) - 110 * Referenced by: - 111 * '<S41>/r_trapPhaA_M1' - 112 * '<S79>/r_trapPhaA_M1' - 113 */ - 114 { 1000, 1000, 1000, -1000, -1000, -1000, 1000 }, - 115 - 116 /* Pooled Parameter (Expression: r_trapPhaB_M1) - 117 * Referenced by: - 118 * '<S41>/r_trapPhaB_M1' - 119 * '<S79>/r_trapPhaB_M1' - 120 */ - 121 { -1000, -1000, 1000, 1000, 1000, -1000, -1000 }, - 122 - 123 /* Pooled Parameter (Expression: r_trapPhaC_M1) - 124 * Referenced by: - 125 * '<S41>/r_trapPhaC_M1' - 126 * '<S79>/r_trapPhaC_M1' - 127 */ - 128 { 1000, -1000, -1000, -1000, 1000, 1000, 1000 }, - 129 - 130 /* Pooled Parameter (Expression: r_sinPhaA_M1) - 131 * Referenced by: - 132 * '<S43>/r_sinPhaA_M1' - 133 * '<S81>/r_sinPhaA_M1' - 134 */ - 135 { 500, 643, 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, - 136 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, -985, -940, -866, - 137 -766, -643, -500, -342, -174, 0, 174, 342, 500 }, - 138 - 139 /* Pooled Parameter (Expression: r_sinPhaB_M1) - 140 * Referenced by: - 141 * '<S43>/r_sinPhaB_M1' - 142 * '<S81>/r_sinPhaB_M1' - 143 */ - 144 { -1000, -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, - 145 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, 0, -174, - 146 -342, -500, -643, -766, -866, -940, -985, -1000 }, - 147 - 148 /* Pooled Parameter (Expression: r_sinPhaC_M1) - 149 * Referenced by: - 150 * '<S43>/r_sinPhaC_M1' - 151 * '<S81>/r_sinPhaC_M1' - 152 */ - 153 { 500, 342, 174, 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, - 154 -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, 766, - 155 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500 }, - 156 - 157 /* Pooled Parameter (Expression: r_sin3PhaA_M1) - 158 * Referenced by: - 159 * '<S42>/r_sin3PhaA_M1' - 160 * '<S80>/r_sin3PhaA_M1' - 161 */ - 162 { 795, 930, 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, - 163 -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, -971, -996, -991, - 164 -930, -795, -584, -310, 0, 310, 584, 795 }, - 165 - 166 /* Pooled Parameter (Expression: r_sin3PhaB_M1) - 167 * Referenced by: - 168 * '<S42>/r_sin3PhaB_M1' - 169 * '<S80>/r_sin3PhaB_M1' - 170 */ - 171 { -930, -942, -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, - 172 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, -310, - 173 -584, -795, -930, -991, -996, -971, -942, -930 }, - 174 - 175 /* Pooled Parameter (Expression: r_sin3PhaC_M1) - 176 * Referenced by: - 177 * '<S42>/r_sin3PhaC_M1' - 178 * '<S80>/r_sin3PhaC_M1' - 179 */ - 180 { 795, 584, 310, 0, -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, - 181 -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, 991, 996, - 182 971, 942, 930, 942, 971, 996, 991, 930, 795 }, - 183 - 184 /* Pooled Parameter (Expression: z_commutMap_M1) - 185 * Referenced by: - 186 * '<S15>/z_commutMap_M1' - 187 * '<S53>/z_commutMap_M1' - 188 */ - 189 { 1000, -1000, 0, 1000, 0, -1000, 0, 1000, -1000, -1000, 1000, 0, -1000, 0, - 190 1000, 0, -1000, 1000 }, - 191 - 192 /* Pooled Parameter (Expression: vec_hallToPos) - 193 * Referenced by: - 194 * '<S21>/vec_hallToPos' - 195 * '<S59>/vec_hallToPos' - 196 */ - 197 { 0U, 5U, 3U, 4U, 1U, 0U, 2U, 0U }, - 198 - 199 /* Pooled Parameter (Expression: [0 1;1 0;0 1;0 1;1 0;1 0;0 0;0 0]) - 200 * Referenced by: - 201 * '<S29>/Logic' - 202 * '<S67>/Logic' - 203 */ - 204 { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 } - 205 }; - 206 - 207 /* - 208 * File trailer for generated code. - 209 * - 210 * [EOF] - 211 */ - 212 + 85 /* Computed Parameter: z_commutMap_M1_table + 86 * Referenced by: '<S10>/z_commutMap_M1' + 87 */ + 88 { 1000, -1000, 0, 1000, 0, -1000, 0, 1000, -1000, -1000, 1000, 0, -1000, 0, + 89 1000, 0, -1000, 1000 }, + 90 + 91 /* Computed Parameter: vec_hallToPos_Value + 92 * Referenced by: '<S12>/vec_hallToPos' + 93 */ + 94 { 0, 5, 3, 4, 1, 0, 2, 0 } + 95 }; + 96 + 97 /* + 98 * File trailer for generated code. + 99 * + 100 * [EOF] + 101 */ + 102

diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_h.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_h.html index 7cf5d7f..29f631b 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_h.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_h.html @@ -21,9 +21,9 @@ 7 * 8 * Code generated for Simulink model 'BLDC_controller'. 9 * - 10 * Model version : 1.817 + 10 * Model version : 1.877 11 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - 12 * C/C++ source code generated on : Tue May 28 19:55:33 2019 + 12 * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 13 * 14 * Target selection: ert.tlc 15 * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -38,418 +38,226 @@ 24 #ifndef RTW_HEADER_BLDC_controller_h_ 25 #define RTW_HEADER_BLDC_controller_h_ 26 #include "rtwtypes.h" - 27 #include "zero_crossing_types.h" - 28 #ifndef BLDC_controller_COMMON_INCLUDES_ - 29 # define BLDC_controller_COMMON_INCLUDES_ - 30 #include "rtwtypes.h" - 31 #include "zero_crossing_types.h" - 32 #endif /* BLDC_controller_COMMON_INCLUDES_ */ + 27 #ifndef BLDC_controller_COMMON_INCLUDES_ + 28 # define BLDC_controller_COMMON_INCLUDES_ + 29 #include "rtwtypes.h" + 30 #endif /* BLDC_controller_COMMON_INCLUDES_ */ + 31 + 32 /* Macros for accessing real-time model data structure */ 33 - 34 /* Macros for accessing real-time model data structure */ - 35 - 36 /* Block signals and states (auto storage) for system '<S12>/F01_03_Direction_Detection' */ - 37 typedef struct { - 38 int8_T UnitDelay1_DSTATE; /* '<S22>/UnitDelay1' */ - 39 } DW_F01_03_Direction_Detection; - 40 - 41 /* Block signals and states (auto storage) for system '<S23>/Edge_counter' */ - 42 typedef struct { - 43 uint8_T UnitDelay1_DSTATE; /* '<S37>/UnitDelay1' */ - 44 boolean_T Edge_counter_MODE; /* '<S23>/Edge_counter' */ - 45 } DW_Edge_counter; - 46 - 47 /* Block signals and states (auto storage) for system '<S23>/Motor_Speed_Calculation' */ - 48 typedef struct { - 49 int32_T UnitDelay5_DSTATE; /* '<S28>/UnitDelay5' */ - 50 int32_T UnitDelay1_DSTATE; /* '<S28>/UnitDelay1' */ - 51 } DW_Motor_Speed_Calculation; - 52 - 53 /* Zero-crossing (trigger) state for system '<S23>/Motor_Speed_Calculation' */ - 54 typedef struct { - 55 ZCSigState Motor_Speed_Calculation_Trig_ZC;/* '<S23>/Motor_Speed_Calculation' */ - 56 } ZCE_Motor_Speed_Calculation; - 57 - 58 /* Block signals and states (auto storage) for system '<Root>' */ - 59 typedef struct { - 60 DW_Motor_Speed_Calculation Motor_Speed_Calculation_k;/* '<S61>/Motor_Speed_Calculation' */ - 61 DW_Edge_counter Edge_counter_l; /* '<S61>/Edge_counter' */ - 62 DW_F01_03_Direction_Detection F01_03_Direction_Detection_j;/* '<S50>/F01_03_Direction_Detection' */ - 63 DW_Motor_Speed_Calculation Motor_Speed_Calculation_m;/* '<S23>/Motor_Speed_Calculation' */ - 64 DW_Edge_counter Edge_counter_f; /* '<S23>/Edge_counter' */ - 65 DW_F01_03_Direction_Detection F01_03_Direction_Detection_o;/* '<S12>/F01_03_Direction_Detection' */ - 66 int32_T Switch_PhaAdv; /* '<S51>/Switch_PhaAdv' */ - 67 int32_T Switch_PhaAdv_a; /* '<S13>/Switch_PhaAdv' */ - 68 int16_T Merge; /* '<S14>/Merge' */ - 69 int16_T Merge1; /* '<S14>/Merge1' */ - 70 int16_T Merge2; /* '<S14>/Merge2' */ - 71 int16_T Merge_j; /* '<S52>/Merge' */ - 72 int16_T Merge1_m; /* '<S52>/Merge1' */ - 73 int16_T Merge2_d; /* '<S52>/Merge2' */ - 74 int16_T z_counterRawPrev_DSTATE; /* '<S23>/z_counterRawPrev' */ - 75 int16_T z_counter2_DSTATE; /* '<S23>/z_counter2' */ - 76 int16_T UnitDelay1_DSTATE; /* '<S32>/UnitDelay1' */ - 77 int16_T z_counterRawPrev_DSTATE_p; /* '<S61>/z_counterRawPrev' */ - 78 int16_T z_counter2_DSTATE_h; /* '<S61>/z_counter2' */ - 79 int16_T UnitDelay1_DSTATE_k; /* '<S70>/UnitDelay1' */ - 80 int8_T UnitDelay1; /* '<S60>/UnitDelay1' */ - 81 int8_T Switch2; /* '<S60>/Switch2' */ - 82 int8_T UnitDelay1_k; /* '<S22>/UnitDelay1' */ - 83 int8_T Switch2_e; /* '<S22>/Switch2' */ - 84 int8_T If1_ActiveSubsystem; /* '<S2>/If1' */ - 85 int8_T If1_ActiveSubsystem_j; /* '<S3>/If1' */ - 86 uint8_T Sum2_i; /* '<S65>/Sum2' */ - 87 uint8_T Sum2_l; /* '<S27>/Sum2' */ - 88 uint8_T UnitDelay_DSTATE; /* '<S20>/UnitDelay' */ - 89 uint8_T UnitDelay1_DSTATE_p; /* '<S20>/UnitDelay1' */ - 90 uint8_T UnitDelay2_DSTATE; /* '<S20>/UnitDelay2' */ - 91 uint8_T UnitDelay1_DSTATE_g; /* '<S21>/UnitDelay1' */ - 92 uint8_T UnitDelay_DSTATE_j; /* '<S58>/UnitDelay' */ - 93 uint8_T UnitDelay1_DSTATE_f; /* '<S58>/UnitDelay1' */ - 94 uint8_T UnitDelay2_DSTATE_b; /* '<S58>/UnitDelay2' */ - 95 uint8_T UnitDelay1_DSTATE_j; /* '<S59>/UnitDelay1' */ - 96 boolean_T Logic[2]; /* '<S29>/Logic' */ - 97 boolean_T Logic_j[2]; /* '<S67>/Logic' */ - 98 boolean_T LogicalOperator; /* '<S30>/Logical Operator' */ - 99 boolean_T LogicalOperator5; /* '<S61>/Logical Operator5' */ - 100 boolean_T LogicalOperator_h; /* '<S68>/Logical Operator' */ - 101 boolean_T UnitDelay8_DSTATE; /* '<S23>/UnitDelay8' */ - 102 boolean_T UnitDelay8_DSTATE_p; /* '<S61>/UnitDelay8' */ - 103 boolean_T UnitDelay_DSTATE_k; /* '<S69>/UnitDelay' */ - 104 boolean_T UnitDelay_DSTATE_i; /* '<S68>/UnitDelay' */ - 105 boolean_T UnitDelay_DSTATE_l; /* '<S31>/UnitDelay' */ - 106 boolean_T UnitDelay_DSTATE_b; /* '<S30>/UnitDelay' */ - 107 boolean_T Memory_PreviousInput; /* '<S29>/Memory' */ - 108 boolean_T Relay_Mode; /* '<S15>/Relay' */ - 109 boolean_T Memory_PreviousInput_i; /* '<S67>/Memory' */ - 110 boolean_T Relay_Mode_m; /* '<S53>/Relay' */ - 111 } DW; - 112 - 113 /* Zero-crossing (trigger) state */ - 114 typedef struct { - 115 ZCE_Motor_Speed_Calculation Motor_Speed_Calculation_k;/* '<S61>/Motor_Speed_Calculation' */ - 116 ZCE_Motor_Speed_Calculation Motor_Speed_Calculation_m;/* '<S23>/Motor_Speed_Calculation' */ - 117 } PrevZCX; - 118 - 119 /* Constant parameters (auto storage) */ - 120 typedef struct { - 121 /* Pooled Parameter (Expression: r_trapPhaA_M1) - 122 * Referenced by: - 123 * '<S41>/r_trapPhaA_M1' - 124 * '<S79>/r_trapPhaA_M1' - 125 */ - 126 int16_T pooled9[7]; - 127 - 128 /* Pooled Parameter (Expression: r_trapPhaB_M1) - 129 * Referenced by: - 130 * '<S41>/r_trapPhaB_M1' - 131 * '<S79>/r_trapPhaB_M1' - 132 */ - 133 int16_T pooled10[7]; + 34 /* Forward declaration for rtModel */ + 35 typedef struct tag_RTM RT_MODEL; + 36 + 37 /* Block signals and states (auto storage) for system '<Root>' */ + 38 typedef struct { + 39 int32_T Switch_PhaAdv; /* '<S8>/Switch_PhaAdv' */ + 40 int32_T UnitDelay2_DSTATE; /* '<S16>/UnitDelay2' */ + 41 int16_T Merge; /* '<S9>/Merge' */ + 42 int16_T Merge1; /* '<S9>/Merge1' */ + 43 int16_T Merge2; /* '<S9>/Merge2' */ + 44 int16_T z_counterRawPrev; /* '<S15>/z_counterRawPrev' */ + 45 int16_T Sum4; /* '<S15>/Sum4' */ + 46 int16_T UnitDelay1_DSTATE; /* '<S17>/UnitDelay1' */ + 47 int16_T UnitDelay1_DSTATE_c; /* '<S14>/UnitDelay1' */ + 48 int16_T z_counter2_DSTATE; /* '<S15>/z_counter2' */ + 49 int8_T UnitDelay1; /* '<S13>/UnitDelay1' */ + 50 int8_T Switch2; /* '<S13>/Switch2' */ + 51 int8_T UnitDelay2_DSTATE_i; /* '<S13>/UnitDelay2' */ + 52 int8_T If1_ActiveSubsystem; /* '<S2>/If1' */ + 53 uint8_T UnitDelay_DSTATE; /* '<S11>/UnitDelay' */ + 54 uint8_T UnitDelay1_DSTATE_i; /* '<S11>/UnitDelay1' */ + 55 uint8_T UnitDelay2_DSTATE_h; /* '<S11>/UnitDelay2' */ + 56 boolean_T n_commDeacv_Mode; /* '<S14>/n_commDeacv' */ + 57 boolean_T dz_counter_Mode; /* '<S14>/dz_counter' */ + 58 } DW; + 59 + 60 /* Constant parameters (auto storage) */ + 61 typedef struct { + 62 /* Computed Parameter: r_trapPhaA_M1_Table + 63 * Referenced by: '<S18>/r_trapPhaA_M1' + 64 */ + 65 int16_T r_trapPhaA_M1_Table[7]; + 66 + 67 /* Computed Parameter: r_trapPhaB_M1_Table + 68 * Referenced by: '<S18>/r_trapPhaB_M1' + 69 */ + 70 int16_T r_trapPhaB_M1_Table[7]; + 71 + 72 /* Computed Parameter: r_trapPhaC_M1_Table + 73 * Referenced by: '<S18>/r_trapPhaC_M1' + 74 */ + 75 int16_T r_trapPhaC_M1_Table[7]; + 76 + 77 /* Computed Parameter: r_sinPhaA_M1_Table + 78 * Referenced by: '<S19>/r_sinPhaA_M1' + 79 */ + 80 int16_T r_sinPhaA_M1_Table[37]; + 81 + 82 /* Computed Parameter: r_sinPhaB_M1_Table + 83 * Referenced by: '<S19>/r_sinPhaB_M1' + 84 */ + 85 int16_T r_sinPhaB_M1_Table[37]; + 86 + 87 /* Computed Parameter: r_sinPhaC_M1_Table + 88 * Referenced by: '<S19>/r_sinPhaC_M1' + 89 */ + 90 int16_T r_sinPhaC_M1_Table[37]; + 91 + 92 /* Computed Parameter: r_sin3PhaA_M1_Table + 93 * Referenced by: '<S20>/r_sin3PhaA_M1' + 94 */ + 95 int16_T r_sin3PhaA_M1_Table[37]; + 96 + 97 /* Computed Parameter: r_sin3PhaB_M1_Table + 98 * Referenced by: '<S20>/r_sin3PhaB_M1' + 99 */ + 100 int16_T r_sin3PhaB_M1_Table[37]; + 101 + 102 /* Computed Parameter: r_sin3PhaC_M1_Table + 103 * Referenced by: '<S20>/r_sin3PhaC_M1' + 104 */ + 105 int16_T r_sin3PhaC_M1_Table[37]; + 106 + 107 /* Computed Parameter: z_commutMap_M1_table + 108 * Referenced by: '<S10>/z_commutMap_M1' + 109 */ + 110 int16_T z_commutMap_M1_table[18]; + 111 + 112 /* Computed Parameter: vec_hallToPos_Value + 113 * Referenced by: '<S12>/vec_hallToPos' + 114 */ + 115 int8_T vec_hallToPos_Value[8]; + 116 } ConstP; + 117 + 118 /* External inputs (root inport signals with auto storage) */ + 119 typedef struct { + 120 uint8_T b_hallA; /* '<Root>/b_hallA ' */ + 121 uint8_T b_hallB; /* '<Root>/b_hallB' */ + 122 uint8_T b_hallC; /* '<Root>/b_hallC' */ + 123 int32_T r_DC; /* '<Root>/r_DC' */ + 124 } ExtU; + 125 + 126 /* External outputs (root outports fed by signals with auto storage) */ + 127 typedef struct { + 128 int32_T DC_phaA; /* '<Root>/DC_phaA' */ + 129 int32_T DC_phaB; /* '<Root>/DC_phaB' */ + 130 int32_T DC_phaC; /* '<Root>/DC_phaC' */ + 131 int32_T n_mot; /* '<Root>/n_mot' */ + 132 int32_T a_elecAngle; /* '<Root>/a_elecAngle' */ + 133 } ExtY; 134 - 135 /* Pooled Parameter (Expression: r_trapPhaC_M1) - 136 * Referenced by: - 137 * '<S41>/r_trapPhaC_M1' - 138 * '<S79>/r_trapPhaC_M1' - 139 */ - 140 int16_T pooled11[7]; - 141 - 142 /* Pooled Parameter (Expression: r_sinPhaA_M1) - 143 * Referenced by: - 144 * '<S43>/r_sinPhaA_M1' - 145 * '<S81>/r_sinPhaA_M1' - 146 */ - 147 int16_T pooled12[37]; - 148 - 149 /* Pooled Parameter (Expression: r_sinPhaB_M1) - 150 * Referenced by: - 151 * '<S43>/r_sinPhaB_M1' - 152 * '<S81>/r_sinPhaB_M1' - 153 */ - 154 int16_T pooled13[37]; - 155 - 156 /* Pooled Parameter (Expression: r_sinPhaC_M1) - 157 * Referenced by: - 158 * '<S43>/r_sinPhaC_M1' - 159 * '<S81>/r_sinPhaC_M1' - 160 */ - 161 int16_T pooled14[37]; - 162 - 163 /* Pooled Parameter (Expression: r_sin3PhaA_M1) - 164 * Referenced by: - 165 * '<S42>/r_sin3PhaA_M1' - 166 * '<S80>/r_sin3PhaA_M1' - 167 */ - 168 int16_T pooled15[37]; - 169 - 170 /* Pooled Parameter (Expression: r_sin3PhaB_M1) - 171 * Referenced by: - 172 * '<S42>/r_sin3PhaB_M1' - 173 * '<S80>/r_sin3PhaB_M1' - 174 */ - 175 int16_T pooled16[37]; - 176 - 177 /* Pooled Parameter (Expression: r_sin3PhaC_M1) - 178 * Referenced by: - 179 * '<S42>/r_sin3PhaC_M1' - 180 * '<S80>/r_sin3PhaC_M1' - 181 */ - 182 int16_T pooled17[37]; - 183 - 184 /* Pooled Parameter (Expression: z_commutMap_M1) - 185 * Referenced by: - 186 * '<S15>/z_commutMap_M1' - 187 * '<S53>/z_commutMap_M1' - 188 */ - 189 int16_T pooled18[18]; - 190 - 191 /* Pooled Parameter (Expression: vec_hallToPos) - 192 * Referenced by: - 193 * '<S21>/vec_hallToPos' - 194 * '<S59>/vec_hallToPos' - 195 */ - 196 uint8_T pooled26[8]; - 197 - 198 /* Pooled Parameter (Expression: [0 1;1 0;0 1;0 1;1 0;1 0;0 0;0 0]) - 199 * Referenced by: - 200 * '<S29>/Logic' - 201 * '<S67>/Logic' - 202 */ - 203 boolean_T pooled30[16]; - 204 } ConstP; - 205 - 206 /* External inputs (root inport signals with auto storage) */ - 207 typedef struct { - 208 uint8_T b_hallALeft; /* '<Root>/b_hallALeft ' */ - 209 uint8_T b_hallBLeft; /* '<Root>/b_hallBLeft' */ - 210 uint8_T b_hallCLeft; /* '<Root>/b_hallCLeft' */ - 211 int32_T r_DCLeft; /* '<Root>/r_DCLeft' */ - 212 uint8_T b_hallARight; /* '<Root>/b_hallARight' */ - 213 uint8_T b_hallBRight; /* '<Root>/b_hallBRight' */ - 214 uint8_T b_hallCRight; /* '<Root>/b_hallCRight' */ - 215 int32_T r_DCRight; /* '<Root>/r_DCRight' */ - 216 } ExtU; - 217 - 218 /* External outputs (root outports fed by signals with auto storage) */ - 219 typedef struct { - 220 int32_T DC_phaALeft; /* '<Root>/DC_phaALeft' */ - 221 int32_T DC_phaBLeft; /* '<Root>/DC_phaBLeft' */ - 222 int32_T DC_phaCLeft; /* '<Root>/DC_phaCLeft' */ - 223 int32_T n_motLeft; /* '<Root>/n_motLeft' */ - 224 int32_T a_elecAngleLeft; /* '<Root>/a_elecAngleLeft' */ - 225 int32_T DC_phaARight; /* '<Root>/DC_phaARight' */ - 226 int32_T DC_phaBRight; /* '<Root>/DC_phaBRight' */ - 227 int32_T DC_phaCRight; /* '<Root>/DC_phaCRight' */ - 228 int32_T n_motRight; /* '<Root>/n_motRight' */ - 229 int32_T a_elecAngleRight; /* '<Root>/a_elecAngleRight' */ - 230 } ExtY; - 231 - 232 /* Parameters (auto storage) */ - 233 struct P_ { - 234 int32_T cf_speedCoef; /* Variable: cf_speedCoef - 235 * Referenced by: - 236 * '<S28>/cf_spdCoef' - 237 * '<S66>/cf_spdCoef' - 238 */ - 239 int32_T n_commAcvLo; /* Variable: n_commAcvLo - 240 * Referenced by: - 241 * '<S15>/Relay' - 242 * '<S53>/Relay' - 243 */ - 244 int32_T n_commDeacvHi; /* Variable: n_commDeacvHi - 245 * Referenced by: - 246 * '<S15>/Relay' - 247 * '<S53>/Relay' - 248 */ - 249 int32_T r_commDCDeacv; /* Variable: r_commDCDeacv - 250 * Referenced by: - 251 * '<S15>/r_commDCDeacv' - 252 * '<S53>/r_commDCDeacv' - 253 */ - 254 int32_T r_phaAdvDC_XA[11]; /* Variable: r_phaAdvDC_XA - 255 * Referenced by: - 256 * '<S13>/r_phaAdvDC_XA' - 257 * '<S51>/r_phaAdvDC_XA' - 258 */ - 259 int16_T a_phaAdv_M1[11]; /* Variable: a_phaAdv_M1 - 260 * Referenced by: - 261 * '<S13>/a_phaAdv_M2' - 262 * '<S51>/a_phaAdv_M2' - 263 */ - 264 int16_T z_maxCntRst; /* Variable: z_maxCntRst - 265 * Referenced by: - 266 * '<S23>/z_maxCntRst' - 267 * '<S23>/z_maxCntRst1' - 268 * '<S23>/z_maxCntRst2' - 269 * '<S23>/z_counter2' - 270 * '<S61>/z_maxCntRst' - 271 * '<S61>/z_maxCntRst1' - 272 * '<S61>/z_maxCntRst2' - 273 * '<S61>/z_counter2' - 274 * '<S28>/z_maxCntRst' - 275 * '<S66>/z_maxCntRst' - 276 */ - 277 uint8_T z_ctrlTypSel; /* Variable: z_ctrlTypSel - 278 * Referenced by: - 279 * '<S12>/z_ctrlTypSel1' - 280 * '<S50>/z_ctrlTypSel1' - 281 */ - 282 uint8_T z_nrEdgeSpdAcv; /* Variable: z_nrEdgeSpdAcv - 283 * Referenced by: - 284 * '<S23>/z_nrEdgeSpdAcv' - 285 * '<S61>/z_nrEdgeSpdAcv' - 286 */ - 287 boolean_T b_phaAdvEna; /* Variable: b_phaAdvEna - 288 * Referenced by: - 289 * '<S13>/a_elecPeriod1' - 290 * '<S51>/a_elecPeriod1' - 291 */ - 292 }; - 293 - 294 /* Parameters (auto storage) */ - 295 typedef struct P_ P; - 296 - 297 /* Block parameters (auto storage) */ - 298 extern P rtP; - 299 - 300 /* Block signals and states (auto storage) */ - 301 extern DW rtDW; - 302 - 303 /* External inputs (root inport signals with auto storage) */ - 304 extern ExtU rtU; - 305 - 306 /* External outputs (root outports fed by signals with auto storage) */ - 307 extern ExtY rtY; - 308 - 309 /* Constant parameters (auto storage) */ - 310 extern const ConstP rtConstP; - 311 - 312 /* Model entry point functions */ - 313 extern void BLDC_controller_initialize(void); - 314 extern void BLDC_controller_step(void); - 315 - 316 /*- - 317 * These blocks were eliminated from the model due to optimizations: - 318 * - 319 * Block '<S23>/Scope2' : Unused code path elimination - 320 * Block '<S13>/Scope' : Unused code path elimination - 321 * Block '<S61>/Scope2' : Unused code path elimination - 322 * Block '<S51>/Scope' : Unused code path elimination - 323 */ - 324 - 325 /*- - 326 * The generated code includes comments that allow you to trace directly - 327 * back to the appropriate location in the model. The basic format - 328 * is <system>/block_name, where system is the system number (uniquely - 329 * assigned by Simulink) and block_name is the name of the block. - 330 * - 331 * Note that this particular code originates from a subsystem build, - 332 * and has its own system numbers different from the parent model. - 333 * Refer to the system hierarchy for this subsystem below, and use the - 334 * MATLAB hilite_system command to trace the generated code back - 335 * to the parent model. For example, - 336 * - 337 * hilite_system('BLDCmotorControl_R2017b/BLDC_controller') - opens subsystem BLDCmotorControl_R2017b/BLDC_controller - 338 * hilite_system('BLDCmotorControl_R2017b/BLDC_controller/Kp') - opens and selects block Kp - 339 * - 340 * Here is the system hierarchy for this model - 341 * - 342 * '<Root>' : 'BLDCmotorControl_R2017b' - 343 * '<S1>' : 'BLDCmotorControl_R2017b/BLDC_controller' - 344 * '<S2>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left' - 345 * '<S3>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right' - 346 * '<S4>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log1' - 347 * '<S5>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log2' - 348 * '<S6>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log3' - 349 * '<S7>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log4' - 350 * '<S8>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log5' - 351 * '<S9>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log6' - 352 * '<S10>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log7' - 353 * '<S11>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log8' - 354 * '<S12>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations' - 355 * '<S13>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation' - 356 * '<S14>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection' - 357 * '<S15>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management' - 358 * '<S16>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log1' - 359 * '<S17>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log2' - 360 * '<S18>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log3' - 361 * '<S19>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log6' - 362 * '<S20>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_01_Edge_Detector' - 363 * '<S21>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_02_Position_Calculation' - 364 * '<S22>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_03_Direction_Detection' - 365 * '<S23>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation' - 366 * '<S24>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_01_Edge_Detector/signal_log6' - 367 * '<S25>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_02_Position_Calculation/signal_log6' - 368 * '<S26>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_03_Direction_Detection/signal_log6' - 369 * '<S27>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter' - 370 * '<S28>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' - 371 * '<S29>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/S-R Flip-Flop' - 372 * '<S30>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/falling_edge2' - 373 * '<S31>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rising_edge' - 374 * '<S32>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_Delay' - 375 * '<S33>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log1' - 376 * '<S34>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log3' - 377 * '<S35>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log4' - 378 * '<S36>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log5' - 379 * '<S37>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter/rst_Delay' - 380 * '<S38>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log1' - 381 * '<S39>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log2' - 382 * '<S40>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log6' - 383 * '<S41>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' - 384 * '<S42>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_02_Sinusoidal3rd_Method' - 385 * '<S43>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' - 386 * '<S44>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log1' - 387 * '<S45>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log2' - 388 * '<S46>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log6' - 389 * '<S47>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log1' - 390 * '<S48>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log2' - 391 * '<S49>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log6' - 392 * '<S50>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations' - 393 * '<S51>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation' - 394 * '<S52>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection' - 395 * '<S53>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management' - 396 * '<S54>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log1' - 397 * '<S55>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log2' - 398 * '<S56>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log3' - 399 * '<S57>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log6' - 400 * '<S58>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_01_Edge_Detector' - 401 * '<S59>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_02_Position_Calculation' - 402 * '<S60>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_03_Direction_Detection' - 403 * '<S61>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation' - 404 * '<S62>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_01_Edge_Detector/signal_log6' - 405 * '<S63>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_02_Position_Calculation/signal_log6' - 406 * '<S64>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_03_Direction_Detection/signal_log6' - 407 * '<S65>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter' - 408 * '<S66>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' - 409 * '<S67>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/S-R Flip-Flop' - 410 * '<S68>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/falling_edge2' - 411 * '<S69>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rising_edge' - 412 * '<S70>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_Delay' - 413 * '<S71>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log1' - 414 * '<S72>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log3' - 415 * '<S73>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log4' - 416 * '<S74>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log5' - 417 * '<S75>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter/rst_Delay' - 418 * '<S76>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log1' - 419 * '<S77>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log2' - 420 * '<S78>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log6' - 421 * '<S79>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' - 422 * '<S80>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_02_Sinusoidal3rd_Method' - 423 * '<S81>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' - 424 * '<S82>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log1' - 425 * '<S83>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log2' - 426 * '<S84>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log6' - 427 * '<S85>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log1' - 428 * '<S86>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log2' - 429 * '<S87>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log6' - 430 */ - 431 #endif /* RTW_HEADER_BLDC_controller_h_ */ - 432 - 433 /* - 434 * File trailer for generated code. - 435 * - 436 * [EOF] - 437 */ - 438 + 135 /* Parameters (auto storage) */ + 136 struct P_ { + 137 int32_T cf_speedCoef; /* Variable: cf_speedCoef + 138 * Referenced by: '<S16>/cf_spdCoef' + 139 */ + 140 int32_T cf_speedFilt; /* Variable: cf_speedFilt + 141 * Referenced by: '<S16>/cf_speedFilt' + 142 */ + 143 int32_T n_commAcvLo; /* Variable: n_commAcvLo + 144 * Referenced by: '<S14>/n_commDeacv' + 145 */ + 146 int32_T n_commDeacvHi; /* Variable: n_commDeacvHi + 147 * Referenced by: '<S14>/n_commDeacv' + 148 */ + 149 int32_T r_commDCDeacv; /* Variable: r_commDCDeacv + 150 * Referenced by: '<S14>/r_commDCDeacv' + 151 */ + 152 int32_T r_phaAdvDC_XA[11]; /* Variable: r_phaAdvDC_XA + 153 * Referenced by: '<S8>/r_phaAdvDC_XA' + 154 */ + 155 int16_T a_phaAdv_M1[11]; /* Variable: a_phaAdv_M1 + 156 * Referenced by: '<S8>/a_phaAdv_M2' + 157 */ + 158 int16_T dz_counterHi; /* Variable: dz_counterHi + 159 * Referenced by: '<S14>/dz_counter' + 160 */ + 161 int16_T dz_counterLo; /* Variable: dz_counterLo + 162 * Referenced by: '<S14>/dz_counter' + 163 */ + 164 uint8_T z_ctrlTypSel; /* Variable: z_ctrlTypSel + 165 * Referenced by: '<S7>/z_ctrlTypSel1' + 166 */ + 167 boolean_T b_phaAdvEna; /* Variable: b_phaAdvEna + 168 * Referenced by: '<S8>/a_elecPeriod1' + 169 */ + 170 }; + 171 + 172 /* Parameters (auto storage) */ + 173 typedef struct P_ P; + 174 + 175 /* Real-time Model Data Structure */ + 176 struct tag_RTM { + 177 P *defaultParam; + 178 ExtU *inputs; + 179 ExtY *outputs; + 180 DW *dwork; + 181 }; + 182 + 183 /* Constant parameters (auto storage) */ + 184 extern const ConstP rtConstP; + 185 + 186 /* Model entry point functions */ + 187 extern void BLDC_controller_initialize(RT_MODEL *const rtM); + 188 extern void BLDC_controller_step(RT_MODEL *const rtM); + 189 + 190 /*- + 191 * These blocks were eliminated from the model due to optimizations: + 192 * + 193 * Block '<S14>/Scope2' : Unused code path elimination + 194 * Block '<S8>/Scope' : Unused code path elimination + 195 */ + 196 + 197 /*- + 198 * The generated code includes comments that allow you to trace directly + 199 * back to the appropriate location in the model. The basic format + 200 * is <system>/block_name, where system is the system number (uniquely + 201 * assigned by Simulink) and block_name is the name of the block. + 202 * + 203 * Note that this particular code originates from a subsystem build, + 204 * and has its own system numbers different from the parent model. + 205 * Refer to the system hierarchy for this subsystem below, and use the + 206 * MATLAB hilite_system command to trace the generated code back + 207 * to the parent model. For example, + 208 * + 209 * hilite_system('BLDCmotorControl_R2017b/BLDC_controller') - opens subsystem BLDCmotorControl_R2017b/BLDC_controller + 210 * hilite_system('BLDCmotorControl_R2017b/BLDC_controller/Kp') - opens and selects block Kp + 211 * + 212 * Here is the system hierarchy for this model + 213 * + 214 * '<Root>' : 'BLDCmotorControl_R2017b' + 215 * '<S1>' : 'BLDCmotorControl_R2017b/BLDC_controller' + 216 * '<S2>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller' + 217 * '<S3>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log1' + 218 * '<S4>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log2' + 219 * '<S5>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log3' + 220 * '<S6>' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log6' + 221 * '<S7>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations' + 222 * '<S8>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F02_Electrical_Angle_Calculation' + 223 * '<S9>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection' + 224 * '<S10>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F04_Control_Type_Management' + 225 * '<S11>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_01_Edge_Detector' + 226 * '<S12>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_02_Position_Calculation' + 227 * '<S13>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_03_Direction_Detection' + 228 * '<S14>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation' + 229 * '<S15>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Counter_Hold_and_Error_Calculation' + 230 * '<S16>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' + 231 * '<S17>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_DelayLim' + 232 * '<S18>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' + 233 * '<S19>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' + 234 * '<S20>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_03_Sinusoidal3rd_Method' + 235 * '<S21>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log1' + 236 * '<S22>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log2' + 237 * '<S23>' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log6' + 238 */ + 239 #endif /* RTW_HEADER_BLDC_controller_h_ */ + 240 + 241 /* + 242 * File trailer for generated code. + 243 * + 244 * [EOF] + 245 */ + 246

diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_interface.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_interface.html index 331ce17..6360cbe 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_interface.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_interface.html @@ -63,7 +63,7 @@ Prototype -void BLDC_controller_initialize(void) +void BLDC_controller_initialize(RT_MODEL *const rtM) @@ -92,7 +92,52 @@ Must be called exactly once Arguments -None + + + + + + + + + + + + + + + + +
+ +# + + + + +Name + + + + +Data Type + + + + +Description + + +
+1 + +rtM + +RT_MODEL *const + +RTModel +
+ @@ -126,7 +171,7 @@ Prototype -void BLDC_controller_step(void) +void BLDC_controller_step(RT_MODEL *const rtM) @@ -146,7 +191,7 @@ Output entry point of generated code Timing -Must be called periodically, every 1e-05 seconds +Must be called periodically, every 6e-05 seconds @@ -155,7 +200,52 @@ Must be called periodically, every 1e-05 seconds Arguments -None + + + + + + + + + + + + + + + + +
+ +# + + + + +Name + + + + +Data Type + + + + +Description + + +
+1 + +rtM + +RT_MODEL *const + +RTModel +
+ @@ -215,10 +305,13 @@ Dimension -<S1>/b_hallALeft +<S1>/b_hallA -rtU.b_hallALeft + +Defined externally + + uint8_T @@ -230,10 +323,13 @@ uint8_T -<S1>/b_hallBLeft +<S1>/b_hallB -rtU.b_hallBLeft + +Defined externally + + uint8_T @@ -245,10 +341,13 @@ uint8_T -<S1>/b_hallCLeft +<S1>/b_hallC -rtU.b_hallCLeft + +Defined externally + + uint8_T @@ -260,70 +359,13 @@ uint8_T -<S1>/r_DCLeft +<S1>/r_DC -rtU.r_DCLeft - - -int32_T - - -1 - + +Defined externally + - - - -<S1>/b_hallARight - - -rtU.b_hallARight - - -uint8_T - - -1 - - - - - -<S1>/b_hallBRight - - -rtU.b_hallBRight - - -uint8_T - - -1 - - - - - -<S1>/b_hallCRight - - -rtU.b_hallCRight - - -uint8_T - - -1 - - - - - -<S1>/r_DCRight - - -rtU.r_DCRight int32_T @@ -371,10 +413,13 @@ Dimension -<S1>/DC_phaALeft +<S1>/DC_phaA -rtY.DC_phaALeft + +Defined externally + + int32_T @@ -386,10 +431,13 @@ int32_T -<S1>/DC_phaBLeft +<S1>/DC_phaB -rtY.DC_phaBLeft + +Defined externally + + int32_T @@ -401,10 +449,13 @@ int32_T -<S1>/DC_phaCLeft +<S1>/DC_phaC -rtY.DC_phaCLeft + +Defined externally + + int32_T @@ -416,10 +467,13 @@ int32_T -<S1>/n_motLeft +<S1>/n_mot -rtY.n_motLeft + +Defined externally + + int32_T @@ -431,85 +485,13 @@ int32_T -<S1>/a_elecAngleLeft +<S1>/a_elecAngle -rtY.a_elecAngleLeft - - -int32_T - - -1 - + +Defined externally + - - - -<S1>/DC_phaARight - - -rtY.DC_phaARight - - -int32_T - - -1 - - - - - -<S1>/DC_phaBRight - - -rtY.DC_phaBRight - - -int32_T - - -1 - - - - - -<S1>/DC_phaCRight - - -rtY.DC_phaCRight - - -int32_T - - -1 - - - - - -<S1>/n_motRight - - -rtY.n_motRight - - -int32_T - - -1 - - - - - -<S1>/a_elecAngleRight - - -rtY.a_elecAngleRight int32_T @@ -560,7 +542,10 @@ Dimension cf_speedCoef -rtP.cf_speedCoef + +Defined externally + + int32_T @@ -572,25 +557,31 @@ int32_T +cf_speedFilt + + + +Defined externally + + + + +int32_T + + +1 + + + + + n_commAcvLo -rtP.n_commAcvLo - - -int32_T - - -1 - + +Defined externally + - - - -n_commDeacvHi - - -rtP.n_commDeacvHi int32_T @@ -602,10 +593,13 @@ int32_T -r_commDCDeacv +n_commDeacvHi -rtP.r_commDCDeacv + +Defined externally + + int32_T @@ -617,10 +611,31 @@ int32_T +r_commDCDeacv + + + +Defined externally + + + + +int32_T + + +1 + + + + + r_phaAdvDC_XA -rtP.r_phaAdvDC_XA + +Defined externally + + int32_T @@ -630,12 +645,15 @@ int32_T - + a_phaAdv_M1 -rtP.a_phaAdv_M1 + +Defined externally + + int16_T @@ -645,12 +663,33 @@ int16_T - + -z_maxCntRst +dz_counterHi -rtP.z_maxCntRst + +Defined externally + + + + +int16_T + + +1 + + + + + +dz_counterLo + + + +Defined externally + + int16_T @@ -665,7 +704,10 @@ int16_T z_ctrlTypSel -rtP.z_ctrlTypSel + +Defined externally + + uint8_T @@ -677,25 +719,13 @@ uint8_T -z_nrEdgeSpdAcv - - -rtP.z_nrEdgeSpdAcv - - -uint8_T - - -1 - - - - - b_phaAdvEna -rtP.b_phaAdvEna + +Defined externally + + boolean_T diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_metrics.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_metrics.html index 71c6cbc..4860635 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_metrics.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_metrics.html @@ -40,7 +40,7 @@ Global Variables
  • - + Function Information @@ -85,7 +85,7 @@ Function Information : -3 +2   @@ -100,7 +100,7 @@ Function Information : -746 +408   @@ -115,7 +115,7 @@ Function Information : -2,126 +1,155   @@ -169,13 +169,13 @@ BLDC_controller.c -506 +258 -1,309 +698 -05/28/2019 7:55 PM +06/05/2019 10:29 PM @@ -187,13 +187,13 @@ BLDC_controller.h -137 +79 -438 +246 -05/28/2019 7:55 PM +06/05/2019 10:29 PM @@ -211,7 +211,7 @@ rtwtypes.h 109 -05/28/2019 7:55 PM +06/05/2019 10:29 PM @@ -223,31 +223,13 @@ BLDC_controller_data.c -40 +27 -212 +102 -05/28/2019 7:55 PM - - - - - - -zero_crossing_types.h - - - - -19 - - -58 - - -05/28/2019 7:55 PM +06/05/2019 10:29 PM @@ -316,1414 +298,34 @@ Global variables defined in the generated code. - - - - - - - - - - - - - -
    - - - - - - - - - -
    -[+] -rtDW - - - -87 - -150  - -126  -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    -[+] -rtP - - - -87 - -29  - -20  -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    -[+] -rtY - - - -40 - -18  - -18  -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    -[+] -rtU - - - -14 - -38  - -38  -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    -[+] -rtPrevZCX - - - -2 - -4  - -2  -
    - -
    - - - - - - - - - - - - -
    - - - @@ -1748,9 +350,9 @@ rtPrevZCX
    + Total + + -230 + +0 + + -239  + +0  + + + + +

    -3. Function Information [hide] +3. Function Information [hide]

    - +
    @@ -1870,43 +472,7 @@ BLDC_controller_step
    View function metrics in a call tree format or table format. Accumulated stack numbers include the estimated stack size of the function plus the maximum of the accumulated stack size of the subroutines that the function calls. @@ -1840,19 +442,19 @@ BLDC_controller_step -47 +69 -27 +60 -232 +185 -684 +516 -29 +24
    - - - - - - - - -
    -      [+]  -F02_Electrical_Angle_Calculatio - - - -20 - -11 - -27 - -65 - -4 -
    - - - - - - - - -
  • I(NaKVi)&%^e! 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 p?~&=AZ&&U4u*A$F4P&x@`b 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 B>v;eG literal 0 HcmV?d00001 diff --git a/01_Matlab/99_RecycleBin/init_model.m b/01_Matlab/99_RecycleBin/init_model.m new file mode 100644 index 0000000..2985c9a --- /dev/null +++ b/01_Matlab/99_RecycleBin/init_model.m @@ -0,0 +1,214 @@ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This file is part of the hoverboard-new-firmware-hack project +% Compared to previouse commutation method, this project offers +% 3 more additional control method for BLDC motors. +% The new control methods offers superior performanace +% compared to previous method featuring: +% >> reduced noise and vibrations +% >> smooth torque output +% >> improved motor efficiency -> lower energy consumption +% +% Author: Emanuel FERU +% Copyright © 2019 Emanuel FERU +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Clear workspace +close all +clear +clc + +% Load model parameters +load BLDCmotorControl_data; +Ts = 5e-6; % [s] Model samplind time (200 kHz) +Ts_ctrl = 6e-5; % [s] Controller samplid time (~16 kHz) +% Ts_ctrl = 12e-5; % [s] Controller samplid time (~8 kHz) + +% BLDC control parameters +CTRL_COMM = 0; % Commutation +CTRL_TRAP = 1; % Pure Trapezoidal +CTRL_SIN = 2; % Sinusoidal +CTRL_SIN3 = 3; % Sinusoidal 3rd armonic + +z_ctrlTypSel = CTRL_SIN3; % Control method selection + +% Motor Parameters +n_polePairs = 15; % [-] Number of pole pairs +a_elecPeriod = 360; % [deg] Electrical angle period +a_elecAngle = 60; % [deg] Electrical angle between two Hall sensor changing events +a_mechAngle = a_elecAngle / n_polePairs; % [deg] Mechanical angle + +%% F01_Preliminary_Calculations + +z_hallDebSteps = 3; % [-] Hall debounce time steps + +% Position Calculation Parameters +% Hall = 4*hA + 2*hB + hC +% Hall = [0 1 2 3 4 5 6 7] +vec_hallToPos = [0 5 3 4 1 0 2 0]; % [-] Mapping Hall signal to position + +% Speed Calculation Parameters +f_ctrl = 1/Ts_ctrl; % [Hz] Controller frequency = 1/Ts_ctrl +cf_speedCoef = round(f_ctrl * a_mechAngle * (pi/180) * (30/pi)); % [-] Speed calculation coefficient (factors are due to conversions rpm <-> rad/s) +cf_speedFilt = 10; % [%] Speed filter in percent [1, 100]. Lower values mean softer filter +z_maxCntRst = 1000; % [-] Maximum counter value for reset (works also as time-out to detect standing still) +% z_nrEdgeSpdAcv = 2; % [-] Number of edge detections to activate speed calculation +% cf_speedSca = 3e7; % [-] Scaling factor for speed calculation +% cf_speedCoef = round(cf_speedSca /(f_ctrl * a_mechAngle * (pi/180) * (30/pi))); + +%% F02_Electrical_Angle_Calculation +b_phaAdvEna = 1; % [-] Phase advance enable parameter: 0 = disable, 1 = enable + +% The map below was experimentaly calibrated on the real motor. Objectives: minimum noise and minimum torque ripple +a_phaAdv_M1 = [0 0 7 2 2 2 4 5 9 16 25]; % [deg] Phase advance angle +r_phaAdvDC_XA = [0 100 200 300 400 500 600 700 800 900 1000]; % [-] Phase advance Duty Cycle grid +% plot(r_phaAdvDC_XA, a_phaAdv_M1); + +%% F03_Speed_Control +n_commAcvLo = 30; % [rpm] Commutation method activation speed low +n_commDeacvHi = 50; % [rpm] Commutation method deactivation speed high +r_commDCDeacv = 80; % [-] Commutation method deactivation Duty Cycle threshold (arbitrary small number) +z_errCtrlRstHi = 20; % [-] Error counter reset. Above this value the control resets to Commudation method (only during high dynamics) +z_errCtrlRstLo = 12; + +sca_factor = 1000; % [-] scalling factor (to avoid truncation approximations on integer data type) +% Commutation method +z_commutMap_M1 = sca_factor*[ 1 1 0 -1 -1 0; % Phase A + -1 0 1 1 0 -1 ; % Phase B + 0 -1 -1 0 1 1]; % Phase C [-] Commutation method map + +% Trapezoidal method +a_trapElecAngle_XA = [0 60 120 180 240 300 360]; % [deg] Electrical angle grid +r_trapPhaA_M1 = sca_factor*[ 1 1 1 -1 -1 -1 1]; +r_trapPhaB_M1 = sca_factor*[-1 -1 1 1 1 -1 -1]; +r_trapPhaC_M1 = sca_factor*[ 1 -1 -1 -1 1 1 1]; + +% Sinusoidal method +a_sinElecAngle_XA = 0:10:360; +omega = a_sinElecAngle_XA*(pi/180); +pha_adv = 30; % [deg] Phase advance to mach commands with the Hall position +r_sinPhaA_M1 = sin(omega + pha_adv*(pi/180)); +r_sinPhaB_M1 = sin(omega - 120*(pi/180) + pha_adv*(pi/180)); +r_sinPhaC_M1 = sin(omega + 120*(pi/180) + pha_adv*(pi/180)); + +% Sinusoidal 3rd armonic method +A = 1.15; % Sine amplitude (tunable to get the Saddle sin maximum to value 1000) +sin3Arm = 0.22*sin(3*(omega + pha_adv*(pi/180))); % 3rd armonic +r_sin3PhaA_M1 = sin3Arm + A*r_sinPhaA_M1; +r_sin3PhaB_M1 = sin3Arm + A*r_sinPhaB_M1; +r_sin3PhaC_M1 = sin3Arm + A*r_sinPhaC_M1; + +% Rounding for representation on integer data type +r_sinPhaA_M1 = round(sca_factor * r_sinPhaA_M1); +r_sinPhaB_M1 = round(sca_factor * r_sinPhaB_M1); +r_sinPhaC_M1 = round(sca_factor * r_sinPhaC_M1); +r_sin3PhaA_M1 = round(sca_factor * r_sin3PhaA_M1); +r_sin3PhaB_M1 = round(sca_factor * r_sin3PhaB_M1); +r_sin3PhaC_M1 = round(sca_factor * r_sin3PhaC_M1); + +disp('---- BLDC_controller: Initialization OK ----'); + +%% 2nd Harmonic vs 3rd Harmonic +% figure +% subplot(211) +% a1= (0.22*sin(3*(omega + (pi/180)))); +% b = A*sin(omega + 1*(pi/180)); +% plot(a_sinElecAngle_XA, a1+b,'b', 'Linewidth', lw); hold on +% a2 = abs(0.3*sin(2*(omega + (pi/180)))); +% b = 0.85*sin(omega + 1*(pi/180)); +% plot(a_sinElecAngle_XA,sign(b).*a2+b,'g', 'Linewidth', lw) +% grid +% legend('3rd harmonic', '2nd harmonic'); +% subplot(212) +% plot(a_sinElecAngle_XA,a1,'b', 'Linewidth', lw); hold on +% plot(a_sinElecAngle_XA,sign(b).*a2,'g', 'Linewidth', lw); +% plot(a_sinElecAngle_XA,b,'r', 'Linewidth', lw); +% legend('3rd harmonic', '2nd harmonic','Main sine wave'); +% grid + +%% Plot control methods + +show_fig = 0; +if show_fig + + hall_A = [1 1 1 0 0 0 0] + 4; + hall_B = [0 0 1 1 1 0 0] + 2; + hall_C = [1 0 0 0 1 1 1]; + + color = ['m' 'g' 'b']; + lw = 1.5; + figure + s1 = subplot(321); hold on + stairs(a_trapElecAngle_XA, hall_A, color(1), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, hall_B, color(2), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, hall_C, color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + grid + yticks(0:5); + yticklabels({'0','1','0','1','0','1'}); + title('Hall sensors'); + legend('Phase A','Phase B','Phase C','Location','NorthWest'); + + s2 = subplot(322); hold on + stairs(a_trapElecAngle_XA, hall_A, color(1), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, hall_B, color(2), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, hall_C, color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + grid + yticks(0:5); + yticklabels({'0','1','0','1','0','1'}); + title('Hall sensors'); + legend('Phase A','Phase B','Phase C','Location','NorthWest'); + + s3 = subplot(323); hold on + stairs(a_trapElecAngle_XA, [z_commutMap_M1(1,:) z_commutMap_M1(1,end)] + 6000, color(1), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, [z_commutMap_M1(2,:) z_commutMap_M1(1,end)] + 3000, color(2), 'Linewidth', lw); + stairs(a_trapElecAngle_XA, [z_commutMap_M1(3,:) z_commutMap_M1(1,end)], color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + yticks(-1000:1000:7000); + yticklabels({'-1000','0','1000','-1000','0','1000','-1000','0','1000'}); + ylim([-1000 7000]); + grid + title('Commutation method [0]'); + + s5 = subplot(325); hold on + plot(a_trapElecAngle_XA, r_trapPhaA_M1, color(1), 'Linewidth', lw); + plot(a_trapElecAngle_XA, r_trapPhaB_M1, color(2), 'Linewidth', lw); + plot(a_trapElecAngle_XA, r_trapPhaC_M1, color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + grid + title('Pure trapezoidal method [1]'); + xlabel('Electrical angle [deg]'); + + s4 = subplot(324); hold on + plot(a_sinElecAngle_XA, r_sinPhaA_M1, color(1), 'Linewidth', lw); + plot(a_sinElecAngle_XA, r_sinPhaB_M1, color(2), 'Linewidth', lw); + plot(a_sinElecAngle_XA, r_sinPhaC_M1, color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + grid + title('Sinusoidal method [2]'); + + s6 = subplot(326); hold on + plot(a_sinElecAngle_XA, r_sin3PhaA_M1, color(1), 'Linewidth', lw); + plot(a_sinElecAngle_XA, r_sin3PhaB_M1, color(2), 'Linewidth', lw); + plot(a_sinElecAngle_XA, r_sin3PhaC_M1, color(3), 'Linewidth', lw); + xticks(a_trapElecAngle_XA); + grid + title('Sinusoidal 3rd armonic [3]'); + xlabel('Electrical angle [deg]'); + linkaxes([s1 s2 s3 s4 s5 s6],'x'); + xlim([0 360]); +end diff --git a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.c b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.c index 9f96c3d..f8bb08c 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.c +++ b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.c @@ -7,9 +7,9 @@ * * Code generated for Simulink model 'BLDC_controller'. * - * Model version : 1.817 + * Model version : 1.877 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - * C/C++ source code generated on : Tue May 28 19:55:33 2019 + * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -85,49 +85,13 @@ preprocessor word size checks. #endif #endif -/* Block signals and states (auto storage) */ -DW rtDW; - -/* Previous zero-crossings (trigger) states */ -PrevZCX rtPrevZCX; - -/* External inputs (root inport signals with auto storage) */ -ExtU rtU; - -/* External outputs (root outports fed by signals with auto storage) */ -ExtY rtY; -static uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T - bpSpace, uint32_T maxIndex, uint32_T *fraction); -static int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, - const int16_T table[]); -static int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator); -static void F01_03_Direction_Detection(boolean_T rtu_Enable, uint8_T rtu_z_pos, - uint8_T rtu_z_posPrev, int8_T *rty_z_dir, int8_T *rty_z_dirPrev, - DW_F01_03_Direction_Detection *localDW); -static void Edge_counter_Reset(DW_Edge_counter *localDW); -static void Edge_counter_Disable(uint8_T *rty_cnt, DW_Edge_counter *localDW); -static void Edge_counter(boolean_T rtu_Enable, boolean_T rtu_b_edge, int8_T - rtu_z_dir, int8_T rtu_z_dirPrev, uint8_T *rty_cnt, DW_Edge_counter *localDW); -static void Motor_Speed_Calculation(boolean_T rtu_Trigger, int16_T rtu_z_counter, - int8_T rtu_z_dir, int32_T *rty_n_mot, DW_Motor_Speed_Calculation *localDW, - ZCE_Motor_Speed_Calculation *localZCE); -static void F03_01_Pure_Trapezoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Trap, int16_T *rty_r_phaB_Trap, int16_T *rty_r_phaC_Trap); -static void F03_02_Sinusoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Sin, int16_T *rty_r_phaB_Sin, int16_T *rty_r_phaC_Sin); -static void F03_02_Sinusoidal3rd_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Sin3, int16_T *rty_r_phaB_Sin3, int16_T *rty_r_phaC_Sin3); -static void F02_Electrical_Angle_Ca_Disable(int32_T *rty_a_elecAngleAdv, int32_T - *rty_a_elecAngle); -static void F02_Electrical_Angle_Calculatio(int32_T rtu_r_DC, uint8_T rtu_z_pos, - int8_T rtu_z_dir, int16_T rtu_z_counter, int16_T rtu_z_counterRaw, int32_T - *rty_a_elecAngleAdv, int32_T *rty_a_elecAngle); -static void falling_edge2(void); -static void rising_edge(void); -static void falling_edge2_b(void); -static void rising_edge_f(void); -static uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T - bpSpace, uint32_T maxIndex, uint32_T *fraction) +uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T bpSpace, + uint32_T maxIndex, uint32_T *fraction); +int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, const + int16_T table[]); +int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator); +uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T bpSpace, + uint32_T maxIndex, uint32_T *fraction) { uint8_T bpIndex; uint32_T uAdjust; @@ -160,8 +124,8 @@ static uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T return bpIndex; } -static int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, - const int16_T table[]) +int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, const + int16_T table[]) { uint32_T offset_0d; @@ -176,1128 +140,553 @@ static int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, * frac) >> 31) + table[offset_0d]); } -static int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator) +int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator) { return (((numerator < 0) != (denominator < 0)) && (numerator % denominator != 0) ? -1 : 0) + numerator / denominator; } -/* - * Output and update for enable system: - * '/F01_03_Direction_Detection' - * '/F01_03_Direction_Detection' - */ -static void F01_03_Direction_Detection(boolean_T rtu_Enable, uint8_T rtu_z_pos, - uint8_T rtu_z_posPrev, int8_T *rty_z_dir, int8_T *rty_z_dirPrev, - DW_F01_03_Direction_Detection *localDW) -{ - int8_T rtb_Sum2; - - /* Outputs for Enabled SubSystem: '/F01_03_Direction_Detection' incorporates: - * EnablePort: '/Enable' - */ - if (rtu_Enable) { - /* UnitDelay: '/UnitDelay1' */ - *rty_z_dirPrev = localDW->UnitDelay1_DSTATE; - - /* Sum: '/Sum2' incorporates: - * DataTypeConversion: '/Data Type Conversion1' - * DataTypeConversion: '/Data Type Conversion10' - */ - rtb_Sum2 = (int8_T)((int8_T)rtu_z_pos - (int8_T)rtu_z_posPrev); - - /* Switch: '/Switch2' incorporates: - * Constant: '/Constant20' - * Constant: '/Constant23' - * Constant: '/Constant24' - * Constant: '/Constant8' - * Logic: '/Logical Operator3' - * RelationalOperator: '/Relational Operator1' - * RelationalOperator: '/Relational Operator6' - */ - if ((rtb_Sum2 == 1) || (rtb_Sum2 == -5)) { - *rty_z_dir = 1; - } else { - *rty_z_dir = -1; - } - - /* End of Switch: '/Switch2' */ - - /* Update for UnitDelay: '/UnitDelay1' */ - localDW->UnitDelay1_DSTATE = *rty_z_dir; - } - - /* End of Outputs for SubSystem: '/F01_03_Direction_Detection' */ -} - -/* - * System reset for enable system: - * '/Edge_counter' - * '/Edge_counter' - */ -static void Edge_counter_Reset(DW_Edge_counter *localDW) -{ - /* InitializeConditions for UnitDelay: '/UnitDelay1' */ - localDW->UnitDelay1_DSTATE = 0U; -} - -/* - * Disable for enable system: - * '/Edge_counter' - * '/Edge_counter' - */ -static void Edge_counter_Disable(uint8_T *rty_cnt, DW_Edge_counter *localDW) -{ - /* Outputs for Enabled SubSystem: '/Edge_counter' incorporates: - * EnablePort: '/Enable' - */ - /* Disable for Outport: '/cnt' */ - *rty_cnt = 0U; - - /* End of Outputs for SubSystem: '/Edge_counter' */ - localDW->Edge_counter_MODE = false; -} - -/* - * Output and update for enable system: - * '/Edge_counter' - * '/Edge_counter' - */ -static void Edge_counter(boolean_T rtu_Enable, boolean_T rtu_b_edge, int8_T - rtu_z_dir, int8_T rtu_z_dirPrev, uint8_T *rty_cnt, DW_Edge_counter *localDW) -{ - boolean_T rtb_RelationalOperator1_i; - uint8_T rtb_RelationalOperator1_m1; - - /* Outputs for Enabled SubSystem: '/Edge_counter' incorporates: - * EnablePort: '/Enable' - */ - if (rtu_Enable) { - if (!localDW->Edge_counter_MODE) { - Edge_counter_Reset(localDW); - localDW->Edge_counter_MODE = true; - } - - /* RelationalOperator: '/Relational Operator1' */ - rtb_RelationalOperator1_i = (rtu_z_dir == rtu_z_dirPrev); - - /* Switch: '/Switch1' incorporates: - * Constant: '/Constant23' - * Logic: '/Logical Operator2' - * UnitDelay: '/UnitDelay1' - */ - if (!rtb_RelationalOperator1_i) { - rtb_RelationalOperator1_m1 = 0U; - } else { - rtb_RelationalOperator1_m1 = localDW->UnitDelay1_DSTATE; - } - - /* End of Switch: '/Switch1' */ - - /* Sum: '/Sum2' incorporates: - * Logic: '/Logical Operator1' - */ - *rty_cnt = (uint8_T)((uint32_T)(rtu_b_edge && rtb_RelationalOperator1_i) + - rtb_RelationalOperator1_m1); - - /* Update for UnitDelay: '/UnitDelay1' */ - localDW->UnitDelay1_DSTATE = *rty_cnt; - } else { - if (localDW->Edge_counter_MODE) { - Edge_counter_Disable(rty_cnt, localDW); - } - } - - /* End of Outputs for SubSystem: '/Edge_counter' */ -} - -/* - * Output and update for trigger system: - * '/Motor_Speed_Calculation' - * '/Motor_Speed_Calculation' - */ -static void Motor_Speed_Calculation(boolean_T rtu_Trigger, int16_T rtu_z_counter, - int8_T rtu_z_dir, int32_T *rty_n_mot, DW_Motor_Speed_Calculation *localDW, - ZCE_Motor_Speed_Calculation *localZCE) -{ - int32_T rtb_Sum2; - - /* Outputs for Triggered SubSystem: '/Motor_Speed_Calculation' incorporates: - * TriggerPort: '/Trigger' - */ - if (rtu_Trigger && (localZCE->Motor_Speed_Calculation_Trig_ZC != POS_ZCSIG)) { - /* Switch: '/Switch' incorporates: - * Constant: '/Constant1' - * Constant: '/cf_spdCoef' - * Constant: '/z_maxCntRst' - * Product: '/Divide4' - * RelationalOperator: '/Relational Operator1' - */ - if (rtu_z_counter >= rtP.z_maxCntRst) { - rtb_Sum2 = 0; - } else { - rtb_Sum2 = rtP.cf_speedCoef / rtu_z_counter; - } - - /* End of Switch: '/Switch' */ - - /* Product: '/Product2' */ - rtb_Sum2 *= rtu_z_dir; - - /* Product: '/Divide1' incorporates: - * Constant: '/Constant2' - * Sum: '/Sum2' - * UnitDelay: '/UnitDelay1' - * UnitDelay: '/UnitDelay5' - */ - *rty_n_mot = ((localDW->UnitDelay5_DSTATE + localDW->UnitDelay1_DSTATE) + - rtb_Sum2) / 3; - - /* Update for UnitDelay: '/UnitDelay5' incorporates: - * UnitDelay: '/UnitDelay1' - */ - localDW->UnitDelay5_DSTATE = localDW->UnitDelay1_DSTATE; - - /* Update for UnitDelay: '/UnitDelay1' */ - localDW->UnitDelay1_DSTATE = rtb_Sum2; - } - - localZCE->Motor_Speed_Calculation_Trig_ZC = rtu_Trigger; - - /* End of Outputs for SubSystem: '/Motor_Speed_Calculation' */ -} - -/* Output and update for atomic system: '/falling_edge2' */ -static void falling_edge2(void) -{ - /* Logic: '/Logical Operator' incorporates: - * Logic: '/Logical Operator1' - * UnitDelay: '/UnitDelay' - */ - rtDW.LogicalOperator = ((!rtDW.Logic[0]) && rtDW.UnitDelay_DSTATE_b); - - /* Update for UnitDelay: '/UnitDelay' */ - rtDW.UnitDelay_DSTATE_b = rtDW.Logic[0]; -} - -/* Output and update for atomic system: '/rising_edge' */ -static void rising_edge(void) -{ - /* Logic: '/Logical Operator' incorporates: - * Logic: '/Logical Operator1' - * UnitDelay: '/UnitDelay' - */ - rtDW.LogicalOperator_h = (rtDW.LogicalOperator5 && (!rtDW.UnitDelay_DSTATE_l)); - - /* Update for UnitDelay: '/UnitDelay' */ - rtDW.UnitDelay_DSTATE_l = rtDW.LogicalOperator5; -} - -/* - * Output and update for action system: - * '/F03_01_Pure_Trapezoidal_Method' - * '/F03_01_Pure_Trapezoidal_Method' - */ -static void F03_01_Pure_Trapezoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Trap, int16_T *rty_r_phaB_Trap, int16_T *rty_r_phaC_Trap) -{ - uint8_T rtb_a_trapElecAngle_XA_o1; - uint32_T rtb_a_trapElecAngle_XA_o2; - - /* PreLookup: '/a_trapElecAngle_XA' */ - rtb_a_trapElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 60U, 6U, &rtb_a_trapElecAngle_XA_o2); - - /* Interpolation_n-D: '/r_trapPhaA_M1' */ - *rty_r_phaA_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - rtb_a_trapElecAngle_XA_o2, rtConstP.pooled9); - - /* Interpolation_n-D: '/r_trapPhaB_M1' */ - *rty_r_phaB_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - rtb_a_trapElecAngle_XA_o2, rtConstP.pooled10); - - /* Interpolation_n-D: '/r_trapPhaC_M1' */ - *rty_r_phaC_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - rtb_a_trapElecAngle_XA_o2, rtConstP.pooled11); -} - -/* - * Output and update for action system: - * '/F03_02_Sinusoidal_Method' - * '/F03_02_Sinusoidal_Method' - */ -static void F03_02_Sinusoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Sin, int16_T *rty_r_phaB_Sin, int16_T *rty_r_phaC_Sin) -{ - uint8_T rtb_a_sinElecAngle_XA_o1; - uint32_T rtb_a_sinElecAngle_XA_o2; - - /* PreLookup: '/a_sinElecAngle_XA' */ - rtb_a_sinElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 10U, 36U, &rtb_a_sinElecAngle_XA_o2); - - /* Interpolation_n-D: '/r_sinPhaA_M1' */ - *rty_r_phaA_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled12); - - /* Interpolation_n-D: '/r_sinPhaB_M1' */ - *rty_r_phaB_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled13); - - /* Interpolation_n-D: '/r_sinPhaC_M1' */ - *rty_r_phaC_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled14); -} - -/* - * Output and update for action system: - * '/F03_02_Sinusoidal3rd_Method' - * '/F03_02_Sinusoidal3rd_Method' - */ -static void F03_02_Sinusoidal3rd_Method(int32_T rtu_a_elecAngleAdv, int16_T - *rty_r_phaA_Sin3, int16_T *rty_r_phaB_Sin3, int16_T *rty_r_phaC_Sin3) -{ - uint8_T rtb_a_sinElecAngle_XA_o1; - uint32_T rtb_a_sinElecAngle_XA_o2; - - /* PreLookup: '/a_sinElecAngle_XA' */ - rtb_a_sinElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 10U, 36U, &rtb_a_sinElecAngle_XA_o2); - - /* Interpolation_n-D: '/r_sin3PhaA_M1' */ - *rty_r_phaA_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled15); - - /* Interpolation_n-D: '/r_sin3PhaB_M1' */ - *rty_r_phaB_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled16); - - /* Interpolation_n-D: '/r_sin3PhaC_M1' */ - *rty_r_phaC_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - rtb_a_sinElecAngle_XA_o2, rtConstP.pooled17); -} - -/* - * Disable for action system: - * '/F02_Electrical_Angle_Calculation' - * '/F02_Electrical_Angle_Calculation' - */ -static void F02_Electrical_Angle_Ca_Disable(int32_T *rty_a_elecAngleAdv, int32_T - *rty_a_elecAngle) -{ - /* Disable for Outport: '/a_elecAngleAdv' */ - *rty_a_elecAngleAdv = 0; - - /* Disable for Outport: '/a_elecAngle' */ - *rty_a_elecAngle = 0; -} - -/* - * Output and update for action system: - * '/F02_Electrical_Angle_Calculation' - * '/F02_Electrical_Angle_Calculation' - */ -static void F02_Electrical_Angle_Calculatio(int32_T rtu_r_DC, uint8_T rtu_z_pos, - int8_T rtu_z_dir, int16_T rtu_z_counter, int16_T rtu_z_counterRaw, int32_T - *rty_a_elecAngleAdv, int32_T *rty_a_elecAngle) -{ - uint8_T rtb_Switch3; - int16_T rtb_a_phaAdv_M2; - uint32_T rtb_r_phaAdvDC_XA_o2; - int32_T rtu_r_DC_0; - - /* Switch: '/Switch3' incorporates: - * Constant: '/Constant16' - * RelationalOperator: '/Relational Operator7' - * Sum: '/Sum1' - */ - if (rtu_z_dir == 1) { - rtb_Switch3 = rtu_z_pos; - } else { - rtb_Switch3 = (uint8_T)(rtu_z_pos + 1U); - } - - /* End of Switch: '/Switch3' */ - - /* Sum: '/Sum2' incorporates: - * Constant: '/a_elecAngle1' - * Product: '/Divide4' - * Product: '/Divide5' - * Product: '/Product6' - */ - *rty_a_elecAngle = 60 * rtu_z_counterRaw / rtu_z_counter * rtu_z_dir + - rtb_Switch3 * 60; - - /* Switch: '/Switch_PhaAdv' incorporates: - * Constant: '/a_elecPeriod1' - * Math: '/Math Function' - */ - if (rtP.b_phaAdvEna) { - /* Abs: '/Abs2' */ - if (rtu_r_DC < 0) { - rtu_r_DC_0 = -rtu_r_DC; - } else { - rtu_r_DC_0 = rtu_r_DC; - } - - /* End of Abs: '/Abs2' */ - - /* PreLookup: '/r_phaAdvDC_XA' */ - rtb_Switch3 = plook_u8s32u32n31_evenc_s(rtu_r_DC_0, rtP.r_phaAdvDC_XA[0], - (uint32_T)rtP.r_phaAdvDC_XA[1] - rtP.r_phaAdvDC_XA[0], 10U, - &rtb_r_phaAdvDC_XA_o2); - - /* Interpolation_n-D: '/a_phaAdv_M2' */ - rtb_a_phaAdv_M2 = intrp1d_s16s32s32u8u32n31l_s(rtb_Switch3, - rtb_r_phaAdvDC_XA_o2, rtP.a_phaAdv_M1); - - /* Sum: '/Sum3' incorporates: - * Product: '/Product2' - */ - rtu_r_DC_0 = rtu_z_dir * rtb_a_phaAdv_M2 + *rty_a_elecAngle; - *rty_a_elecAngleAdv = rtu_r_DC_0 - div_nde_s32_floor(rtu_r_DC_0, 360) * 360; - } else { - *rty_a_elecAngleAdv = *rty_a_elecAngle; - } - - /* End of Switch: '/Switch_PhaAdv' */ -} - -/* Output and update for atomic system: '/falling_edge2' */ -static void falling_edge2_b(void) -{ - /* Logic: '/Logical Operator' incorporates: - * Logic: '/Logical Operator1' - * UnitDelay: '/UnitDelay' - */ - rtDW.LogicalOperator_h = ((!rtDW.Logic_j[0]) && rtDW.UnitDelay_DSTATE_i); - - /* Update for UnitDelay: '/UnitDelay' */ - rtDW.UnitDelay_DSTATE_i = rtDW.Logic_j[0]; -} - -/* Output and update for atomic system: '/rising_edge' */ -static void rising_edge_f(void) -{ - /* Logic: '/Logical Operator' incorporates: - * Logic: '/Logical Operator1' - * UnitDelay: '/UnitDelay' - */ - rtDW.LogicalOperator_h = (rtDW.LogicalOperator5 && (!rtDW.UnitDelay_DSTATE_k)); - - /* Update for UnitDelay: '/UnitDelay' */ - rtDW.UnitDelay_DSTATE_k = rtDW.LogicalOperator5; -} - /* Model step function */ -void BLDC_controller_step(void) +void BLDC_controller_step(RT_MODEL *const rtM) { + P *rtP = ((P *) rtM->defaultParam); + DW *rtDW = ((DW *) rtM->dwork); + ExtU *rtU = (ExtU *) rtM->inputs; + ExtY *rtY = (ExtY *) rtM->outputs; uint8_T rtb_Sum; - boolean_T rtb_LogicalOperator; - boolean_T rtb_LogicalOperator3; - int32_T rtb_Abs1; - int8_T rtPrevAction; + int32_T rtb_Sum2; + uint8_T rtb_BitwiseOperator; + int16_T rtb_Abs2; + int16_T rtb_Sum1_a; + int32_T rtb_Abs5; int8_T rtAction; - uint8_T rtb_Sum_a; - int16_T rtb_Switch; - int16_T rtb_Switch_b; - int16_T rtb_Sum1; - int16_T rtb_Sum1_c; + int8_T rtb_Sum2_h; + uint32_T rtb_r_phaAdvDC_XA_o2; int32_T rtb_Switch1_idx_0; int32_T rtb_Switch1_idx_1; - uint8_T tmp; /* Outputs for Atomic SubSystem: '/BLDC_controller' */ - /* Sum: '/Sum' incorporates: - * Gain: '/g_Ha' - * Gain: '/g_Hb' - * Inport: '/b_hallALeft ' - * Inport: '/b_hallBLeft' - * Inport: '/b_hallCLeft' + /* Sum: '/Sum' incorporates: + * Gain: '/g_Ha' + * Gain: '/g_Hb' + * Inport: '/b_hallA ' + * Inport: '/b_hallB' + * Inport: '/b_hallC' */ - rtb_Sum = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU.b_hallALeft << - 2) + (uint8_T)(rtU.b_hallBLeft << 1)) + rtU.b_hallCLeft); + rtb_Sum = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU->b_hallA << 2) + + (uint8_T)(rtU->b_hallB << 1)) + rtU->b_hallC); - /* Logic: '/Logical Operator' incorporates: - * Inport: '/b_hallALeft ' - * Inport: '/b_hallBLeft' - * Inport: '/b_hallCLeft' - * UnitDelay: '/UnitDelay' - * UnitDelay: '/UnitDelay1' - * UnitDelay: '/UnitDelay2' + /* S-Function (sfix_bitop): '/Bitwise Operator' incorporates: + * Inport: '/b_hallA ' + * Inport: '/b_hallB' + * Inport: '/b_hallC' + * UnitDelay: '/UnitDelay' + * UnitDelay: '/UnitDelay1' + * UnitDelay: '/UnitDelay2' */ - rtb_LogicalOperator = (boolean_T)((rtU.b_hallALeft != 0) ^ (rtU.b_hallBLeft != - 0) ^ (rtU.b_hallCLeft != 0) ^ (rtDW.UnitDelay_DSTATE != 0) ^ - (rtDW.UnitDelay1_DSTATE_p != 0)) ^ (rtDW.UnitDelay2_DSTATE != 0); + rtb_BitwiseOperator = (uint8_T)(rtU->b_hallA ^ rtU->b_hallB ^ rtU->b_hallC ^ + rtDW->UnitDelay_DSTATE ^ rtDW->UnitDelay1_DSTATE_i ^ + rtDW->UnitDelay2_DSTATE_h); - /* Outputs for Enabled SubSystem: '/F01_03_Direction_Detection' */ - - /* Selector: '/Selector' incorporates: - * Constant: '/vec_hallToPos' - * UnitDelay: '/UnitDelay1' + /* If: '/If1' incorporates: + * Constant: '/Constant6' + * Constant: '/Constant1' + * Constant: '/Constant23' + * If: '/If2' + * Inport: '/z_counterRawPrev' + * RelationalOperator: '/Relational Operator1' + * Sum: '/Sum1' + * Switch: '/Switch1' + * Switch: '/Switch2' + * UnitDelay: '/UnitDelay1' + * UnitDelay: '/UnitDelay1' */ - F01_03_Direction_Detection(rtb_LogicalOperator, rtConstP.pooled26[rtb_Sum], - rtDW.UnitDelay1_DSTATE_g, &rtDW.Switch2_e, &rtDW.UnitDelay1_k, - &rtDW.F01_03_Direction_Detection_o); - - /* End of Outputs for SubSystem: '/F01_03_Direction_Detection' */ - - /* Logic: '/Logical Operator3' incorporates: - * Constant: '/z_maxCntRst' - * RelationalOperator: '/Relational Operator1' - * UnitDelay: '/z_counterRawPrev' - */ - rtb_LogicalOperator3 = (rtb_LogicalOperator || (rtDW.z_counterRawPrev_DSTATE > - rtP.z_maxCntRst)); - - /* Outputs for Enabled SubSystem: '/Edge_counter' */ - - /* Logic: '/Logical Operator2' incorporates: - * UnitDelay: '/UnitDelay8' - */ - Edge_counter(!rtDW.UnitDelay8_DSTATE, rtb_LogicalOperator, rtDW.Switch2_e, - rtDW.UnitDelay1_k, &rtDW.Sum2_l, &rtDW.Edge_counter_f); - - /* End of Outputs for SubSystem: '/Edge_counter' */ - - /* Logic: '/Logical Operator5' incorporates: - * Constant: '/z_maxCntRst2' - * RelationalOperator: '/Relational Operator3' - * RelationalOperator: '/Relational Operator6' - * UnitDelay: '/z_counterRawPrev' - */ - rtDW.LogicalOperator5 = ((rtDW.Switch2_e != rtDW.UnitDelay1_k) || - (rtDW.z_counterRawPrev_DSTATE > rtP.z_maxCntRst)); - - /* Outputs for Atomic SubSystem: '/rising_edge' */ - rising_edge(); - - /* End of Outputs for SubSystem: '/rising_edge' */ - - /* CombinatorialLogic: '/Logic' incorporates: - * Constant: '/z_nrEdgeSpdAcv' - * Memory: '/Memory' - * RelationalOperator: '/Relational Operator5' - */ - rtb_Switch1_idx_0 = (int32_T)(((((uint32_T)(rtDW.Sum2_l >= rtP.z_nrEdgeSpdAcv) - << 1) + rtDW.LogicalOperator_h) << 1) + rtDW.Memory_PreviousInput); - rtDW.Logic[0U] = rtConstP.pooled30[(uint32_T)rtb_Switch1_idx_0]; - rtDW.Logic[1U] = rtConstP.pooled30[rtb_Switch1_idx_0 + 8U]; - - /* Outputs for Atomic SubSystem: '/falling_edge2' */ - falling_edge2(); - - /* End of Outputs for SubSystem: '/falling_edge2' */ - - /* Switch: '/Switch' incorporates: - * Logic: '/Logical Operator1' - * Switch: '/Switch1' - * UnitDelay: '/z_counter2' - * UnitDelay: '/z_counterRawPrev' - */ - if (rtb_LogicalOperator3 && rtDW.Logic[0]) { - rtb_Switch = rtDW.z_counterRawPrev_DSTATE; - } else if (rtDW.LogicalOperator) { - /* Switch: '/Switch1' incorporates: - * Constant: '/z_maxCntRst1' + if (rtb_BitwiseOperator != 0) { + /* Outputs for IfAction SubSystem: '/F01_03_Direction_Detection' incorporates: + * ActionPort: '/Action Port' */ - rtb_Switch = rtP.z_maxCntRst; + /* UnitDelay: '/UnitDelay1' */ + rtDW->UnitDelay1 = rtDW->Switch2; + + /* Sum: '/Sum2' incorporates: + * Constant: '/vec_hallToPos' + * Selector: '/Selector' + * UnitDelay: '/UnitDelay2' + */ + rtb_Sum2_h = (int8_T)(rtConstP.vec_hallToPos_Value[rtb_Sum] - + rtDW->UnitDelay2_DSTATE_i); + + /* Switch: '/Switch2' incorporates: + * Constant: '/Constant20' + * Constant: '/Constant23' + * Constant: '/Constant24' + * Constant: '/Constant8' + * Logic: '/Logical Operator3' + * RelationalOperator: '/Relational Operator1' + * RelationalOperator: '/Relational Operator6' + */ + if ((rtb_Sum2_h == 1) || (rtb_Sum2_h == -5)) { + rtDW->Switch2 = 1; + } else { + rtDW->Switch2 = -1; + } + + /* End of Switch: '/Switch2' */ + + /* Update for UnitDelay: '/UnitDelay2' incorporates: + * Constant: '/vec_hallToPos' + * Selector: '/Selector' + */ + rtDW->UnitDelay2_DSTATE_i = rtConstP.vec_hallToPos_Value[rtb_Sum]; + + /* End of Outputs for SubSystem: '/F01_03_Direction_Detection' */ + rtb_Abs2 = 1; + + /* Outputs for IfAction SubSystem: '/Counter_Hold_and_Error_Calculation' incorporates: + * ActionPort: '/Action Port' + */ + rtDW->z_counterRawPrev = rtDW->UnitDelay1_DSTATE_c; + + /* Sum: '/Sum4' incorporates: + * Constant: '/Constant6' + * Constant: '/Constant23' + * Inport: '/z_counterRawPrev' + * Sum: '/Sum1' + * UnitDelay: '/UnitDelay1' + * UnitDelay: '/z_counter2' + */ + rtDW->Sum4 = (int16_T)(rtDW->z_counterRawPrev - rtDW->z_counter2_DSTATE); + + /* Update for UnitDelay: '/z_counter2' */ + rtDW->z_counter2_DSTATE = rtDW->z_counterRawPrev; + + /* End of Outputs for SubSystem: '/Counter_Hold_and_Error_Calculation' */ } else { - rtb_Switch = rtDW.z_counter2_DSTATE; + if (rtDW->UnitDelay1_DSTATE < 1500) { + /* Switch: '/Switch2' incorporates: + * UnitDelay: '/UnitDelay1' + */ + rtb_Abs2 = rtDW->UnitDelay1_DSTATE; + } else { + /* Switch: '/Switch2' incorporates: + * Constant: '/Constant1' + */ + rtb_Abs2 = 1500; + } + + rtb_Abs2++; } - /* End of Switch: '/Switch' */ + /* End of If: '/If1' */ - /* Outputs for Triggered SubSystem: '/Motor_Speed_Calculation' */ + /* Sum: '/Sum1' */ + rtb_Sum1_a = rtb_Abs2; - /* Outport: '/n_motLeft' */ - Motor_Speed_Calculation(rtb_LogicalOperator3, rtb_Switch, rtDW.Switch2_e, - &rtY.n_motLeft, &rtDW.Motor_Speed_Calculation_m, - &rtPrevZCX.Motor_Speed_Calculation_m); - - /* End of Outputs for SubSystem: '/Motor_Speed_Calculation' */ - - /* Abs: '/Abs5' incorporates: - * Outport: '/n_motLeft' + /* Switch: '/Switch1' incorporates: + * Constant: '/Constant1' + * Constant: '/cf_spdCoef' + * Constant: '/z_maxCntRst' + * Logic: '/Logical Operator1' + * Product: '/Divide4' + * RelationalOperator: '/Relational Operator2' + * RelationalOperator: '/Relational Operator5' + * Sum: '/Sum1' */ - if (rtY.n_motLeft < 0) { - rtb_Abs1 = -rtY.n_motLeft; + if ((rtb_Abs2 > 1500) || (rtDW->Switch2 != rtDW->UnitDelay1)) { + rtb_Sum2 = 0; } else { - rtb_Abs1 = rtY.n_motLeft; + rtb_Sum2 = rtP->cf_speedCoef * rtDW->Switch2 / rtDW->z_counterRawPrev; } - /* End of Abs: '/Abs5' */ + /* End of Switch: '/Switch1' */ - /* Relay: '/Relay' */ - if (rtb_Abs1 >= rtP.n_commDeacvHi) { - rtDW.Relay_Mode = true; + /* Product: '/Divide2' incorporates: + * Constant: '/Constant2' + * Constant: '/Constant3' + * Constant: '/cf_speedFilt' + * Product: '/Divide1' + * Product: '/Divide3' + * Sum: '/Sum1' + * Sum: '/Sum2' + * UnitDelay: '/UnitDelay2' + */ + rtb_Sum2 = ((100 - rtP->cf_speedFilt) * rtDW->UnitDelay2_DSTATE + rtb_Sum2 * + rtP->cf_speedFilt) / 100; + + /* Abs: '/Abs5' */ + if (rtb_Sum2 < 0) { + rtb_Abs5 = -rtb_Sum2; } else { - if (rtb_Abs1 <= rtP.n_commAcvLo) { - rtDW.Relay_Mode = false; + rtb_Abs5 = rtb_Sum2; + } + + /* End of Abs: '/Abs5' */ + + /* Relay: '/n_commDeacv' */ + if (rtb_Abs5 >= rtP->n_commDeacvHi) { + rtDW->n_commDeacv_Mode = true; + } else { + if (rtb_Abs5 <= rtP->n_commAcvLo) { + rtDW->n_commDeacv_Mode = false; } } - /* Switch: '/Switch1' incorporates: - * Constant: '/Constant23' - * UnitDelay: '/UnitDelay1' - */ - if (rtb_LogicalOperator3) { - rtb_Sum1_c = 0; + /* Abs: '/Abs2' */ + if (rtDW->Sum4 < 0) { + rtb_Abs2 = (int16_T)-rtDW->Sum4; } else { - rtb_Sum1_c = rtDW.UnitDelay1_DSTATE; + rtb_Abs2 = rtDW->Sum4; } - /* End of Switch: '/Switch1' */ + /* End of Abs: '/Abs2' */ - /* Sum: '/Sum1' */ - rtb_Sum1 = (int16_T)(1 + rtb_Sum1_c); + /* Relay: '/dz_counter' */ + if (rtb_Abs2 >= rtP->dz_counterHi) { + rtDW->dz_counter_Mode = true; + } else { + if (rtb_Abs2 <= rtP->dz_counterLo) { + rtDW->dz_counter_Mode = false; + } + } /* If: '/If1' incorporates: - * Constant: '/z_ctrlTypSel1' - * Constant: '/vec_hallToPos' - * Inport: '/r_DCLeft' - * Outport: '/a_elecAngleLeft' - * Selector: '/Selector' + * Constant: '/z_ctrlTypSel1' */ - rtPrevAction = rtDW.If1_ActiveSubsystem; + rtb_Sum2_h = rtDW->If1_ActiveSubsystem; rtAction = -1; - if (rtP.z_ctrlTypSel != 0) { + if (rtP->z_ctrlTypSel != 0) { rtAction = 0; } - rtDW.If1_ActiveSubsystem = rtAction; - if ((rtPrevAction != rtAction) && (rtPrevAction == 0)) { - F02_Electrical_Angle_Ca_Disable(&rtDW.Switch_PhaAdv_a, &rtY.a_elecAngleLeft); + rtDW->If1_ActiveSubsystem = rtAction; + if ((rtb_Sum2_h != rtAction) && (rtb_Sum2_h == 0)) { + /* Disable for Outport: '/a_elecAngleAdv' */ + rtDW->Switch_PhaAdv = 0; + + /* Disable for Outport: '/a_elecAngle' incorporates: + * Outport: '/a_elecAngle' + */ + rtY->a_elecAngle = 0; } if (rtAction == 0) { /* Outputs for IfAction SubSystem: '/F02_Electrical_Angle_Calculation' incorporates: - * ActionPort: '/Action Port' + * ActionPort: '/Action Port' */ - F02_Electrical_Angle_Calculatio(rtU.r_DCLeft, rtConstP.pooled26[rtb_Sum], - rtDW.Switch2_e, rtb_Switch, rtb_Sum1, &rtDW.Switch_PhaAdv_a, - &rtY.a_elecAngleLeft); + /* Switch: '/Switch3' incorporates: + * Constant: '/vec_hallToPos' + * Constant: '/Constant16' + * Gain: '/g_Ha' + * Gain: '/g_Hb' + * Inport: '/b_hallA ' + * Inport: '/b_hallB' + * Inport: '/b_hallC' + * RelationalOperator: '/Relational Operator7' + * Selector: '/Selector' + * Sum: '/Sum' + * Sum: '/Sum1' + */ + if (rtDW->Switch2 == 1) { + rtb_Sum2_h = rtConstP.vec_hallToPos_Value[rtb_Sum]; + } else { + rtb_Sum2_h = (int8_T)(rtConstP.vec_hallToPos_Value[(uint8_T)((uint32_T) + (uint8_T)((uint32_T)(uint8_T)(rtU->b_hallA << 2) + (uint8_T) + (rtU->b_hallB << 1)) + rtU->b_hallC)] + 1); + } + /* End of Switch: '/Switch3' */ + + /* Outport: '/a_elecAngle' incorporates: + * Constant: '/a_elecAngle1' + * Product: '/Divide4' + * Product: '/Divide5' + * Product: '/Product6' + * Sum: '/Sum2' + */ + rtY->a_elecAngle = 60 * rtb_Sum1_a / rtDW->z_counterRawPrev * rtDW->Switch2 + + rtb_Sum2_h * 60; + + /* Switch: '/Switch_PhaAdv' incorporates: + * Constant: '/a_elecPeriod1' + * Outport: '/a_elecAngle' + */ + if (rtP->b_phaAdvEna) { + /* Abs: '/Abs2' incorporates: + * Inport: '/r_DC' + */ + if (rtU->r_DC < 0) { + rtb_Switch1_idx_0 = -rtU->r_DC; + } else { + rtb_Switch1_idx_0 = rtU->r_DC; + } + + /* End of Abs: '/Abs2' */ + + /* PreLookup: '/r_phaAdvDC_XA' */ + rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtb_Switch1_idx_0, + rtP->r_phaAdvDC_XA[0], (uint32_T)rtP->r_phaAdvDC_XA[1] - + rtP->r_phaAdvDC_XA[0], 10U, &rtb_r_phaAdvDC_XA_o2); + + /* Interpolation_n-D: '/a_phaAdv_M2' */ + rtb_Abs2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtP->a_phaAdv_M1); + + /* Sum: '/Sum3' incorporates: + * Outport: '/a_elecAngle' + * Product: '/Product2' + */ + rtb_Switch1_idx_0 = (int16_T)(rtb_Abs2 * rtDW->Switch2) + rtY->a_elecAngle; + + /* Math: '/Math Function' */ + rtDW->Switch_PhaAdv = rtb_Switch1_idx_0 - div_nde_s32_floor + (rtb_Switch1_idx_0, 360) * 360; + } else { + rtDW->Switch_PhaAdv = rtY->a_elecAngle; + } + + /* End of Switch: '/Switch_PhaAdv' */ /* End of Outputs for SubSystem: '/F02_Electrical_Angle_Calculation' */ } /* End of If: '/If1' */ - /* SwitchCase: '/Switch Case' incorporates: - * Constant: '/z_ctrlTypSel1' + /* SwitchCase: '/Switch Case' incorporates: + * Constant: '/z_ctrlTypSel1' */ - switch (rtP.z_ctrlTypSel) { + switch (rtP->z_ctrlTypSel) { case 1: - /* Outputs for IfAction SubSystem: '/F03_01_Pure_Trapezoidal_Method' incorporates: - * ActionPort: '/Action Port' + /* Outputs for IfAction SubSystem: '/F03_01_Pure_Trapezoidal_Method' incorporates: + * ActionPort: '/Action Port' */ - F03_01_Pure_Trapezoidal_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, - &rtDW.Merge1, &rtDW.Merge2); + /* PreLookup: '/a_trapElecAngle_XA' */ + rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 60U, + 6U, &rtb_r_phaAdvDC_XA_o2); - /* End of Outputs for SubSystem: '/F03_01_Pure_Trapezoidal_Method' */ + /* Interpolation_n-D: '/r_trapPhaA_M1' */ + rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaA_M1_Table); + + /* Interpolation_n-D: '/r_trapPhaB_M1' */ + rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaB_M1_Table); + + /* Interpolation_n-D: '/r_trapPhaC_M1' */ + rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaC_M1_Table); + + /* End of Outputs for SubSystem: '/F03_01_Pure_Trapezoidal_Method' */ break; case 2: - /* Outputs for IfAction SubSystem: '/F03_02_Sinusoidal_Method' incorporates: - * ActionPort: '/Action Port' + /* Outputs for IfAction SubSystem: '/F03_02_Sinusoidal_Method' incorporates: + * ActionPort: '/Action Port' */ - F03_02_Sinusoidal_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, &rtDW.Merge1, - &rtDW.Merge2); + /* PreLookup: '/a_sinElecAngle_XA' */ + rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 10U, + 36U, &rtb_r_phaAdvDC_XA_o2); - /* End of Outputs for SubSystem: '/F03_02_Sinusoidal_Method' */ + /* Interpolation_n-D: '/r_sinPhaA_M1' */ + rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaA_M1_Table); + + /* Interpolation_n-D: '/r_sinPhaB_M1' */ + rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaB_M1_Table); + + /* Interpolation_n-D: '/r_sinPhaC_M1' */ + rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaC_M1_Table); + + /* End of Outputs for SubSystem: '/F03_02_Sinusoidal_Method' */ break; case 3: - /* Outputs for IfAction SubSystem: '/F03_02_Sinusoidal3rd_Method' incorporates: - * ActionPort: '/Action Port' + /* Outputs for IfAction SubSystem: '/F03_03_Sinusoidal3rd_Method' incorporates: + * ActionPort: '/Action Port' */ - F03_02_Sinusoidal3rd_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, &rtDW.Merge1, - &rtDW.Merge2); + /* PreLookup: '/a_sinElecAngle_XA' */ + rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 10U, + 36U, &rtb_r_phaAdvDC_XA_o2); - /* End of Outputs for SubSystem: '/F03_02_Sinusoidal3rd_Method' */ + /* Interpolation_n-D: '/r_sin3PhaA_M1' */ + rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaA_M1_Table); + + /* Interpolation_n-D: '/r_sin3PhaB_M1' */ + rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaB_M1_Table); + + /* Interpolation_n-D: '/r_sin3PhaC_M1' */ + rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaC_M1_Table); + + /* End of Outputs for SubSystem: '/F03_03_Sinusoidal3rd_Method' */ break; } - /* End of SwitchCase: '/Switch Case' */ + /* End of SwitchCase: '/Switch Case' */ - /* Abs: '/Abs1' incorporates: - * Inport: '/r_DCLeft' + /* Abs: '/Abs1' incorporates: + * Inport: '/r_DC' + * Signum: '/Sign1' */ - if (rtU.r_DCLeft < 0) { - rtb_Switch1_idx_0 = -rtU.r_DCLeft; + if (rtU->r_DC < 0) { + rtb_Switch1_idx_0 = -rtU->r_DC; + rtb_Switch1_idx_1 = -1; } else { - rtb_Switch1_idx_0 = rtU.r_DCLeft; + rtb_Switch1_idx_0 = rtU->r_DC; + rtb_Switch1_idx_1 = (rtU->r_DC > 0); } - /* End of Abs: '/Abs1' */ + /* End of Abs: '/Abs1' */ - /* Switch: '/Switch1' incorporates: - * Constant: '/z_ctrlTypSel1' - * Constant: '/CTRL_COMM' - * Constant: '/r_commDCDeacv' - * Constant: '/vec_hallToPos' - * Inport: '/r_DCLeft' - * Logic: '/Logical Operator3' - * LookupNDDirect: '/z_commutMap_M1' - * Product: '/Divide2' - * Product: '/Divide4' - * RelationalOperator: '/Relational Operator1' - * RelationalOperator: '/Relational Operator2' - * Relay: '/Relay' - * Selector: '/Selector' + /* Signum: '/Sign' */ + if (rtDW->Switch2 < 0) { + rtb_Sum2_h = -1; + } else { + rtb_Sum2_h = (int8_T)(rtDW->Switch2 > 0); + } + + /* End of Signum: '/Sign' */ + + /* Switch: '/Switch1' incorporates: + * Constant: '/vec_hallToPos' + * Constant: '/CTRL_COMM' + * Constant: '/r_commDCDeacv' + * Constant: '/z_ctrlTypSel1' + * Inport: '/r_DC' + * Logic: '/Logical Operator2' + * LookupNDDirect: '/z_commutMap_M1' + * Product: '/Divide2' + * Product: '/Divide4' + * RelationalOperator: '/Relational Operator1' + * RelationalOperator: '/Relational Operator3' + * RelationalOperator: '/Relational Operator4' + * Relay: '/dz_counter' + * Relay: '/n_commDeacv' + * Selector: '/Selector' * - * About '/z_commutMap_M1': + * About '/z_commutMap_M1': * 2-dimensional Direct Look-Up returning a Column */ - if (rtDW.Relay_Mode && (rtb_Switch1_idx_0 > rtP.r_commDCDeacv) && - (rtP.z_ctrlTypSel != 0)) { - rtb_Switch1_idx_0 = rtU.r_DCLeft * rtDW.Merge; - rtb_Switch1_idx_1 = rtU.r_DCLeft * rtDW.Merge1; - rtb_Abs1 = rtU.r_DCLeft * rtDW.Merge2; + if ((rtP->z_ctrlTypSel != 0) && (rtb_Switch1_idx_0 > rtP->r_commDCDeacv) && + (rtb_Sum2_h == rtb_Switch1_idx_1) && rtDW->n_commDeacv_Mode && + (!rtDW->dz_counter_Mode)) { + rtb_Switch1_idx_0 = rtU->r_DC * rtDW->Merge; + rtb_Switch1_idx_1 = rtU->r_DC * rtDW->Merge1; + rtb_Abs5 = rtU->r_DC * rtDW->Merge2; } else { - if (rtConstP.pooled26[rtb_Sum] < 5) { - /* LookupNDDirect: '/z_commutMap_M1' incorporates: - * Constant: '/vec_hallToPos' - * Selector: '/Selector' + if (rtConstP.vec_hallToPos_Value[rtb_Sum] > 5) { + /* LookupNDDirect: '/z_commutMap_M1' * - * About '/z_commutMap_M1': + * About '/z_commutMap_M1': * 2-dimensional Direct Look-Up returning a Column */ - tmp = rtConstP.pooled26[rtb_Sum]; + rtb_Sum2_h = 5; + } else if (rtConstP.vec_hallToPos_Value[rtb_Sum] < 0) { + /* LookupNDDirect: '/z_commutMap_M1' + * + * About '/z_commutMap_M1': + * 2-dimensional Direct Look-Up returning a Column + */ + rtb_Sum2_h = 0; } else { - /* LookupNDDirect: '/z_commutMap_M1' + /* LookupNDDirect: '/z_commutMap_M1' incorporates: + * Constant: '/vec_hallToPos' + * Selector: '/Selector' * - * About '/z_commutMap_M1': + * About '/z_commutMap_M1': * 2-dimensional Direct Look-Up returning a Column */ - tmp = 5U; + rtb_Sum2_h = rtConstP.vec_hallToPos_Value[rtb_Sum]; } - /* LookupNDDirect: '/z_commutMap_M1' + /* LookupNDDirect: '/z_commutMap_M1' incorporates: + * Constant: '/vec_hallToPos' + * Selector: '/Selector' * - * About '/z_commutMap_M1': + * About '/z_commutMap_M1': * 2-dimensional Direct Look-Up returning a Column */ - rtb_Abs1 = tmp * 3; - rtb_Switch1_idx_0 = rtU.r_DCLeft * rtConstP.pooled18[rtb_Abs1]; - rtb_Switch1_idx_1 = rtConstP.pooled18[1 + rtb_Abs1] * rtU.r_DCLeft; - rtb_Abs1 = rtConstP.pooled18[2 + rtb_Abs1] * rtU.r_DCLeft; + rtb_Abs5 = rtb_Sum2_h * 3; + rtb_Switch1_idx_0 = rtU->r_DC * rtConstP.z_commutMap_M1_table[rtb_Abs5]; + rtb_Switch1_idx_1 = rtConstP.z_commutMap_M1_table[1 + rtb_Abs5] * rtU->r_DC; + rtb_Abs5 = rtConstP.z_commutMap_M1_table[2 + rtb_Abs5] * rtU->r_DC; } - /* End of Switch: '/Switch1' */ + /* End of Switch: '/Switch1' */ - /* Outport: '/DC_phaALeft' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' + /* Outport: '/DC_phaA' incorporates: + * Constant: '/Constant1' + * Product: '/Divide1' */ - rtY.DC_phaALeft = rtb_Switch1_idx_0 / 1000; + rtY->DC_phaA = rtb_Switch1_idx_0 / 1000; - /* Outport: '/DC_phaBLeft' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' + /* Outport: '/DC_phaB' incorporates: + * Constant: '/Constant1' + * Product: '/Divide1' */ - rtY.DC_phaBLeft = rtb_Switch1_idx_1 / 1000; + rtY->DC_phaB = rtb_Switch1_idx_1 / 1000; - /* Outport: '/DC_phaCLeft' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' + /* Update for UnitDelay: '/UnitDelay' incorporates: + * Inport: '/b_hallA ' */ - rtY.DC_phaCLeft = rtb_Abs1 / 1000; + rtDW->UnitDelay_DSTATE = rtU->b_hallA; - /* Sum: '/Sum' incorporates: - * Gain: '/g_Ha' - * Gain: '/g_Hb' - * Inport: '/b_hallARight' - * Inport: '/b_hallBRight' - * Inport: '/b_hallCRight' + /* Update for UnitDelay: '/UnitDelay1' incorporates: + * Inport: '/b_hallB' */ - rtb_Sum_a = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU.b_hallARight - << 2) + (uint8_T)(rtU.b_hallBRight << 1)) + rtU.b_hallCRight); + rtDW->UnitDelay1_DSTATE_i = rtU->b_hallB; - /* Logic: '/Logical Operator' incorporates: - * Inport: '/b_hallARight' - * Inport: '/b_hallBRight' - * Inport: '/b_hallCRight' - * UnitDelay: '/UnitDelay' - * UnitDelay: '/UnitDelay1' - * UnitDelay: '/UnitDelay2' + /* Update for UnitDelay: '/UnitDelay2' incorporates: + * Inport: '/b_hallC' */ - rtb_LogicalOperator = (boolean_T)((rtU.b_hallARight != 0) ^ (rtU.b_hallBRight - != 0) ^ (rtU.b_hallCRight != 0) ^ (rtDW.UnitDelay_DSTATE_j != 0) ^ - (rtDW.UnitDelay1_DSTATE_f != 0)) ^ (rtDW.UnitDelay2_DSTATE_b != 0); + rtDW->UnitDelay2_DSTATE_h = rtU->b_hallC; - /* Outputs for Enabled SubSystem: '/F01_03_Direction_Detection' */ + /* Update for UnitDelay: '/UnitDelay1' */ + rtDW->UnitDelay1_DSTATE = rtb_Sum1_a; - /* Selector: '/Selector' incorporates: - * Constant: '/vec_hallToPos' - * UnitDelay: '/UnitDelay1' + /* Update for UnitDelay: '/UnitDelay1' */ + rtDW->UnitDelay1_DSTATE_c = rtb_Sum1_a; + + /* Update for UnitDelay: '/UnitDelay2' */ + rtDW->UnitDelay2_DSTATE = rtb_Sum2; + + /* Outport: '/DC_phaC' incorporates: + * Constant: '/Constant1' + * Product: '/Divide1' */ - F01_03_Direction_Detection(rtb_LogicalOperator, rtConstP.pooled26[rtb_Sum_a], - rtDW.UnitDelay1_DSTATE_j, &rtDW.Switch2, &rtDW.UnitDelay1, - &rtDW.F01_03_Direction_Detection_j); - - /* End of Outputs for SubSystem: '/F01_03_Direction_Detection' */ - - /* Logic: '/Logical Operator3' incorporates: - * Constant: '/z_maxCntRst' - * RelationalOperator: '/Relational Operator1' - * UnitDelay: '/z_counterRawPrev' - */ - rtb_LogicalOperator3 = (rtb_LogicalOperator || (rtDW.z_counterRawPrev_DSTATE_p - > rtP.z_maxCntRst)); - - /* Outputs for Enabled SubSystem: '/Edge_counter' */ - - /* Logic: '/Logical Operator2' incorporates: - * UnitDelay: '/UnitDelay8' - */ - Edge_counter(!rtDW.UnitDelay8_DSTATE_p, rtb_LogicalOperator, rtDW.Switch2, - rtDW.UnitDelay1, &rtDW.Sum2_i, &rtDW.Edge_counter_l); - - /* End of Outputs for SubSystem: '/Edge_counter' */ - - /* Logic: '/Logical Operator5' incorporates: - * Constant: '/z_maxCntRst2' - * RelationalOperator: '/Relational Operator3' - * RelationalOperator: '/Relational Operator6' - * UnitDelay: '/z_counterRawPrev' - */ - rtDW.LogicalOperator5 = ((rtDW.Switch2 != rtDW.UnitDelay1) || - (rtDW.z_counterRawPrev_DSTATE_p > rtP.z_maxCntRst)); - - /* Outputs for Atomic SubSystem: '/rising_edge' */ - rising_edge_f(); - - /* End of Outputs for SubSystem: '/rising_edge' */ - - /* CombinatorialLogic: '/Logic' incorporates: - * Constant: '/z_nrEdgeSpdAcv' - * Memory: '/Memory' - * RelationalOperator: '/Relational Operator5' - */ - rtb_Switch1_idx_0 = (int32_T)(((((uint32_T)(rtDW.Sum2_i >= rtP.z_nrEdgeSpdAcv) - << 1) + rtDW.LogicalOperator_h) << 1) + rtDW.Memory_PreviousInput_i); - rtDW.Logic_j[0U] = rtConstP.pooled30[(uint32_T)rtb_Switch1_idx_0]; - rtDW.Logic_j[1U] = rtConstP.pooled30[rtb_Switch1_idx_0 + 8U]; - - /* Outputs for Atomic SubSystem: '/falling_edge2' */ - falling_edge2_b(); - - /* End of Outputs for SubSystem: '/falling_edge2' */ - - /* Switch: '/Switch' incorporates: - * Logic: '/Logical Operator1' - * Switch: '/Switch1' - * UnitDelay: '/z_counter2' - * UnitDelay: '/z_counterRawPrev' - */ - if (rtb_LogicalOperator3 && rtDW.Logic_j[0]) { - rtb_Switch_b = rtDW.z_counterRawPrev_DSTATE_p; - } else if (rtDW.LogicalOperator_h) { - /* Switch: '/Switch1' incorporates: - * Constant: '/z_maxCntRst1' - */ - rtb_Switch_b = rtP.z_maxCntRst; - } else { - rtb_Switch_b = rtDW.z_counter2_DSTATE_h; - } - - /* End of Switch: '/Switch' */ - - /* Outputs for Triggered SubSystem: '/Motor_Speed_Calculation' */ - - /* Outport: '/n_motRight' */ - Motor_Speed_Calculation(rtb_LogicalOperator3, rtb_Switch_b, rtDW.Switch2, - &rtY.n_motRight, &rtDW.Motor_Speed_Calculation_k, - &rtPrevZCX.Motor_Speed_Calculation_k); - - /* End of Outputs for SubSystem: '/Motor_Speed_Calculation' */ - - /* Abs: '/Abs5' incorporates: - * Outport: '/n_motRight' - */ - if (rtY.n_motRight < 0) { - rtb_Abs1 = -rtY.n_motRight; - } else { - rtb_Abs1 = rtY.n_motRight; - } - - /* End of Abs: '/Abs5' */ - - /* Relay: '/Relay' */ - if (rtb_Abs1 >= rtP.n_commDeacvHi) { - rtDW.Relay_Mode_m = true; - } else { - if (rtb_Abs1 <= rtP.n_commAcvLo) { - rtDW.Relay_Mode_m = false; - } - } - - /* Switch: '/Switch1' incorporates: - * Constant: '/Constant23' - * UnitDelay: '/UnitDelay1' - */ - if (rtb_LogicalOperator3) { - rtb_Sum1_c = 0; - } else { - rtb_Sum1_c = rtDW.UnitDelay1_DSTATE_k; - } - - /* End of Switch: '/Switch1' */ - - /* Sum: '/Sum1' */ - rtb_Sum1_c++; - - /* If: '/If1' incorporates: - * Constant: '/z_ctrlTypSel1' - * Constant: '/vec_hallToPos' - * Inport: '/r_DCRight' - * Outport: '/a_elecAngleRight' - * Selector: '/Selector' - */ - rtPrevAction = rtDW.If1_ActiveSubsystem_j; - rtAction = -1; - if (rtP.z_ctrlTypSel != 0) { - rtAction = 0; - } - - rtDW.If1_ActiveSubsystem_j = rtAction; - if ((rtPrevAction != rtAction) && (rtPrevAction == 0)) { - F02_Electrical_Angle_Ca_Disable(&rtDW.Switch_PhaAdv, &rtY.a_elecAngleRight); - } - - if (rtAction == 0) { - /* Outputs for IfAction SubSystem: '/F02_Electrical_Angle_Calculation' incorporates: - * ActionPort: '/Action Port' - */ - F02_Electrical_Angle_Calculatio(rtU.r_DCRight, rtConstP.pooled26[rtb_Sum_a], - rtDW.Switch2, rtb_Switch_b, rtb_Sum1_c, &rtDW.Switch_PhaAdv, - &rtY.a_elecAngleRight); - - /* End of Outputs for SubSystem: '/F02_Electrical_Angle_Calculation' */ - } - - /* End of If: '/If1' */ - - /* SwitchCase: '/Switch Case' incorporates: - * Constant: '/z_ctrlTypSel1' - */ - switch (rtP.z_ctrlTypSel) { - case 1: - /* Outputs for IfAction SubSystem: '/F03_01_Pure_Trapezoidal_Method' incorporates: - * ActionPort: '/Action Port' - */ - F03_01_Pure_Trapezoidal_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, - &rtDW.Merge1_m, &rtDW.Merge2_d); - - /* End of Outputs for SubSystem: '/F03_01_Pure_Trapezoidal_Method' */ - break; - - case 2: - /* Outputs for IfAction SubSystem: '/F03_02_Sinusoidal_Method' incorporates: - * ActionPort: '/Action Port' - */ - F03_02_Sinusoidal_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, &rtDW.Merge1_m, - &rtDW.Merge2_d); - - /* End of Outputs for SubSystem: '/F03_02_Sinusoidal_Method' */ - break; - - case 3: - /* Outputs for IfAction SubSystem: '/F03_02_Sinusoidal3rd_Method' incorporates: - * ActionPort: '/Action Port' - */ - F03_02_Sinusoidal3rd_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, - &rtDW.Merge1_m, &rtDW.Merge2_d); - - /* End of Outputs for SubSystem: '/F03_02_Sinusoidal3rd_Method' */ - break; - } - - /* End of SwitchCase: '/Switch Case' */ - - /* Abs: '/Abs1' incorporates: - * Inport: '/r_DCRight' - */ - if (rtU.r_DCRight < 0) { - rtb_Switch1_idx_0 = -rtU.r_DCRight; - } else { - rtb_Switch1_idx_0 = rtU.r_DCRight; - } - - /* End of Abs: '/Abs1' */ - - /* Switch: '/Switch1' incorporates: - * Constant: '/z_ctrlTypSel1' - * Constant: '/CTRL_COMM' - * Constant: '/r_commDCDeacv' - * Constant: '/vec_hallToPos' - * Inport: '/r_DCRight' - * Logic: '/Logical Operator3' - * LookupNDDirect: '/z_commutMap_M1' - * Product: '/Divide2' - * Product: '/Divide4' - * RelationalOperator: '/Relational Operator1' - * RelationalOperator: '/Relational Operator2' - * Relay: '/Relay' - * Selector: '/Selector' - * - * About '/z_commutMap_M1': - * 2-dimensional Direct Look-Up returning a Column - */ - if (rtDW.Relay_Mode_m && (rtb_Switch1_idx_0 > rtP.r_commDCDeacv) && - (rtP.z_ctrlTypSel != 0)) { - rtb_Switch1_idx_0 = rtU.r_DCRight * rtDW.Merge_j; - rtb_Switch1_idx_1 = rtU.r_DCRight * rtDW.Merge1_m; - rtb_Abs1 = rtU.r_DCRight * rtDW.Merge2_d; - } else { - if (rtConstP.pooled26[rtb_Sum_a] < 5) { - /* LookupNDDirect: '/z_commutMap_M1' incorporates: - * Constant: '/vec_hallToPos' - * Selector: '/Selector' - * - * About '/z_commutMap_M1': - * 2-dimensional Direct Look-Up returning a Column - */ - tmp = rtConstP.pooled26[rtb_Sum_a]; - } else { - /* LookupNDDirect: '/z_commutMap_M1' - * - * About '/z_commutMap_M1': - * 2-dimensional Direct Look-Up returning a Column - */ - tmp = 5U; - } - - /* LookupNDDirect: '/z_commutMap_M1' - * - * About '/z_commutMap_M1': - * 2-dimensional Direct Look-Up returning a Column - */ - rtb_Abs1 = tmp * 3; - rtb_Switch1_idx_0 = rtU.r_DCRight * rtConstP.pooled18[rtb_Abs1]; - rtb_Switch1_idx_1 = rtConstP.pooled18[1 + rtb_Abs1] * rtU.r_DCRight; - rtb_Abs1 = rtConstP.pooled18[2 + rtb_Abs1] * rtU.r_DCRight; - } - - /* End of Switch: '/Switch1' */ - - /* Outport: '/DC_phaARight' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' - */ - rtY.DC_phaARight = rtb_Switch1_idx_0 / 1000; - - /* Outport: '/DC_phaBRight' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' - */ - rtY.DC_phaBRight = rtb_Switch1_idx_1 / 1000; - - /* Update for UnitDelay: '/UnitDelay' incorporates: - * Inport: '/b_hallALeft ' - */ - rtDW.UnitDelay_DSTATE = rtU.b_hallALeft; - - /* Update for UnitDelay: '/UnitDelay1' incorporates: - * Inport: '/b_hallBLeft' - */ - rtDW.UnitDelay1_DSTATE_p = rtU.b_hallBLeft; - - /* Update for UnitDelay: '/UnitDelay2' incorporates: - * Inport: '/b_hallCLeft' - */ - rtDW.UnitDelay2_DSTATE = rtU.b_hallCLeft; - - /* Update for UnitDelay: '/UnitDelay1' incorporates: - * Constant: '/vec_hallToPos' - * Selector: '/Selector' - */ - rtDW.UnitDelay1_DSTATE_g = rtConstP.pooled26[rtb_Sum]; - - /* Update for UnitDelay: '/z_counterRawPrev' */ - rtDW.z_counterRawPrev_DSTATE = rtb_Sum1; - - /* Update for UnitDelay: '/UnitDelay8' */ - rtDW.UnitDelay8_DSTATE = rtDW.Logic[0]; - - /* Update for Memory: '/Memory' */ - rtDW.Memory_PreviousInput = rtDW.Logic[0]; - - /* Update for UnitDelay: '/z_counter2' */ - rtDW.z_counter2_DSTATE = rtb_Switch; - - /* Update for UnitDelay: '/UnitDelay1' */ - rtDW.UnitDelay1_DSTATE = rtb_Sum1; - - /* Update for UnitDelay: '/UnitDelay' incorporates: - * Inport: '/b_hallARight' - */ - rtDW.UnitDelay_DSTATE_j = rtU.b_hallARight; - - /* Update for UnitDelay: '/UnitDelay1' incorporates: - * Inport: '/b_hallBRight' - */ - rtDW.UnitDelay1_DSTATE_f = rtU.b_hallBRight; - - /* Update for UnitDelay: '/UnitDelay2' incorporates: - * Inport: '/b_hallCRight' - */ - rtDW.UnitDelay2_DSTATE_b = rtU.b_hallCRight; - - /* Update for UnitDelay: '/UnitDelay1' incorporates: - * Constant: '/vec_hallToPos' - * Selector: '/Selector' - */ - rtDW.UnitDelay1_DSTATE_j = rtConstP.pooled26[rtb_Sum_a]; - - /* Update for UnitDelay: '/z_counterRawPrev' */ - rtDW.z_counterRawPrev_DSTATE_p = rtb_Sum1_c; - - /* Update for UnitDelay: '/UnitDelay8' */ - rtDW.UnitDelay8_DSTATE_p = rtDW.Logic_j[0]; - - /* Update for Memory: '/Memory' */ - rtDW.Memory_PreviousInput_i = rtDW.Logic_j[0]; - - /* Update for UnitDelay: '/z_counter2' */ - rtDW.z_counter2_DSTATE_h = rtb_Switch_b; - - /* Update for UnitDelay: '/UnitDelay1' */ - rtDW.UnitDelay1_DSTATE_k = rtb_Sum1_c; - - /* Outport: '/DC_phaCRight' incorporates: - * Constant: '/Constant1' - * Product: '/Divide1' - */ - rtY.DC_phaCRight = rtb_Abs1 / 1000; + rtY->DC_phaC = rtb_Abs5 / 1000; /* End of Outputs for SubSystem: '/BLDC_controller' */ + + /* Outport: '/n_mot' */ + rtY->n_mot = rtb_Sum2; } /* Model initialize function */ -void BLDC_controller_initialize(void) +void BLDC_controller_initialize(RT_MODEL *const rtM) { + DW *rtDW = ((DW *) rtM->dwork); + /* Start for Atomic SubSystem: '/BLDC_controller' */ /* Start for If: '/If1' */ - rtDW.If1_ActiveSubsystem = -1; - - /* Start for If: '/If1' */ - rtDW.If1_ActiveSubsystem_j = -1; + rtDW->If1_ActiveSubsystem = -1; /* End of Start for SubSystem: '/BLDC_controller' */ - rtPrevZCX.Motor_Speed_Calculation_k.Motor_Speed_Calculation_Trig_ZC = - POS_ZCSIG; - rtPrevZCX.Motor_Speed_Calculation_m.Motor_Speed_Calculation_Trig_ZC = - POS_ZCSIG; /* SystemInitialize for Atomic SubSystem: '/BLDC_controller' */ - /* InitializeConditions for UnitDelay: '/z_counter2' */ - rtDW.z_counter2_DSTATE = rtP.z_maxCntRst; + /* InitializeConditions for UnitDelay: '/UnitDelay1' */ + rtDW->UnitDelay1_DSTATE = 1500; - /* InitializeConditions for UnitDelay: '/z_counter2' */ - rtDW.z_counter2_DSTATE_h = rtP.z_maxCntRst; + /* SystemInitialize for IfAction SubSystem: '/Counter_Hold_and_Error_Calculation' */ + /* InitializeConditions for UnitDelay: '/z_counter2' */ + rtDW->z_counter2_DSTATE = 1500; + /* SystemInitialize for Outport: '/z_counter' */ + rtDW->z_counterRawPrev = 1500; + + /* End of SystemInitialize for SubSystem: '/Counter_Hold_and_Error_Calculation' */ /* End of SystemInitialize for SubSystem: '/BLDC_controller' */ } diff --git a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.h b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.h index 8c99184..9d9b319 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.h +++ b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.h @@ -7,9 +7,9 @@ * * Code generated for Simulink model 'BLDC_controller'. * - * Model version : 1.817 + * Model version : 1.877 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - * C/C++ source code generated on : Tue May 28 19:55:33 2019 + * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -24,302 +24,174 @@ #ifndef RTW_HEADER_BLDC_controller_h_ #define RTW_HEADER_BLDC_controller_h_ #include "rtwtypes.h" -#include "zero_crossing_types.h" #ifndef BLDC_controller_COMMON_INCLUDES_ # define BLDC_controller_COMMON_INCLUDES_ #include "rtwtypes.h" -#include "zero_crossing_types.h" #endif /* BLDC_controller_COMMON_INCLUDES_ */ /* Macros for accessing real-time model data structure */ -/* Block signals and states (auto storage) for system '/F01_03_Direction_Detection' */ -typedef struct { - int8_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ -} DW_F01_03_Direction_Detection; - -/* Block signals and states (auto storage) for system '/Edge_counter' */ -typedef struct { - uint8_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ - boolean_T Edge_counter_MODE; /* '/Edge_counter' */ -} DW_Edge_counter; - -/* Block signals and states (auto storage) for system '/Motor_Speed_Calculation' */ -typedef struct { - int32_T UnitDelay5_DSTATE; /* '/UnitDelay5' */ - int32_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ -} DW_Motor_Speed_Calculation; - -/* Zero-crossing (trigger) state for system '/Motor_Speed_Calculation' */ -typedef struct { - ZCSigState Motor_Speed_Calculation_Trig_ZC;/* '/Motor_Speed_Calculation' */ -} ZCE_Motor_Speed_Calculation; +/* Forward declaration for rtModel */ +typedef struct tag_RTM RT_MODEL; /* Block signals and states (auto storage) for system '' */ typedef struct { - DW_Motor_Speed_Calculation Motor_Speed_Calculation_k;/* '/Motor_Speed_Calculation' */ - DW_Edge_counter Edge_counter_l; /* '/Edge_counter' */ - DW_F01_03_Direction_Detection F01_03_Direction_Detection_j;/* '/F01_03_Direction_Detection' */ - DW_Motor_Speed_Calculation Motor_Speed_Calculation_m;/* '/Motor_Speed_Calculation' */ - DW_Edge_counter Edge_counter_f; /* '/Edge_counter' */ - DW_F01_03_Direction_Detection F01_03_Direction_Detection_o;/* '/F01_03_Direction_Detection' */ - int32_T Switch_PhaAdv; /* '/Switch_PhaAdv' */ - int32_T Switch_PhaAdv_a; /* '/Switch_PhaAdv' */ - int16_T Merge; /* '/Merge' */ - int16_T Merge1; /* '/Merge1' */ - int16_T Merge2; /* '/Merge2' */ - int16_T Merge_j; /* '/Merge' */ - int16_T Merge1_m; /* '/Merge1' */ - int16_T Merge2_d; /* '/Merge2' */ - int16_T z_counterRawPrev_DSTATE; /* '/z_counterRawPrev' */ - int16_T z_counter2_DSTATE; /* '/z_counter2' */ - int16_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ - int16_T z_counterRawPrev_DSTATE_p; /* '/z_counterRawPrev' */ - int16_T z_counter2_DSTATE_h; /* '/z_counter2' */ - int16_T UnitDelay1_DSTATE_k; /* '/UnitDelay1' */ - int8_T UnitDelay1; /* '/UnitDelay1' */ - int8_T Switch2; /* '/Switch2' */ - int8_T UnitDelay1_k; /* '/UnitDelay1' */ - int8_T Switch2_e; /* '/Switch2' */ + int32_T Switch_PhaAdv; /* '/Switch_PhaAdv' */ + int32_T UnitDelay2_DSTATE; /* '/UnitDelay2' */ + int16_T Merge; /* '/Merge' */ + int16_T Merge1; /* '/Merge1' */ + int16_T Merge2; /* '/Merge2' */ + int16_T z_counterRawPrev; /* '/z_counterRawPrev' */ + int16_T Sum4; /* '/Sum4' */ + int16_T UnitDelay1_DSTATE; /* '/UnitDelay1' */ + int16_T UnitDelay1_DSTATE_c; /* '/UnitDelay1' */ + int16_T z_counter2_DSTATE; /* '/z_counter2' */ + int8_T UnitDelay1; /* '/UnitDelay1' */ + int8_T Switch2; /* '/Switch2' */ + int8_T UnitDelay2_DSTATE_i; /* '/UnitDelay2' */ int8_T If1_ActiveSubsystem; /* '/If1' */ - int8_T If1_ActiveSubsystem_j; /* '/If1' */ - uint8_T Sum2_i; /* '/Sum2' */ - uint8_T Sum2_l; /* '/Sum2' */ - uint8_T UnitDelay_DSTATE; /* '/UnitDelay' */ - uint8_T UnitDelay1_DSTATE_p; /* '/UnitDelay1' */ - uint8_T UnitDelay2_DSTATE; /* '/UnitDelay2' */ - uint8_T UnitDelay1_DSTATE_g; /* '/UnitDelay1' */ - uint8_T UnitDelay_DSTATE_j; /* '/UnitDelay' */ - uint8_T UnitDelay1_DSTATE_f; /* '/UnitDelay1' */ - uint8_T UnitDelay2_DSTATE_b; /* '/UnitDelay2' */ - uint8_T UnitDelay1_DSTATE_j; /* '/UnitDelay1' */ - boolean_T Logic[2]; /* '/Logic' */ - boolean_T Logic_j[2]; /* '/Logic' */ - boolean_T LogicalOperator; /* '/Logical Operator' */ - boolean_T LogicalOperator5; /* '/Logical Operator5' */ - boolean_T LogicalOperator_h; /* '/Logical Operator' */ - boolean_T UnitDelay8_DSTATE; /* '/UnitDelay8' */ - boolean_T UnitDelay8_DSTATE_p; /* '/UnitDelay8' */ - boolean_T UnitDelay_DSTATE_k; /* '/UnitDelay' */ - boolean_T UnitDelay_DSTATE_i; /* '/UnitDelay' */ - boolean_T UnitDelay_DSTATE_l; /* '/UnitDelay' */ - boolean_T UnitDelay_DSTATE_b; /* '/UnitDelay' */ - boolean_T Memory_PreviousInput; /* '/Memory' */ - boolean_T Relay_Mode; /* '/Relay' */ - boolean_T Memory_PreviousInput_i; /* '/Memory' */ - boolean_T Relay_Mode_m; /* '/Relay' */ + uint8_T UnitDelay_DSTATE; /* '/UnitDelay' */ + uint8_T UnitDelay1_DSTATE_i; /* '/UnitDelay1' */ + uint8_T UnitDelay2_DSTATE_h; /* '/UnitDelay2' */ + boolean_T n_commDeacv_Mode; /* '/n_commDeacv' */ + boolean_T dz_counter_Mode; /* '/dz_counter' */ } DW; -/* Zero-crossing (trigger) state */ -typedef struct { - ZCE_Motor_Speed_Calculation Motor_Speed_Calculation_k;/* '/Motor_Speed_Calculation' */ - ZCE_Motor_Speed_Calculation Motor_Speed_Calculation_m;/* '/Motor_Speed_Calculation' */ -} PrevZCX; - /* Constant parameters (auto storage) */ typedef struct { - /* Pooled Parameter (Expression: r_trapPhaA_M1) - * Referenced by: - * '/r_trapPhaA_M1' - * '/r_trapPhaA_M1' + /* Computed Parameter: r_trapPhaA_M1_Table + * Referenced by: '/r_trapPhaA_M1' */ - int16_T pooled9[7]; + int16_T r_trapPhaA_M1_Table[7]; - /* Pooled Parameter (Expression: r_trapPhaB_M1) - * Referenced by: - * '/r_trapPhaB_M1' - * '/r_trapPhaB_M1' + /* Computed Parameter: r_trapPhaB_M1_Table + * Referenced by: '/r_trapPhaB_M1' */ - int16_T pooled10[7]; + int16_T r_trapPhaB_M1_Table[7]; - /* Pooled Parameter (Expression: r_trapPhaC_M1) - * Referenced by: - * '/r_trapPhaC_M1' - * '/r_trapPhaC_M1' + /* Computed Parameter: r_trapPhaC_M1_Table + * Referenced by: '/r_trapPhaC_M1' */ - int16_T pooled11[7]; + int16_T r_trapPhaC_M1_Table[7]; - /* Pooled Parameter (Expression: r_sinPhaA_M1) - * Referenced by: - * '/r_sinPhaA_M1' - * '/r_sinPhaA_M1' + /* Computed Parameter: r_sinPhaA_M1_Table + * Referenced by: '/r_sinPhaA_M1' */ - int16_T pooled12[37]; + int16_T r_sinPhaA_M1_Table[37]; - /* Pooled Parameter (Expression: r_sinPhaB_M1) - * Referenced by: - * '/r_sinPhaB_M1' - * '/r_sinPhaB_M1' + /* Computed Parameter: r_sinPhaB_M1_Table + * Referenced by: '/r_sinPhaB_M1' */ - int16_T pooled13[37]; + int16_T r_sinPhaB_M1_Table[37]; - /* Pooled Parameter (Expression: r_sinPhaC_M1) - * Referenced by: - * '/r_sinPhaC_M1' - * '/r_sinPhaC_M1' + /* Computed Parameter: r_sinPhaC_M1_Table + * Referenced by: '/r_sinPhaC_M1' */ - int16_T pooled14[37]; + int16_T r_sinPhaC_M1_Table[37]; - /* Pooled Parameter (Expression: r_sin3PhaA_M1) - * Referenced by: - * '/r_sin3PhaA_M1' - * '/r_sin3PhaA_M1' + /* Computed Parameter: r_sin3PhaA_M1_Table + * Referenced by: '/r_sin3PhaA_M1' */ - int16_T pooled15[37]; + int16_T r_sin3PhaA_M1_Table[37]; - /* Pooled Parameter (Expression: r_sin3PhaB_M1) - * Referenced by: - * '/r_sin3PhaB_M1' - * '/r_sin3PhaB_M1' + /* Computed Parameter: r_sin3PhaB_M1_Table + * Referenced by: '/r_sin3PhaB_M1' */ - int16_T pooled16[37]; + int16_T r_sin3PhaB_M1_Table[37]; - /* Pooled Parameter (Expression: r_sin3PhaC_M1) - * Referenced by: - * '/r_sin3PhaC_M1' - * '/r_sin3PhaC_M1' + /* Computed Parameter: r_sin3PhaC_M1_Table + * Referenced by: '/r_sin3PhaC_M1' */ - int16_T pooled17[37]; + int16_T r_sin3PhaC_M1_Table[37]; - /* Pooled Parameter (Expression: z_commutMap_M1) - * Referenced by: - * '/z_commutMap_M1' - * '/z_commutMap_M1' + /* Computed Parameter: z_commutMap_M1_table + * Referenced by: '/z_commutMap_M1' */ - int16_T pooled18[18]; + int16_T z_commutMap_M1_table[18]; - /* Pooled Parameter (Expression: vec_hallToPos) - * Referenced by: - * '/vec_hallToPos' - * '/vec_hallToPos' + /* Computed Parameter: vec_hallToPos_Value + * Referenced by: '/vec_hallToPos' */ - uint8_T pooled26[8]; - - /* Pooled Parameter (Expression: [0 1;1 0;0 1;0 1;1 0;1 0;0 0;0 0]) - * Referenced by: - * '/Logic' - * '/Logic' - */ - boolean_T pooled30[16]; + int8_T vec_hallToPos_Value[8]; } ConstP; /* External inputs (root inport signals with auto storage) */ typedef struct { - uint8_T b_hallALeft; /* '/b_hallALeft ' */ - uint8_T b_hallBLeft; /* '/b_hallBLeft' */ - uint8_T b_hallCLeft; /* '/b_hallCLeft' */ - int32_T r_DCLeft; /* '/r_DCLeft' */ - uint8_T b_hallARight; /* '/b_hallARight' */ - uint8_T b_hallBRight; /* '/b_hallBRight' */ - uint8_T b_hallCRight; /* '/b_hallCRight' */ - int32_T r_DCRight; /* '/r_DCRight' */ + uint8_T b_hallA; /* '/b_hallA ' */ + uint8_T b_hallB; /* '/b_hallB' */ + uint8_T b_hallC; /* '/b_hallC' */ + int32_T r_DC; /* '/r_DC' */ } ExtU; /* External outputs (root outports fed by signals with auto storage) */ typedef struct { - int32_T DC_phaALeft; /* '/DC_phaALeft' */ - int32_T DC_phaBLeft; /* '/DC_phaBLeft' */ - int32_T DC_phaCLeft; /* '/DC_phaCLeft' */ - int32_T n_motLeft; /* '/n_motLeft' */ - int32_T a_elecAngleLeft; /* '/a_elecAngleLeft' */ - int32_T DC_phaARight; /* '/DC_phaARight' */ - int32_T DC_phaBRight; /* '/DC_phaBRight' */ - int32_T DC_phaCRight; /* '/DC_phaCRight' */ - int32_T n_motRight; /* '/n_motRight' */ - int32_T a_elecAngleRight; /* '/a_elecAngleRight' */ + int32_T DC_phaA; /* '/DC_phaA' */ + int32_T DC_phaB; /* '/DC_phaB' */ + int32_T DC_phaC; /* '/DC_phaC' */ + int32_T n_mot; /* '/n_mot' */ + int32_T a_elecAngle; /* '/a_elecAngle' */ } ExtY; /* Parameters (auto storage) */ struct P_ { int32_T cf_speedCoef; /* Variable: cf_speedCoef - * Referenced by: - * '/cf_spdCoef' - * '/cf_spdCoef' + * Referenced by: '/cf_spdCoef' + */ + int32_T cf_speedFilt; /* Variable: cf_speedFilt + * Referenced by: '/cf_speedFilt' */ int32_T n_commAcvLo; /* Variable: n_commAcvLo - * Referenced by: - * '/Relay' - * '/Relay' + * Referenced by: '/n_commDeacv' */ int32_T n_commDeacvHi; /* Variable: n_commDeacvHi - * Referenced by: - * '/Relay' - * '/Relay' + * Referenced by: '/n_commDeacv' */ int32_T r_commDCDeacv; /* Variable: r_commDCDeacv - * Referenced by: - * '/r_commDCDeacv' - * '/r_commDCDeacv' + * Referenced by: '/r_commDCDeacv' */ int32_T r_phaAdvDC_XA[11]; /* Variable: r_phaAdvDC_XA - * Referenced by: - * '/r_phaAdvDC_XA' - * '/r_phaAdvDC_XA' + * Referenced by: '/r_phaAdvDC_XA' */ int16_T a_phaAdv_M1[11]; /* Variable: a_phaAdv_M1 - * Referenced by: - * '/a_phaAdv_M2' - * '/a_phaAdv_M2' + * Referenced by: '/a_phaAdv_M2' */ - int16_T z_maxCntRst; /* Variable: z_maxCntRst - * Referenced by: - * '/z_maxCntRst' - * '/z_maxCntRst1' - * '/z_maxCntRst2' - * '/z_counter2' - * '/z_maxCntRst' - * '/z_maxCntRst1' - * '/z_maxCntRst2' - * '/z_counter2' - * '/z_maxCntRst' - * '/z_maxCntRst' + int16_T dz_counterHi; /* Variable: dz_counterHi + * Referenced by: '/dz_counter' + */ + int16_T dz_counterLo; /* Variable: dz_counterLo + * Referenced by: '/dz_counter' */ uint8_T z_ctrlTypSel; /* Variable: z_ctrlTypSel - * Referenced by: - * '/z_ctrlTypSel1' - * '/z_ctrlTypSel1' - */ - uint8_T z_nrEdgeSpdAcv; /* Variable: z_nrEdgeSpdAcv - * Referenced by: - * '/z_nrEdgeSpdAcv' - * '/z_nrEdgeSpdAcv' + * Referenced by: '/z_ctrlTypSel1' */ boolean_T b_phaAdvEna; /* Variable: b_phaAdvEna - * Referenced by: - * '/a_elecPeriod1' - * '/a_elecPeriod1' + * Referenced by: '/a_elecPeriod1' */ }; /* Parameters (auto storage) */ typedef struct P_ P; -/* Block parameters (auto storage) */ -extern P rtP; - -/* Block signals and states (auto storage) */ -extern DW rtDW; - -/* External inputs (root inport signals with auto storage) */ -extern ExtU rtU; - -/* External outputs (root outports fed by signals with auto storage) */ -extern ExtY rtY; +/* Real-time Model Data Structure */ +struct tag_RTM { + P *defaultParam; + ExtU *inputs; + ExtY *outputs; + DW *dwork; +}; /* Constant parameters (auto storage) */ extern const ConstP rtConstP; /* Model entry point functions */ -extern void BLDC_controller_initialize(void); -extern void BLDC_controller_step(void); +extern void BLDC_controller_initialize(RT_MODEL *const rtM); +extern void BLDC_controller_step(RT_MODEL *const rtM); /*- * These blocks were eliminated from the model due to optimizations: * - * Block '/Scope2' : Unused code path elimination - * Block '/Scope' : Unused code path elimination - * Block '/Scope2' : Unused code path elimination - * Block '/Scope' : Unused code path elimination + * Block '/Scope2' : Unused code path elimination + * Block '/Scope' : Unused code path elimination */ /*- @@ -341,92 +213,28 @@ extern void BLDC_controller_step(void); * * '' : 'BLDCmotorControl_R2017b' * '' : 'BLDCmotorControl_R2017b/BLDC_controller' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log3' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log4' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log5' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log7' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log8' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log3' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_01_Edge_Detector' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_02_Position_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_03_Direction_Detection' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_01_Edge_Detector/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_02_Position_Calculation/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_03_Direction_Detection/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/S-R Flip-Flop' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/falling_edge2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rising_edge' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_Delay' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log3' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log4' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log5' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter/rst_Delay' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F02_Electrical_Angle_Calculation/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_02_Sinusoidal3rd_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F03_Control_Method_Selection/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Left/F04_Control_Type_Management/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log3' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_01_Edge_Detector' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_02_Position_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_03_Direction_Detection' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_01_Edge_Detector/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_02_Position_Calculation/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_03_Direction_Detection/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/S-R Flip-Flop' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/falling_edge2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rising_edge' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_Delay' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log3' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log4' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/signal_log5' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Edge_counter/rst_Delay' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F02_Electrical_Angle_Calculation/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_02_Sinusoidal3rd_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F03_Control_Method_Selection/signal_log6' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log1' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log2' - * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller_Right/F04_Control_Type_Management/signal_log6' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log1' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log2' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log3' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/signal_log6' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F02_Electrical_Angle_Calculation' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F04_Control_Type_Management' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_01_Edge_Detector' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_02_Position_Calculation' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_03_Direction_Detection' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Counter_Hold_and_Error_Calculation' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/Motor_Speed_Calculation' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F01_Preliminary_Calculations/F01_04_Speed_Calculation/rst_DelayLim' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_01_Pure_Trapezoidal_Method' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_02_Sinusoidal_Method' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/F03_03_Sinusoidal3rd_Method' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log1' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log2' + * '' : 'BLDCmotorControl_R2017b/BLDC_controller/BLDC_controller/F03_Control_Method_Selection/signal_log6' */ #endif /* RTW_HEADER_BLDC_controller_h_ */ diff --git a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.mk b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.mk index 2520b0d..542deac 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.mk +++ b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller.mk @@ -2,7 +2,7 @@ ## Makefile generated for Simulink model 'BLDC_controller'. ## ## Makefile : BLDC_controller.mk -## Generated on : Tue May 28 18:31:31 2019 +## Generated on : Wed Jun 05 20:33:43 2019 ## MATLAB Coder version: 3.4 (R2017b) ## ## Build Info: @@ -32,7 +32,7 @@ MATLAB_ROOT = C:/PROGRA~1/MATLAB/R2017b MATLAB_BIN = C:/PROGRA~1/MATLAB/R2017b/bin MATLAB_ARCH_BIN = $(MATLAB_BIN)/win64 MASTER_ANCHOR_DIR = -START_DIR = D:/Work_home/01_Motor_control +START_DIR = D:/git/hoverboard-firmware-hack/01_Matlab ARCH = win64 SOLVER = SOLVER_OBJ = @@ -215,7 +215,7 @@ INCLUDES = $(INCLUDES_BUILDINFO) ## DEFINES ########################################################################### -DEFINES_BUILD_ARGS = -DTERMFCN=0 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 +DEFINES_BUILD_ARGS = -DTERMFCN=0 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=1 -DINTEGER_CODE=0 -DMT=0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 DEFINES_IMPLIED = -DTID01EQ=0 DEFINES_STANDARD = -DMODEL=BLDC_controller -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO diff --git a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller_data.c b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller_data.c index 0458de2..d5a791c 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller_data.c +++ b/01_Matlab/BLDC_controller_ert_rtw/BLDC_controller_data.c @@ -7,9 +7,9 @@ * * Code generated for Simulink model 'BLDC_controller'. * - * Model version : 1.817 + * Model version : 1.877 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - * C/C++ source code generated on : Tue May 28 19:55:33 2019 + * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 * * Target selection: ert.tlc * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -23,185 +23,75 @@ #include "BLDC_controller.h" -/* Block parameters (auto storage) */ -P rtP = { - /* Variable: cf_speedCoef - * Referenced by: - * '/cf_spdCoef' - * '/cf_spdCoef' - */ - 66667, - - /* Variable: n_commAcvLo - * Referenced by: - * '/Relay' - * '/Relay' - */ - 100, - - /* Variable: n_commDeacvHi - * Referenced by: - * '/Relay' - * '/Relay' - */ - 180, - - /* Variable: r_commDCDeacv - * Referenced by: - * '/r_commDCDeacv' - * '/r_commDCDeacv' - */ - 70, - - /* Variable: r_phaAdvDC_XA - * Referenced by: - * '/r_phaAdvDC_XA' - * '/r_phaAdvDC_XA' - */ - { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 }, - - /* Variable: a_phaAdv_M1 - * Referenced by: - * '/a_phaAdv_M2' - * '/a_phaAdv_M2' - */ - { 0, 0, 7, 2, 2, 2, 4, 5, 9, 16, 25 }, - - /* Variable: z_maxCntRst - * Referenced by: - * '/z_maxCntRst' - * '/z_maxCntRst1' - * '/z_maxCntRst2' - * '/z_counter2' - * '/z_maxCntRst' - * '/z_maxCntRst1' - * '/z_maxCntRst2' - * '/z_counter2' - * '/z_maxCntRst' - * '/z_maxCntRst' - */ - 2000, - - /* Variable: z_ctrlTypSel - * Referenced by: - * '/z_ctrlTypSel1' - * '/z_ctrlTypSel1' - */ - 3U, - - /* Variable: z_nrEdgeSpdAcv - * Referenced by: - * '/z_nrEdgeSpdAcv' - * '/z_nrEdgeSpdAcv' - */ - 3U, - - /* Variable: b_phaAdvEna - * Referenced by: - * '/a_elecPeriod1' - * '/a_elecPeriod1' - */ - 1 -}; - /* Constant parameters (auto storage) */ const ConstP rtConstP = { - /* Pooled Parameter (Expression: r_trapPhaA_M1) - * Referenced by: - * '/r_trapPhaA_M1' - * '/r_trapPhaA_M1' + /* Computed Parameter: r_trapPhaA_M1_Table + * Referenced by: '/r_trapPhaA_M1' */ { 1000, 1000, 1000, -1000, -1000, -1000, 1000 }, - /* Pooled Parameter (Expression: r_trapPhaB_M1) - * Referenced by: - * '/r_trapPhaB_M1' - * '/r_trapPhaB_M1' + /* Computed Parameter: r_trapPhaB_M1_Table + * Referenced by: '/r_trapPhaB_M1' */ { -1000, -1000, 1000, 1000, 1000, -1000, -1000 }, - /* Pooled Parameter (Expression: r_trapPhaC_M1) - * Referenced by: - * '/r_trapPhaC_M1' - * '/r_trapPhaC_M1' + /* Computed Parameter: r_trapPhaC_M1_Table + * Referenced by: '/r_trapPhaC_M1' */ { 1000, -1000, -1000, -1000, 1000, 1000, 1000 }, - /* Pooled Parameter (Expression: r_sinPhaA_M1) - * Referenced by: - * '/r_sinPhaA_M1' - * '/r_sinPhaA_M1' + /* Computed Parameter: r_sinPhaA_M1_Table + * Referenced by: '/r_sinPhaA_M1' */ { 500, 643, 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500 }, - /* Pooled Parameter (Expression: r_sinPhaB_M1) - * Referenced by: - * '/r_sinPhaB_M1' - * '/r_sinPhaB_M1' + /* Computed Parameter: r_sinPhaB_M1_Table + * Referenced by: '/r_sinPhaB_M1' */ { -1000, -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500, 342, 174, 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000 }, - /* Pooled Parameter (Expression: r_sinPhaC_M1) - * Referenced by: - * '/r_sinPhaC_M1' - * '/r_sinPhaC_M1' + /* Computed Parameter: r_sinPhaC_M1_Table + * Referenced by: '/r_sinPhaC_M1' */ { 500, 342, 174, 0, -174, -342, -500, -643, -766, -866, -940, -985, -1000, -985, -940, -866, -766, -643, -500, -342, -174, 0, 174, 342, 500, 643, 766, 866, 940, 985, 1000, 985, 940, 866, 766, 643, 500 }, - /* Pooled Parameter (Expression: r_sin3PhaA_M1) - * Referenced by: - * '/r_sin3PhaA_M1' - * '/r_sin3PhaA_M1' + /* Computed Parameter: r_sin3PhaA_M1_Table + * Referenced by: '/r_sin3PhaA_M1' */ { 795, 930, 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795 }, - /* Pooled Parameter (Expression: r_sin3PhaB_M1) - * Referenced by: - * '/r_sin3PhaB_M1' - * '/r_sin3PhaB_M1' + /* Computed Parameter: r_sin3PhaB_M1_Table + * Referenced by: '/r_sin3PhaB_M1' */ { -930, -942, -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795, 584, 310, 0, -310, -584, -795, -930, -991, -996, -971, -942, -930 }, - /* Pooled Parameter (Expression: r_sin3PhaC_M1) - * Referenced by: - * '/r_sin3PhaC_M1' - * '/r_sin3PhaC_M1' + /* Computed Parameter: r_sin3PhaC_M1_Table + * Referenced by: '/r_sin3PhaC_M1' */ { 795, 584, 310, 0, -310, -584, -795, -930, -991, -996, -971, -942, -930, -942, -971, -996, -991, -930, -795, -584, -310, 0, 310, 584, 795, 930, 991, 996, 971, 942, 930, 942, 971, 996, 991, 930, 795 }, - /* Pooled Parameter (Expression: z_commutMap_M1) - * Referenced by: - * '/z_commutMap_M1' - * '/z_commutMap_M1' + /* Computed Parameter: z_commutMap_M1_table + * Referenced by: '/z_commutMap_M1' */ { 1000, -1000, 0, 1000, 0, -1000, 0, 1000, -1000, -1000, 1000, 0, -1000, 0, 1000, 0, -1000, 1000 }, - /* Pooled Parameter (Expression: vec_hallToPos) - * Referenced by: - * '/vec_hallToPos' - * '/vec_hallToPos' + /* Computed Parameter: vec_hallToPos_Value + * Referenced by: '/vec_hallToPos' */ - { 0U, 5U, 3U, 4U, 1U, 0U, 2U, 0U }, - - /* Pooled Parameter (Expression: [0 1;1 0;0 1;0 1;1 0;1 0;0 0;0 0]) - * Referenced by: - * '/Logic' - * '/Logic' - */ - { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 } + { 0, 5, 3, 4, 1, 0, 2, 0 } }; /* diff --git a/01_Matlab/BLDC_controller_ert_rtw/buildInfo.mat b/01_Matlab/BLDC_controller_ert_rtw/buildInfo.mat index e4d7fe739741d3570e26b62f87c24b2ab2f510c7..fb650b73a47739b4be786ddea4a804d84837cf57 100644 GIT binary patch delta 21673 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 OmFFJ2**(ja{R9AgBW5xH delta 34209 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%0Ax_ue`1b7A;}>=#S9pSQ<3u3tDk+QJ?paS$T$ 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 diff --git a/01_Matlab/BLDC_controller_ert_rtw/build_exception.mat b/01_Matlab/BLDC_controller_ert_rtw/build_exception.mat deleted file mode 100644 index dbaacdcef1024724a37fb4ad88613df70dfd45df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1319 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NSKfZ!kOJZ9z_N`3<|Lv`#~nVvVcr}8+qRUii60!YpjY|i!L?`O+F^f z$r+feG)Z9k(NK>F1@1t;-t3#TyKi48n^q=vP1@YH>Pd>lujLhAUd(@Zak25+lJc@` zr$x9Xu9$r0+`ec z=Y&}1{u`yzHBX!bB6uA_SIaW2a=e>mt)dWCDjr$4_-)WphN)e1wYGHh+D^H1tW8FI z_B4g=(9D`O9+_*w0#^|480l zN#8#H#J8O+)q=-WrpNB#FRkh|{LS0CSMjFt&MiB(?uwY9zjnXozNkpubDLj(Rc%Y) zot$)>&qHcIzsi1}xWjGP6SFRVlVUq8F2VkwIq-Pydb86%XW2Ezx3Il${xkRC_xHJ; z@q6m?FP$?`IA6qQxs83|er4AS$G-B*kDGm-24!Uh z$9ZzL`!c`%_U}wi+5evx4%r!gep(Ro@zo8M>uULl>G#{3Z-$x2v+kQMWT$4mBkIl1 zs!1Pr{jsjtrS>p+(}NYW)5GT3X%F_Tc_4_Qz9#^^4e@KSJuB4;#2F+oAkrR`|khq?)LJlO25r*d3^WhN5}bB_s)8npuguv^_Mw2_2xd< zHv7HmJ$L@++69ZQ?9h3)_%oM{=lR4*yZ`TrQP5wtYqP?`h!cmrAGB<3KU%w_WA*o= zS2N#5zVE-e;a-VIA$QQe)|{Vh>NA`QKeKq&ZwEO?%_eO;U z=k;=|r~R`%vZJN@WURTy%=_Id%>P^2UvAo~cJsKe@R#XdAO8AitM{t=$E1D63+(K7 zGX9po^>SaZPeCR3$L~MynteHHm-}(|-xaR;KOSHEzU=>*J)N%~@2D%1v--b0D*UO% xWame7kGe9#YB9e4DsA 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 E0RNLbVgLXD delta 8410 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 diff --git a/01_Matlab/BLDC_controller_ert_rtw/codedescriptor.dmr b/01_Matlab/BLDC_controller_ert_rtw/codedescriptor.dmr index 56cd3ccfbc0af4a4464f1305784b9200bb902f2f..2b4363f67658ff60118b4683d3535edb41bc9f65 100644 GIT binary patch delta 65238 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 UKiPh<{bu{a_LuD++ka*!07RhueEV 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 Cortex @@ -25,7 +25,69 @@ #include /* This ert_main.c example uses printf/fflush */ #include "BLDC_controller.h" /* Model's header file */ #include "rtwtypes.h" -#include "zero_crossing_types.h" + +static RT_MODEL rtM_; +static RT_MODEL *const rtMPtr = &rtM_; /* Real-time model */ +static P rtP = { + /* Variable: cf_speedCoef + * Referenced by: '/cf_spdCoef' + */ + 11111, + + /* Variable: cf_speedFilt + * Referenced by: '/cf_speedFilt' + */ + 10, + + /* Variable: n_commAcvLo + * Referenced by: '/n_commDeacv' + */ + 15, + + /* Variable: n_commDeacvHi + * Referenced by: '/n_commDeacv' + */ + 30, + + /* Variable: r_commDCDeacv + * Referenced by: '/r_commDCDeacv' + */ + 70, + + /* Variable: r_phaAdvDC_XA + * Referenced by: '/r_phaAdvDC_XA' + */ + { 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 }, + + /* Variable: a_phaAdv_M1 + * Referenced by: '/a_phaAdv_M2' + */ + { 0, 0, 0, 0, 0, 2, 3, 5, 9, 16, 25 }, + + /* Variable: dz_counterHi + * Referenced by: '/dz_counter' + */ + 50, + + /* Variable: dz_counterLo + * Referenced by: '/dz_counter' + */ + 20, + + /* Variable: z_ctrlTypSel + * Referenced by: '/z_ctrlTypSel1' + */ + 3U, + + /* Variable: b_phaAdvEna + * Referenced by: '/a_elecPeriod1' + */ + 1 +}; /* Modifiable parameters */ + +static DW rtDW; /* Observable states */ +static ExtU rtU; /* External inputs */ +static ExtY rtY; /* External outputs */ /* * Associating rt_OneStep with a real-time clock or interrupt service routine @@ -38,8 +100,8 @@ * your application needs. This example simply sets an error status in the * real-time model and returns from rt_OneStep. */ -void rt_OneStep(void); -void rt_OneStep(void) +void rt_OneStep(RT_MODEL *const rtM); +void rt_OneStep(RT_MODEL *const rtM) { static boolean_T OverrunFlag = false; @@ -57,7 +119,7 @@ void rt_OneStep(void) /* Set model inputs here */ /* Step the model */ - BLDC_controller_step(); + BLDC_controller_step(rtM); /* Get model outputs here */ @@ -77,18 +139,26 @@ void rt_OneStep(void) */ int_T main(int_T argc, const char *argv[]) { + RT_MODEL *const rtM = rtMPtr; + /* Unused arguments */ (void)(argc); (void)(argv); + /* Pack model data into RTM */ + rtM->defaultParam = &rtP; + rtM->dwork = &rtDW; + rtM->inputs = &rtU; + rtM->outputs = &rtY; + /* Initialize model */ - BLDC_controller_initialize(); + BLDC_controller_initialize(rtM); /* Attach rt_OneStep to a timer or interrupt service routine with - * period 1.0E-5 seconds (the model's base sample time) here. The + * period 6.0E-5 seconds (the model's base sample time) here. The * call syntax for rt_OneStep is * - * rt_OneStep(); + * rt_OneStep(rtM); */ printf("Warning: The simulation will run forever. " "Generated ERT main won't simulate model step behavior. " diff --git a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_c.html b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_c.html index f491ff9..6a7f85e 100644 --- a/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_c.html +++ b/01_Matlab/BLDC_controller_ert_rtw/html/BLDC_controller_c.html @@ -21,9 +21,9 @@ 7 * 8 * Code generated for Simulink model 'BLDC_controller'. 9 * - 10 * Model version : 1.817 + 10 * Model version : 1.877 11 * Simulink Coder version : 8.13 (R2017b) 24-Jul-2017 - 12 * C/C++ source code generated on : Tue May 28 19:55:33 2019 + 12 * C/C++ source code generated on : Wed Jun 5 22:29:28 2019 13 * 14 * Target selection: ert.tlc 15 * Embedded hardware selection: ARM Compatible->ARM Cortex @@ -99,1228 +99,617 @@ 85 #endif 86 #endif 87 - 88 /* Block signals and states (auto storage) */ - 89 DW rtDW; - 90 - 91 /* Previous zero-crossings (trigger) states */ - 92 PrevZCX rtPrevZCX; - 93 - 94 /* External inputs (root inport signals with auto storage) */ - 95 ExtU rtU; - 96 - 97 /* External outputs (root outports fed by signals with auto storage) */ - 98 ExtY rtY; - 99 static uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T - 100 bpSpace, uint32_T maxIndex, uint32_T *fraction); - 101 static int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, - 102 const int16_T table[]); - 103 static int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator); - 104 static void F01_03_Direction_Detection(boolean_T rtu_Enable, uint8_T rtu_z_pos, - 105 uint8_T rtu_z_posPrev, int8_T *rty_z_dir, int8_T *rty_z_dirPrev, - 106 DW_F01_03_Direction_Detection *localDW); - 107 static void Edge_counter_Reset(DW_Edge_counter *localDW); - 108 static void Edge_counter_Disable(uint8_T *rty_cnt, DW_Edge_counter *localDW); - 109 static void Edge_counter(boolean_T rtu_Enable, boolean_T rtu_b_edge, int8_T - 110 rtu_z_dir, int8_T rtu_z_dirPrev, uint8_T *rty_cnt, DW_Edge_counter *localDW); - 111 static void Motor_Speed_Calculation(boolean_T rtu_Trigger, int16_T rtu_z_counter, - 112 int8_T rtu_z_dir, int32_T *rty_n_mot, DW_Motor_Speed_Calculation *localDW, - 113 ZCE_Motor_Speed_Calculation *localZCE); - 114 static void F03_01_Pure_Trapezoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - 115 *rty_r_phaA_Trap, int16_T *rty_r_phaB_Trap, int16_T *rty_r_phaC_Trap); - 116 static void F03_02_Sinusoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - 117 *rty_r_phaA_Sin, int16_T *rty_r_phaB_Sin, int16_T *rty_r_phaC_Sin); - 118 static void F03_02_Sinusoidal3rd_Method(int32_T rtu_a_elecAngleAdv, int16_T - 119 *rty_r_phaA_Sin3, int16_T *rty_r_phaB_Sin3, int16_T *rty_r_phaC_Sin3); - 120 static void F02_Electrical_Angle_Ca_Disable(int32_T *rty_a_elecAngleAdv, int32_T - 121 *rty_a_elecAngle); - 122 static void F02_Electrical_Angle_Calculatio(int32_T rtu_r_DC, uint8_T rtu_z_pos, - 123 int8_T rtu_z_dir, int16_T rtu_z_counter, int16_T rtu_z_counterRaw, int32_T - 124 *rty_a_elecAngleAdv, int32_T *rty_a_elecAngle); - 125 static void falling_edge2(void); - 126 static void rising_edge(void); - 127 static void falling_edge2_b(void); - 128 static void rising_edge_f(void); - 129 static uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T - 130 bpSpace, uint32_T maxIndex, uint32_T *fraction) - 131 { - 132 uint8_T bpIndex; - 133 uint32_T uAdjust; - 134 uint32_T fbpIndex; - 135 - 136 /* Prelookup - Index and Fraction - 137 Index Search method: 'even' - 138 Extrapolation method: 'Clip' - 139 Use previous index: 'off' - 140 Use last breakpoint for index at or above upper limit: 'off' - 141 Remove protection against out-of-range input in generated code: 'off' - 142 Rounding mode: 'simplest' - 143 */ - 144 if (u <= bp0) { - 145 bpIndex = 0U; - 146 *fraction = 0U; - 147 } else { - 148 uAdjust = (uint32_T)u - bp0; - 149 fbpIndex = uAdjust / bpSpace; - 150 if (fbpIndex < maxIndex) { - 151 bpIndex = (uint8_T)fbpIndex; - 152 *fraction = (uint32_T)(((uint64_T)(uAdjust - bpIndex * bpSpace) << 31) / - 153 bpSpace); - 154 } else { - 155 bpIndex = (uint8_T)(maxIndex - 1U); - 156 *fraction = 2147483648U; - 157 } - 158 } - 159 - 160 return bpIndex; - 161 } - 162 - 163 static int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, - 164 const int16_T table[]) - 165 { - 166 uint32_T offset_0d; + 88 uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T bpSpace, + 89 uint32_T maxIndex, uint32_T *fraction); + 90 int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, const + 91 int16_T table[]); + 92 int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator); + 93 uint8_T plook_u8s32u32n31_evenc_s(int32_T u, int32_T bp0, uint32_T bpSpace, + 94 uint32_T maxIndex, uint32_T *fraction) + 95 { + 96 uint8_T bpIndex; + 97 uint32_T uAdjust; + 98 uint32_T fbpIndex; + 99 + 100 /* Prelookup - Index and Fraction + 101 Index Search method: 'even' + 102 Extrapolation method: 'Clip' + 103 Use previous index: 'off' + 104 Use last breakpoint for index at or above upper limit: 'off' + 105 Remove protection against out-of-range input in generated code: 'off' + 106 Rounding mode: 'simplest' + 107 */ + 108 if (u <= bp0) { + 109 bpIndex = 0U; + 110 *fraction = 0U; + 111 } else { + 112 uAdjust = (uint32_T)u - bp0; + 113 fbpIndex = uAdjust / bpSpace; + 114 if (fbpIndex < maxIndex) { + 115 bpIndex = (uint8_T)fbpIndex; + 116 *fraction = (uint32_T)(((uint64_T)(uAdjust - bpIndex * bpSpace) << 31) / + 117 bpSpace); + 118 } else { + 119 bpIndex = (uint8_T)(maxIndex - 1U); + 120 *fraction = 2147483648U; + 121 } + 122 } + 123 + 124 return bpIndex; + 125 } + 126 + 127 int16_T intrp1d_s16s32s32u8u32n31l_s(uint8_T bpIndex, uint32_T frac, const + 128 int16_T table[]) + 129 { + 130 uint32_T offset_0d; + 131 + 132 /* Interpolation 1-D + 133 Interpolation method: 'Linear' + 134 Use last breakpoint for index at or above upper limit: 'off' + 135 Rounding mode: 'simplest' + 136 Overflow mode: 'wrapping' + 137 */ + 138 offset_0d = bpIndex; + 139 return (int16_T)((int16_T)(((int64_T)(table[offset_0d + 1U] - table[offset_0d]) + 140 * frac) >> 31) + table[offset_0d]); + 141 } + 142 + 143 int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator) + 144 { + 145 return (((numerator < 0) != (denominator < 0)) && (numerator % denominator != + 146 0) ? -1 : 0) + numerator / denominator; + 147 } + 148 + 149 /* Model step function */ + 150 void BLDC_controller_step(RT_MODEL *const rtM) + 151 { + 152 P *rtP = ((P *) rtM->defaultParam); + 153 DW *rtDW = ((DW *) rtM->dwork); + 154 ExtU *rtU = (ExtU *) rtM->inputs; + 155 ExtY *rtY = (ExtY *) rtM->outputs; + 156 uint8_T rtb_Sum; + 157 int32_T rtb_Sum2; + 158 uint8_T rtb_BitwiseOperator; + 159 int16_T rtb_Abs2; + 160 int16_T rtb_Sum1_a; + 161 int32_T rtb_Abs5; + 162 int8_T rtAction; + 163 int8_T rtb_Sum2_h; + 164 uint32_T rtb_r_phaAdvDC_XA_o2; + 165 int32_T rtb_Switch1_idx_0; + 166 int32_T rtb_Switch1_idx_1; 167 - 168 /* Interpolation 1-D - 169 Interpolation method: 'Linear' - 170 Use last breakpoint for index at or above upper limit: 'off' - 171 Rounding mode: 'simplest' - 172 Overflow mode: 'wrapping' - 173 */ - 174 offset_0d = bpIndex; - 175 return (int16_T)((int16_T)(((int64_T)(table[offset_0d + 1U] - table[offset_0d]) - 176 * frac) >> 31) + table[offset_0d]); - 177 } + 168 /* Outputs for Atomic SubSystem: '<Root>/BLDC_controller' */ + 169 /* Sum: '<S12>/Sum' incorporates: + 170 * Gain: '<S12>/g_Ha' + 171 * Gain: '<S12>/g_Hb' + 172 * Inport: '<Root>/b_hallA ' + 173 * Inport: '<Root>/b_hallB' + 174 * Inport: '<Root>/b_hallC' + 175 */ + 176 rtb_Sum = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU->b_hallA << 2) + 177 + (uint8_T)(rtU->b_hallB << 1)) + rtU->b_hallC); 178 - 179 static int32_T div_nde_s32_floor(int32_T numerator, int32_T denominator) - 180 { - 181 return (((numerator < 0) != (denominator < 0)) && (numerator % denominator != - 182 0) ? -1 : 0) + numerator / denominator; - 183 } - 184 - 185 /* - 186 * Output and update for enable system: - 187 * '<S12>/F01_03_Direction_Detection' - 188 * '<S50>/F01_03_Direction_Detection' - 189 */ - 190 static void F01_03_Direction_Detection(boolean_T rtu_Enable, uint8_T rtu_z_pos, - 191 uint8_T rtu_z_posPrev, int8_T *rty_z_dir, int8_T *rty_z_dirPrev, - 192 DW_F01_03_Direction_Detection *localDW) - 193 { - 194 int8_T rtb_Sum2; - 195 - 196 /* Outputs for Enabled SubSystem: '<S12>/F01_03_Direction_Detection' incorporates: - 197 * EnablePort: '<S22>/Enable' - 198 */ - 199 if (rtu_Enable) { - 200 /* UnitDelay: '<S22>/UnitDelay1' */ - 201 *rty_z_dirPrev = localDW->UnitDelay1_DSTATE; - 202 - 203 /* Sum: '<S22>/Sum2' incorporates: - 204 * DataTypeConversion: '<S22>/Data Type Conversion1' - 205 * DataTypeConversion: '<S22>/Data Type Conversion10' - 206 */ - 207 rtb_Sum2 = (int8_T)((int8_T)rtu_z_pos - (int8_T)rtu_z_posPrev); - 208 - 209 /* Switch: '<S22>/Switch2' incorporates: - 210 * Constant: '<S22>/Constant20' - 211 * Constant: '<S22>/Constant23' - 212 * Constant: '<S22>/Constant24' - 213 * Constant: '<S22>/Constant8' - 214 * Logic: '<S22>/Logical Operator3' - 215 * RelationalOperator: '<S22>/Relational Operator1' - 216 * RelationalOperator: '<S22>/Relational Operator6' - 217 */ - 218 if ((rtb_Sum2 == 1) || (rtb_Sum2 == -5)) { - 219 *rty_z_dir = 1; - 220 } else { - 221 *rty_z_dir = -1; - 222 } - 223 - 224 /* End of Switch: '<S22>/Switch2' */ - 225 - 226 /* Update for UnitDelay: '<S22>/UnitDelay1' */ - 227 localDW->UnitDelay1_DSTATE = *rty_z_dir; - 228 } - 229 - 230 /* End of Outputs for SubSystem: '<S12>/F01_03_Direction_Detection' */ - 231 } - 232 - 233 /* - 234 * System reset for enable system: - 235 * '<S23>/Edge_counter' - 236 * '<S61>/Edge_counter' - 237 */ - 238 static void Edge_counter_Reset(DW_Edge_counter *localDW) - 239 { - 240 /* InitializeConditions for UnitDelay: '<S37>/UnitDelay1' */ - 241 localDW->UnitDelay1_DSTATE = 0U; - 242 } - 243 - 244 /* - 245 * Disable for enable system: - 246 * '<S23>/Edge_counter' - 247 * '<S61>/Edge_counter' - 248 */ - 249 static void Edge_counter_Disable(uint8_T *rty_cnt, DW_Edge_counter *localDW) - 250 { - 251 /* Outputs for Enabled SubSystem: '<S23>/Edge_counter' incorporates: - 252 * EnablePort: '<S27>/Enable' - 253 */ - 254 /* Disable for Outport: '<S27>/cnt' */ - 255 *rty_cnt = 0U; - 256 - 257 /* End of Outputs for SubSystem: '<S23>/Edge_counter' */ - 258 localDW->Edge_counter_MODE = false; - 259 } - 260 - 261 /* - 262 * Output and update for enable system: - 263 * '<S23>/Edge_counter' - 264 * '<S61>/Edge_counter' - 265 */ - 266 static void Edge_counter(boolean_T rtu_Enable, boolean_T rtu_b_edge, int8_T - 267 rtu_z_dir, int8_T rtu_z_dirPrev, uint8_T *rty_cnt, DW_Edge_counter *localDW) - 268 { - 269 boolean_T rtb_RelationalOperator1_i; - 270 uint8_T rtb_RelationalOperator1_m1; - 271 - 272 /* Outputs for Enabled SubSystem: '<S23>/Edge_counter' incorporates: - 273 * EnablePort: '<S27>/Enable' - 274 */ - 275 if (rtu_Enable) { - 276 if (!localDW->Edge_counter_MODE) { - 277 Edge_counter_Reset(localDW); - 278 localDW->Edge_counter_MODE = true; - 279 } - 280 - 281 /* RelationalOperator: '<S27>/Relational Operator1' */ - 282 rtb_RelationalOperator1_i = (rtu_z_dir == rtu_z_dirPrev); - 283 - 284 /* Switch: '<S37>/Switch1' incorporates: - 285 * Constant: '<S37>/Constant23' - 286 * Logic: '<S27>/Logical Operator2' - 287 * UnitDelay: '<S37>/UnitDelay1' - 288 */ - 289 if (!rtb_RelationalOperator1_i) { - 290 rtb_RelationalOperator1_m1 = 0U; - 291 } else { - 292 rtb_RelationalOperator1_m1 = localDW->UnitDelay1_DSTATE; - 293 } - 294 - 295 /* End of Switch: '<S37>/Switch1' */ - 296 - 297 /* Sum: '<S27>/Sum2' incorporates: - 298 * Logic: '<S27>/Logical Operator1' - 299 */ - 300 *rty_cnt = (uint8_T)((uint32_T)(rtu_b_edge && rtb_RelationalOperator1_i) + - 301 rtb_RelationalOperator1_m1); + 179 /* S-Function (sfix_bitop): '<S11>/Bitwise Operator' incorporates: + 180 * Inport: '<Root>/b_hallA ' + 181 * Inport: '<Root>/b_hallB' + 182 * Inport: '<Root>/b_hallC' + 183 * UnitDelay: '<S11>/UnitDelay' + 184 * UnitDelay: '<S11>/UnitDelay1' + 185 * UnitDelay: '<S11>/UnitDelay2' + 186 */ + 187 rtb_BitwiseOperator = (uint8_T)(rtU->b_hallA ^ rtU->b_hallB ^ rtU->b_hallC ^ + 188 rtDW->UnitDelay_DSTATE ^ rtDW->UnitDelay1_DSTATE_i ^ + 189 rtDW->UnitDelay2_DSTATE_h); + 190 + 191 /* If: '<S14>/If1' incorporates: + 192 * Constant: '<S14>/Constant6' + 193 * Constant: '<S17>/Constant1' + 194 * Constant: '<S17>/Constant23' + 195 * If: '<S7>/If2' + 196 * Inport: '<S15>/z_counterRawPrev' + 197 * RelationalOperator: '<S17>/Relational Operator1' + 198 * Sum: '<S14>/Sum1' + 199 * Switch: '<S17>/Switch1' + 200 * Switch: '<S17>/Switch2' + 201 * UnitDelay: '<S14>/UnitDelay1' + 202 * UnitDelay: '<S17>/UnitDelay1' + 203 */ + 204 if (rtb_BitwiseOperator != 0) { + 205 /* Outputs for IfAction SubSystem: '<S7>/F01_03_Direction_Detection' incorporates: + 206 * ActionPort: '<S13>/Action Port' + 207 */ + 208 /* UnitDelay: '<S13>/UnitDelay1' */ + 209 rtDW->UnitDelay1 = rtDW->Switch2; + 210 + 211 /* Sum: '<S13>/Sum2' incorporates: + 212 * Constant: '<S12>/vec_hallToPos' + 213 * Selector: '<S12>/Selector' + 214 * UnitDelay: '<S13>/UnitDelay2' + 215 */ + 216 rtb_Sum2_h = (int8_T)(rtConstP.vec_hallToPos_Value[rtb_Sum] - + 217 rtDW->UnitDelay2_DSTATE_i); + 218 + 219 /* Switch: '<S13>/Switch2' incorporates: + 220 * Constant: '<S13>/Constant20' + 221 * Constant: '<S13>/Constant23' + 222 * Constant: '<S13>/Constant24' + 223 * Constant: '<S13>/Constant8' + 224 * Logic: '<S13>/Logical Operator3' + 225 * RelationalOperator: '<S13>/Relational Operator1' + 226 * RelationalOperator: '<S13>/Relational Operator6' + 227 */ + 228 if ((rtb_Sum2_h == 1) || (rtb_Sum2_h == -5)) { + 229 rtDW->Switch2 = 1; + 230 } else { + 231 rtDW->Switch2 = -1; + 232 } + 233 + 234 /* End of Switch: '<S13>/Switch2' */ + 235 + 236 /* Update for UnitDelay: '<S13>/UnitDelay2' incorporates: + 237 * Constant: '<S12>/vec_hallToPos' + 238 * Selector: '<S12>/Selector' + 239 */ + 240 rtDW->UnitDelay2_DSTATE_i = rtConstP.vec_hallToPos_Value[rtb_Sum]; + 241 + 242 /* End of Outputs for SubSystem: '<S7>/F01_03_Direction_Detection' */ + 243 rtb_Abs2 = 1; + 244 + 245 /* Outputs for IfAction SubSystem: '<S14>/Counter_Hold_and_Error_Calculation' incorporates: + 246 * ActionPort: '<S15>/Action Port' + 247 */ + 248 rtDW->z_counterRawPrev = rtDW->UnitDelay1_DSTATE_c; + 249 + 250 /* Sum: '<S15>/Sum4' incorporates: + 251 * Constant: '<S14>/Constant6' + 252 * Constant: '<S17>/Constant23' + 253 * Inport: '<S15>/z_counterRawPrev' + 254 * Sum: '<S14>/Sum1' + 255 * UnitDelay: '<S14>/UnitDelay1' + 256 * UnitDelay: '<S15>/z_counter2' + 257 */ + 258 rtDW->Sum4 = (int16_T)(rtDW->z_counterRawPrev - rtDW->z_counter2_DSTATE); + 259 + 260 /* Update for UnitDelay: '<S15>/z_counter2' */ + 261 rtDW->z_counter2_DSTATE = rtDW->z_counterRawPrev; + 262 + 263 /* End of Outputs for SubSystem: '<S14>/Counter_Hold_and_Error_Calculation' */ + 264 } else { + 265 if (rtDW->UnitDelay1_DSTATE < 1500) { + 266 /* Switch: '<S17>/Switch2' incorporates: + 267 * UnitDelay: '<S17>/UnitDelay1' + 268 */ + 269 rtb_Abs2 = rtDW->UnitDelay1_DSTATE; + 270 } else { + 271 /* Switch: '<S17>/Switch2' incorporates: + 272 * Constant: '<S17>/Constant1' + 273 */ + 274 rtb_Abs2 = 1500; + 275 } + 276 + 277 rtb_Abs2++; + 278 } + 279 + 280 /* End of If: '<S14>/If1' */ + 281 + 282 /* Sum: '<S14>/Sum1' */ + 283 rtb_Sum1_a = rtb_Abs2; + 284 + 285 /* Switch: '<S16>/Switch1' incorporates: + 286 * Constant: '<S16>/Constant1' + 287 * Constant: '<S16>/cf_spdCoef' + 288 * Constant: '<S16>/z_maxCntRst' + 289 * Logic: '<S16>/Logical Operator1' + 290 * Product: '<S16>/Divide4' + 291 * RelationalOperator: '<S16>/Relational Operator2' + 292 * RelationalOperator: '<S16>/Relational Operator5' + 293 * Sum: '<S14>/Sum1' + 294 */ + 295 if ((rtb_Abs2 > 1500) || (rtDW->Switch2 != rtDW->UnitDelay1)) { + 296 rtb_Sum2 = 0; + 297 } else { + 298 rtb_Sum2 = rtP->cf_speedCoef * rtDW->Switch2 / rtDW->z_counterRawPrev; + 299 } + 300 + 301 /* End of Switch: '<S16>/Switch1' */ 302 - 303 /* Update for UnitDelay: '<S37>/UnitDelay1' */ - 304 localDW->UnitDelay1_DSTATE = *rty_cnt; - 305 } else { - 306 if (localDW->Edge_counter_MODE) { - 307 Edge_counter_Disable(rty_cnt, localDW); - 308 } - 309 } - 310 - 311 /* End of Outputs for SubSystem: '<S23>/Edge_counter' */ - 312 } - 313 - 314 /* - 315 * Output and update for trigger system: - 316 * '<S23>/Motor_Speed_Calculation' - 317 * '<S61>/Motor_Speed_Calculation' - 318 */ - 319 static void Motor_Speed_Calculation(boolean_T rtu_Trigger, int16_T rtu_z_counter, - 320 int8_T rtu_z_dir, int32_T *rty_n_mot, DW_Motor_Speed_Calculation *localDW, - 321 ZCE_Motor_Speed_Calculation *localZCE) - 322 { - 323 int32_T rtb_Sum2; + 303 /* Product: '<S16>/Divide2' incorporates: + 304 * Constant: '<S16>/Constant2' + 305 * Constant: '<S16>/Constant3' + 306 * Constant: '<S16>/cf_speedFilt' + 307 * Product: '<S16>/Divide1' + 308 * Product: '<S16>/Divide3' + 309 * Sum: '<S16>/Sum1' + 310 * Sum: '<S16>/Sum2' + 311 * UnitDelay: '<S16>/UnitDelay2' + 312 */ + 313 rtb_Sum2 = ((100 - rtP->cf_speedFilt) * rtDW->UnitDelay2_DSTATE + rtb_Sum2 * + 314 rtP->cf_speedFilt) / 100; + 315 + 316 /* Abs: '<S14>/Abs5' */ + 317 if (rtb_Sum2 < 0) { + 318 rtb_Abs5 = -rtb_Sum2; + 319 } else { + 320 rtb_Abs5 = rtb_Sum2; + 321 } + 322 + 323 /* End of Abs: '<S14>/Abs5' */ 324 - 325 /* Outputs for Triggered SubSystem: '<S23>/Motor_Speed_Calculation' incorporates: - 326 * TriggerPort: '<S28>/Trigger' - 327 */ - 328 if (rtu_Trigger && (localZCE->Motor_Speed_Calculation_Trig_ZC != POS_ZCSIG)) { - 329 /* Switch: '<S28>/Switch' incorporates: - 330 * Constant: '<S28>/Constant1' - 331 * Constant: '<S28>/cf_spdCoef' - 332 * Constant: '<S28>/z_maxCntRst' - 333 * Product: '<S28>/Divide4' - 334 * RelationalOperator: '<S28>/Relational Operator1' - 335 */ - 336 if (rtu_z_counter >= rtP.z_maxCntRst) { - 337 rtb_Sum2 = 0; - 338 } else { - 339 rtb_Sum2 = rtP.cf_speedCoef / rtu_z_counter; - 340 } - 341 - 342 /* End of Switch: '<S28>/Switch' */ - 343 - 344 /* Product: '<S28>/Product2' */ - 345 rtb_Sum2 *= rtu_z_dir; - 346 - 347 /* Product: '<S28>/Divide1' incorporates: - 348 * Constant: '<S28>/Constant2' - 349 * Sum: '<S28>/Sum2' - 350 * UnitDelay: '<S28>/UnitDelay1' - 351 * UnitDelay: '<S28>/UnitDelay5' - 352 */ - 353 *rty_n_mot = ((localDW->UnitDelay5_DSTATE + localDW->UnitDelay1_DSTATE) + - 354 rtb_Sum2) / 3; - 355 - 356 /* Update for UnitDelay: '<S28>/UnitDelay5' incorporates: - 357 * UnitDelay: '<S28>/UnitDelay1' - 358 */ - 359 localDW->UnitDelay5_DSTATE = localDW->UnitDelay1_DSTATE; + 325 /* Relay: '<S14>/n_commDeacv' */ + 326 if (rtb_Abs5 >= rtP->n_commDeacvHi) { + 327 rtDW->n_commDeacv_Mode = true; + 328 } else { + 329 if (rtb_Abs5 <= rtP->n_commAcvLo) { + 330 rtDW->n_commDeacv_Mode = false; + 331 } + 332 } + 333 + 334 /* Abs: '<S14>/Abs2' */ + 335 if (rtDW->Sum4 < 0) { + 336 rtb_Abs2 = (int16_T)-rtDW->Sum4; + 337 } else { + 338 rtb_Abs2 = rtDW->Sum4; + 339 } + 340 + 341 /* End of Abs: '<S14>/Abs2' */ + 342 + 343 /* Relay: '<S14>/dz_counter' */ + 344 if (rtb_Abs2 >= rtP->dz_counterHi) { + 345 rtDW->dz_counter_Mode = true; + 346 } else { + 347 if (rtb_Abs2 <= rtP->dz_counterLo) { + 348 rtDW->dz_counter_Mode = false; + 349 } + 350 } + 351 + 352 /* If: '<S2>/If1' incorporates: + 353 * Constant: '<S7>/z_ctrlTypSel1' + 354 */ + 355 rtb_Sum2_h = rtDW->If1_ActiveSubsystem; + 356 rtAction = -1; + 357 if (rtP->z_ctrlTypSel != 0) { + 358 rtAction = 0; + 359 } 360 - 361 /* Update for UnitDelay: '<S28>/UnitDelay1' */ - 362 localDW->UnitDelay1_DSTATE = rtb_Sum2; - 363 } - 364 - 365 localZCE->Motor_Speed_Calculation_Trig_ZC = rtu_Trigger; - 366 - 367 /* End of Outputs for SubSystem: '<S23>/Motor_Speed_Calculation' */ - 368 } - 369 - 370 /* Output and update for atomic system: '<S23>/falling_edge2' */ - 371 static void falling_edge2(void) - 372 { - 373 /* Logic: '<S30>/Logical Operator' incorporates: - 374 * Logic: '<S30>/Logical Operator1' - 375 * UnitDelay: '<S30>/UnitDelay' - 376 */ - 377 rtDW.LogicalOperator = ((!rtDW.Logic[0]) && rtDW.UnitDelay_DSTATE_b); - 378 - 379 /* Update for UnitDelay: '<S30>/UnitDelay' */ - 380 rtDW.UnitDelay_DSTATE_b = rtDW.Logic[0]; - 381 } - 382 - 383 /* Output and update for atomic system: '<S23>/rising_edge' */ - 384 static void rising_edge(void) - 385 { - 386 /* Logic: '<S31>/Logical Operator' incorporates: - 387 * Logic: '<S31>/Logical Operator1' - 388 * UnitDelay: '<S31>/UnitDelay' - 389 */ - 390 rtDW.LogicalOperator_h = (rtDW.LogicalOperator5 && (!rtDW.UnitDelay_DSTATE_l)); - 391 - 392 /* Update for UnitDelay: '<S31>/UnitDelay' */ - 393 rtDW.UnitDelay_DSTATE_l = rtDW.LogicalOperator5; - 394 } - 395 - 396 /* - 397 * Output and update for action system: - 398 * '<S14>/F03_01_Pure_Trapezoidal_Method' - 399 * '<S52>/F03_01_Pure_Trapezoidal_Method' - 400 */ - 401 static void F03_01_Pure_Trapezoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - 402 *rty_r_phaA_Trap, int16_T *rty_r_phaB_Trap, int16_T *rty_r_phaC_Trap) - 403 { - 404 uint8_T rtb_a_trapElecAngle_XA_o1; - 405 uint32_T rtb_a_trapElecAngle_XA_o2; - 406 - 407 /* PreLookup: '<S41>/a_trapElecAngle_XA' */ - 408 rtb_a_trapElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 409 60U, 6U, &rtb_a_trapElecAngle_XA_o2); - 410 - 411 /* Interpolation_n-D: '<S41>/r_trapPhaA_M1' */ - 412 *rty_r_phaA_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - 413 rtb_a_trapElecAngle_XA_o2, rtConstP.pooled9); - 414 - 415 /* Interpolation_n-D: '<S41>/r_trapPhaB_M1' */ - 416 *rty_r_phaB_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - 417 rtb_a_trapElecAngle_XA_o2, rtConstP.pooled10); - 418 - 419 /* Interpolation_n-D: '<S41>/r_trapPhaC_M1' */ - 420 *rty_r_phaC_Trap = intrp1d_s16s32s32u8u32n31l_s(rtb_a_trapElecAngle_XA_o1, - 421 rtb_a_trapElecAngle_XA_o2, rtConstP.pooled11); - 422 } - 423 - 424 /* - 425 * Output and update for action system: - 426 * '<S14>/F03_02_Sinusoidal_Method' - 427 * '<S52>/F03_02_Sinusoidal_Method' - 428 */ - 429 static void F03_02_Sinusoidal_Method(int32_T rtu_a_elecAngleAdv, int16_T - 430 *rty_r_phaA_Sin, int16_T *rty_r_phaB_Sin, int16_T *rty_r_phaC_Sin) - 431 { - 432 uint8_T rtb_a_sinElecAngle_XA_o1; - 433 uint32_T rtb_a_sinElecAngle_XA_o2; - 434 - 435 /* PreLookup: '<S43>/a_sinElecAngle_XA' */ - 436 rtb_a_sinElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 437 10U, 36U, &rtb_a_sinElecAngle_XA_o2); - 438 - 439 /* Interpolation_n-D: '<S43>/r_sinPhaA_M1' */ - 440 *rty_r_phaA_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 441 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled12); - 442 - 443 /* Interpolation_n-D: '<S43>/r_sinPhaB_M1' */ - 444 *rty_r_phaB_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 445 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled13); + 361 rtDW->If1_ActiveSubsystem = rtAction; + 362 if ((rtb_Sum2_h != rtAction) && (rtb_Sum2_h == 0)) { + 363 /* Disable for Outport: '<S8>/a_elecAngleAdv' */ + 364 rtDW->Switch_PhaAdv = 0; + 365 + 366 /* Disable for Outport: '<Root>/a_elecAngle' incorporates: + 367 * Outport: '<S8>/a_elecAngle' + 368 */ + 369 rtY->a_elecAngle = 0; + 370 } + 371 + 372 if (rtAction == 0) { + 373 /* Outputs for IfAction SubSystem: '<S2>/F02_Electrical_Angle_Calculation' incorporates: + 374 * ActionPort: '<S8>/Action Port' + 375 */ + 376 /* Switch: '<S8>/Switch3' incorporates: + 377 * Constant: '<S12>/vec_hallToPos' + 378 * Constant: '<S8>/Constant16' + 379 * Gain: '<S12>/g_Ha' + 380 * Gain: '<S12>/g_Hb' + 381 * Inport: '<Root>/b_hallA ' + 382 * Inport: '<Root>/b_hallB' + 383 * Inport: '<Root>/b_hallC' + 384 * RelationalOperator: '<S8>/Relational Operator7' + 385 * Selector: '<S12>/Selector' + 386 * Sum: '<S12>/Sum' + 387 * Sum: '<S8>/Sum1' + 388 */ + 389 if (rtDW->Switch2 == 1) { + 390 rtb_Sum2_h = rtConstP.vec_hallToPos_Value[rtb_Sum]; + 391 } else { + 392 rtb_Sum2_h = (int8_T)(rtConstP.vec_hallToPos_Value[(uint8_T)((uint32_T) + 393 (uint8_T)((uint32_T)(uint8_T)(rtU->b_hallA << 2) + (uint8_T) + 394 (rtU->b_hallB << 1)) + rtU->b_hallC)] + 1); + 395 } + 396 + 397 /* End of Switch: '<S8>/Switch3' */ + 398 + 399 /* Outport: '<Root>/a_elecAngle' incorporates: + 400 * Constant: '<S8>/a_elecAngle1' + 401 * Product: '<S8>/Divide4' + 402 * Product: '<S8>/Divide5' + 403 * Product: '<S8>/Product6' + 404 * Sum: '<S8>/Sum2' + 405 */ + 406 rtY->a_elecAngle = 60 * rtb_Sum1_a / rtDW->z_counterRawPrev * rtDW->Switch2 + 407 + rtb_Sum2_h * 60; + 408 + 409 /* Switch: '<S8>/Switch_PhaAdv' incorporates: + 410 * Constant: '<S8>/a_elecPeriod1' + 411 * Outport: '<Root>/a_elecAngle' + 412 */ + 413 if (rtP->b_phaAdvEna) { + 414 /* Abs: '<S8>/Abs2' incorporates: + 415 * Inport: '<Root>/r_DC' + 416 */ + 417 if (rtU->r_DC < 0) { + 418 rtb_Switch1_idx_0 = -rtU->r_DC; + 419 } else { + 420 rtb_Switch1_idx_0 = rtU->r_DC; + 421 } + 422 + 423 /* End of Abs: '<S8>/Abs2' */ + 424 + 425 /* PreLookup: '<S8>/r_phaAdvDC_XA' */ + 426 rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtb_Switch1_idx_0, + 427 rtP->r_phaAdvDC_XA[0], (uint32_T)rtP->r_phaAdvDC_XA[1] - + 428 rtP->r_phaAdvDC_XA[0], 10U, &rtb_r_phaAdvDC_XA_o2); + 429 + 430 /* Interpolation_n-D: '<S8>/a_phaAdv_M2' */ + 431 rtb_Abs2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 432 rtb_r_phaAdvDC_XA_o2, rtP->a_phaAdv_M1); + 433 + 434 /* Sum: '<S8>/Sum3' incorporates: + 435 * Outport: '<Root>/a_elecAngle' + 436 * Product: '<S8>/Product2' + 437 */ + 438 rtb_Switch1_idx_0 = (int16_T)(rtb_Abs2 * rtDW->Switch2) + rtY->a_elecAngle; + 439 + 440 /* Math: '<S8>/Math Function' */ + 441 rtDW->Switch_PhaAdv = rtb_Switch1_idx_0 - div_nde_s32_floor + 442 (rtb_Switch1_idx_0, 360) * 360; + 443 } else { + 444 rtDW->Switch_PhaAdv = rtY->a_elecAngle; + 445 } 446 - 447 /* Interpolation_n-D: '<S43>/r_sinPhaC_M1' */ - 448 *rty_r_phaC_Sin = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 449 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled14); - 450 } - 451 - 452 /* - 453 * Output and update for action system: - 454 * '<S14>/F03_02_Sinusoidal3rd_Method' - 455 * '<S52>/F03_02_Sinusoidal3rd_Method' - 456 */ - 457 static void F03_02_Sinusoidal3rd_Method(int32_T rtu_a_elecAngleAdv, int16_T - 458 *rty_r_phaA_Sin3, int16_T *rty_r_phaB_Sin3, int16_T *rty_r_phaC_Sin3) - 459 { - 460 uint8_T rtb_a_sinElecAngle_XA_o1; - 461 uint32_T rtb_a_sinElecAngle_XA_o2; - 462 - 463 /* PreLookup: '<S42>/a_sinElecAngle_XA' */ - 464 rtb_a_sinElecAngle_XA_o1 = plook_u8s32u32n31_evenc_s(rtu_a_elecAngleAdv, 0, - 465 10U, 36U, &rtb_a_sinElecAngle_XA_o2); - 466 - 467 /* Interpolation_n-D: '<S42>/r_sin3PhaA_M1' */ - 468 *rty_r_phaA_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 469 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled15); - 470 - 471 /* Interpolation_n-D: '<S42>/r_sin3PhaB_M1' */ - 472 *rty_r_phaB_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 473 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled16); - 474 - 475 /* Interpolation_n-D: '<S42>/r_sin3PhaC_M1' */ - 476 *rty_r_phaC_Sin3 = intrp1d_s16s32s32u8u32n31l_s(rtb_a_sinElecAngle_XA_o1, - 477 rtb_a_sinElecAngle_XA_o2, rtConstP.pooled17); - 478 } + 447 /* End of Switch: '<S8>/Switch_PhaAdv' */ + 448 /* End of Outputs for SubSystem: '<S2>/F02_Electrical_Angle_Calculation' */ + 449 } + 450 + 451 /* End of If: '<S2>/If1' */ + 452 + 453 /* SwitchCase: '<S9>/Switch Case' incorporates: + 454 * Constant: '<S7>/z_ctrlTypSel1' + 455 */ + 456 switch (rtP->z_ctrlTypSel) { + 457 case 1: + 458 /* Outputs for IfAction SubSystem: '<S9>/F03_01_Pure_Trapezoidal_Method' incorporates: + 459 * ActionPort: '<S18>/Action Port' + 460 */ + 461 /* PreLookup: '<S18>/a_trapElecAngle_XA' */ + 462 rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 60U, + 463 6U, &rtb_r_phaAdvDC_XA_o2); + 464 + 465 /* Interpolation_n-D: '<S18>/r_trapPhaA_M1' */ + 466 rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 467 rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaA_M1_Table); + 468 + 469 /* Interpolation_n-D: '<S18>/r_trapPhaB_M1' */ + 470 rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 471 rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaB_M1_Table); + 472 + 473 /* Interpolation_n-D: '<S18>/r_trapPhaC_M1' */ + 474 rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 475 rtb_r_phaAdvDC_XA_o2, rtConstP.r_trapPhaC_M1_Table); + 476 + 477 /* End of Outputs for SubSystem: '<S9>/F03_01_Pure_Trapezoidal_Method' */ + 478 break; 479 - 480 /* - 481 * Disable for action system: - 482 * '<S2>/F02_Electrical_Angle_Calculation' - 483 * '<S3>/F02_Electrical_Angle_Calculation' - 484 */ - 485 static void F02_Electrical_Angle_Ca_Disable(int32_T *rty_a_elecAngleAdv, int32_T - 486 *rty_a_elecAngle) - 487 { - 488 /* Disable for Outport: '<S13>/a_elecAngleAdv' */ - 489 *rty_a_elecAngleAdv = 0; - 490 - 491 /* Disable for Outport: '<S13>/a_elecAngle' */ - 492 *rty_a_elecAngle = 0; - 493 } - 494 - 495 /* - 496 * Output and update for action system: - 497 * '<S2>/F02_Electrical_Angle_Calculation' - 498 * '<S3>/F02_Electrical_Angle_Calculation' - 499 */ - 500 static void F02_Electrical_Angle_Calculatio(int32_T rtu_r_DC, uint8_T rtu_z_pos, - 501 int8_T rtu_z_dir, int16_T rtu_z_counter, int16_T rtu_z_counterRaw, int32_T - 502 *rty_a_elecAngleAdv, int32_T *rty_a_elecAngle) - 503 { - 504 uint8_T rtb_Switch3; - 505 int16_T rtb_a_phaAdv_M2; - 506 uint32_T rtb_r_phaAdvDC_XA_o2; - 507 int32_T rtu_r_DC_0; - 508 - 509 /* Switch: '<S13>/Switch3' incorporates: - 510 * Constant: '<S13>/Constant16' - 511 * RelationalOperator: '<S13>/Relational Operator7' - 512 * Sum: '<S13>/Sum1' - 513 */ - 514 if (rtu_z_dir == 1) { - 515 rtb_Switch3 = rtu_z_pos; - 516 } else { - 517 rtb_Switch3 = (uint8_T)(rtu_z_pos + 1U); - 518 } - 519 - 520 /* End of Switch: '<S13>/Switch3' */ - 521 - 522 /* Sum: '<S13>/Sum2' incorporates: - 523 * Constant: '<S13>/a_elecAngle1' - 524 * Product: '<S13>/Divide4' - 525 * Product: '<S13>/Divide5' - 526 * Product: '<S13>/Product6' - 527 */ - 528 *rty_a_elecAngle = 60 * rtu_z_counterRaw / rtu_z_counter * rtu_z_dir + - 529 rtb_Switch3 * 60; - 530 - 531 /* Switch: '<S13>/Switch_PhaAdv' incorporates: - 532 * Constant: '<S13>/a_elecPeriod1' - 533 * Math: '<S13>/Math Function' - 534 */ - 535 if (rtP.b_phaAdvEna) { - 536 /* Abs: '<S13>/Abs2' */ - 537 if (rtu_r_DC < 0) { - 538 rtu_r_DC_0 = -rtu_r_DC; - 539 } else { - 540 rtu_r_DC_0 = rtu_r_DC; - 541 } + 480 case 2: + 481 /* Outputs for IfAction SubSystem: '<S9>/F03_02_Sinusoidal_Method' incorporates: + 482 * ActionPort: '<S19>/Action Port' + 483 */ + 484 /* PreLookup: '<S19>/a_sinElecAngle_XA' */ + 485 rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 10U, + 486 36U, &rtb_r_phaAdvDC_XA_o2); + 487 + 488 /* Interpolation_n-D: '<S19>/r_sinPhaA_M1' */ + 489 rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 490 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaA_M1_Table); + 491 + 492 /* Interpolation_n-D: '<S19>/r_sinPhaB_M1' */ + 493 rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 494 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaB_M1_Table); + 495 + 496 /* Interpolation_n-D: '<S19>/r_sinPhaC_M1' */ + 497 rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 498 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sinPhaC_M1_Table); + 499 + 500 /* End of Outputs for SubSystem: '<S9>/F03_02_Sinusoidal_Method' */ + 501 break; + 502 + 503 case 3: + 504 /* Outputs for IfAction SubSystem: '<S9>/F03_03_Sinusoidal3rd_Method' incorporates: + 505 * ActionPort: '<S20>/Action Port' + 506 */ + 507 /* PreLookup: '<S20>/a_sinElecAngle_XA' */ + 508 rtb_BitwiseOperator = plook_u8s32u32n31_evenc_s(rtDW->Switch_PhaAdv, 0, 10U, + 509 36U, &rtb_r_phaAdvDC_XA_o2); + 510 + 511 /* Interpolation_n-D: '<S20>/r_sin3PhaA_M1' */ + 512 rtDW->Merge = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 513 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaA_M1_Table); + 514 + 515 /* Interpolation_n-D: '<S20>/r_sin3PhaB_M1' */ + 516 rtDW->Merge1 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 517 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaB_M1_Table); + 518 + 519 /* Interpolation_n-D: '<S20>/r_sin3PhaC_M1' */ + 520 rtDW->Merge2 = intrp1d_s16s32s32u8u32n31l_s(rtb_BitwiseOperator, + 521 rtb_r_phaAdvDC_XA_o2, rtConstP.r_sin3PhaC_M1_Table); + 522 + 523 /* End of Outputs for SubSystem: '<S9>/F03_03_Sinusoidal3rd_Method' */ + 524 break; + 525 } + 526 + 527 /* End of SwitchCase: '<S9>/Switch Case' */ + 528 + 529 /* Abs: '<S14>/Abs1' incorporates: + 530 * Inport: '<Root>/r_DC' + 531 * Signum: '<S14>/Sign1' + 532 */ + 533 if (rtU->r_DC < 0) { + 534 rtb_Switch1_idx_0 = -rtU->r_DC; + 535 rtb_Switch1_idx_1 = -1; + 536 } else { + 537 rtb_Switch1_idx_0 = rtU->r_DC; + 538 rtb_Switch1_idx_1 = (rtU->r_DC > 0); + 539 } + 540 + 541 /* End of Abs: '<S14>/Abs1' */ 542 - 543 /* End of Abs: '<S13>/Abs2' */ - 544 - 545 /* PreLookup: '<S13>/r_phaAdvDC_XA' */ - 546 rtb_Switch3 = plook_u8s32u32n31_evenc_s(rtu_r_DC_0, rtP.r_phaAdvDC_XA[0], - 547 (uint32_T)rtP.r_phaAdvDC_XA[1] - rtP.r_phaAdvDC_XA[0], 10U, - 548 &rtb_r_phaAdvDC_XA_o2); + 543 /* Signum: '<S14>/Sign' */ + 544 if (rtDW->Switch2 < 0) { + 545 rtb_Sum2_h = -1; + 546 } else { + 547 rtb_Sum2_h = (int8_T)(rtDW->Switch2 > 0); + 548 } 549 - 550 /* Interpolation_n-D: '<S13>/a_phaAdv_M2' */ - 551 rtb_a_phaAdv_M2 = intrp1d_s16s32s32u8u32n31l_s(rtb_Switch3, - 552 rtb_r_phaAdvDC_XA_o2, rtP.a_phaAdv_M1); - 553 - 554 /* Sum: '<S13>/Sum3' incorporates: - 555 * Product: '<S13>/Product2' - 556 */ - 557 rtu_r_DC_0 = rtu_z_dir * rtb_a_phaAdv_M2 + *rty_a_elecAngle; - 558 *rty_a_elecAngleAdv = rtu_r_DC_0 - div_nde_s32_floor(rtu_r_DC_0, 360) * 360; - 559 } else { - 560 *rty_a_elecAngleAdv = *rty_a_elecAngle; - 561 } - 562 - 563 /* End of Switch: '<S13>/Switch_PhaAdv' */ - 564 } - 565 - 566 /* Output and update for atomic system: '<S61>/falling_edge2' */ - 567 static void falling_edge2_b(void) - 568 { - 569 /* Logic: '<S68>/Logical Operator' incorporates: - 570 * Logic: '<S68>/Logical Operator1' - 571 * UnitDelay: '<S68>/UnitDelay' - 572 */ - 573 rtDW.LogicalOperator_h = ((!rtDW.Logic_j[0]) && rtDW.UnitDelay_DSTATE_i); - 574 - 575 /* Update for UnitDelay: '<S68>/UnitDelay' */ - 576 rtDW.UnitDelay_DSTATE_i = rtDW.Logic_j[0]; - 577 } - 578 - 579 /* Output and update for atomic system: '<S61>/rising_edge' */ - 580 static void rising_edge_f(void) - 581 { - 582 /* Logic: '<S69>/Logical Operator' incorporates: - 583 * Logic: '<S69>/Logical Operator1' - 584 * UnitDelay: '<S69>/UnitDelay' - 585 */ - 586 rtDW.LogicalOperator_h = (rtDW.LogicalOperator5 && (!rtDW.UnitDelay_DSTATE_k)); - 587 - 588 /* Update for UnitDelay: '<S69>/UnitDelay' */ - 589 rtDW.UnitDelay_DSTATE_k = rtDW.LogicalOperator5; - 590 } - 591 - 592 /* Model step function */ - 593 void BLDC_controller_step(void) - 594 { - 595 uint8_T rtb_Sum; - 596 boolean_T rtb_LogicalOperator; - 597 boolean_T rtb_LogicalOperator3; - 598 int32_T rtb_Abs1; - 599 int8_T rtPrevAction; - 600 int8_T rtAction; - 601 uint8_T rtb_Sum_a; - 602 int16_T rtb_Switch; - 603 int16_T rtb_Switch_b; - 604 int16_T rtb_Sum1; - 605 int16_T rtb_Sum1_c; - 606 int32_T rtb_Switch1_idx_0; - 607 int32_T rtb_Switch1_idx_1; - 608 uint8_T tmp; - 609 - 610 /* Outputs for Atomic SubSystem: '<Root>/BLDC_controller' */ - 611 /* Sum: '<S21>/Sum' incorporates: - 612 * Gain: '<S21>/g_Ha' - 613 * Gain: '<S21>/g_Hb' - 614 * Inport: '<Root>/b_hallALeft ' - 615 * Inport: '<Root>/b_hallBLeft' - 616 * Inport: '<Root>/b_hallCLeft' - 617 */ - 618 rtb_Sum = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU.b_hallALeft << - 619 2) + (uint8_T)(rtU.b_hallBLeft << 1)) + rtU.b_hallCLeft); - 620 - 621 /* Logic: '<S20>/Logical Operator' incorporates: - 622 * Inport: '<Root>/b_hallALeft ' - 623 * Inport: '<Root>/b_hallBLeft' - 624 * Inport: '<Root>/b_hallCLeft' - 625 * UnitDelay: '<S20>/UnitDelay' - 626 * UnitDelay: '<S20>/UnitDelay1' - 627 * UnitDelay: '<S20>/UnitDelay2' + 550 /* End of Signum: '<S14>/Sign' */ + 551 + 552 /* Switch: '<S10>/Switch1' incorporates: + 553 * Constant: '<S12>/vec_hallToPos' + 554 * Constant: '<S14>/CTRL_COMM' + 555 * Constant: '<S14>/r_commDCDeacv' + 556 * Constant: '<S7>/z_ctrlTypSel1' + 557 * Inport: '<Root>/r_DC' + 558 * Logic: '<S14>/Logical Operator2' + 559 * LookupNDDirect: '<S10>/z_commutMap_M1' + 560 * Product: '<S10>/Divide2' + 561 * Product: '<S10>/Divide4' + 562 * RelationalOperator: '<S14>/Relational Operator1' + 563 * RelationalOperator: '<S14>/Relational Operator3' + 564 * RelationalOperator: '<S14>/Relational Operator4' + 565 * Relay: '<S14>/dz_counter' + 566 * Relay: '<S14>/n_commDeacv' + 567 * Selector: '<S12>/Selector' + 568 * + 569 * About '<S10>/z_commutMap_M1': + 570 * 2-dimensional Direct Look-Up returning a Column + 571 */ + 572 if ((rtP->z_ctrlTypSel != 0) && (rtb_Switch1_idx_0 > rtP->r_commDCDeacv) && + 573 (rtb_Sum2_h == rtb_Switch1_idx_1) && rtDW->n_commDeacv_Mode && + 574 (!rtDW->dz_counter_Mode)) { + 575 rtb_Switch1_idx_0 = rtU->r_DC * rtDW->Merge; + 576 rtb_Switch1_idx_1 = rtU->r_DC * rtDW->Merge1; + 577 rtb_Abs5 = rtU->r_DC * rtDW->Merge2; + 578 } else { + 579 if (rtConstP.vec_hallToPos_Value[rtb_Sum] > 5) { + 580 /* LookupNDDirect: '<S10>/z_commutMap_M1' + 581 * + 582 * About '<S10>/z_commutMap_M1': + 583 * 2-dimensional Direct Look-Up returning a Column + 584 */ + 585 rtb_Sum2_h = 5; + 586 } else if (rtConstP.vec_hallToPos_Value[rtb_Sum] < 0) { + 587 /* LookupNDDirect: '<S10>/z_commutMap_M1' + 588 * + 589 * About '<S10>/z_commutMap_M1': + 590 * 2-dimensional Direct Look-Up returning a Column + 591 */ + 592 rtb_Sum2_h = 0; + 593 } else { + 594 /* LookupNDDirect: '<S10>/z_commutMap_M1' incorporates: + 595 * Constant: '<S12>/vec_hallToPos' + 596 * Selector: '<S12>/Selector' + 597 * + 598 * About '<S10>/z_commutMap_M1': + 599 * 2-dimensional Direct Look-Up returning a Column + 600 */ + 601 rtb_Sum2_h = rtConstP.vec_hallToPos_Value[rtb_Sum]; + 602 } + 603 + 604 /* LookupNDDirect: '<S10>/z_commutMap_M1' incorporates: + 605 * Constant: '<S12>/vec_hallToPos' + 606 * Selector: '<S12>/Selector' + 607 * + 608 * About '<S10>/z_commutMap_M1': + 609 * 2-dimensional Direct Look-Up returning a Column + 610 */ + 611 rtb_Abs5 = rtb_Sum2_h * 3; + 612 rtb_Switch1_idx_0 = rtU->r_DC * rtConstP.z_commutMap_M1_table[rtb_Abs5]; + 613 rtb_Switch1_idx_1 = rtConstP.z_commutMap_M1_table[1 + rtb_Abs5] * rtU->r_DC; + 614 rtb_Abs5 = rtConstP.z_commutMap_M1_table[2 + rtb_Abs5] * rtU->r_DC; + 615 } + 616 + 617 /* End of Switch: '<S10>/Switch1' */ + 618 + 619 /* Outport: '<Root>/DC_phaA' incorporates: + 620 * Constant: '<S10>/Constant1' + 621 * Product: '<S10>/Divide1' + 622 */ + 623 rtY->DC_phaA = rtb_Switch1_idx_0 / 1000; + 624 + 625 /* Outport: '<Root>/DC_phaB' incorporates: + 626 * Constant: '<S10>/Constant1' + 627 * Product: '<S10>/Divide1' 628 */ - 629 rtb_LogicalOperator = (boolean_T)((rtU.b_hallALeft != 0) ^ (rtU.b_hallBLeft != - 630 0) ^ (rtU.b_hallCLeft != 0) ^ (rtDW.UnitDelay_DSTATE != 0) ^ - 631 (rtDW.UnitDelay1_DSTATE_p != 0)) ^ (rtDW.UnitDelay2_DSTATE != 0); - 632 - 633 /* Outputs for Enabled SubSystem: '<S12>/F01_03_Direction_Detection' */ - 634 - 635 /* Selector: '<S21>/Selector' incorporates: - 636 * Constant: '<S21>/vec_hallToPos' - 637 * UnitDelay: '<S21>/UnitDelay1' + 629 rtY->DC_phaB = rtb_Switch1_idx_1 / 1000; + 630 + 631 /* Update for UnitDelay: '<S11>/UnitDelay' incorporates: + 632 * Inport: '<Root>/b_hallA ' + 633 */ + 634 rtDW->UnitDelay_DSTATE = rtU->b_hallA; + 635 + 636 /* Update for UnitDelay: '<S11>/UnitDelay1' incorporates: + 637 * Inport: '<Root>/b_hallB' 638 */ - 639 F01_03_Direction_Detection(rtb_LogicalOperator, rtConstP.pooled26[rtb_Sum], - 640 rtDW.UnitDelay1_DSTATE_g, &rtDW.Switch2_e, &rtDW.UnitDelay1_k, - 641 &rtDW.F01_03_Direction_Detection_o); - 642 - 643 /* End of Outputs for SubSystem: '<S12>/F01_03_Direction_Detection' */ - 644 - 645 /* Logic: '<S23>/Logical Operator3' incorporates: - 646 * Constant: '<S23>/z_maxCntRst' - 647 * RelationalOperator: '<S23>/Relational Operator1' - 648 * UnitDelay: '<S23>/z_counterRawPrev' - 649 */ - 650 rtb_LogicalOperator3 = (rtb_LogicalOperator || (rtDW.z_counterRawPrev_DSTATE > - 651 rtP.z_maxCntRst)); - 652 - 653 /* Outputs for Enabled SubSystem: '<S23>/Edge_counter' */ + 639 rtDW->UnitDelay1_DSTATE_i = rtU->b_hallB; + 640 + 641 /* Update for UnitDelay: '<S11>/UnitDelay2' incorporates: + 642 * Inport: '<Root>/b_hallC' + 643 */ + 644 rtDW->UnitDelay2_DSTATE_h = rtU->b_hallC; + 645 + 646 /* Update for UnitDelay: '<S17>/UnitDelay1' */ + 647 rtDW->UnitDelay1_DSTATE = rtb_Sum1_a; + 648 + 649 /* Update for UnitDelay: '<S14>/UnitDelay1' */ + 650 rtDW->UnitDelay1_DSTATE_c = rtb_Sum1_a; + 651 + 652 /* Update for UnitDelay: '<S16>/UnitDelay2' */ + 653 rtDW->UnitDelay2_DSTATE = rtb_Sum2; 654 - 655 /* Logic: '<S23>/Logical Operator2' incorporates: - 656 * UnitDelay: '<S23>/UnitDelay8' - 657 */ - 658 Edge_counter(!rtDW.UnitDelay8_DSTATE, rtb_LogicalOperator, rtDW.Switch2_e, - 659 rtDW.UnitDelay1_k, &rtDW.Sum2_l, &rtDW.Edge_counter_f); + 655 /* Outport: '<Root>/DC_phaC' incorporates: + 656 * Constant: '<S10>/Constant1' + 657 * Product: '<S10>/Divide1' + 658 */ + 659 rtY->DC_phaC = rtb_Abs5 / 1000; 660 - 661 /* End of Outputs for SubSystem: '<S23>/Edge_counter' */ + 661 /* End of Outputs for SubSystem: '<Root>/BLDC_controller' */ 662 - 663 /* Logic: '<S23>/Logical Operator5' incorporates: - 664 * Constant: '<S23>/z_maxCntRst2' - 665 * RelationalOperator: '<S23>/Relational Operator3' - 666 * RelationalOperator: '<S23>/Relational Operator6' - 667 * UnitDelay: '<S23>/z_counterRawPrev' - 668 */ - 669 rtDW.LogicalOperator5 = ((rtDW.Switch2_e != rtDW.UnitDelay1_k) || - 670 (rtDW.z_counterRawPrev_DSTATE > rtP.z_maxCntRst)); + 663 /* Outport: '<Root>/n_mot' */ + 664 rtY->n_mot = rtb_Sum2; + 665 } + 666 + 667 /* Model initialize function */ + 668 void BLDC_controller_initialize(RT_MODEL *const rtM) + 669 { + 670 DW *rtDW = ((DW *) rtM->dwork); 671 - 672 /* Outputs for Atomic SubSystem: '<S23>/rising_edge' */ - 673 rising_edge(); - 674 - 675 /* End of Outputs for SubSystem: '<S23>/rising_edge' */ - 676 - 677 /* CombinatorialLogic: '<S29>/Logic' incorporates: - 678 * Constant: '<S23>/z_nrEdgeSpdAcv' - 679 * Memory: '<S29>/Memory' - 680 * RelationalOperator: '<S23>/Relational Operator5' - 681 */ - 682 rtb_Switch1_idx_0 = (int32_T)(((((uint32_T)(rtDW.Sum2_l >= rtP.z_nrEdgeSpdAcv) - 683 << 1) + rtDW.LogicalOperator_h) << 1) + rtDW.Memory_PreviousInput); - 684 rtDW.Logic[0U] = rtConstP.pooled30[(uint32_T)rtb_Switch1_idx_0]; - 685 rtDW.Logic[1U] = rtConstP.pooled30[rtb_Switch1_idx_0 + 8U]; - 686 - 687 /* Outputs for Atomic SubSystem: '<S23>/falling_edge2' */ - 688 falling_edge2(); - 689 - 690 /* End of Outputs for SubSystem: '<S23>/falling_edge2' */ - 691 - 692 /* Switch: '<S23>/Switch' incorporates: - 693 * Logic: '<S23>/Logical Operator1' - 694 * Switch: '<S23>/Switch1' - 695 * UnitDelay: '<S23>/z_counter2' - 696 * UnitDelay: '<S23>/z_counterRawPrev' - 697 */ - 698 if (rtb_LogicalOperator3 && rtDW.Logic[0]) { - 699 rtb_Switch = rtDW.z_counterRawPrev_DSTATE; - 700 } else if (rtDW.LogicalOperator) { - 701 /* Switch: '<S23>/Switch1' incorporates: - 702 * Constant: '<S23>/z_maxCntRst1' - 703 */ - 704 rtb_Switch = rtP.z_maxCntRst; - 705 } else { - 706 rtb_Switch = rtDW.z_counter2_DSTATE; - 707 } - 708 - 709 /* End of Switch: '<S23>/Switch' */ - 710 - 711 /* Outputs for Triggered SubSystem: '<S23>/Motor_Speed_Calculation' */ - 712 - 713 /* Outport: '<Root>/n_motLeft' */ - 714 Motor_Speed_Calculation(rtb_LogicalOperator3, rtb_Switch, rtDW.Switch2_e, - 715 &rtY.n_motLeft, &rtDW.Motor_Speed_Calculation_m, - 716 &rtPrevZCX.Motor_Speed_Calculation_m); - 717 - 718 /* End of Outputs for SubSystem: '<S23>/Motor_Speed_Calculation' */ - 719 - 720 /* Abs: '<S15>/Abs5' incorporates: - 721 * Outport: '<Root>/n_motLeft' - 722 */ - 723 if (rtY.n_motLeft < 0) { - 724 rtb_Abs1 = -rtY.n_motLeft; - 725 } else { - 726 rtb_Abs1 = rtY.n_motLeft; - 727 } - 728 - 729 /* End of Abs: '<S15>/Abs5' */ - 730 - 731 /* Relay: '<S15>/Relay' */ - 732 if (rtb_Abs1 >= rtP.n_commDeacvHi) { - 733 rtDW.Relay_Mode = true; - 734 } else { - 735 if (rtb_Abs1 <= rtP.n_commAcvLo) { - 736 rtDW.Relay_Mode = false; - 737 } - 738 } - 739 - 740 /* Switch: '<S32>/Switch1' incorporates: - 741 * Constant: '<S32>/Constant23' - 742 * UnitDelay: '<S32>/UnitDelay1' - 743 */ - 744 if (rtb_LogicalOperator3) { - 745 rtb_Sum1_c = 0; - 746 } else { - 747 rtb_Sum1_c = rtDW.UnitDelay1_DSTATE; - 748 } - 749 - 750 /* End of Switch: '<S32>/Switch1' */ - 751 - 752 /* Sum: '<S23>/Sum1' */ - 753 rtb_Sum1 = (int16_T)(1 + rtb_Sum1_c); - 754 - 755 /* If: '<S2>/If1' incorporates: - 756 * Constant: '<S12>/z_ctrlTypSel1' - 757 * Constant: '<S21>/vec_hallToPos' - 758 * Inport: '<Root>/r_DCLeft' - 759 * Outport: '<Root>/a_elecAngleLeft' - 760 * Selector: '<S21>/Selector' - 761 */ - 762 rtPrevAction = rtDW.If1_ActiveSubsystem; - 763 rtAction = -1; - 764 if (rtP.z_ctrlTypSel != 0) { - 765 rtAction = 0; - 766 } - 767 - 768 rtDW.If1_ActiveSubsystem = rtAction; - 769 if ((rtPrevAction != rtAction) && (rtPrevAction == 0)) { - 770 F02_Electrical_Angle_Ca_Disable(&rtDW.Switch_PhaAdv_a, &rtY.a_elecAngleLeft); - 771 } - 772 - 773 if (rtAction == 0) { - 774 /* Outputs for IfAction SubSystem: '<S2>/F02_Electrical_Angle_Calculation' incorporates: - 775 * ActionPort: '<S13>/Action Port' - 776 */ - 777 F02_Electrical_Angle_Calculatio(rtU.r_DCLeft, rtConstP.pooled26[rtb_Sum], - 778 rtDW.Switch2_e, rtb_Switch, rtb_Sum1, &rtDW.Switch_PhaAdv_a, - 779 &rtY.a_elecAngleLeft); - 780 - 781 /* End of Outputs for SubSystem: '<S2>/F02_Electrical_Angle_Calculation' */ - 782 } - 783 - 784 /* End of If: '<S2>/If1' */ - 785 - 786 /* SwitchCase: '<S14>/Switch Case' incorporates: - 787 * Constant: '<S12>/z_ctrlTypSel1' - 788 */ - 789 switch (rtP.z_ctrlTypSel) { - 790 case 1: - 791 /* Outputs for IfAction SubSystem: '<S14>/F03_01_Pure_Trapezoidal_Method' incorporates: - 792 * ActionPort: '<S41>/Action Port' - 793 */ - 794 F03_01_Pure_Trapezoidal_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, - 795 &rtDW.Merge1, &rtDW.Merge2); - 796 - 797 /* End of Outputs for SubSystem: '<S14>/F03_01_Pure_Trapezoidal_Method' */ - 798 break; - 799 - 800 case 2: - 801 /* Outputs for IfAction SubSystem: '<S14>/F03_02_Sinusoidal_Method' incorporates: - 802 * ActionPort: '<S43>/Action Port' - 803 */ - 804 F03_02_Sinusoidal_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, &rtDW.Merge1, - 805 &rtDW.Merge2); - 806 - 807 /* End of Outputs for SubSystem: '<S14>/F03_02_Sinusoidal_Method' */ - 808 break; - 809 - 810 case 3: - 811 /* Outputs for IfAction SubSystem: '<S14>/F03_02_Sinusoidal3rd_Method' incorporates: - 812 * ActionPort: '<S42>/Action Port' - 813 */ - 814 F03_02_Sinusoidal3rd_Method(rtDW.Switch_PhaAdv_a, &rtDW.Merge, &rtDW.Merge1, - 815 &rtDW.Merge2); - 816 - 817 /* End of Outputs for SubSystem: '<S14>/F03_02_Sinusoidal3rd_Method' */ - 818 break; - 819 } - 820 - 821 /* End of SwitchCase: '<S14>/Switch Case' */ - 822 - 823 /* Abs: '<S15>/Abs1' incorporates: - 824 * Inport: '<Root>/r_DCLeft' - 825 */ - 826 if (rtU.r_DCLeft < 0) { - 827 rtb_Switch1_idx_0 = -rtU.r_DCLeft; - 828 } else { - 829 rtb_Switch1_idx_0 = rtU.r_DCLeft; - 830 } - 831 - 832 /* End of Abs: '<S15>/Abs1' */ - 833 - 834 /* Switch: '<S15>/Switch1' incorporates: - 835 * Constant: '<S12>/z_ctrlTypSel1' - 836 * Constant: '<S15>/CTRL_COMM' - 837 * Constant: '<S15>/r_commDCDeacv' - 838 * Constant: '<S21>/vec_hallToPos' - 839 * Inport: '<Root>/r_DCLeft' - 840 * Logic: '<S15>/Logical Operator3' - 841 * LookupNDDirect: '<S15>/z_commutMap_M1' - 842 * Product: '<S15>/Divide2' - 843 * Product: '<S15>/Divide4' - 844 * RelationalOperator: '<S15>/Relational Operator1' - 845 * RelationalOperator: '<S15>/Relational Operator2' - 846 * Relay: '<S15>/Relay' - 847 * Selector: '<S21>/Selector' - 848 * - 849 * About '<S15>/z_commutMap_M1': - 850 * 2-dimensional Direct Look-Up returning a Column - 851 */ - 852 if (rtDW.Relay_Mode && (rtb_Switch1_idx_0 > rtP.r_commDCDeacv) && - 853 (rtP.z_ctrlTypSel != 0)) { - 854 rtb_Switch1_idx_0 = rtU.r_DCLeft * rtDW.Merge; - 855 rtb_Switch1_idx_1 = rtU.r_DCLeft * rtDW.Merge1; - 856 rtb_Abs1 = rtU.r_DCLeft * rtDW.Merge2; - 857 } else { - 858 if (rtConstP.pooled26[rtb_Sum] < 5) { - 859 /* LookupNDDirect: '<S15>/z_commutMap_M1' incorporates: - 860 * Constant: '<S21>/vec_hallToPos' - 861 * Selector: '<S21>/Selector' - 862 * - 863 * About '<S15>/z_commutMap_M1': - 864 * 2-dimensional Direct Look-Up returning a Column - 865 */ - 866 tmp = rtConstP.pooled26[rtb_Sum]; - 867 } else { - 868 /* LookupNDDirect: '<S15>/z_commutMap_M1' - 869 * - 870 * About '<S15>/z_commutMap_M1': - 871 * 2-dimensional Direct Look-Up returning a Column - 872 */ - 873 tmp = 5U; - 874 } - 875 - 876 /* LookupNDDirect: '<S15>/z_commutMap_M1' - 877 * - 878 * About '<S15>/z_commutMap_M1': - 879 * 2-dimensional Direct Look-Up returning a Column - 880 */ - 881 rtb_Abs1 = tmp * 3; - 882 rtb_Switch1_idx_0 = rtU.r_DCLeft * rtConstP.pooled18[rtb_Abs1]; - 883 rtb_Switch1_idx_1 = rtConstP.pooled18[1 + rtb_Abs1] * rtU.r_DCLeft; - 884 rtb_Abs1 = rtConstP.pooled18[2 + rtb_Abs1] * rtU.r_DCLeft; - 885 } - 886 - 887 /* End of Switch: '<S15>/Switch1' */ - 888 - 889 /* Outport: '<Root>/DC_phaALeft' incorporates: - 890 * Constant: '<S15>/Constant1' - 891 * Product: '<S15>/Divide1' - 892 */ - 893 rtY.DC_phaALeft = rtb_Switch1_idx_0 / 1000; - 894 - 895 /* Outport: '<Root>/DC_phaBLeft' incorporates: - 896 * Constant: '<S15>/Constant1' - 897 * Product: '<S15>/Divide1' - 898 */ - 899 rtY.DC_phaBLeft = rtb_Switch1_idx_1 / 1000; - 900 - 901 /* Outport: '<Root>/DC_phaCLeft' incorporates: - 902 * Constant: '<S15>/Constant1' - 903 * Product: '<S15>/Divide1' - 904 */ - 905 rtY.DC_phaCLeft = rtb_Abs1 / 1000; - 906 - 907 /* Sum: '<S59>/Sum' incorporates: - 908 * Gain: '<S59>/g_Ha' - 909 * Gain: '<S59>/g_Hb' - 910 * Inport: '<Root>/b_hallARight' - 911 * Inport: '<Root>/b_hallBRight' - 912 * Inport: '<Root>/b_hallCRight' - 913 */ - 914 rtb_Sum_a = (uint8_T)((uint32_T)(uint8_T)((uint32_T)(uint8_T)(rtU.b_hallARight - 915 << 2) + (uint8_T)(rtU.b_hallBRight << 1)) + rtU.b_hallCRight); - 916 - 917 /* Logic: '<S58>/Logical Operator' incorporates: - 918 * Inport: '<Root>/b_hallARight' - 919 * Inport: '<Root>/b_hallBRight' - 920 * Inport: '<Root>/b_hallCRight' - 921 * UnitDelay: '<S58>/UnitDelay' - 922 * UnitDelay: '<S58>/UnitDelay1' - 923 * UnitDelay: '<S58>/UnitDelay2' - 924 */ - 925 rtb_LogicalOperator = (boolean_T)((rtU.b_hallARight != 0) ^ (rtU.b_hallBRight - 926 != 0) ^ (rtU.b_hallCRight != 0) ^ (rtDW.UnitDelay_DSTATE_j != 0) ^ - 927 (rtDW.UnitDelay1_DSTATE_f != 0)) ^ (rtDW.UnitDelay2_DSTATE_b != 0); - 928 - 929 /* Outputs for Enabled SubSystem: '<S50>/F01_03_Direction_Detection' */ - 930 - 931 /* Selector: '<S59>/Selector' incorporates: - 932 * Constant: '<S59>/vec_hallToPos' - 933 * UnitDelay: '<S59>/UnitDelay1' - 934 */ - 935 F01_03_Direction_Detection(rtb_LogicalOperator, rtConstP.pooled26[rtb_Sum_a], - 936 rtDW.UnitDelay1_DSTATE_j, &rtDW.Switch2, &rtDW.UnitDelay1, - 937 &rtDW.F01_03_Direction_Detection_j); - 938 - 939 /* End of Outputs for SubSystem: '<S50>/F01_03_Direction_Detection' */ - 940 - 941 /* Logic: '<S61>/Logical Operator3' incorporates: - 942 * Constant: '<S61>/z_maxCntRst' - 943 * RelationalOperator: '<S61>/Relational Operator1' - 944 * UnitDelay: '<S61>/z_counterRawPrev' - 945 */ - 946 rtb_LogicalOperator3 = (rtb_LogicalOperator || (rtDW.z_counterRawPrev_DSTATE_p - 947 > rtP.z_maxCntRst)); - 948 - 949 /* Outputs for Enabled SubSystem: '<S61>/Edge_counter' */ - 950 - 951 /* Logic: '<S61>/Logical Operator2' incorporates: - 952 * UnitDelay: '<S61>/UnitDelay8' - 953 */ - 954 Edge_counter(!rtDW.UnitDelay8_DSTATE_p, rtb_LogicalOperator, rtDW.Switch2, - 955 rtDW.UnitDelay1, &rtDW.Sum2_i, &rtDW.Edge_counter_l); - 956 - 957 /* End of Outputs for SubSystem: '<S61>/Edge_counter' */ - 958 - 959 /* Logic: '<S61>/Logical Operator5' incorporates: - 960 * Constant: '<S61>/z_maxCntRst2' - 961 * RelationalOperator: '<S61>/Relational Operator3' - 962 * RelationalOperator: '<S61>/Relational Operator6' - 963 * UnitDelay: '<S61>/z_counterRawPrev' - 964 */ - 965 rtDW.LogicalOperator5 = ((rtDW.Switch2 != rtDW.UnitDelay1) || - 966 (rtDW.z_counterRawPrev_DSTATE_p > rtP.z_maxCntRst)); - 967 - 968 /* Outputs for Atomic SubSystem: '<S61>/rising_edge' */ - 969 rising_edge_f(); - 970 - 971 /* End of Outputs for SubSystem: '<S61>/rising_edge' */ - 972 - 973 /* CombinatorialLogic: '<S67>/Logic' incorporates: - 974 * Constant: '<S61>/z_nrEdgeSpdAcv' - 975 * Memory: '<S67>/Memory' - 976 * RelationalOperator: '<S61>/Relational Operator5' - 977 */ - 978 rtb_Switch1_idx_0 = (int32_T)(((((uint32_T)(rtDW.Sum2_i >= rtP.z_nrEdgeSpdAcv) - 979 << 1) + rtDW.LogicalOperator_h) << 1) + rtDW.Memory_PreviousInput_i); - 980 rtDW.Logic_j[0U] = rtConstP.pooled30[(uint32_T)rtb_Switch1_idx_0]; - 981 rtDW.Logic_j[1U] = rtConstP.pooled30[rtb_Switch1_idx_0 + 8U]; - 982 - 983 /* Outputs for Atomic SubSystem: '<S61>/falling_edge2' */ - 984 falling_edge2_b(); - 985 - 986 /* End of Outputs for SubSystem: '<S61>/falling_edge2' */ - 987 - 988 /* Switch: '<S61>/Switch' incorporates: - 989 * Logic: '<S61>/Logical Operator1' - 990 * Switch: '<S61>/Switch1' - 991 * UnitDelay: '<S61>/z_counter2' - 992 * UnitDelay: '<S61>/z_counterRawPrev' - 993 */ - 994 if (rtb_LogicalOperator3 && rtDW.Logic_j[0]) { - 995 rtb_Switch_b = rtDW.z_counterRawPrev_DSTATE_p; - 996 } else if (rtDW.LogicalOperator_h) { - 997 /* Switch: '<S61>/Switch1' incorporates: - 998 * Constant: '<S61>/z_maxCntRst1' - 999 */ - 1000 rtb_Switch_b = rtP.z_maxCntRst; - 1001 } else { - 1002 rtb_Switch_b = rtDW.z_counter2_DSTATE_h; - 1003 } - 1004 - 1005 /* End of Switch: '<S61>/Switch' */ - 1006 - 1007 /* Outputs for Triggered SubSystem: '<S61>/Motor_Speed_Calculation' */ - 1008 - 1009 /* Outport: '<Root>/n_motRight' */ - 1010 Motor_Speed_Calculation(rtb_LogicalOperator3, rtb_Switch_b, rtDW.Switch2, - 1011 &rtY.n_motRight, &rtDW.Motor_Speed_Calculation_k, - 1012 &rtPrevZCX.Motor_Speed_Calculation_k); - 1013 - 1014 /* End of Outputs for SubSystem: '<S61>/Motor_Speed_Calculation' */ - 1015 - 1016 /* Abs: '<S53>/Abs5' incorporates: - 1017 * Outport: '<Root>/n_motRight' - 1018 */ - 1019 if (rtY.n_motRight < 0) { - 1020 rtb_Abs1 = -rtY.n_motRight; - 1021 } else { - 1022 rtb_Abs1 = rtY.n_motRight; - 1023 } - 1024 - 1025 /* End of Abs: '<S53>/Abs5' */ - 1026 - 1027 /* Relay: '<S53>/Relay' */ - 1028 if (rtb_Abs1 >= rtP.n_commDeacvHi) { - 1029 rtDW.Relay_Mode_m = true; - 1030 } else { - 1031 if (rtb_Abs1 <= rtP.n_commAcvLo) { - 1032 rtDW.Relay_Mode_m = false; - 1033 } - 1034 } - 1035 - 1036 /* Switch: '<S70>/Switch1' incorporates: - 1037 * Constant: '<S70>/Constant23' - 1038 * UnitDelay: '<S70>/UnitDelay1' - 1039 */ - 1040 if (rtb_LogicalOperator3) { - 1041 rtb_Sum1_c = 0; - 1042 } else { - 1043 rtb_Sum1_c = rtDW.UnitDelay1_DSTATE_k; - 1044 } - 1045 - 1046 /* End of Switch: '<S70>/Switch1' */ - 1047 - 1048 /* Sum: '<S61>/Sum1' */ - 1049 rtb_Sum1_c++; - 1050 - 1051 /* If: '<S3>/If1' incorporates: - 1052 * Constant: '<S50>/z_ctrlTypSel1' - 1053 * Constant: '<S59>/vec_hallToPos' - 1054 * Inport: '<Root>/r_DCRight' - 1055 * Outport: '<Root>/a_elecAngleRight' - 1056 * Selector: '<S59>/Selector' - 1057 */ - 1058 rtPrevAction = rtDW.If1_ActiveSubsystem_j; - 1059 rtAction = -1; - 1060 if (rtP.z_ctrlTypSel != 0) { - 1061 rtAction = 0; - 1062 } - 1063 - 1064 rtDW.If1_ActiveSubsystem_j = rtAction; - 1065 if ((rtPrevAction != rtAction) && (rtPrevAction == 0)) { - 1066 F02_Electrical_Angle_Ca_Disable(&rtDW.Switch_PhaAdv, &rtY.a_elecAngleRight); - 1067 } - 1068 - 1069 if (rtAction == 0) { - 1070 /* Outputs for IfAction SubSystem: '<S3>/F02_Electrical_Angle_Calculation' incorporates: - 1071 * ActionPort: '<S51>/Action Port' - 1072 */ - 1073 F02_Electrical_Angle_Calculatio(rtU.r_DCRight, rtConstP.pooled26[rtb_Sum_a], - 1074 rtDW.Switch2, rtb_Switch_b, rtb_Sum1_c, &rtDW.Switch_PhaAdv, - 1075 &rtY.a_elecAngleRight); - 1076 - 1077 /* End of Outputs for SubSystem: '<S3>/F02_Electrical_Angle_Calculation' */ - 1078 } - 1079 - 1080 /* End of If: '<S3>/If1' */ - 1081 - 1082 /* SwitchCase: '<S52>/Switch Case' incorporates: - 1083 * Constant: '<S50>/z_ctrlTypSel1' - 1084 */ - 1085 switch (rtP.z_ctrlTypSel) { - 1086 case 1: - 1087 /* Outputs for IfAction SubSystem: '<S52>/F03_01_Pure_Trapezoidal_Method' incorporates: - 1088 * ActionPort: '<S79>/Action Port' - 1089 */ - 1090 F03_01_Pure_Trapezoidal_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, - 1091 &rtDW.Merge1_m, &rtDW.Merge2_d); - 1092 - 1093 /* End of Outputs for SubSystem: '<S52>/F03_01_Pure_Trapezoidal_Method' */ - 1094 break; - 1095 - 1096 case 2: - 1097 /* Outputs for IfAction SubSystem: '<S52>/F03_02_Sinusoidal_Method' incorporates: - 1098 * ActionPort: '<S81>/Action Port' - 1099 */ - 1100 F03_02_Sinusoidal_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, &rtDW.Merge1_m, - 1101 &rtDW.Merge2_d); - 1102 - 1103 /* End of Outputs for SubSystem: '<S52>/F03_02_Sinusoidal_Method' */ - 1104 break; - 1105 - 1106 case 3: - 1107 /* Outputs for IfAction SubSystem: '<S52>/F03_02_Sinusoidal3rd_Method' incorporates: - 1108 * ActionPort: '<S80>/Action Port' - 1109 */ - 1110 F03_02_Sinusoidal3rd_Method(rtDW.Switch_PhaAdv, &rtDW.Merge_j, - 1111 &rtDW.Merge1_m, &rtDW.Merge2_d); - 1112 - 1113 /* End of Outputs for SubSystem: '<S52>/F03_02_Sinusoidal3rd_Method' */ - 1114 break; - 1115 } - 1116 - 1117 /* End of SwitchCase: '<S52>/Switch Case' */ - 1118 - 1119 /* Abs: '<S53>/Abs1' incorporates: - 1120 * Inport: '<Root>/r_DCRight' - 1121 */ - 1122 if (rtU.r_DCRight < 0) { - 1123 rtb_Switch1_idx_0 = -rtU.r_DCRight; - 1124 } else { - 1125 rtb_Switch1_idx_0 = rtU.r_DCRight; - 1126 } - 1127 - 1128 /* End of Abs: '<S53>/Abs1' */ - 1129 - 1130 /* Switch: '<S53>/Switch1' incorporates: - 1131 * Constant: '<S50>/z_ctrlTypSel1' - 1132 * Constant: '<S53>/CTRL_COMM' - 1133 * Constant: '<S53>/r_commDCDeacv' - 1134 * Constant: '<S59>/vec_hallToPos' - 1135 * Inport: '<Root>/r_DCRight' - 1136 * Logic: '<S53>/Logical Operator3' - 1137 * LookupNDDirect: '<S53>/z_commutMap_M1' - 1138 * Product: '<S53>/Divide2' - 1139 * Product: '<S53>/Divide4' - 1140 * RelationalOperator: '<S53>/Relational Operator1' - 1141 * RelationalOperator: '<S53>/Relational Operator2' - 1142 * Relay: '<S53>/Relay' - 1143 * Selector: '<S59>/Selector' - 1144 * - 1145 * About '<S53>/z_commutMap_M1': - 1146 * 2-dimensional Direct Look-Up returning a Column - 1147 */ - 1148 if (rtDW.Relay_Mode_m && (rtb_Switch1_idx_0 > rtP.r_commDCDeacv) && - 1149 (rtP.z_ctrlTypSel != 0)) { - 1150 rtb_Switch1_idx_0 = rtU.r_DCRight * rtDW.Merge_j; - 1151 rtb_Switch1_idx_1 = rtU.r_DCRight * rtDW.Merge1_m; - 1152 rtb_Abs1 = rtU.r_DCRight * rtDW.Merge2_d; - 1153 } else { - 1154 if (rtConstP.pooled26[rtb_Sum_a] < 5) { - 1155 /* LookupNDDirect: '<S53>/z_commutMap_M1' incorporates: - 1156 * Constant: '<S59>/vec_hallToPos' - 1157 * Selector: '<S59>/Selector' - 1158 * - 1159 * About '<S53>/z_commutMap_M1': - 1160 * 2-dimensional Direct Look-Up returning a Column - 1161 */ - 1162 tmp = rtConstP.pooled26[rtb_Sum_a]; - 1163 } else { - 1164 /* LookupNDDirect: '<S53>/z_commutMap_M1' - 1165 * - 1166 * About '<S53>/z_commutMap_M1': - 1167 * 2-dimensional Direct Look-Up returning a Column - 1168 */ - 1169 tmp = 5U; - 1170 } - 1171 - 1172 /* LookupNDDirect: '<S53>/z_commutMap_M1' - 1173 * - 1174 * About '<S53>/z_commutMap_M1': - 1175 * 2-dimensional Direct Look-Up returning a Column - 1176 */ - 1177 rtb_Abs1 = tmp * 3; - 1178 rtb_Switch1_idx_0 = rtU.r_DCRight * rtConstP.pooled18[rtb_Abs1]; - 1179 rtb_Switch1_idx_1 = rtConstP.pooled18[1 + rtb_Abs1] * rtU.r_DCRight; - 1180 rtb_Abs1 = rtConstP.pooled18[2 + rtb_Abs1] * rtU.r_DCRight; - 1181 } - 1182 - 1183 /* End of Switch: '<S53>/Switch1' */ - 1184 - 1185 /* Outport: '<Root>/DC_phaARight' incorporates: - 1186 * Constant: '<S53>/Constant1' - 1187 * Product: '<S53>/Divide1' - 1188 */ - 1189 rtY.DC_phaARight = rtb_Switch1_idx_0 / 1000; - 1190 - 1191 /* Outport: '<Root>/DC_phaBRight' incorporates: - 1192 * Constant: '<S53>/Constant1' - 1193 * Product: '<S53>/Divide1' - 1194 */ - 1195 rtY.DC_phaBRight = rtb_Switch1_idx_1 / 1000; - 1196 - 1197 /* Update for UnitDelay: '<S20>/UnitDelay' incorporates: - 1198 * Inport: '<Root>/b_hallALeft ' - 1199 */ - 1200 rtDW.UnitDelay_DSTATE = rtU.b_hallALeft; - 1201 - 1202 /* Update for UnitDelay: '<S20>/UnitDelay1' incorporates: - 1203 * Inport: '<Root>/b_hallBLeft' - 1204 */ - 1205 rtDW.UnitDelay1_DSTATE_p = rtU.b_hallBLeft; - 1206 - 1207 /* Update for UnitDelay: '<S20>/UnitDelay2' incorporates: - 1208 * Inport: '<Root>/b_hallCLeft' - 1209 */ - 1210 rtDW.UnitDelay2_DSTATE = rtU.b_hallCLeft; - 1211 - 1212 /* Update for UnitDelay: '<S21>/UnitDelay1' incorporates: - 1213 * Constant: '<S21>/vec_hallToPos' - 1214 * Selector: '<S21>/Selector' - 1215 */ - 1216 rtDW.UnitDelay1_DSTATE_g = rtConstP.pooled26[rtb_Sum]; - 1217 - 1218 /* Update for UnitDelay: '<S23>/z_counterRawPrev' */ - 1219 rtDW.z_counterRawPrev_DSTATE = rtb_Sum1; - 1220 - 1221 /* Update for UnitDelay: '<S23>/UnitDelay8' */ - 1222 rtDW.UnitDelay8_DSTATE = rtDW.Logic[0]; - 1223 - 1224 /* Update for Memory: '<S29>/Memory' */ - 1225 rtDW.Memory_PreviousInput = rtDW.Logic[0]; - 1226 - 1227 /* Update for UnitDelay: '<S23>/z_counter2' */ - 1228 rtDW.z_counter2_DSTATE = rtb_Switch; - 1229 - 1230 /* Update for UnitDelay: '<S32>/UnitDelay1' */ - 1231 rtDW.UnitDelay1_DSTATE = rtb_Sum1; - 1232 - 1233 /* Update for UnitDelay: '<S58>/UnitDelay' incorporates: - 1234 * Inport: '<Root>/b_hallARight' - 1235 */ - 1236 rtDW.UnitDelay_DSTATE_j = rtU.b_hallARight; - 1237 - 1238 /* Update for UnitDelay: '<S58>/UnitDelay1' incorporates: - 1239 * Inport: '<Root>/b_hallBRight' - 1240 */ - 1241 rtDW.UnitDelay1_DSTATE_f = rtU.b_hallBRight; - 1242 - 1243 /* Update for UnitDelay: '<S58>/UnitDelay2' incorporates: - 1244 * Inport: '<Root>/b_hallCRight' - 1245 */ - 1246 rtDW.UnitDelay2_DSTATE_b = rtU.b_hallCRight; - 1247 - 1248 /* Update for UnitDelay: '<S59>/UnitDelay1' incorporates: - 1249 * Constant: '<S59>/vec_hallToPos' - 1250 * Selector: '<S59>/Selector' - 1251 */ - 1252 rtDW.UnitDelay1_DSTATE_j = rtConstP.pooled26[rtb_Sum_a]; - 1253 - 1254 /* Update for UnitDelay: '<S61>/z_counterRawPrev' */ - 1255 rtDW.z_counterRawPrev_DSTATE_p = rtb_Sum1_c; - 1256 - 1257 /* Update for UnitDelay: '<S61>/UnitDelay8' */ - 1258 rtDW.UnitDelay8_DSTATE_p = rtDW.Logic_j[0]; - 1259 - 1260 /* Update for Memory: '<S67>/Memory' */ - 1261 rtDW.Memory_PreviousInput_i = rtDW.Logic_j[0]; - 1262 - 1263 /* Update for UnitDelay: '<S61>/z_counter2' */ - 1264 rtDW.z_counter2_DSTATE_h = rtb_Switch_b; - 1265 - 1266 /* Update for UnitDelay: '<S70>/UnitDelay1' */ - 1267 rtDW.UnitDelay1_DSTATE_k = rtb_Sum1_c; - 1268 - 1269 /* Outport: '<Root>/DC_phaCRight' incorporates: - 1270 * Constant: '<S53>/Constant1' - 1271 * Product: '<S53>/Divide1' - 1272 */ - 1273 rtY.DC_phaCRight = rtb_Abs1 / 1000; - 1274 - 1275 /* End of Outputs for SubSystem: '<Root>/BLDC_controller' */ - 1276 } - 1277 - 1278 /* Model initialize function */ - 1279 void BLDC_controller_initialize(void) - 1280 { - 1281 /* Start for Atomic SubSystem: '<Root>/BLDC_controller' */ - 1282 /* Start for If: '<S2>/If1' */ - 1283 rtDW.If1_ActiveSubsystem = -1; - 1284 - 1285 /* Start for If: '<S3>/If1' */ - 1286 rtDW.If1_ActiveSubsystem_j = -1; - 1287 - 1288 /* End of Start for SubSystem: '<Root>/BLDC_controller' */ - 1289 rtPrevZCX.Motor_Speed_Calculation_k.Motor_Speed_Calculation_Trig_ZC = - 1290 POS_ZCSIG; - 1291 rtPrevZCX.Motor_Speed_Calculation_m.Motor_Speed_Calculation_Trig_ZC = - 1292 POS_ZCSIG; - 1293 - 1294 /* SystemInitialize for Atomic SubSystem: '<Root>/BLDC_controller' */ - 1295 /* InitializeConditions for UnitDelay: '<S23>/z_counter2' */ - 1296 rtDW.z_counter2_DSTATE = rtP.z_maxCntRst; - 1297 - 1298 /* InitializeConditions for UnitDelay: '<S61>/z_counter2' */ - 1299 rtDW.z_counter2_DSTATE_h = rtP.z_maxCntRst; - 1300 - 1301 /* End of SystemInitialize for SubSystem: '<Root>/BLDC_controller' */ - 1302 } - 1303 - 1304 /* - 1305 * File trailer for generated code. - 1306 * - 1307 * [EOF] - 1308 */ - 1309 + 672 /* Start for Atomic SubSystem: '<Root>/BLDC_controller' */ + 673 /* Start for If: '<S2>/If1' */ + 674 rtDW->If1_ActiveSubsystem = -1; + 675 + 676 /* End of Start for SubSystem: '<Root>/BLDC_controller' */ + 677 + 678 /* SystemInitialize for Atomic SubSystem: '<Root>/BLDC_controller' */ + 679 /* InitializeConditions for UnitDelay: '<S17>/UnitDelay1' */ + 680 rtDW->UnitDelay1_DSTATE = 1500; + 681 + 682 /* SystemInitialize for IfAction SubSystem: '<S14>/Counter_Hold_and_Error_Calculation' */ + 683 /* InitializeConditions for UnitDelay: '<S15>/z_counter2' */ + 684 rtDW->z_counter2_DSTATE = 1500; + 685 + 686 /* SystemInitialize for Outport: '<S15>/z_counter' */ + 687 rtDW->z_counterRawPrev = 1500; + 688 + 689 /* End of SystemInitialize for SubSystem: '<S14>/Counter_Hold_and_Error_Calculation' */ + 690 /* End of SystemInitialize for SubSystem: '<Root>/BLDC_controller' */ + 691 } + 692 + 693 /* + 694 * File trailer for generated code. + 695 * + 696 * [EOF] + 697 */ + 698