Você está na página 1de 29

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

CURSO DE ENGENHARIA ELÉTRICA

ALLAN MAGNO COSTA TEIXEIRA

RESOLUÇÃO DOS EXERCÍCIOS REALIZADOS NA DISCIPLINA DE


CONTROLE DIGITAL

RELATÓRIO DE EXERCÍCIOS

PATO BRANCO
2014
ALLAN MAGNO COSTA TEIXEIRA

RESOLUÇÃO DOS EXERCÍCIOS REALIZADOS NA DISCIPLINA DE


CONTROLE DIGITAL

Relatório de exercícios apresentado à


disciplina de Controle Digital do programa de
Graduação em Engenharia Elétrica da
Universidade Tecnológica Federal do Paraná,
Campus Pato Branco-PR.

Orientador: Prof. D. Emerson Giovani Carati.

PATO BRANCO
2014
RESUMO

Durante as aulas da disciplina de Controle Digital, desenvolvidas na


Universidade Tecnológica Federal do Paraná – Campus Pato Branco, foram propostos
exercícios, para que os acadêmicos os resolvessem através do programa de computador
MATLAB. Foram realizados cinco exercícios, uma para cada conteúdo, sendo esse na
temática Sinal em Tempo Discreto, Sistemas em Tempo Discreto e Transformada Z,
Transformada Z Inversa, Métodos de Discretização, e Controladores PID em Tempo Discreto.
Para análise dos exercícios fora utilizado as ferramentas computacionais do MATLAB, para
geração de curvas de plotagem, e em um caso, utilizou-se a ferramenta de simulação
denominada SIMULINK.

Palavras-chave: MATLAB, exercícios, Controle Digital, simulação,


SIMULINK.
SUMÁRIO

1 AULA 09 E 16/09/2014 ........................................................................................................ 4


1.1 SINAIS EM TEMPO DISCRETO....................................................................................... 4
1.1.1 Exercício apresentado na página 7 ................................................................................ 5
1.1.2 Exercício apresentado na página 8 ................................................................................ 8
2 AULA 02 – 16/09/2014 ....................................................................................................... 11
2.1 CONVOLUÇÃO EM TEMPO DISCRETO...................................................................... 11
2.1.1 Exercício apresentado na página 6 .................................................................................. 11
3 AULA 03 – 07/10/2014 ....................................................................................................... 14
3.1 TRANSFORMADA Z INVERSA..................................................................................... 14
3.1.1 Exercício apresentado na página 13 ............................................................................ 15
4 AULA 04 – 21/10/2014 ....................................................................................................... 19
4.1 MÉTODOS DE DISCRETIZAÇÃO ................................................................................. 19
4.1.1 Exercício apresentado na página 11 ............................................................................ 20
5 AULA 05 – 21/10/2014 ....................................................................................................... 23
5.1 DISCRETE-TIME PID CONTROLLERS ........................................................................ 23
5.1.1 Exercício apresentado na página 9 .............................................................................. 24
6 REFERÊNCIAS ................................................................................................................. 28
4

1 AULA 09 e 16/09/2014

1.1 SINAIS EM TEMPO DISCRETO

Durante a aula ministrada no dia 16 (dezesseis) de setembro de 2014 (dois mil


e catorze) fora abordado a representação e a análise de um sinal no tempo discreto.
Basicamente um sinal discreto é representado algebricamente na forma:

𝑥𝑛 = 𝑥[𝑛] = 𝑥(𝑡𝑛 ) = 𝑥(𝑛 × 𝑇𝑠 )

onde 𝑛 ∈ 𝕀, sendo apresentados graficamente através de um eixo horizontal, o qual possuí a


indicação do número de amostras “𝑛”, e um eixo vertical, indicando a amplitude do sinal.
O sinal discreto geralmente é utilizado para representar um sinal continuo,
sendo apresentado por barras verticais em cada ponto de amostragem. A discretização de um
sinal consiste fundamentalmente em aplicar um impulso unitário a cada período de
amostragem, de maneira uniforme, assim como representado na Figura 1.

Figura 1 - Discretização de um sinal. (a) Sinal contínuo. (b) Impulsos espaçados pelo período de
amostragem (c) Sinal em tempo discreto.
Fonte: Carati (2014, p. 5)¹
5

Foram propostos exercício com a temática, contidos em um arquivo de roteiro


de aula, disponibilizado pelo professor responsável pela disciplina de Controle Digital [2], os
quais terão a resolução apresentada nos subcapítulos a seguir.

1.1.1 Exercício apresentado na página 7

O conteúdo apresentado no exercício referente a página 7 consiste em:


“Considerando a sequência descrita abaixo, construir as operações propostas usando Matlab:
𝑥[𝑛] = ∑5𝑘=1 𝑘 × 𝛿[𝑛 − 2𝑘] ℎ[𝑛] = 𝑢[𝑛 − 4] − 𝑢[𝑛 − 15]” [2], essas equações estão
a seguir apresentadas:
a) 𝑦[𝑛] = 𝑥[𝑛] + 2 × ℎ[𝑛];
b) 𝑧[𝑛] = 𝑥[𝑛 − 2] × ℎ[𝑛];

