Cara menyetel pengontrol PID ke proses nonlinear

9

Saya memiliki proses termal nonlinear (radiasi nonlinear menjadi lebih dan lebih hadir saat suhu naik) yang saya ingin menyetel pengontrol PID. Saya ingin mengontrol suhu seakurat mungkin.

Saya telah merencanakan untuk membagi kisaran suhu dalam rentang pseudo-linier N (harus ditentukan), dan untuk masing-masing rentang suhu ini: muat model urutan pertama menggunakan langkah suhu kecil, dan menghitung parameter PID yang sesuai dengan model ini. Parameter PID akan secara otomatis beralih tergantung pada suhu proses *.

Masalah saya adalah sebagai berikut: pertimbangkan pos pemeriksaan 70 ° C misalnya. P watt sudah mengalir untuk mencapai suhu ini. Saya akan menyuntikkan dP watt untuk meningkatkan suhu sebesar 1 ° C. Saya kemudian akan membuat catatan waktu konstan, dan gain kondisi mapan akan 1 / dP ° C / W. [Tolong bisakah kamu berpikir sejenak apakah ini benar?] Akhirnya, aku akan menyetel PID ke pabrik itu untuk mendapatkan parameter untuk kisaran suhu itu, dan beralih ke rentang lainnya.

Sekarang, anggap prosesnya mencapai 70 ° C. Parameter baru di-load dan reset counter integral. Kesalahan mungkin 1 ° C, tetapi daya yang dibutuhkan lebih dari itu untuk mencapai 21 ° C, sudah pasti pengontrol akan menuntut kurang dari P watt. Ini berarti suhu akan turun jauh sebelum persyaratan integral membutuhkan watt P, dan hanya dengan itu watt tambahan dP akhirnya membawa proses ke 71 ° C (dan tentu saja akan melampaui overshoot). P lebih besar dibandingkan dengan dP, semakin buruk.

Sepertinya pemanas harus didorong dengan jumlah output pengontrol, dan daya yang diperlukan untuk tetap pada "suhu referensi" saat ini (misalnya 70 ° C). Tapi pengendali rak tidak menawarkan itu, jadi harus ada cara lain.

Apa yang saya lewatkan? Apa cara yang tepat?

*: Ini secara efektif Mendapatkan Penjadwalan .

pengguna42875
sumber
1
Kontroler PID umumnya ditujukan untuk sistem linier. Ia cukup kuat untuk mengendalikan beberapa sistem non-linear juga di sekitar beberapa titik operasional "hampir linear". Jika bukan itu masalahnya, teknik yang berbeda dapat digunakan untuk membuat linierisasi pabrik yang dikontrol (lihat "linierisasi umpan balik" atau memperkenalkan beberapa loop dalam)
Eugene Sh.
Terima kasih atas komentar Anda. Itulah yang ingin saya capai: gunakan pengontrol PID dalam kisaran suhu "hampir linier". Saya sudah mencari-cari dengan kata kunci tersebut tetapi tidak berhasil.
user42875
1
Alih-alih melatih beberapa model, dapatkah Anda memasukkan nilai input melalui fungsi 'linierisasi' sebelum meneruskannya ke pengontrol PID, dan melatihnya berdasarkan hal itu?
Nick Johnson
1
Pendekatan Anda terdengar oke bagi saya. Anda akan menyesuaikan gain dan konstanta waktu tergantung pada suhu. Anda harus memikirkan apa yang terjadi pada cross over points. Sudahkah Anda membangun sesuatu yang tidak berfungsi sebaik yang Anda inginkan? Lingkaran kontrol dapat menyembunyikan banyak non-linearitas. Dan mungkin Anda akan baik-baik saja tanpa menjadi mewah.
George Herold
Mengapa radiasi nonlinier? Jika tungku bocor suhu, maka kehilangan daya adalah linear Q = mc * delta_T. Jika sistem Anda baru saja bocor, maka hampir setiap konstanta tetap, seperti waktu mati, waktu naik, kecuali keuntungan berkurang. Anda bisa saja membuat variabel Kp Kp (T_actual) sebagai f linear dari Kp_initial dan Kp_final.
Marko Buršič

Jawaban:

11

Bagaimana cara menyetel pengontrol PID ke proses nonlinear?

