Ada beberapa poin mengapa bentuk Z-transform memiliki utilitas yang lebih tinggi.
Tanyakan siapa pun yang mempromosikan pendekatan berbasis waktu / sederhana / sans-PHD apa yang ditetapkan istilah Kd mereka. Mereka cenderung menjawab 'nol' dan mereka cenderung mengatakan D tidak stabil (tanpa filter low-pass). Sebelum saya belajar bagaimana semua ini terjadi, saya akan dan memang mengatakan hal-hal seperti itu.
Tuning Kd sulit dalam domain waktu. Ketika Anda dapat melihat fungsi transfer (transformasi-Z dari sub-sistem PID) Anda dapat melihat seberapa stabilnya. Anda juga siap melihat bagaimana istilah D mempengaruhi pengontrol relatif terhadap parameter lainnya. Jika parameter Kd Anda berkontribusi 0,00001 ke koefisien z-polinomial tetapi istilah Ki Anda memasukkan 10,5 maka istilah D Anda terlalu kecil untuk memiliki efek nyata pada sistem. Anda juga dapat melihat saldo antara ketentuan Kp & Ki.
DSP dirancang untuk menghitung finite-difference-Equations (FDE). Mereka memiliki op-kode yang akan mengalikan koefisien, menjumlahkan ke akumulator, dan menggeser nilai dalam buffer dalam satu siklus instruksi. Ini mengeksploitasi sifat paralel FDE. Jika mesin kekurangan op-code ini ... itu bukan DSP. Embedded PowerPC (MPC) memiliki perangkat yang didedikasikan untuk perhitungan FDE (mereka menyebutnya unit penipisan). DSP dirancang untuk menghitung FDE karena itu sepele untuk mengubah fungsi transfer menjadi FDE. 16-bit tidak cukup rentang dinamis untuk dengan mudah mengukur koefisien. Banyak DSP awal sebenarnya memiliki kata-kata 24-bit untuk alasan ini (saya percaya kata-kata 32-bit adalah umum saat ini.)
IIRC, yang disebut transformasi bilinear mengambil fungsi transfer (z-transform dari pengontrol domain waktu) dan mengubahnya menjadi FDE. Membuktikannya 'sulit', menggunakannya untuk mendapatkan hasil adalah sepele - Anda hanya perlu formulir yang diperluas (gandakan semuanya) dan koefisien polinomial adalah koefisien FDE.
Kontroler PI bukanlah pendekatan yang bagus - pendekatan yang lebih baik adalah membangun model bagaimana sistem Anda berperilaku dan menggunakan PID untuk koreksi kesalahan. Modelnya harus sederhana dan berdasarkan pada fisika dasar dari apa yang Anda lakukan. Ini adalah umpan-maju ke blok kontrol. Blok PID kemudian mengoreksi kesalahan menggunakan umpan balik dari sistem yang dikendalikan.
Jika Anda menggunakan nilai yang dinormalkan, [-1 .. 1] atau [0 ... 1], untuk set-point (referensi), umpan balik, & umpan-maju maka Anda dapat menerapkan satu algoritma 2-kutub 2-nol di perakitan DSP yang dioptimalkan dan Anda dapat menggunakannya untuk menerapkan filter urutan ke-2 yang mencakup PID dan filter low-pass (atau high-pass) paling dasar. Inilah sebabnya mengapa DSP's memiliki op-kode yang mengandaikan nilai-nilai yang dinormalisasi, misalnya yang akan menampilkan perkiraan kuadrat-kuadrat untuk rentang (0..1] Anda dapat menempatkan dua filter 2p2z secara seri dan membuat filter 4p4z, ini memungkinkan Anda memanfaatkan kode 2P2z DSP Anda untuk, katakanlah, menerapkan filter Butterworth low-pass 4-tap.
Sebagian besar implementasi domain waktu memanggang istilah dt ke dalam parameter PID (Kp / Ki / Kd). Sebagian besar implementasi z-domain tidak. dt dimasukkan ke dalam persamaan yang mengambil Kp, Ki, & Kd dan mengubahnya menjadi koefisien [] & b [] sehingga kalibrasi Anda (tuning) dari pengontrol PID sekarang tidak tergantung pada laju kontrol. Anda dapat menjalankannya sepuluh kali lebih cepat, mengeluarkan matematika a [] & b [] dan pengontrol PID akan memiliki kinerja yang konsisten.
Hasil alami menggunakan FDE adalah bahwa algoritma secara implisit "glitchless". Anda dapat mengubah keuntungan (Kp / Ki / Kd) sambil jalan dan berjalan dengan baik - tergantung pada implementasi waktu-domain ini bisa buruk.
Banyak upaya biasanya dihabiskan pada pengontrol PID domain waktu untuk mencegah pemutusan integral. Ada trik sederhana dengan bentuk FDE yang membuat PID berperilaku baik, Anda dapat menjepit nilainya di buffer sejarah. Saya belum melakukan matematika untuk melihat bagaimana ini mempengaruhi perilaku filter (berkenaan dengan parameter Kp / Ki / Kd), tetapi hasil empirisnya adalah bahwa itu 'halus'. Ini mengeksploitasi sifat 'glitchless' dari bentuk FDE. Model umpan-maju berkontribusi untuk mencegah wind-up integral dan penggunaan istilah D membantu menyeimbangkan istilah I. PID benar-benar tidak berfungsi sebagaimana dimaksud dengan keuntungan D. (Slewing setpoints adalah fitur kunci lain untuk mencegah angin berlebihan.)
Terakhir, transformasi-Z adalah topik sarjana, bukan "Ph.D." Anda seharusnya sudah mempelajari semuanya dalam Analisis Kompleks. Di sinilah universitas tempat Anda kuliah, instruktur yang Anda miliki, dan upaya yang Anda lakukan untuk mempelajari matematika dan mempelajari cara menggunakan alat yang tersedia dapat membuat perbedaan signifikan dalam kemampuan Anda untuk tampil di industri. (Kelas Analisis Kompleks saya mengerikan.)
Alat industri defacto adalah Simulink (yang tidak memiliki sistem komputer-aljabar, CAS, sehingga Anda memerlukan alat lain untuk mengubah persamaan umum). MathCAD atau wxMaxima adalah pemecah simbolis yang dapat Anda gunakan pada PC dan saya belajar cara melakukannya menggunakan kalkulator TI-92. Saya pikir TI-89 juga memiliki sistem CAS.
Anda dapat mencari persamaan z-domain atau laplace-domain di wikipedia untuk filter PID & low-pass. Ada langkah di sini yang saya tidak grok, saya percaya Anda memerlukan bentuk domain-waktu-disk dari kontroler PID maka perlu mengambil z-transform itu. Transformasi laplace harus sangat mirip dengan z-transform dan diberikan sebagai PID {s} = Kp + Ki / s + Kd · s Saya pikir z-transform akan menjelaskan Dt dalam persamaan berikut. Dt adalah delta-t [ime], saya menggunakan Dt karena tidak membingungkan konstanta ini dengan turunan '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
Dan ini adalah 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]
DSP biasanya hanya memiliki multiply & add (bukan multiply & kurangi) sehingga Anda dapat melihat negasi digulung ke dalam koefisien []. Tambahkan lebih banyak b untuk lebih banyak kutub, tambahkan lebih banyak untuk lebih banyak nol.