Para a construção das operações apresentadas acima, fez-se construção de duas


funções, que serão utilizadas no código principal, denominadas ‘𝑢’ e ‘𝑑𝑒𝑙𝑡𝑎’, essas funções
consistem nos seguintes códigos:

o Criação da função ‘𝑢’

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Função degrau unitário
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=u(x) % Comando para identificar com função
if x>=0 % Inicialização do degrau unitário em zero
y=1; % Amplitude do degrau, neste caso ele é unitário
else
y=0; % No trecho antes do zero admite-se que a amplitude é zero
end

o Criação da função ‘𝑑𝑒𝑙𝑡𝑎’

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Função degrau unitário
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function y=delta(x) % Comando para identificar com função


if x==0 % Criação de um impulso em zero
y=1; % Definido a amplitude do impulso como unitária
else
y=0; % Nos trechos diferentes de zero a amplitude é zero
end
6

Tendo definidas as funções primitivas para a utilização do código principal,


pode-se elaborar sua estrutura, a qual está apresentado abaixo.

𝒂) 𝒚[𝒏] = 𝒙[𝒏] + 𝟐 × 𝒉[𝒏];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa geracao de sinais – Letra a)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;

o Definições iniciais

N = 50; % Número de pontos por ciclo


x = zeros(1,N+1); % Inicialização da variável 'x'
h = zeros(1,N+1); % Inicialização da variável 'h'
np = zeros(1,N+1); % Inicialização da variável 'np'
y = zeros(1,N+1); % Inicialização da variável 'y'
% Construção dos sinais primitivos x[n] e h[n]
for n = 1:N
np(n) = n;
for k = 1:5
x(n) = x(n) + k*delta(n - 2*k); % Construção do vertor x[n]
end
h(n) = u(n-4) - u(n-15); % Construção do vetor h[n]
y(n) = x(n) + 2*h(n); % Realização da operação proposta pelo exercício,
. % com o intuito de gerar o sinal y[n]
end
figure(1) % Criar uma nova figura
subplot(311) % Iniciar uma plotagem no primeiro quadro da figura
stem(np,x,'m'); % Plotagem discreta do sinal x[n]
xlim([0 20]) % Limitação do eixo horizontal
title('x[n]') % Inserre um título no quadro de plotagem
subplot(312) % Iniciar uma plotagem no segundo quadro da figura
stem(np,h,'r'); % Plotagem discreta do sinal h[n]
xlim([0 20]) % Limitação do eixo horizontal
title('h[n]') % Inserre um título no quadro de plotagem
subplot(313) % Iniciar uma plotagem no terceiro quadro da figura
stem(np,y,'b') % Plotagem discreta do sinal y[n]
xlim([0 20]) % Limitação do eixo horizontal
title('x[n]+2*h[n]') % Inserre um título no quadro de plotagem

Através da execução do script apresentado acima, obtêm-se as formas de onda


para 𝑥[𝑛], ℎ[𝑛] 𝑒 𝑦[𝑛], apresentadas, respectivamente, na Figura 2, as quais foram geradas
com o intuito de se analisar a resposta do sinal, quando aplicado à equação especificada pelo
exercício.
7

Figura 2 - Formas de onda referente aos sinais primário x[n] (magenta) e h[n] (vermelho), e o sinal y[n]
(azul), gerado a partir da equação proposta.

b) 𝒛[𝒏] = 𝒙[𝒏 − 𝟐] × 𝒉[𝒏];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Programa geracao de sinais – Letra b)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
clc;

o Definições iniciais

N = 50; % Número de pontos por ciclo


x = zeros(1,N+3); % Inicialização da variável 'x'
h = zeros(1,N+3); % Inicialização da variável 'h'
np = zeros(1,N+3); % Inicialização da variável 'np'
z = zeros(1,N+3); % Inicialização da variável 'z'
% Construção dos sinais primitivos x[n] e h[n]

for n = 1:N
np(n) = n;
for k = 1:5
x(n+2) = x(n+2) + k*delta(n - 2*k); % Construção do vertor x[n], deslocado duas
. % amostras à direita, equivalente à x[n-2]
end
h(n) = u(n-4) - u(n-15); % Construção do vetor h[n]
z(n) = x(n)*h(n); % Realização da operação proposta pelo exercício,
. % com o intuito de gerar o sinal z[n]
end

figure(2) % Criar uma nova figura


subplot(311) % Iniciar uma plotagem no primeiro quadro da figura
stem(np,x,'m'); % Plotagem discreta do sinal x[n]
xlim([0 20]) % Limitação do eixo horizontal
title('x[n]') % Inserre um título no quadro de plotagem
8

