// // // PHPH.com.br - Simulação do motor de indução trifásico por meio da transformação dq0 no Simulink
All for Joomla All for Webmasters

Simulação do motor de indução trifásico por meio da transformação dq0 no Simulink

Este trabalho é um estudo referente à modelagem de um motor de indução trifásico com rotor em gaiola, potência nominal de 215HP, por meio da transformação dq0 aplicada aos eixos de referência estacionário, fixo e síncrono com partida sem carga e posterior aplicação de torque no eixo da máquina. O modelo foi simulado nos softwares Mathworks Simulink e MATLAB por meio de sub-sistemas e programação orientada a objetos.

Introdução

Este trabalho utilizou a transformação dq0 para simulação da dinâmica de um motor trifásico de 215HP, sem perdas mecânicas, com partida sem carga para análise das variáveis da máquina, assim como as mesmas após a transformação dq0. Analisaremos o torque dinâmico da máquina e sua comparação em regime permanente.

A transformação dq0 consiste em uma outra forma de representação das grandezas elétricas tensão, corrente e fluxo concatenado em um eixo de referência arbitrário com o objetivo de viabilizar a modelagem dinâmica da máquina. A transformação dq0 é assim definida para as grandezas correlacionados ao estator:

, onde:

Sendo:

Nas equações acima, refere-se à posição do eixo de referência arbitrário e a velocidade angular do eixo de referência arbitrário, as quais não devem ser confundidas com a velocidade e posição angular do rotor em si ou a velocidade angular síncrona do campo magnético girante. Para as grandezas do rotor, temos as seguintes matrizes de transformação:



Sendo:

As equações no sistema dq0 utilizadas durante as simulações decorrem das notas de aula e krause2013 e não serão aqui reproduzidas. Ressaltamos ainda que os gráficos referentes às grandezas 0 (zero) não serão exibidos pois sabe-se que em condições balanceadas, tais componentes são zero.

Neste texto, todas os parâmetros do rotor já se encontram expressos referidos às bobinas do estator, motivo pelo qual elas são escritas com um apóstrofe, e todas as grandezas foram normalizadas para pu (potência de base igual à potência nominal e tensão de base igual à tensão de pico nominal de fase da máquina).

Modelagem da máquina de indução trifásica

Para fins de maior integridade dos dados, organização e extensibilidade, o código-fonte anexos de controle dos dados da simulação foi desenvolvimento por meio da programação orientada a objetos, com a classe MIT responsável pelo encapsulamento dos dados da simulação, para posterior execução do modelo mit_dq0 do Simulink.

O modelo mit_dq0 anexo foi desenvolvido com a utilização de diversos subsistemas para maior profissionalismo do código-fonte. Destaca-se que o toque de carga é controlado pela entidade "Torque Carga", que é um diagrama de estados que permite configurar qualquer tipo de variação do toque da carga ao longo do tempo.

No modelo do simulink, os subsistemas em cinza refere-se às equações de , em azul claro às correntes do estator , em verde as equações referentes à e , em vermelho as equações de , em laranja as equações de e em rosa as equações correlacionadas ao torque elétrico e velocidade angular do rotor. Os demais blocos são auxiliares e destinam-se às transformadas em si ou exportação de dados para o workspace do MATLAB.

Em relação ao sistema, destaca-se que as componentes (zero) da transformada de fato não estão associadas com o eixo de referência arbitrário e demais componentes q e d uma vez que não há a entradas de variáveis de estado , ou nos subsistemas correlacionados à essa componente no modelo, conforme a teoria estudada.

Por fim, destacamos que todo o sistema é simulado em grandezas pu e as grandezas reais são devidamente convertidas por meio do código-fonte em MATLAB. Todos os eixos de referência usualmente empregados serão simulados: para (eixo de referência estacionário ou no estator), (eixo de referência no rotor) e (eixo de referência no campo magnético girante ou velocidade síncrona).

Simulação da partida sem carga (variáveis da máquina)

Correntes no estator

Na simulação da máquina de indução trifásica, obtemos o gráfico da figura abaixo, o qual demonstra que a corrente de partida é cerca de 10 (dez) vezes a sua corrente nominal durante cerca de 300 ms após a energização da máquina sem carga:

VariaveisMaquina Is


Conforme figura acima, percebe-se que além do período de energização com corrente elevada de 10 pu, temos um período subtransitório na qual a corrente é ainda mais elevada, mas decresce para a corrente de partida em apenas um ciclo elétrico. Após o período transitório, as correntes no estator tendem a um valor menor, mas não nulo, devido à resistência e reatância de dispersão das bobinas do estator e à reatância de magnetização.

Correntes no rotor refletidas

De maneira similar às correntes das bobinas do estator, a corrente induzida no rotor (valores de correntes refletidas ao estator), a mesma também é cerca de 10 (dez) vezes a sua corrente nominal durante a partida da máquina e tendem a 0 (zero) em regime permanente sem carga:

VariaveisMaquina Ir

Todavia, de maneira diferente das correntes nas bobinas do estator, conforme figura acima, há uma redução na frequência das correntes no rotor de maneira proporcional à velocidade do rotor, em relação à síncrona, de acordo com a equação abaixo (também constatável nas componentes qd das transformações com eixo de referência no rotor):

Conforme observaremos a seguir, o período de cerca de 300 ms supramencionado é justamente o tempo dispendido para que o rotor se aproxime da sua velocidade nominal.

Torque elétrico desenvolvido e velocidade do rotor

Por se tratar de uma máquina de 4 polos acionada por uma fonte de tensão com frequência nominal de 50 Hz, sabemos que a velocidade síncrona é de 1500 rpm (rotações por minuto). Portanto, considerando-se que o modelo adotado despreza quaisquer atritos ou perdas mecânicas e não temos ainda aplicação de carga no eixo da máquina, esperamos que a velocidade do rotor praticamente se iguale à essa velocidade síncrona.

