Mempertahankan posisi dalam servo drive: kontrol bawahan vs mode langkah


Setelah artikel sebelumnya tentang pengendalian vektor motor listrik muncul, banyak pertanyaan muncul tentang posisi drive - bagaimana cara mengetahui posisi tertentu dengan drive? Bagaimana cara kerja servo drive di mesin modern, bagaimana menggunakan sinyal dari sensor posisi, bagaimana langkah drive berbeda dari drive servo dengan peraturan bawahan? Mari kita tunjukkan semuanya dalam bentuk gambar dan video.

Jadi apa itu servo dengan loop posisi? Untuk memulai, lihat ini. Untuk melihat grafik di latar belakang, saya menyarankan Anda untuk menonton dalam mode layar penuh.


Struktur kontrol tiga loop


Sistem kontrol berupaya mempertahankan posisi tertentu dari poros rotor. Saya membuat efek yang mengganggu, saya memindahkan rotor menjauh dari posisi yang ditetapkan, tetapi setelah melepaskan poros, itu kembali langsung ke tugas. Bahkan jika Anda "memutar" beberapa putaran, sistem kontrol akan melepaskan beberapa putaran ini kembali, dan dengan dinamika yang sangat baik - sehingga gerakan itu bahkan tidak punya waktu untuk masuk ke frame video. Di latar belakang, jadwal operasi drive terlihat: arus motor ditampilkan dalam warna merah (sebanding dengan saat ini), posisi saat ini dari poros rotor ditampilkan dalam warna hijau, dan pengaturan posisi berwarna kuning. Maksimum yang diizinkan saat ini (saat ini) motor dalam percobaan ini dibatasi hingga tiga kali maksimum, secara penuh saya tidak akan dapat menahannya dengan mudah.

Bagaimana cara kerja sistem kontrol seperti itu? Ini adalah sistem kontrol slave tiga loop klasik dengan koreksi berurutan, ditunjukkan pada Gambar. 1.


Gambar 1. Sistem tiga rangkaian regulasi bawahan

Mengapa bawahan? Karena setiap sirkuit tertutup adalah "bawahan" untuk tugas yang lebih tinggi. Ada tiga sirkuit dalam sistem, daftar saya mulai dari dalam: sirkuit (torsi) saat ini, kecepatan (kecepatan) sirkuit, posisi loop. Oleh karena itu, setiap sirkuit dengan regulatornya sendiri mempertahankan nilainya pada tingkat tertentu. Dalam hal ini, pengontrol PI untuk arus, pengontrol P untuk kecepatan, dan pengontrol PID untuk posisi digunakan. Tidak ada keajaiban seperti logika fuzzy, kontrol linear-kuadratik, dan banyak lagi.

Mengapa tepatnya tiga sirkuit dan tepatnya seperti itu? Saya akan mencoba menjelaskan, seperti biasa, "dengan jari". Jika kita ingin menyesuaikan posisi, maka yang terbaik yang dapat kita kontrol untuk ini adalah kecepatan (speed), karena itu adalah kecepatan yang secara langsung mempengaruhi perubahan posisi (kecepatan adalah turunan dari posisi), dan semua kuantitas lainnya (arus, tegangan dan lainnya) mempengaruhi situasi dengan cara yang lebih kompleks, lebih sulit untuk diatur. Lebih jauh, jika kita sekarang ingin mengatur kecepatan, maka yang terbaik yang dapat kita kendalikan adalah momen motor, karena momen menentukan percepatan drive, dan juga terhubung dengan kecepatan dengan hukum matematika paling sederhana. Karena untuk motor saat ini adalah saat ini (untuk motor DC, ini benar secara eksplisit,dan untuk motor AC, ini berlaku untuk arus penghasil torsi dalam kontrol vektor), untuk mengontrol momen, perlu untuk mengontrol tegangan pada inverter konverter, karena arus dan tegangan juga terhubung dalam pendekatan pertama melalui persamaan diferensial sederhana.

Jika Anda menghilangkan sirkuit dalam apa pun, maka ... posisinya akan diatur, tetapi akan diatur dengan buruk, tidak dengan kecepatan yang sama seperti pada sistem tiga sirkuit. Jika Anda membuang, misalnya, sirkuit saat ini, memaksa pengontrol kecepatan untuk secara langsung mempengaruhi tegangan inverter, maka saat penggerak (saat ini) akan tetap tidak terkendali - itu akan berubah seperti yang diinginkan, transien akan dibiarkan kebetulan. Sayangnya, beberapa arduinovides membuat struktur yang ditunjukkan pada Gambar. 2.

Fig. 2. Cara Anda tidak perlu menyesuaikan posisi drive.

Struktur seperti itu bekerja menjijikkan (perlahan dan berayun), meskipun entah bagaimana berhasil - pengontrol PI akan menarik semuanya keluar.

Langsung dan arus bolak-balik: apa perbedaan untuk loop posisi?


Apa perbedaan kontrol posisi untuk motor DC dan motor AC? Cara mempertahankan momen. Pada motor DC, cukup dengan menempatkan satu regulator arus, yang mempengaruhi tegangan belitan dinamo - Anda akan mendapatkan kontrol torsi. Pada motor AC (misalnya, mesin sinkron magnet permanen dan motor asinkron), kontrol vektor harus diterapkan. Apa itu dan cara kerjanya sudah dibahas secara rinci dalam artikel Kontrol vektor pada jari dan Kontrol vektor untuk motor asinkron pada jari. Seperti halnya untuk motor DC, kontrol vektor memungkinkan Anda untuk menyesuaikan torsi pada motor. Selanjutnya, pengontrol kecepatan dan posisi yang sama "digantung" dari atas. Operabilitas akhir dari loop posisi tidak tergantung pada jenis mesin (hanya sedikit perubahan nuansa).

