Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AnalyticOptimize/optimize_constants.h@40:22aede3d096f, 2016-12-12 (annotated)
- Committer:
- bwang
- Date:
- Mon Dec 12 14:18:02 2016 +0000
- Revision:
- 40:22aede3d096f
- Parent:
- Optimize/optimize_constants.h@32:b31423041c4e
switching to table based optimization
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| bwang | 31:ebe42589ab9d | 1 | #ifndef __CONFIG_OPTIMIZE |
| bwang | 31:ebe42589ab9d | 2 | #define __CONFIG_OPTIMIZE |
| bwang | 31:ebe42589ab9d | 3 | |
| bwang | 31:ebe42589ab9d | 4 | #include "config_motor.h" |
| bwang | 31:ebe42589ab9d | 5 | #include <math.h> |
| bwang | 31:ebe42589ab9d | 6 | |
| bwang | 31:ebe42589ab9d | 7 | /* |
| bwang | 31:ebe42589ab9d | 8 | * Precomputed constants for analytic IPM optimization |
| bwang | 31:ebe42589ab9d | 9 | */ |
| bwang | 31:ebe42589ab9d | 10 | |
| bwang | 31:ebe42589ab9d | 11 | #define Lx (Ld-Lq) |
| bwang | 31:ebe42589ab9d | 12 | #define Lx2 (Lx * Lx) |
| bwang | 31:ebe42589ab9d | 13 | #define Lx3 (Lx2 * Lx) |
| bwang | 31:ebe42589ab9d | 14 | #define Lx4 (Lx2 * Lx2) |
| bwang | 31:ebe42589ab9d | 15 | #define Lx6 (Lx2 * Lx4) |
| bwang | 31:ebe42589ab9d | 16 | |
| bwang | 31:ebe42589ab9d | 17 | #define P2 (POLE_PAIRS * POLE_PAIRS) |
| bwang | 31:ebe42589ab9d | 18 | #define P3 (POLE_PAIRS * P2) |
| bwang | 31:ebe42589ab9d | 19 | #define P4 (P2 * P2) |
| bwang | 31:ebe42589ab9d | 20 | #define P6 (P4 * P2) |
| bwang | 31:ebe42589ab9d | 21 | #define P8 (P4 * P4) |
| bwang | 31:ebe42589ab9d | 22 | |
| bwang | 31:ebe42589ab9d | 23 | #define PSI2 (FLUX_LINKAGE * FLUX_LINKAGE) |
| bwang | 31:ebe42589ab9d | 24 | #define PSI4 (PSI2 * PSI2) |
| bwang | 31:ebe42589ab9d | 25 | #define PSI8 (PSI4 * PSI4) |
| bwang | 31:ebe42589ab9d | 26 | |
| bwang | 31:ebe42589ab9d | 27 | #define K1 (27.f * Lx2 * P4 * PSI2) |
| bwang | 31:ebe42589ab9d | 28 | #define K2 (243.f * 3.f * Lx4 * P8 * PSI4) |
| bwang | 31:ebe42589ab9d | 29 | #define K3 (1024.f * 3.f * Lx6 * P6) |
| bwang | 31:ebe42589ab9d | 30 | #define K1_13 (powf(K1, 1.f / 3)) |
| bwang | 31:ebe42589ab9d | 31 | #define K3_13 (14.537f * Lx2 * P2) //K3^(1/3) |
| bwang | 31:ebe42589ab9d | 32 | #define SQRTK3 (-55.426f * Lx3 * P3) |
| bwang | 31:ebe42589ab9d | 33 | |
| bwang | 31:ebe42589ab9d | 34 | #define cA (-8.80514f) |
| bwang | 31:ebe42589ab9d | 35 | #define cB (0.605707f / (Lx2 * P2)) |
| bwang | 31:ebe42589ab9d | 36 | #define cC (2.93505f) |
| bwang | 31:ebe42589ab9d | 37 | #define cD (-0.201902f / (Lx2 * P2)) |
| bwang | 31:ebe42589ab9d | 38 | #define cE (2.3094f * FLUX_LINKAGE / (Lx2 * POLE_PAIRS)) |
| bwang | 31:ebe42589ab9d | 39 | |
| bwang | 31:ebe42589ab9d | 40 | #define c0 (1.25992f) |
| bwang | 31:ebe42589ab9d | 41 | #define c2 (0.4424414f * Lx2 / (P2 * PSI4)) |
| bwang | 31:ebe42589ab9d | 42 | #define c4 (-0.6214814f * Lx4 / (P4 * PSI8)) |
| bwang | 31:ebe42589ab9d | 43 | |
| bwang | 31:ebe42589ab9d | 44 | #define TAU0 (K1 / SQRTK3) |
| bwang | 31:ebe42589ab9d | 45 | #define s0 (1.3415f * K1 / K3_13) |
| bwang | 31:ebe42589ab9d | 46 | #define s1 (-3.81274f * Lx * POLE_PAIRS) |
| bwang | 31:ebe42589ab9d | 47 | |
| bwang | 31:ebe42589ab9d | 48 | #define cU (-0.2887f) |
| bwang | 31:ebe42589ab9d | 49 | #define cV (0.5f) |
| bwang | 31:ebe42589ab9d | 50 | |
| bwang | 32:b31423041c4e | 51 | #define cF (0.25f * Lq/(Ld * Lq-Ld * Ld) * FLUX_LINKAGE) |
| bwang | 32:b31423041c4e | 52 | #define cG (FLUX_LINKAGE / Ld) |
| bwang | 32:b31423041c4e | 53 | #define cH (1 / (Ld * Ld)) |
| bwang | 32:b31423041c4e | 54 | #define cI (0.25f * FLUX_LINKAGE / (Lq - Ld)) |
| bwang | 32:b31423041c4e | 55 | |
| bwang | 31:ebe42589ab9d | 56 | #endif |