Apa keuntungan dari implementasi transformasi PID turunan Z?

29

Saya telah melihat banyak artikel PID, seperti ini , menggunakan transformasi Z dari persamaan PID generik untuk mendapatkan beberapa persamaan perbedaan gila yang kemudian dapat diimplementasikan dalam perangkat lunak (atau dalam hal ini FPGA). Pertanyaan saya adalah, apa keuntungan implementasi seperti itu versus PID tradisional dan jauh lebih intuitif, tanpa PhDjenis implementasi? Yang kedua tampaknya lebih mudah dipahami dan diimplementasikan. Istilah P adalah perkalian lurus, integral menggunakan jumlah berjalan dan turunan diperkirakan dengan mengurangi sampel sebelumnya dari sampel saat ini. Jika Anda perlu menambahkan fitur seperti perlindungan Windup Integral, itu adalah aljabar lurus ke depan. Mencoba menambahkan perlindungan Windup Integral atau fitur lain ke algoritma tipe perbedaan, seperti yang ditautkan di atas, sepertinya akan jauh lebih rumit. Apakah ada alasan untuk menggunakan implementasi seperti itu, selain dari "Aku keledai buruk yang suka melakukan transformasi Z untuk bersenang-senang" yang menyombongkan hak yang menyertainya?

EDIT: PID tanpa artikel PHD yang saya tautkan adalah contoh implementasi yang lebih sederhana yang menggunakan jumlah berjalan untuk istilah integral dan perbedaan antara sampel berturut-turut untuk istilah derivatif. Ini dapat diimplementasikan dengan matematika titik tetap dalam cara deterministik dan dapat memasukkan informasi konstan waktu nyata dalam perhitungan, jika diinginkan. Saya pada dasarnya mencari keuntungan praktis untuk metode transformasi Z. Saya tidak bisa melihat bagaimana bisa lebih cepat, atau menggunakan lebih sedikit sumber daya. Alih-alih menjaga jumlah berjalan integral, metode Z tampaknya menggunakan output sebelumnya dan mengurangi komponen P dan D sebelumnya (untuk sampai pada jumlah integral dengan perhitungan). Jadi, kecuali seseorang dapat menunjukkan sesuatu yang saya lewatkan, saya akan menerima komentar AngryEE bahwa mereka pada dasarnya sama.

EDIT AKHIR: Terima kasih atas tanggapannya. Saya pikir saya telah belajar sedikit tentang masing-masing tetapi pada akhirnya, anggap Angry benar karena itu hanya masalah preferensi. Dua bentuk:

e(k-2)=e(k-1),