Mode langkah


Untuk mesin sinkron dengan magnet permanen, ada opsi lain untuk mengatasi situasi - mode operasi "langkah". Motor yang dioptimalkan untuk itu, masing-masing, disebut stepper. Tidak semua motor stepper adalah mesin sinkron dengan magnet, tetapi kebanyakan dari mereka hanya itu (masih ada langkah-langkah jenis tipe induktor). Bagaimana cara kerjanya? Motor hanya memasok arus searah ke fase yang diperlukan. Dan itu dia. Rotor di bawah pengaruh "pegas magnetik" itu sendiri naik pada posisi yang sesuai dengan arus. Jika Anda perlu mengubah posisi poros, maka vektor saat ini harus diputar - lancar atau tergantung pada "driver" motor stepper (dengan atau tanpa microstep). Tentang cara kerja motor sinkron, dan di mana ada pegas magnetik telah dijelaskan dalam artikel .

Mode langkah baik karena selain loop saat ini tidak memerlukan apa pun - baik sensor posisi, atau bahkan mikrokontroler. Sistem kontrol untuk mode ini dirakit dari tiga setengah sirkuit mikro dan digunakan di semua mesin CNC dari level amatir (dan tidak demikian). Apa kerugiannya? Posisi itu juga menjijikkan. Mempertahankan posisi dalam mode ini adalah mesin itu sendiri - arus konstan disuplai ke stator, dan rotor cenderung berdiri di posisi yang sesuai. Orang dapat membayangkan dua magnet persegi panjang pada satu sumbu yang melewati tengahnya (Gbr. 3). Kami mengontrol satu magnet (arus stator), dan yang kedua - rotor, menjuntai dengan sendirinya dan cenderung berubah sesuai dengan yang pertama, sejajar dengannya.

Fig. 3. Mode melangkah operasi mesin sinkron

Momen pada rotor dalam mode ini berubah sesuai dengan hukum sinus dari sudut ketidakcocokan antara dua magnet. Pada posisi terkoordinasi, momen adalah nol (beban tidak bekerja pada rotor), pada 90 derajat (magnet tegak lurus), momen motor maksimum dan cenderung memutar rotor ke posisi terkoordinasi. Dan amplitudo dari perubahan saat ini tergantung pada besarnya arus yang disediakan.

Jumlah pasangan kutub


Untuk meningkatkan akurasi mempertahankan posisi dalam mode langkah, jumlah pasangan kutub pada motor ditingkatkan secara struktural. Jika ada satu pasang kutub, maka motor sesuai dengan dua magnet ini dalam gambar. 3 - rotor dapat menggantung hingga seperempat revolusi bolak-balik dari posisi tertentu. Ketika jumlah pasangan kutub meningkat, jumlah pergantian utara-selatan meningkat, baik di magnet rotor dan di belitan stator. Berikut adalah gambar yang menunjukkan motor dengan sepasang kutub dan dua:

Fig. 4. Satu pasang kutub vs dua pasang kutub.

Jika Anda mencoba untuk menghidupkan mesin seperti itu dengan dua pasang kutub dengan arus searah yang disediakan secara bertahap, maka momen pada rotor akan meningkat secara maksimal bukan dalam seperempat putaran (90 derajat, seperti pada satu pasang kutub), tetapi pada putaran kedelapan revolusi (45 derajat mekanis). Mesin akan memiliki dua posisi rotor yang stabil pada putaran mekanis. Untuk memudahkan menggambarkan proses dalam mesin, konsep "revolusi listrik" diperkenalkan - berapa banyak rotor perlu diputar sehingga magnet rotor dari satu kutub jatuh ke tempatnya dari yang lain, sama untuk mengambil satu "langkah". Kemudian mereka mengatakan bahwa rotor telah berubah 360 derajat, dan untuk menerjemahkan ini menjadi mekanis, perlu untuk membagi dengan jumlah pasangan kutub. Pada revolusi listrik, perilaku semua motor dalam hal kontrol adalah sama, terlepas dari jumlah pasangan kutub.Peningkatan jumlah pasangan kutub hanya menciptakan semacam "peralatan listrik" - Anda dapat menggunakan mobil dengan satu pasang kutub dan mengenakan roda pengurangan empat langkah, atau Anda dapat menggunakan mobil dengan empat pasang kutub dan mendapatkan, secara kasar, hal yang sama.

vs :


