-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstantsPMSM.m
More file actions
90 lines (67 loc) · 1.85 KB
/
constantsPMSM.m
File metadata and controls
90 lines (67 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
%% Conversion numbers
rpm2radps = 2*pi/60;
%% Motor data
nom_rpm = 3500; %rpm
nom_torque = 3.3; %Nm
nom_efficiency = 0.926;
voltage_constant = 8.5/1000; %V/rpm
torque_constant = 0.09; %Nm/A
stator_inductance = 4/1000000; %H
stator_resistance = 35/1000; %Ohm
total_mass = 0.7; % kg
outer_rotor_diameter = 0.1; %m
%% Missing Motor data
n_pole_pairs = 32;
viscous_damping = 4.924e-4; % Nm/rad/s
static_friction = 0; % Nm
rotor_fraction = 0.5;
inner_rotor_diameter = 0.08; %m
%% Derived motor data
outer_rotor_radius = outer_rotor_diameter/2;
inner_rotor_radius = inner_rotor_diameter/2;
normalised_thickness_ratio = (outer_rotor_radius-inner_rotor_radius)...
/outer_rotor_radius;
rotor_mass = total_mass * rotor_fraction;
rotor_inertia = rotor_mass * outer_rotor_radius^2 * ...
(1-normalised_thickness_ratio + (normalised_thickness_ratio^2)/2);
nom_power = (nom_rpm * rpm2radps * nom_torque);
nom_elec_power = nom_power / nom_efficiency;
nom_current = nom_torque / torque_constant;
nom_voltage = voltage_constant * nom_rpm;
pm_psi = nom_voltage/nom_rpm;
%% Per Unit
V_b = sqrt(2)/sqrt(3) * nom_voltage; % Base Voltage
I_b = sqrt(2) * nom_current; % base Current
S_b = 3/2 * V_b * I_b; % Apparant Base Power
Z_b = V_b/I_b; % base impediance
w_b = nom_rpm*2*pi/60; % base angular speed
psi_b = V_b/w_b;
%% References
w_r_ref = 10;
flux_ref = 0;
%% Speed Controller
kp_speed_gain = 1;
%% Flux Controller
kp_flux_gain = 1;
%% Flux Estimation
x_s_sigma = 1;
x_ad = 1;
x_aq = 1;
x_d = x_s_sigma + x_ad;
x_q = x_s_sigma + x_aq;
flux_m = 1;
%% Current Controller
T_sum = 1;
r_s = 1;
r_q = 1;
T_d = x_d/(w_b*r_s);
T_i_d = T_d;
T_1_q = x_q/(w_b*r_q);
T_i_q = T_1_q;
K_p_denom = 2*w_b*T_sum;
K_p_d = x_d/K_p_denom;
K_p_q = x_q/K_p_denom;
K_pcd = K_p_d;
K_icd = 1;
K_pcq = K_p_q;
K_icq = 1;