You are on page 1of 110

Laboratrio de Sistemas de

Controle I

Joo Carlos Basilio


Gustavo da Silva Viana
Lilian Kawakami Carvalho

Universidade Federal do Rio de Janeiro


Escola Politcnica  Depto. de Engenharia Eltrica
2014

Sumrio
1 Introduo

2 Programando em SCILAB

2.1

2.2

2.3

Modos de programao . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.1

Modo imediato . . . . . . . . . . . . . . . . . . . . . . . . .

2.1.2

Arquivo de comandos (Scinote) . . . . . . . . . . . . . . . .

10

2.1.3

Arquivos de funes

. . . . . . . . . . . . . . . . . . . . . .

11

Funes pr-denidas pelo SCILAB . . . . . . . . . . . . . . . . . .

13

2.2.1

Funes para manipulao de matrizes . . . . . . . . . . . .

15

2.2.2

Funes matemticas elementares . . . . . . . . . . . . . . .

16

2.2.3

Manipulao de vetores . . . . . . . . . . . . . . . . . . . . .

17

2.2.4

Funes polinomiais

. . . . . . . . . . . . . . . . . . . . . .

19

Representao grca . . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.3.1

O comando plot . . . . . . . . . . . . . . . . . . . . . . . . .

24

2.3.2

Representao de diversas curvas num mesmo grco . . . .

26

2.3.3

Representao de diversos grcos numa mesma gura . . .

27

2.3.4

Outros comandos para representao grca . . . . . . . . .

27

Controle de uxo . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.4.1

Declarao if . . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.4.2

Lao while . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

2.4.3

Lao for . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

2.4.4

A funo nd . . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.5

Xcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.6

Comentrios nais . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.4

3 Modelagem e Identicao
3.1

45

Fundamentos tericos . . . . . . . . . . . . . . . . . . . . . . . . . .

46

3.1.1

O mtodo dos mnimos quadrados . . . . . . . . . . . . . . .

46

3.1.2

Ajuste de um conjunto de p-pares cartesianos por um polinmio utilizando o mtodo dos mnimos quadrados . . . . . . .

49

3.1.3

Expanso em srie de Fourier de funes peridicas . . . . .

52

3.1.4

Obteno da resposta em frequncia de um sistema linear


invariante no tempo estvel . . . . . . . . . . . . . . . . . .

3.1.5

Identicao dos parmetros K e da funo de transferncia


de primeira ordem de um SLIT utilizando resposta ao degrau

3.1.6

53

55

Identicao dos parmetros K e da funo de transferncia de primeira ordem de um SLIT utilizando diagrama de
mdulo de Bode . . . . . . . . . . . . . . . . . . . . . . . . .
ii

58

3.2

Motor CC controlado pela armadura . . . . . . . . . . . . . . . . .

61

3.3

Identicao dos parmetros do motor CC . . . . . . . . . . . . . .

64

3.3.1

Identicao da regio linear de operao . . . . . . . . . . .

64

3.3.2

Identicao de Kt . . . . . . . . . . . . . . . . . . . . . . .

64

3.3.3

Identicao de Ka e . . . . . . . . . . . . . . . . . . . . .

66

Experimento para identicao . . . . . . . . . . . . . . . . . . . .

67

3.4

3.4.1

Experimento para determinao da regio linear e do ganho Kt 67

3.4.2

Experimento para determinao do ganho Ka e utilizando


resposta ao degrau . . . . . . . . . . . . . . . . . . . . . . .

68

Experimento para obteno da resposta em freqncia . . .

68

Validao do modelo . . . . . . . . . . . . . . . . . . . . . . . . . .

70

3.4.3
3.5

4 Projeto do controlador de velocidade


4.1

Fundamentos tericos . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1

4.2

4.3

73
74

Rastreamento e rejeio assinttica de sinais de dinmica conhecida . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

4.1.2

Sensibilidade . . . . . . . . . . . . . . . . . . . . . . . . . .

79

4.1.3

Complementos

. . . . . . . . . . . . . . . . . . . . . . . . .

81

Projeto do controlador de velocidade . . . . . . . . . . . . . . . . .

83

4.2.1

Sistema de controle em malha aberta . . . . . . . . . . . . .

84

4.2.2

Sistema de controle com realimentao . . . . . . . . . . . .

85

Comentrios nais . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

iii

5 Implementao do controlador
5.1

5.2

89

Amplicadores Operacionais . . . . . . . . . . . . . . . . . . . . . .

90

5.1.1

Conceitos bsicos . . . . . . . . . . . . . . . . . . . . . . . .

90

5.1.2

Conguraes bsicas . . . . . . . . . . . . . . . . . . . . . .

91

Controlador automtico de velocidade . . . . . . . . . . . . . . . . .

99

5.2.1

Implementao do comparador . . . . . . . . . . . . . . . . . 100

5.2.2

Implementao do controlador . . . . . . . . . . . . . . . . . 101

5.2.3

Amplicador de potncia . . . . . . . . . . . . . . . . . . . . 102

5.3

Experimento nal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

5.4

Comentrios nais . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

iv

Captulo 1
Introduo
Um projeto de um sistema de controle compreende, de uma maneira geral, as seguintes etapas [1,2]:
1. Modelagem/identicao do sistema a ser controlado;
2. Projeto de um controlador que satisfaa as especicaes de desempenho e
estabilidade relativa exigidas;
3. Simulao utilizando computadores digitais;
4. Implementao do controlador no sistema real.
Note que as fases acima podem vir a constituir um ciclo com diversas iteraes,
uma vez que durante a modelagem do sistema a ser controlado (planta), vrias
hipteses simplicadoras como, por exemplo, linearidade so feitas. Assim, ao se
implementar um sistema de controle utilizando-se um controlador projetado a partir
de um certo modelo matemtico, o sistema real pode vir a ter um comportamento
diferente daquele inicialmente previsto na simulao, isto , as especicaes de
desempenho/estabilidade podem no ser satisfeitas quando da implementao do
controlador no sistema real, embora tivessem sido plenamente vericadas nas simulaes. Neste caso, torna-se necessrio projetar um novo controlador ou at
mesmo desenvolver um novo modelo matemtico para a planta. Outro aspecto a
ser observado que, se durante a etapa de projeto/simulao as especicaes de
desempenho/estabilidade no forem atendidas para um determinado compensador
com uma certa estrutura (controlador PI, por exemplo), uma nova estrutura para
o controlador  ou at mesmo uma nova metodologia de projeto  deve ser ado1

Captulo 1.

Introduo

tada. Pode-se, at mesmo, em alguns casos, vericar se h alguma possibilidade de


se relaxar as especicaes.
No Laboratrio de Sistemas de Controle I, procuraremos abranger todas as fases
do projeto de um sistema de controle por realimentao. O objetivo ser controlar a
velocidade angular de um motor de corrente contnua (referido no restante do texto
como motor CC), cujo circuito equivalente est representado na gura 1.1, em que
va (t) representa a tenso nos terminais da armadura do motor e vt (t) a tenso nos
terminais do tacmetro, que proporcional velocidade angular do gerador.

Ra

va (t)

La

vt (t)

Figura 1.1: Circuito eltrico equivalente para o motor CC com sensor de velocidade
(tacmetro).

Ao se formular um problema de controle, o primeiro passo a denio da


grandeza a ser controlada. Em nosso caso, a grandeza escolhida a velocidade
angular do motor. Assim, o problema de controle a ser resolvido neste laboratrio
pode ser enunciado da seguinte forma: projete um controlador de tal forma que o
sistema realimentado tenha as seguintes caractersticas:
(i) seja estvel;
(ii) tenha erro de estado permanente nulo para uma determinada velocidade de
referncia;
(iii) rejeite assintoticamente (quando o tempo tende para innito) sinais externos de perturbao que, no sistema em estudo, so ocasionados pelo aumento do
torque resistivo no eixo do motor.
No projeto de sistemas de controle, o engenheiro geralmente assistido por

3
programas computacionais tais como o SCILAB [3]. Em nosso projeto utilizaremos o SCILAB como ferramenta auxiliar de projeto e, em particular, uma de suas
ferramentas, o XCOS, que ser importante na simulao do sistema projetado, na
gerao de sinais a serem aplicados no motor CC e na aquisio de sinais necessrios
provenientes do motor e do sistema de controle projetado. Uma breve introduo
programao em ambiente SCILAB ser apresentada no captulo 2. No captulo 3
ser desenvolvido um modelo matemtico para a planta e em seguida os parmetros
da funo de transferncia do sistema sero identicados utilizando-se mtodos de
resposta ao degrau e de resposta em frequncia. No captulo 4 ser feito o projeto de um sistema de controle de velocidade para o motor CC cujos parmetros
foram determinados de acordo com o captulo anterior. Sero tambm realizadas
simulaes com o objetivo no s de ilustrar os benefcios da realimentao como
tambm vericar o desempenho esperado do sistema com o controlador projetado.
Finalmente, no captulo 5 ser feita a implementao do controlador de velocidade
desenvolvido no captulo 4.
importante ressaltar que a abordagem aqui apresentada, embora aplicada a
um sistema especco, pode ser utilizada no projeto de sistemas de controle realimentado para outros sistemas fsicos. Assim sendo, caso o aluno venha a se deparar
com um processo diferente daquele que estamos considerando neste laboratrio,
poder seguir os mesmos passos que descritos neste laboratrio para a soluo do
problema em questo.

Captulo 1.

Introduo

Captulo 2
Programando em SCILAB
O SCILAB um software cientco de acesso livre para computao numrica semelhante ao Matlab que fornece um poderoso ambiente computacional aberto para
aplicaes cientcas. Alm da possibilidade de ser livremente utilizado, uma das
principais razes do sucesso da programao em ambiente SCILAB nos meios cientcos certamente a possibilidade que o usurio tem de manipular matrizes,
vetores, polinmios e diversas funes matemticas de forma idntica a que est
acostumado a fazer no dia-a-dia. Para tanto, o SCILAB no s dispe de funes
pr-denidas como tambm permite que o usurio desenvolva suas prprias funes.
Isto fez com que essa linguagem crescesse, uma vez que mais e mais funes foram
desenvolvidas, aumentando cada vez mais o seu potencial e a sua aplicabilidade a
diversos campos da cincia.
No projeto de sistemas de controle, o SCILAB tambm uma poderosa ferramenta. Alm de realizar clculos que, em geral, so longos, tediosos e com grande
probabilidade de ocorrncia de erro quando realizados pelo ser humano, o SCILAB
tem uma excelente interface grca que auxilia o engenheiro de controle a vericar se
o sistema compensado com o controlador projetado satisfaz as especicaes de projeto. Outro aliado importante do engenheiro de controle o programa XCOS, que
faz simulaes de sistemas lineares e no-lineares, discretos e contnuos no tempo.
Quando se dispe de uma placa de converso analgica/digital e digital/analgica,
pode-se estabelecer uma comunicao entre os diagramas de blocos desenvolvidos
no Xcos e a planta real, permitindo, assim, que sinais gerados no Xcos sejam aplica5

Captulo 2.

Programando em SCILAB

dos planta e tambm a aquisio de sinais correspondentes s variveis observadas


(medidas) na planta.
Neste captulo apresentaremos alguns tpicos sobre programao em ambiente
SCILAB visando o seu uso no desenvolvimento de programas para identicao de
sistemas e no projeto de sistemas de controle. Evidentemente h muito mais do
que ser apresentado aqui. Recomenda-se ao aluno mais interessado consultar os
manuais do SCILAB e do XCOS ou consultar a referncia [3].

2.1 Modos de programao


Ao iniciar o SCILAB, estando o usurio em ambiente WINDOWS, ser aberta uma
janela como aquela mostrada na gura 2.1. Na parte esquerda desta janela, h
opo File Browser (Navegador de arquivos) que est indicando o diretrio de
trabalho, isto , onde os arquivos Scilab desenvolvidos e as variveis denidas pelo
usurio sero armazenados. Caso o usurio deseje modicar o diretrio de trabalho
basta clicar no boto pasta e escolher o novo diretrio. Os arquivos existentes no
diretrio de trabalho e os seus subdiretrios esto listados na subjanela da esquerda.
Na subjanela central, denominada Command Window (Scilab console), o usurio
pode denir as variveis e digitar os comandos referentes s operaes matemticas que devem ser realizadas com o auxlio do Scilab. As variveis denidas pelo
usurio na janela Command Window so listadas na subjanela superior direita denominada Variable Browser (Navegador de Variveis). Finalmente, abaixo desta
subjanela encontra-se a subjanela Command History (Histrico de Comandos),
onde so listadas todas as linhas de comando j digitadas no Workspace.
A programao em ambiente SCILAB pode ser feita nas seguintes formas:
1. Modo imediato;
2. Utilizando um arquivo de comandos (SciNotes);
3. Utilizando arquivos de funes.
No modo imediato, uma linha de comando executada to logo a tecla <enter>
pressionada. Com um arquivo de comandos (SciNotes) pode-se executar uma
srie de instrues como se estivesse no modo imediato. A vantagem do arquivo de
comandos sobre o modo imediato que todos os comandos cam guardados para uso

2.1

Modos de programao

Figura 2.1: Janela inicial do Scilab no Windows.

futuro. A nica desvantagem desse tipo de arquivo que, rigorosamente falando, o


usurio continua no modo imediato e, portanto, todas as variveis que aparecerem
em um arquivo de comando faro parte do espao de trabalho do usurio. Isto
aumenta a rea de memria em uso pelo SCILAB e pode ter o inconveniente de
alterar o valor de alguma varivel caso um novo valor seja atribudo a ela quando da
execuo do arquivo de comando. Este problema no ocorre quando se utiliza um
arquivo de funes. Neste caso o SCILAB dene uma nova rea de memria para
armazenamento das variveis a serem denidas no arquivo de funes, permitindo
assim que variveis de mesmo nome que aquelas em uso no espao de trabalho sejam
denidas em um arquivo de funes sem, contudo, alterar o valor daquelas denidas
pelo usurio. Essa rea de memria apagada assim que a funo que est sendo
executada nalizada.

Programando em SCILAB

Captulo 2.

2.1.1 Modo imediato


Uso de vrgula(,) e ponto-e-vrgula (;)
Comandos em uma mesma linha de comando podem ser separados por vrgula (,)
ou ponto-e-vrgula (;) produzindo o mesmo efeito quanto execuo do comando,
exceto que no primeiro caso o resultado da operao mostrado na tela.

Exemplo 2.1
de

 a=2; b=5; <enter>. Neste caso, o SCILAB armazena 2 e 5 nas posies


memria a e b, respectivamente, porm no exibe os valores armazenados das

variveis.

 a=2, b=5 <enter>.

Esta linha de comandos produz o mesmo efeito que a

linha de comando anterior, exceto que a mensagem

a=2

 c = a+b; <enter>. Aqui o SCILAB armazena


mria c, mas no exibe na tela o seu contedo.

b=5

exibida na tela.

o valor 7 na posio de me-

Caso se deseje, posteriormente, saber o valor de uma determinada varivel, basta


digitar o nome dessa varivel seguida de

 c <enter>

<enter>.

Por exemplo:

faz com que o SCILAB exiba na tela a mensagem

c = 7.

Carregando e salvando arquivos de variveis


O SCILAB armazena variveis em um arquivo vrias maneiras: .sci, .sce, .dat,
.sav. Para salvar as variveis, basta selecionar na barra de ferramentas a opo
File, escolher Save Environment na aba que se abrir e denir o diretrio e o
nome do arquivo de acordo com as regras usuais do Windows Explorer para criao
de arquivos. Nesse caso, apenas as variveis do navegador so salvas mas no se
pode executar o arquivo.
Para carregar as variveis armazenadas num arquivo para o Workspace, basta
clicar no arquivo desejado com o boto direito que se encontra listado na subjanela
e clicar em load in Scilab. Outra maneira de salvar arquivos usando o comando
save. O arquivo pode ser fornecido tanto pelo seu endereo quanto por seu descritor
dado previamente por mopen:

save(filename) salva todas as variveis correntes denidas por lename.

2.1

Modos de programao

save(fd) salva todas as variveis correntes denidas pelo descritor fd.


save(filename,x,y) ou save(fd,x,y) salva apenas as variveis chamadas
x e y.
Variveis salvas podem ser recarregadas atravs do comando load. Ainda utilizando
o comando save, pode-se determinar o tipo de arquivo utilizando como entrada 'lename.sci' ou 'lename.sce'. Embora ambos os tipos de arquivo contenham cdigo,
eles so muito diferentes. Arquivos `sce' so executados enquanto arquivos `sci' so
carregados para serem usados quando precisamos deles. Esta diferena car mais
clara quando falarmos sobre as funes.

Exemplo 2.2
Realize as operaes a seguir no SCILAB, observando ao nal de cada uma delas
os valores das variveis no Workspace.
1. Dena trs variveis

a, b

da seguinte forma:

a=[1 2 3], b=[3 5 7]0

c=a*b
2. Salve as variveis no arquivo
3. Salve somente as variveis
4. Apague a varivel

aula1v

a, b

no arquivo

aula1ab

do seu Workspace

5. Apague, agora, as variveis restantes do seu Workspace com um nico comando


6. Carregue o arquivo
7. Mude a varivel

aula1ab

para

b=2*b

8. Carregue somente a varivel

do arquivo

aula1v

do arquivo

aula1v,

9. Repita as operaes 5, 6 e 7
10. Carregue somente a varivel

renomeando-a para

10

Captulo 2.

Programando em SCILAB

2.1.2 Arquivo de comandos (Scinote)


Os comandos editados em um arquivo de comandos podem ser executados diversas
vezes. Para isso, usar o comando exec('filename') ou pressionar F5 no ambiente
do Scinotes, que o SCILAB executar todos as linhas de comandos do arquivo como
se estivesse no modo imediato.
Para a criao de um arquivo de comandos, o primeiro passo criar um novo
arquivo utilizando o cone New File. Em seguida, edite o arquivo <arquivo>.sce
ou .sci com comandos a serem executados como se estivesse no modo imediato.
Aps alguma modicao no arquivo, deve-se salvar novamente esse arquivo, para
que a alterao possa ser considerada pelo SCILAB na prxima vez que esse arquivo
for executado. Para executar os comandos do arquivo <arquivo>.sci ou .sce
basta digitar

 exec('filename') <enter> ou clicar no cone Run (F5) .

Exemplo 2.3
Suponha que no arquivo

seq1.sci,

sejam editados os seguintes comandos:

c=[1:2:10];d=[2:2:10];
e=c0 ;f=c0 *d;g=c*d0 ;
h=c.*d;l=c./d;
Ao se digitar, na janela de comandos do SCILAB,

 exec('seq1') <enter>
o programa SCILAB ento procura no diretrio de trabalho por um arquivo de comandos de nome

seq1.sci.

Encontrando o arquivo, executa os comandos editados

nele. Caso o SCILAB no encontre um arquivo

seq1.sci,

exibir na tela a men-

sagem

!error 241 O arquivo "seq1.sci" no existe..


importante ressaltar que se o arquivo

seq1.sci

for gravado em dois diretrios,

o SCILAB executar aquele que estiver armazenado no diretrio pertencente ao


caminho de busca que aparece em primeiro lugar no Set Path.

2.1

Modos de programao

11

2.1.3 Arquivos de funes


Funes so procedimentos sintetizados em uma s operao de comando. Considere
a operao de obter a quantidade de nmeros pares at um nmero N. Podemos sintetizar a operao em uma funo, por exemplo a funo pares. Os comandos obrigatrios para a denio de uma funo so function outputs=nome_da_funcao
(inputs) e endfunction.

Exemplo 2.4

function n=pares(N)
n=0;
for i=1:N
if modulo(i,2)==0
n=n+1;
end
end
endfunction
A partir da execuo deste script, a funo pares pode ser executada normal-

mente, como se fosse um comando interno do Scilab. Caso se tenha uma relao
direta entre o output e os inputs, mais conveniente fazer uso da funo de.

Considere o exemplo a seguir:

Exemplo 2.5
def f (0 r = quadr(a, b, c)0 ,0 r = [(1/(2 a) (b + sqrt(b2 4 a c))); (1/(2 a)
(b sqrt(b2 4 a c)))]0 );
>quadr(1,-5,6)
ans =
3.
2.
A denio anterior retorna as razes de uma equao quadrtica em funo dos
coecientes.
O comando de requer duas strings: o escopo da funo (r=quadr(a,b,c)) e a
relao entre o output e os inputs.

Este tipo de funo que retorna apenas um

argumento tambm chamado de procedimento.

12

Captulo 2.

Programando em SCILAB

A seguir, temos um exemplo de funo recorrente em clculo vetorial:

Exemplo 2.6

// funo que calcula as diferenas entre elementos sucessivos de