Untuk motor stepper, jumlah pasangan kutub dibuat sangat besar - 50, 100 atau lebih. Dalam hal ini, kemampuan alami untuk mempertahankan posisi sangat baik - jika Anda menjamin bahwa momen beban tidak pernah melebihi torsi engine maksimum, maka posisi tanpa sensor posisi akan dipertahankan dengan akurasi (± 360 / (jumlah pole_pairs * 4)) derajat mekanik. Benar, harga untuk ini adalah penurunan kinerja mesin yang kuat dalam hal berat dan ukuran serta efisiensi. Jika kita membandingkan kekuatan motor stepper dengan seratus pasang kutub dan ukuran motor sinkron yang sama dengan sejumlah kecil pasang kutub, maka kekuatan shagovik yang diijinkan lama akan beberapa kali lebih sedikit. Dan juga karena peningkatan jumlah pasangan kutub, shagovik memiliki masalah dengan bekerja pada kecepatan tinggi.Frekuensi arus di dalamnya harus diberikan sebanyak many_pair_poles kali lebih besar daripada di mesin sinkron "biasa", yang memberikan frekuensi arus urutan kilohertz atau lebih - ada kerugian besar pada pembalikan magnetisasi besi, dan tidak semua sistem kontrol dapat.

Selain itu, shagoviki tidak memberikan dinamika akselerasi dan pengereman yang baik, karena selama akselerasi mesin harus mengatasi dua titik: momen beban, serta momen dinamis untuk mempercepat massa roda gila dan badan kerja. Dan jika jumlah semua momen melebihi torsi mesin maksimum, ia akan melewati satu langkah, yang tidak dapat diterima untuk CNC. Karena itu, cacing tanduk berakselerasi dan rem dengan mulus, dengan margin besar antara momen total pada poros dan torsi engine maksimum, agar tidak melewati langkah.
Perlu juga dicatat bahwa dalam mode langkah-demi-langkah, ketika beban diterapkan ke rotor, itu akan selalu menyerah dan menyimpang dari posisi yang ditetapkan oleh sudut tertentu, apa pun arus yang dipasok ke motor. Juga, dengan kehilangan beban yang tajam, fluktuasi dimungkinkan - rotor pada pegas magnetik akan berayun bolak-balik. Jika beban tidak beruntung dan berdenyut, maka dapat bertepatan dengan frekuensi internal rotor, ayunkan, setelah itu rotor akan jatuh dari sinkronisitas - mesin akan "melewati satu langkah".

Apa yang harus dilakukan jika untuk menyelesaikan masalah Anda perlu mempertahankan posisi yang baik dan mendapatkan drive berkecepatan tinggi yang dinamis? Jangan gunakan stepshop! Dan gunakan mesin sinkron "biasa" dengan sejumlah kecil pasangan kutub sebagai servomotor, pasang sensor posisi dan buat sistem kontrol tiga putaran. Tidak ada "langkah" dalam sistem kontrol vektor - tidak ada ruginya. Dalam mode langkah, arus besar selalu diperlukan untuk melewati motor, dan dalam mode vektor dengan struktur kontrol tiga putaran, arus hanya mengalir ketika beban diterapkan ke poros. Keakuratan mempertahankan posisi dalam sistem regulasi bawahan paling sering ditentukan oleh keakuratan sensor posisi rotor. Semakin akurat sensor, semakin baik kerja dari posisi loop.Dan sensor posisi modern sangat akurat - ratusan ribu tag per revolusi mekanis. Ini adalah urutan besarnya lebih baik daripada memberikan motor stepper dengan langkah menghancurkan terkuat.

Mode langkah vs regulasi bawahan: latihan


Dan sekarang mari kita lihat dalam praktek semua hal di atas. Penting untuk menggambarkan pendirian tempat saya bekerja. Ada banyak informasi teknis, saya akan menyembunyikannya di bawah spoiler.
Bangku tes
VectorCARD 192101, , , .

. 5. VectorCARD 192101

– Leadshine ACM601V36-1000. 100, 4 , 36, 4, 11. – 1000 (, , 4000 () A B ).
– DRV8301-HC-EVM Texas Instruments.
– VectorCARD 192101 192101 «» (ARM Cortex-M4F, 100).
, , . 6.

. 6. : (), , .

- , , « ». . 1.
20, ( ) – 10. – , . , .


Mode langkah vs kontrol budak: perbandingan dalam mode statis


Pertama, kami membandingkan mode operasi selangkah demi selangkah dan sistem tiga putaran regulasi bawahan dengan kontrol vektor "dalam statika". Kami mengatur posisi rotor yang sama, dan kemudian kami secara bertahap meningkatkan momen beban pada poros. Dalam mode operasi langkah-demi-langkah, kami menyediakan arus pengenal 4A, dan dalam mode operasi vektor, kami menetapkan batasan saat ini 4A. Apa yang kita harapkan untuk dilihat?

Dalam mode operasi selangkah demi selangkah, arus akan konstan baik dalam fase maupun dalam amplitudo, dan posisi rotor harus “ditekuk” pada pegas magnetik di bawah beban. Karena jumlah pasangan kutub adalah 4, torsi maksimum harus dicapai dengan deviasi 360/4/4 = 22,5 derajat mekanis dari posisi semula yang disepakati.

Apa yang akan terjadi dalam sistem kontrol tiga sirkuit? Pengontrol posisi dalam percobaan ini adalah PID (proporsional - integral - diferensial). Huruf kuncinya di sini adalah "DAN" - ia memiliki komponen yang tidak terpisahkan. Ini berarti bahwa selama setidaknya ada beberapa ketidakcocokan antara posisi yang diberikan dan posisi saat ini, integrator regulator akan mengintegrasikan dan meningkatkan outputnya hingga kesalahan mencapai nol. Ini berarti bahwa jika Anda memuat poros secara perlahan, sehingga integrator memiliki waktu untuk mengintegrasikan dan mengkompensasi kesalahan (yaitu, dalam mode statis), maka poros akan berdiri pada posisi "mati" yang sama. Tetapi ketika margin (torsi) drive saat ini habis (referensi saat ini akan mencapai batas 4A), drive akan segera menyerah dan menyimpang dari referensi (namun, itu akan menarik dengan torsi maksimum menuju referensi sepanjang waktu).

