Mikrokontroler motorik kontrol domestik baru K1921VK01T dari OJSC NIIET


Entah bagaimana kabar tentang kemunculan mikrokontroler baru K1921VK01T dari OJSC NIIET disahkan . Bagaimana ini luar biasa? Periferalnya dirancang untuk mengendalikan motor listrik (kontrol motor). Ini bukan hanya beberapa saluran PWM. Ini adalah sembilan modul PWM dua saluran (PWM) canggih, yang tiga di antaranya adalah modul (HRPWM) dengan mode resolusi "tinggi". Ini adalah enam modul menangkap CAP 32-bit yang terpisah. Dua puluh empat (!) Saluran dari ADC 12-bit dengan manajer peluncuran yang fleksibel, averager built-in dan pembanding digital. Two quadrature decoder (QEP), sekelompok antarmuka komunikasi, memori pengguna internal, jam - semua ini pada inti ARM Cortex-M4F dengan megabita memori flash terpasang dan kinerja 100 MIPS! Menarik?

Sebenarnya, agar tidak mencantumkan semua karakteristik teknis produk dalam artikel, saya mengirimnya ke halaman situs web produsen . Ada daftar pendek dan lembar data lengkap (meskipun selalu bersembunyi di berbagai sudut situs dan pada saat penulisan, Anda dapat mengunduhnya ... dari tabel perkembangan saat ini ). Dan dalam artikel ini saya lebih baik memberi tahu Anda sesuatu yang tidak ditulis dalam lembar data.

Sedikit sejarah


Bekerja pada mikrokontroler (selanjutnya disebut MK) dimulai pada 2012 oleh perusahaan NPP Digital Solutions, atas perintah OJSC NIIET(Voronezh.). Lisensi diperoleh untuk inti ARM Cortex-M4F dan beberapa modul perangkat komunikasi, dan beberapa modul dikembangkan oleh perusahaan ini secara independen: modul PWM, pengontrol ADC (bukan ADC sendiri, tetapi manajer untuk mengelolanya), modul penangkapan CAP, dan modul dekoder quadrature QEP. Solusi NPP Digital pertama kali menghasilkan mockup mikrokontroler pada FPGA Kintex7, yang menerapkan semua logika mikrokontroler masa depan, termasuk inti ARM. Tetapi FPGA adalah produk yang dapat diprogram ulang secara bebas yang memungkinkan Anda untuk memperbaiki kesalahan dalam logika MK jika terdeteksi setelah melewati tes (ini merupakan tambahan untuk pengujian pada simulator). Tetapi bagaimana cara menguji mikrokontroler motorcontrol? Selain tes sintetis, tentu saja, pada tugas nyata mengendalikan motor listrik! Untuk ini, "Solusi Digital" NPP berpaling kepada kamiNPF Vector LLC , karena kami memiliki banyak pengalaman di bidang penggerak listrik berdasarkan MK Texas Instruments , walaupun lebih karena kami duduk di gedung tetangga.. Dalam diskusi bersama ketika merancang periferal untuk mengendalikan motor listrik, diputuskan untuk mengambil TMS320F28335 Texas Instruments (TI) sebagai model, karena mikrokontroler ini mungkin memiliki periferal kontrol motor yang paling kuat dan fleksibel, sepatutnya dihormati di seluruh dunia. Oleh karena itu, dipersenjatai dengan lembar data TI, "Solusi Digital" dibuat berdasarkan logika internal modul PWM, CAP, dan QEP untuk K1921VK01T. Selain itu, berdasarkan pengalaman kami dengan TI MK, kami juga mengusulkan beberapa peningkatan yang tidak dimiliki TI. Ini adalah filter pulsa pendek dalam modul PWM (tidak semua driver tombol daya seperti membuka / menutup untuk waktu yang sangat singkat, IGBT dapat masuk ke mode linear), ini adalah beberapa nuansa dalam modul decoder quadrature, yang memungkinkan Anda untuk menyingkirkan masalah dengan beralih pembagi meteran saat bepergian dll."Solusi digital" memperhitungkannya dan memperluas fungsionalitas periferal sesuai dengan itu dibandingkan dengan modul TI.