subplot(312) % Iniciar uma plotagem no segundo quadro da figura


stem(np,h,'r') % Plotagem discreta do sinal h[n]
xlim([0 20]) % Limitação do eixo horizontal
title('h[n]') % Inserre um título no quadro de plotagem
subplot(313) % Iniciar uma plotagem no terceiro quadro da figura
stem(np,z,'b') % Plotagem discreta do sinal z[n]
xlim([0 20]) % Limitação do eixo horizontal
title('x[n-2]*h[n]') % Inserre um título no quadro de plotagem

Através da execução do script elaborado para a questão “b)”, obtêm-se as


formas de onda para 𝑥[𝑛], ℎ[𝑛] 𝑒 𝑧[𝑛], apresentadas, respectivamente, na Figura 3, as quais
também foram geradas com a intensão de se analisar a resposta do sinal, quando aplicado à
equação especificada pelo exercício.

Figura 3 – Formas de onda referente aos sinais primário x[n] (magenta) e h[n] (vermelho), e o sinal z[n]
(azul), gerado a partir da equação proposta.

1.1.2 Exercício apresentado na página 8

O exercício proposto em sala consiste no seguinte enunciado: “Construa um


script no Matlab para traçar um sinal de tensão senoidal periódico de tempo discreto, com
9

amplitude 30V, 50 pontos por ciclo e com 1ms de intervalo de amostragem. Adicionar um
ruído aleatório 5% ao sinal gerado e comparar os resultados, tanto no script Matlab e
Simulink.”[2].
Para geração do sinal fez-se o uso de um script no Matlab (2013)³, que consiste
em:

clear; % Apagar as váriaveis pré-existentes


clc; % Limpeza da tela de comando do MATLAB
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sequência Tempo-Discreto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

o Definições iniciais

N = 50; % Número de pontos por ciclo


x = zeros(1,N+1); % Inicialização da variável de entrada

o Declarações de entrada

T = 1e-3; % Período de amostragem do sinal (1ms)


fs = 1/T; % Frequência de amostragem do sinal (Hz)
ff = fs/50; % Frequência dos pontos de discretização
A = 30; % Amplitude de 30V da onda senoidal
t = 0:T:5*N*T; % Pasos em segundos
n = 0:5*N; % Número de passos

o Sinais de entrada

x = A*(sin(2*pi*ff*t)); % Sinal senoidal de 30V de amplitude


ruido = A*0.05*(2*rand(1,251)-1); % Ruído randomico de 5%
xruido = x + ruido; % Junão do sinal senoidal com ruído de 5%

o Apresentação gráfica

figure(1); % Inicia um novo quadro de figuras