O torque elétrico em pu desenvolvido pela máquina foi calculado pela expressão seguinte (o torque elétrico de base difere do torque elétrico nominal da máquina pois consideramos a potência de base igual à potência nominal da máquina, desconsiderando-se que a potência nominal de motores de indução trifásicos são estabelecidos na velocidade nominal, que é menor do que a síncrona, conforme livro de máquinas do Krause (2013):

Por meio dessa expressão, obtemos o gráfico da figura abaixo, que por sua vez independe da velocidade angular do eixo de referência da transformação dq0.

VariaveisMaquina Te versus Tempo

Conforme o gráfico da figura acima, visualizamos que o torque elétrico desenvolvido é oscilatório durante a partida e após a obtenção de uma velocidade próxima à síncrona, o mesmo apresenta um amortecimento oscilatório que converge à zero uma vez que a simulação despreza as perdas mecânicas e ainda não temos a aplicação de nenhuma carga no eixo da máquina. Ou seja, esse torque desenvolvido visa meramente para superar a inércia do rotor desse motor, que inicialmente se encontrava parado.

VariaveisMaquina Te vel rpm

Conforme o gráfico da figura acima, visualizamos que o rotor atinge até mesmo um valor superior à velocidade síncrona temporariamente e depois converge de maneira oscilatória até a mesma (simulação sem carga), que nesse gráfico consiste na imagem de um vertedouro na velocidade final.

Tempo de aceleração do rotor

Conforme supracitado, constatamos que o tempo de aceleração do rotor em gaiola de esquilo deste motor é de cerca de 300 ms, conforme gráfico da figura abaixo, a partir do qual podemos visualizar que a velocidade nominal é próxima à síncrona:

VariaveisMaquina Te Vel R

Ainda, conforme o gráfico abaixo, de maneira intuitiva, o tempo de aceleração do rotor varia proporcionalmente com a inércia do rotor:

gerarGraficos Te Vel R DOBRO J

Simulação da partida sem carga (eixo de referência estacionário = 0)

 

Variáveis d no estator

Após a tansformação dq0 com eixo de referência estacionário (eixo fixo no estator), obtemos as seguintes tensões e correntes d no estator:

EixoEstacionario Vas Vds Ids

Variáveis q no estator

Por se tratar de um sistema trifásico simétrico, obtemos as seguintes tensões e correntes q senoidais e de mesma amplitude do que o gráfico anterior:

EixoEstacionario Vas Vqs Iqs

A diferença primária entre as variáveis q e d nessas simulações é o fato das mesmas estarem defasas em noventa graus no tempo.

Correntes dq induzidas no rotor

Ainda para o eixo estacionário, obtemos as seguintes correntes dq induzidas no rotor, cujas grandezas foram refletidas ao estator na figura  abaixo, sendo que o módulo da corrente do rotor durante a partida será discutido posteriormente.

EixoEstacionario Vas Iqr Idr

Novamente constatamos que, por se tratar de um motor simétrico, as componentes q e d possuem o mesmo módulo e forma em regime permanente, sendo as mesmas defasadas em noventa graus.

Como o eixo de referência encontra-se fixo no estator, as correntes do rotor tendem a uma constante, que no caso sem carga e perdas mecânicas, é zero.

Torque elétrico desenvolvido e velocidade do rotor

Ressaltamos que a equação do torque elétrico, referente ao cálculo do torque elétrico a partir das componentes d e q, continua válida para o eixo de referência estacionário na transformação dq0, motivo pelo qual o gráfico da figura abaixo é idêntico ao da figura 5:

EixoEstacionario Te Vel R

Em relação à velocidade do rotor, observamos ainda a oscilação do mesmo nos instantes iniciais e outro transitório oscilatório amortecido após o rotor ultrapassar a velocidade síncrona após o instante de 350 ms devido às oscilações no torque elétrico desenvolvido.

Por fim, como o torque elétrico praticamente para de oscilar no período entre 250ms e 350ms (intervalo de 100ms), constata-se que o rotor acelerou de 50% até 100% da velocidade síncrona em apenas 100ms, enquanto o mesmo dispensou 250ms para acelerar apenas até metade da velocidade final.


Simulação da partida sem carga (eixo de referência no rotor )

Variáveis d no estator

Após a tansformação dq0 no eixo de referência no rotor, obtemos as seguintes tensões e correntes d no estator. Desta vez, como o eixo de referência encontra-se no rotor, as variáveis do estator que variam de frequência conforme disposto na figura 9.

EixoRotor Vas Vds Ids

Variáveis q no estator

Ainda, obtemos as seguintes tensões e correntes q no estator, que possuem as mesmas características em relação às componentes d supramencionadas no caso de um sistema simétrico:

EixoRotor Vas Vqs Iqs

Correntes dq induzidas no rotor

Após a tansformação dq0, obtemos as seguintes correntes dq induzidas no rotor, cujas grandezas foram refletidas ao estator. No caso da simulação com o eixo de referência no rotor, constata-se variação de frequência nas variáveis do rotor, conforme fenômeno já explanado:

EixoRotor Vas Iqr Idr

Torque elétrico desenvolvido e velocidade do rotor

Ressaltamos que a equação do torque elétrico, referente ao cálculo do torque elétrico a partir das componentes d e q, continua válida para o eixo de referência empregado na transformação dq0, motivo pelo qual o gráfico da figura abaixo é idêntico ao da figura 5:

EixoRotor Te Vel R

Simulação da partida sem carga (eixo de referência síncrono )

 

Variáveis d no estator

Após a tansformação dq0 com eixo de referência síncrono, obtemos as seguintes tensões e correntes d no estator. Desta vez, qualquer componente dq correspondente a uma variável com frequência igual à síncrona tenderá a uma constante.

EixoSincrono Vas Vds Ids

Variáveis q no estator

Ainda, obtemos as seguintes tensões e correntes q no estator:

EixoSincrono Vas Vqs Iqs

Os resultados coadunam-se com a teoria da transformação dq0 uma vez que as componentes q e d são constantes em regime permanente (e não senoidais como nos demais casos) para o caso em que o eixo de referência estiver na velocidade síncrona.

Correntes dq induzidas no rotor

Da mesma maneira, obtemos as seguintes correntes dq induzidas no rotor, cujas grandezas foram refletidas ao estator:

EixoSincrono Vas Iqr Idr

Torque elétrico desenvolvido e velocidade do rotor

Ressaltamos que a equação do torque elétrico, referente ao cálculo do torque elétrico a partir das componentes d e q, continua válida para o eixo de referência empregado na transformação dq0, motivo pelo qual o gráfico da figura abaixo é idêntico ao da figura 5:

EixoSincrono Te Vel R

Influências da variação das reatâncias de magnetização e dispersão e resistências do rotor e estator no torque e tempo de aceleração do motor

A seguir, apresentamos sucintamente as consequências da variação de parâmetros correlacionados ao design da máquina como as reatâncias , , e da resistência do rotor :

Acréscimo de 100% no valor da reatância de magnetização

Conforme figura a seguir, não houve variação no torque elétrico em função da alteração do valor da reatância de magnetização para o dobro do seu valor original, tampouco no tempo de aceleração do motor:

VariaveisMaquina Te vel rpm DOBRO Xm

Portanto, teoricamente, poderíamos reduzir a corrente do estator com o acréscimo de , sem alterações na performance da máquina em relação ao torque elétrico.

Acréscimo de 20% no valor das reatâncias de dispersão e simultaneamente

Conforme figura a seguir, com o acréscimo de apenas 20% no valor das reatâncias de dispersão no rotor e estator (simultaneamente)  houve redução significativa no torque elétrico, quase dobrando o tempo de aceleração do rotor:

VariaveisMaquina Te vel rpm DOBRO Xl

Portanto, em relação ao torque elétrico desenvolvido, devemos reduzir o valor das reatâncias de dispersão para seus menores valores possíveis, o que é obtido principalmente pela redução da distância do entreferro entre o estator e rotor.

Acréscimo de 100% no valor da resistência do estator

Conforme figura a seguir, houve redução significativa no torque elétrico em função da alteração do valor da resistência do estator para o dobro do seu valor original, aumentando-se o tempo de aceleração do motor:

VariaveisMaquina Te vel rpm DOBRO Rs

Destaca-se que a corrente no estator, fornecida diretamente pela fonte de tensão, varia proporcionalmente ao valor da resistência do estator em regime permanente. Portanto, o dimensionamento desse parâmetro da máquina é um compromisso entre torque elétrico, corrente em regime permanente e estrutura mecânica do estator.

Acréscimo de 100% no valor da resistência do rotor

Conforme figura a seguir, houve acréscimo significativo no torque elétrico em função da alteração do valor da resistência do rotor para o dobro do seu valor original, reduzindo-se o tempo de aceleração do motor:

VariaveisMaquina Te vel rpm DOBRO Rr

Além do aumento do torque elétrico gerado em função do acréscimo na resistência do rotor, destaca-se que comparando-se a figura abaixo com a figura 29, essa variação também eleva o escorregamento da máquina, reduzindo a eficiência energética da mesma uma vez que :

VariaveisMaquina Te vel rpm regime com zoom


Simulação da partida sem carga e acréscimo de 100% de torque nominal (eixo de referência síncrono )

Nas simulações anteriores, não houve aplicação de carga no motor, exceto no gráfico da figura 23. Nesta seção, investigaremos o efeito da aplicação de 100% da carga nominal em degrau após a obtenção do regime permanente (cerca de 800 ms).

No modelo empregado no Simulink, utilizamos um diagrama de estados do Stateflow, denominado "Torque Carga", com o qual podemos simular qualquer configuração de torque da carga dinamicamente.

Os gráficos a seguir demonstram que há novas oscilações amortecidas após a aplicação da carga em degrau e que as componentes dq das correntes no rotor não mais tendem a zero e sim a uma constante, assim como as componentes dq da corrente do estator que tende a uma constante maior do que o estado em regime sem carga.

Variáveis d no estator

EixoSincrono Vas Vds Ids

Variáveis q no estator

EixoSincrono Vas Vqs Iqs

Correntes induzidas no rotor

EixoRotor Vas Iqr Idr

Torque elétrico e velocidade do rotor

Conforme supracitado, o torque mecânico é aplicado em degrau no instante 800ms e resulta no desenvolvimento dinâmico de torque elétrico, conforme figura abaixo:

EixoEstacionario Te versus Tempo

Conforme o gráfico disposto na figura acima, houve uma oscilação exponencialmente amortecida após a aplicação do torque nominal. Destaca-se que a mesma tem amplitude bem menor do que a oscilação transitória inicial.

VariaveisMaquina Te vel rpm regime2

Na figura abaixo, a curva em azul representa o torque dinâmico e a em vermelho o torque em regime permanente. Constate-se que no início da partida, a curva em vermelho representa o valor médio do torque dinâmico oscilatório amortecido e que próximo à velocidade síncrona, os vértices convergem para o ponto da curva de torque em regime permanente de escorregamento correspondente.

VariaveisMaquina Te vel rpm regime com zoom

Na figura acima, destacamos a região compreendida entre torque nulo e o nominal e a velocidade nominal até a síncrona, com a sobreposição do gráfico de torque elétrico em regime permanente. Na curva em azul é possível perceber claramente a convergência inicial para o estado de torque nominal nulo e velocidade síncrona (condição final antes da aplicação da carga nominal) e após alguns instantes, a convergência para o estado de torque e velocidade nominais com escorregamento não-nulo. Os vértices decorrem exatamente da natureza oscilatória amortecida do torque para a máquina em análise.

Questionamentos

 

Questão 01) Por que o valor eficaz da corrente do motor na partida é elevado, mesmo considerando a partida em vazio?