Sementara NPP Digital Solutions mengembangkan logika internal modul, kami di NPF Vector membuat pendirian untuk menguji mikrokontroler masa depan. Itu adalah konverter frekuensi kecil dengan enam transistor ("servo amplifier"), yang dihubungkan oleh sirkuit kontrol ke mikrokontroler prototipe pada FPGA, dan bagian daya terhubung ke servomotor kecil dengan sensor posisi Hall (untuk memeriksa modul CAP) dan sensor posisi quadrature (untuk memeriksa modul QEP ) Tujuan kami adalah ini: untuk menulis perangkat lunak untuk mikrokontroler untuk memastikan kontrol vektor penuh dari motor listrik menggunakan sensor posisi apa pun pilihan Anda atau keduanya sekaligus. Dan, tentu saja, melaporkan semua masalah yang ditemukan di pinggiran ke "Solusi Digital".

Meskipun banyak tes MK sendiri di Digital Solutions, banyak kesalahan ditemukan selama pengujian pada motor listrik hidup. Pada dasarnya, mereka dikaitkan dengan implementasi yang tidak akurat dari logika blok internal, yang tidak secara eksplisit dijelaskan dalam lembar data Texas Instruments. Misalnya, apa yang harus dihasilkan modul PWM jika setpoint perbandingan ditetapkan di atas periode waktu? Atau jika pembagi sinyal input disertakan untuk dekoder quadrature, haruskah modul mendeteksi perubahan arah rotasi oleh sinyal terbagi atau oleh input asli? Jawaban atas pertanyaan-pertanyaan ini mungkin jelas untuk drive listrik, tetapi tidak jelas bagi arsitek logika mikrokontroler. Sejauh yang kami bisa, kami menangkap bug serupa bersama dengan Digital Solutions. Drive telah berhasil bekerja dalam kontrol vektor tanpa masalah.Namun, tentu saja, kami tidak dapat mencakup semua bug dengan pengujian seperti itu - pasti di tugas lain kesalahan akan mulai muncul lagi. Tetapi untuk ini, ada kesalahan dan revisi baru dari mikrokontroler: untuk memperbaiki bug, Anda harus mengumpulkannya terlebih dahulu. Setelah men-debug logika MK pada FPGA dengan "Solusi Digital", "kabel" dari MK (atau apa pun) dilakukanapakah itu disebut mikrokontroler? Topologi?), Setelah itu semua hasil pekerjaan dipindahkan ke NIIET. By the way, kami telah menemukan beberapa kesalahan setelah rilis MK di "batu", tetapi NIIET menganggap mereka cukup kritis untuk mengubah tata letak MK: mereka menumpuk lebih banyak - mereka akan memperbaikinya.

Judul



Saya juga harus mengatakan bahwa mikrokontroler selamat dari beberapa nama. Pada awalnya, selama pengembangan, itu memiliki nama kode "MS01", kemudian kumpulan batu percobaan disebut NT32M4F1, dan kemudian sudah menjadi K1921VK01T (apalagi, di beberapa tempat surat-surat ditulis dalam bahasa Rusia, dalam huruf bahasa Inggris lainnya). Karena itu, jika Anda melihat nama-nama ini di artikel awal dan publikasi di MK ini, jangan kaget.

Seberapa mahal?