um vetor x
function x=diff(X)
n=length(X);
for i=1:(n-1)
x(i)=X(i+1)-X(i);
end
endfunction

Exemplo 2.7

Crie um arquivo de funes para calcular a norma euclideana (norma-

2) de um vetor

x = [ x1 x2 . . . xn ]t .

Inicialmente, lembre-se de que a norma euclideana de um vetor denida como:

q
k x k2 = x21 + x22 + + x2n = (xt x)1/2
A funo que calcula

k x k2

(2.1)

deve, portanto, executar a equao (2.1), o que

requer que a varivel de entrada seja um vetor (x) de dimenso


escalar (y) representativo da norma-2 de

x.

Se

norma2

e a sada um

for o nome do arquivo onde

esta funo ser editada, ento esse arquivo poderia ter o contedo mostrado na
gura 2.2.

// y=norma2(x) : calcula a norma euclideana de um vetor


// sendo: x : vetor de entrada (vetor coluna)
//
y : norma euclideana de x
//
function y=norma2(x);
y=sqrt(x0 *x);
endfunction
Figura 2.2: Listagem da funo norma2.
O comando

 x=[1 2 2]0 ;y=norma2(x);<enter>

2.2

Funes pr-denidas pelo SCILAB

13

faz com que SCILAB execute a funo norma2 para o vetor x, armazenando na
varivel y o valor 3. Verique!
Para que o resultado da funo acima seja realmente a norma euclideana do
vetor x, x deve ser um vetor coluna. Caso contrrio x0 *x ser uma matriz e a sada
y ser uma matriz m m cujos elementos so as razes quadradas de xi xj , onde xi e
xj denotam as componentes i e j do vetor x. Uma outra particularidade da funo
acima o uso do comando sqrt, que uma funo pr-denida pelo SCILAB.
Em um arquivo de funo podem ser usadas outras funes quer sejam denadas
anteriormente pelo usurio ou pr-denidas pelo SCILAB. Essas ltimas permitem
a manipulao de matrizes, vetores, polinmios e outras funes matemticas de
uma forma robusta, isto por algoritmos que no so susceptveis a problemas de
mau condicionamentos.
Na seo seguinte sero apresentadas algumas funes pr-denidas pelo SCILAB. Essas funes foram escolhidas tendo em vista sua importncia no desenvolvimento de programas para o projeto de sistemas de controle.

2.2 Funes pr-denidas pelo SCILAB


A caracterstica principal do SCILAB tratar indistintamente escalares, vetores e
matrizes como sendo matrizes. Por exemplo, a varivel a=3 para o SCILAB uma
matriz de dimenso 1 1; um vetor de dimenso n , na verdade, uma matriz de
dimenses 1 n ou n 1, dependendo se o vetor considerado linha ou coluna.
Assim sendo, tanto o argumento (entrada) de uma funo como o valor que ela
retorna (sada) so matrizes, embora para o usurio tratam-se simplesmente de
vetores ou at mesmo escalares.
Para denir uma matriz, deve-se fornecer cada um dos seus elementos. Por
exemplo, a matriz


1 2, 2 3
A=
4, 6
5 6
pode ser armazenada na varivel a das seguintes formas:
(i) Fornecendo-se cada um dos elementos da matriz:

 a(1,1)=1;a(1,2)=2.2;a(1,3)=3; <enter>
 a(2,1)=4.6;a(2,2)=5;a(2,3)=6; <enter>

14

Captulo 2.

Programando em SCILAB

Entrando com os elementos da matriz entre colchetes ([ ]), sendo os elementos de uma mesmas linha separados por vrgula (,) ou espaos em branco e as
linhas da matriz por ponto-e-vrgula (;):
(ii)

 a=[1,2.2,3;4.6,5,6] <enter>
 a=[1 2.2 3;4.6 5 6] <enter>
Deve-se tomar o cuidado para, no caso de nmeros com parte decimal, separar a
parte inteira da parte decimal usando ponto (.);
O acesso a qualquer elemento de uma matriz que tenha sido anteriormente denida, e que ainda esteja armazenada no espao de trabalho, feito de forma
semelhante, isto , fornecendo-se a posio do elemento desejado. Suponha, ento,
que os elementos de uma matriz M : p q tenham sido armazenados na varivel m.
(i) Para se ter acesso ao elemento (i, j) de m faz-se m(i,j). Por exemplo, para
modicar o elemtno (1, 3) da varivel a, acima, fazendo-o igual a 7, basta digitar:
 a(1,3)=7 <enter>
Para se armazenar o elemento (1, 2) na varivel x, faz-se:
 x = a(1,2) <enter>
(ii) Fazendo-se m(vetorlinha,vetorcoluna) forma-se uma submatriz de uma
dada matriz m, formada pelos elementos comuns s linhas cujos ndices so dados no
vetor vetorlinha e s colunas indicadas pelas componentes do vetor vetorcoluna.
Por exemplo, para se tomar os elementos da interseo das linhas 1 e 2 e das colunas
2 e 3 de a e armazen-las em x, deve-se fazer:
 x = a([1 2],[2 3]) <enter>
(iii) Para ter acesso coluna j da matriz m faz-se m(:,j). Por exemplo, para
atribuir a terceira coluna da matriz a, acima, varivel x, faz-se:
 x = a(:,j) <enter>
(iv) Analogamente, a coluna i de uma matriz m pode ser acessada fazendo-se
m(i,:). Por exemplo, suponha que se queira armazenar a linha 2 da matriz a,
acima, em x. Para tanto, deve-se fazer
 x = a(i,:) <enter>
Algumas matrizes no requerem que o usurio entre com todos os seus elementos.
So elas: as matrizes identidade e diagonal, a matriz cujos elementos so todos iguais
a 1 ou zero. A atribuio dessas matrizes a variveis feita da seguinte forma:

2.2

Funes pr-denidas pelo SCILAB

15

id = eye(m,m) : atribui-se varivel i uma matriz identidade de ordem m;


(ii) d = diag([d1 d2 ... dm]) : forma uma matriz diagonal d, m m, cujos
elementos da diagonal principal so d1,d2,...,dm;
(iii) um = ones(m,n) : cria uma varivel um, m n, em que todos os elementos
so iguais unidade;
(iv) z = zeros(m,n) : forma uma matriz z, m n, cujos elementos so todos
iguais a zero.
O SCILAB possui um conjunto de funes pr-denidas que permitem manipular
matrizes e vetores de semelhante a que o engenheiro est acostumado a fazer no seu
dia-a-dia. Estas funes so apresentadas a seguir.
(i)

2.2.1 Funes para manipulao de matrizes


Sejam

A=

a11
a21
..
.

a12
a22
..
.

. . . a1n
. . . a2n
..
.

am1 am2 . . . amn

e B=

b11 b12 . . . b1q


b21 b22 . . . b2q

..
..
..
.
.
.
bp1 bp2 . . . bpq

matrizes de dimenses m n e p q , respectivamente, com elementos pertencentes


ao conjunto dos nmeros complexos. Suponha que as matrizes A e B tenham sido
armazenadas nas variveis a e b, respectivamente. Ento:

[m,n]=size(a) : armazena, respectivamente, nas variveis m e n, o nmero


de linhas e de colunas da matriz a ;
m=size(a,1) : armazena na varivel m o nmero de linhas de a;
n=size(a,2) : armazena em n o nmero de colunas de a.
(ii) c=a*b : calcula o produto das matrizes a e b (se n = p) e armazena na
varivel c. Quando n 6= p, SCILAB retorna uma mensagem de erro.
(iii) c=a.*b e c=a./b : forma uma matriz C tal que cij = aij bij e cij = aij /bij ,
respectivamente, e armazena o resultado na varivel c. Este comando requer m = p
e n = q.
(iv) c=inv(a) : calcula a inversa da matriz armazenada na varivel a (se m = n)
e armazena na varivel c.
(i)

16

Captulo 2.

Programando em SCILAB

c=det(a) : calcula o determinante da matriz armazenada em a, armazenando o resultado na varivel c.


(vi) c=a+b e c=a-b : computa, respectivamente, a soma e a subtrao das
matrizes a e b e as armazena em c.
(vii) [w,l]=spec(a) : retorna a matriz w, cuja i-sima coluna formada pelo
o i-simo autovetor de a associado ao i-simo autovalor e uma matriz diagonal l,
cujo elemento (i, i) corresponde ao i-simo autovalor de a.
l=spec(a) : retorna um vetor de dimenso n cujas componentes so os
autovalores de a.
(v)

2.2.2 Funes matemticas elementares


Seja Z : m n, uma matriz cujo elemento i, j zij =| zij | ejij = xij + jyij e
suponha que a matriz Z tenha sido armazenada na varivel z. Tem-se que:

w = abs(z) retorna uma matrix w cujo elemento (i, j) wij =| zij |;


(ii) w = atan(imag(z),real(z)) retorna uma matriz w cujo elemento (i, j)
wij = ij , em radianos;
(iii) w = real(z) uma matriz onde wij = xij ;
(iv) w = imag(z) tal que wij = yij ;
(v) w = conj(z) retorna uma matriz w tal que wij = xij jyij ;
0

t (associada da matriz Z), isto


(vi) w = z calcula uma matriz W = Z = Z
wij = xji jyji e armazena na varivel w;
(vii) w = exp(z) retorna uma matriz cujo elemento (i, j) wij = exp(zij );
(viii) w = log(z) retorna uma matriz tal que wij = ln(xij + jyij );
(ix) w = log10(z) produz uma matriz em que wij = log(xij + jyij );
(x) w=sin(z), w=cos(z), w=tan(z), w=acos(z), w=asin(z) e w=atan(z) calculam matrizes W tais que wij = Sen (zij ), wij = Cos (zij ), wij = tg (zij ), wij =
arc Cos (zij ), wij = arc Sen (zij ) e wij = arc tg (zij ), respectivamente, armazenando o resultado na varivel w. Note que: (a) as funes sin, cos e tan requerem
que os argumentos sejam expressos em radianos; (b) os ngulos retornados pelas
funes acos, asin e atan so expressos em radianos.
importante salientar os seguintes pontos relativos ao uso dos comandos acima:
(i)

2.2

Funes pr-denidas pelo SCILAB

17

quando se desejar obter a transposta de uma matriz e no o conjugado


complexo da sua transposta (associada), deve-se proceder de uma das seguintes
formas: w = z.0 ou ento w = conj(z0 );
(2) deve-se tomar cuidado ao usar os comandos log e log10  o primeiro
calcula o logaritmo neperiano, enquanto o ltimo retorna o logaritmo decimal. Os
exerccios propostos 2.1 e 2.2, ao nal deste captulo, serviro para ilustrar o uso
dos comandos apresentados acima.
(1)

2.2.3 Manipulao de vetores


Para o SCILAB, vetores so, na verdade, matrizes nas quais uma das dimenses
(nmero de linhas ou colunas) igual a 1. Portanto, podem ser manipulados da


mesma forma que matrizes. Por exemplo, o vetor v = 1 2, 5 7 pode ser
denido das seguintes formas:

 v(1,1)=1;v(1,2)=2.5;v(1,3)=7; <enter>
(1.ii)  v=[1 2.5 7]; <enter>
(1.iii)  v=[1,2.5,7]; <enter>
Caso se tratasse de um vetor coluna, (w = v t ), poder-se-ia denir uma varivel
w como se segue:
(2.i)  w(1,1)=1;w(2,1)=2.5;w(3,1)=7; <enter>
0
(2.ii)  w=[1 2.5 7] ; <enter>
(2.iii)  w=[1;2.5;7]; <enter>
Apesar de considerar todas as variveis como sendo matrizes, o SCILAB capaz
de reconhecer quando se trata de um vetor. Para isso, basta que uma das dimenses
seja igual a 1 ou que, ao se denir o vetor, apenas uma das dimenses seja dada.
Neste ltimo caso, o SCILAB armazenar o vetor como sendo um vetor linha. Desta
forma, para se denir os vetores v e w, acima, poder-se-ia substituir as intrues
(1.i) e (2.i) por:
 v(1)=1;v(2)=2.5;v(3)=7;w=v0 ; <enter>.
Outro aspecto importante na denio de um vetor quando as componentes
formam uma sequncia. Por exemplo, para armazenar a sequncia
(1.i)

fn =

a1 a1 + r a1 + 2r . . . an

18

Captulo 2.

Programando em SCILAB

em que an = a1 + nr, na varivel fn faz-se


 fn=[a1:r:an] <enter>;
Deve-se salientar que, caso an no fosse um elemento da sequncia, o ltimo elemento do vetor sf seria o maior valor tal que a1 + kr < an , para um dado k .
importante lembrar que pode tambm ser feito o armazenamento de uma sequncia
decrescente. Para tanto, a1 deve ser maior que an e r deve ser negativo.
SCILAB tambm possui funes especiais para a manipulao de vetores. Sejam

x1 x2 . . . xn

y1
y2

y = ..
.
ym

x =

vetores de dimenses n e m, respectivamente, e suponha que x e y estejam armazenados nas variveis x e y. Os seguintes comandos so especialmente usados na
manipulao de vetores:
(i) length(x) e length(y) retornam as dimenses dos vetores x e y (n e m,
respectivamente);
(ii) norm(x,p) retorna a norma-p do vetor x (kxkp ). Deve ser ressaltado que
a funo norm permite que o vetor, cuja norma-p se deseja calcular, seja linha ou
coluna. Lembre-se de que, a norma-p de um vetor x denida como
n
X
kxkp = (
| xi |p )1/p
i=1

e, portanto:

kxk1 =

n
X

| xi |

i=1
n
X

kxk2 = (

| xi |2 )1/2

i=1

[mx,i]=max(x). Se x um vetor cujas componentes so nmeros reais,


ento mx o maior valor de x e i corresponde posio onde o mximo ocorre.
(iii)

2.2

Funes pr-denidas pelo SCILAB

19

Caso x tenha duas componentes onde os valores mximos ocorrem, i corresponder


componente onde o valor mximo ocorre primeiro. Quando x um vetor complexo,
mx correponder componente de maior valor absoluto de x e i correponder ao
ndice dessa componente.
(iv) hflip=x(:,$:-1:1) e vflip=y($:-1:1,:) retornam os seguintes vetores:

xn xn1 . . . x2 x1

ym
ym1

..
v ip = .

y2
y1

hip =

Observao 2.1

s vezes necessrio acessar a ltima componente de um vetor

x. Isso pode ser feito de duas formas: a primeira, que utiliza a funo length, isto ,
x(length(x)), e a segunda que utiliza a palavra reservada end, isto , x(end). Por
exemplo, suponha que tenha sido denido o vetor x=[1 3 5 9 -2]. O comando
 y=[3 x(end)] <enter>


3 2 . Por outro lado, o comando
faz com que o SCILAB crie o vetor y =
 z=[3 x(2:end)] <enter>


3 3 5 9 2
cria o vetor y =


2.2.4 Funes polinomiais


O SCILAB tem uma biblioteca denominada Polynomial calculations, recheada de
ferramentas para lidar com polinmios. Vamos tirar benefcio de alguma delas,
nesta seo. Para trabalhar com polinmios no SCILAB, devemos usar o comando
poly. Um polinmio de grau n uma funo da seguinte forma:

p(x) = p0 + p1 x + . . . + pn1 xn1 + pn xn


Note que no Scilab a ordem dos coecientes do polinmio do menor expoente pro maior expoente, inverso a outros programas matemticos conhecidos como
MATLAB or OCTAVE.

20

Captulo 2.

Programando em SCILAB

O SCILAB permite que polinmios sejam multiplicados ou divididos, que suas


razes sejam calculadas, ou o oposto, que se obtenha os coecientes de um polinmio
a partir de suas razes, ou ainda, calcular o valor de p(x) para diversos valores de
x. Os principais comandos para lidar com polinmios so:
(i) %s: varivel do Scilab usada para denir polinmios.
(ii) poly: para criar um polinmio de suas razes e coecientes.
(iii) coeff: para extrair os coecientes de um polinmio.
(iv) horner: para calcular o valor de um polinmio.
(v) derivat: para computar a derivada de um polinmio.
(vi) roots: par computar os zeros do polinmio.
(vii) +, -, *: operaes polinomiais padres.
(viii) pdiv: diviso polinomial.
(ix) inv ou invr: inverso de uma matriz (racional).
(x) /: gera um polinmio racional.
A gura 2.3 ilustra algumas das funes utilizadas para a manipulao de polinmios denidas acima.

Exemplo 2.8

Escreva uma funo SCILAB para calcular o instante de pico, o

percentual de ultrapassagem, o valor mximo e o valor de estado permanente da


resposta ao degrau do sistema cuja funo de transferncia

G(s) =

s2

0, 6618
.
+ 1, 0069s + 0, 6618

Considere que o intervalo de simulao seja de

20s.

A funo indices listada na gura 2.4 permite encontrar os ndices de desempenho


desejados.
Para executar a funo desenvolvida no exemplo 2.8, deve-se fornecer os vetores
t e y. Supondo que os instantes de simulao estejam espaados de 0.1s, tem-se
que t ser denido da forma seguinte:

 t=[0:0.1:20]; <enter>