A corrente do motor de indução trifásico na partida é elevado, com ou sem carga inicial, pois a impedância de entrada equivalente com o rotor em baixa velocidade ou parado é essencialmente as componentes , e em série ( no circuito equivalente constante no livro fitzgerald2013), as quais possuem valores baixos, uma vez que a tensão induzida é diretamente proporcional à velocidade (na transformação dq, essa tensão induzida equivale a e ).

Questão 02) Por que a curva de torque em função do tempo tem caráter oscilatório nos instantes iniciais da partida?

O motor de indução trifásico apresenta torque pulsante durante a energização, com frequência modulante igual à da fonte, devido ao transitório elétrico nas bobinas do rotor e do estator. A maior parcela desse torque pulsante é devido ao transitório elétrico do estator, o que pode ser constatado no gráfico da figura abaixo, que demonstra a variação transitória dos fluxos magnéticos durante a partida:

fluxo magnetico

O envelope da corrente do período transitório também varia e é devido à interação transitória entre o campo magnético produzido pelo estator e o rotor.

Ressalta-se que exatamente pelo fato do torque transitório médio ser próximo da curva de torque em regime permanente, a utilização deste produz resultados satisfatórios na maioria dos casos, conforme induction_handbook.

Questão 03) Uma variação de 10% no torque de carga corresponde a uma variação de 10% nas amplitudes das correntes de estator?

Na simulação da figura abaixo, houve a aplicação de 110% do torque de carga no instante t = 1s, cuja máquina já estava em regime permanente com 100% de torque de carga nominal. Constata-se que a corrente do estator também aumenta em 10% uma vez que o torque elétrico produzido precisa elevar-se em 10% também, o qual por sua vez é proporcional ao módulo da corrente do estator ( e ):

questionamento 3

Questão 04) De que forma seria possível considerar a saturação do circuito magnético no modelo descrito no eixo de referência arbitrário?

Para a simulação da saturação do circuito magnético, bastaria alterar a expressão de e do modelo no Simulink de maneira a subtrair as expressões e , respectivamente, nas quais a função representa a saturação do material magnético (considerada igual para q e d uma vez que o rotor não é saliente), obviamente reduzindo o fluxo resultante.

Questão 05) De que maneira a inclusão de perdas por atrito e ventilação alteraria as curvas de partida de torque, corrente e velocidade em função do tempo?

As perdas por atrito e ventilação variam como cubo da velocidade de rotação da máquina e, por isso, não haveria alterações significativas nessas curvas durante a partida da máquina, instantes nos quais a velocidade do rotor é pequena.


Código-fonte do software desenvolvido no Mathworks Simulink 2014

tela diagramas simulink

tela diagramas simulink

Código-fonte do software desenvolvido no Mathworks MATLAB 2014

 