subplot(311); % Inicia uma caixa superio para plotagem
plot(t,x,'g'); % Plotagem do sinal no tempo amostrado
xlim([0 0.05]); % Limitação do eixo 'x'
ylim([-35 35]); % Limitação do eixo 'y'
title('Onda senoidal continua, com amplitude de 30V e frequência de 20Hz');
xlabel ('Tempo [s]');
ylabel ('Amplitude [V]');
grid on; % Habilita a grade na área de plotagem
subplot(312); % Inicia uma caixa superio para plotagem
stem(t,x,'r'); % Plotagem do sinal no tempo amostrado
xlim([0 0.05]); % Limitação do eixo 'x'
ylim([-35 35]); % Limitação do eixo 'y'
title('Onda senoidal em tempo-discreto, com amplitude de 30V e período de amostragem de 1ms');
xlabel ('Tempo [s]');
ylabel ('Amplitude [V]');
grid on; % Habilita a grade na área de plotagem
subplot(313); % Inicia uma cixa inferior para plotagem
stem(n,xruido); % Plotagem do sinal por número de amostras
xlim([0 50]); % Limitação do eixo 'x'
ylim([-35 35]); % Limitação do eixo 'y'
title('Onda senoidal amostrado, com amplitude de 30V, ruído de 5% e período de amostragem de
1ms');
xlabel ('Número de amostras');
ylabel ('Amplitude [V]');
grid on; % Habilita a grade na área de plotagem
10

Compilando o código apresentado acima, obtêm-se a uma sequência de forma


de onda, as quais estão apresentadas na Figura 4, apresentada a seguir.

Figura 4 – Plotagem dos resultados obtidos para o exercício correspondente à página 8


Fonte: Autoria própria.

A curva em verde, obtida na plotagem que gerou a Figura 2, é correspondente à


um sinal senoidal contínuo com amplitude de 30V e frequência de 20Hz, ou período de 5ms.
Feito isso, plotou-se a mesma forma de onda, porém em tempo discreto, a qual está
apresentada em vermelho. Essa forma de onda consiste em uma discretização do sinal
continuo, através de amostragens homogêneas de 50 pontos por ciclo, com um intervalo de
amostragem de 1ms. Tendo realizado a plotagem discreta do sinal, fez-se a amostragem,
apresentando um sinal por números de amostras, gerando o gráfico em azul. Esse último sinal
consiste no sinal em vermelho acrescido de um ruído, gerado através de uma função interna
do MATLAB para inserir um ruído randômico (rand), visando aproximar o sinal gerado
computacionalmente do sinal físico, considerando as interferências normalmente presentes
nos sinais elétricos.
11

2 AULA 02 – 16/09/2014

2.1 CONVOLUÇÃO EM TEMPO DISCRETO

Durante a aula ministrada no dia 16 (dezesseis) de setembro de 2014 (dois mil


e catorze) fora abordado o conteúdo de sistemas em tempo discreto, com o enfoque em
sistemas de convolução.
A convolução consiste em uma operação matemática entre dois sinais, os quais
geram um terceiro sinal. Esse método, baseado em operações básicas de soma e
multiplicação, é de grande valia para a Engenharia Elétrica, pois é utilizada como base para o
estudo que envolve sistemas lineares invariantes no tempo. A convolução discreta nada mais é
do que a operação de convolução entre sinais apresentados em tempo discreto. Basicamente,
quando se tem dois sinais, genericamente definiremos como sendo 𝑥1 [𝑘]𝑒 𝑥2 [𝑘], a operação
de convolução entre os dois sinais irá gerar um terceiro sinal, o qual será denominado de 𝑦[𝑘].
A descrição algébrica que define a operação de convolução pode ser expressa na forma de
uma equação, apresentada abaixo (DEE, 2014?, p.1).

𝑦[𝑘] = ∑∞
𝑛=−∞ 𝑥1 [𝑛] ∗ 𝑥2 [𝑘 − 𝑛] (1)

Ao analisar a equação (1), pode-se constatar facilmente que a convolução


consiste-se basicamente em uma soma de multiplicações entre os termos dos dois sinais
geradores, gerando assim um terceiro sinal na saída.
Fora proposto um exercício que engloba a teoria abordada em sala, o qual está
apresentado em um arquivo de roteiro de aula, disponibilizado pelo professor responsável pela
disciplina de Controle Digital [5], o qual terá a resolução apresentada no subcapítulo a seguir.

2.1.1 Exercício apresentado na página 6


12

O exercício apresentado em sala traz a seguinte proposta: “Calcule a saída do


sistema a partir de um sinal de entrada 𝑥[𝑛] e uma resposta ao impulso ℎ[𝑛]:

Figura 5 - Sinal de resposta ao impulso h[n] e sinal de entrada x[n].

C) Implemente a convolução em um script do MATLAB”[5]


A implementação em MATLAB fora feita através de uma rotina, a qual tem
como função a geração dos dois sinais iniciais, ℎ[𝑛] e 𝑥[𝑛], e a realização da operação de
convolução, gerando uma terceira forma de onda para ilustrar a resposta proveniente do
operação. A rotina encontra-se descrita abaixo.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sistema de Convolução em tempo dicreto
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear; % Apagar as váriaveis pré-existentes
clc; % Limpeza da tela de comando do MATLAB

o Definições iniciais

N = 100;
K = 100;

x = zeros(1,N+1);
h = zeros(1,N+1);
y = zeros(1,N+1);

o Construção dos sinais

h(1:3) = [1 1 1]; % Construção do sinal h[n]


x(1:4) = [1 1 1 1]; % Construção do sinal x[n]

np = zeros(1,N+1); % Vetor referente ao eixo horizontal


% Execução da operação de convolução
for n = 1:N
np(n) = n-1;
for k = 1:K
if k<n
y(n) = y(n)+x(k)*h(n-k); % Construção do sinal y[n]
end
13

end
end

o Sinal de saída

figure(1) % Inicia um novo quadro de figuras


subplot(311) % Inicia uma caixa superio para plotagem
stem(np,h,'r') % Plotagem do sinal discreto
xlim([0 10]); % Limitação do eixo 'x'
ylim([0 4]); % Limitação do eixo 'y'
title('h[n]') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem
subplot(312) % Inicia uma caixa superio para plotagem
stem(np,x) % Plotagem do sinal discreto
xlim([0 10]); % Limitação do eixo 'x'
ylim([0 4]); % Limitação do eixo 'y'
title('x[n]') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem
subplot(313)
stem(np,y,'g')
xlim([0 10]); % Limitação do eixo 'x'
ylim([0 4]); % Limitação do eixo 'y'
title('y[n]=x[n]*h[n])')% Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

Ao executar a rotina elaborada para operação do procedimento de convolução,


obteve-se as formas de onda dos sinais iniciais ℎ[𝑛] e 𝑥[𝑛], e o sinal de saída 𝑦[𝑛].

Figura 6 - Formas de onda dos sinais a serem convoluidos, x[n] (magenta) e h[n] (vermelho), e o sinal de
saída, z[n] (azul).
14

3 AULA 03 – 07/10/2014

3.1 TRANSFORMADA Z INVERSA

