模拟电机三相 模拟clrak 和park的纯代码
% 参数设置
fs = 10000; % 采样频率
T = 1/fs; % 采样周期
L = 1; % 电感,单位亨利
R = 0.1; % 电阻,单位欧姆
omega = 2*pi*50; % 角频率,50Hz
Vm = 1; % 峰值电压,可以根据实际情况调整
time_len=0.1;%%定义时长
% 时间向量
t = 0:T:time_len; % 20ms的仿真时间
% 初始条件
ia = zeros(1, length(t));
ib = zeros(1, length(t));
ic = zeros(1, length(t));
% 模拟三相电流
for k = 2:length(t)
% 假设负载是Y型连接,每相的电压为正弦波
v_a = Vm*sin(omega*t(k) + 2*pi/3);
v_b = Vm*sin(omega*t(k));
v_c = Vm*sin(omega*t(k) - 2*pi/3);
% 根据电压和负载参数计算电流
ia(k) = (1/(R + 1j*omega*L)) * (v_a + (-1/2)*ib(k-1) + (-1/2)*ic(k-1));
ib(k) = (1/(R + 1j*omega*L)) * (v_b + (1/2)*ia(k-1) + (-1/2)*ic(k-1));
ic(k) = (1/(R + 1j*omega*L)) * (v_c + (1/2)*ia(k-1) + (1/2)*ib(k-1));
end
% Clarke变换
alpha = ia;
beta = (2*ib + ic) / sqrt(3);
[id1, iq1] = park_transform(ia, ib, length(t)*omega);
% 绘制结果
figure;
plot(t, ia, 'r', 'LineWidth', 2); % 红色线条表示ia
hold on; % 保持当前图形
plot(t, ib, 'g', 'LineWidth', 2); % 绿色线条表示ib
plot(t, ic, 'b', 'LineWidth', 2); % 蓝色线条表示ic
hold off; % 关闭保持状态
% 添加图例和标签
legend('ia', 'ib', 'ic');
title('Three-Phase Currents');
xlabel('Time (s)');
ylabel('Amplitude');
figure
plot(t,alpha,'r', 'LineWidth', 2);
hold on;
plot(t,beta,'g', 'LineWidth', 2);
hold off;
legend('alpha', 'beta');
figure
plot(t,id1,'r', 'LineWidth', 2);
hold on;
plot(t,iq1,'g', 'LineWidth', 2);
hold off;
legend('id1', 'iq1');
function [id, iq] = park_transform(ia, ib, theta)
% PARK_TRANSFORM 实现Park变换(dq0变换)
% ia, ib: 输入的两相正交电流
% theta: 旋转角度,通常为电机转子的电角度
% id, iq: 输出的d轴和q轴电流
% 计算d轴和q轴电流
id = ia * cos(theta) + ib * sin(theta);
iq = -ia * sin(theta) + ib * cos(theta);
end