Existem vários pontos pelos quais a forma de transformação Z tem maior utilidade.
Pergunte a qualquer pessoa que promova a abordagem baseada no tempo / simples / sans-PHD a que definir o termo Kd. É provável que respondam 'zero' e digam que D é instável (sem um filtro passa-baixo). Antes de aprender como tudo isso acontece, eu diria e disse essas coisas.
O ajuste do Kd é difícil no domínio do tempo. Quando você pode ver a função de transferência (a transformação Z do subsistema PID), você pode ver rapidamente como é estável. Você também pode ver facilmente como o termo D está afetando o controlador em relação aos outros parâmetros. Se o seu parâmetro Kd contribui com 0,00001 para os coeficientes z-polinomiais, mas o seu termo Ki está em 10,5, então o seu termo D é muito pequeno para ter um efeito real no sistema. Você também pode ver o equilíbrio entre os termos Kp & Ki.
Os DSPs são projetados para calcular equações de diferenças finitas (FDE). Eles têm códigos operacionais que multiplicam um coeficiente, somam um acumulador e mudam um valor em um buffer em um ciclo de instrução. Isso explora a natureza paralela das FDEs. Se a máquina não possui esse código operacional ... não é um DSP. Os PowerPCs incorporados (MPC) têm um periférico dedicado ao cálculo dos FDEs (eles chamam de unidade de dizimação). Os DSPs são projetados para calcular FDEs porque é trivial transformar uma função de transferência em uma FDE. A faixa dinâmica de 16 bits não é suficiente para quantificar facilmente os coeficientes. Muitos dos primeiros DSPs realmente tinham palavras de 24 bits por esse motivo (acredito que palavras de 32 bits são comuns hoje em dia).
IIRC, a chamada transformação bilinear assume uma função de transferência (uma transformação z de um controlador de domínio do tempo) e a transforma em uma FDE. Provar que é 'difícil', usá-lo para obter um resultado é trivial - você só precisa da forma expandida (multiplique tudo) e os coeficientes polinomiais são os coeficientes FDE.
Um controlador PI não é uma ótima abordagem - uma abordagem melhor é criar um modelo de comportamento do sistema e usar o PID para correção de erros. O modelo deve ser simples e baseado na física básica do que você está fazendo. Este é o avanço no bloco de controle. Um bloco PID então corrige o erro usando feedback do sistema sob controle.
Se você usar valores normalizados, [-1 .. 1] ou [0 ... 1], para o ponto de ajuste (referência), feedback e feed-forward, poderá implementar um algoritmo 2-pólos 2-zero em conjunto DSP otimizado e você pode usá-lo para implementar qualquer filtro de 2ª ordem que inclua PID e o filtro passa-baixo (ou passa-alto) mais básico. É por isso que os DSPs têm códigos op que pressupõem valores normalizados, por exemplo, um que produz uma estimativa do quadrado inverso para o intervalo (0..1) Você pode colocar dois filtros 2p2z em série e criar um filtro 4p4z, isso permite você pode alavancar seu código DSP de 2p2z para, por exemplo, implementar um filtro Butterworth passa-baixo de 4 toques.
A maioria das implementações no domínio do tempo inclui o termo dt nos parâmetros PID (Kp / Ki / Kd). A maioria das implementações de domínio z não. dt é colocado nas equações que tomam Kp, Ki e Kd e as transformam em coeficientes [] e b [], de modo que sua calibração (ajuste) do controlador PID agora é independente da taxa de controle. Você pode fazê-lo rodar dez vezes mais rápido, aumentar a matemática a [] & b [] e o controlador PID terá um desempenho consistente.
Um resultado natural do uso do FDE é que o algoritmo é implicitamente "sem falhas". Você pode alterar os ganhos (Kp / Ki / Kd) on-the-fly durante a execução e é bem-comportado - dependendo da implementação no domínio do tempo, isso pode ser ruim.
Geralmente, é gasto muito esforço em controladores PID no domínio do tempo para impedir a conclusão integral. Existe um truque simples com o formulário FDE que faz com que o PID se comporte bem, você pode fixar seu valor no buffer do histórico. Eu não fiz as contas para ver como isso afeta o comportamento do filtro (em relação aos parâmetros Kp / Ki / Kd), mas o resultado empírico é que é "suave". Isso está explorando a natureza "sem falhas" do formulário da FDE. Um modelo de feed-forward contribui para impedir a conclusão integral e o uso do termo D ajuda a equilibrar o termo I. O PID realmente não funciona como pretendido com um ganho em D. (Os pontos de ajuste de giro são outro recurso importante para evitar o enrolamento excessivo.)
Por fim, as transformações Z são um tópico de graduação, não "Ph.D." Você deveria ter aprendido tudo sobre eles na Análise Complexa. É aqui que a universidade que você estuda, o instrutor que você tem e o esforço que você faz para aprender matemática e aprender a usar as ferramentas disponíveis pode fazer uma diferença significativa na sua capacidade de atuar na indústria. (Minha aula de Análise Complexa foi horrível.)
A ferramenta da indústria defacto é o Simulink (que não possui um sistema de álgebra computacional, CAS, então você precisa de outra ferramenta para desenvolver equações gerais). MathCAD ou wxMaxima são solucionadores simbólicos que você pode usar em um PC e aprendi como fazer isso usando uma calculadora TI-92. Eu acho que a TI-89 também tem um sistema CAS.
Você pode procurar equações de domínio z ou domínio laplace na wikipedia para filtros PID e passa-baixo. Há uma etapa aqui que eu não entendo, acredito que você precisa da forma de domínio discreto do controlador PID e, em seguida, precisa fazer a transformação z dele. A transformação laplace deve ser muito semelhante à transformação z e é dada como PID {s} = Kp + Ki / s + Kd · s Acho que a transformação z seria mais responsável pelos Dt nas equações a seguir. Dt é delta-t [ime], eu uso Dt para não confundir essa constante com uma derivada 'dt'.
b[0] = Kp + (Ki*Dt/2) + (Kd/Dt)
b[1] = (Ki*Dt/2) - Kp - (2*Kd/Dt)
b[2] = Kd/Dt
a[1] = -1
a[2] = 0
E este é o 2p2z FDE:
y[n] = b[0]·x[n] + b[1]·x[n-1] + b[2]·x[n-2] - a[1]·y[n-1] - a[2]·y[n-2]
Os DSPs normalmente tinham apenas uma multiplicação e adição (não uma multiplicação e subtração); portanto, você pode ver a negação acumulada nos coeficientes a []. Adicione mais b para mais pólos, adicione mais a para mais zero.