Saat ini (pada awal 2016), NIIET siap untuk menjual batch pertama dari mikrokontroler, yang sudah mulai tiba di pelanggan. Kristal terbungkus sebagian dalam plastik, sebagian dalam keramik (sehingga dalam aplikasi kritis tidak mengetahui bagaimana Anda sendiri_Anda tahu_apa_) Harga batu dalam plastik pada akhir 2015, tampaknya, sedikit kurang dari 3 tr, yang lebih tinggi dari harga TI TMS320F28335 ketika membeli di Rusia (pada saat penulisan, koefisien untuk mengubah harga "mereka" menjadi "milik kami" adalah 76). Namun, di TMS320F28335 tidak ada memori pengguna dan jam, Anda perlu mengatur yang eksternal, karena biaya pada akhirnya menjadi sebanding. Ini membuat K1921VK01T menjanjikan tidak hanya dalam hal substitusi impor, tetapi juga untuk "kepentingan dagang" yang sederhana. Meskipun perbandingan ini, tentu saja, tidak sepenuhnya benar - Anda dapat menemukan banyak contoh kristal yang lebih murah pada Cortex-M4F dan dengan frekuensi clock yang lebih tinggi, tetapi dengan lebih sedikit periferal. Oleh karena itu, untuk tugas-tugas sederhana, K1921VK01T akan menjadi sangat besar dan mahal. Tetapi untuk aplikasi utama (kontrol motor listrik dan elektronik daya kompleks) - sangat kompetitif.

Apa yang kita miliki dengan kinerja?


Kami membuat presentasi di pameran tentang ini setahun yang lalu, presentasi dapat ditemukan di sini. Tes kami, tentu saja, tidak berpura-pura sangat akurat - lagi pula, kami tidak meluncurkan tolok ukur nyata, tetapi “menggulung” sistem kontrol vektor yang sama (apa lagi yang bisa merangsang drive listrik?). Tapi pengulangan presentasi yang singkat adalah ini: arsitektur ARM Cortex-M4F tertinggal dari inti TI C28 DSP dalam perhitungan rata-rata yang diperlukan untuk tugas drive. Jika Anda mengurangi keakuratan perhitungan, jika memungkinkan, menggunakan fungsi trigonometri yang diperkirakan dan sebagainya, Anda dapat mengurangi celah ini menjadi sekitar 15%. Tetapi pada saat yang sama, frekuensi clock dari core C28 teratas (TMS320F28335 yang sama) adalah 150 MHz, dan frekuensi K1921VK01T adalah 100 MHz. Oleh karena itu, dengan semua optimasi perpustakaan, K1921VK01T setara dalam kekuatan komputasi di suatu tempat untuk seri TI piccolo MK dengan frekuensi 90 MHz. Apa yang bisa diartikan sebagai ... sangat bagus, menurut pendapat kami,karena jika Anda menggunakan semua lonceng dan peluit perangkat keras dari MK baru seperti DMA dan pengukuran ADC pemfilteran dengan benar, Anda dapat menyimpan banyak hal pada siklus clock. Dengan satu atau lain cara, kami berhasil "menjejalkan" di K1921VK01T proyek kami yang paling menuntut kinerja, berdasarkan TMS320F2810 (150 MHz, inti C28), yang sudah menabrak 2810 yang sama.

?


