Uma malha de controle típica de "controle digital":

Que completamente retratada no plano-z resulta em:

A eq. que define a relação existente entre a entrada e a saída deste sistema é dada por:
ou:
Quando isolamos o sinal do Erro a equação fica:
(eq. (1))
ou seja, o erro só depende de:
Supondo diferentes tipos de sistemas para a e diferentes sinais de referência teremos:
: pode ser um sistema do tipo , onde:
De modo geral podemos escrever a como:
onde: é um “ganho”; num sistema com zeros, pólos e eventualmente integradores.
A questão agora é: — Como identificar um integrador (ou mais) dentro de uma (no plano-z) ?
NUm sistema discreto, podemos sintetizar uma ação integral fazendo:

Tentando generalizar (extrair) uma equação no plano-z para um processo de integração numérica retangular, percebemos que:
Desenvolvendo as equações, supondo que estamos interessados em integrar o erro de malha-fechada de um sistema, ou , teremos:
em
em
em
e assim por diante, então podemos generalizar esta processe/equação para:
A eq. anteior está no formato de “equação de diferenças”, sua transformada rede:
melhorando a expressão acima:
e finalmente temos que:
ou:
onde é o sinal que está sendo integrado (o erro do sistema) e é o resultado da integração.
Note o pólo em , é o Integrador.

Desenvolvendo as equações para este caso resulta:
Lembrando do cálculo da área de um trapézio:
onde: base maior; base menor; "altura" do trapézio. Neste caso, as "bases" correspondem aos valores dos erros amostrados e a "altura" corresponde a passagem de tempo, ou período de amostragem adotado, .
Então:
em
em
em
e assim por diante, então podemos generalizar este processo/equação para:
A eq. anteior está no formato de “equação de diferenças”, sua transformada rede:
melhorando a expressão acima:
e finalmente temos que:
ou:
E assim chegaremos à:
Note que: Nos 2 casos, sempre surge um pólo em .
Conclusão final: Um pólo em caracteriza o que chamamos de ação integral.
Lembrando da eq. (1), temos que:
Usando da Propriedade da Transformada-: Valor final, temos que:
Notamos que erro só depende do sinal referência, , e da função transferência de malha direta, . Ou seja, ele pode variar com o tipo de sinal de referência aplicado num sistema e pode ser modificado se a for convenientemente alterada através de um cuidadoso projeto do controlador da malha, , lembrando que:
Para continuar podemos considerar diferentes sinais de referência e tentar prever o valor do erro.
| Entrada: | Domínio tempo: | Tranformada | Gráfico |
|---|---|---|---|
| Degrau: | |||
| Rampa: | ![]() | ||
| Parabólica: | ![]() |
Analisando alguns casos...
Erro para entrada degrau:
Temos que agora analisar para diferentes tipos de sistemas (para a ).
Se a corresponde à um sistema do tipo 0 (sem integrador), então:
Teremos então que:
e assim:
Algo como mostrado na próxima figura:

ou seja, concluímos que leva à um erro constante diferente de zero (não nulo), mas constante (limitado).
Note que a constante é chamada de "constante de posição" (ou constante do erro estático de posição), e assim esta equação fica generalizada para:
Onde: .
Se a corresponde à um sistema do tipo 1 (com 1 integrador), então:
Teremos então que:
,
o que implica em:
Algo como:

ou seja, o erro tende à zero, isto significa que a saída converge para o mesmo valor da rampa (sem erro em regime permanente).
Podemos repetir o raciocínio da entrada degrau para sistemas maiores que 1 e também vamos concluir que neste caso, para entrada degrau, basta um integrador presente na malha-direta para que .
Neste caso, a equação do erro fica:
Neste caso, surge a constante de velocidade, (constante do erro estático de velocidade):
Neste caso, a é do tipo:
A constante de velocidade fica:
E então:
Algo do tipo:

ou seja, a saída do sistema não converge (não consegue acompanhar a rampa) e o erro é cada vez maior, ou tendendo ao .
Neste caso, a é do tipo:
A constante de velocidade fica:
.
E então:
Ou algo como:

ou seja, a saída do sistema converge para determinado valor, um valor não nulo, ou seja, um erro em regime permanente. Isto significa que passado um certo período de tempo (o período transitório), a saída do sistema acompanha a rampa de forma "paralela", mantendo um erro constante.
Neste caso, a é do tipo:
A constante de velocidade fica:
.
E então:
Numa figura:

ou seja, a saída do sistema converge para o mesmo valor da rampa, ou seja, irá acompanhar a rampa sem nenhum erro.
Neste caso, a equação do erro fica:
Onde: .
se refere à constante de aceleração (ou constante do erro estático de aceleração).
Obedecendo aos raciocínios anteriores, vamos perceber que só vamos começar a limitar o erro para uma entrada parabólica quando a malha-direta do sistema contiver 2 integradores (sistema tipo 2).
Para sistemas menores que 2 (1 integrador ou menos), o erro nunca vai convergir, isto é, é , significando que o sistema nunca vai conseguir acompanhar a parábola.
Por fim, podemos resumir as conclusões numa "Tabela Resumo de Erros":

Isto significa que:
Sistemas tipo 0 ( sem pólo em , sem integrador), sempre resultarão em algum erro () para entrada degrau; felizmente um erro constante que não aumenta com o passar do tempo (mas que também não diminui). Isto é válido independente do ganho (de malha fechada) adotado para o sistema.
Sistemas tipo 0 se submetidos à entradas de mais alta ordem (rampa ou parábola), não vão conseguir acompanhar a referência. Ou seja, a medida que o tempo passa, o erro só aumenta; ele não convege ( e ).
Seja uma planta definida no mundo contínuo como:
Suponha que queremos verificar como este sistema se comporta em MF para entradas degrau e rampa, fechando a malha com um simples controlador proporcional (com ganho unitário).
Ingressando estes dados no Matlab para calcular :
xxxxxxxxxx>> G=tf(10, poly([0 -1]) );>> zpk(G) 10------- s (s+1)Continuous-time zero/pole/gain model.>> % Digitalizando sistema, calculando $BoG(z)$:>> >> T=0.1; % informando periodo de amostragem na vari•vel T>> BoG = c2d( G, T);>> zpk(BoG) 0.048374 (z+0.9672) ------------------- (z-1) (z-0.9048)Sample time: 0.1 secondsDiscrete-time zero/pole/gain model.Usando o Matlab… Note que a função dcgain() do Matlab é capaz de trabalhar com argumentos de entrada sendo transfer functions tanto no plano-s quanto no plano-z. Ela realiza:
| Plano-s | Plano-z |
|---|---|
dcgain(FTMA(s))= | dcgain(FTMA(z))= |
Então podemos usar esta função para calcular os ganhos (dos erros estáticos) de erro:
xxxxxxxxxx>> Kp= dcgain(BoG)>> Kp = Inf>> BoGKv= BoG*tf([1 -1], 1, T); % acrescentando numerador (z-1)>> zpk(BoGKv) 0.048374 (z-1) (z+0.9672) ------------------------- (z-1) (z-0.9048)Sample time: 0.1 secondsDiscrete-time zero/pole/gain model.>> Kv=dcgain(BoGKv)>> Kv = 1.0000>> erro_degrau=1/(1+Kp)>> erro_degrau = 0>> erro_rampa=T/Kv>> erro_rampa = 0.1000Fechando a malha e verificando resposta do sitema:
No Matlab:
xxxxxxxxxxftmf=feedback(1*BoG, 1);figure; step(ftmf)Obtendo a figura:

Conforme esperado, nota-se que a saída converge para o mesmo valor da referência, ou seja, o erro em regime permanente é nulo. Mas também se percebe que a resposta é um tanto oscilatória e com overshoot elevado, o que significa que mesmo adotar gannho unitário é algo elevado para este sistema.
Usando Matlab:
xxxxxxxxxx>> t=0:T:20; % cria vetor tempo com amostras espaçadas de T segundos>> r=0.1*t; % cria o vetor rampa (ou referência)>> figure; plot(t, r) % pode ser usado para comprovar o gráfico da rampa>> % Mas queremos "trucar" rampa a partir de t=10 segundos>> 10/Tans = 100>> % Isto ocorre na amostra de número 100>> r(100) % verificando amplitude da rampa para indice=100ans = 0.9900>> r(101) % indice=101 corresponde a amostra k=100ans = 1>> size(r) % comprovando tamanho do vetor rans = 1 201>> r(101:201)=1; % truncando rampa a partir de t=10 segundos, em amplitude=1>> plot(t,r) % pode ser usado para comprovar o gráfico da rampa truncadaFechando a malha, mas para versão contínua do sistema (à título de comparação)
xxxxxxxxxx>> ftmf_c=feedback(1*G, 1); % note que variável 'ftmf'= MF versão digital!>> zpk(ftmf_c) 10-------------- (s^2 + s + 10)Continuous-time zero/pole/gain model.>> % comparando com versão digital da FTMF:>> zpk(ftmf) 0.048374 (z+0.9672)----------------------- (z^2 - 1.856z + 0.9516)Sample time: 0.1 secondsDiscrete-time zero/pole/gain model.>> figure; lsim(ftmf_c, r, t); % simulando sistema para referencia r customizadaA próxima figura mostra a resposta para entrada rampa truncada para sistema em malha-fechado usando simples controlador Proporcional com ganho unitário:

Simulando a resposta mas a versão “digitalizada do sistema”… Neste caso, usando a variante "discreta" da função lsim(). Note que a função dlsim() ao contrário de lsim, não admite que argumento de entrada seja uma transfer function. Então necessitamos, "expandir" a transfer function digital para uma versão que contenha o polinômio (coeficientes) do numerador e denominador em variáveis separadas, usando a função tfdata(<transfer_function>, ‘v’) - note que o segundo argumento de entrada desta função deve ser ’v’ (de “verbouse”).
xxxxxxxxxx>> help dlsim <strong>dlsim</strong> Simulation of discrete-time linear systems. <strong>dlsim</strong>(A,B,C,D,U) plots the time response of the discrete system: x[n+1] = Ax[n] + Bu[n] y[n] = Cx[n] + Du[n] to input sequence U. Matrix U must have as many columns as there are inputs, u. Each row of U corresponds to a new time point. <strong>dlsim</strong>(A,B,C,D,U,X0) can be used if initial conditions exist. <strong>dlsim</strong>(NUM,DEN,U) plots the time response of the transfer function description G(z) = NUM(z)/DEN(z) where NUM and DEN contain the polynomial coefficients in descending powers of z. If LENGTH(NUM)=LENGTH(DEN) then <strong>dlsim</strong>(NUM,DEN,U) is equivalent to FILTER(NUM,DEN,U). When invoked with left hand arguments, [Y,X] = <strong>dlsim</strong>(A,B,C,D,U) [Y,X] = <strong>dlsim</strong>(NUM,DEN,U) returns the output and state time history in the matrices Y and X. No plot is drawn on the screen. Y has as many columns as there are outputs and LENGTH(U) rows. X has as many columns as there are states and LENGTH(U) rows. See also: <a href="matlab:help lsim">lsim</a>, <a href="matlab:help step">step</a>, <a href="matlab:help impulse">impulse</a>, <a href="matlab:help initial">initial</a>.Obtendo o numerador e denominador de em variáveis separadas:
xxxxxxxxxx>> [numd,dend]=tfdata(ftmf,'v')numd = 0 0.0484 0.0468dend = 1.0000 -1.8565 0.9516>> figure; dlsim(numd, dend, r)E então finalmente se obtêm a resposta do sitema digitalizado, em malha fechada, usando controlador proporcional (ganho unitário):

Note que este gráfico é semelhante ao obtido para a .
| Resposta | Resposta |
|---|---|
![]() | ![]() |
Fim.
Fernando Passold, em 07.04.2021 (revisado em 01/04/2024).