classdef MIT < handle
    %MIT Simulação de um MIT
    %   Detailed explanation goes here   
   
    %% Constantes
    properties (Constant = true)
        % Fatores de Conversão
        FATOR_HP_W = 746; % Fator de conversão entre HP e watt
        
        % Formatação Gráficos
        LIM_Y_IS = [-2 2]; % Eixo Y, variáveis da máquina
        LIM_Y_IDQ0_PU = [-2 2]; % Eixo Y, variáveis de corrente dq0
        LIM_Y_VDQ0_PU = [-1.2 1.2]; % Eixo Y, variáveis de tensão dq0
        TORQUE_PU = [0 2]; % Eixo Y, variáveis de corrente dq0
        VELOCIDADE_LIM = [1450 1550];
    end
    
    %% Propriedades
    properties
        Tensao_pico; % Tensão de pico aplicado no estator
        Frequencia_eletrica_angular; % Frequência elétrica no estator
        
        Numero_polos; % Número de Polos do MIT
        Potencia_MIT_HP; % Potência Nominal do MIT em HP
        
        %% Parâmetros de Base
        Potencia_base; % Potência de base
        Frequencia_base; % Frequência de Base
        Tensao_base_abc; % Tensão de base ABC
        Tensao_base_qd0; % Tensão de base qd0
        Impedancia_base_abc; % Impedância de Base ABC
        Impedancia_base_qd0; % Impedância de Base ABC
                
        Rs; % Resistência da bobina
        Xm; % Reatância de Magnetização
        Xls; % Reatância de Dispersão
        
        %% Parâmetros Inércia
        J; % Momento de Inércia
        H; % Constante de Inércia normalizado
        
        Rr_linha; % Resistência do rotor refletida
        Xlr_linha; % Reatância de dispersão do rotor refletida
        Xaq; % Reatância inv (1/Xm + 1/Xls + 1/Xlr')
        Xad; % Reatância inv (1/Xm + 1/Xls + 1/Xlr')
        
        % Eixo de Referência
        EixoReferencia; % Estabelece o eixo de referência dinamicamente
        
        %% Resultados
        Resultado_Te_wr_rpm; % Resultados de torque e velocidade do rotor em RPM
        Resultado_ir_linha_abc; % Corrente do rotor refletida (variáveis da máquina)
        Resultado_ir_linha_qd0 % Corrente do rotor  refletida (transformada dq0)
        Resultado_is_abc; % Correntes do estator abc
        Resultado_is_qd0; % Correntes do estator dq0
        Resultado_vs_abc; % Tensões da fonte abc
        Resultado_vs_qd0; % Tensões da fonte dq0
        
        %Gráficos
        INICIO_SIM; % Início da plotagem dos gráficos (eixo x)
        TEMPO_SIM; % Tempo total de simulação
        X_TICK; % Posicionamento dos ticks no eixo x
    end
        
    %% Métodos
    methods
        % Construtor Padrão com os dados do trabalho        function obj = MIT()
           
            obj.setFrequenciaNominal_Hz(50); % estabelece a frequência aplica de 50Hz 
            obj.setNumeroPolos(4) % máquina de 4 polos
            obj.setPotenciaMIT_HP(215); % potência de 215HP
            obj.setTensaoBaseLL(400); % tensão de linha de 400V
            obj.setMomentoInercia_kg_m2(2.9); % momento de inércia J em kg/m²
            
            obj.setRs_Ohm(0.01379); % resistências das bobinas do estator em ohms
            obj.setXm_Ohm(2.4159); % reatância de magnetização em ohms
            obj.setXls_Ohm(0.0478); % reatância de dispersão do estator em ohms
                                  
            obj.setRr_linha_Ohm(0.007728); % resistência refletida do rotor em ohms
            obj.setXlr_linha_Ohm(0.0478); % reatância  de dispersão do rotor refletida em ohms          
            
            obj.calcularXas();
        end
        
        %% Carrega os parâmetros do exemplo da pág. 20        function carregarDadosExemplo(obj) %% testar simulação com dados do exemplo
            
            obj.Numero_polos = 6;
            obj.Frequencia_eletrica_angular = 2 * pi * 60;
            obj.Frequencia_base = obj.Frequencia_eletrica_angular;
            
            obj.Tensao_pico = 127*sqrt(2);
            obj.Tensao_base_abc = 127*sqrt(2);
            obj.Rs = 0.0453;
            obj.Xm = 2.042;
            obj.Xls = 0.0775;
            
            obj.H = 0.5;
                       
            obj.Rr_linha = 0.0222;
            obj.Xlr_linha = 0.0322;           
            
            obj.calcularXas();
        end
        
        %% Carrega os parâmetros do exemplo da pág. 20        function carregarDadosKrause(obj) %% testar simulação com dados do exemplo
            
            obj.setFrequenciaNominal_Hz(60); % estabelece a frequência aplica de 50Hz 
            obj.setNumeroPolos(4) % máquina de 4 polos
            obj.setPotenciaMIT_HP(3); % potência de 215HP
            obj.setTensaoBaseLL(220); % tensão de linha de 400V
            obj.setMomentoInercia_kg_m2(0.089); % momento de inércia J em kg/m²
            
            obj.setRs_Ohm(0.435); % resistências das bobinas do estator em ohms
            obj.setXm_Ohm(26.13); % reatância de magnetização em ohms
            obj.setXls_Ohm(0.754); % reatância de dispersão do estator em ohms
                                  
            obj.setRr_linha_Ohm(0.816); % resistências das bobinas refletidas do rotor em ohms
            obj.setXlr_linha_Ohm(0.754); % reatância  de dispersão do rotor refletida em ohms          
            
            obj.calcularXas();
        end
        
        % Calcula Xas a partir de Xm, Xls e Xlr_linha já definidos        function calcularXas(obj)
            obj.Xaq = (1/obj.Xm + 1/obj.Xls + 1/obj.Xlr_linha)^-1;
            obj.Xad = obj.Xaq;
        end
        
        % Estabelece momento de inércia do rotor        function setMomentoInercia_kg_m2(obj, inercia)
            obj.J = inercia;
            obj.H = 0.5*(2/obj.Numero_polos)^2*(obj.Frequencia_base^2/obj.Potencia_base)*obj.J;
        end
        % Estabelece a reatância de dispersão do rotor em ohms        function setXlr_linha_Ohm(obj, reatancia_ohm)
            obj.Xlr_linha = reatancia_ohm/obj.getImpedanciaBaseABC();
        end
        
        % Estabelece resistência da bobina do rotor refletida        function setRr_linha_Ohm(obj, resistencia_ohm)
            obj.Rr_linha = resistencia_ohm/obj.getImpedanciaBaseABC();
        end
        
        % Estabelece a reatância de dispersão do estator        function setXls_Ohm(obj, reatancia_ohm)
            obj.Xls = reatancia_ohm/obj.getImpedanciaBaseABC();
        end
        
        % Estabelece a reatância de magnetização        function setXm_Ohm(obj, reatancia_ohm)
            obj.Xm = reatancia_ohm/obj.getImpedanciaBaseABC();
        end
        
        % Estabelece a resistência da bobina do estator        function setRs_Ohm(obj, resistencia_ohm)
            obj.Rs = resistencia_ohm/obj.getImpedanciaBaseABC();
        end
        
        % Estabelece a tensão de base em função da tensão de linha        function setTensaoBaseLL(obj,tensao_LL)
            tensao_LN = tensao_LL/sqrt(3);
            obj.Tensao_base_abc = tensao_LN; % rms
            obj.Tensao_base_qd0 = obj.Tensao_base_abc*sqrt(2); % pico
            obj.Tensao_pico = tensao_LN*sqrt(2);
        end
        
        % Estabelece a frequência nominal da fonte        function setFrequenciaNominal_Hz(obj, freq_Hz)
            obj.Frequencia_eletrica_angular = 2 * pi * freq_Hz;
            obj.Frequencia_base = obj.Frequencia_eletrica_angular;
        end
        
        % Estabelece número de polos da máquina        function setNumeroPolos(obj, num_polos)
            obj.Numero_polos = num_polos;
        end
        
        % Retorna a impedância de base ABC        function impedancia = getImpedanciaBaseABC(obj)
            obj.Impedancia_base_abc = 3*obj.Tensao_base_abc^2/obj.Potencia_base;
            impedancia = obj.Impedancia_base_abc;
        end
        
        % Retorna a impedância de base dq0        function impedancia = getImpedanciaBaseQD0(obj)
            obj.Tensao_base_qd0 = sqrt(2)*obj.Tensao_base_abc;
            obj.Impedancia_base_qd0 = (3/2)*obj.Tensao_base_qd0^2/obj.Potencia_base;
            impedancia = obj.Impedancia_base_qd0;
        end
        
        % Estabelece a potência trifásica do MIT em HP        function setPotenciaMIT_HP(obj, potencia_HP)
            obj.Potencia_MIT_HP = potencia_HP;
            obj.Potencia_base = potencia_HP * obj.FATOR_HP_W;
        end
        % Exporta as variáveis para o workspace base para torná-las
        % acessíveis ao Simulink        function exportarVariaveisWorkspace(obj)
            assignin('base','Xls',obj.Xls);
            assignin('base','Tensao_pico',obj.Tensao_pico);
            assignin('base','Frequencia_eletrica_angular',obj.Frequencia_eletrica_angular);
            assignin('base','Numero_polos',obj.Numero_polos);
            assignin('base','Potencia_base',obj.Potencia_base);
            assignin('base','Frequencia_base',obj.Frequencia_base);
            
            assignin('base','Tensao_base_abc',obj.Tensao_base_abc);
            assignin('base','Tensao_base_qd0',obj.Tensao_base_qd0);
            assignin('base','Impedancia_base_abc',obj.Impedancia_base_abc);
            assignin('base','Rs',obj.Rs);
            assignin('base','Xm',obj.Xm);
            assignin('base','Xls',obj.Xls);
            assignin('base','H',obj.H);
            assignin('base','Frequencia_base',obj.Frequencia_base);
        
            assignin('base','Rr_linha',obj.Rr_linha);
            assignin('base','Xlr_linha',obj.Xlr_linha);
            assignin('base','Xaq',obj.Xaq);
            assignin('base','Xad',obj.Xad);
            assignin('base','EixoReferencia',obj.EixoReferencia);
        end
        
        % Exporta as variáveis atuais para o workspace padrão,
        % executa a simulação no Simulink e depois obtém os resultados.        function executarSimulink(obj)
            obj.exportarVariaveisWorkspace();
            sim('mit_dq0');
            obj.Resultado_Te_wr_rpm = Te_wr_rpm;
            obj.Resultado_ir_linha_abc = ir_linha_abc;
            obj.Resultado_ir_linha_qd0 = ir_linha_qd0;
            obj.Resultado_is_abc = is_abc;
            obj.Resultado_is_qd0 = is_qd0;
            obj.Resultado_vs_abc = vs_abc;
            obj.Resultado_vs_qd0 = vs_qd0;
        end
        
        % Fixa o eixo de referência da transformada como o do estator
        % (estacionário)        function simularEixoReferenciaEstacionario(obj)
            obj.EixoReferencia = 1; % 1 para w = 0, 2 para w = wr e 3 para w = we
            obj.executarSimulink();
        end
        
        % Fixa o eixo de referência da transformada como o do rotor
        % (velocidade do rotor)        function simularEixoReferenciaRotor(obj)
            obj.EixoReferencia = 2; % 1 para w = 0, 2 para w = wr e 3 para w = we
            obj.executarSimulink();
        end
        
        % Fixa o eixo de referência da transformada como o síncrono 
        % (velocidade síncrona)        function simularEixoReferenciaSincrono(obj)
            obj.EixoReferencia = 3; % 1 para w = 0, 2 para w = wr e 3 para w = we
            obj.executarSimulink();
        end
        
        % Gera os gráficos para as correntes no estator (variáveis da
        % máquina)        function h = gerarGraficos_Is(obj)
            %% Gráfico vas [pu]
            subplot(4,1,1);
            h_plot(1) = plot(obj.Resultado_vs_abc.Time,obj.Resultado_vs_abc.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            %% Gráfico ias [pu]
            subplot(4,1,2);
            h_plot(2) = plot(obj.Resultado_is_abc.Time,obj.Resultado_is_abc.Data(:,1),'LineWidth',1);
            xlabel('');
            ylabel('I_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IS);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico ibs [pu]
            subplot(4,1,3);
            h_plot(3) = plot(obj.Resultado_is_abc.Time,obj.Resultado_is_abc.Data(:,2),'LineWidth',1);
            xlabel('');
            ylabel('I_{bs} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IS);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico ics [pu]
            subplot(4,1,4);
            h_plot(4) = plot(obj.Resultado_is_abc.Time,obj.Resultado_is_abc.Data(:,3),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('I_{cs} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IS);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            set(gcf,'Color','white');
            
            h = h_plot;
        end
        % Gera os gráficos para as correntes no rotor (variáveis da
        % máquina)        function h = gerarGraficos_Ir(obj)
            %% Gráfico vas [pu]
            subplot(4,1,1);
            h_plot(1) = plot(obj.Resultado_vs_abc.Time,obj.Resultado_vs_abc.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            %% Gráfico i'ar [pu]
            subplot(4,1,2);
            h_plot(2) = plot(obj.Resultado_ir_linha_abc.Time,obj.Resultado_ir_linha_abc.Data(:,1),'LineWidth',1);
            xlabel('');
            ylabel('I''_{ar} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico i'br [pu]
            subplot(4,1,3);
            h_plot(3) = plot(obj.Resultado_ir_linha_abc.Time,obj.Resultado_ir_linha_abc.Data(:,2),'LineWidth',1);
            xlabel('');
            ylabel('I''_{br} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico i'cr [pu]
            subplot(4,1,4);
            h_plot(4) = plot(obj.Resultado_ir_linha_abc.Time,obj.Resultado_ir_linha_abc.Data(:,3),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('I''_{cr} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end    
        
        % Gera os gráficos de torque e velocidade do rotor        function h = gerarGraficos_Te_Vel_R(obj)
            %% Gráfico Te [pu]
            hold on;
            subplot(2,1,1);
            h_plot(1) = plot(obj.Resultado_Te_wr_rpm.Time,obj.Resultado_Te_wr_rpm.Data(:,1),'LineWidth',1);
            xlabel('');
            ylabel('T_E (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.TORQUE_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico wr/wb%             hold on;%             subplot(3,1,2);%             h_plot(2) = plot(obj.Resultado_Te_wr_rpm.Time,obj.Resultado_Te_wr_rpm.Data(:,2),'LineWidth',1);%             xlabel('');%             ylabel('\omega_r/\omega_b', 'FontSize',11);%             xlim([obj.INICIO_SIM obj.TEMPO_SIM]);%             ylim([0 1.2]);%             set(gca,'XTick',obj.X_TICK);%             %title('');%             grid on;
            %% Gráfico RPM [pu]
            hold on;
            subplot(2,1,2);
            h_plot(2) = plot(obj.Resultado_Te_wr_rpm.Time,obj.Resultado_Te_wr_rpm.Data(:,3),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('Vel. [rpm]', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.VELOCIDADE_LIM);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            
            set(gcf,'Color','white');
            h = h_plot;
        end    
        
        % Gera os gráficos de Te versus tempo        function h = gerarGraficos_Te_versus_Tempo(obj)
            %% Gráfico Te [pu]
            h_plot(1) = plot(obj.Resultado_Te_wr_rpm.Time,obj.Resultado_Te_wr_rpm.Data(:,1),'LineWidth',1);
            xlabel('tempo (s)');
            ylabel('T_E (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.TORQUE_PU);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end    
        
        % Gera o gráfico de torque elétrico versus velocidade base        function h = gerarGraficos_Te_vel_base(obj)
            %% Gráfico Te [pu]
            h_plot(1) = plot(obj.Resultado_Te_wr_rpm.Data(:,2),obj.Resultado_Te_wr_rpm.Data(:,1),'LineWidth',1);
            xlabel('\omega_r/\omega_b', 'FontSize',11);
            ylabel('T_E (pu)', 'FontSize',11);
            %title('Torque elétrico (pu) versus \omega_r/\omega_b','FontSize',14);
            xlim([0 1.1]);
            %set(gca,'XTick',obj.X_TICK);
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end
        
        % Gera o gráfico de torque elétrico versus velocidade em RPM        function h = gerarGraficos_Te_vel_rpm(obj)
            %% Gráfico Te [pu]
            h_plot(1) = plot(obj.Resultado_Te_wr_rpm.Data(:,3),obj.Resultado_Te_wr_rpm.Data(:,1),'LineWidth',1);
            xlabel('Velocidade (rpm)', 'FontSize',11);
            ylabel('T_E (pu)', 'FontSize',11);
            %title('Torque elétrico (pu) versus velocidade em RPM','FontSize',14);
            %xlim([obj.INICIO_SIM 1.2]);
            %set(gca,'XTick',obj.X_TICK.*3600);
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end        function h = gerarGraficos_Vas_Vqs_Iqs(obj)
            %% Gráfico vas [pu]
            subplot(3,1,1);
            h_plot(1) = plot(obj.Resultado_vs_abc.Time,obj.Resultado_vs_abc.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            %% Gráfico vqs [pu]
            subplot(3,1,2);
            h_plot(2) = plot(obj.Resultado_vs_qd0.Time,obj.Resultado_vs_qd0.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{qs} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_VDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico iqs [pu]
            subplot(3,1,3);
            h_plot(3) = plot(obj.Resultado_is_qd0.Time,obj.Resultado_is_qd0.Data(:,1),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('I_{qs} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end        function h = gerarGraficos_Vas_Vds_Ids(obj)
            %% Gráfico vas [pu]
            subplot(3,1,1);
            h_plot(1) = plot(obj.Resultado_vs_abc.Time,obj.Resultado_vs_abc.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            %% Gráfico vds [pu]
            subplot(3,1,2);
            h_plot(2) = plot(obj.Resultado_vs_qd0.Time,obj.Resultado_vs_qd0.Data(2,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{ds} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_VDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico iqs [pu]
            subplot(3,1,3);
            h_plot(3) = plot(obj.Resultado_is_qd0.Time,obj.Resultado_is_qd0.Data(:,2),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('I_{ds} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end        function h = gerarGraficos_Vas_Iqr_Idr(obj)
            %% Gráfico vas [pu]
            subplot(3,1,1);
            h_plot(1) = plot(obj.Resultado_vs_abc.Time,obj.Resultado_vs_abc.Data(1,:),'LineWidth',1);
            xlabel('');
            ylabel('V_{as} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            set(gca,'XTick',obj.X_TICK);
            grid on;
            %% Gráfico Iqr [pu]
            subplot(3,1,2);
            h_plot(2) = plot(obj.Resultado_ir_linha_qd0.Time,obj.Resultado_ir_linha_qd0.Data(:,1),'LineWidth',1);
            xlabel('');
            ylabel('I_{qr} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            %% Gráfico Idr [pu]
            subplot(3,1,3);
            h_plot(3) = plot(obj.Resultado_ir_linha_qd0.Time,obj.Resultado_ir_linha_qd0.Data(:,2),'LineWidth',1);
            xlabel('tempo (s)', 'FontSize',11);
            ylabel('I_{dr} (pu)', 'FontSize',11);
            xlim([obj.INICIO_SIM obj.TEMPO_SIM]);
            ylim(obj.LIM_Y_IDQ0_PU);
            set(gca,'XTick',obj.X_TICK);
            %title('');
            grid on;
            set(gcf,'Color','white');
            h = h_plot;
        end        function gerarGraficos_VariaveisMaquina_Is(obj)
            obj.gerarGraficos_Is();
            subplot(4,1,1);
            %title('Partida sem carga - Variáveis da Máquina (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Is');
        end        function gerarGraficos_VariaveisMaquina_Ir(obj)
            obj.gerarGraficos_Ir();
            subplot(4,1,1);
            %title('Partida sem carga - Variáveis da Máquina (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Ir');
        end            function gerarGraficos_VariaveisMaquina_Te_versus_Tempo(obj)
            obj.gerarGraficos_Te_versus_Tempo();
            %title('Partida sem carga - Variáveis da Máquina (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_versus_Tempo');
        end            function gerarGraficos_VariaveisMaquina_Te_Vel_R(obj)
            obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            %title('Partida sem carga - Variáveis da Máquina (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_Vel_R');
        end            function gerarGraficos_EixoEstacionario_Te_versus_Tempo(obj)
            obj.gerarGraficos_Te_versus_Tempo();
            %title('Partida sem carga - Eixo Estacionário (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoEstacionario_Te_versus_Tempo');
        end            function gerarGraficos_EixoRotor_Te_versus_Tempo(obj)
            obj.gerarGraficos_Te_versus_Tempo();
            %title('Partida sem carga - Eixo no Rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoRotor_Te_versus_Tempo');
        end            function gerarGraficos_EixoSincrono_Te_versus_Tempo(obj)
            obj.gerarGraficos_Te_versus_Tempo();
            %title('Partida sem carga - Eixo Síncrono (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoSincrono_Te_versus_Tempo');
        end            function gerarGraficos_EixoEstacionario_Te_Vel_R(obj)
            obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            %title('Partida sem carga - Eixo Estacionário (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoEstacionario_Te_Vel_R');
        end            function gerarGraficos_EixoRotor_Te_Vel_R(obj)
            obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            %title('Partida sem carga - Eixo Rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoRotor_Te_Vel_R');
        end            function gerarGraficos_EixoSincrono_Te_Vel_R(obj)
            obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            %title('Partida sem carga - Eixo Síncrono (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoSincrono_Te_Vel_R');
        end            function gerarGraficos_VariaveisMaquina_Te_vel_base(obj)
            obj.gerarGraficos_Te_vel_base();
            ylim([-3 4]);
            %title('Torque elétrico (pu) versus \omega_r/\omega_b','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_base');
        end        function gerarGraficos_VariaveisMaquina_Te_vel_rpm(obj)
            obj.gerarGraficos_Te_vel_rpm();
            ylim([-3 4]);
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm');
        end        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_zoom(obj)
            obj.gerarGraficos_Te_vel_rpm();
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            hold on;
            obj.adicionarGrafico_Te_regime();
            xlim([1400 1650]);
            ylim([-2.8 2.8]);
            legend('T_E dinâmico','T_E regime');%,'Location','North');
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_regime_com_zoom');
        end        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_regime(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            obj.adicionarGrafico_Te_regime();
            legend('T_E dinâmico','T_E regime','Location','North');
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_regime2');
        end               function gerarGraficos_EixoEstacionario_Vas_Vqs_Iqs(obj)
            obj.gerarGraficos_Vas_Vqs_Iqs();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo Estacionário (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoEstacionario_Vas_Vqs_Iqs');
        end        function gerarGraficos_EixoEstacionario_Vas_Vds_Ids(obj)
            obj.gerarGraficos_Vas_Vds_Ids();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo Estacionário (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoEstacionario_Vas_Vds_Ids');
        end        function gerarGraficos_EixoEstacionario_Vas_Iqr_Idr(obj)
            obj.gerarGraficos_Vas_Iqr_Idr();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo Estacionário (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoEstacionario_Vas_Iqr_Idr');
        end        function gerarGraficos_EixoRotor_Vas_Vqs_Iqs(obj)
            obj.gerarGraficos_Vas_Vqs_Iqs();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo fixo no rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoRotor_Vas_Vqs_Iqs');
        end        function gerarGraficos_EixoRotor_Vas_Vds_Ids(obj)
            obj.gerarGraficos_Vas_Vds_Ids();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo fixo no rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoRotor_Vas_Vds_Ids');
        end        function gerarGraficos_EixoRotor_Vas_Iqr_Idr(obj)
            obj.gerarGraficos_Vas_Iqr_Idr();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo fixo no rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoRotor_Vas_Iqr_Idr');
        end         function gerarGraficos_EixoSincrono_Vas_Vqs_Iqs(obj)
            obj.gerarGraficos_Vas_Vqs_Iqs();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo síncrono no rotor (valores em pu)', 'FontSize',14);
            subplot(3,1,2);
            obj.salvarPlotAtual('EixoSincrono_Vas_Vqs_Iqs');
        end        function gerarGraficos_EixoSincrono_Vas_Vds_Ids(obj)
            obj.gerarGraficos_Vas_Vds_Ids();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo síncrono no rotor (valores em pu)', 'FontSize',14);
            subplot(3,1,2);
            obj.salvarPlotAtual('EixoSincrono_Vas_Vds_Ids');
        end        function gerarGraficos_EixoSincrono_Vas_Iqr_Idr(obj)
            obj.gerarGraficos_Vas_Iqr_Idr();
            subplot(3,1,1);
            %title('Partida sem carga - Eixo síncrono no rotor (valores em pu)', 'FontSize',14);
            obj.salvarPlotAtual('EixoSincrono_Vas_Iqr_Idr');
        end 
        
        % Salva o gráfico atual em um arquivo.        function salvarPlotAtual(obj, nome_arquivo)
            pasta = 'graficos_com_carga\';
            saveas(gca, [pasta nome_arquivo '.fig']);
            I = getframe(gcf);
            arqv = [pasta, nome_arquivo,'.png'];
            imwrite(I.cdata, arqv, 'Quality', '100', 'WriteMode','overwrite');
            close;
        end        function adicionarGrafico_Te_regime(obj)
            tensao_fonte_pu = 1;
            frequencia_eletrica_Hz = obj.Frequencia_eletrica_angular/(2*pi); 
            Xrr=obj.Xlr_linha + obj.Xm; 
            Xss=obj.Xls + obj.Xm;
            vel_sincrona = 120*frequencia_eletrica_Hz/obj.Numero_polos;
            frequencia_fonte = obj.Frequencia_eletrica_angular;
            freq_base = frequencia_fonte;
            
            %torque = zeros(vel_sincrona);
            %Ia = zeros(vel_sincrona);
            for velocidade_rotor=0:1:vel_sincrona
                escorregamento=(vel_sincrona-velocidade_rotor)/vel_sincrona;
                torque(velocidade_rotor+1) = (frequencia_fonte/freq_base)*(obj.Rr_linha/escorregamento)*(obj.Xm^2)*(tensao_fonte_pu^2)/ ...
                    (((obj.Rr_linha*obj.Rs/escorregamento) + ((frequencia_fonte/freq_base)^2)*(obj.Xm^2 - Xss*Xrr))^2 + ...
                    ((frequencia_fonte/freq_base)^2)*((obj.Rr_linha*Xss/escorregamento) + obj.Rs*Xrr)^2);
            end
            velocidade=0:1:vel_sincrona;
            
            hold on;
            plot(velocidade,torque,'r');
        end        function gerarGrafico_corrente_estator_regime(obj)
            tensao_fonte_pu = 1;
            frequencia_eletrica_Hz = obj.Frequencia_eletrica_angular/(2*pi); 
            Xrr=obj.Xlr_linha + obj.Xm; 
            Xss=obj.Xls + obj.Xm;
            vel_sincrona = 120*frequencia_eletrica_Hz/obj.Numero_polos;
            frequencia_fonte = obj.Frequencia_eletrica_angular;
            freq_base = frequencia_fonte;
            
            %torque = zeros(vel_sincrona);
            %Ia = zeros(vel_sincrona);
            for velocidade_rotor=0:1:vel_sincrona
                escorregamento=(vel_sincrona-velocidade_rotor)/vel_sincrona;
                corrente_estator(velocidade_rotor+1) = tensao_fonte_pu/abs(((obj.Rr_linha*obj.Rs/escorregamento) + ((frequencia_fonte/freq_base)^2)*(obj.Xm^2-Xss*Xrr) + ...
                    j*(frequencia_fonte/freq_base)*(obj.Rr_linha*Xss/escorregamento)+obj.Rs*Xrr)/((obj.Rr_linha/escorregamento) + j*(frequencia_fonte/freq_base)*Xrr));
            end
            velocidade=0:1:vel_sincrona;
            
            plot(velocidade,corrente_estator,'r');
            ylabel('Is (s)');
            xlabel('velocidade (rpm)');
            set(gcf,'Color','white');
            grid on;
            obj.salvarPlotAtual('VariaveisMaquina_corrente_estator_regime');
        end
        
        %% Análise comparativa de variações de parâmetros
        % Análise da variação de Xm no torque elétrico        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_DobrarXm(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            obj.Xm = obj.Xm*2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_vel_rpm();
            ylim([-3 4]);
            legend('Xm','2*Xm');
            set(h,'Color','r')           
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_DOBRO_Xm');
            obj.Xm = obj.Xm/2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
               
        % Análise da variação de Rs no torque elétrico        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_DobrarRs(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            obj.Rs = obj.Rs*2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_vel_rpm();
            ylim([-3 4]);
            legend('Rs','2*Rs');
            set(h,'Color','r')
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_DOBRO_Rs');
            obj.Rs = obj.Rs/2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
               
        % Análise da variação de Rr no torque elétrico        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_DobrarRr(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            obj.Rr_linha = obj.Rr_linha*2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_vel_rpm();
            ylim([-4 6]);
            legend('Rr''','2*Rr''');
            set(h,'Color','r')
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_DOBRO_Rr');
            obj.Rr_linha = obj.Rr_linha/2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
               
        % Análise da variação de Xl no torque elétrico        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_DobrarXl(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            obj.Xls = obj.Xls*1.2;
            obj.Xlr_linha = obj.Xlr_linha*1.2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_vel_rpm();
            ylim([-3 4]);
            legend('Xls e Xlr''','1,2*Xls e 1,2*Xlr''');
            set(h,'Color','r')
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_DOBRO_Xl');
            obj.Xls = obj.Xls/1.2;
            obj.Xlr_linha = obj.Xlr_linha/1.2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
               
        % Análise da variação de J no torque elétrico        function gerarGraficos_VariaveisMaquina_Te_vel_rpm_DobrarJ(obj)
            obj.gerarGraficos_Te_vel_rpm();
            hold on;
            inercia_antiga = obj.J;
            obj.setMomentoInercia_kg_m2(inercia_antiga*2);
            
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_vel_rpm();
            ylim([-3 4]);
            legend('J','2*J');
            set(h,'Color','r')
            %title('Torque elétrico (pu) versus velocidade do rotor em RPM','FontSize',14);
            obj.salvarPlotAtual('VariaveisMaquina_Te_vel_rpm_DOBRO_J');
            obj.setMomentoInercia_kg_m2(inercia_antiga);
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
        
        % Análise da variação de J no torque elétrico e velocidade do rotor versus tempo        function gerarGraficos_VariaveisMaquina_Te_Vel_R_DobrarJ(obj)
            obj.gerarGraficos_Te_Vel_R();
            
            inercia_antiga = obj.J;
            obj.setMomentoInercia_kg_m2(inercia_antiga*2);
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            legend('J','2*J');
            set(h,'Color','r')
            
            obj.salvarPlotAtual('gerarGraficos_Te_Vel_R_DOBRO_J');
            obj.setMomentoInercia_kg_m2(inercia_antiga);
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end
            
        % Análise da variação de Xl no torque elétrico e velocidade do rotor versus tempo        function gerarGraficos_VariaveisMaquina_Te_Vel_R_DobrarXl(obj)
            obj.gerarGraficos_Te_Vel_R();
            hold on;
            obj.Xls = obj.Xls*1.2;
            obj.Xlr_linha = obj.Xlr_linha*1.2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            legend('Xls e Xlr''','1,2*Xls e 1,2*Xlr''');
            set(h,'Color','r')
            
            obj.salvarPlotAtual('gerarGraficos_Te_Vel_R_DOBRO_Xl');
            obj.Xls = obj.Xls/1.2;
            obj.Xlr_linha = obj.Xlr_linha/1.2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end  
        % Análise da variação de Xlr_linha no torque elétrico e velocidade do rotor versus tempo        function gerarGraficos_VariaveisMaquina_Te_Vel_R_DobrarXlr_linha(obj)
            obj.gerarGraficos_Te_Vel_R();
            hold on;
            %obj.Xls = obj.Xls*1.2;
            obj.Xlr_linha = obj.Xlr_linha*1.2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            legend('Xlr''','1,2*Xlr''');
            set(h,'Color','r')
            
            obj.salvarPlotAtual('gerarGraficos_Te_Vel_R_DOBRO_Xlr_linha');
            %obj.Xls = obj.Xls/1.2;
            obj.Xlr_linha = obj.Xlr_linha/1.2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end  
        % Análise da variação de Xls no torque elétrico e velocidade do rotor versus tempo        function gerarGraficos_VariaveisMaquina_Te_Vel_R_DobrarXls(obj)
            obj.gerarGraficos_Te_Vel_R();
            hold on;
            obj.Xls = obj.Xls*1.2;
            %obj.Xlr_linha = obj.Xlr_linha*1.2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            legend('Xls','1,2*Xls');
            set(h,'Color','r')
            
            obj.salvarPlotAtual('gerarGraficos_Te_Vel_R_DOBRO_Xls');
            obj.Xls = obj.Xls/1.2;
            %obj.Xlr_linha = obj.Xlr_linha/1.2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end  
        
        % Análise da variação de Rr no torque elétrico e velocidade do rotor versus tempo        function gerarGraficos_VariaveisMaquina_Te_Vel_R_DobrarRr(obj)
            obj.gerarGraficos_Te_Vel_R();
            hold on;
            obj.Rr_linha = obj.Rr_linha*2;
            obj.simularEixoReferenciaEstacionario();
            h = obj.gerarGraficos_Te_Vel_R();
            subplot(2,1,1);
            ylim([-4 6]);
            legend('Rr''','2*Rr''');
            set(h,'Color','r')
            
            obj.salvarPlotAtual('gerarGraficos_Te_Vel_R_DOBRO_Rr');
            obj.Rr_linha = obj.Rr_linha/2;
            obj.simularEixoReferenciaEstacionario(); % Retornar estado anterior
        end        
        
    end
    end

5 comentários

  • Nuccia
    Nuccia Quinta, 29 Agosto 2019 23:33 Link do comentário

    boa noite...
    poderia me enviar o código.m para o motor trifásico

  • Cialis
    Cialis Sexta, 01 Março 2019 11:29 Link do comentário

    That is a good tip especially to those fresh to the blogosphere.
    Brief but very precise information… Thanks for sharing
    this one. A must read article!

  • Chico João
    Chico João Sexta, 05 Fevereiro 2016 06:49 Link do comentário

    Bom dia,

    Achei o texto muito interessante para estudantes e profissionais de engenharia.

  • Chico João
    Chico João Sexta, 05 Fevereiro 2016 06:49 Link do comentário

    Bom dia,

    Achei o texto muito interessante para estudantes e profissionais de engenharia.

  • Chico João
    Chico João Sexta, 05 Fevereiro 2016 06:48 Link do comentário

    Bom dia,

    Achei o texto muito interessante para estudantes e profissionais de engenharia.

Deixe um comentário

Certifique-se de preencher os campos indicados com (*). Não é permitido código HTML.