kamu(k)=kamu(k-1)+Khal(e(k)-e(k-1)+KsayaTsayae(k)+KdTsaya(e(k)-2e(k-1)+e(k-2))
u ( k - 1 ) = u ( k )
e(k-2)=e(k-1),e(k-1)=e(k)
kamu(k-1)=kamu(k)

atau

u ( k ) = K p e ( k ) + K i T ijumlah + K d

jumlah=jumlah+e(k)
e(k-1)=e(k)
kamu(k)=Khale(k)+KsayaTsayajumlah+KdTsaya(e(k)-e(k-1))
e(k-1)=e(k)

akan mengevaluasi pada dasarnya hal yang sama. Beberapa menyebutkan yang pertama dapat diimplementasikan dalam DSP atau FPGA lebih cepat, tapi saya tidak membelinya. Entah bisa vektor. Yang pertama membutuhkan dua operasi pos, yang kedua membutuhkan satu operasi pra dan satu operasi pos, sehingga tampaknya meratakan. Yang pertama juga membutuhkan 1 lebih banyak perkalian dalam perhitungan aktual.

bt2
sumber
Apakah maksud Anda "Persamaan diferensial"?
Kevin Vermeer
Saya pasti salah memahami komentar Anda, berdasarkan umpan balik ini, setidaknya saya lakukan. Saya akan menghapus komentar saya!
Kortuk
1
Silakan pindah ke dsp.stackexchange.com
Jason S

Jawaban:

7

Anda menjadi bingung oleh semua keanggunan Z-transform. Kedua pendekatan ini pada dasarnya sama - PID tanpa pendekatan PHD hanya memiliki lebih sedikit subskrip. Mereka melakukan fungsi dasar yang sama dan menggunakan matematika dasar yang sama.

Satu-satunya perbedaan utama antara keduanya yang dapat saya lihat adalah bahwa PID tanpa PHD tidak memperhitungkan waktu pengambilan sampel. Untuk melakukan apa pun yang mungkin tidak stabil, waktu pengambilan sampel adalah pertimbangan yang sangat penting. Manfaat dari pendekatan Z-transform dalam hal ini adalah Anda tidak dapat menggunakannya tanpa memperhitungkan waktu pengambilan sampel - ini memaksa Anda untuk menunjukkan pekerjaan Anda dan membantu Anda merancang sistem yang lebih stabil.

Ini juga terlihat seperti studi kasus yang Anda temukan menerapkan pendekatan Z-transform dirancang untuk sangat deterministik. Ini menjelaskan penggunaan FPGA mereka - kalkulasi akan selalu mengambil jumlah waktu yang sama. PID tanpa implementasi PHD jelas tidak deterministik. Penggunaan ganda sebagai variabel bukan implementasi titik tetap pasti akan menyebabkan perilaku non-deterministik pada setiap mikrokontroler tanpa unit floating-point (dan mungkin pada UC dengan FPU juga). Studi kasus bekerja pada tingkat kompleksitas yang berbeda dibandingkan dengan PID tanpa pendekatan PHD.

Jadi secara fundamental pendekatan matematika dan kontrol adalah sama, tetapi studi kasus / pendekatan Z-transform lebih ketat dan didasarkan pada teori. Pendekatan PID tanpa PHD hanya akan bekerja untuk sistem yang sangat sederhana, tidak penting waktu yang relatif stabil.

AngryEE
sumber
PID tanpa artikel PHD hanyalah contoh implementasi yang lebih sederhana, yang menggunakan jumlah yang berjalan untuk integral dan perbedaan antara sampel berturut-turut untuk turunannya. Artikel tersebut menyatakan bahwa waktu sampel harus konsisten. Waktu pengambilan sampel dapat dengan mudah ditambahkan ke perhitungan I dan D, tetapi dalam kebanyakan kasus tidak dilakukan dalam perhitungan yang sebenarnya. GUI pengontrol (atau antarmuka lainnya) akan menyajikan persyaratan I dan D kepada pengguna dalam hal detik berdasarkan waktu loop.
bt2
@ bt2 sepertinya Anda memiliki kasus yang sangat spesifik di mana PID tanpa gelar PhD adalah pendekatan terbaik. Sebagian besar sistem tidak memiliki tampilan istilah I dan D dengan cara apa pun. Ini adalah hasil dari kontroler PID yang memiliki beberapa perubahan pada sistem secara keseluruhan yang kemudian diulang kembali dengan sendirinya. Jika Anda hanya menampilkan kepada pengguna maka sebenarnya tidak ada alasan untuk khawatir tentang stabilitas.
Kellenjb
"Pendekatan PID tanpa PHD hanya akan bekerja dengan sangat sederhana," - Saya tidak setuju. Anda pasti dapat mengoptimalkan sistem kontrol digital menggunakan analisis Z-transform, tetapi sisi sebaliknya adalah Anda dapat terjebak dalam pemodelan sistem Anda sehingga Anda kehilangan hutan untuk pepohonan.
Jason S
10

Metode Z-transform merancang PID controller pada akhirnya akan menghasilkan implementasi yang jauh lebih efisien. Ini sangat penting jika Anda mendesain FPGA / DSP / Mikrokontroler terkecil untuk aplikasi Anda.

"PID tanpa PHD" yang disebutkan di atas mungkin merupakan pendekatan termudah untuk mengimplementasikan kontrol PID dalam perangkat lunak, tetapi menjadi rumit pada tingkat pengambilan sampel yang lebih tinggi.

Selain itu, Z-transform cocok untuk mendesain dalam domain diskrit (digital). Metode desain tradisional (Transformasi Laplace) lebih untuk waktu yang berkesinambungan. Ada beberapa cara untuk mengkonversi antara keduanya (Zero-Order Hold, Interpolasi Linear, Penempatan Pole, Bilinear / Tustin), masing-masing dilengkapi dengan kekuatan dan kelemahannya dalam hal stabilitas dan respons sistem. Secara umum hanya lebih mudah untuk melakukan seluruh desain dalam domain diskrit.

Singkatnya, jika Anda menggunakan sistem yang relatif "lambat" (semua perilaku utama terjadi secara signifikan di bawah 100kHz atau lebih), maka desain pertama mungkin baik-baik saja. Anda dapat mengimplementasikannya pada mikrokontroler atau PC dan selesai melakukannya. Ketika sistem menjadi lebih cepat, maka Anda mungkin harus menggunakan metode Z-transform untuk mendapatkan kecepatan yang Anda butuhkan (artikel tersebut menyebutkan 9.5MHz, dengan asumsi Anda memiliki A / D dan DAC yang dapat mengimbangi).

mjcarroll
sumber
1
Jumlah operasi matematika yang sama, representasi angka yang berbeda. Doubles adalah representasi angka yang jauh lebih kompleks daripada metode fixed-point yang digunakan dalam studi kasus. Kurang kompleks berarti lebih sedikit operasi (pada silikon).
AngryEE
2
@ bt2, saya akan mengatakan lebih efisien dalam arti bahwa chip DSP diatur untuk set instruksi SIMD (Single Instruction, Multiple Data). Meskipun ini adalah jumlah operasi matematika yang sama, transformasi Z memungkinkan Anda untuk melakukan semua perkalian dalam satu siklus instruksi, lalu menjumlahkan semua elemen vektor yang dihasilkan dalam satu siklus (tergantung platform). Jadi sementara matematika sama, kompleksitas waktu secara signifikan lebih rendah, menghasilkan speedup yang lebih tinggi.
mjcarroll
1
@ bt2 z-form cocok untuk implementasi sebagai persamaan perbedaan, yang hanya bergantung pada output masa lalu dan input saat ini, tanpa memerlukan jumlah berjalan yang pada beberapa titik akan meluap (atau meluap). DSP dirancang untuk memungkinkan implementasi filter digital yang efisien melalui pendekatan persamaan perbedaan. Lihat en.wikipedia.org/wiki/Digital_filter esp. bentuk langsung - itulah tujuan optimalisasi DSP.
freespace
1
Saya pikir Anda kehilangan sesuatu. Jumlah berjalan tidak akan pernah meluap dalam keadaan normal. Filter IIR tidak akan selalu jenuh, dan dalam kasus kontrol PID, itu biasanya tidak akan terjadi. Mengatakannya dengan satu algoritma tetapi tidak dengan yang lain adalah salah. Jumlah yang berjalan juga berdasarkan pada output sebelumnya. Jika seseorang menyebabkan overflow, mereka berdua akan melakukannya. Pikirkan seperti ini, implantasi ke-2 ADALAH yang pertama, dengan beberapa perhitungan matematika ... u (k-1) - kp (e (k-1) - kd / Ti (e (k-1) - e ( k-2) == (jumlah berjalan)
bt2
1
-1: Z-transforms tidak memberi Anda implementasi yang lebih efisien. Bahkan, jika Anda membandingkan filter low-pass 1-tiang menggunakan metode digital "naif" ke filter low-pass 1-tiang menggunakan transformasi bilinear, Anda akan mendapatkan implementasi yang sedikit kurang efisien dengan pendekatan ini. Terlepas dari penurunan filter, # variabel keadaan yang sama = tentang efisiensi implementasi yang sama. Sebagian besar ini adalah jumlah independen dari cara filter dirancang.
Jason S
5

Inilah kesepakatannya, dalam pengalaman saya:

  • Transformasi Z membantu untuk beberapa analisis: teori sistem diskrit-waktu-sampel paling baik dimodelkan melalui transformasi Z.
  • Desain pengendali PID atau filter low-pass dapat dilakukan baik melalui transformasi Z maupun analisis klasik, dengan salah satu dari beberapa pendekatan yang digunakan untuk mengubah turunan / integral dari waktu kontinu ke waktu diskrit. Jika kutub dan nol Anda berada pada frekuensi rendah dibandingkan dengan laju sampel, itu tidak masalah. Tetaplah dengan pendekatan apa pun yang Anda rasa paling percaya diri.
  • Z mentransformasikan derivasi filter dan pengontrol sering mengaburkan makna fisik dari parameter filter dan pengontrol tersebut. Jika saya memiliki PID loop dengan gain integral, gain proporsional, dan gain diferensial, saya tahu apa yang masing-masing parameter lakukan secara langsung. Jika saya menggunakan transformasi-Z, itu hanya angka yang harus saya peroleh entah bagaimana.
  • Implementasi filter dan pengontrol dapat atau tidak mengaburkan makna fisik dari parameter filter dan pengontrol tersebut. Kualitas ini sebagian besar independen dari poin sebelumnya: Jika saya memiliki desain berbasis Z-transform, saya dapat mengubahnya menjadi implementasi yang terlihat klasik, dan sebaliknya. Contoh Anda di bawah FINAL EDIT adalah yang baik karena implementasi kedua membuat integrator (" sum") terpisah dalam variabel statusnya sendiri. Variabel keadaan itu memiliki makna. Implementasi pertama membuat variabel status sebagai riwayat kesalahan yang lalu; itu memiliki makna, tetapi memberikan sedikit wawasan menurut saya.

Akhirnya ada masalah lain yang melibatkan nonlinier atau analisis yang sering membuat Anda memilih satu implementasi lebih dari yang lain (bagi saya itu selalu merupakan pendekatan klasik untuk pengendali, untuk filter FIR itu adalah transformasi Z, dan untuk filter IIR 1 atau 2 tiang biasanya merupakan pendekatan klasik):

  • Untuk pengendali, saya selalu menyimpan integrator sebagai variabel keadaan, bukan sampel kesalahan masa lalu. Alasannya adalah bahwa sistem yang sebenarnya sering membutuhkan anti-windup di mana Anda harus menjepit integral agar tidak terlalu positif atau terlalu negatif. (Dan jika Anda menerapkan dalam titik-tetap, Anda harus tetap melakukan ini, karena kondisi sampul ketika Anda menekan overflow akan melakukan Hal-hal Buruk terhadap perilaku loop kontrol Anda)

  • Untuk alasan yang sama, saya juga selalu menghitung integrator dengan cara yang disebut keluaran: misal sum += Ki*error; out = stuff + sumdaripada sum += error; out = stuff + Ki*sum. Dengan pendekatan kedua, jika Anda mengubah gain Ki, itu mengukur efek integrator pada output naik dan turun, yang mungkin bukan yang Anda inginkan, dan batasnya berubah tergantung pada gain. Jika Anda mengalikan kesalahan dengan Ki sebelum mengintegrasikan, unit integrator Anda sama dengan unit output loop kontrol, dan memiliki arti fisik yang lebih jelas.

(pembaruan: Saya telah menulis entri blog tentang topik ini secara lebih rinci.)

Jason S
sumber
4

Edit :

Menggunakan Z-transform memudahkan untuk menggabungkan dan menyederhanakan sistem LTI untuk analisis . Sebagai contoh, serangkaian rangkaian sistem LTI k dengan fungsi transfer H1, H2, ..., Hk akan bergabung sebagai produk sederhana H = H1*H2*...*Hk. Juga, fungsi transfer loop umpan balik negatif adalah T = G/(1 + G*H), di mana H berada di jalur umpan balik. Setelah Anda memiliki fungsi transfer keseluruhan, Anda dapat menganalisis stabilitas (lokasi kutub) dan kinerja (transien, kesalahan kondisi tetap), menambahkan filter dan umpan balik tambahan untuk mengoptimalkan desain.

Untuk sub-sistem tingkat tinggi, Anda dapat mempartisi fungsi sistem dan mengimplementasikannya sebagai serangkaian biquad bertingkat (yaitu dengan pasangan nol dan kutub, seperti konjugat kompleks atau akar berulang), yang mengurangi ketidakstabilan yang disebabkan oleh kuantisasi. Biquad bentuk kanonik:

bagian biquad

Eryk Sun
sumber
Jawaban Anda terdengar mengesankan, tetapi saya tidak tahu apa yang Anda katakan. Apa itu stabilitas kuantisasi, misalnya, dan bagaimana itu lebih unggul untuk satu bentuk persamaan daripada yang lain?
bt2
1
Fungsi transfer H (z) adalah fungsi rasional B (z) / A (z). Setiap polinomial dalam z adalah faktor N nol untuk sistem urutan N. Nol A (z), yang ada di penyebutnya, disebut kutub (ini adalah jalur umpan balik). Untuk faktor penskalaan konstan, sistem Linear Time Invariant (LTI) dijelaskan oleh nol dan kutubnya.
Eryk Sun
1
Sistem LTI waktu diskrit stabil jika semua kutubnya berada di dalam lingkaran unit pada bidang-z. Tetapi kuantisasi dengan ketelitian digital yang terbatas menghasilkan noise yang dapat menyebabkan suatu sistem menjadi sedikit stabil, tidak stabil atau hanyut ke dalam ketidakstabilan seiring waktu. Dengan memfaktorkan H (z) ke dalam produk biquadratics (biquads), kesalahan semacam ini diminimalkan.
Eryk Sun
2
Biquad adalah partisi minimum yang disukai karena nol dari suatu polinomial dengan koefisien nyata adalah nyata atau berpasangan dari konjugat kompleks. Biquad B (z) / A (z) adalah (b0 + b1z ^ -1 + b2z ^ -2) / (a0 + a1z ^ -1 + a2z ^ -2).
Eryk Sun
Saya menambahkan dan kemudian menghapus sebuah contoh untuk derau kuantisasi yang membandingkan kuadrat bertingkat dengan poli orde 4 langsung. Tapi itu terlalu banyak. Saya perlu tidur. Maaf, tyblu.
Eryk Sun
3

Bagian yang sulit tentang kontroler PID bukanlah kode itu sendiri. Masalah sebenarnya muncul ketika mencoba mengoptimalkan pengontrol. Tentu Anda dapat melakukan coba-coba dan mendapatkan pengontrol yang cukup baik, tetapi beberapa sistem terlalu rumit untuk metode coba-coba agar mudah dilakukan. Sistem yang sama ini cenderung menjadi yang membutuhkan pengontrol yang sangat baik, bukan hanya yang layak. Dalam hal ini Z-transform jauh lebih mudah untuk dianalisis.

Hal lain yang perlu dipikirkan adalah stabilitas sistem. Anda mungkin berurusan dengan sistem yang agak sulit menjadi tidak stabil, atau bahkan jika itu tidak menyakiti apa pun. Tetapi ada banyak sistem yang dapat memiliki hasil bencana jika controller menyebabkannya menjadi tidak stabil. Z-transform adalah tempat lain di mana lebih mudah untuk mengidentifikasi apakah akan ada masalah.

Dan 1 catatan terakhir. Saat menganalisis suatu sistem secara keseluruhan, Anda harus mendapatkan persamaan untuk semua komponen dalam sistem Anda. Tentu Anda bisa mendapatkannya dari PID tanpa gelar PhD, tetapi jika Anda sudah menggunakannya dengan metode Z-transform, ada jauh lebih sedikit pekerjaan bolak-balik yang harus Anda lakukan.

Sekarang, sebagai preferensi pribadi, saya selalu menggunakan metode PID tanpa PhD. Ini hanya karena saya hanya menggunakan pengontrol mikro dengan sistem yang tidak terlalu tergantung pada pengontrol.

Kellenjb
sumber
2

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.

Shannon G Barber
sumber
1

Lebih baik menggunakan metode transformasi Z secara umum, karena dengan melakukan ini, Anda mempertahankan perilaku yang tepat dari sistem analog yang setara. Ada metode penyetelan terkenal, seperti Ziegler-Nichols, yang bekerja di domain analog seperti yang dipublikasikan. Jika Anda menggunakan metode transformasi Z, Anda memiliki ekspektasi yang ketat secara matematis bahwa controller yang dihasilkan Anda akan melakukan hal yang sama untuk nilai yang sama dari keuntungan P, I dan D, yang akan dilakukannya dalam domain analog, mengingat keuntungan tersebut. Plus Anda dapat menggambar root-locus diskrit untuk sistem dan memprediksi stabilitas untuk set keuntungan tertentu, yang tidak dapat dilakukan jika Anda membuat ad hoc controller langsung dalam kode.

Frank Rudolph
sumber