Il y a plusieurs points pour lesquels la forme de transformation en Z a une utilité plus élevée.
Demandez à toute personne faisant la promotion de l'approche basée sur le temps / simple / sans PHD de définir le terme Kd. Ils sont susceptibles de répondre «zéro» et ils sont susceptibles de dire que D est instable (sans filtre passe-bas). Avant d’apprendre comment tout cela s’organise, j’aurais dit et fait de telles choses.
Le réglage de Kd est difficile dans le domaine temporel. Lorsque vous pouvez voir la fonction de transfert (la transformée en Z du sous-système PID), vous pouvez facilement voir à quel point elle est stable. Vous pouvez également facilement voir comment le terme D affecte le contrôleur par rapport aux autres paramètres. Si votre paramètre Kd contribue à 0,00001 aux coefficients du polynôme z mais que votre terme Ki met 10,5, alors votre terme D est trop petit pour avoir un effet réel sur le système. Vous pouvez également voir l'équilibre entre les termes Kp & Ki.
Les DSP sont conçus pour calculer des équations aux différences finies (FDE). Ils ont des op-codes qui multiplieront un coefficient, additionneront à un accumulateur et décaleront une valeur dans un tampon en un cycle d'instruction. Cela exploite la nature parallèle des FDE. Si la machine n'a pas ce code d'opération ... ce n'est pas un DSP. Les PowerPC embarqués (MPC) ont un périphérique dédié au calcul des FDE (ils l'appellent l'unité de décimation). Les DSP sont conçus pour calculer les FDE car il est trivial de transformer une fonction de transfert en FDE. La plage dynamique de 16 bits n'est pas tout à fait suffisante pour quantifier facilement les coefficients. Beaucoup de premiers DSP avaient en fait des mots 24 bits pour cette raison (je crois que les mots 32 bits sont courants aujourd'hui.)
IIRC, la soi-disant transformée bilinéaire prend une fonction de transfert (une transformée z d'un contrôleur de domaine temporel) et la transforme en un FDE. Prouver qu'il est «difficile», l'utiliser pour obtenir un résultat est trivial - vous avez juste besoin de la forme développée (multipliez tout) et les coefficients polynomiaux sont les coefficients FDE.
Un contrôleur PI n'est pas une excellente approche - une meilleure approche consiste à créer un modèle de comportement de votre système et à utiliser le PID pour la correction des erreurs. Le modèle doit être simple et basé sur la physique de base de ce que vous faites. Il s'agit de la rétroaction dans le bloc de contrôle. Un bloc PID corrige ensuite l'erreur en utilisant la rétroaction du système sous contrôle.
Si vous utilisez des valeurs normalisées, [-1 .. 1] ou [0 ... 1], pour le point de consigne (référence), la rétroaction et la rétroaction, vous pouvez implémenter un algorithme 2 pôles 2 zéro dans assemblage DSP optimisé et vous pouvez l'utiliser pour implémenter n'importe quel filtre de deuxième ordre qui comprend le PID et le filtre passe-bas (ou passe-haut) le plus basique. C'est pourquoi les DSP ont des op-codes qui supposent des valeurs normalisées, par exemple un qui produira une estimation de l'inverse-carré pour la plage (0..1] Vous pouvez mettre deux filtres 2p2z en série et créer un filtre 4p4z, cela permet vous pour exploiter votre code DSP 2p2z pour, par exemple, implémenter un filtre Butterworth passe-bas à 4 pressions.
La plupart des implémentations dans le domaine temporel incorporent le terme dt dans les paramètres PID (Kp / Ki / Kd). La plupart des implémentations de domaine z ne le font pas. dt est placé dans les équations qui prennent Kp, Ki et Kd et les transforment en coefficients [] & b [] afin que votre étalonnage (réglage) du contrôleur PID soit maintenant indépendant de la vitesse de contrôle. Vous pouvez le faire fonctionner dix fois plus vite, lancer les calculs a [] et b [] et le contrôleur PID aura des performances cohérentes.
Un résultat naturel de l'utilisation de FDE est que l'algorithme est implicitement "sans problème". Vous pouvez modifier les gains (Kp / Ki / Kd) à la volée pendant l'exécution et cela se comporte bien - selon la mise en œuvre du domaine temporel, cela peut être mauvais.
Beaucoup d'efforts sont généralement consacrés aux contrôleurs PID du domaine temporel pour empêcher la liquidation intégrale. Il y a une astuce simple avec la forme FDE qui fait que le PID se comporte bien, vous pouvez bloquer sa valeur dans le tampon d'historique. Je n'ai pas fait le calcul pour voir comment cela affecte le comportement du filtre (en ce qui concerne les paramètres Kp / Ki / Kd), mais le résultat empirique est qu'il est «lisse». Cela exploite la nature «sans pépin» du formulaire FDE. Un modèle de rétroaction contribue à empêcher la liquidation intégrale et l'utilisation du terme D permet d'équilibrer le terme I. Le PID ne fonctionne vraiment pas comme prévu avec un gain D. (Les points de consigne d'orientation sont une autre caractéristique clé pour éviter une remontée excessive.)
Enfin, les transformées en Z sont un sujet de premier cycle et non un «doctorat». Vous devriez avoir tout appris à leur sujet dans l'analyse complexe. C'est là que vous allez à l'université, l'instructeur que vous avez et l'effort que vous déployez pour apprendre les mathématiques et apprendre à utiliser les outils disponibles peut faire une différence significative dans votre capacité à travailler dans l'industrie. (Mon cours d'analyse complexe était horrible.)
L'outil de facto de l'industrie est Simulink (qui n'a pas de système d'algèbre informatique, CAS, vous avez donc besoin d'un autre outil pour lancer des équations générales). MathCAD ou wxMaxima sont des solveurs symboliques que vous pouvez utiliser sur un PC et j'ai appris à le faire à l'aide d'une calculatrice TI-92. Je pense que la TI-89 a également un système CAS.
Vous pouvez rechercher des équations de domaine z ou de domaine laplace sur wikipedia pour les filtres PID et passe-bas. Il y a une étape ici que je ne bloque pas, je crois que vous avez besoin de la forme à domaine temporel discret du contrôleur PID, puis que vous devez en prendre la transformation z La transformée de Laplace devrait être très similaire à la transformée z et est donnée comme PID {s} = Kp + Ki / s + Kd · s Je pense que la transformée z rendrait mieux compte des Dt dans les équations suivantes. Dt est delta-t [ime], j'utilise Dt pour ne pas confondre cette constante avec une dérivée '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
Et voici le FDE 2p2z:
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]
Les DSP n'avaient généralement qu'un multiplier et ajouter (pas un multiplier et soustraire), vous pouvez donc voir la négation roulée dans les coefficients a []. Ajoutez plus de b pour plus de pôles, ajoutez plus de a pour plus de zéro.