Untuk melacak posisi saat ini dari poros rotor, akan lebih mudah untuk mengamati sinyal kesalahan dari sensor posisi (perbedaan antara referensi dan posisi saat ini), serta arus stator. Selama percobaan, osilogram dengan data ini akan terlihat di latar belakang. Untuk mengamati momen beban saat ini dalam percobaan, sebuah dinamometer khusus presisi tinggi digunakan, yang saya ambil dari laci meja dapur. Di sini, pada kenyataannya, pengalaman itu sendiri (untuk membuat sesuatu terlihat - layar penuh!):

Video itu mengkonfirmasi apa yang dikatakan. Dalam sistem kontrol tiga loop vektor, rotor tidak bergerak sampai saya “memilih” arus 4A yang tersedia, dan kemudian rotor mulai menyimpang. Dalam struktur DC-open dengan arus searah, rotor mudah menyerah pada momen eksternal. Karena jumlah pasangan kutub motor ini adalah 4, rotor menyimpang lebih dari 20 derajat dari referensi.

vs :


Semuanya menjadi lebih menarik dalam dinamika. Bagaimana jika pulsa, beban kejut diterapkan? Ini menghasilkan persaingan antara dua sistem yang secara fundamental berbeda. Dalam sistem kontrol vektor, kecepatan tergantung langsung pada kecepatan struktur kontrol tiga loop. Semakin kaku regulator disetel, semakin cepat frekuensi perhitungan struktur, semakin akurat dan lebih cepat sensor, semakin baik respons terhadap gangguan dalam dinamika. Dalam mode operasi selangkah demi selangkah, sistem kontrol "bersandar". Dia menciptakan vektor saat ini - itu saja yang dia butuhkan. Seluruh reaksi terhadap gangguan disediakan oleh mesin itu sendiri. Momen pada poros ketika poros rotor dibelokkan terjadi "secara instan", karena ini, pada kenyataannya, adalah interaksi dua magnet. Tetapi momen meningkat sebanding dengan sinus sudut defleksi listrik, yang berarti bahwa sistem seperti itu akan memiliki kekakuan tertentu.Secara umum, ini adalah "pegas magnetik" yang umum. Perbandingan dalam dinamika adalah pengalaman demonstratif yang sangat baik untuk sistem kontrol tiga sirkuit. Jika lambat, maka itu tidak akan dapat menunjukkan hasil yang lebih baik daripada struktur terbuka. Ya, dalam statika, struktur tiga putaran dapat memilih kesalahan dengan memposisikan ke nol bagian integral dari regulator, tetapi dalam dinamika itu juga dapat "melorot" lebih dari mode operasi langkah-demi-langkah yang biasa. Lihat itu?

Untuk melakukan percobaan ini, saya menggunakan beban terukur, yang saya temukan di kabinet saya dengan alat, serta benang yang diikat ke batang, yang memiliki dudukan cantilever pada kopling mesin. Dengan menjatuhkan beban ke bawah dari ketinggian tetap, kami memperoleh impuls beban impak pada poros rotor. Anda dapat mengamati seberapa banyak poros rotor menyimpang dari pekerjaan pada saat tumbukan. Ini adalah video percobaan:


Awalnya, langkah mode operasi dengan vektor arus tetap dihidupkan. Saya menunjukkan bagaimana rotor tertekuk di bawah pengaruh momen beban, bagaimana, setelah mengalahkan momen beban, Anda dapat melompat ke posisi tetap lainnya. Lalu saya melakukan percobaan untuk membuang barang. Lebih jauh sama untuk struktur kontrol tiga loop. Apakah Anda memperhatikan betapa poros rotor menyimpang dalam video dalam sistem kontrol tiga putaran? Atau mungkin lebih? Saya tidak.

Jika video serupa diambil oleh Discovery Channel, mereka pasti akan memasang kamera berkecepatan tinggi untuk foto perbandingan yang indah. Namun, kami memiliki alat yang lebih tepat - sensor posisi rotor dan mikrokontroler. Anda hanya perlu menghapus kesalahan bentuk gelombang yang bekerja pada posisi pada saat penerapan beban pulsa. Cara ini dilakukan dijelaskan secara rinci dalam artikel.Metode untuk debugging perangkat lunak mikrokontroler di drive listrik . Singkatnya, mikrokontroler merekam titik-titik gelombang dalam array untuk acara tertentu, dan kemudian gelombang diunduh ke komputer dan ditampilkan. Dalam perangkat lunak pengontrol, saya mengatur pemicu untuk membanting gelombang ketika kesalahan posisi lebih besar dari pengaturan tertentu, memasukkan beberapa baris kode C untuk ini. Kemudian di komputer saya mendapatkan osilogram seperti itu untuk mode langkah operasi dengan arus 5A:


. 7. «» – . ( 4), , – . 21 .