Dan apa yang salah dengan mereka, itu ARM! Normal, tanpa "tapi". Ambil JTAG, lingkungan pengembangan apa pun, tapi ... tidak, bagaimanapun juga, tidak akan berhasil. "Tapi" adalah firmware memori flash. Terlepas dari kenyataan bahwa inti ARM itu sendiri terstandarisasi dan setiap JTAG dan lingkungan akan terhubung ke K1921VK01T, itu tidak begitu sederhana dengan firmware flash. Tampaknya setiap produsen mikrokontroler menganggapnya sebagai tugas mereka untuk membuat register sendiri untuk bekerja dengan firmware memori flash mereka, sehingga pencipta alat pengembangan tersiksa dengan dukungan semua kebun binatang ini. K1921VK01T juga tidak jauh ketinggalan dalam hal ini - ada juga metode bekerja dengan flash di sana. Tetapi jika untuk produsen terkenal pemrogram memori flash (driver, flasher atau apa yang harus saya sebut itu?) Dalam lingkungan pengembangan ditulis dan bekerja "di luar kotak", maka untuk K1921VK01T semuanya bekerja hanya untuk lingkungan tersebutuntuk siapa programmer menulis di NIIET. Untungnya, untuk IAR dan Keil, semuanya sudah siap dan contoh proyek dengan instruksi firmware dapat ditemukan diForum NIIET , serta di repositori terbuka di Bitbucket , yang dikelola oleh NIIET. Selain itu, kami di NPF Vector menulis dukungan untuk pemrograman flash K1921VK01T untuk OpenOCD(Buka On-Chip Debugger). Ini adalah lapisan antara debugger GDB dan besi dalam bentuk emulator JTAG dan batu yang berbeda. Tapi ketika kami menarik "review kode" di repositori OpenOCD dengan resolusi konflik, para pengembang NIIET menulis hal yang sama, tetapi mereka lebih baik (mereka juga menambahkan fungsi pengguna bakar selain membakar memori flash utama), tapi ... ini semua liriknya. Apa yang diberikan OpenOCD ini? Ini adalah sejenis lapisan abstraksi besi, yang memungkinkan Anda untuk membuat lingkungan pengembangan bebas dan bebas Anda sendiri untuk K1921VK01T berdasarkan pada setiap IDE populer. Kami di Eclipse menyukai "Vektor" (karena lingkungan TI Code Composer Studio, berdasarkan v4, didasarkan padanya, kami sudah terbiasa dengannya dan secara umum, tidak ada IDE yang lebih baik di dunia selain Eclipse) Dan pengembang NIIET membuat lingkungan pengembangan di Qt Creator. Tetapi, secara umum, maknanya sama di sini dan di sana: dibutuhkan lingkungan, mengambil set alat pengembangan silang gratis untuk GCC, mengambil plug-in untuk bekerja dengan OpenOCD, OpenOCD itu sendiri, beberapa konfigurasi, sedikit sihir ... dan Anda sudah sepenuhnya bekerja dengan K1921VK01T, lupa tentang IAR dan Keil. Pada saat penulisan, kami memposting perakitan Eclipse kami (kami menamainya VectorIDE) untuk K1921VK01T di situs web kami , lihat resep untuk Qt Creator di forum NIIET . Secara pribadi, kami melakukan semua proyek untuk K1921VK01T di lingkungan yang bebas dan kami menyarankan Anda - set kompiler GCC tidak benar-benar tertinggal dari IAR bermerek (lihat presentasi kami yang sama), tetapi jika Anda adalah perusahaan terkemuka, Anda tidak perlu membeli perangkat lunak impor yang mahal (sudah dengan faktor konversi 76, Karl! 78!).
Oh ya Ada satu hal lagi. Ini disebut Codemaster ++ [ARM] . Ini adalah lingkungan pengembangan domestik 100%, termasuk kompiler, dan juga dirancang untuk K1921VK01T. Kami memeriksa versi pertamanya setahun yang lalu, tetapi menemukan bahwa itu belum siap, sedikit dalam hal kompiler dan banyak dalam hal kemudahan mengedit kode (meskipun dalam hal ini dapat bersaing dengan IAR, yang tahu apa yang saya maksud). Tapi itu kecil dan cepat, dan pada antarmuka menyerupai semacam "hacker" debugger seperti OllyDbg (bandingkan: satu dan dua ). Secara umum, mungkin seseorang akan tertarik. Saya harus mengatakan bahwa para pengembang (perusahaan"Fiton" ) berusaha sangat keras, mereka bahkan meminta tolok ukur kami pada suatu "kontrol mesin vektor" untuk mengoptimalkan kompiler mereka.

Apa yang kita miliki dengan kit debugging?



