Keuntungan tuning controller bisa sulit, strategi umum apa yang bekerja dengan baik untuk mendapatkan sistem yang stabil yang menyatu ke solusi yang tepat?
Keuntungan tuning controller bisa sulit, strategi umum apa yang bekerja dengan baik untuk mendapatkan sistem yang stabil yang menyatu ke solusi yang tepat?
Jawaban:
Untuk motor kecil, torsi rendah dengan sedikit atau tanpa gearing, satu prosedur yang dapat Anda gunakan untuk mendapatkan nada dasar yang baik adalah untuk menyelidiki responsnya terhadap gangguan.
Untuk menyetel PID gunakan langkah-langkah berikut:
Gangguan apa yang Anda gunakan tergantung pada mekanisme controller terpasang. Biasanya menggerakkan mekanisme dengan tangan menjauh dari setpoint dan melepaskan sudah cukup. Jika osilasi tumbuh lebih besar dan lebih besar maka Anda perlu mengurangi P gain.
Jika Anda menetapkan gain D terlalu tinggi, sistem akan mulai mengobrol (bergetar pada frekuensi yang lebih tinggi daripada osilasi gain P). Jika ini terjadi, kurangi gain D hingga berhenti.
Saya percaya teknik ini memiliki nama. Saya akan meletakkannya di sini ketika saya menemukannya.
Metode eksperimen yang mirip dengan jawaban Haechmech yang saya ajarkan di perguruan tinggi:
Metode Ziegler-Nichols lebih tepat jika Anda bisa mendapatkan angka yang akurat untuk periode osilasi. Itu biasanya menyebabkan osilasi menggunakan angka "PID klasik" yang diberikan, jadi itu tidak selalu optimal.
Untuk aturan umum tentang efek setiap istilah pada waktu naik, overshoot, waktu penyelesaian, kesalahan kondisi tetap, dan stabilitas, lihat Tabel 1 dari "Analisis dan Desain Sistem Kontrol PID" , oleh Li, Ang, dan Chong dalam Sistem Kontrol IEEE Majalah.
Embedded.com telah memindahkan artikel saya lagi, tetapi di sinilah tempatnya sekarang. Ini menunjukkan kepada Anda berdua cara menulis loop PID (mencari tahu bagaimana melakukannya dalam sesuatu selain floating point yang tersisa sebagai latihan untuk pembaca) dan cara menyetelnya.
Cara terbaik sangat tergantung pada kemampuan Anda. Cara untuk mendapatkan tuning terbaik , dengan anggapan Anda tangan sistem kontrol yang berpengalaman, biasanya mengukur respons pabrik ("plant" == "hal yang Anda kontrol"), lalu tergantung pada cara Anda melakukan pengukuran mengekstraksi model pabrik dan mendesainnya, atau hanya mendesain langsung ke pengukuran.
Untuk tanaman sulit tertentu Anda akan menemukan bahwa Anda tidak pernah dapat melakukan pengukuran yang memuaskan, dalam hal ini Anda harus menggunakan model saja. Itu jarang, tetapi memuaskan ketika Anda membuatnya bekerja.
Sebastian Thrun mempresentasikan algoritma sederhana untuk menyetel PID di kelas "How to Program a Robotic Car". Ini disebut "twiddle", dia menggambarkannya di sini .
Twiddle sangat rentan menemukan minima lokal - ini berarti Anda dapat membuat seperangkat tiga konstanta yang baik-baik saja, tetapi tidak optimal untuk situasi tersebut. Masalah penyetelan konstanta PID adalah subset dari masalah pencarian yang lebih umum untuk menemukan parameter tertentu untuk memaksimalkan utilitas (dalam hal ini, meminimalkan kesalahan algoritma PID). Anda dapat melihat ke solusi umum lain untuk masalah ini, seperti mendaki bukit, simulasi anil, algoritma genetika, dll. Yang mungkin akhirnya menemukan solusi yang lebih optimal.
Berbeda dengan dua jawaban lainnya saya akan mengatakan cara manual yang baik untuk menyetel PID mengabaikan Kd. Jadi mulailah dari 0 dan tingkatkan Kp sampai Anda mencapai target, lalu naikkan Ki untuk menghilangkan kesalahan kondisi stabil.
Kd dapat mengacaukan masalah karena berespons buruk terhadap noise, kemudian Anda mulai menambahkan filter pada input analog Anda dan kemudian mempertanyakan apa yang dilakukannya selain memperlambat kontrol Anda dan membuat semuanya lebih sulit untuk dikerjakan ...
Hal lain yang pasti membingungkan saya adalah jika persamaan PID dalam bentuk standar atau dalam bentuk independen (paralel dalam wikipedia). Efek Ki tampaknya terbalik ketika bentuknya adalah cara yang salah dengan apa yang Anda pikirkan. Kedua jenis digunakan dalam otomatisasi, kadang-kadang dengan opsi untuk beralih di antara mereka.
Pemodelan sistem
Tentu saja penyetelan eksperimental dapat dilakukan seperti yang disebutkan dalam jawaban lain, tetapi jika Anda dapat menentukan model dinamis yang masuk akal untuk apa pun yang ingin Anda kontrol dan dapat mengidentifikasi parameternya , Anda harus dapat merancang pengontrol Anda berdasarkan dengan baik kriteria -defined seperti overshoot , naik waktu , waktu penyelesaian , kesalahan steady-state dan sebagainya.
Bahkan ada alat di MATLAB yang dapat mengatur pengontrol Anda untuk mengoptimalkan kombinasi kriteria ini, yang membuatnya lebih baik untuk digunakan.
Ketahui pengontrol Anda
Mempelajari apa yang dilakukan oleh setiap parameter dalam kontroler PID juga cukup membantu. Semua algoritma eksperimental didasarkan pada pengetahuan semacam ini, entah bagaimana. Jika Anda tidak hanya mengikuti instruksi, tetapi juga bisa merasakannya sendiri, Anda mungkin akan lebih mudah untuk menyetel pengontrol Anda secara manual.
Masalah dunia nyata
Ada kemungkinan salah satu dari hal-hal ini, antara lain, akan menghampiri Anda ketika menyetel pengontrol Anda: windup , laju sampling tidak memadai , saturasi .
Kesimpulan
Pada akhirnya, itu semua tergantung pada apa yang sebenarnya dapat Anda lakukan dengan sistem Anda untuk mendapatkan pengetahuan tentang cara kerjanya dan jenis eksperimen apa yang dapat dilakukan. Hal terbaik adalah untuk benar-benar mempelajari lebih lanjut tentang pengontrol PID dan teori kontrol secara umum, IMO, tapi saya bias :)
Saya akan mencoba sedikit memperluas dari pengalaman saya untuk mereka yang mungkin tertarik. Saya pikir masalahnya adalah kita memiliki banyak teori kontrol yang agak tidak dapat diakses (dan kadang-kadang tidak berguna) dan kemudian kita memiliki aturan praktis yang membuat asumsi tentang sistem yang sering tidak akurat.
Stabilitas
Mari kita bicara tentang mengapa loop kontrol menjadi tidak stabil. Untuk diskusi ini saya akan menganggap sistem linear. Secara tidak resmi ini berarti bahwa jika sinyal kontrol Anda adalah gelombang sinus pada frekuensi yang diberikan maka output yang Anda amati berada pada frekuensi yang sama dan jika Anda mengubah amplitudo sistem kontrol Anda, output Anda merespons pada rasio yang sama. Asumsi ini adalah perkiraan yang baik untuk banyak sistem dunia nyata dan mari kita lihat frekuensi yang berbeda secara terpisah.
Jika Anda melihat jalur kontrol Anda memiliki set-point, pengontrol PID Anda, sistem Anda (alias "Plant"), dan kemudian sensor Anda. Bayangkan set-point tetap dan gelombang sinus dari sensor Anda (ini sama dengan gangguan dunia nyata pada sensor, umpan balik). Dalam sistem yang tidak stabil, umpan balik Anda menyebabkan loop kontrol memperbesar kesalahan daripada menguranginya sehingga seiring waktu peningkatan amplitudo Anda meningkat. Alasan ini terjadi adalah karena melakukan penundaan, atau untuk frekuensi khusus ini pergeseran fasa antara input dan output. Untuk frekuensi yang diberikan kita dapat melihat pergeseran loop terbuka (yaitu tidak ada umpan balik) dan amplitudo output dan ketika kita menggambar semua itu pada grafik kita mendapatkan sesuatu seperti Bode Plot. Jika kita memiliki situasi dalam grafik loop terbuka ini di mana kesalahan terus bertambah maka kita memiliki sistem yang tidak stabil. Jika penundaan kurang dari 1/2 panjang gelombang atau penguatan kurang dari x1 sistem akan stabil . Dalam praktiknya kami menginginkan beberapa margin dari titik itu (mendapatkan margin dan fase phase) yang mengapa Anda akan melihat ini "mundur" di banyak metode manual / heuristik.
Masalah utama dengan metode manual itu adalah Anda buta terbang dan Anda dijamin mendapatkan sistem kontrol yang buruk.
Perlu diingat juga bahwa makna P, I dan D terkait dengan apa yang diukur sensor Anda dan kontrol apa yang Anda terapkan. Kesalahan umum dalam pengontrol yang dibuat di rumah adalah bagi orang untuk berpikir bahwa mereka menerapkan P padahal sebenarnya tidak. Pengontrol motor sering memiliki loop posisi, berjalan di atas loop kecepatan yang berjalan di atas loop torsi. (A cascade )
OK tapi bagaimana ini membantu kita?
Poin pertama yang ingin saya sampaikan adalah bahwa jika Anda membangun kontroler PID Anda sendiri, Anda juga harus membangun cara untuk mengukur respons loop terbuka. Lakukan sapuan frekuensi pada input ke controller Anda dan ukur output sensor dengan umpan balik terputus. Kemudian Anda dapat menggambar plot Bode loop terbuka dan melihat mengapa sistem Anda stabil dan dapat menukar berbagai kontrol. Ini juga berguna untuk mengukur respons loop tertutup dan Anda dapat melakukannya dengan sistem apa pun dengan melakukan sapuan frekuensi set-point Anda saat loop ditutup. Kedua hal ini tidak terlalu sulit dan tidak membutuhkan banyak pengetahuan teoritis.
Jika Anda hanya mengutak-atik kontrol tanpa memahami apa yang terjadi di bawah tenda Anda tidak akan dapat mengoptimalkan sistem Anda. Membangun beberapa intuisi tentang sistem ini tidaklah sulit. Misalnya gain proporsional tidak berpengaruh pada fase tetapi hanya meningkatkan gain loop terbuka di semua frekuensi. Jadi apa yang Anda lakukan ketika Anda meningkatkan keuntungan proporsional dalam semua metode penyetelan manual adalah menemukan frekuensi di mana fase menuju -180. Lihat ini untuk mendapatkan beberapa ide tentang dampak berbagai kontrol pada respons frekuensi Anda.
Cukup sering mendapatkan kinerja loop tertutup terbaik melibatkan mengutak-atik sistem dan bukan hanya keuntungan kontroler. Yang Anda inginkan adalah membuat sistem sekaku mungkin. Itu akan memungkinkan Anda meningkatkan parameter kontrol dan mendapatkan bandwidth loop terbuka dan tertutup terbaik. Dalam pengalaman saya dalam aplikasi kontrol motor, keuntungan proporsional adalah yang harus melakukan sebagian besar "kerja" dan integrator "sisanya". Saya tidak berpikir Anda membutuhkan istilah D sama sekali. Memiliki low pass filter dan notch filter banyak membantu dalam situasi di mana Anda mungkin memiliki resonansi mekanis tetapi mengaturnya tanpa Bode Plot sangat sulit (frekuensi osilasi yang Anda amati dalam loop tertutup mungkin berbeda dari loop terbuka).
Jika keselamatan menjadi perhatian (motor yang sangat kuat atau sistem yang dapat dihancurkan oleh motor yang lepas kendali) Anda perlu memasukkan beberapa batasan sebelum Anda mulai menyetel (misalnya batas saat ini, kesalahan posisi maksimum) untuk melindungi sistem. Maka Anda perlu merasakan kisaran parameter. Jika umpan balik Anda memiliki 40 hitungan per rotasi atau 4000 hitungan per rotasi, parameter Anda akan menjadi faktor 100 untuk sistem yang diberikan. Pendekatan saya adalah pertama-tama menemukan rentang di mana Anda memiliki beberapa kemampuan kontrol yang buruk dan kemudian naik dari sana dimulai dengan P dan kemudian saya (meskipun lagi Anda buta). Mundur menciptakan margin stabilitas ini.
Di luar loop tertutup
Loop tertutup mencoba untuk menghilangkan kesalahan dari sistem. Itu akan selalu memiliki kinerja yang agak terbatas. Apa yang ingin Anda lakukan adalah meminimalkan kesalahan yang dilihat oleh pengontrol loop tertutup dan salah satu cara untuk melakukannya adalah melalui teknik yang disebut umpan maju. Dalam umpan-maju Anda pergi di sekitar controller dan mengarahkan perintah langsung ke sistem. Contohnya adalah umpan-maju percepatan. Jika Anda tahu torsi motor Anda konstan dan Anda tahu bebannya, Anda bisa mengetahui berapa banyak arus yang perlu Anda kendarai untuk mendapatkan akselerasi beban tertentu. Anda cukup mengambil akselerasi input perintah, gandakan dengan konstanta dan tambahkan itu ke perintah drive pengontrol. Anda pada dasarnya melakukan apa yang diperlukan untuk menggerakkan sistem jika tidak ada pengontrol dan semakin dekat Anda semakin sedikit kesalahan yang harus dilalui loop Anda dan semakin baik kinerja sistem Anda. Itu membuat perbedaan besar dalam latihan.
Ziegler-Nichols adalah metode manual yang mudah. Metode yang lebih kuat juga ada - ini biasanya bergantung pada solusi matematika (analitik, optimasi berulang, dll.)
Di luar itu, google "PID self-tuning" untuk beberapa teknik otomatis. Favorit saya adalah aplikasi jaringan saraf untuk tuning PID.
0.01sec
) waktu untuk 20secs
sebagai 3
x 2000
matriks)Ada pendekatan yang lebih cepat yang disebut Ziegler – Nichols :