Kamu tidak. Anda membuat linierisasi proses, kemudian membuat pengontrol PID bekerja pada nilai-nilai linear.

Dengan "membuat garis proses", saya tidak bermaksud membuat proses itu sendiri linier. Itu biasanya tidak dapat dilakukan karena fisika. Namun, Anda dapat meletakkan sesuatu yang non-linear antara output pengontrol PID dan input proses sehingga output PID mengontrol proses secara linear dari sudut pandang pengontrol PID.

Pembuat garis seperti itu tidak perlu sangat akurat karena itu ada di dalam loop umpan balik. Tujuannya adalah untuk memberikan tampilan gain konstan di seluruh rentang dinamis kontrol. Cara sederhana dan umum adalah fungsi berbasis tabel linear sepotong-bijaksana. 16 atau 32 segmen biasanya cukup untuk apa pun kecuali proses yang sangat tidak linier.

Contoh kasus terburuk yang pernah saya temui adalah mengendalikan arus melalui tabung elektron dengan mengubah seberapa keras filamen katoda digerakkan. Fungsi temperatur katoda terhadap arus berkas elektron sangat tidak linier, dan sistem yang mengendalikan arus filamen katoda juga agak non-linear. Dalam hal ini terlalu sulit untuk memprediksi seluruh kekacauan ini, jadi saya menggunakan prosedur kalibrasi selama produksi yang melangkah melalui nilai kontrol drive filamen, diukur arus balok untuk masing-masing, kemudian dihitung tabel pencarian 32 segmen dari itu. Ini bekerja sangat baik, dan kami dapat menyetel pengontrol PID balok saat ini untuk respons yang baik di seluruh jajaran.

Tanpa fungsi linierisasi di depan proses, Anda harus menyetel pengontrol PID untuk stabilitas pada titik kenaikan inkremental tertinggi dari proses. Ini kemudian menghasilkan perilaku yang sangat teredam di titik lain.

Ditambahkan

Tidak ada dalam pertanyaan Anda yang diperbarui yang mengatakan apa pun tentang mengapa metode di atas masih bukan ide yang baik dan berlaku. Anda mengatakan Anda menggunakan pengontrol analog. Reaksi pertama saya adalah "1980-an sudah lama berlalu, jangan lakukan itu." Namun, pengontrol PID dan linearizer pabrik dapat bersifat independen.

Tampaknya input tanaman adalah daya dan output adalah suhu. Ukur suhu steady state pada kisaran level daya. Dari sana Anda dapat menghitung fungsi yang mengubah "daya" yang dilinearisasi menjadi input daya instalasi yang sebenarnya. Kontroler PID analog mungkin mengeluarkan tegangan sebanding dengan daya. Yang harus Anda lakukan adalah memasukkan kotak hitam sesuai dengan tegangan yang melakukan pengukuran linier ke terjemahan tingkat daya yang sebenarnya.

Biasanya Anda akan melakukan ini dengan mikrokontroler yang memiliki A / D bawaan. Melakukan pencarian tabel ini dan interpolasi linier antara poin adalah sepele. Kemudian output hasilnya dengan cara yang akhirnya dikonversi menjadi tegangan. Karena instalasi lambat dibandingkan dengan mikrokontroler, ini bisa semudah menyaring dan menyangga output PWM. Atau Anda bisa mengendarai D / A secara langsung, meskipun sepertinya tidak perlu dalam kasus ini.

Sesuai dengan tema 1980-an controller Anda, Anda bisa melakukan ini dengan A / D, memori, dan D / A untuk nuansa retro.

Bagaimanapun, pengontrol PID sekarang secara efektif mengendalikan pabrik linier sejauh yang diketahui, dan menyetelnya ke kinerja yang baik harus dimungkinkan.

Melakukan transformasi linear sedikit demi sedikit pada input instalasi di satu tempat lebih mudah daripada mengubah 3 nilai di dalam kontroler PID pada rentang output. Yang terakhir adalah kludge, sedangkan yang pertama menangani masalah secara langsung. Juga jauh lebih mudah untuk mengukur data untuk fungsi linierisasi daripada menentukan perolehan P, I, dan D pada berbagai titik. Bahkan jika Anda melakukan itu, Anda masih memiliki masalah sementara, karena keuntungan yang tepat tidak segera diterapkan pada situasi tersebut. Lagi-lagi "mendapatkan penjadwalan" adalah kludge.