A transformada Z inversa pode ser definida como sendo a sequência de


amostras representada por uma transformada Z. Existem vários métodos utilizados para obter
a transformada inversa de uma expressão no domínio Z, os mais usuais são o por divisões
sucessivas baseadas nas frações parciais ou pelo método de inspeção.
O método das frações parciais baseia-se no conhecimento prévio dos diversos
pares de transformada Z para obtenção da transformada Z inversa das funções trabalhadas.
Admitindo que:

𝐵(𝑧) 𝑏0 + 𝑏1 × 𝑧 −1 + ⋯ + 𝑏𝑀 × 𝑧 −𝑀
𝑋(𝑧) = =
𝐴(𝑧) 𝑎0 + 𝑎1 × 𝑧 −1 + ⋯ + 𝑎𝑁 × 𝑎−𝑁

Se 𝑀 ≥ 𝑁, é permitido a realização da divisão de polinômios, com isso pode-


se obter 𝑋(𝑧) na forma:

𝑀−𝑁
𝐵̃ (𝑧)
𝑋(𝑧) = ∑ 𝑓𝑘 × 𝑧 −𝑘 +
𝐴(𝑧)
𝑘=0

onde o termo 𝐵̃ (𝑧) é o resto da divisão de B(z) pelo A(z), e tem como ordem do polinômio N-
1.
Para o caso 𝑁 > 𝑀, deve-se utilizar a quação:

𝑏0 + 𝑏1 × 𝑧 −1 + ⋯ + 𝑏𝑀 × 𝑧 −𝑀
𝑋(𝑧) =
∏𝑁 −1
𝑘=1(1 − 𝑝𝑘 × 𝑧 )

onde 𝑝𝑘 é referente aos polos de X(z). Para o caso em que não há polos repetido, a definição
de X(z) é dada por:
15

𝑁
𝐴𝑘
𝑋(𝑧) = ∑
1 − 𝑝𝑘 × 𝑧 −1
𝑘=1

Com base no que fora descrito, conclui-se que a transformada inversa é


determinada utilizando-se o par de equações:

𝐴𝑘
𝐴𝑘 (𝑝𝑘 )𝑛 × 𝑢[𝑛] 𝑧⃡ , 𝑅𝐷𝐶 |𝑧| > 𝑝𝑘
1 − 𝑝𝑘 × 𝑧 −1

𝐴𝑘
−𝐴𝑘 (𝑝𝑘 )𝑛 × 𝑢[𝑛 − 1] 𝑧⃡ , 𝑅𝐷𝐶 |𝑧| < 𝑝𝑘
1 − 𝑝𝑘 × 𝑧 −1

O exercício apresentado em sala, através de um arquivo de roteiro de aula,


disponibilizado pelo professor responsável pela disciplina de Controle Digital [6], os quais
terão a resolução apresentada nos subcapítulos a seguir.

3.1.1 Exercício apresentado na página 13

Durante a aula ministrada, no dia em questão, fora proposto a resolução de


parte do exercício, utilizando-se do programa MATLAB. O teor do enunciado da questão
apresenta-se no seguinte texto: “Dada a seguinte função transferência em tempo discreto,
calcule a inversa da transformada Z utilizando métodos computacionais (filtro e equação
diferença) e métodos de integral de inversão.
3×𝑧 2×(𝑧 −1 −0,5×𝑧 −2 )
𝑋(𝑧) = (𝑧−0,5)×(𝑧−0,2) 𝑌(𝑧) = 1−𝑧 −1 +0,1×𝑧 −2

Compare os resultados gráficos utilizando MATLAB (𝑠𝑡𝑒𝑚(𝑛, 𝑥[𝑛])),


considerando o tempo de amostragem de 𝑇 = 0,1𝑠.” [6].
A rotina desenvolvida para a execução do procedimento proposto está
apresentada no script a seguir, bem como os cálculos utilizados para levantar os parâmetros
para se pudesse elaborar a rotina de alguns dos métodos utilizados:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Transformada Z inversa
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16

% Comando Filter (Filtro)


clear; % Apagar as váriaveis pré-existentes
clc; % Limpeza da tela de comando do MATLAB

o 1º Exemplo:

o Modelagem matemática

3𝑧 3𝑧 𝑧 −2 3𝑧 −1
𝑋(𝑧) = = 2 × −2 =
(𝑧 − 0,5) × (𝑧 − 0,2) z − 0,7z + 0,1 𝑧 1 − 0,7𝑧 −1 + 0,1𝑧 −2
𝑌(𝑧)
𝑋(𝑧) =
∆(𝑧)
𝑌(𝑧) × [1 − 0,7𝑧 −1 + 0,1𝑧 −2 ] = ∆(𝑧) × [3𝑧 −1 ]
𝑌(𝑧) − 0,7𝑧 −1 + 0,1𝑌(𝑧)𝑧 −2 = 3∆(𝑧)𝑧 −1
𝑌(𝑧) = 0,7𝑌(𝑧)𝑧 −1 − 0,1𝑌(𝑧)𝑧 −2 + 3∆(𝑧)𝑧 −1
𝑌(𝑧) = 0,7𝑦(𝑘 − 1) − 0,1𝑦(𝑘 − 2) + 3∆(𝑘 − 1)