Saya menambahkan tiga variabel sistem kontrol ke osiloskop: kesalahan posisi, arus stator, kecepatan poros. Osilogram menunjukkan bahwa arus stator tetap konstan dan sama dengan 5A, beban kejut hanya menimbulkan sedikit gangguan (karena EMF motor yang berputar). Tapi situasinya melonjak kuat. Deviasi maksimum posisi poros dari referensi adalah 36 derajat listrik (atau 9 mekanik). Ada mode osilasi teredam rotor setelah benturan. Saya melakukan beberapa percobaan seperti itu, memastikan pengulangan. Semua osilogram ternyata serupa - ada baiknya jika Anda memiliki alat yang diperlukan, waktu untuk melakukan percobaan dan mendapatkan osilogram (sebagaimana dimasukkan dalam artikel) adalah 5-10 detik.

Sekarang mari kita lihat apa yang akan ditunjukkan oleh struktur kontrol tiga-sirkuit (Gbr. 8). Sebelumnya, saya mengatur semua regulator ke kecepatan sedang.

Fig. 8. Osilogram reaksi terhadap lonjakan beban berdenyut dengan sistem tiga putaran regulasi bawahan. Violet menunjukkan penyimpangan rotor dari posisi yang diatur dalam derajat listrik (dibagi 4 untuk beralih ke mekanik), biru menunjukkan arus stator sepanjang sumbu q (saat-membentuk arus), biru menunjukkan tugasnya, dan merah menunjukkan frekuensi rotasi saat ini. Dalam satu sel, sumbu waktu adalah 21 milidetik.

Prosesnya lebih menarik di sini. Selain situasi, pada kenyataannya, saya menambahkan ke osiloskop segala macam jumlah, yang menunjukkan pekerjaan peraturan bawahan. Pada saat awal, itu masih nol: kesalahannya adalah nol, kecepatan, arus stator dan tugasnya. Tidak ada gaya yang bekerja pada rotor, ia bersandar karena gaya gesekannya. Tetapi pita listrik pada saat ini sudah tidak dapat ditawar lagi terbang turun, talinya terlepas ... Pada saat tertentu, panjang utas dipilih, beban mengenai poros, posisi mulai berubah, kesalahan (umpan balik dari pengontrol posisi) melonjak naik, seiring dengan kecepatan poros. Menanggapi hal ini, sistem tiga sirkuit secara dramatis meningkatkan momen pada drive, mencoba mengembalikannya ke posisi semula. Lima milidetik setelah dampak, momen pada motor mencapai maksimum yang diizinkan (5A saat ini),setelah itu posisi dengan enggan mulai berubah ke arah yang berlawanan, kecepatan berubah tanda. Setelah terbang di atas titik nol dan membuat beberapa osilasi, sistem datang ke tugas.

Dapat dilihat bagaimana tugas untuk arus stator (biru) sedikit di depan dari nilai saat ini (biru), tetapi penundaannya kurang dari satu milidetik, yang menunjukkan kecepatan tinggi dari loop saat ini. Namun, beberapa "kelambanan" dan "jarum" terlihat dalam tugas saat ini, terutama pada akhir proses transisi. Dari mana dan dari mana? Mari kita lihat apa yang diberikan oleh pengontrol posisi dalam proses ini - output dari komponen proporsional, integral, dan diferensial. Saya menjatuhkan kaset itu lagi, ini dia:


. 9. . ( 4), – , – , – . 21 .

Lihat bagaimana ketiga bagian pengontrol PID bekerja pada transien. Bentuk gelombangnya seperti dari buku teks, tapi yang ini langsung, nyata dan segar, hanya dari mesin. Output dari bagian proporsional berbanding lurus dengan kesalahan. Bagian yang tidak terpisahkan adalah integral kesalahan, lihat bagaimana ia terintegrasi “turun” dari fluktuasi besar pertama dan kemudian dengan enggan mencapai nol. Bagian diferensial adalah turunan dari kesalahan. Tetapi karena sensor posisi bersifat inkremental dan hanya 1000 tanda, maka perubahan pada setiap tanda adalah suatu peristiwa. Oleh karena itu, posisi untuk sistem kontrol berubah secara diam-diam, tidak teratur, yang berarti bahwa turunan dari perubahan semacam itu akan "seperti jarum". Atau bahkan impuls, persegi panjang, berisik - yang kita lihat.

Tapi tunggu ... Turunan dari posisi adalah kecepatan yang sama! Gulir ke atas untuk gambar. 8 dan bandingkan grafik kecepatan itu dengan grafik bagian diferensial Gambar 9. Hal yang sama, tetapi tidak ada suara! Karena kecepatan rotasi modul pemrosesan encoder inkremental ditentukan lebih kompeten - perangkat keras mikrokontroler, yang melacak waktu antara tanda sensor. Posisi "turunan" yang sama, tetapi lebih tepat diukur.

Apa itu moral? Tidak semua komponen pengontrol sama bermanfaatnya. Apa yang dilakukan komponen diferensial pengontrol posisi secara teoritis harus dilakukan oleh putaran kecepatan hilir. Karena saya membutuhkannya untuk penyetelan yang lebih baik, itu hanya berarti bahwa saya belum menyetel putaran kecepatan menengah.

Oh ya Di mana kita mulai di sana? Dengan kesalahan posisi. Dalam mode operasi terbuka, kesalahannya adalah 36 derajat listrik (9 mekanik), dan dalam sistem tiga putaran regulasi bawahan dengan pengaturan regulator ini, 21 derajat listrik (5,2 mekanik). Lebih baik ya Apakah ini lebih baik? Mari kita ambil koefisien pengontrol posisi lain. Saya meningkatkan segalanya - Kp, Ki, Kd kali satu setengah. Kami melihat:


Fig. 10. Osilogram reaksi terhadap lonjakan beban berdenyut dengan sistem tiga putaran regulasi bawahan. Koefisien pengontrol posisi meningkat satu setengah kali.

Kesalahan telah menurun, ya ... 18 derajat listrik. Tapi apa yang kita lihat? Sistem kontrol segera berlari ke batasan saat ini. Dia ingin menerapkan arus lebih besar dari 5A, tetapi saya menetapkan batas ke 5. Mengapa? Jujur dibandingkan dengan sistem kontrol terbuka, yang juga memiliki arus 5A. Tapi ternyata tidak jujur: sistem kontrol vektor menciptakan arus hanya saat dibutuhkan (ketika perlu untuk mewujudkan momen), dan sistem terbuka selalu mendorong arus yang ditetapkan. Dari sudut pandang pemanasan dan kehilangan, sistem kontrol vektor jauh lebih disukai untuk mesin.

Biarkan sistem vektor "menyerah" saat ini? Setidaknya untuk waktu yang singkat. Menurut paspor, mesin memungkinkan 11A. Selesaikan 7A untuk mengevaluasi hasilnya.


Fig. 11. Osilogram reaksi terhadap lonjakan beban berdenyut dengan sistem tiga putaran regulasi bawahan. Batas saat ini dinaikkan dari 5A ke 7A.

Kesalahannya hanya 15 derajat listrik! Ini 2,5 kali lebih sedikit dari pada sistem kontrol loop terbuka. Tapi lihat, apa yang ada di akhir jadwal? "Jarum" dalam tugas saat ini ... dan mereka melanjutkan dan melanjutkan, yang saya dengar akustik - mesin "berdering". Ini disebut osilasi otomatis - terlalu banyak menarik koefisien regulator.

Sirkuit tertutup dan kebisingannya


Jadi kita sampai pada masalah kualitas spesifik dari setiap sistem kontrol, yang kadang-kadang tidak kalah pentingnya daripada akurasi mempertahankan parameter yang dapat diatur itu sendiri - noise. Apakah boleh bagi mesin untuk "membuat kebisingan" dalam sistem kontrol loop tertutup? Itu tergantung pada seberapa banyak membuat kebisingan dan apa yang membuatnya. Saya menyiapkan video yang menunjukkan berbagai suara yang dapat lahir dalam berbagai kontur sistem regulasi bawahan. Untuk melakukan ini, saya memperbaiki mikrofon yang bersentuhan langsung dengan mesin - pada jarak tertentu dari mesin, suara hampir tidak terdengar. Walaupun tergantung pada mesinnya, mesin yang berbeda “terdengar” berbeda.

Di awal video, suara dari loop saat ini ditampilkan. Hanya loop saat ini dengan dua regulator saat ini diaktifkan. Sebuah suara muncul di mesin, yang dibandingkan dengan rekan saya dengan suara dari pipa di mana air mengalir. Sepertinya suara "putih". Kebisingan ini dihasilkan karena kebisingan pengukuran arus fasa. Karena komponen proporsional yang relatif besar (diperlukan untuk kecepatan yang diperlukan), regulator arus menangkap semua fluktuasi kecil dalam pengukuran arus dan memperkuatnya, mentransfer tegangan inverter ke tugas. Yaitu Awalnya, arus di motor halus dan tidak membuat kebisingan, tetapi pengukurannya berisik, regulator saat ini mencoba mengompensasi, "menarik" tegangan inverter, sehingga membuat arus nyata di motor benar-benar "membuat kebisingan". Pada bentuk gelombang, Anda dapat melihatnya seperti ini:


Fig. 12. Oscillogram transien dari lompatan tugas (1A) dari regulator saat ini dan "noise" berikutnya. Umpan balik tentang regulator saat ini (sinyal dari ADC) dan output dari regulator yang dimasukkan ke inverter ditampilkan. Dalam satu sel sepanjang sumbu waktu 4.2ms.

Osilogram menunjukkan tidak hanya noise, tetapi juga proses transien dari regulator saat ini ketika dihidupkan. Arus dikerjakan dalam waktu kurang dari 1ms, dan transien mendekati penyetelan ke optimal teknis. Kebisingan dalam pengukuran arus dari urutan + -0,02A menyebabkan perubahan tegangan output sebesar 20% dari arus, yang terdengar sebagai kebisingan. Jika Anda memperlambat regulator 10 kali, Anda bisa mendapatkan gambar berikut:


Fig. 13. Osilogram proses transien dari lompatan tugas (1A) dari regulator saat ini dengan 10 Kp dan Ki diremehkan sehubungan dengan pengaturan optimal teknis. Dalam satu sel sepanjang sumbu waktu 4.2ms.

Regulator saat ini menjadi lembut dan hening, seperti kapas, dan mereka sama sekali tidak tertarik menanggapi beberapa kebisingan di saluran analog - seperti pada tugas mereka sendiri ...

Selanjutnya, video menunjukkan berbagai suara dari pengontrol posisi. Ada banyak percobaan di sana, saya akan menunjukkan kasus terakhir - osilasi diri dengan pengontrol posisi Kp terlalu tinggi. Karena sensor posisi bersifat inkremental, dengan KP besar, perubahan posisi hanya dengan satu tanda membuat pengontrol "gila" sangat gugup, melempar tugas pada putaran kecepatan, dan, dengan demikian, pada arus. Sesuatu seperti ini:


Fig. 14. Self-osilasi pada posisi kontur dengan Kp terlalu tinggi. Violet dan merah menunjukkan arus stator pembentuk momen (referensi dan aktual), biru - posisi dari encoder di tanda (kenaikan), biru - output dari pengontrol posisi (referensi ke putaran kecepatan).

Dapat dilihat bahwa ketika mengubah posisi hanya dengan satu tanda (satu "centang" dari sensor posisi), sistem kontrol melempar referensi saat ini dengan 0,3A. Ini adalah poin penting, mengingat peringkat mesin 5A, yang mengarah ke awal pergerakan dan, karenanya, berfluktuasi. Video ini menunjukkan bagaimana osilasi diri "menakutkan" terdengar, meskipun posisi melompat satu tanda tidak berbahaya bolak-balik.

Dalam hubungan ini, muncul pertanyaan filosofis: getaran dan kebisingan mana yang mengerikan, dan mana yang tidak layak untuk diperhatikan? Itu semua tergantung pada objek - tempat servo digunakan. Jika ini adalah mesin tiga koordinat dengan gearbox dan serangan balik, lengan manipulator untuk pengelasan, atau penggerak servo berkecepatan tinggi dari beberapa perangkat kemudi, maka "dering" tidak begitu mengerikan di sana. Dalam aplikasi seperti itu, hanya suara akustik yang dapat menyebabkan ketidakpuasan, tetapi hampir tidak ada yang ditampilkan dalam video akan mempengaruhi proses teknis. Tetapi jika itu adalah penggerak langsung untuk menentukan posisi media apa pun yang ada di pabrik silikon atau jika itu adalah penggerak langsung untuk mikroskop, maka tidak ada suara sama sekali dari kata tersebut. Bukan hanya deretan loop posisi dari encoder, tetapi bahkan suara yang nyaris tak terdengar dari loop saat ini sudah bisa menjadi masalah.Karena semua ini ditransmisikan ke badan kerja dan akan mengarah pada pelanggaran teknologi proses.

Ya, saya harus mengatakan bahwa semua suara yang ditampilkan dalam video bukan hanya suara. Jika Anda mengambil batangnya, maka mereka semua merasa, dan sangat baik. Jari-jari manusia sangat sensitif - jauh lebih baik daripada banyak sensor. Bahkan suara "air yang mengalir" dari regulator saat ini terasa. Sama seperti dari pipa air. Karena itu, untuk tugas servo yang berinteraksi dengan manusia, kebisingan dan getaran juga tidak diinginkan. Bayangkan sebuah simulator pesawat dengan kokpit miring, di mana drive di bawahnya berderak dan mengerang.

Bagaimana cara mengatasi kebisingan? Nah, dengan kontur posisi yang kurang lebih jernih - Anda perlu memasang sensor yang lebih akurat. Encoder dari percobaan ini dengan 1000 tag adalah sensor "ayam untuk tertawa" di bidang servo presisi tinggi. Jika mereka meletakkan encoder, maka sekitar seratus ribu tanda. Dan lebih sering mereka meletakkan sensor posisi analog, yang memberikan sinyal sinus / kosinus. Menggunakan ADC yang baik dan oversampling (mengukur jauh lebih sering daripada yang diperlukan, dan kemudian rata-rata hasilnya), Anda bisa mendapatkan urutan akurasi yang lebih besar daripada encoder.

Apa yang harus dilakukan dengan noise ADC dalam loop saat ini? Pertama, cari sumber kebisingan. Dalam drive ini, sumber kebisingan ditemukan - ini DC / DC, membuat instrumen 5V dari catu daya input dan dipasang di papan inverter. Pengkabelan board tidak sepenuhnya berhasil, dan DC / DC “fonit” untuk semua track board yang lewat. ADC dari mikrokontroler itu sendiri jauh lebih berisik daripada kebisingan dari DC / DC ini. Kedua, oversampling yang sama dapat digunakan jika kinerja ADC memungkinkan ini. Ketiga, Anda harus memilih rentang pengukuran yang tepat. Saya bekerja dengan motor 5A dari konverter 60A. Dengan demikian, jangkauan penuh ADC untuk mengukur arus juga mendekati 60A. Jika kisaran 20A, maka noise yang sama pada saluran analog setelah konversi ke ampere akan tiga kali lebih sedikit.

Tapi suara dari ADC tidak semuanya. Saya tidak menunjukkan dalam video salah satu suara utama yang tidak terdengar - suara dari PWM. Frekuensi PWM dalam percobaan ini ditetapkan sama dengan 20 kHz - pada batas kemampuan mendengar. Tetapi ini tidak berarti bahwa getaran ini tidak ditransmisikan ke poros rotor. Adalah perlu untuk mengukur riak arus di motor yang disebabkan oleh frekuensi PWM yang diberikan, menghitung ulang saat ini, dan kemudian sudah mungkin untuk mengevaluasi apakah itu akan "melewati" ke poros atau tidak. Gambar 15 menunjukkan arus riak dalam fase motor, diukur dengan sensor eksternal dan osiloskop.


Fig. 15. Riak arus dalam fase motor pada frekuensi PWM 20 kHz. Besarnya riak adalah 0,3A.