Pada awal 2016, empat papan debug pada K1921VK01T dikenal di alam. Ini adalah VectorCARD K1921BK01T kami dan yang lainnya ... dari pesaing. Ok, begitulah, di sini adalah tautan LDM-HELPER-K1921BK01T dan MBS-K1921VK01T . Tampaknya juga NIIET memiliki papan sendiri NIIET_1921BK01T, tetapi di situs mereka, tampaknya, ia bersembunyi dari saya - jika seseorang menemukan tautan, saya dengan senang hati akan menyelesaikan artikel tersebut. Apa perbedaan di antara mereka? Kami tidak menjual papan kosong, tetapi kit dengan inverter, motor listrik, kontrol vektor dalam kode sumber C (berdasarkan apa yang kami tulis pada saat itu untuk Solusi Digital), serta dengan program tingkat atas dan driver CANopen untuk memantau semua proses di dalam drive - lihat artikel pertama kami. Karena itu, jika Anda hanya ingin bermain dengan MK baru, mengedipkan LED atau mengirim data melalui berbagai antarmuka komunikasi, yang terbaik adalah membeli papan debug pesaing (walaupun kami juga memiliki opsi papan kosong untuk 15 tr, tetapi sepenuhnya "telanjang" - beberapa kesimpulan). Namun, jika Anda ingin membuat drive listrik pada MK baru, maka perangkat debug dan perangkat lunak kami dapat menghemat waktu pengembangan setengah tahun atau setahun (atau mungkin lebih, tergantung pada apakah Anda mengetahui teori drive listrik dan apakah Anda memiliki alat debugging dan osiloskop Anda sendiri mirip dengan milik kita). Jika Anda hati-hati membaca artikel pertama, kemudian, mungkin, ingatlah bahwa men-debug sistem kontrol untuk penggerak listrik tanpa cara memvisualisasikan proses di dalamnya adalah mustahil. Dan jika di Texas Instruments lingkungan pengembangan dapat menunjukkan osil “out of the box” berdasarkan data dari array memori MK, untuk ARM di lingkungan pengembangan universal (bukan dari produsen MK tertentu) fungsi semacam itu belum diamati (jika pengembang Fiton membacanya - Apakah Anda ingin memodifikasi Codemaster ++ [ARM] Anda dengan pembuat osiloskop? Mudah melakukannya!). Dalam kit debugging kami, ada cara memvisualisasikan bentuk gelombang, sehingga Anda dapat segera melihat segala sesuatu yang seharusnya mengendalikan motor listrik: bentuk arus fasa, voltase, input / output semua regulator, dll. Harga kit kami besar, sekitar 130 tr.(hanya satu motor listrik dengan semua sensor posisi saat ini harganya sekitar 30 tr). Tetapi untuk organisasi yang ingin mempelajari produk baru, ini tidak boleh kritis - lingkungan pengembangan komersial untuk ARM saja bisa lebih mahal.

Kekurangan K1921VK01T