o Definições iniciais

N = 100;
d = [0 0 1 zeros(1,N-3)];
n = 0:N-1;

o Método filter(n,d,x)

b = [0 3 0];
a = [1 -0.7 0.1];
y1 = filter(b,a,d); % Construção do sinal de saída através função pré definida,
denominada filter
figure(1) % Cria uma nova figura
subplot(311) % Inicia uma caixa superio para plotagem
stem(n,y1,'bs') % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Filter') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

o Método equação diferença

for k=3:N
y2(k) = 0.7*y1(k-1)-0.1*y1(k-2)+3*d(k-1); % Construção da resposta utilizando a modelagem
do método da Equação Diferença
end
subplot(312) % Inicia uma caixa superio para plotagem
stem (n, y2,'r') % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Equação Diferença') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

o Método integral de inversão


17

y3 = zeros(1,N); % Inicializa a matrix de zeros y3


y3 = 10*(0.5.^n-0.2.^n); % Aplicação da modelagem do método da Intergral
de Inversão
subplot(313) % Inicia uma caixa superio para plotagem
stem(n+2,y3,'kx') % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Integral de Inversão') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Transformada Z inversa
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Comando Filter (Filtro)

clear; % Apagar as váriaveis pré-existentes


clc; % Limpeza da tela de comando do MATLAB

Com a execução do código apresentado, obtêm-se as curvas referentes a


utilização dos três métodos filter, equação diferença e integral de inversão, plotados,
respectivamente, na Figura 7.

Figura 7- Formas de onda geradas a partir dos métodos Filter (azul), Equação Diferença (vermelho) e
Integral de Inversão (preto).

o 2º Exemplo

o Modelagem matemática
18

2 × (𝑧 −1 − 0,5𝑧 −2 ) 2𝑧 −1 − 1𝑧 −2 3𝑧 −1
𝑋(𝑧) = = =
1 − 𝑧 −1 + 0,1𝑧 −2 1 − 𝑧 −1 + 0,1𝑧 −2 1 − 0,7𝑧 −1 + 0,1𝑧 −2
𝑌(𝑧)
𝑋(𝑧) =
∆(𝑧)
𝑌(𝑧) × [2𝑧 −1 − 1𝑧 −2 ] = ∆(𝑧) × [1 − 𝑧 −1 + 0,1𝑧 −2 ]
𝑌(𝑧) − 𝑌(𝑧)𝑧 −1 + 0,1𝑌(𝑧)𝑧 −2 = 2∆(𝑧)𝑧 −1 − 𝑑(𝑧)𝑧 −2
𝑌(𝑧) = 𝑌(𝑧)𝑧 −1 − 0,1𝑌(𝑧)𝑧 −2 + 2∆(𝑧)𝑧 −1 − ∆(𝑧)𝑧 −2
𝑌(𝑧) = 𝑦(𝑘 − 1) − 0,1𝑦(𝑘 − 2) + 2∆(𝑘 − 1) − ∆(𝑘 − 2)

o Definições iniciais

N = 100;
d = [0 0 1 zeros(1,N-3)];
n = 0:N-1;

o Método filter(n,d,x)

b = [2 -1];
a = [1 -1 0.1];
y1 = filter(b,a,d); % Construção do sinal de saída através função pré definida,
denominada filter
figure(2) % Cria uma nova figura
subplot(311) % Inicia uma caixa superio para plotagem
stem(n,y1,'bs'); % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Filter') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

o Método equação diferença

for k=3:N
y2(k) = y1(k-1)-0,1*y1(k-2)+2*d(k-1)-d(k-2); % Construção da resposta utilizando a
modelagem do método da Equação Diferença
end

subplot(312) % Inicia uma caixa superio para plotagem


stem (n, y2,'r'); % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Equação Diferença') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem

o Método integral de inversão

y3 = zeros(1,N); % Inicializa a matrix de zeros y3


y3 = (0.112702.^n+0.8872982.^n); % Aplicação da modelagem do método da
Intergral de Inversão
subplot(313) % Inicia uma caixa superio para plotagem
stem(n+2,y3,'kx'); % Plotagem do sinal discreto
axis([0 100 0 3]) % Definição dos limites dos eixos
title('Método Integral de Inversão') % Insere o título do quadro de plotagem
grid on % Habilita a grade na área de plotagem
19

A execução da rotina descrita para o segundo exemplo do exercício tem como


apresentação de resultados a elaboração das formas de onda dos sinais discretos, utilizando-se
o método Filter, Equação Diferença e Integral de Inversão, respectivamente apresentados na
Figura 8.

