Vous êtes sur la page 1sur 5

%--------------------------------------------------------------------

% Algoritmo de Simulação do Modelo Dinâmico do Motor de Indução


% Trifásico
%--------------------------------------------------------------------

clear all
close all
clc

global rs rr etc... (Colar aqui todas as variáveis que são utilizada


também dentro das funções)

tic() % para contar o tempo de processamento

% ========================= Dados de entrada ======================= %

(Colocar aqui todas as variáveis de entrada: Parâmetros do Motor (rr,


rs, Xs, Xr, Xm), Dados de Placa (Tensão nominal de fase, Potência
nominal, Torque nominal, frequência, momento de inércia, coeficiente de
atrito viscoso, número de polos, velocidade síncrona, etc..)

% =================== Cálculo das Indutancias ======================= %

lls=Xls/(w); %indutância de dispersão do estator


llr=Xlr/(w); %indutância de dispersão do rotor
lm=Xm/(w); %indutância mútua
ls=lls+lm; %resistência do estator
lr=llr+lm; %resistência do rotor

% ==================== Parâmetros constantes ======================== %


k11=lr/((ls*lr)-(lm)^2);
k22=lm/((ls*lr)-(lm)^2);
k33=ls/((ls*lr)-(lm)^2);

(Colocar aqui todas as multiplicações e divisões que são constantes ao longo


do programa para otimizar a simulação)

% ================ Informações sobre a Carga ====================== %

(Colocar aqui informações sobre a carga, tempo em que o motor vai


acionar a carga, torque de carga inicial, torque de carga depois do
degrau, etc)

% ================= Parâmetros de simulação ======================= %


(Colocar aqui todos os parâmetros de simulação (tempo inicial, tempo
final, passo de simulação, etc)

OBS: o passo de simulação deve ser 0.00001

(inicializar as variáveis decimador, k, te, etc..)

reverseStr = ''; % Script para mostrar a porcentagem da simulação


mli=0; % Script para mostrar a porcentagem da simulação
numero_iteracoes=(t_final-t_inicial)/delta_t; % Script para mostrar a
porcentagem da simulação

B=[0 0 0 0 0]'; % Valores iniciais, sendo:


% B(1)-> Lamda_qs
% B(2)-> Lamda_ds
% B(3)-> Lamda_qr
% B(4)-> Lamda_dr
% B(5)->

% ===================== Loop de simulação ========================== %

for t=tempo inicial: passo de simulação: tempo final;

teta_eixo=rem(weixo*t,2*pi);

% Tensões de Alimentação de Estator

(Inserir aqui as funções cossenoidais das tensões de fase va, vb e vc)

% Transformação das Tensões ABC para dq0


[vqs, vds, vzero]=abc_dq0(va,vb,vc,teta_eixo);

% Calculando Runge-Kutta de quarta ordem


[dy1] = rungekutta(B);
[dy2] = rungekutta(B+dy1/2);
[dy3] = rungekutta(B+dy2/2);
[dy4] = rungekutta(B+dy3);

Fqs=B(1);
Fds=B(2);
Fqr=B(3);
Fdr=B(4);
wr0=B(5);
Fr=sqrt(Fdr^2+Fqr^2);

% Calculando as Correntes
iqs = k11*B(1) - k22*B(3);
ids = k11*B(2) - k22*B(4);
iqr = k33*B(3) - k22*B(1);
idr = k33*B(4) - k22*B(2);
ism = (ids^2+iqs^2)^0.5;
IsdqEficaz= sqrt(ids^2 + iqs^2)/sqrt(2);

% Cálculo do Torque Eletromagnético


(Colocar aqui a expressão para calcular o torque eletromagnético)

B = B + ((dy1 + 2*dy2 + 2*dy3 + dy4)/6); % Atualizando o Rungekutta

% Transformada dq0 - abc para a corrente


zero=0;

[ias, ibs, ics]=dq0_abc(ids,iqs,zero,teta_eixo);


[iar, ibr, icr]=dq0_abc(idr,iqr,zero,teta_eixo);

% Transformada dq0 - abc para o fluxo


zero=0;
[fas, fbs, fcs]=dq0_abc(Fds,Fqs,zero,teta_eixo);
[far, fbr, fcr]=dq0_abc(Fdr,Fqr,zero,teta_eixo);

%Cálculo da Velocidade angular do Motor e do Escorregamento


nr= B(5)*(2/polos)*(30/pi); % polos/(2*j)*(te-tl)*(30/pi)*(2/polos)
s=(n-nr)/n; % Calculando escorregamento

% Cálculo da velocidade mecânica refletida aos terminais elétricos


wr00 = (polos/2)*nr;

% Cálculo da Potência de Saída


(Colocar aqui equação para a Potência de Saída)

% Inserindo Degrau de Carga


(Inserir aqui condições para inserir carga depois de determinado
tempo)
% Salvando os valores na forma de tabela
(Inserir aqui, se quiser, um decimador para armazenar os valores a cada
100 iteraçoes – Isso deixa o programa mais rápido para simular)

g(k,1)=t; % armazenador dos instantes de tempo


g(k,2)=nr; % velocidade mecânica da máquina
g(k,3)=te; % torque eletromagnético
g(k,4)=iqs; % correntes de estator no eixo q
g(k,5)=ids; % correntes de estator no eixo d
g(k,6)=va; % tensão na fase a
g(k,7)=vb; % tensão na fase b
g(k,8)=vc; % tensão na fase c
g(k,9)=vqs; % tensão de estator no eixo q
g(k,10)=vds; % tensão de estator no eixo d
g(k,11)=s; % escorregamento
g(k,12)=ias; % corrente de estator na fase a
g(k,13)=ibs; % corrente de estator na fase b
g(k,14)=ics; % corrente de estator na fase c
g(k,15)=iar; % corrente de rotor na fase a
g(k,16)=ibr; % corrente de rotor na fase b
g(k,17)=icr; % corrente de rotor na fase c
g(k,18)=iqr; % corrente de rotor no eixo q
g(k,19)=idr; % corrente de rotor no eixo d
g(k,20)=fas; % fluxo de estator na fase a
g(k,21)=fbs; % fluxo de estator na fase b
g(k,22)=fcs; % fluxo de estator na fase c
g(k,23)=far; % fluxo de rotor na fase a
g(k,24)=fbr; % fluxo de rotor na fase b
g(k,25)=fcr; % fluxo de rotor na fase c
g(k,26)=ism; % corrente de magnetização
g(k,27)=IsdqEficaz; % Corrente eficaz de estator
g(k,28)=Peixo; % Corrente eficaz de estator

k=k+1; % incrementando contador de iterações

%=============== Script para contar tempo de processamento =========


percentDone = 100 * k / numero_iteracoes;
msg = sprintf('Percent done: %3.1f', percentDone);
fprintf([reverseStr, msg]);
reverseStr = repmat(sprintf('\b'), 1, length(msg));

end %end for


% Mostrando Tempo de Processamento
processamento=toc();
disp('Tempo de processamento')
disp(processamento)

% =================== Plotando Gráficos ========================= %

Plotar aqui todos os gráficos:

Velocidade do motor x tempo


Corrente de estator x tempo
Correntes de eixo d e q de estator x Tempo
Tensões de eixo d e q de estator x Tempo
Torque desenvolvido x Tempo
Torque desenvolvido x Velocidade
Corrente Eficaz de Estator x Tempo
Potência no Eixo x Tempo
Fluxos de estator x Tempo
Fluxos de Rotor x Tempo

Vous aimerez peut-être aussi