Olin Lathrop
sumber
Sangat menarik, terima kasih telah menghadirkan pendekatan linearisator. Saya menggunakan pengontrol perangkat keras yang langsung terhubung ke relay, jadi sayangnya saya harus melakukan penjadwalan gain. Apakah pendekatan identifikasi saya benar? Rasanya seperti tidak.
user42875
Saya telah mengedit pertanyaan saya untuk mengklarifikasi masalah saya - khususnya dua paragraf terakhir. (still, +1)
user42875
Saya telah bertanya kepada produsen pengendali apakah saya dapat memasukkan tabel mencari dengan interpolasi linier sebelum output - jika itu bisa dilakukan, saya pasti akan memilih opsi itu meskipun itu berarti saya harus melupakan tentang alat tuning biasa berdasarkan fungsi transfer dan semacamnya. Elegan. Jika tidak, saya harus melakukan penjadwalan perolehan yang sangat membosankan, tetapi tampaknya tidak ada yang salah dengan pendekatan saya, yang ingin saya periksa.
user42875
2

Ingatlah bahwa ketika Anda membuat model linier, Anda secara efektif mengasumsikan bahwa model nonlinear y = f (x) diganti dengan y = A * (x-x0) + B. Perhatikan bahwa x0 adalah titik linierisasi. Saat Anda memperkenalkan rentang untuk x, Anda berakhir dengan beberapa A, B, dan x0. Either way, input ke controller Anda akan menjadi kesalahan sehubungan dengan titik linierisasi saat ini. Namun, Anda masih mengimbangi sinyal input (dengan B), jadi meskipun kesalahannya 0 sehubungan dengan titik linierisasi saat ini, Anda masih akan membawa sinyal.

Dalam contoh Anda, bahkan jika kesalahannya adalah 0 derajat (pada titik set 70 derajat), pengontrol masih akan menghasilkan daya yang lebih besar dari 0.

Pål-Kristian Engstad
sumber
Terima kasih. Saya pikir Anda tertarik pada sesuatu, tetapi saya tidak begitu mengerti. Secara kasar mengatakan, saya menggunakan pengendali PID dasar (seperti analog), yang mana saya dapat mengubah istilah P, I, D dalam fungsi temperatur. Saya tahu bahwa sekaligus diselesaikan pada 70 ° C, daya tidak akan nol bahkan jika kesalahannya nol. Penyelesaian yang membuat saya khawatir: Saya pada dasarnya menjatuhkan controller pada 70 ° C, dan karena itu t = 0s untuk itu, istilah integral akan membutuhkan waktu untuk menendang jadi saya akan memiliki droop yang mengerikan. Hampir terdengar seperti metode saya salah.
user42875
(Pengontrol akan menuntut daya yang sangat kecil di awal, di bawah daya yang diperlukan untuk tetap pada 70 ° C)
user42875
Saya telah mengedit pertanyaan saya untuk menjelaskan - dua paragraf terakhir khususnya.
user42875
Sulit untuk memberikan saran tanpa rincian lebih lanjut mengenai proses Anda, tetapi sepertinya Anda memiliki sistem yang cukup tidak stabil di sekitar 70 derajat dan sekitar suhu itu sebagian besar kontrol terjadi karena kompensasi intragral (I dalam PID)?
Pål-Kristian Engstad
70 ° C hanyalah sebuah contoh, saya mungkin memiliki 6 rentang suhu yang berbeda untuk disetel. Sangat kasar mengatakan, saya mengendalikan suhu di dalam termos dengan memanaskan permukaan luar.
user42875
2

Salah satu pendekatan untuk kontrol nonlinear dengan pengontrol PID, sebuah pendekatan yang banyak digunakan dalam industri, disebut 'penjadwalan keuntungan'.

Masalah kontrol nonlinear dipecah menjadi serangkaian daerah linier yang cukup dan parameter yang sesuai digunakan untuk masing-masing wilayah.

Spehro Pefhany
sumber
Itulah yang saya coba capai, seperti yang dapat dibaca dalam pertanyaan saya ("Parameter PID akan secara otomatis beralih tergantung pada suhu proses *" "*: Ini secara efektif Mendapatkan Penjadwalan.")
user42875