Figura 8- Formas de onda geradas para o segundo exemplo, a partir dos métodos Filter (azul), Equação
Diferença (vermelho) e Integral de Inversão (preto).

4 AULA 04 – 21/10/2014

4.1 MÉTODOS DE DISCRETIZAÇÃO

Os métodos de discretização abordados em sala consiste basicamente do


método Forward Difference (ou Euler), Backward Difference e Trapezoidal (ou Tustin). Os
métodos são descritos como:
20

 Forward – sua discretização baseia-se na utilização da integral de um


retângulo no gráfico, seguida da transformada Z da equação. Esse
método tem como desvantagem o fato de apresentar uma baixa
precisão, haja vista que alguns pontos da curva não são discretizados;
 Backward – baseia-se no princípio da soma da função mais a integral da
curva no gráfico e, na sequência, a transformada Z da equação. O
método de Backward também apresenta uma baixa precisão, pois ele
tão possui limitações semelhantes ao método de Forward;
 Trapezoidal – esse método destaca-se em relação aos anteriores, pois
apresenta uma elevada precisão de discretização, pois ele consiste na
integral de pequenos intervalos do sinal que deseja-se analisar, tornando
a discretização mais precisa.

4.1.1 Exercício apresentado na página 11

O enunciado do exercício consiste no seguinte enunciado: “Exercises: Find the


discrete-time approximation for the following cases, using the three analytical methods
discussed previously

1
𝑎) 𝐺(𝑠) = 𝑠+2
𝑠+3
𝑏) 𝐹(𝑠) = 𝑠∗(𝑠2 +10𝑠+100)
(𝑠+2)(𝑠+3)
𝑐) 𝐻(𝑠) = (𝑠+0.1)(𝑠2 +0.1𝑠+1)

the
pole locations of discrete-time transfer functions (DTTF)

where method = ‘zoh’


” [7].

Para elaboração da solução do exercício proposto, fora implementado um


script no programa MATLAB. O código está apresentado a baixo.
21

clear all
clc

s=tf('s');

Gs = 1/(s+2);

T=[0.01 0.1 0.5];


figure(1)
pzmap(Gs);
hold on
figure(2)
step(Gs);
hold on

for i=1:3
z=tf('z',T(i));
Gz=T(i)/(z-1+2*T(i)); % utiliza-se um vetor pois quando há uma variavel dentro de outra,
deve-se utilizar um vetor
figure(1)
pzmap(Gz);
figure(2)
step(Gz);
end

Gz=c2d(Gs,0.5);
figure(1)
pzmap(Gz);
figure(2)
step(Gz);
legend('T=0','T=0.01','T=0.1','T=0.5','T=0.1c2d')
figure(1)
legend('T=0','T=0.01','T=0.1','T=0.5','T=0.1c2d')

Com a execução do script implementado acima obteve-se as formas de onda


apresentadas na Figura 9.
22

Figura 9 - Sinais discretizados plotados em resposta à uma entrada degrau unitário.

Realizou-se também a plotagem da alocação dos polos e zeros, os quais estão


apresentados na Figura 10, a seguir.
23

Figura 10 - Plotagem da alocação dos polos e zeros.

5 AULA 05 – 21/10/2014

5.1 DISCRETE-TIME PID CONTROLLERS

Para a operação de sistemas através de um método de controle têm-se a


utilização dos métodos de controle discreto. O processo de controle apresentado em aula
baseia-se no método PID discreto. O processo de controle do PID discreto possui o mesmo
princípio do analógico, distinguindo-se apenas pelo método de implementação, seu princípio
baseia-se na atuação sobre a variável a ser manipulada, utilizando-se de uma de uma
combinação das três ações de controle, as quais devem estar ajustadas de maneira apropriada.
Os três métodos de controle consistem nas ações de controle:
 Proporcional (P) – a qual atua sobre o valor proporcional do sinal de
erro, baseado na diferença entre a entrada da referência em relação ao
sinal de saída;
24

 Integral (I) – que consiste em realizar a integral do sinal do erro atuante,


que é proveniente da diferença entre os sinais de saída e a referência;
 Derivativo (D) – a ação de controle baseia-se na derivada do sinal de
erro atuante.
O esquema do controle baseia-se no diagrama de blocos apresentado na Figura
11.

Figura 11 - Diagrama de blocos do controlador PID.

5.1.1 Exercício apresentado na página 9

Durante a aula do dia em questão, fora proposto uma questão, com o seguinte
enunciado: “Considering the system described in Exercise 2, create a Matlab script to
implement PID controller including:

-time PID difference equation


 UP , UI , UD , for Sat=40 V

a pseudo-continuous plant using 100 steps for


intersample discretization

0,25∗106 2∗103
𝑃(𝑠) = 𝑠2 +0,5∗103 +0,25∗106 𝑆(𝑠) = 𝑠+2∗106”
25

Para a resolução do exercício, fora elaborado uma rotina no MATLAB, a qual