Riak saat ini di 0,3A cukup signifikan. Sebaliknya, itu akan menjadi signifikan jika kita akan memposisikan substrat silikon di pabrik Intel dengan drive ini. Untungnya, ini tidak bersinar khusus untuk jenis mesin ini dan Anda dapat melupakan masalahnya. Tetapi bagaimana jika Anda perlu membuat drive yang lebih serius? Sebagai permulaan, Anda dapat meningkatkan frekuensi PWM. Transistor efek medan listrik modern dapat menyediakan frekuensi switching hingga 500 kHz. Namun, ada ... tiga masalah.

Masalah pertama adalah bahwa dengan meningkatnya frekuensi PWM, pengaruh yang disebut "waktu mati" meningkat (beberapa menyebutnya waktu mati, tetapi ini salah - arus mengalir ke sana). Ini adalah waktu ketika transistor yang lebih rendah dari inverter sudah dimatikan, dan bagian atas belum dinyalakan (dan sebaliknya). Kali ini sama untuk satu jenis transistor, dan sebagai persentase dari periode PWM, itu menjadi lebih dan lebih dengan peningkatan frekuensi PWM. Waktu mati mendistorsi tegangan keluaran inverter, menambah ketidaklinieran pada regulator arus inverter.

Masalah kedua adalah bahwa dengan meningkatnya frekuensi PWM menjadi semakin sulit untuk menghasilkan mikrokontroler PWM ini. Mikrokontroler membuat PWM menggunakan pengatur waktu perangkat keras yang berdetak per unit dengan setiap siklus clock mikrokontroler. Dengan mengatur perbandingan dengan timer, programmer memilih jam berapa untuk membuka kunci. Apa yang akan terjadi dalam sistem dengan mikrokontroler pada 100 MHz dan frekuensi PWM 500 kHz? Kami membagi satu menjadi yang lain, kami mendapatkan 200 kuanta (diskrit) pengaturan titik setel. Pengaturan pengaturan 200 voltase untuk PWM tidak cocok "dari kata sama sekali". Servo membutuhkan setidaknya dua kali lipat lebih banyak. Untuk ini, beberapa produsen mikrokontroler mengintegrasikan apa yang disebut PWM resolusi tinggi ke dalam produk mereka - mereka memungkinkan menghitung waktu pembukaan kunci dengan resolusi waktu beberapa kali lebih baik daripada satu siklus clock tunggal mikrokontroler.Ada kemungkinan seperti itu dalam mikrokontroler ini, namun, masalah ketiga mencegah dimasukkannya PWM resolusi tinggi.

Masalah ketiga adalah sensor saat ini. Dalam inverter yang digunakan, mereka adalah tipe shunt dan seri dengan kunci yang lebih rendah dari inverter. Dan ini berarti bahwa dimungkinkan untuk mengukur arus dalam fase hanya pada saat itu ketika kunci rendah terbuka. Dan ini berarti bahwa start-up ADC harus disinkronkan dengan operasi PWM dan pengukuran harus dilakukan tepat pada saat ketika kunci bawah dibuka. Masalahnya adalah transien dalam sirkuit analog tidak memiliki waktu untuk mengakhiri, jika frekuensi PWM sangat tinggi - arus mulai diukur dengan kesalahan. Secara umum, semuanya rumit ...

Ada cara yang berbeda secara mendasar - beberapa produsen servo drive umumnya menolak PWM dan membuat loop arus perangkat keras baik pada FPGA atau pada amplifier operasional yang beroperasi dalam mode linear dan menghilangkan semua energi berlebih yang dirancang untuk disimpan oleh PWM. Tetapi ini adalah kisah yang sangat, sangat berbeda.

Kesimpulan


Persyaratan untuk servos sangat berbeda - seseorang memerlukan mode kontrol langkah-demi-langkah untuk mesin CNC lambat sederhana (harga driver + motor adalah beberapa ribu rubel), seseorang membutuhkan kualitas mempertahankan posisi yang bahkan suara dari sirkuit saat ini menjadi masalah. Artikel ini "di atas" berbicara tentang beberapa aspek kerja sistem regulasi bawahan dan kualitas kerja loop posisi untuk memperkenalkan pembaca pada sesuatu selain "shagovik" yang terkenal. Kualitas drive servo yang ditunjukkan dalam percobaan ini, pada kenyataannya, sangat biasa-biasa saja, terutama karena resolusi rendah dari sensor posisi rotor. Saat menggunakan sensor dengan resolusi yang baik, kualitas regulasi meningkat secara nyata.

Iklan


Eksperimen ini dilakukan pada kit debugging VectorCARD K1921BK01T dari NPF Vektor LLC, yang dibangun berdasarkan mikrokontroler kontrol motor domestik K1921BK01T dari NIIET OJSC (ARM Cortex-M4F, 100 MHz) . Kit debugging mencakup semua peralatan yang ditampilkan dalam artikel video, termasuk perangkat lunak mikrokontroler dalam kode sumber dengan sistem tiga putaran regulasi bawahan ini, serta perangkat lunak untuk mengamati osilograms dari variabel apa pun dari sistem kontrol.

Tautan terkait ke artikel saya yang lain


Kontrol vektor motor listrik "pada jari"
Metode untuk debugging perangkat lunak mikrokontroler dalam drive listrik
Mikrokontroler motor domestik baru kontrol K1921VK01T dari OJSC "NIIET"

Video Bonus
:

Source: https://habr.com/ru/post/id392837/


All Articles