O vetor y obtido usando-se a funo csim que pertence caixa de ferramentas de
controle (control toolbox). A funo step calcula a resposta ao degrau de um sistema, sendo conhecida a funo de transferncia do sistema (basta usar o comando

2.2

Funes pr-denidas pelo SCILAB

21

// Cria um polinmio pelos seus coeficientes


p = poly([-2 1 1],'s','c')
// Cria polinmio estilo MATLAB
pcoeff = [1 1 -2];
p = poly(pcoeff($:-1:1),'s','c');
pcoeffs = coeff(p)
// Cria um polinmio usando varivel %s
s = %s;
p = - 2 + s + s 2
// Um outro modo de criar polinmio
p = (s-1)*(s+2)
// Clculo de polinmio
res = horner(p,1.0)
// Algumas operaes: soma, produto e zeros
q = p+2
r = p*q
rzer = roots(r)
// Diviso polinomial
[Q,R] = pdiv(p,q)
// Polinmio racional
prat = p/q
typeof(prat)
prat.num
prat.den
Figura 2.3: Funes para manipulao de polinmios.

syslin para um polinmio racional. O segundo argumento da funo csim o vetor contendo os instantes de simulao. As linhas de comando seguintes permitem
obter y e tambm o tempo de pico (tp), o percentual de ultrapassagem (po), o valor
mximo de y (ymax) e o valor de estado permanente de y(t) (yinf):
 s=%s;
 G=syslin('c',(0.6618)/(s2+1.0069s+0.6618));<enter>
 y = csim( 'step', t, G ) ;<enter>
 [tp,po,ymax,yinf]=indices(t,y); <enter>

22

Programando em SCILAB

Captulo 2.

importante observar que quando o intervalo de simulao no for sucientemente grande, o valor de estado permanente yinf poder no ser o correto, isto
, igual ao valor de limt y(t). Portanto, o uso da funo indices somente faz
sentido quando se dispe da representao grca de t y ou ento vericando-se
o vetor y est, de fato, convergindo para o valor nal esperado.

// INDICES: calcula os ndices de desempenho de um sistema


// sendo y
: vetor contendo as respostas dos
//
instantes de simulacao armazenados em t
//
t
: vetor contendo os instantes de simulacao
//
tp
: tempo de pico
//
po
: percentual de ultapassagem
//
ymax : valor maximo da resposta
//
yinf : valor de estado permanente da resposta
//
function [tp,po,ymax,yinf] = indices(t,y);
// calculando o ponto de maximo e o instante onde maximo ocorre:
[ymax,i]=max(y);tp=t(i);
// calculando o valor de estado permanente:
yinf=y(length(y));
// calculando o percentual de ultrapassagem:
po=(ymax-yinf)/yinf*100;
endfunction;
Figura 2.4: Listagem da funo indices.

Exemplo 2.9

A funo SCILAB cujo cdigo est listado na gura 2.5 pode ser

usada para calcular a resposta em frequncia de uma funo de transferncia

G(s) =

0 1 . . . q , no qual
para as quais desejamos calcular G(jw). Os
parmetros de entrada so a funo de transferncia G(s), e o vetor w, cujas componentes so as frequncias i , i = 0, 1, . . . , q .

n(s)/d(s) para um dado um vetor de


i , i = 0, 1, . . . , q so as frequncias

frequncias

2.2

Funes pr-denidas pelo SCILAB

23

// RESPFREQ : calcula a resposta em frequencia de G(s)=n(s)/d(s)


// gjw = respfreq(G,w)
// sendo : G : funo de transferncia do sistema
//
w : vetor cujas componentes sao as frequencias para
//
as quais se deseja calcular g(jw)=n(jw)/d(jw)
%
function gjw = respfreq(G,w);
jw = %i*w; gjw =abs(horner(G,jw)); endfunction
Figura 2.5: Funo respfreq para o clculo da resposta em frequncia de uma
funo de transferncia de G(s).
Suponha, agora, que desejamos calcular a resposta em frequncia do sistema
cuja funo de transferncia seja

T (s) =

s2

20
.
+ 3s + 5

Para tanto, o primeiro passo denir um vetor w contendo as frequncias nas quais
se deseja calcular T (j). Supondo que a menor frequncia seja 0 = 0 e a maior
seja igual a f = 100. Utilizando as seguintes linhas de comando:

 G=syslin('c',(20)/(s2+3*s+5));w=[0:1:100];
 tjw=respfreq(G,w);plot(w,tjw) <enter>
obtm-se a resposta em frequncia de T (s) para os pontos considerados, cuja representao grca dada na gura 6.
Nas baixas frequncias a representao grca grosseira. Isto se deve ao fato
de que, como T (j) varia muito rapidamente nessas frequncias, os pontos imagens
estaro bastante separados uns dos outros, fazendo com que as retas que os ligam
sejam mais ressaltadas. Este problema no ocorrer se o vetor w for denido usando
o comando logspace, cuja forma geral logspace(exp1,exp2,n). Este comando,
cria um vetor de n elementos espaados logaritmicamente, cujo primeiro elemento
10exp1 e o ltimo 10exp2 . Quando n for omitido, o comando acima criar um vetor
composto de 50 elementos. Assim sendo, se substituirmos a linha de comandos
acima por
 n=20;d=[1 3 5];w=logspace(-2,2,100);
 tjw=respfreq(n,d,w);plot(tjw) <enter>

24

Captulo 2.

Programando em SCILAB

Figura 2.6: Representao grca de resposta em frequncia de T (s) = 20/(s2 +


3s + 5) para w=[0:1:100].
Nas linhas de comando utilizadas para ilustrar o clculo da resposta em frequncia de T (s) foi introduzido o comando plot. Vamos deixar o detalhamento desse
comando para a seo seguinte, onde iremos apresentar a sintaxe do comando plot
na sua forma mais simples e diversas outras maneiras de utilizarmos esse comando.

2.3 Representao grca


A representao grca uma importante caracterstica do SCILAB. Utilizando
o SCILAB, podemos representar grcos na forma de curvas, diagramas de barras, histogramas, grcos tridimensionais etc. Nesse laboratrio iremos nos ater
representao grca que ser mais utilizada em nosso curso. Outras formas de
representao grca utilizando o SCILAB podem ser estudadas em [3].

2.3.1 O comando plot


Suponha que se deseje representar gracamente um ponto de coordenadas (x, y) no
plano cartesiano. Isto pode ser feito em SCILAB utilizando-se o comando plot ou
plot2d, cuja forma geral a seguinte:

2.3

Representao grca

25

plot(x,y,0 <cor><forma>0 )
em que <cor> dene a cor usada na representao grca (conforme tabela 2.1(a))
e <forma> dene como o ponto ser representado, isto se ser usado um ponto,
crculo, um 'x', uma cruz ou um asteriscos, de acordo com as primeiras cinco linhas
da tabela 2.1(b).
Tabela 2.1: Cores usadas para representao grca em SCILAB (a); formas de se
representar pontos e curvas em SCILAB (b)
(b)

(a)

Cor
Amarelo
Magenta
Azul claro
Vermelho
Verde
Azul escuro
Branco
Preto

Smbolo

y
m
c
r
g
b
w
k

Forma
Ponto
Crculo
x
Cruz
Asteriscos
Linha contnua
Linha pontilhada
Linha tracejada
Linha trao-pontilhada

Smbolo

.
o
x
+
*
:
--.

Por exemplo, caso se deseje representar gracamente o ponto de coordenadas


(2, 1), na cor azul claro e com uma cruz, faz-se

 plot(-2,1,0 c+0 ) <enter>


importante ressaltar que, caso a forma de representao no esteja presente no
comando plot, o SCILAB assumir, como padro, o ponto (.). Por exemplo, caso
a linha de comando acima seja substituda por
 plot(-2,1,0 c0 ) <enter>
ento, o SCILAB utilizar o ponto (.) em vez de + para representar o ponto (2, 1)
no plano cartesiano.
Suponha, agora, que se deseje representar gracamente os pontos de coordenadas
(x, y1 ), (x2 , y2 ), . . . , (xn , yn ) num mesmo grco. Para tanto, o primeiro passo
denir dois vetores, x e y por exemplo, cujas componentes so, respectivamente,
as abscissas e as ordenadas dos pontos que se deseja representar. Em seguida,
usar o comando plot, de acordo com a forma geral dada acima, onde x e y so

26

Captulo 2.

Programando em SCILAB

agora vetores e no as coordenadas de um ponto, conforme consta da forma geral


do comando plot. Por exemplo, suponha que se queira representar gracamente
os pontos (1, 1), (0, 2), (1, 1) e (2, 2). A linha de comando seguinte permite
represent-los na cor azul, unindo-os com retas:

 x=[-1,0,1,2];y=[1 2 -1 2];plot(x,y) <enter>


Note que, no comando plot acima, no foram denidas a <cor> e a <forma> dos
pontos. Quando isto ocorre, o SCILAB utiliza a cor azul (denida como padro)
e liga os pontos por meio de retas. Para se representar os mesmos pontos acima
sem uni-los, isto , isoladamente, com asteriscos e na cor azul escuro, substitui-se a
linha de comando acima por:
 x=[-1,0,1,2];y=[1 2 -1 2];plot(x,y,0 b*0 ) <enter>
Finalmente, para representar aqueles pontos, unindo-os com linhas verdes tracejadas, deve-se digitar a seguinte linha de comando:
 x=[-1,0,1,2];y=[1 2 -1 2];plot(x,y,0 g- -0 ) <enter>

2.3.2 Representao de diversas curvas num mesmo grco


O SCILAB trabalha um pouco diferente de outros programas da mesma classe
em relao a plotar curvas num mesmo grco. Toda vez que for digitado um novo
comando plot, o grco anterior foi continua na tela. Para apagar o grco anterior
necessria a utilizao do comando clf. A representao grca de diversas
curvas em um mesmo grco se faz necessria em muitos problemas, principalmente
quando se deseja analisar simultaneamente o comportamento de diversas grandezas
ou, ainda, quando se deseja analisar a resposta de um sistema a diferentes entradas.
Alm do modo automtico, uma outra forma de colocar vrias curvas num mesmo
grco pode ser atravs de um comando plot com vrios pares de vetores, isto

 plot(x1,y1,0 <cor1><forma1>0 ,...,xn,yn,0 <corn><forman>0 )


Por exemplo, para se representar as funes y(t) = Sen (t) e z(t) = Cos (t),
t [0, 2] em um mesmo grco deve-se, inicialmente, denir um vetor t cujas
componentes so os instantes em que devem ser calculados y(t) e z(t) e, em seguida,
calcular y(t) = Sen (t) e z(t) = Cos (t), conforme as linhas de comando a seguir:
 t=[0:2*pi/100:2*pi]; <enter>
 y=sin(t);z=cos(t); <enter>

2.3

Representao grca

27

Caso queira visualizar um grco de cada vez o usurio deve digitar:

 t=[0:2*pi/100:2*pi]; <enter>
 y=sin(t); clf(); z=cos(t); <enter>
Quando o grco possui mais de uma curva , v-se que, embora o usurio no
tenha denido nenhuma cor para as abscissas y e z, o SCILAB utiliza o azul para
representar os dois (preto no caso do comando plot2d. De fato, deal quando se
usa do comando plot com mltiplas entradas, denir <cor> e <forma> para cada
curva, para uma melhor visualizao utilizando a tabela 2.1(a)).


2.3.3 Representao de diversos grcos numa mesma gura


Vrios grcos podem ser representados numa mesma gura com a ajuda do comando subplot. Este comando tem a forma geral

subplot(m,n,k)
e gera uma matriz de grcos de dimenso m n, e faz com que todos os comandos
associados representao grca tenham efeito somente sobre o grco da posio
k . Esta posio denida como 1 para o grco correspondente posio (1, 1)
da matriz, 2 para o grco da posio (1, 2), n para o grco da posio (1, n),
n + 1 para o grco da posio (2, 1) da matriz e assim por diante. Por exemplo,
para se representar as duas funo do exemplo 2.10 em dois grcos diferentes, um
situado no topo da gura (y(t) = Sen (t)) e o outro na parte inferior da gura
(z(t) = Cos (t)) procede-se da seguinte forma:
 subplot(2,1,1);plot(t,y) <enter>
 subplot(2,1,2);plot(t,z) <enter>

2.3.4 Outros comandos para representao grca


Muitas vezes, a representao grca, por si s, no auto-explicativa. Ela requer
legendas para que se visualize, com maior clareza, o que signica cada grco (no
caso de mltiplos grcos) ou cada linha do grco (quando se trara de um grco
com diversas curvas). Para tanto, utiliza-se os seguintes comandos:
(i)

title(0 <texto>0 ) : coloca um ttulo (<texto>) na parte superior do grco.

28

Captulo 2.

Programando em SCILAB

Figura 2.7: Diagramas de Bode para a funo de transferncia G(s) = 1/(s2 +2s+4)

xlabel(0 <texto>0 ) : escreve o <texto> imediatamente abaixo do eixo das


abscissas.
0
0
(iii) ylabel( <texto> ) : escreve o <texto> esquerda do do eixo das ordenadas.
(iv) locate : usado para obter as coordenadas de um ou mais pontos selecionados com o mouse em uma janela de grcos. As coordenadas so fornecidas
usando-se a escala de grcos corrente..
(v) xgrid : quadricula a tela com linhas tracejadas.
Finalmente, deve ser ressaltado que o SCILAB permite representar grcos em
escala logartmica (muito importante na anlise da resposta em frequncia de sistemas lineares estveis). Isto feito utilizando-se os seguintes comandos:
(vi) plot2d(x,y,logflag= string): permite representar grcos nos quais as
abscissas ( string = "ln"), ordenadas ( string = "nl") ou ambas ( string = "ln"),
esto em escalas logartmicas.
(ii)

2.3

Representao grca

Exemplo 2.10

29

Escreva um arquivo de funes para calcular e traar os diagramas

de mdulo e fase de Bode de uma dada funo de transferncia.

Soluo:

Denominemos

diagbode

a funo que calcula os diagramas de Bode de

mdulo e de fase. Como entradas da funo, temos os a funo de transferncia


e o vetor

G,

contendo as frequncias onde se deseja calcular os diagramas de Bode.

As sadas sero

gjwdb

fasegjw,

que so vetores cujas componentes so, respecti-

vamente, o mdulo, em decibis, e a fase, em graus, da funo de transferncia nas


frequncias dadas em

w.

A gura 2.8 apresenta a listagem da funo

diagbode

que

traa os diagramas de mdulo e fase de Bode de uma dada funo de transferncia.


Note que os parmetros de sada da funo so os vetores cujos elementos so o
mdulo em dB e a fase em graus de
de entrada

G(j)

para cada valor de frequncia do vetor

w.

// DIAGBODE : Calcula e traa os diagramas de Bode


//
de uma funcao de transferencia G(s)
// [gjwdb,fasegjw] = diagbode(G,w);
function [gjwdb,fasegjw] = diagbode(G,w);
jw = %i*w; gjw =horner(G,jw); angle =atan(imag(gjw),real(gjw));
gjwdb=20*log10(abs(gjw));fasegjw=angle(gjw)*180/pi;
subplot(2,1,1); plot2d(w,gjwdb,logflag="ln"); xgrid;
title(0 Diagramas de Bode0 );xlabel(0 Frequncia angular - w0 );
ylabel(0 Mdulo em dB0 );
subplot(2,1,2);plot2d(w,fasegjw,logflag="ln");xgrid;
xlabel(0 Frequncia angular - w0 );ylabel(0 ngulo em Graus0 );
endfunction
Figura 2.8: Listagem da funo diagbode para o clculo dos diagramas de Bode
de uma funo de transferncia.
Para se obter os diagramas de Bode da funo de transferncia

G(s) = 1/(s2 +

2s + 4), procede-se da seguinte forma:


 G=syslin('c',(1)/(s2+2*s+4)); w=logspace(-1,1,100);
 [gjwdb,fasegjw]=diagbode(G,w);
A funo diagbode retornar o mdulo de G(j) em decibis e a fase de G(j),
em graus, nas frequncias denidas no vetor w, armazenando-os, respectivamente,

30
nos vetores

Captulo 2.

gjwdb

fasegjw

Programando em SCILAB

e, tambm, produzir os diagramas de mdulo e fase,

representados na gura 2.7.

2.4 Controle de uxo


s vezes, torna-se necessrio mudar a ordem de execuo dos comandos em uma
determinada funo, ou ainda repetir uma sequncia de comandos at que uma
determinada condio seja vericada. Isto feito, em SCILAB, usando-se as declaraes if e os laos for...end e while...end, conforme ser visto a seguir.

2.4.1 Declarao if
A forma geral para o uso da declarao if a seguinte:

if <expresso booleana>
<sequncia de comandos 1>
else
<sequncia de comandos 2>
end
A declarao if funciona da seguinte forma: quando a <expresso booleana> for
verdadeira, as linhas de comandos denidas em <sequncia de comandos 1> sero
executadas e, caso contrrio, sero executadas os comandos denidos na <sequncia
de comandos 2>. Uma forma mais simples da declarao if :
if <expresso booleana>
<sequncia de comandos>
end
Neste caso, a <sequncia de comandos> ser executada somente quando a <expresso
booleana> for verdadeira.
O resultado da <expresso booleana> (verdadeiro ou falso) denido a partir
de operadores lgicos &(e), |(ou) e ~(no), cujas tabelas verdades so mostradas na
tabela 2.2 e dos operadores relacionais: < (menor que), > (maior que), =< (menor
ou igual), >= (maior ou igual), == (igual) e = (diferente).
Usando a declarao if then else, estamos em condies melhorar a entrada
de dados para o usurio na funo norma2 e tambm corrigir o erro da funo

2.4

Controle de uxo
&
V
F

V
V
F

(a)

31

F
F
F

|
V
F

V
V
V

~
V
F

F
V
F

(b)

V
F
V
(b)

Tabela 2.2: Tabelas verdades para os operadores lgicos &(e), |(ou) e (no)

pderiv, que no calcula corretamente a derivada de polinmios de grau zero.

Exemplo 2.11

O resultado encontrado pela funo

norma2

do exemplo 2.7 estar

correto quando a entrada for um vetor coluna. Para que o usurio possa utiliz-lo
tambm para calcular a norma euclideana de um vetor linha, o arquivo deve ter
linhas que veriquem se o vetor do tipo linha ou coluna. Uma outra decincia
da funo

norma2

que ela incapaz de distinguir se o usurio forneceu um vetor

ou uma matriz. Utilizando-se declaraes

if,

todos esses problemas so sanados,

conforme mostrado na listagem da gura 2.9

// y=norma2(x) : calcula a norma euclideana de um vetor


// sendo x : vetor de entrada
//
y : norma euclideana de x
//
function y=norma2(x);
[m,n]=size(x);
if m>1 & n>1;
disp(0 0 );disp(0 ???? ERRO: a entrada deve ser um vetor0 );
disp(0 0 );
y=[];
else
if m==1;y=sqrt(x*x0 );else;y=sqrt(x0 *x);end
end
endfunction
Figura 2.9: Listagem da funo norma2 modicada com a introduo de declaraes
if.

32

Captulo 2.

Programando em SCILAB

Agora verique o programa para os vetores


v=

1
1


e

w=

1 2
3 4

1 1

e para a matriz


A=

Note que, ao se fazer

 a=[1 2;3 4];na=norma2(a);<enter>


o SCILAB retornou a mensagem

????

ERRO: a entrada deve ser um vetor.


0
0
Isto se deve ao comando disp, cuja forma geral disp( <texto> ). Este comando
faz com que a mensagem contida em <texto> seja impressa na janela do SCILAB.
No arquivo acima usou-se, alm do comando disp que contm a mensagem de erro
a ser impressa na tela, outros dois contendo espaos em branco como texto. Eles
foram usados para que o SCILAB deixe uma linha em branco entre a ltima linha
de comando digitada pelo usurio e a mensagem impressa na tela e uma outra linha
em branco entre essa mensagem e o prximo sinal de solicitao

.

2.4.2 Lao while


A estrutura de um lao while a seguinte:

while <expresso booleana>


<sequncia de comandos>
end
Na estrutura acima, a <sequncia de comandos> ser executada enquanto a <expresso booleana> retornar um valor verdadeiro. Por exemplo, considere um
arquivo de comandos (comandos.m), cujo contedo o seguinte:
resp=0 sim0 ;i=0;
while resp==0 sim0
i=i+1
resp=input(0 Deseja continuar (sim/nao)? 0 ,0 s0 );
end

2.4

Controle de uxo

33

Crie um arquivo denominado comandos.m e digite os comandos acima. Em


seguida execute o arquivo digitando
 comandos <enter>.
Observe que foram impressas na tela as seguintes mensagens:

i = 1
Deseja continuar (sim/nao)?
e o programa permanecer parado at que o usurio digite sim, para continuar e
nao, para parar denitivamente a execuo do programa. Isto se deve ao comando
input, que permite que o usurio atribua um valor a uma varivel. A forma geral
do comando input
<varivel> = input(0 <texto>0 );
quando a <varivel> numrica ou
<varivel> = input(0 <texto>0 ,0 s0 );
quando a <varivel> do tipo cadeia de caracteres. Observe, no exemplo acima
que, como a expresso booleana resp==0 sim0 , o programa, na verdade, interromper sua execuo sempre o usurio digitar qualquer expresso que no seja sim.

2.4.3 Lao for


A forma geral do lao for a seguinte:

for <contador>=<valor inicial>:<incremento>:<valor final>


<sequncia de comandos>
end
onde
<contador> : varivel de controle;
<valor inicial> : valor inicial da varivel;
<incremento> : incremento dado varivel <contador>, podendo ser positivo
ou negativo; quando o incremento for igual a 0, o lao for no ser executado;
<valor final> : maior ou menor valor que a varivel <contador> pode assumir.
O funcionamento do lao for pode ser explicado com a ajuda das estruturas if
e while, conforme mostrado abaixo:
<contador> = <valor inicial>;

34

Captulo 2.

Programando em SCILAB

if <incremento> > 0
while <contador> <= <valor final>
<sequncia de comandos>
<contador> = <contador> + <incremento>
end
else
while <contador> >= <valor final>
<sequncia de comandos>
<contador> = <contador> + <incremento>
end
end

Exemplo 2.12

Uma das formas de se representar matematicamente um sistema

fsico atravs das chamadas equaes de estados. Nesta representao, um sistema


de ordem

ser epresentado por um sistema de

equaes diferenciais de primeira

ordem, dado por:

= Ax(t) + bu(t)
x(t)

y(t) = c x(t) + du(t)


onde

x(t) Rn1

u(t) R e y(t) R denotam, respectivaA Rnn , b Rn1 e c R1n . As equaes

o vetor de estados,

mente a entrada e a sada do sistema,

de estados permitem, por exemplo, vericar se o sistema controlvel, isto , se


existe uma entrada

u(t)

capaz de levar o sistema a qualquer estado

xf .

Para tanto

necessrio vericar se a matriz de controlabilidade

C=
tem posto igual a

n.

b Ab A2 b . . . An1 b

O arquivo de comandos (controlabilidade.m cujo cdigo est

listado na gure 2.10 pode ser utilizado para vericar se o sistema controlvel ou
no.
Agora verique se os seguintes sistemas so controlveis:

(a)


x(t)

1 2
3 4


x(t) +

1
0


u(t)

2.4

Controle de uxo

35

% CONTROLABILIDADE : verifica se um SLIT controlvel ou no


% sendo : a : n X n (matriz de transio de estados) e
b : n X 1 (matriz de entrada)
[ma,na]=size(a);[mb,nb]=size(b);
% verificando se as dimensoes das matrizes
% a e b sao compativeis
if ma==na & mb==na
n=ma;ci=b;c=ci;
% construindo a matriz controlabilidade
for i=1:n-1
ci=a*ci;c=[c ci];
end
% verificando se o sistema controlavel
disp(0 0 );
if rank(c)==n
disp(0 O sistema e controlavel0 );disp(0 0 );
else
disp(0 O sistema nao e controlavel0 );disp(0 0 );
end
else
disp(0 0 );
disp(0 As dimensoes das matrizes nao sao compativeis0 );
disp(0 0 );
end
Figura 2.10: Cdigo do arquivo de comandos controlabilidade.m para vericar
a controlabilidade de um sistema.

36

Captulo 2.

Programando em SCILAB

(b)


x(t)

1 2
0 4


x(t) +

2
0


u(t)

2.4.4 A funo nd


Embora no tenha o poder de alterar a sequncia de execuo de um arquivo,
a funo find, pr-denida pelo SCILAB, tem como argumento uma expresso
boolena. Sua forma geral a seguinte:
<varivel> = find(<expressao booleana contendo um vetor>) .
A funco find retorna todos os ndices das componentes do vetor para os quais a
expresso booleana verdadeira. Por exemplo, suponha que os vetores t e y contm
os instantes de simulao e os correspondentes valores da sada de um sistema de
segunda ordem sub-amortecido para uma entrada igual ao degrau unitrio. A funo
find pode ser usada para determinar os instantes de tempo imediatamente anterior
e posterior quele em que a sada atinge yss pela primeira vez e, consequentemente
permite que se determine o tempo de subida da resposta, conforme mostra a seguinte
sequncia de comandos:

yss=y(length(y));ind=find(y>yss);
// instante de tempo imediatamente posterior a tr
trp=t(ind(1));yrp=y(ind(1));
// instante de tempo imediatamente anterior ou igual a ts
tra=t(ind(1)-1);yra=y(ind(1)-1);
// calculo do tempo de subida (por interpolao)
tr=tra+(trp-tra)*(yss-yra)/(yrp-yra)
Use os vetores y e t do exemplo 2.8 para vericar se os comandos acima esto, de
fato, levando a uma correta determinao do tempo de subida da resposta.

2.5 Xcos
Para simular sistemas de controle, normalmente utiliza-se o Xcos, que uma ferramenta do Scilab. Para abrir o Xcos no SCILAB, bastar clicar no icone aplicativos
da barra de ferramentas. Feito isso, aberta a janela da biblioteca do Xcos representada na gura 2.11.

Xcos

2.5

37

Figura 2.11: Biblioteca do Xcos


Para aprendermos a criar um arquivo para simulao no Xcos vamos utilizar o
exemplo a seguir.

Exemplo 2.13
so:

Considere o esquema representado na gura 2.12 e seus parmetros

Kp = 0.6, Ti = 20, = 0.1

resposta a um degrau unitrio

K = 1.36.
aplicado em t = 1.
e

Suponha que desejamos obter a

Para criar um arquivo para simulao no Xcos, o primeiro passo criar um ar-

File > New. Uma vez criado o arquivo, o prximo passo


adicionar os seguintes blocos: Step, Clock, CLR , Summation, Toworkspace
(TOWS) e CFScope. Esses blocos so arrastados das bibliotecas Sources, Continuous
time systems, Mathematical operations, Sinks. Para realizar a congurao
de um bloco Scope deve-se dar um duplo click no bloco e, em seguida, aparecer uma
quivo utilizando-se opo

janela em que podemos ajustar os parmetros de cada bloco. Diferentemente de outros programas, para qualquer simulao necessria a presena do

Clock

que tem

como parmetros: Perodo(inverso da frequncia) e Inicialization time(tempo de


partida). Outro bloco essencial para obteno de dados o

TOWS.

Ele possui duas

entradas: uma vinda do clock e outra da varivel da simulao que se quer enviar

38

Captulo 2.

Programando em SCILAB

Figura 2.12: Esquema do diagrama em bloco do exemplo 2.13


para o workspace. O

CFScope se faz necessrio

para exibir o grco da simulao,

que ilustrado numa janela idntica a produzida pelo comando

plot

e mostrado na

gura 2.13(b) . Porm, os dados so obtidos de modo online. A gura 2.13(a)


ilustra a congurao do bloco

Scope,

enquanto a gura 2.13(b), o grco da simu-

lao.
Os parmetros de simulao so congurados na janela mostrada na gura 2.14,
que aberta ao selecionar a opo

Simulation -> Configuration Parameters.

Cada simulao Xcos tem parmetros para denir o tempo de incio, tempo nal
e tolerncias da simulao.

basta clicar no boto

Play

da janela que contm o

diagrama de blocos para simulao. O resultado da simulao com os parmetros


acima est mostrado na gura 2.13(a)

2.6 Comentrios nais


Conforme foi mencionado na introduo deste captulo, o SCILAB possui muito
mais recursos do que foi apresentado aqui. O objetivo principal desse captulo foi
introduzir os comandos bsicos para que o usurio se sinta confortvel ao utili-

Exerccios propostos

39

[htb]

(a)

(b)

Figura 2.13: Congurao do bloco scope (a) e resultado da simulao (b)


zar o SCILAB e tenha a ferramenta mnima necessria para que possa vir a usar
com sucesso linguagem. Para se ter acesso a comandos/recursos mais poderos,
recomenda-se a consulta aos manuais do SCILAB e do XCOS.

Exerccios propostos
1. Entre com a matriz


Z=
e execute os comandos

(i)

1 j 1 + 2j 2 j
2 1 + 2j
3j

(vi)

da seo 2.2.2.

2. Para o vetor

x=
execute os comandos

(vii)

(ix)

1 10 7 0.1

da seo 2.2.2.

3. Faa um programa SCILAB (arquivo de funo) para traar o diagrama de


Nyquist de uma determinada funo de transferncia

G(s) =

n(s)
d(s)

40

Captulo 2.

Programando em SCILAB

Figura 2.14: Congurao dos parmetros de simulao


sendo um vetor contendo as frequncias de interesse. Por exemplo, a funo
poder-se-ia chamar de meunyq sendo descrita por gjw = meunyq(G,w).
4. Seja s = + j uma varivel complexa e seja
s
F (s) =
.
s+2
Escreva um arquivo de comandos em SCILAB para calcular e representar
gracamente o mapeamento de F (s) sobre , onde o contorno representado
na gura 2.15.
5. Escrever um arquivo de funo que permita somar dois polinmios p(s) =
p0 sm + p1 sm1 + + pm1 s + pm e q(s) = q0 sn + q1 sn1 + + qn1 s + qn .
Teste a funo para os polinmios p(s) = s + 1 e q(s) = s2 + 2s 1
6. Suponha que sejam dadas as funes de transferncias da planta e do controlador
nK (s)
nG (s)
e K(s) =
.
G(s) =
dG (s)
dK (s)

Exerccios propostos

41

j
6
j1

1 6

1 -

j1
Figura 2.15: Contorno para o exerccio 2.4
Escreva arquivos de funes que permitem calcular as seguintes funes de
transferncias para o sistema cujo diagrama de blocos est representado na
gura 2.16: (a) TRY (s) = Y (s)/R(s), (b) TRE (s) = E(s)/R(s) e (c) TRU (s) =
U (s)/R(s)
Nota: a funo SCILAB que calcula a funo de transferncia TRY (s), poderia
ser denida como [T] = try(G,K).

R(s) +

E(s)

K(s)

U (s)

G(s)

Y (s)

Figura 2.16: Diagrama de blocos para o exerccio 2.6


7. Suponha que sejam conhecidas as coordenadas de dois pontos P1 = (x1 , y1 ) e
P2 = (x2 , y2 ) e a abscissa de um terceiro ponto P3 = (x3 , y3 ), onde x1 < x3 <
x2 . Escreva um arquivo do tipo funo que permita encontrar y3 interpolando-

42

Captulo 2.

Programando em SCILAB

se os pontos P1 e P2 por uma reta, isto , a ordenada de P3 ser y3 = ax3 + b,


onde a e b so, respectivamente, os coecientes angular e linear da reta que
passa pelos pontos P1 e P2 .
8. Suponha que sejam conhecidas as coordenadas de dois pontos P1 = (x1 , y1 ) e
P2 = (x2 , y2 ) e a ordenada de um terceiro ponto P3 = (x3 , y3 ), onde y1 < y3 <
y2 . Escreva um arquivo do tipo funo que permita encontrar x3 interpolandose os pontos P1 e P2 por uma reta.
9. Escreva um arquivo do tipo funo que permita calcular: (i) os tempos de
subida (tr ) e de acomodao (ts ) para um sistema superamortecido ou criticamente amortecido e (ii) os tempos de subida (tr ), de pico (tp ) e de acomodao
(ts ) e o percentual de ultrapassagem (P O) para um sistema subamortecido.
Nota: Assuma que sejam conhecidos t e y(t), estando armazenados nos veto



res t = t1 t2 . . . tn e y = y(t1 ) y(t2 ) . . . y(tn ) , respectivamente.
Ateno: Use o comando find e interpolao.
10. Suponha que

Q(s) = G(s)K(s) = K

nQ (s)
,
dQ (s)

onde nQ (s) e dQ (s) so conhecidos e K deve ser arbitrado. Escreva um arquivo


de funes que:
Verique se o sistema realimentado (realimentao negativa) estvel para
um dado valor de K .
(a)

Caso o sistema seja estvel, encontre as margens de fase e de ganho do


sistema.
Nota: Use o comando find e faa interpolao para achar os valores corretos.
(b)

11. Dado um conjunto de pontos (x1 , y1 ), (x2 , y2 ), . . . , (xn , yn ), escreva um arquivo


de funes em SCILAB que utilize o mtodo dos mnimos quadrados para
calcular o coeciente angular da reta y = x, conforme a gura 2.17.
Nota: Veja captulo 3, equao 3.35.

Exerccios propostos

43

yn
..
.
y3

yn
..
.
y3

y2

y2

y1

y1

x1

x2

x3 xn

y = x

x1

x2

(a)

x3 xn

(b)

Figura 2.17: Representao dos pontos (x1 , y1 ), (x2 , y2 ), . . . , (xn , yn ) e da reta ajustada y = x referentes ao exerccio 2.11.

D(s)

K
R(s)
+

K(s)

Kt
s+1

Y (s)

Figura 2.18: Diagrama de blocos para o sistema do exerccio 2.13

44

Captulo 2.

Programando em SCILAB

12. Suponha que a partir de um experimento, obtm-se os vetores

0 1 . . . q

0 1 . . . q

h =

| H(j0 ) | | H(j1 ) | . . . | H(jq ) |

onde i , i = 0, 1, . . . , q so as frequncias angulares e H(ji ) =| H(ji ) |


exp(ji ). Escreva um arquivo de funes que utilize o mtodo dos mnimos
quadrados (veja captulo 3, algoritmo 5) para calcular os coecientes da funo
de transferncia

H(s) =

b0 sm + b1 sm1 + . . . + bm1 s + bm
b(s)
,
= n
a(s)
s + a1 sn1 + . . . + an1 s + an

onde os graus dos polinmios do numerador e do denominador, m e n, respectivamente, so arbitrados.


13. Construa um arquivo XCOS para fazer a simulao do sistema da gura 2.18,
= 451.8, para as seguintes
onde K = 127.9, Kt = 0.0056, = 0.026 e K
situaes:

r(t) = 12u0 (t) e d(t) = 0 e K(s) = 5.4/s, onde u0 (t) representa um degrau
unitrio aplicado no instante t = 0.
(a)

(b)

r(t) = 12u0 (t) e d(t) = 0 e K(s) = (s + 30)/s.

(c)

Reptita os itens

Nota:

2s.

(a)

(b)

para d(t) = 0.2u0 (t 1)

Em todos os casos acima, o intervalo de simulao deve ser de -0.5 a

Captulo 3
Modelagem e identicao dos
parmetros da funo de
transferncia motor CC
Neste captulo iremos obter um modelo matemtico para o motor CC controlado
pela armadura. O modelo adotado ser o de um sistema linear descrito por uma
funo de transferncia cuja entrada a tenso de armadura e cuja sada a velocidade angular. Supor que o sistema como linear representa uma restrio muito forte
pois exige que este tenha um comportamento linear em todas as faixas de operao.
Na prtica, contudo, o que ocorre que os sistemas tm, em geral, comportamento
aproximadamente linear em faixas de valores da varivel de entrada. Assim sendo,
torna-se necessrio determinar experimentalmente uma faixa de operao na qual
o comportamento do motor possa ser considerado linear. Uma importante ferramenta matemtica utilizada na determinao da regio linear o chamado mtodo
dos mnimos quadrados, uma vez que permite ajustar um conjunto de pontos por
uma funo polinomial p(x) cujo grau deve ser arbitrado pelo projetista. Aps a
determinao da regio linear ser possvel proceder identicao dos parmetros
da funo de transferncia. Para tanto, iremos realizar experimentos baseados tanto
na resposta ao degrau como na resposta em frequncia.
O restante desse captulo est estruturado da seguinte forma. Na seo 3.1
vamos apresentar uma breve reviso dos principais fundamentos tericos que sero
utilizados no captulo. Em seguida, na seo 3.2 iremos desenvolver o modelo
45

46

Captulo 3.

Modelagem e Identicao

matemtico do motor CC controlado pela armadura. Finalmente, na seo 3.4


iremos descrever os experimentos necessrios para a obteno dos dados a serem
utilizados na determinao dos parmetros do modelo.

3.1 Fundamentos tericos


3.1.1 O mtodo dos mnimos quadrados
Considere o problema de se resolver um sistema linear

Ax = b,

(3.1)

em que a matriz A tem dimenso m n (m  n). Esse sistema, em geral, no tem


soluo, isto , Ax 6= b, uma vez que o nmero de linhas de A muito maior do
que o de colunas. Assim, em raras ocasies o vetor b ir pertencer ao espao gerado
pelas colunas de A.
Quando o sistema (3.1) no tem soluo, comum em engenharia, buscar um
vetor x que, embora no seja soluo do sistema, seja tal que minimize a norma
quadrtica do erro entre Ax e b. Seja, portanto,

b = Ax,

(3.2)

e = b b.

(3.3)

e dena
Considere o seguinte problema: encontre x tal que kek22 seja mnima. Note que,
se existir x tal que Ax = b ento kek22 = 0, o que implica que mesmo no caso em que
o sistema de equaes (3.1) tem soluo, o mtodo dos mnimos quadrados tambm
levar a essa soluo.
A partir das equaes (3.2) e (3.3) tem-se:

kek22 = < Ax b, Ax b > = (Ax b)t (Ax b)


= xt At Ax xt At b bt Ax + bt b.

(3.4)

Como xt At b R ento xt At b = (xt At b)t = bt Ax, o que nos permite escrever:

kek22 = xt At Ax 2bt Ax + bt b.

(3.5)

3.1

Fundamentos tericos

47

Portanto, o seguinte problema de otimizao deve ser resolvido:

min kek22 ,

xRn

(3.6)

sendo kek22 dada pela equao (3.5).


Contudo, antes de passarmos soluo do problema de otimizao acima, alguns
conceitos devem ser relembrados:
n
1. Seja y = f (x1 , x2 , . . . , xn ) uma funo de R em R. A derivada de y em
relao ao vetor x denida como:

y
x1
y

y
x
2 .
(3.7)
=

x
...

xn
De acordo com a notao introduzida na equao (3.7), tem-se que:
t
n
(a) Se y = b x, em que b R , ento
2.

Prova:

e portanto:

(b)

Seja bt =

b1 b2

y
= b.
(3.8)
x

. . . bn . Ento y = bt x = b1 x1 + b2 x2 + . . . + bn xn ,

y
x1
y
x2
..
.

b1


b2
y

= .
=
= b.
..
x

bn
y
xn
t
Se y = x Hx, onde H uma matriz simtrica, isto H t = H , ento
y
= 2Hx.
x

Prova:

Por induo nita sobre n.

(3.9)

(3.10)

48

Captulo 3.

(i)

Modelagem e Identicao

n = 1. Neste caso, H = h11 , x = x1 e, dessa forma


(3.11)

y = x1 h11 x1 = h11 x21 .


Portanto:

y
dy
=
= 2h11 x1 = 2Hx.
x
dx1

(3.12)

Suponha que a expresso (3.10) seja vlida quando H Rnn , isto , se


y = xt Hx ento y/x = 2Hx.
(n+1)(n+1)
(iii) Seja agora H R
, isto :

h11
h12
h1n
h1,n+1
h12
h22
h2n
h2,n+1

.
.
.
.
.
.
.
.
(3.13)
H=
.
.
.
.
.

h1n
h2,n
hnn
hn,n+1
h1,n+1 h2,n+1 hn,n+1 hn+1,n+1
(ii)

Denindo

Hn =

htn+1 =
xn

h11
h12
..
.

h12
h22
..
.

h1n
h2n
..
.

h1n h2,n

hnn

h1,n+1 h2,n+1 hn,n+1




x1 x2 x n ,
=

(3.14)

ento y = xt Hx equivalente a:



 t
 Hn
hn+1
xn
xn xn+1
y =
htn+1 hn+1,n+1
xn+1


 t

xn
t
t
xn Hn + xn+1 hn+1 xn hn+1 + xn+1 hn+1,n+1
=
xn+1

= xtn Hn xn + xn+1 htn+1 xn + xtn hn+1 xn+1 + x2n+1 hn+1,n+1


= xtn Hn xn + 2xn+1 htn+1 xn + x2n+1 hn+1,n+1 .

(3.15)

Note que para a obteno da ltima expresso usamos o fato de que como xtn hn+1
R ento xtn hn+1 = (xtn hn+1 )t = htn+1 xn .

3.1

Fundamentos tericos

49

Desta forma, y/x ser:

y


y
2Hn xn + 2xn+1 hn+1
xn
= y =
2htn+1 xn + 2hn+1,n+1 xn+1
x
x

 n+1

xn
Hn
hn+1
= 2
= 2Hx.
htn+1 hn+1,n+1
xn+1

(3.16)


Vamos retornar ao problema de otimizao (3.6). Usando os resultados (3.8) e
(3.10), podemos escrever:

kek22 = 2(At A)x 2At b,


x

(3.17)

e, portanto, o valor de x que minimiza kek22 ser tal que

2(At A)x 2At b = 0.

(3.18)

Observe que, como, em geral, m  n, ento o posto de A , geralmente, igual a


n e, portanto, At A no singular, sendo desta forma inversvel. Consequentemente,
o vetor x que minimiza kek22 ser:

x = (At A)1 At b.

(3.19)

3.1.2 Ajuste de um conjunto de p-pares cartesianos por um


polinmio utilizando o mtodo dos mnimos quadrados
Vamos considerar agora o seguinte problema: ajuste um conjunto de p-pares cartesianos (x1 , y1 ), (x2 , y2 ), . . ., (xp , yp ), por um polinmio y(x) de grau n, isto ,
encontre os coecientes a0 , a1 , . . . , aq de

y(x) = a0 xn + a1 xn1 + . . . + an1 x + an ,


em que p >> n, utilizando o mtodo dos mnimos quadrados.

(3.20)

50

Captulo 3.

Modelagem e Identicao

Substituindo os pontos (xk , yk ), k = 1, 2, . . . , p, na equao (3.20), obtm-se:

y1 = a0 xn1 + a1 xn1
+ . . . + an1 x1 + an
1
(3.21)

+ . . . + an1 x2 + an
y2 = a0 xn2 + a1 xn1
2
..
.
yp = a0 xnp + a1 xn1
+ . . . + an1 xp + an
p

fcil vericar que a equao (3.21) pode ser escrita na seguinte forma matricial:

xn1
xn2

x1n1
x2n1


= ..
..
.
.
n
n1
xp xp

yp
y1
y2
..
.

x1
x2
..
.
xp

1
1
..
.

a0
a1
..
.

a0
a1
..
.

an1
1
an

(3.22)

Denindo

b=

xn1
xn2

x1n1
x2n1

, A = ..
..

.
.
n
n1
xp xp

yp
y1
y2
..
.

x1
x2
..
.
xp

1
1
..
.

ex=

an1
1
an

(3.23)

ento a equao (3.22) pode ser escrita como:

Ax = b.

(3.24)

Como p >> n, a equao (3.24) no tem, em geral, soluo. Utilizando o mtodo


do mnimos quadrados para encontrar a soluo que minimiza a norma quadrtica
do erro e = Ax b, obtm-se, utilizando a equao (3.18), a seguinte soluo

x = (AT A)1 AT b

(3.25)

Note que se o ponto (0, 0) for um dos pontos a serem ajustados, ento o grco do
polinmio resultante deve passar pela origem. Dessa forma an = 0, isto , somente

3.1

Fundamentos tericos

51

os n primeiros parmetros devem ser encontrados. Nesse caso, fcil vericar que
a matriz A toma a seguinte forma:

xn1 x1n1 x1
xn xn1 x2
2

2
(3.26)
A = ..
..
..
.
.
.
xnp xpn1 xp
Em resumo, o ajuste de um conjunto de p pontos (x1 , y1 ), (x2 , y2 ), . . . , (xp , yp ),
por um polinmio de grau n, n << p, pode ser feito da seguinte forma:

Algoritmo 3.1
Entrada

Pontos a serem ajustados,

do polinmio,

(x1 , y1 ), (x2 , y2 ), . . . , (xp , yp ),

e o grau desejado

n.

Passo 1 Forme o vetor

de acordo com a equao (3.23).

Passo 2 Verique se o ponto

(0, 0)

um dos pontos a serem ajustados.

Em caso armativo, proceda da seguinte forma:

Forme a matriz

Calcule o vetor

Faa

de acordo com a equao (3.26).

de acordo com a equao (3.25)

x =

x
0


.

Fim

Em caso negativo, proceda da seguinte forma:

Sada

Forme a matriz

Calcule o vetor

Faa

Fim

Vetor

de acordo com a equao (3.25)

x = x.

x =

polinmio.

de acordo com a equao (3.23).

a0 a1

an

, cujas componentes so os coecientes do

52

Captulo 3.

Modelagem e Identicao

3.1.3 Expanso em srie de Fourier de funes peridicas


Seja f (t) uma funo denida no intervalo [t0 , t0 + T ], em que T = 2/0 . Ento
f (t) tem a seguinte expanso em srie de Fourier:

f (t) = a0 +

an cos(n0 t) + bn sin(n0 t),

(3.27)

n=1

sendo

a0

1
=
T

an =
bn =

2
T
2
T

t0 +T

f (t)dt

(3.28)

f (t) cos(n0 t)dt

(3.29)

f (t) sin(n0 t)dt

(3.30)

t0
Z t0 +T
t0
Z t0 +T
t0

s vezes, mais conveniente escrever a expanso em srie de Fourier como:

f (t) = a0 +

cn sin(n0 t + n ),

(3.31)

n=1

em que os coecientes cn e n so, respectivamente, o mdulo e a fase (em radianos)


do nmero complexo zn = bn + jan , isto , zn = cn ejn .
Na prtica, a expanso em srie de Fourier usada para encontrar as harmnicas
de um sinal peridico  as mais importantes so a primeira harmnica, utilizada
na obteno da resposta em frequncia de um sistema, e a terceira harmnica,
muito utilizada em sistemas de energia eltrica. Nesses casos, o sinal f (t) no
descrito analiticamente mas sim por um conjunto de pares ordenados (tk , f (tk )),
sendo tk = t0 + kh, k = 0, 1, . . . , p, em que h denota o intervalo de amostragem e
T = ph. Nessas condies, os valores de a0 , cn e n sero calculados numericamente
de acordo com o seguinte algoritmo.

Algoritmo 3.2
Entrada

N : nmero de harmnicos a serem determinados

3.1

Fundamentos tericos

53

Passo 1 Obtenha um conjunto de

p+1

(tk , f (tk )), em que tk = t0 + kh,


no intervalo [t0 , t0 + T ] e armazene

pontos

k = 0, 1, . . . , p, que descrevem a funo


os pontos tk e f (tk ) nos vetores t e f t, respectivamente.
Passo 2 Utilizando a funo

inttrap do Scilab, calcule numericamente a0

denido

de acordo com a equao (3.28) da seguinte forma:

a0 = inttrap(t,ft)/T
Passo 3 Para

variando de 1 a

N,

calcular:

an = (2/T)*inttrap(t,(cos(2* *n)*t/T).*ft)
bn = (2/T)*inttrap(t,(sin(2* *n)*t/T).*ft)

Sada

zn = bn + j*an cn = abs(zn), n = angle(zn)






a0 c1 c2 cN e = 1 2 N
Vetores c =

3.1.4 Obteno da resposta em frequncia de um sistema


linear invariante no tempo estvel
Consideremos um sistema linear invariante no tempo estvel com entrada e sada
denotadas por u(t) e y(t), respectivamente, e cuja funo de transferncia denotada
por G(s). Tem-se, portanto, que:

G(s) =

Y (s)
,
U (s)

(3.32)

em que U (s) e Y (s) so as transformadas de Laplace de u(t) e y(t), respectivamente.


No difcil demonstrar que, como G(s) estvel, ento a resposta de regime
permanente a uma entrada senoidal u(t) = Umk Sen(k t + k ) igual a yss (t) =
Ymk Sen(k t + k ) em que

Ymk = |G(jk )|Umk e k = k + G(jk ).

(3.33)

Assim, o valor de G(jk ) = |G(jk )|ejG(jk ) pode ser determinado diretamente a


partir da equao (3.33) sendo:

|G(jk )| =

Ym k
e G(jk ) = k k .
Umk

(3.34)

54

Captulo 3.

Modelagem e Identicao

Quando o experimento repetido para diversas frequncias k , k = 1, 2, . . . , p,


cobrindo um espectro de frequncias que permite vericar o comportamento do
sistema, os valores de G(jk ) determinam a chamada resposta em frequncia de
G(s). Aos grcos |G(jk )| e G(jk ) d-se o nome de curvas de mdulo
e de fase da resposta em frequncia de G(s).
Na prtica, contudo, o sinal de sada geralmente corrompido por rudos introduzidos pelos sensores de medio, o que faz com que o sinal yss (t) no tenha
uma forma senoidal exata. Para contornar esse problema, faz-se a expanso em
srie de Fourier desse sinal e toma-se o valores do mdulo e da fase da frequncia
fundamental como os valores de Ymk e k como a amplitude e a fase do valor de regime permanente da resposta. Assim, a obteno da resposta em frequncia de um
sistema linear invariante no tempo estvel pode ser feita de acordo com o seguinte
algoritmo.

Algoritmo 3.3
Passo 1 Selecione um nmero nito

de frequncias angulares

k , k = 1, 2, . . . , p.

A frequncia mais baixa ditada pelo equipamento destinado a gerar o sinal


senoidal de entrada enquanto a frequncia mais alta determinada pela razo
entre as amplitudes do sinal de sada e do rudo de medio.
Passo 2 Aplique entradas senoidais da forma

uk (t) = Umk Sen(k t + k ), k =

1, 2, . . . , p, e faa a aquisio dos pontos referentes aos sinais


de sada, (ti , uk (ti )) e (ti , yk (ti )), respectivamente, para cada um

de entrada e
dos sinais de

entrada aplicados e correspondentes sadas.


Passo 3 Utilize o algritmo 3.2 para obter os termos fundamentais das sries de

Fourier dos sinais de entrada e sada, dados respectivamente por:

Passo 4 Calcule

ukf (t) = Cuk Sen(k t + uk )

(3.35)

ykf (t) = Cyk Sen(k t + yk )

(3.36)

G(jk ) = |G(jk )|ek ,

sendo

C yk
Cuk
= yk uk

|G(jk )| =
k

(3.37)
(3.38)

3.1

Fundamentos tericos

55

3.1.5 Identicao dos parmetros K e da funo de transferncia de primeira ordem de um SLIT utilizando resposta ao degrau
Considere um SLIT com resposta ao degrau monotonicamente crescente com entrada u(t) e sada y(t). Uma das formas de se modelar esse sistema por meio de
uma funo de transferncia de primeira ordem

G(s) =

K
Y (s)
=
,
U (s)
s + 1

(3.39)

sendo K o ganho DC e a constante de tempo do sistema.


Uma das formas de se determinar os parmetros K e da funo de transferncia (3.39) por meio da resposta ao degrau. Note que, aplicando-se um degrau de
amplitude A ao sistema descrito pela equao (3.39), obtm-se a seguinte resposta
y(t):

y(t) = KA(1 et/ ), t 0.

(3.40)

Vamos considerar, inicialmente, a determinao do parmetro K .

Determinao do parmetro K
Note, inicialmente que:
(3.41)

lim y(t) = KA = y .

Portanto:

y
.
(3.42)
A
Assim como no caso da resposta senoidal, na prtica, porm, o sinal de resposta
corrompido por rudos o que impede que valor de regime permanente de y(t) seja
determinado diretamente como na equao (3.42). Assim, o seguinte algoritmo deve
ser usado para a determinao do parmetro K .
K=

Algoritmo 3.4

(Determinao do parmetro

K)

Passo 1. Aplique ao sistema um degrau de amplitude

resposta

y(t).

e faa a aquisio da

56

Captulo 3.

Passo 2. Determine um instante

ts

Modelagem e Identicao

a partir do qual se considera que o sistema

esteja em regime permanente.


Passo 3. Encontre

y
sendo

N
1 X
y(ti ),
=
N i=1

(ti , y(ti )), ti ts ,

o nmero de pontos

K=

e calcule

y
.
A

Determinao do parmetro
A determinao do parmetro pode ser feita utilizando os seguintes mtodos:

1. Mtodo da rea
Considere a rea A0 na gura 3.1, cuja curva representa a resposta real y(t) de
um sistema que desejamos modelar de acordo com a funo de transferncia (3.39).
Note que A0 pode ser escrita como:
Z
[KA y(t)]dt.
A0 =
0

Substituindo y(t) na equao acima pela equao (3.40) e, aps manipulaes algbricas simples, obtm-se:
A0 = KA.
Assim, o seguinte algoritmo pode ser usado para a determinao do parmetro

Algoritmo 3.5

(Determinao do parmetro

pelo mtodo da rea)

Passo 1. Aplique ao sistema um degrau de amplitude

resposta

e faa a aquisio da

y(t).

Passo 2. Determine um instante

ts

esteja em regime permanente.

a partir do qual se considera que o sistema

3.1

Fundamentos tericos

57

y(t)
y1
A0

t
Figura 3.1: Resposta ao degrau monotonicamente crescente.

inttrap (a0 = inttrap(t,yt))


do Scilab, na qual t o vetor formado por todos os instantes de tempo ti ts
e yt o vetor formado pelos correspondentes valores de y(ti ).

Passo 3. Calcule a rea

A0

utilizando a funo

Passo 4. Calcule

A0
.
y

2. Mtodo do logaritmo neperiano


Um outra forma de se determinar a constante de tempo por meio do chamado
mtodo do logaritmo neperiano. Para tanto, considere os instantes t tais que y(t) <
y = KA. Manipulaes algbricas simples, permitem escrever a equao (3.40)
como:


1
y
t = ln
,
(3.43)

y y(t)
que pode, ainda, ser reescrita da seguinte forma:

at = b,

(3.44)

(3.45)

em que

a=
e

b = b[y(t)] = ln

y
y y(t)


.

(3.46)

58

Captulo 3.

Modelagem e Identicao

Assim, o seguinte algoritmo pode ser usado para a determinao do parmetro

Algoritmo 3.6

(Determinao do parmetro

pelo mtodo do logaritmo neperi-

ano)
Passo 1. Aplique ao sistema um degrau de amplitude

resposta

e fazer a aquisio da

y(t).

Passo 2. Determine um instante

tr

tal que

y(tr ) < y

e isole os pontos

(ti , y(ti )),

ti tr
t e b cujos i-simos elementos so, respectiva(ti , y(ti )), ti tr , foram obtidos no passo 4.

Passo 3. Forme os vetores colunas

mente,

ti

b[y(ti )],

Passo 4. Calcule

em que

utilizando o mtodo dos mnimos quadrados da seguinte forma:

a=

tT b
,
ktk2

e, em seguida, determine

1
= .
a

Observao 3.1

Uma outra forma de se determinar o parmetro

por meio do

mtodo da tangente, que consiste na determinao da abscissa do ponto de interseo da reta tangente de maior coeciente angular curva de resposta ao degrau.
Esse mtodo no ser, contudo, aqui considerado por ser extremamente dependente
do traado da reta tangente e, portanto, muito susceptvel a erros.

3.1.6 Identicao dos parmetros K e da funo de transferncia de primeira ordem de um SLIT utilizando diagrama de mdulo de Bode
Uma outra maneira de se obter a funo de transferncia de um SLIT estvel

Y (s) = G(s)U (s),

(3.47)

3.1

Fundamentos tericos

59

em que G(s) possui somente polos e zeros reais, utilizando as curvas de resposta em
frequncia. Nesse caso, ao invs de utilizar as curvas de mdulo e fase, |G(j)| e
G(j), utilizamos os diagramas de Bode de mdulo e fase, (log)|G(j)|dB e
(log)G(j), nos quais o eixo das abscissas representado em escala logartmica,
|G(j)|dB = 20 log |G(j)| e G(j) dada em graus. A grande vantagem de se
utilizar os diagramas de Bode que possvel determinar assntotas da curva de
mdulo cujas intersees determinam as frequncias de canto que correspondem aos
polos e zeros de G(s).
Considere novamente a equao (3.39) repetida abaixo:

G(s) =
Como

G(j) =

K
.
s + 1

(3.48)

K
K/
=
,
1 + j
1/ + j

ento fcil vericar que

|G(j)|dB = 20 log

K/
= 20 log(K/ ) 20 log |1/ + j|.
|1/ + j|

(3.49)

As assntotas do diagrama de mdulo podem ser, ento, determinadas da seguinte forma:



20 log(K/ ) 20 log(1/ ) = 20 log K,  1/,
|G(j)|dB,ass =
.
(3.50)
20 log(K/ ) 20 log ,
 1/.
No difcil vericar que as assntotas se interceptam no ponto (1/, 20 log K),
isto , a abscissa do ponto de interseo das assntotas, denominada frequncia de
canto, numericamente igual ao polo de G(s). A partir da equao (3.49, vemos
que |G(j1/ )|dB = 20 log K 20 log |1 + j| 20 log K 3. Assim sendo,

|G(j1/ )|dB,ass |G(j1/ )|dB = 3dB.

(3.51)

Com base no exposto acima, podemos propor o seguinte algoritmo para a obteno dos parmetros K e de um sistema de primeira ordem estvel a partir da
sua resposta em frequncia.

60

Captulo 3.

Modelagem e Identicao

Algoritmo 3.7
Entrada

(k , |G(jk )|), k = 1, 2, . . . , p,

Conjunto de pontos

obtidos utilizando o

algoritmo (3.3).

w e gjwdb cujas componentes so, respectivamente,


k e 20 log |G(jk )|, k = 1, 2, . . . , p e represente gracamente esses pontos
(semilogx(w,gjwdb,'+')).

Passo 1 Forme os vetores

Passo 2 Ajuste os pontos de baixa frequncia por uma reta horizontal utilizando

o mtodo dos mnimos quadrados (algoritmo (3.1)) e represente gracamente


essa reta no mesmo grco obtido no passo anterior. Denote esse valor por

Kdb.
Passo 3 Ajuste os pontos denidos pelos vetores

gjwdb

por um polinmio uti-

lizando o mtodo dos mnimos quadrados cujo melhor grau deve ser determinado por tentativa-e-erro da seguinte forma:
3.1 Dena um vetor

ww

de 200 frequncias espaadas logariticamente cujas

primeira e ltima componentes so, respectivamente,


3.2 Escolha um grau

grau

n0

n0

e ajuste os pontos

p .

por um polinmio

de

utilizando o algoritmo (3.1)

gww = polyval(g,ww) e represente esse


nos passos 1 e 2 (semilogx(ww,gww)).

3.3 Calcule

nido

gjwdb

pontos no grco de-

3.4 Se a curva determinada no passo 3.3 for uma boa aproximao para os

pontos representados no passo 1, ento v para o passo seguinte. Caso


contrrio, retorne ao passo 3.2.
Passo 4 Determine a abscissa do ponto pertencente ao grco representado no

passo 3.4 cuja ordenada igual a

Kdb - 3.

Denote a abscissa encontrada por

wc.
Passo 5 Calcule

K = 10Kdb/20

Saida

Ganho

e constante de tempo

= wc.

3.2

Motor CC controlado pela armadura

61

3.2 Modelo matemtico de um motor CC controlado pela armadura


Considere o circuito equivalente de um motor CC controlado pela armadura da
gura 3.2, na qual ia (t) e va (t) denotam, respectivamente, a corrente e a tenso de
armadura, Vf e If representam, respectivamente, a tenso e a corrente de campo
(constantes, por hiptese), (t) a velocidade angular do motor e J e f so o
momento de inrcia da carga e o coeciente de atrito nos mancais, respectivamente.

ia (t)

Ra

La
(t)

va (t)

e(t)
f

Figura 3.2: Circuito equivalente de um motor CC controlado pela armadura

Sabe-se que o torque produzido pelo motor, tm (t), proporcional ao uxo magntico no entreferro ((t)) e corrente de armadura (ia (t)), isto ,

tm (t) = Kf (t)ia (t) = Km ia (t)

(3.52)

em que Km = Kf = Kf K If , com Kf , K e If constantes. Aplicando-se a lei das


tenses de Kirchho ao circuito da armadura, obtm-se:

va (t) = Ra ia (t) + La

d
ia (t) + e(t)
dt

(3.53)

sendo e(t) a fora contra-eletromotriz, que proporcional velocidade angular do


motor, sendo dada por:

e(t) = Ke (t)

(3.54)

62

Captulo 3.

Modelagem e Identicao

Finalmente, usando-se a lei de Newton para o movimento rotacional, pode-se


escrever:
d
(3.55)
tm (t) td (t) f (t) = J (t)
dt
onde td (t) representa um torque externo (perturbao).
As equaes (3.52) a (3.55) nos permitem obter a funo de transferncia que relaciona as transformadas de Laplace da entrada (Va (s)) da sada (W (s)). Para tanto,
aplicando-se a transformada de Laplace a ambos os membros das equaes (3.52) a
(3.55), resulta:

Tm (s) = Km Ia (s)

Va (s) = Ra Ia (s) + La sIa (s) + E(s)


(3.56)
E(s) = Ke W (s)

Tm (s) Td (s) f W (s) = JsW (s)


e aps alguma manipulao algbrica, obtm-se:

W (s) =

Km /(Ra f )
Va (s)
(e s + 1)(m s + 1) + Ke Km /(Ra f )
(e s + 1)/f

Td (s)
(e s + 1)(m s + 1) + Ke Km /(Ra f )

(3.57)

onde e = La /Ra e m = J/f . Note que a funo de transferncia da equao (3.57)


modela o motor CC como um sistema de 2a ordem. Porm, este sistema pode ser

bem aproximado por um modelo de 1a ordem, se levarmos em conta que La /Ra  1

e portanto, e s + 1 1 para as freqncias de interesse. Desta forma, o modelo
matemtico do motor CC que iremos adotar ser o seguinte:

W (s) =

Ka
Kd
Va (s)
Td (s)
s + 1
s + 1

(3.58)

onde Ka = Km /(Ra f +Ke Km ) e Kd = Ra /(Ra f +Ke Km ) e = JRa /(Ra f +Ke Km ).


Para o caso do nosso laboratrio, consideraremos que no existe perturbao
externa e, portanto o torque externo nulo (td (t) = 0). Assim, a equao 3.58 pode
ser simplicada para:
Ka
Va (s).
(3.59)
W (s) =
s + 1
importante ressaltar que a medio da velocidade angular feita por meio de
tacmetros, conforme mostrado na gura 3.3. Um tacmetro nada mais do que

3.2

Motor CC controlado pela armadura


Ra

63

La

va (t)

vt (t)

Figura 3.3: Circuito eltrico equivalente para o motor CC com sensor de velocidade
(tacmetro)

um gerador CC de pequena potncia, cuja tenso gerada constante e proporcional


velocidade do eixo ao qual ele est acoplado. Desta forma, a tenso nos terminais
do tacmetro, vt (t), ser:
(3.60)

vt (t) = Kt (t),

onde Kt uma constante. Portanto, a relao entre Vt (s) e Va (s) pode ser expressa
pela seguinte equao:

Vt (s) =

Ka Kt
Va (s),
s + 1

(3.61)

cujo diagrama de blocos est representado na gura 3.4.

Va (s)

Ka
s+1

W (s)

Kt

Vt (s)

Figura 3.4: Diagrama de blocos representativo do modelo matemtico do motor


CC-tacmetro

64

Captulo 3.

Modelagem e Identicao

3.3 Identicao dos parmetros do motor CC


O modelo matemtico do motor CC dado pela equao 3.61 considera que a planta
seja linear. Entretanto, em geral, isto no sempre verdade para todos os valores
de va (t) e, portanto, os estudantes devem obter a faixa de valores de va (t) para
que o sistema seja linear. Uma vez que a regio linear de operao for denida, os
estudantes podem executar o experimento para determinar os ganhos do sistema e
a constante de tempo.

3.3.1 Identicao da regio linear de operao


A regio linear pode ser determinada da seguinte forma.

Algoritmo 3.8
Passo 1 Aplique uma tenso constante no terminal de armadura

Va

correspondente em regime permanente da tenso do tacmetro


Passo 2 Obtenha o grco

Va Vt

Vt ;

e utilize o mtodo dos mnima quadrados para

ajustar os pontos em um polinmio


Passo 3 Calcule a derivada de

e mea o valor

p(Va )

p(Va )

de ordem desejada;

em relao a

Va .

Portanto, a regio linear

corresponde ao intervalo em que a derivada quase plana.

3.3.2 Identicao de Kt
Para a determinao de Kt , observe a equao (3.60),

vt (t) = Kt (t).

(3.62)

Aplicando um degrau de tenso de amplitude Va nos terminais do motor, isto ,



0, t < 0
va (t) =
(3.63)
Va , t 0
e considere que Va (s) = Va /s, e portanto a equao (3.59) pode ser re-escrita da
seguinte forma:
Ka Va
W (s) =
.
(3.64)
s( s + 1)

3.3

Identicao dos parmetros do motor CC

65

A resposta do sistema entrada descrita em (3.63) pode ser obtida calculandose a transformada inversa de Laplace da equao (3.64). Procedendo desta forma
obtemos:
1
(3.65)
(t) = Ka Va (1 e t ), t 0
Quando t , a equao acima se reduz a (ver equao (3.41))
(3.66)

(t) = W = Ka Va ,

o que mostra que quando uma tenso de valor constante aplicada a um motor CC,
a velocidade angular em regime permanente tambm ser constante e proporcional
ao valor da tenso aplicada.
Portanto, retornando a determinar do ganho do tacmetro Kt , considere a equao (3.62), cujo valor de tenso, em estado permanente, para uma entrada igual ao
degrau de amplitude W dado por:
(3.67)

Vt = Kt W.

Isto sugere que a identicao dos parmetros de Kt pode ser feita pelo ajuste
dos pontos (Wi , Vti ) por uma reta passando pela origem, conforme a gura 3.5.
Portanto, basta um nico procedimento para obter tanto a regio linear de operao
e Kt .

Algoritmo 3.9
Passo 1 Excite o motor CC com tenses constantes e iguais a

Va1 , Va2 , . . ., Van ,

Vt1 , Vt2 , . . . , Vtn , nos terminais


motor W1 , W2 , . . ., Wn (rpm),

e mea os valores de tenso correspondentes,


do tacmetro e as velocidades angulares do
utilizando-se tacmetros digitais pticos.
Passo 2 Utilizando os pontos

(Va1 , Vt1 ), (Va2 , Vt2 ), . . ., (Van , Vtn )

calcule a regio

linear pelo algoritmo 3.8.


Passo 3 Use o mtodo dos mnimos quadrados para ajustar por uma reta passando

pela origem (Vt


3.5).

= Kt W )

aos pontos obtidos no passo anterior (veja gura

66

Captulo 3.

Vtn
..
.
Vt3

Vt
Vtn
..
.
Vt3

Vt2

Vt2

Vt1

Vt1

Vt

W1

W2

W3 Wn

Modelagem e Identicao
Vt = Kt W

W1

(a)

W2

W3 Wn

(b)

Figura 3.5: Representao (a) cartesiana dos pontos (W1 , Vt1 ), (W2 , Vt2 ), . . .,
(Wn , Vtn ) e (b) da reta Vt = Kt W

3.3.3 Identicao de Ka e
Uma vez que se dispe da regio linear e do ganho Kt , o prximo passo a identicao do ganho Ka e da constante de tempo . Denindo K = Ka Kt , ento a equao (3.61) se torna idntica equao (3.39 em que Vt (s) = Y (s) e Va (s) = U (s).
Assim, para a determinao do parmetro Ka basta determinar o valor de K utilizando os algoritmos das sees 3.1.5 e 3.1.6. Os mesmos algoritmos podem ser
usados para a determinao do parmetro , conforme descrito a seguir:
1. Utilizando a resposta ao degrau

Determinao de K : algoritmo 3.4;


Determinao de utilizando os mtodos da rea e do logaritmo neperiano: algoritmos 3.5 e 3.6, respectivamente.
2. Utilizando a resposta em frequncia

Determinao de K e : algoritmo 3.7.

3.4

Experimento para identicao

67

3.4 Experimento para identicao da funo de


transferncia motor CC
Uma vez que j dispomos do modelo matemtico do sistema e do embasamento
terico necessrio para a determinao de seus parmetros, podemos agora descrever os ensaios para obter os dados experimentais necessrios para a identicao os
parmetros da funo de transferncia do motor CC. Este experimento composto,
basicamente de trs partes: (i) excitao do motor CC com tenses constantes com
vistas identicao da regio linear e do ganho Kt ; (ii) excitao do motor CC
com diferentes tenses constantes com vistas identicao Ka e ; (iii) excitao do sistema com sinais senoidais de diferentes freqncias objetivando-se obter
a resposta em freqncia do sistema para que, a partir da curva de mdulo dos
diagramas de Bode identicar Ka e .
No experimento para a identicao da funo de transferncia do motor CC,
sero utilizados os seguintes equipamentos:
1. Osciloscpio digital com, pelo menos, dois canais;
2. Gerador de funes;
3. Fonte de tenso CC (regulvel);
4. Tacmetro ptico;
5. Multmetros digitais (3);
6. Amplicador de potncia;

3.4.1 Experimento para determinao da regio linear e do


ganho Kt
So os seguintes os passos necessrios para a obteno dos dados que levam
determinao da regio linear e do parmetro Kt :
1. Conecte as sadas da fonte de tenso CC aos terminais do motor.
2. Conecte um multmetro sada da fonte de tenso e um outro multmetro
aos terminais do tacmetro.
3. Excite o motor com o primeiro valor de tenso (Va ) sugerido na primeira
coluna da tabela 3.4.1, anotando na segunda coluna o valor da tenso efetivamente aplicada. Em seguida, mea a tenso nos terminais do tacmetro (Vt ) e

68

Captulo 3.

Modelagem e Identicao

a velocidade angular do motor ( ), utilizando um tacmetro ptico, preenchendo,


respectivamente, as colunas 3 e 4 da tabela 3.4.1.
4.

Repita o passo 3 para os demais valores de tenso sugeridos na tabela 3.4.1.

3.4.2 Experimento para determinao do ganho Ka e utilizando resposta ao degrau


Para a obteno da curva de resposta ao degrau do sistema necessrio excitar o
motor com uma degrau de tenso. Os geradores de funes de que o laboratrio
dispe no tm potncia suciente para fazer o motor funcionar. Para superar este
problema, faz-se passar o sinal fornecido pelo gerador de funes por um amplicador de potncia, que fornecer, ento, a potncia necessria para o motor girar.
Com isso em mente, siga os passos seguintes para obter os dados necessrios para
o levantamento da resposta ao degrau do sistema:
Conecte os terminais do gerador de funes aos terminais de entrada do
amplicador de potncia. Em seguida conecte os terminais de sada do amplicador
de potncia aos terminais do motor.
1.

Conecte os terminais de sada do amplicador de potncia ao canal 1 do


digitalizador e os terminais do tacmetro ao canal 2 do digitalizador.
2.

Excite o motor com uma tenso de onda quadrada com dois estgios, um
de valor acima da regio linear e outro de aproximadamente 6, 7, 8V de amplitude.
Em seguida, armazene a resposta v( t) para cada caso.
3.

3.4.3 Experimento para obteno da resposta em freqncia


Para a obteno da curva de resposta em freqncia do sistema necessrio excitar
o motor com uma tenso senoidal. Para tanto, siga os passos seguintes para obter
os dados necessrios para o levantamento da curva de resposta em freqncia do
sistema:
Conecte os terminais do gerador de funes aos terminais de entrada do
amplicador de potncia. Em seguida conecte os terminais de sada do amplicador
de potncia aos terminais do motor.
1.

3.4

Experimento para identicao

Va (V) sugerida
0,0
0,5
1,0
1,5
2,0
2,3
2,6
2,9
3,3
3,6
3,9
4,0
5,0
6,0
7,0
8,0
9,0
10,0
11,0
12,0
13,0
14,0
15,0

Va (V) medida

69

Vt (V) (rpm )

Tabela 3.1: Experimento para determinao do parmetro Kt

70

Captulo 3.

Modelagem e Identicao

Conecte os terminais de sada do amplicador de potncia ao canal 1 do


digitalizador e os terminais do tacmetro ao canal 2 do digitalizador.
3. Encontre qual a menor e a maior frequncia que conseguiremos observar
vt (t) e, em seguida, determine a faixa de frequncia utilizando o comando logspace.
Aps isso, calcule qual seria o perodo de amostragem se quisermos armazenar dois
perodo em 500 pontos para cada frequncia.
4. Excite o motor com uma tenso senoidal de aproximadamente 8V de amplitude, variando a freqncia da tenso senoidal encontrada no item acima.
2.

3.5 Validao do modelo


Tendo sido determinados os parmetros da funo de transferncia do sistema, o
passo seguinte a validao do modelo obtido, i.e , vericar se os valores calculados a partir dos experimentos de identicao so tais que o modelo matemtico
adotado represente, com preciso aceitvel, o sistema real. No caso do motor CC
(sistema adotado para este laboratrio) foram realizados ensaios para se determinar
os parmetros Ka , Kt , K e . Note que:
1. Os ganhos Ka e Kt foram identicados a partir do ajuste dos coecientes angulares de retas de acordo com o algoritmo 3.9. A exatido dos valores encontrados
para Ka e Kt pde ser vericada a partir da comparao com o produto Ka Kt e K .
2. A constante de tempo foi calculada de duas formas: (i) a partir da determinao da freqncia de canto do diagrama de mdulo de Bode e (ii) a partir do
ajuste do diagrama polar de Ka Kt /( s + 1) a um conjunto de pontos obtidos experimentalmente. O valor de ser escolhido a partir de simulaes em computador,
comparando-se os resultados dessas com o desempenho do sistema real.
Assim sendo, para a validao do modelo matemtico do motor CC, dado na
gura 3.4, proceda da seguinte forma:
1 Encontre o erro percentual (EKa Kt (%)) entre os produtos de Ka eKt e de K ,
isto :
Ka Kt K
100(%)
(3.68)
EKa Kt (%) =
Ka K t
Se o erro for menor que 1%, os valores de Ka e Kt obtidos experimentalmente
podem ser adotados como representativos do modelo, com razovel grau de con-

Validao do modelo

3.5

71

ana. Caso o erro seja maior que 1%, deve-se, inicialmente, vericar se os resultados
obtidos nos ensaios de laboratrio foram de fato utilizados no clculo de Ka , Kt
e Ka Kt . Isto permitir que se encontre possveis discrepncias entre os valores
obtidos pelos trs mtodos, evitando que todos os experimentos realizados para a
determinao de Ka , Kt e K tenham que ser realizados novamente. Caso no tenha
sido encontrado qualquer erro de manipulao dos dados, o aluno deve retornar
ao laboratrio para realizar novamente aqueles experimentos cujos valores obtidos
inicialmente apresentam maiores discrepncias.
Excite o motor CC com um degrau de tenso de amplitude igual a 7V e faa
a aquisio dos sinais1 de entrada (va (t)) e de sada (vt (t)) e dos correspondentes
instantes de tempo (t).
2

Com os valores de Ka e Kt , obtidos no passo 1, e com o valor de , obtido a


partir do diagrama de mdulo de Bode, construa um modelo em XCOS equivalente
ao diagrama de blocos representativo motor CC dado pela gura 3.3 no qual o
sinal de entrada ser t va (t) (obtidos no passo 2). Para tanto, crie dois vetores
colunas t e va, cujas componentes so as correspondentes abscissas e ordenadas do
sinal de entrada e utilize o bloco from workspace como entrada, sendo t e va
os parmetros. Realize uma simulao tendo como instantes inicial e nal, t(1)
e t(length(t)), respectivamente. Note que, aps a simulao sero gerados dois
vetores: ts, que corresponde aos instantes de tempo utilizados na simulao e
vts, que corresponde tenso nos terminais do tacmetro para o modelo obtido.
Represente, em um mesmo grco, as curvas t va (t), t vt (t) e ts vt (ts ), onde
ts um intervalo cujos extemos so ts(1) e ts(length(ts).
3(a)

Proceda de forma idntica anterior, porm com o valor de obtido a


partir do ajuste do diagrama polar.
3(b)

Entre as curvas ts vt (ts ) (representadas gracamente nos item 3(a) e 3(b)),


escolha aquela que mais se aproxima da resposta do sistema real tvt (t). O valor de
que corresponde ao modelo que produziu a curva mais prxima ser o escolhido.
3(c)

de se esperar que as curvas obtidas no trabalho de simulao no sejam exatamente coincidentes com as curvas obtidas para o sistema real. Porm, para que o
1 Esta aquisio de dados pode ser feita utilizando-se um computador com placas de aquisio
de dados ou um osciloscpio digital com capacidade de armazenamento em disco.

72

Captulo 3.

Modelagem e Identicao

modelo adotado possa ser considerado satisfatrio, essas curvas devem ser bastante
prximas. Qualquer discrepncia mais acentuada pode desqualicar o experimento
de identicao ou at mesmo o modelo matemtico; por exemplo, levando necessidade de escolha de um modelo no-linear.

Captulo 4
Projeto do controlador de velocidade
Obtido um modelo matemtico para o sistema, o passo seguinte projetar um controlador que satisfaa as seguintes exigncias: (i) estabilidade; (ii) rastreamento
assinttico de um sinal de referncia (i.e. para uma dada velocidade, o motor deve,
em estado permanente, girar nessa velocidade); (iii) rejeio assinttica de perturbaes (i.e. quando uma carga for inserida nos terminais do gerador, o motor,
aps um `pequeno' transitrio, deve permanecer com a mesma rotao de antes
da introduo da carga); (iv) o sistema compensado no deve ter o seu desempenho comprometido por eventuais erros no modelo, cometidos durante a fase de
identicao, o que signica dizer que o sistema tem elevada robustez ou equivalentemente pouca sensibilidade a variaes nos parmetros da funo de transferncia
da planta) e, nalmente, (v) bom desempenho transitrio.
O objetivo deste captulo desenvolver o projeto de um controlador de velocidade para o grupo motor-gerador que satisfaa as condies (i) a (v) acima.
Como nalidade didtica, ser, inicialmente, considerada a possibilidade de se fazer
a compensao em malha aberta para, em seguida, projetar um sistema de controle realimentado. Esta abordagem ter a nalidade de ilustrar os benefcios da
realimentao num sistema de controle.
Este captulo est estruturado da seguinte forma: na seo 4.1 sero apresentados os fundamentos tericos necessrios para o projeto de um controlador que
rastreie assintoticamente um sinal de referncia, R(s), e rejeite (tambm assintoticamente) uma perturbao, D(s), conforme a gura 4.1. Outro tpico a ser abor73

74

Captulo 4.

Projeto do controlador de velocidade


D(s)

R(s)

E(s)
+

K(s)

G(s)

Y (s)

Figura 4.1: Diagrama de blocos para o projeto de controladores com objeticos de


rastreamento assinttico de um sinal referncia e rejeio assinttica de perturbao
dado na seo 4.1 a chamada sensibilidade de um sistema em relao variao
de parmetros da funo de transferncia da planta. Na seo 4.2 ser considerado
o projeto de um controlador que satisfaa as exigncias (i) a (v) . Vale lembrar que
um bom domnio do mtodo do lugar das razes fundamental para o projeto de
compensadores, principalmente no que se refere melhoria da resposta transitria.
Outros conceitos tambm importantes so aqueles refentes resposta transitria de
um sistema de segunda ordem. Caso esses assuntos no estejam bem sedimentados,
os alunos so aconselhados a revis-los.

4.1 Fundamentos tericos


4.1.1 Rastreamento e rejeio assinttica de sinais de dinmica conhecida
Considere o sistema realimentado da gura 4.1 onde, G(s) e K(s) representam as
funes de transferncias da planta e do controlador, respectivamente, sendo

G(s) =

nG (s)
nK (s)
e K(s) =
,
dG (s)
dK (s)

(4.1)

nG (s) e dG (s) so polinmios conhecidos e nK (s) e dK (s) so polinmios a serem


determinados. Sejam R(s), D(s) e Y (s) as transformadas de Laplace dos sinais de

4.1

Fundamentos tericos

75

referncia, de perturbao externa e de sada, onde

R(s) =

(s)
(s)
e D(s) =
,
(s)
(s)

(4.2)

(s) e (s) so polinmios conhecidos (dinmicas de R(s) e D(s), respectivamente),


(s) e (s) so tambm polinmios, porm, como ser visto mais adiante, no so
necessariamente conhecidos.
A partir do diagrama de blocos da gura 4.1, pode-se escrever:
Y (s) = G(s)D(s) + G(s)K(s)R(s) G(s)K(s)Y (s)

(4.3)

e, conseqentemente:

Y (s) =

G(s)
G(s)K(s)
R(s)
D(s).
1 + G(s)K(s)
1 + G(s)K(s)

(4.4)

A partir da equao (4.4), pode-se observar que o sinal de sada Y (s) possui
duas componentes: (i) YR (s), que devida ao sinal de referncia R(s) e (ii) YD (s),
que se deve perturbao externa D(s). Portanto, Y (s) pode ser escrito como:

Y (s) = YR (s) YD (s)


onde

YR (s) =

G(s)K(s)
G(s)
R(s) e YD (s) =
D(s)
1 + G(s)K(s)
1 + G(s)K(s)

(4.5)

(4.6)

O rastreamento e a rejeio de perturbaes externas (assintoticamente) requerem que y(t) r(t) quando t , o que equivale a exigir que

lim yD (t) = 0

(4.7)

lim eR (t) = 0

(4.8)

eR (t) = yR (t) r(t).

(4.9)

e
t

onde
Os problemas do rastreamento assinttico de um sinal de referncia e da rejeio
assinttica de um sinal externo de perturbao (ambos de dinmicas conhecidas)

76

Captulo 4.

Projeto do controlador de velocidade

sero abordados considerando-se as condies impostas pelas equaes (4.7)(4.9),


acima. Antes, porm, considere a seguinte fatorao: seja p(s) um polinmio e
fatore p(s) como p(s) = p (s)p+ (s), onde p (s) um polinmio de Hurwitz cujos
zeros so os zeros de p(s) com parte real negativa e p+ (s) um polinmio cujos zeros
so os zeros de p(s) com parte real positiva ou nula. Por exemplo, o polinmio
p(s) = s3 2s2 3s pode ser fatorado como p (s)p+ (s), onde p (s) = s + 1 e
p+ (s) = s(s 3).
Condies necessrias e sucientes para que o sistema da gura 4.1 rejeite assintoticamente um sinal D(s) = (s)/(s), (s) conhecido, so apresentadas no
seguinte teorema.

Teorema 4.1

Seja K(s) um controlador que estabiliza G(s), isto , K(s) tal


que o sistema realimentado da gura 4.1 estvel e seja D(s) = (s)/(s), (s)
conhecido. Ento
lim yD (t) = 0,
(4.10)
t

isto , o sistema rejeitar assintoticamente o sinal de perturbao d(t), se e somente


se
nG (s)dK (s) = (s) + (s)
(4.11)
onde + (s) um polinmio formado com os zeros de (s) com parte real positiva
ou nula e (s) um polinmio qualquer.

Prova:

Usando as notaes das equaes (4.1) e (4.2), tem-se que, a expresso


(4.6) pode ser escrita como:

YD (s) =

nG (s)dK (s)
(s)
+
[nG (s)dK (s) + dG (S)dK (s)] (s) (s)

(4.12)

Note que

nG (s)dK (s) + dG (S)dK (s) = pC (s),

(4.13)

onde pC (s) denota o polinmio caracterstico de malha fechada. Como, por hiptese,
K(s) estabiliza G(s) ento pC (s) um polinmio de Hurwitz e, portanto,

lim yD (t) = lim sYD (s) = 0

s0

(4.14)

4.1

Fundamentos tericos

77

se e somente se + (s) for um divisor de nG (s)dK (s), ou equivalentemente, se existir


um polinmio (s) tal que nG (s)dK (s) = (s) + (s)

0 teorema 4.1 acima mostra que para que haja rejeio assinttica de um sinal
externo de perturbao aplicado na entrada da planta, as dinmicas desse sinal
que possuem parte real positiva ou nula devem ser zeros da planta ou plos do
controlador. Vale ressaltar que, somente em casos especiais, essas dinmicas sero
tambm zeros da funo de transferncia da planta e portanto, para se conseguir a
rejeio assinttica de um sinal de perturbao, mais comum fazer com que essas
dinmicas sejam tambm plos do controlador, isto ,

K(s) =

1
+ (s)

K(s)

(4.15)

onde K(s)
=n
K (s)/dK (s), n
K (s) e dK (s) sero escolhidos de tal forma que nG (s)
nK (s)+
+

dG (s)dK (s) (s) seja um polinmio de Hurwitz.


Uma vez obtida uma condio necessria e suciente para a rejeio assinttica
de um sinal externo de perturbao, o passo seguinte considerar o problema do
rastreamento assinttico de um sinal de referncia. A abordagem deste problema
feita de forma anloga anterior, levando condio necessria e suciente do
teorema seguinte.

Teorema 4.2

Seja K(s) um controlador para o qual o sistema realimentado da


gura 4.1 seja estvel e assuma que a transformada de Laplace do sinal de referncia
r(t) R(s) = (s)/(s), (s) conhecido. Ento

lim eR (t) = 0,

(4.16)

isto , y(t) rastreia assintoticamente r(t), se e somente se

dG (s)dK (s) = (s) + (s)

(4.17)

onde + (s) um polinmio formado com os zeros de (s) com parte real positiva
ou nula e (s) um polinmio qualquer.

78

Prova:

Captulo 4.

Projeto do controlador de velocidade

A partir das equaes (4.6) e (4.9), pode-se escrever:

ER (s) = R(s) YR (s)


1
=
R(s)
1 + G(s)K(s)

(4.18)

e usando a notao da equao (4.1) tem-se:

ER (s) =

dG (s)dK (s)
(s)
.
+
[nG (s)nK (s) + dG (s)dK (S)] (s) (s)

(4.19)

Como, por hiptese, G(s) estabiliza K(s), ento pc (s) = nG (s)nK (s) + dG (s)dK (s)
um polinmio de Hurwitz e, portanto,

lim eR (t) = lim sYR (s) = 0

(4.20)

se e somente se dG (s)dK (s) for mltiplo de + (s), ou equivalentemente, se existir


um polinmio (s) tal que dG (s)dK (s) = (s) + (s).

De acordo com o teorema 4.2, para que haja rastreamento assinttico de um sinal
de referncia, as dinmicas desse sinal com parte real positiva ou nula devem ser
plos do controlador ou da planta. Observe que, somente em casos muito especiais
haver coincidncia dos plos da planta com essas dinmicas. Portanto, de uma
forma geral, o rastreamento assinttico ser obtido fazendo-se:

K(s) =

1
+ (s)

K(s)

(4.21)

onde K(s)
=n
K (s)/dK (s), n
K (s) e dK (s) sero tais que nG (s)
nK (s)+dG (s)dK (s) + (s)
seja estvel.
Finalmente, note que os objetivos de rastreamento assinttico de um sinal de
referncia R(s) = (s)/[ (s) + (s)] e a rejeico assinttica de um sinal externo de
perturbao D(s) = (s)/[ + (s) (s)] sero, em geral, atingidos simultaneamente,
com um mesmo controlador, fazendo-se

K(s) =

1
mmc[ + (s), + (s)]

K(s)

(4.22)

4.1

Fundamentos tericos

79

onde mmc[ + (s), + (s)] denota o mnimo mltiplo comum de + (s) e + (s) e K(s)
=
n
K (s)/dK (s), com n
K (s) e dK (s) sendo calculados de forma que
pC (s) = nG (s)
nK (s) + dG (s)dK (s)mmc[ + (s), + (s)]

(4.23)

seja um polinmio de Hurwitz.

Exemplo 4.1:

Suponha que para o sistema realimentado da gura 4.1, R(s) =


A/s e D(s) = B/s, onde A, B R so as amplitudes dos degraus de referncia
e de perturbao, respectivamente. Portanto, para que sejam atingidos, simultaneamente, os objetivos de rastreamento assinttico de r(t) e rejeio, tambm
assinttica, de d(t), o controlador deve possuir ao integral, isto ,

1
(4.24)
K(s) = K(s)
s

K(s)
sendo calculado de tal sorte que o sistema realimentado seja estvel com bom
desempenho transitrio. Guarde bem este resultado! Ele ser importante quando
do projeto de um controlador de velocidade para o grupo motor-gerador.

4.1.2 Sensibilidade
A sensibilidade de um sistema est associada no manuteno do desempenho e
da estabilidade em presena de variaes nos parmetros da planta. Essas variaes so, em geral, devidas a: (i) erros de identicao da funo de transferncia
do sistema, uma vez que os valores dos parmetros, obtidos a partir da identicao, jamais representaro exatamente o sistema real e (ii) envelhecimento dos
componentes do sistema. Desta forma, importante analisar como o sistema ir
se comportar em presena de tais variaes (comumente denominadas de incertezas
no modelo), seja no que se refere ao desempenho do sistema compensado, ou com
relao manuteno da estabilidade.
A sensibilidade de um sistema em relao variao em um determinado elemento quanticada pela razo entre a variao percentual da funo de transferncia do sistema e a variao percentual da funo de transferncia do elemento
considerado, i.e.,
T (s)
100%
T (s)
T
SG (s) = G(s)
(4.25)
100%
G(s)

80

Captulo 4.

Projeto do controlador de velocidade

onde T (s) representa a funo de transferncia global do sistema e G(s) a funo de


transferncia do elemento considerado (em geral, a planta). A implicao imediata
T
da equao (4.25) acima que, quo mais perto de 1 for SG
, mais sensvel a variaes
nos parmetros de G(s) ser o sistema como um todo. Observe que a equao (4.25)
pode ser escrita como:
T (s) G(s)
(4.26)
SGT (s) =
G(s) T (s)
e, portanto, quando G(s) 0 tem-se que T (s) 0 e conseqentemente,

G(s) T (s)
.
(4.27)
T (s) G(s)
A reduo da sensibilidade do sistema variao dos parmetros da funo de
transferncia da planta uma das razes para se usar a realimentao. Este fato
ser evidenciado no exemplo seguinte.
SGT (s) =

Exemplo 4.2:

Sejam os sistemas em malha aberta e fechada representados na


T
para ambos os casos.
gura 4.2. Calcule SG
Consideremos inicialmente o sistema em malha aberta. Neste caso T (s) =
G(s)K(s) e, portanto:
G T
G
SGT =
=
K=1
(4.28)
T G
GK
que revela que qualquer erro de identicao ou variao nos parmetros de G(s)
ir implicar num erro, de mesma magnitude na funo de transferncia (e por
conseginte, no desempenho) do sistema como um todo.
Para o sistema em malha fechada, tem-se que T (s) = G(s)K(s)/[1 + G(s)K(s)],
e ento:
G T
SGT =
T G
1 + GK (1 + GK)K GK 2
= G
GK
(1 + GK)2
1
=
(4.29)
1 + GK
Suponha que K(s) estabiliza o sistema da gura 4.2(b) ento, para uma dada
T
freqncia 0 , SG
ser reduzida de 1 (sistema em malha aberta) para
1
,
(4.30)
| SGT (j0 ) |=
| 1 + G(j0 )K(j0 ) |

4.1

Fundamentos tericos

R(s)

81

K(s)

G(s)

Y (s)

(a)

R(s)
+

K(s)

G(s)

Y (s)

(b)

Figura 4.2: Diagrama de blocos:


mentado

(a)

sistema em malha aberta;

(b)

sistema reali-

que menor que 1, evidenciando o benefcio da realimentao no que se refere


diminuio da sensibilidade do sistema variao nos parmetros de G(s).


4.1.3 Complementos
(a) Compensao em malha aberta
Suponha que se deseje fazer uma compensao em malha aberta conforme o diagrama de blocos da gura 4.3 e seja K(s) = Kp . Nessas condies:
(1) Para quais valores de Kp , o sistema ser estvel?
(2) Entre os valores de Kp que tornam o sistema estvel, encontre aquele que
faz com que o sistema tenha um erro de regime permanente nulo para uma entrada
igual ao degrau de amplitude Vr .

(b) Compensao em malha fechada (controlador integral)


Suponha, agora, que o objetivo seja projetar um sistema de controle realimentado
para o sistema, conforme o diagrama de blocos da gura 4.4. Conforme visto

82

Captulo 4.

Projeto do controlador de velocidade

Ig
Kg

Vtr (s)

K(s)

Va(s)

Ka

1
s+1

Kt

Vt(s)

Figura 4.3: Diagrama de blocos para o sistema em malha aberta

Ig

Vtr (s)

K(s)

Va(s)
K

Kt
s+1

Vt(s)

Figura 4.4: diagrama de blocos para o sistema realimentado


na seo 4.1.1, exemplo 4.1, a estrutura mais simples para K(s) de tal sorte que
o sistema realimentado rastreie e rejeite assintoticamente um degrau K(s) =
KI /s, onde KI calculado para que o sistema realimentado seja estvel e com
bom desempenho transitrio. Construa o grco do lugar das razes do sistema e
responda:
(1)

Para quais valores de KI , o sistema realimentado ser estvel?

Para quais valores de KI , o sistema realimentado ser: (i) superamortecido; (ii) criticamente amortecido; (iii) sub-amortecido e (iv) subamortecido com
percentual menor ou igual a 5%.
(2)

4.2

Projeto do controlador de velocidade

83

(c) Compensao em malha fechada (controlador proporcional + integral)


Seja, agora




s+z
z
1
K(s) = Kp
= Kp 1 +
= Kp 1 +
s
s
Ti s

(4.31)

onde Ti = 1/z , Kp e z > 1/ a serem determinados. Esboce o grco do lugar das


razes do sistema realimentado da gura 4.4 com o controlador (4.31) e responda:
(1)

Para quais valores de Kp , o sistema realimentado ser estvel?

Para qual valor de Kp , os plos do sistema realimentado sero complexos e


com parte real igual a 1/ ?
(2)

4.2 Projeto do controlador de velocidade


Como o objetivo do sistema de controle a ser aqui desenvolvido controlar a velocidade de rotao do motor, isto , mant-la em um determinado valor, natural
considerar como sinal de referncia um degrau de amplitude Vr Volts, isto :


vtr (t) =

Vr (V ), t 0
0, t < 0

(4.32)

Note que est implcito no objetivo de rastreamento do sinal vr (t), a necessidade do


sistema ser estvel. Alm desses objetivos (estabilidade e rastreamento assinttico
do sinal de referncia) o sistema deve:
1. Rejeitar sinais de perturbao, que podem ser modelados como degraus de
amplitude Ig Ampres, isto :


ig (t) =

Ig (A), t t0
0, t < t0

(4.33)

onde, t0 0.
2. Baixa sensibilidade a erros de identicao dos parmetros do modelo do
grupo motor gerador.

84

Captulo 4.

Projeto do controlador de velocidade

3. Bom desempenho transitrio. Como se trata de uma planta didtica, o desempenho do sistema ser denido unicamente um termos do tempo de acomodao da resposta ao degrau do sistema em malha aberta.
sabido que os objetivos de um sistema de controle somente sero alcanados
com sistemas realimentados. Porm, como forma de ilustrar os benefcios da realimentao, iremos, inicialmente, considerar a possibilidade de se usar um controle
em malha aberta e, em seguida, projetar um sistema de controle realimentado.

4.2.1 Sistema de controle em malha aberta


A partir do diagrama de blocos da gura 4.3 pode-se escrever:

Vt (s) =

K
K
K(s)Vtr (s)
Ig (s).
s + 1
s + 1

(4.34)

fcil vericar que o sistema de controle em malha aberta ser estvel se e somente
se K(s) for estvel. Como, por simplicidade foi adotado como satisfatrio o tempo
de acomodao do sistema sem compensao, pode-se utilizar um controlador esttico, isto :
K(s) = KP
(4.35)
onde KP deve ser determinado de acordo com a seo 4.1.3(a) de tal sorte que, em
regime permanente, vt (t) = Vr .
Uma vez obtido KP , o passo seguinte fazer a anlise do desempenho do sistema
compensado, utilizando o XCOS. Para tanto, construa um modelo, em XCOS,
equivalente ao diagrama de blocos da gura 4.3. Em seguida, tendo 0s e 2s como
instantes inicial e nal de simulao, proceda seguinte simulao:
1. Para uma corrente ig (t) = 0 (A), aplique um degrau de amplitude igual a
10 V com incio em t = 0s. Em seguida, encontre o erro de estado permanente
e o valor do tempo de acomodao (ts ) da resposta.
2. Suponha, agora, que tenha havido um erro de 10% na identicao de Ka , isto
Ka
= 0, 9Ka . Ainda com ig (t) = 0 (A), aplique um degrau de amplitude
real
igual a 10 V com incio em t = 0s e encontre o erro de estado permanente.

4.2

Projeto do controlador de velocidade

85

3. Retorne Ka ao valor obtido na identicao e, em seguida, aplique simultaneamente as entradas vtr (t) e ig (t), ambas degraus, com amplitudes respectivamente iguais a 10 V e 0, 450 A e incios em t = 0 e t = 1 s (s). Realizada a
simulao, encontre o erro de regime permanente.

4.2.2 Sistema de controle com realimentao


Voc deve ter observado que nas simulaes 2 e 3 realizadas na seo anterior,
o erro de regime permanente foi diferente de zero, isto , o sistema compensado
em malha aberta no foi capaz de rejeitar um sinal externo de perturbao e foi,
tambm, sensvel a erros de identicao. A realimentao surge, ento, como a
nica alternativa para superar essas limitaes do controlador em malha aberta.
Conforme visto no exemplo 4.1, para que o sistema realimentado seja capaz de
rastrear assintoticamente um degrau e rejeitar, tambm assintoticamente, sinais
externos de perturbao do tipo degrau, o controlador deve ser dinmico e, mais
crucial ainda, ter um plo em s = 0. Portanto, a forma mais simples para esse
controlador o tipo integral (I), sendo dado por:

K(s) =

KI
s

(4.36)

onde KI deve ser calculado de tal forma que o sistema realimentado seja estvel
com desempenho transitrio satisfatrio, isto , que satisfaa as especicaes de
desempenho. Lembre-se de que, no presente caso, requer-se que o tempo de acomodao da resposta ao degrau para o sistema realimentado seja aproximadamente
igual ao do sistema em malha aberta.
Para vericar os benefcios da introduo da realimentao acrescida de uma
compensao dinmica, vamos inicialmente considerar os seguintes casos: (i) sistema realimentado criticamente amortecido e (ii) sistema realimentado subamortecido com percentual de ultrapassagem menor ou igual a 5%. Para tanto, proceda
da seguinte forma:
1. Calcule o valor de KI de tal forma que o sistema realimentado seja criticamente amortecido.

86

Captulo 4.

Projeto do controlador de velocidade

2. Com o valor de KI , calculado no item anterior, e com os valores de K , Kt , K


e , identicados para o grupo motor-gerador, construa um modelo em XCOS
equivalente ao diagrama de blocos da gura 4.4 e ajuste os tempos inicial e
nal de simulao em 0 e 2s, respectivamente.
3. Para uma corrente ig (t) = 0 (A), aplique um degrau de amplitude igual a
10 V com incio em t = 0s. Em seguida, encontre o erro de estado permanente
e o valor do tempo de acomodao (ts ) da resposta.
4. Suponha, agora, que tenha havido um erro de 10% na identicao de Ka , isto
Ka
= 0, 9Ka . Ainda com ig (t) = 0 (A), aplique um degrau de amplitude
real
igual a 10 V com incio em t = 0s e encontre o erro de estado permanente.
5. Retorne Ka ao valor obtido na identicao e, em seguida, aplique simultaneamente as entradas vtr (t) e ig (t), ambas degraus, com amplitudes respectivamente iguais a 10 V e 0, 450 A e incios em t = 0 e t = 1 s (s). Realizada a
simulao, encontre o erro de regime permanente.
6. Calcule, agora, o valor de KI de tal forma que o sistema realimentado seja
subamortecido com percentual de ultrapassagem menor ou igual a 5%.
7. Repita os itens 2 a 5, acima.
O aluno deve ter observado nas simulaes realizadas que o sistema realimentado
com o controlador integral, em ambos os casos (criticamente amortecido e subamortecido com percentual de ultrapassagem menor ou igual que 5%), eliminou a sinal
externo de perturbao e teve erro de regime permanente nulo, mesmo quando se
sups um erro de 10% no ganho da funo de transferncia da planta. Contudo, o
tempo de acomodao da resposta ao degrau para o sistema realimentado , para
ambos os casos, o dobro do tempo de acomodao da resposta ao degrau do sistema
em malha aberta. Para se justicar esse fato, construa o diagrama do lugar das
razes do sistema realimentado para K(s) = KI /s e, a partir do valor da parte
real dos plos, mostre que, de fato, o tempo de acomodao da resposta ao degrau
deveria ser o dobro daquele obtido para o sistema em malha aberta.

4.3

Comentrios nais

87

Assim sendo, para que o desempenho do sistema realimentado seja aproximadamente igual ao do sistema em malha aberta, os plos de malha fechada devem
ter parte real aproximadamente igual a 1/ (plo da planta). Isto implica que
o diagrama dos lugar das razes deve se deslocar para a esquerda e, para tanto,
necessrio que exista um zero igual a z (z > 0) esquerda de 1/ . Portanto,
K(s) deve ter a seguinte forma:



z
1
Kp (s + z)
= Kp 1 +
= Kp 1 +
(4.37)
K(s) =
s
s
Ti s
onde Ti = 1/z . Note, pela equao 4.37 acima, que a introduo do zero no controlador equivale a dot-lo de ao proporcional, resultando num controlador PI.
Finalmente, para vericar se tal controlador, de fato, tornou o sistema realimentado mais rpido, proceda da seguinte forma:
1. Calcule o valor de Kp e Ti de tal sorte que os plos do sistema realimentado
tenham parte real igual a 1/ .
2. Substitua a funo de transferncia do bloco referente ao controlador pela
equao 4.37, com os valores de Kp e Ti calculados no item anterior.
3. Para uma corrente ig (t) = 0 (A), aplique um degrau de amplitude igual a 10 V
com incio em t = 0s. Em seguida, encontre o valor do tempo de acomodao
(ts ) da resposta.

4.3 Comentrios nais


Uma vez obtida uma funo de transferncia para o controlador, o passo nal a
sua implementao no sistema real. A implementao da funo de transferncia
4.37 pode ser feita utilizando dispositivos eletrnicos analgicos ou digitais. Neste
laboratrio utilizar-se- um controlador analgico, deixando o controlador digital
para um laboratrio futuro. A implementao do controlador no sistema real ser
o assunto do prximo captulo.

88

Captulo 4.

Projeto do controlador de velocidade

Captulo 5
Implementao do controlador de
velocidade
Neste captulo trataremos da implementao do controlador projetado no captulo
anterior. Como se trata de um laboratrio para um primeiro curso de Sistemas
de Controle, ser desenvolvido um controlador analgico, em cuja construo sero
utilizados amplicadores operacionais1 . Esses amplicadores, pelas suas caractersticas de resposta e preo, so frequentemente utilizados na implementao de
controladores analgicos.
Antes de entrarmos na implementao do controlador faremos um breve estudo
introdutrio sobre amplicadores operacionais. Neste estudo no consideraremos
detalhes construtivos (que geralmente feito nos cursos de Eletrnica), nos preocupando somente com os aspectos externos do dispositivo e com as suas caractersticas
que, quando exploradas, nos permitiro construir circuitos que tenham um determinado comportamento. Isso ser realizado na seo 5.1. Caso o aluno j possua
conhecimentos sucientes desse assunto, pode omitir esse estudo e caso o aluno
deseje obter maiores detalhes sobre teoria e prtica de amplicadores operacionais
deve consultar [6]. Dotado dos fundamentos necessrios utilizao dos amplicadores operacionais, o passo seguinte ser a construo de um circuito eletrnico
para o controlador, o que ser feito na seo 5.2.
1 Este mesmo controlador poderia ser implementado digitalmente, isto , utilizando-se computadores digitais.

89

90

Captulo 5.

1
2
3
4
5
6
7
8

Implementao do controlador

NC (no conectar)
Entrada inversora
Entrada no inversora
Tenso de polarizao (Vcc )
NC
Sada
Tenso de polarizao(+Vcc )
NC

Figura 5.1: Representao esquemtica de um amplicador operacional

5.1 Amplicadores Operacionais


5.1.1 Conceitos bsicos
Amplicadores operacionais so amplicadores que tm elevado ganho e so geralmente utilizados para amplicar sinais que se estendem sobre uma ampla faixa de
frequncias. Na gura 5.1 est representado um amplicador operacional de oito
pinos, com as respectivas indicaes das conexes que devem ser efetuadas em cada
um dos seus terminais e, na gura 5.2, o smbolo mais comumente adotado para
represent-lo em um circuito. Observe na gura 5.1 o chanfro na parte esquerda
do retngulo. Esse chanfro utilizado nos circuitos integrados encapsulados para
servir como referncia para a numerao dos pinos. Note, ainda na gura 5.1, a
necessidade das tenses externas de polarizao (VCC ), que so devidas ao fato
dos amplicadores operacionais serem, na verdade, circuitos integrados construdos
com diversos estgios de transistores, que devem, portanto, ser polarizados.
A maioria dos amplicadores operacionais possui dois terminais de entrada e um
terminal de sada, conforme representado na gura 5.2. A entrada (-) denominada
inversora enquanto a entrada (+) 'e chamada no- inversora. Isto faz com que esses
amplicadores sejam conhecidos como diferenciais, uma vez a tenso de sada
proporcional diferena entre as tenses aplicadas nos seus terminais de entrada.
Utilizando-se a notao da gura 5.2, essa caracterstica matematicamente descrita
pela seguinte equao:

v0 = A(v2 v1 )

(5.1)

5.1

Amplicadores Operacionais

91

v1 (t)

v0 (t)
v2 (t)

v0 (t) = A(v1 v2 )
Figura 5.2: Simbologia adotada para amplicadores operacionais
onde A o ganho de malha aberta (A > 45.000), sendo denido pelos transistores
internos do amplicador. Usualmente, na prtica, este ganho considerado innito
(A ). Outras caractersticas, geralmente adotadas na prtica so: (i) v0 = 0
quando v1 = v2 (tenso `oset' de entrada nula); (ii) impedncia de entrada innita,
que permite baixa ou nenhuma interferncia com os elementos colocados em cascata
no circuito (Zin = ); (iii) impedncia de sada nula (Zout = 0); (iv) largura
de faixa innita; e (v) atraso de resposta nulo. Na tabela 5.1 so mostrados os
valores reais de algumas dessas grandezas para os amplicadores operacionais 741
e LF356. importante ressaltar que o valor da impedncia de entrada para o
LF356 'e aproximadamente 1012 , isto , praticamente innita2 . Em face disso,
o LF356 ser utilizado na implementao do controlador de velocidade do grupo
motor-gerador.

5.1.2 Conguraes bsicas


A congurao em malha aberta da gura 5.2 raramente utilada. Ao se construir
um circuito utilizando um amplicador operacional so geralmente utilizados outros
elementos de circuitos (resistores, capacitores, indutores, etc) para formar redes de
realimentao. Essas conguraes faro com que o novo circuito tenha caracte2 A razo dessa elevada impedncia de entrada reside no fato desse amplicador ser construdo
com transistores de efeito de campo.

92

Captulo 5.

Ganho de malha aberta (V /mV )


Tenso `oset' de entrada (mV )
Impedncia de entrada (M )
Tenso de polarizao (V )
Banda passante (M Hz )
Corrente de sada mxima (mA)

Implementao do controlador
741
200
2
2
15
1
5

LF356
200
3
106
15
1
5

Tabela 5.1: Caractersticas dos amplicadores operacionais 741 e LF356


rsticas diferentes daquelas do amplicador em malha aberta, como por exemplo:
modicaes do ganho, da resposta em freqncia e a possibilidade de se efetuar
operaes matemticas como soma, integrao, derivao e etc. Algumas dessas
conguraes so apresentadas a seguir:

Circuito inversor
Considere o circuito da gura 5.3. Aplicando-se a lei das correntes de Kirchho ao
n 1 e lembrando que, como o amplicador operacional tem impedncia de entrada
innita, a corrente que ui para a entrada inversora nula, pode-se escrever:

ei (t)es (t)
Ri

eo (t)es (t)
Rf

=0

eo (t) = Aes (t) (A )

(5.2)

Substituindo es (t) = eo (t)/A na primeira equao, resulta:

ei (t)
1
Ri Rf
+ eo (t)(
+
+
) = 0.
Ri
Rf
A
A

(5.3)

Finalmente, fazendo A , obtm-se:

eo (t) =

Rf
ei (t)
Ri

(5.4)

As seguintes observaes podem ser feitas a partir da equao 5.4 acima: (i) o
ganho no mais determinado pelo amplicador e sim pelos elementos externos Ri

5.1

Amplicadores Operacionais

93

Rf

Ri
6

es (t)

6
6

ei (t)
eo (t)

Figura 5.3: Circuito inversor


e Rf ; (ii) quando o sinal de entrada for limitado, isto , |e1 (t)| < Ei , tem-se que
|e0 (t)| < (Rf /Ri )Ei = E0 e, portanto limitado. Como A , resulta:

|es (t)| =

|e0 (t)|
0.
A

(5.5)

Por essa razo, os terminais referentes s entradas inversora e no-inversora so


dito estarem em terra virtual, isto , para efeitos de anlises de redes contendo
amplicadores, es (t) pode ser feito identicamente nulo.

Circuito no-inversor
Considere agora o circuito da gura 5.4(a), que difere do circuito inversor da gura
5.3 principalmente pelo fato do sinal externo ei (t) estar agora conectado entrada
no-inversora. Aplicando a lei das correntes de Kirchho ao n 1 e levando em
conta os fatos de que a corrente que entra no amplicador operacional nula e que
os terminais + e esto em terra virtual pode-se escrever:

ei (t) ei (t) eo (t)


+
= 0.
Ri
Rf

(5.6)

94

Captulo 5.

Implementao do controlador

Rf
Ri
1
6

ei (t)

eo (t)

ei (t)

(a)

Figura 5.4:

(a)

eo (t)

(b)

Circuito no-inversor;

(b)

Seguidor de tenso

Aps algumas manipulaes algbricas simples, obtm-se:

eo (t) =

Rf + Ri
ei (t)
Ri

(5.7)

Note, na equao 5.7 acima que o ganho de malha fechada ser sempre maior ou
igual a 1 e , mais uma vez, determinado por Ri e Rf . Observe ainda que, se Rf
feito igual a zero (curto-circuito) e Ri = (circuito aberto), conforme mostrado
na gura 5.4(b), tem-se que o ganho ser exatamente igual a 1. Nesse caso, o
amplicador atua como um `seguidor de tenso', isto , a tenso de sada segue
exatamente a tenso de entrada. A congurao de seguidor de tenso largamente
utilizada para prover isolamento entre os sinais da fonte e da carga, evitando assim
interaes indesejveis.

Circuito comparador
Uma das maneiras de se fazer a comparao entre dois sinais utilizando-se o
circuito da gura 5.5. Aplicando-se a lei das correntes de Kirchho ao n A e
lembrando que os pontos A e B tm o mesmo potencial (terra virtual), pode-se
escrever:

3
eB (t) = eA (t) = R2R+R
e2 (t)
3
(5.8)
e1 (t)eB (t) + eo (t)eB (t) = 0.
R1
Rf

5.1

Amplicadores Operacionais

95

Rf
R1
6

R2
e1 (t)

e2 (t)

6
6

vB (t)

R3

eo (t)

Figura 5.5: Circuito comparador genrico


Aps algumas manipulaes algbricas elementares, obtm-se:

eo (t) =

R3 (R1 + Rf )
Rf (R2 + R3 )
e1 (t) +
e2 (t).
R1 (R2 + R3 )
R1 (R2 + R3 )

(5.9)

Finalmente, fazendo R1 = R2 = R3 = Rf = R na equao 5.9 acima, resulta:

eo (t) = e2 (t) e1 (t).

(5.10)

Deve ser ressaltado que, na prtica, quase impossvel ter quatro resistores de
valores exatamente iguais e, portanto, a igualdade (5.10) no pode, a princpio, ser
implementada sicamente. Este problema pode ser superado inserindo-se potencimetros de valores R10 , R20 , R30 e Rf0 em srie com os resistores R1 , R2 , R3 e Rf . Esses
potencimetros devem ser ajustados de tal sorte que R1 +R10 = R2 +R20 = R3 +R30 =
Rf + Rf0 . Para se vericar de que a igualdade (5.10) est sendo vericada (a menos
de um `oset'), aplica-se sinais iguais em e1 (t) e e2 (t) e mede-se o sinal eo (t), que
nesse caso deve ser aproximadamente igual a zero (a menos de um `oset').

Circuito integrador
O circuito da gura 5.6(a) representa uma maneira de se calcular analogicamente
a integral de um sinal. Pode-se mostrar que a funo de transferncia do circuito

96

Captulo 5.

Implementao do controlador
Cf

Cf
Ri

Rf

Ri

ei (t)

eo (t)

ei (t)

eo (t)

(a)

(b)

Figura 5.6: Circuitos integradores:


dada por:

(a)

ideal;

1
Eo (s)
=
Ei (s)
Ri Cf s

e, portanto,

1
eo (t) =
Ri Cf

(b)

prtico.

(5.11)

ei ()d.

(5.12)

A realimentao composta unicamente por um capacitor torna a congurao da


gura 5.6(a) bastante sensvel para alguns amplicadores operacionais (inclusive o
741), o que torna a sua implementao problemtica. Para solucionar este problema,
introduz-se um resistor em paralelo com o capacitor, conforme representado na
gura 5.6(b). Neste caso, a funo de transferncia do sistema passa a ser a seguinte:

Eo (s)
Rf
1
=
Ei (s)
Ri Rf Cf s + 1

(5.13)

cujas assntotas do diagrama de mdulo de Bode esto representadas na gura 5.7.


Note que aumentando-se o valor do resistor Rf , o plo 1/Rf Cf se aproxima de zero
ao mesmo tempo em que o ganho DC torna-se cada vez maior. Nestas condies, a
resposta em freqncia do sistema assemelha-se cada vez mais de um integrador
ideal e, portanto, o circuito da gura 5.6(b) pode ser usado com razovel preciso
para se efetuar a integrao de um sinal.

5.1

Amplicadores Operacionais

97

(j)
| EEoi (j)
|dB

20 log

Rf
Ri

(log)
1/Rf Cf
Figura 5.7: Assntotas do diagrama de mdulo de Bode para o circuito integrador
prtico da gura 5.6(b)

Rf

Rf

Ci

Ri

Ci

ei (t)

eo (t)

ei (t)

eo (t)

(a)

(b)

Figura 5.8: Circuitos derivadores:

(a)

ideal;

(b)

prtico

Circuito derivador
A derivao de um sinal analgico pode ser feita idealmente utilizando-se o circuito
da gura 5.8(a). Para esse circuito, tem-se que:

eo (t) = Rf Ci

d
ei (t).
dt

(5.14)

A utilizao desse circuito como um derivador pode trazer srios problemas no


que se refere a sinais com componentes de freqncias muito altas, uma vez que tais
sinais seriam amplicados por valores innitos (pelo menos teoricamente). Para
solucionar este problema, faz-se uso do circuito da gura 5.8(b), cuja funo de

98

Captulo 5.

Implementao do controlador

(j)
| EEoi (j)
|dB

20 log

Rf
Ri

(log)
1/Ri Ci
Figura 5.9: Assntotas do diagrama de mdulo de Bode para o circuito derivador
prtico da gura 5.8(b)
transferncia dada por:

sRf Ci
Eo (s)
=
,
Ei (s)
Ri Ci s + 1

(5.15)

cujas assntotas do diagrama de mdulo de Bode esto representadas na gura 5.9.


Note que, diminuindo Ri , o plo 1/Ri Ci se afasta cada vez mais de zero, fazendo
com que o ganho de alta freqncia aumente, o que torna a resposta em freqncia
desse sistema mais prxima daquela de um derivador ideal. Assim sendo, o circuito
da gura 5.8(b) pode ser utilizado para se efetuar a derivao de um sinal.

Um circuito para controladores PID


Um circuito cuja sada eo (t) proporcional entrada ei (t), sua integral e sua
derivada, isto ,


Z
1 t
d
eo (t) = Kp ei (t) +
ei ()d + Td ei (t)
(5.16)
Ti 0
dt
est representado na gura 5.10. Pode-se mostrar que

Rf
Ri
= Ri Ci

Kp =
Td

Ti = Rf Cf .
para Ti >> Td .

(5.17)

5.2

Controlador automtico de velocidade

99

Rf

Cf

Ri

Ci

ei (t)

eo (t)

Figura 5.10: Circuito para controladores PID

VtR (s)
+

K(s)

G(s)

Vt (s)

Figura 5.11: Diagrama de blocos correspondente ao sistema de controle do grupo


motor-gerador
Em geral, os valores de Kp , Ti e Td so determinados durante a fase de projeto
do controlador. O problema passa, ento, a ser o de encontrar Ri , Rf , Ci e Cf de
tal forma que o circuito do controlador PID tenha valores de Kp , Ti e Td o mais
prximo possvel dos valores calculados teoricamente. Para tanto, deve-se resolver o
sistema de trs equaes e quatro incgnitas (5.17). O nmero maior de incgnitas,
faz com que a escolha dos valores das capacitncias e resistncias no seja nica, o
que bom do ponto de vista prtico, uma vez que pode-se `jogar' com os capacitores
e resistores disponveis no laboratrio.

5.2 Controlador automtico de velocidade


Aps a breve introduo sobre amplicadores operacionais apresentada na seo
anterior, estamos em condies de construir um circuito eletrnico analgio para o

100

Captulo 5.

vtR (t)

Implementao do controlador
vt (t)

Figura 5.12: Representao esquemtica do sistema de controle de velocidade do


grupo motor-gerador
controlador de velocidade do grupo motor-gerador. O diagrama de blocos para o
sistema est representado na gura 5.11, onde G(s) representa a funo de transferncia da planta e


s+z
1
K(s) = Kp
= Kp 1 +
(5.18)
s
Ti s
onde os valores de Kp e Ti foram determinados ao nal do captulo 4.
A partir do diagrama da gura 5.11, v-se que a implementao do sistema de
controle requer a construo de um circuito comparador e de um circuito para o
controlador PID. Em princpio, nenhum outro elemento seria necessrio e bastaria
o engenheiro de controle conectar a sada do controlador ao motor. Porm, amplicadores operacionais tm corrente de sada muito baixa (aproximadamente 5mA,
conforme mostrado na tabela 5.1). Isto faz com que seja necessrio acoplar na sada
do amplicador operacional um amplicador de potncia para poder `drenar' a corrente necessria para o motor, o que faz com que a implementao do sistema de
controle de velocidade para o grupo motor-gerador seja feita conforme mostrado no
diagrama de blocos da gura 5.13

5.2.1 Implementao do comparador


O circuito utilizado para se efetuar a comparao entre o sinal de referncia (vtR (t))
e o sinal do tacmetro (vt (t)) ser aquele representado na gura 5.5. Para sua
implementao, proceda da seguinte forma:
1. Selecione quatro resistores de mesmo valor (de acordo com seu cdigo de
barras coloridas) com valores entre 1k e 10k. Valores de resistores mais

5.2

Controlador automtico de velocidade

101

baixo que os sugeridos podem levar o amplicador a no executar exatamente


a operao que dele esperamos.
2. Mea a resistncia de cada um dos resistores R1 , R2 , R3 e R4 e anote-as.
3. Ajuste os quatro potencimetros R10 , R20 , R30 e R40 de tal modo que R1 + R10 =
R2 + R20 = R3 + R30 = Rf + Rf0 .
4. Monte o circuito da gura 5.5 utilizando um amplicador LF356, efetuando-se
as coneces de seus terminais de acordo com a gura 5.1. Lembre-se de que
o amplicador deve ser polarizado com as tenses de 15V (ver tabela 5.1).
5. Para vericar se o circuito somador est, de fato, efetuando a subtrao dos
sinais, aplique sinais iguais a ambos os terminais. Isto pode ser feito, por
exemplo, conectando-se ambas as entradas ao ponto de potencial zero (terra).
Neste caso, de acordo com a tabela 5.1 a tenso `oset' de sada dever ser
de, aproximadamente, 2mV . Caso a tenso seja muito maior que 2mV , varie
suavimente cada um potencimetro, observando se tal movimento implica
numa diminuio da tenso de sada. Termine este procedimento quando
a tenso de sada se aproximar de 2mV ou quando qualquer variao no
potencimetro resultar num aumento da tenso de `oset'.
6. Finalmente, como eo (t) = e2 (t) e1 (t) (equao 5.10), faa e1 (t) = vt (t) (a
tenso de sada do tacmetro) e e2 (t) = vtR (t) (a tenso de referncia).

5.2.2 Implementao do controlador


O circuito da gura 5.10 permite a implementao de um controlador PID. Porm,
o controlador de velocidade desenvolvido ao nal do captulo 4 do tipo PI. Assim
sendo, caso o circuito da gura 5.10 seja usado para a implementao do controlador
da equao 5.18, o ganho derivativo deve ser feito igual a zero. Com isso em mente,
proceda da seguinte forma para a implementao do controlador:
1. Faa, inicialmente, Ci = 0F . Em seguida, utilizando um resistor Rf de aproximadamente 10k, encontre um capacitor Cf e um resistor Ri , de tal forma

102

Captulo 5.

Implementao do controlador

Figura 5.13: Circuito analgico para implementao do controlador


que, a partir das equaes 5.17, sejam obtidos valores de Kp e Ti aproximadamente iguais aos encontrados no nal do captulo 4.
2. Utilizando um amplicador LF356 monte o circuito da gura 5.10.
3. Para vericar se o controlador PI foi, de fato, implementado corretamente,
aplique ao controlador um sinal de onda quadrada de freqncia igual a 0, 3Hz ,
amplitude igual a 1V e valor mdio igual a zero. Como o circuito tem aes
proporcional e integral, o sinal de sada deve ser uma rampa com inclinao
denida pela constante de tempo de integrao, Ti , e deslocada verticalmente,
sendo este deslocamente determinado pelo ganho proporcional.

5.2.3 Amplicador de potncia


O amplicador de potncia utilizado no laboratrio tambm inversor e tem um
ganho igual a cinco. Portanto, o aluno deve tomar o cuidado de certicar-se de que o
ganho em malha aberta do sistema real (somador + PI + amplicador de potncia)
seja igual ao projetado e as inverses levem a uma realimentao negativa. O
comparador pode ser implementado juntamente com o PI como mostrado na gura
5.13.

5.3

Experimento nal

103

5.3 Experimento nal: funcionamento do sistema


de controle
Implementados o comparador e o controlador PI e tendo sido feito o ajuste para que
o amplicador de potncia tenha ganho igual a 1, estamos em condies de vericar na prtica se o sistema de controle projetado ir funcionar satisfatoriamente.
Para tanto proceda da seguinte forma:
1. Conecte o terminal de sada do comparador ao ponto correspondente entrada
do controlador PI e a sada do controlador PI entrada do amplicador de
potncia. Conecte ainda a sada do tacmetro entrada correspondente do
circuito comparador.
2. Aplique um sinal de onda quadrada de freqncia igual a 0.3Hz , amplitude
igual a 9V e tenso mnima igual a zero ao terminal do comparador correspondente tenso de referncia.
3. Conecte a sada do amplicador de potncia aos terminais do motor e observe
no osciloscpio os sinais de referncia (vtR (t)) e da sada do tacmetro (vt (t)).
Responda s seguintes questes:
(i) Houve rastreamento do sinal de referncia?
(ii) Em caso armativo, qual o tempo de acomodao aproximado da resposta?
(iii) O tempo de acomodao para o sistema real est prximo daquele obtido
durante a simulao realizada no captulo 4?
4. Conecte agora uma carga nos terminais do gerador e feche este circuito num
instante prximo do meio do pulso. Verique se o sistema rejeita esta perturbao assim como na simulao realizada no captulo 4.

5.4 Comentrios nais


Este laboratrio procurou abordar do ponto de vista prtico, os principais conceitos
introduzidos na disciplina Sistemas de Controle I. Espera-se que os alunos tenham

104

Captulo 5.

Implementao do controlador

vericado que o ferramental terico pode ser aplicado, efetivamente, na prtica, para
levar o sistema real a ter um comportamento bastante prximo daquele previsto
durante a simulao. Outro aspecto a ser ressaltado, ao m desse curso, que as
ferramentas utilizadas na identicao da funo de transferncia do grupo motorgerador e no projeto do controlador de velocidade no se aplicam somente ao sistema
utilizado nesse laboratrio, podendo ser utilizadas em uma grande variedade de
outros sistemas fsicos e devem se usadas no futuro quando ao aluno for solicitado
o projeto de um sistema de controle.

Referncias Bibliogrcas
[1] N. A. Kheir, K. J. Astrm, D. Auslander, K. C. Cheok, G. F. Franklin, M. Masten, e M. Rabins, Control systems engineering education, Automatica, vol.
32, pp. 147166, 1991.
[2] R. M. Stephan,
[3] Mario Leite,
2008.

Laboratrio de Controle I,

UFRJ - Escola de Engenharia, 1991.

Scilab, Uma Abordagem Prtica e Didtica,

Cincia Moderna,

[4] J. G. Graeme, G. E. Tobei, e L. P. Huelsman, Operational


and Applications, McGraw-Hill Book Company, 1981.

Ampliers: Design

[5] R. C. Dorf,

Modern Control Systems,

[6] J. C. Basilio, Notas


Engenharia, 1995.

Addison-Wesley, 1986.

de aula de Sistemas de Controle I,

105

UFRJ - Escola da

You might also like