está apresentada a seguir.

o Exercício

clear all;
clc;
% E = 5
% h(kc) = 0,1 + (2*rand(1)-1)
% | E se cc <= PWM
% uc(kc) = {
% | 0 se cc > PWM
% PWM = u(k) * P/E

% Gs(s) = 20/(s+20)
% s ~ (z-1)/(Tz)
% Gs(z) = 20/((z-1)/(Tz) + 20)
% Gs(z) =

% Forward de Euler
% G(s) = (2*s+1)/(s^2+5*s+6)
% s ~ (z-1)/T
% G(z) = ((2*z + 2)/T)/(((z-1)/T)^2 + (5*z - 5)/T+20)
% G(z) = (2*T*z - 2*T + T^2)/(z^2 + (5*T - 5)*z + )
% y(k)*(z^2+c1*z+c2) = (c3*z + c4)u(k)
% y(kc+2) + c1*y(kc+1) + c2*y(kc) = c3*u(kc+1) + c4*u(kc)

o Definições

Ts = 100e-6;
fs = 1/Ts;
tsim = 0.2;
p = 100;
Kp = 3;
Ki = 0.05;
Kd = 300;
E = 40;
TsP = Ts/p;

nPc = 250000;
dPc = [1 500 250000];
Pc = tf(nPc,dPc);
Pd = c2d(Pc,TsP);
[np,dp] = tfdata(Pd,'v');

nSc = 2000;
dSc = [1 2000];
Sc = tf(nSc,dSc);
Sd = c2d(Sc,TsP);
[ns,ds] = tfdata(Sd, 'v');

npsim = tsim/Ts+1;

o Inicialização

r = zeros(1,npsim);
e = zeros(1,npsim);
u = zeros(1,npsim);
ym = zeros(1,npsim);
Se = zeros(1,npsim);
td = zeros(1,npsim);
uc = zeros(1,npsim*p);
y = zeros(1,npsim*p);
yn = zeros(1,npsim*p);
n = zeros(1,npsim*p);
26

ys = zeros(1,npsim*p);
Pr = 100e-3;
pr = Pr/Ts;
kr = 0;
for k=2:npsim
td(k) =k*Ts;
kr = kr + 1;
r(k)=5;
if kr > pr/2
r(k) = 15;
end
if kr>pr
kr = 0;
end
e(k) = r(k) - ym(k); % calcula o erro a partir do sinal medido
Se(k) = Se(k-1) + e(k);
u(k) = Kp*e(k) + Ki*Se(k) + Kd*(e(k) - e(k-1)); % calcula a ação de controle para o PID
if u(k) > 0.99*E % Satura a ação de controle
u(k) = 0.99*E;
end

if u(k)<0.01*E
u(k) = 0.01*E;
end
pwm = u(k) * p/E; % converte em razão ciclica (0 100)
for cc=1:p % Simulação do sistema continuo
kc = k*p + cc;
if cc<=pwm
uc(kc) = E;
else
uc(kc) = 0;
end
y(kc + 1) = -dp(2)*y(kc) + -dp(3)*y(kc - 1) + np(2)*uc(kc) + np(3)*uc(kc - 1);

n(kc + 1) = 0.1*(2*rand(1) - 1);


yn(kc + 1) = y(kc + 1) + n(kc + 1);
ys(kc + 1) = -ds(2)*ys(kc) + ns(2)*yn(kc + 1);

end
ym(k + 1) = ys(kc + 1);
end

subplot (311)
plot(td(1:npsim),r(1:npsim), 'b')
grid on
subplot (312)
plot(td(1:npsim),e(1:npsim),'g')
grid on
subplot (313)
plot(y(1:npsim*p),'m')
grid on

Através da execução do código desenvolvido no MATLAB obteve-se o


comportamento dos sinais, os quais estão apresentados na Figura 12.
27

Figura 122 - Plotagem dos sinais de controle do PID.


28

6 REFERÊNCIAS

1 CARATI, Emerson G.. Signals and systems: Continuous-time x discrete-time. 2014.

2 CARATI, Emerson G.. Discrete-time signals: Representation and analysis. 2014.

3 MATLAB R2013b. Versão 8.2.0.701. Brasil: MATLAB for Windows User’s Guide, The
Math Works Inc., 2013.

4 DEE – Departamento de Engenharia Elétrica. Convolução Discreta. Pontifícia


Universidade Católica do Rio de Janeiro, 2014?. Disponível em:
<http://www.maxwell.vrac.puc-rio.br/21581/introducao.html>. Acesso em: 13 dez 2014.

5 CARATI, Emerson G.. Discrete-time systems and the z transform. 2014.

6 CARATI, Emerson G.. The inverse Z transform. 2014.

7 CARATI, Emerson G.. Discretizationmethods. 2014.

8 CARATI, Emerson G.. Discrete-time pid controllers. 2014.

Você também pode gostar