Apa kerugian utama dari K1921VK01T baru yang dapat dicatat sekarang?
• Pertama, ini tidak diragukan lagi merupakan produk mentah, karena benar-benar diprogram sejauh ini oleh 10-20 orang. Ketika lebih banyak pengembang yang duduk di atasnya, bug akan terdeteksi - revisi baru akan dirilis. Jadi, bersiaplah. Tetapi, bagaimanapun, mereka dapat memutar mesin - memutar secara pribadi.
• Saat ini, dokumentasinya juga lembab. Ada beberapa kesalahan, tetapi beberapa hal dijelaskan ... tidak sepenuhnya jelas. Orang bisa melukis sedikit lebih detail, memberi contoh. Saya pikir seiring waktu itu akan selesai.
• Mikrokontroler sangat besar dan canggih. Ini untuk seseorang plus, untuk seseorang minus. Sangat sedikit aplikasi yang mencakup seluruh kemampuannya. NIIET sudah memikirkan serangkaian MK berdasarkan itu, dengan berbagai bangunan dan seperangkat peripheral. Tetapi untuk sekarang - hanya ada K1921VK01T.
• Dia memiliki ADC tertentu. Seringkali, pabrikan MK memasang satu modul ADC (12 MS / s) dengan cepat dan melipatgandakannya melalui beberapa saluran - misalnya, ini dilakukan oleh Texas Instruments dalam seri C2000. Tetapi dalam K1921VK01T ada 12 modul ADC dua saluran lambat (1,7MS / s) yang beroperasi secara paralel. Mengapa itu buruk selain ketidakmampuan untuk mengukur sesuatu dengan sangat cepat? Jika ada satu ADC dalam MK, maka pada papan pengontrol Anda dapat mengirim sinyal referensi yang dikalibrasi, misalnya 1V dan 2V, ke dua saluran yang tidak digunakan, dan menggunakannya untuk menghitung dan mengkompensasi kesalahan multiplikasi dan kesalahan offset ADC yang satu ini, memperluas koreksi ke semua saluran (ADC adalah satu ) Ketika ada banyak ADC di MK, trik seperti itu tidak akan berhasil - mereka semua akan memiliki kesalahan pribadi mereka sendiri. Kami menggunakan trik kalibrasi pada Texas Instruments MK tipe TMS320F2810 (ini dijelaskan dalam datasheet dan direkomendasikan),di sini di K1921VK01T tanpa kalibrasi, kami mendapatkan akurasi ADC yang lebih rendah dibandingkan dengan TMS320F2810 yang dikalibrasi. Kami harus membuat dudukan khusus untuk mengkalibrasi setiap modul ADC K1921VK01T secara independen dan menjahit tabel kalibrasi dalam memori pengguna bawaan. Kemudian akurasi pengukuran analog ternyata sebanding (kalibrasi hampir tidak melayang jauh dari suhu - sudah diperiksa). Mungkin, NIIET harus mem-flash meja seperti itu di pabrik, akan lebih mudah. Namun saat flashdisk kosong.Kemudian akurasi pengukuran analog ternyata sebanding (kalibrasi hampir tidak melayang jauh dari suhu - sudah diperiksa). Mungkin, NIIET harus mem-flash meja seperti itu di pabrik, akan lebih mudah. Namun saat flashdisk kosong.Kemudian akurasi pengukuran analog ternyata sebanding (kalibrasi hampir tidak melayang jauh dari suhu - sudah diperiksa). Mungkin, NIIET harus mem-flash meja seperti itu di pabrik, akan lebih mudah. Namun saat flashdisk kosong.
• Frekuensi 100 MHz, tentu saja, agak rendah, saya ingin lebih cepat. Tapi begitulah. Meskipun di beberapa tempat mereka menulis frekuensi 125 MHz - semuanya tergantung pada suhu sekitar. "Solusi Digital" melaporkan informasi tidak resmi tersebut: di dalam kristal dirancang untuk maksimum 125 derajat. Temperaturnya sekitar 15 derajat lebih tinggi dari lingkungan. Menurut proyek, K1921VK01T harus bekerja pada 85 derajat lingkungan + cadangan, yang dijamin akan dicapai pada 100 MHz. Bahkan, MK dapat dipercepat di atas 100 MHz, masing-masing sampel bekerja pada 140-170 MHz, tetapi tergantung pada sampel. Oleh karena itu, jika kristal tidak terlalu panas, maka ia dapat tersebar, jika seseorang membutuhkannya. Tetapi jika dalam aplikasi Anda panas (+85), maka lebih baik untuk tidak menggertak di atas 100 MHz.
• Tidak ada bootloader (programmer) resmi melalui antarmuka komunikasi (CAN, RS). Menjahit MK hanya dimungkinkan melalui JTAG / SWD. Dengan demikian, jika pengontrol produk dalam keadaan tertutup, maka Anda perlu menulis bootloader Anda untuk antarmuka komunikasi yang diinginkan. Atau tunggu sampai NIIET menulis. Sejauh ini, tidak, tapi saya pikir itu akan muncul.

Kesimpulan


Meski apa lagi kesimpulannya? Semuanya baru saja dimulai! Akhirnya, ada mikrokontroler domestik di mana Anda benar-benar dapat membuat drive listrik! Sebelum ini, semua MK domestik yang ada lemah oleh inti atau lemah oleh pinggiran untuk mengatasi tugas-tugas kontrol motor. Tapi sekarang - kebebasan penuh untuk struktur kontrol paling kompleks dan unit daya paling kompleks. Saya terutama ingin mencatat prospek mikrokontroler ini untuk drive servo mesin. Sampai sekarang, di Rusia tidak mungkin untuk membuat mesin presisi multi-sumbu sepenuhnya domestik, karena (salah satu alasan) tidak ada yang membuat servo drive berkualitas tinggi menyala. Sekarang ada mikrokontroler seperti itu.

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


All Articles