Desain terminal pemantauan kualitas daya berdasarkan chip DSP TMS320F2812

Pembaruan: 12 Desember 2023
DSP (Digital Signal Processor) semakin sering digunakan dalam aplikasi teknik saat ini. Ada tiga alasan utama untuk ini: Pertama, ia memiliki kemampuan komputasi yang kuat, mampu melakukan berbagai algoritma pemrosesan sinyal digital seperti FFT dan penyaringan digital; Kedua, produsen DSP utama telah merancang IDE terkait (pengembangan terintegrasi) untuk produk mereka. Environment), yang membuat pengembangan aplikasi DSP menjadi lebih kuat; ketiga, ia memiliki kinerja biaya tinggi, dan benar-benar kompetitif dengan kinerjanya yang kuat dan harga murah.

TI merancang lingkungan pengembangan visual terintegrasi CCS (CodeComposerStudio) untuk DSP perusahaan, dan DSP/BIOS adalah bagian penting dari CCS. Ini pada dasarnya adalah kernel sistem operasi real-time berdasarkan platform DSP seri TMS320, dan juga merupakan bagian inti dari perangkat lunak real-time TI. teknologi-Teknologi eXpressDSP. DSP/BIOS terutama mencakup tiga aspek: kernel multi-thread, alat analisis real-time, perpustakaan konfigurasi periferal.

1 Persyaratan fungsi sistem

Fungsi utama dari terminal pemantauan kualitas daya adalah untuk memantau dan menganalisis kualitas daya jaringan listrik (Tiga fase tegangan dan saat ini) secara real time. Variabel pemantauan utama adalah: tegangan dan nilai efektif arus, daya aktif dan reaktif, frekuensi tegangan, ketidakseimbangan tiga fasa, masing-masing tegangan harmonik dan laju konten arus, faktor daya, faktor daya pergeseran fasa, fluktuasi tegangan, lama waktu, Flicker untuk a waktu singkat.

Sistem memilih chip DSP TI berkinerja tinggi TMS320F2812 sebagai inti pemrosesan, dan kecepatan pemrosesan 150MIPS cukup untuk memenuhi persyaratan sistem secara real-time. Menurut persyaratan sistem, sistem ini dibagi menjadi beberapa modul fungsional berikut: pemeriksaan mandiri terpandu modul, modul pelaksanaan tugas pengumpulan, modul prapemrosesan data kualitas daya, modul operasi analisis kualitas daya, modul penyimpanan data, modul komunikasi, dan modul interaksi manusia-komputer.

Menurut metode pemrograman tradisional, modul-modul fungsional ini akan disusun bersama dalam struktur berurutan, dan panggilan serta peralihan antar modul diselesaikan dengan kode setiap modul, sehingga modul-modul aplikasi berada dalam keadaan berpasangan. Jika Anda ingin menambahkan modul fungsi baru atau memodifikasi modul fungsi yang sudah ada, kode pemanggil modul terkait tidak hanya harus diubah, tetapi modul baru juga jelas akan mempengaruhi karakteristik respons waktu dari sistem asli, sehingga melakukan peningkatan dan perawatannya cukup merepotkan.

Munculnya DSP/BIOS menyediakan mekanisme lain untuk mengatur modul fungsional program aplikasi. Ini memperlakukan setiap modul fungsional sebagai thread tugas. Melalui layanan kernel yang dapat dikonfigurasi, setiap thread tugas menggandakan sumber daya CPU sesuai dengan prioritas penjadwal sistem. Setiap utas tugas melewati sinkronisasi, komunikasi, dan pertukaran data, dll. Dikoordinasikan. Mekanisme ini meningkatkan pemeliharaan aplikasi dan menyediakan cara pengujian ulang yang lebih nyaman dan canggih. Berdasarkan karakteristik di atas, sistem ini mengadopsi DSP/BIOS sebagai kernel real-time, dan merancang keseluruhan sistem berdasarkan ini.

Gambar 1 menunjukkan klasifikasi modul fungsional sistem di bawah DSP/BIOS.

2 Desain perangkat lunak berdasarkan DSP/BIOS

2.1 Perencanaan utas eksekusi

Dalam pengoperasian sistem secara real-time, beberapa fungsi fungsi digerakkan oleh sinyal kontrol eksternal atau dijalankan dalam periode yang telah ditentukan. Oleh karena itu, mode mengemudi dan periode pelaksanaan fungsi sangat penting untuk sistem real-time. DSP/BIOS mendukung aplikasi multi-thread, dan thread dapat didefinisikan sebagai prioritas yang berbeda.

Thread berprioritas tinggi dapat menginterupsi thread berprioritas rendah, dan interaksi antara thread yang berbeda, seperti pemblokiran, komunikasi, dan sinkronisasi, dibagi menjadi 4 jenis berikut (prioritas dari tinggi ke rendah): Interupsi Perangkat Keras (HWI), Interupsi Perangkat Lunak ( SWI), Tugas (TSK), Thread Latar Belakang (IDL). Menurut persyaratan fungsional sistem terminal pemantauan kualitas daya, modul sub-fungsi sistem dibagi menjadi 4 jenis ulir di atas.

Pertama, jadwalkan thread interupsi perangkat keras (HWI). Dalam keadaan normal, kode program utama sistem ditempatkan di interupsi perangkat lunak atau tugas; namun, kode program modul fungsional yang terkait erat dengan perangkat eksternal dan memerlukan kinerja real-time yang tinggi harus ditempatkan di interupsi perangkat keras.

Sesuai dengan persyaratan di atas, sistem menetapkan modul sub-fungsi berikut sebagai thread interupsi perangkat keras: modul tugas akuisisi A/D dan modul komunikasi (terima). Akuisisi A/D merupakan fondasi penting dari sistem ini, dan terkait erat dengan perangkat keras yang mendasari sistem, sehingga ditetapkan sebagai thread interupsi perangkat keras (HWI).

Proses utamanya adalah: chip A/D mengumpulkan data real-time dari jaringan listrik pada frekuensi tertentu, dan kemudian berkomunikasi dengan port McPSP di DSP. DSP menerima data yang dikumpulkan oleh chip A/D dan menyimpannya di area tertentu dari RAM on-chip untuk mempersiapkan pengoperasian thread lainnya. Modul komunikasi menggunakan RS485 untuk berkomunikasi dengan komputer host, yang terkait erat dengan perangkat keras yang mendasari sistem, dan antarmuka SCI dari DSP sendiri hanya memiliki FIFO dengan maksimal 16 kata. Jika data yang diterima tidak diproses tepat waktu, data akan hilang.

Berikut penjelasan pengaturan parameter modul HWI di DSP/BIOS. Interupsi penerima port serial McBSP ditempatkan di posisi HWI_INT6 modul HWI, dan fungsi ISR ​​ad_rx_isr() dari interupsi penerima diisi dengan item pemanggilan fungsi interupsi HWI_INT6; pada saat yang sama, pilih untuk menggunakan fungsi penjadwalan HWI DSP/RI-OS, saat merespons McBSP. Ketika port serial menerima interupsi, sistem akan secara otomatis memanggil fungsi ad_rx_isr(). Pengaturan interupsi penerimaan port serial McBSP ditunjukkan pada Gambar 2.

Mirip dengan pengaturan interupsi penerima port serial McBSP, interupsi penerima SCIA diatur sebagai interupsi penerima komunikasi, dan fungsi ISR-nya scia_rx_isr() diisi dengan item pemanggilan fungsi interupsi HWI_INT9. Saat merespons interupsi penerimaan, sistem memanggil fungsi scia_rx_isr() untuk diproses. Thread CLK juga merupakan salah satu thread interupsi perangkat keras HWI. Ini memberikan referensi waktu untuk pengoperasian seluruh sistem, menyediakan metode bagi pengguna untuk memanggil fungsi secara berkala, dan memberikan referensi waktu untuk beberapa alat evaluasi kode. Modul CLK sepenuhnya bergantung pada interupsi pengatur waktu DSP. TMS320C2812 menyediakan 2 timer untuk DSP/BIOS.

Kedua, mengatur thread interupsi perangkat lunak (SWI). Semua interupsi perangkat lunak dimulai melalui panggilan API kernel DSP/BIOS. Untuk memfasilitasi kontrol, sistem menetapkan kotak surat 16-bit (Kotak Surat) untuk setiap objek SWI, yang dapat digunakan untuk memulai kotak surat terkait secara kondisional. Gangguan perangkat lunak. Modul subfungsi yang lebih penting daripada tugas biasa dan sering terjadi dapat diatur dalam thread interupsi perangkat lunak (SWI). Modul subfungsinya meliputi: modul prapemrosesan data kualitas daya, modul komunikasi (kirim).

Modul prapemrosesan data kualitas daya terutama menyelesaikan pemrosesan selanjutnya dari hasil konversi A/D. Hasil konversi A/D perlu diolah terlebih dahulu. Karena chip A/D memilih frekuensi tetap untuk akuisisi, tetapi frekuensi jaringan listrik berfluktuasi, melakukan operasi FFT secara langsung pada data yang diperoleh akan menyebabkan kebocoran spektrum. Oleh karena itu, data yang diperoleh harus diproses terlebih dahulu. Misalnya, operasi FFT 1024 titik dilakukan pada total 1024 data dari 256 titik untuk masing-masing 4 siklus. Dengan asumsi frekuensi rata-rata 4 siklus adalah f, resolusi frekuensi adalah f/4, dan hasil operasi FFT adalah f/4, 2f/4, 3f/4, f, 5f/4…intensitas pada frekuensi tersebut. Oleh karena itu, ketika frekuensi jaringan listrik fo berubah maka frekuensi data jaringan listrik f untuk perhitungan FFT juga ikut berubah, sehingga frekuensi data jaringan listrik f sebelum perhitungan FFT selalu sesuai dengan frekuensi jaringan listrik saat ini fo.

Operasi spesifik modul prapemrosesan data kualitas daya adalah menginterpolasi data setelah konversi A/D, dan algoritma interpolasi menggunakan interpolasi linier. Setelah verifikasi, di bawah tegangan pengenal, kesalahan operasi FFT yang disebabkan oleh algoritma interpolasi linier berada dalam 0. Dalam 1‰. Selain itu, fungsi lain dari modul adalah untuk menghitung nilai efektif tegangan dalam suatu siklus. Ini adalah data yang diperlukan untuk menghitung fluktuasi tegangan dan kedipan jangka panjang dan pendek. Modul komunikasi (send) bertugas mengirimkan data ke komputer bagian atas. Meskipun persyaratan real-time-nya tidak tinggi, hal ini terkait erat dengan lapisan bawah perangkat keras, sehingga ditetapkan sebagai thread interupsi perangkat lunak.

Ketika interupsi penerimaan port serial terjadi, panggil fungsi scia_rx_isr() untuk memproses perintah data yang diterima, dan mengirimkan data kualitas daya yang sesuai sesuai dengan perintah terkait. DSP/BIOS memberikan prioritas 0 hingga 14 untuk objek interupsi perangkat lunak. Menurut pentingnya utas di atas, prioritas utas pemrosesan data pengumpulan ditetapkan ke 14, utas komunikasi host ditetapkan ke 8, dan prioritas lainnya dicadangkan untuk peningkatan perangkat lunak di masa mendatang.

Perlu dicatat bahwa thread interupsi (termasuk interupsi perangkat keras dan interupsi perangkat lunak) semuanya berjalan pada tumpukan yang sama. Ketika interupsi berprioritas tinggi terjadi dan menyebabkan sistem berpindah tugas, thread interupsi berprioritas tinggi akan menginterupsi thread interupsi berprioritas rendah; sebelum menjalankan thread interupsi prioritas tinggi, konten register yang relevan dari thread interupsi prioritas rendah akan disimpan, dan interupsi prioritas tinggi Setelah thread berjalan, register akan dikembalikan ke konten aslinya dan terus menyelesaikan yang asli utas prioritas rendah.

Oleh karena itu, jika terlalu banyak interupsi perangkat keras atau rangkaian interupsi perangkat lunak yang disetel, tumpukan akan meluap. Karena alasan ini, sebagian besar modul tugas harus ditempatkan di thread tugas. Selanjutnya, jadwalkan thread tugas (TSK). Seperti kebanyakan sistem real-time, rangkaian tugas adalah komponen utama dari keseluruhan sistem. Fungsi di thread tugas dapat berjalan secara independen atau paralel. Modul manajemen tugas DSP/BIOS mengatur operasi sesuai dengan prioritas thread tugas, dan menyelesaikan konversi dari satu tugas ke tugas lainnya melalui fungsi peralihan.

Setiap tugas memiliki 4 status eksekusi: dijalankan, siap, diblokir, dan dihentikan. Misi bulan Januari telah dibuat, dan selalu berada di salah satu dari empat negara bagian. DSP/BIOS memberikan prioritas -l hingga 15 untuk setiap objek tugas. Tugas akan dilaksanakan dalam urutan prioritas yang ketat, tugas dengan prioritas yang sama akan diatur dalam urutan pelaksanaan sesuai dengan prinsip “siapa cepat dia dapat”. Perlu dicatat bahwa ketika thread tugas dibuat, tumpukan khusus milik tugas tersebut perlu dibuat pada saat yang bersamaan. Tumpukan digunakan untuk menyimpan variabel lokal atau sarang pemanggilan fungsi lebih lanjut.

Kami mengatur modul perhitungan analisis kualitas daya, modul penyimpanan data, dan modul interaksi manusia-komputer di thread tugas (TSK). Modul perhitungan analisis kualitas daya dapat dibagi menjadi tiga bagian: thread tugas perhitungan harmonik, thread tugas perhitungan fluktuasi tegangan, dan thread tugas perhitungan kedipan.

Thread tugas perhitungan harmonik terutama bertanggung jawab untuk melakukan operasi FFT pada data kualitas daya yang telah diproses sebelumnya. Operasi FFT terutama mencakup lima bagian: operasi konversi bit, operasi windowing, operasi kupu-kupu berdasarkan 2, operasi basis terpisah, dan operasi penjumlahan persegi. Utas tugas perhitungan fluktuasi tegangan bertanggung jawab untuk mencatat fluktuasi tegangan jaringan dalam waktu 3 menit. Modul preprocessing data kualitas daya sebelumnya telah memperoleh nilai tegangan efektif untuk setiap siklusnya.

Dengan cara ini, nilai maksimum dan minimum dari nilai efektif tegangan hanya perlu dicatat dalam waktu 3 menit, dan selisih keduanya adalah fluktuasi tegangan. Thread tugas penghitungan kedipan mencakup penghitungan kedipan waktu pendek dan kedipan jangka panjang. Sekarang metode desain meteran kedipan IEC umumnya diadopsi.

Sinyal pemeriksaan mandiri adaptif masukan melewati demodulator kuadrat, pemfilteran tertimbang band-pass, pemfilteran low-pass orde pertama kuadrat, dan evaluasi statistik online untuk akhirnya mendapatkan nilai kedipan; namun cara ini cukup rumit dan memakan waktu. Dengan menyederhanakan algoritma, diperoleh metode perhitungan yang sederhana dan layak: Perhitungan FFT dilakukan pada nilai tegangan efektif 256 siklus berturut-turut, dan setelah serangkaian perhitungan seperti pembobotan, dapat diperoleh nilai kedipan sebesar 12.8s, dan nilai kedipan dalam waktu 10 menit.

Nilai tersebut dapat memperoleh kedipan jangka pendek setelah penghitungan korelasi, dan 12 kedipan jangka pendek berturut-turut (dalam waktu 2 jam) dapat memperoleh kedipan jangka panjang setelah penghitungan. Setelah verifikasi, algoritma ini memiliki kesalahan dalam 1‰ dibandingkan dengan algoritma meteran kedipan IEC.

Modul penyimpanan data juga ditempatkan di thread tugas, dan prosesnya menyimpan hasil analisis kualitas daya, fluktuasi tegangan, dan nilai kedipan di FIash. Modul interaksi manusia-komputer mencakup dua bagian: tugas deteksi keyboard dan tugas tampilan kristal cair. Utas tugas deteksi keyboard dapat diselesaikan dengan fungsi periodik PRD. PRD dapat menentukan waktu berjalannya fungsi berdasarkan jam waktu nyata. Di sini, atur tugas deteksi keyboard agar dijalankan sekali dalam 100 md untuk mendeteksi penekanan tombol. Menurut kondisi kuncinya, kristal cair pameran tugas menampilkan data kualitas daya terbaru saat ini.

Terakhir, ada utas latar belakang (IDL). Utas latar belakang (IDL) memiliki prioritas terendah. Umumnya, modul analisis waktu nyata (TRA) ditempatkan di dalamnya untuk dijalankan, yang dapat melakukan interaksi waktu nyata dan diagnosis aplikasi DSP selama eksekusi aplikasi. CCS memiliki alat analisis waktu nyata seperti diagram beban CPU, diagram eksekusi, kontrol saluran host, perekaman informasi, pengamatan statistik, papan kontrol waktu nyata, dan pengamatan kernel/objek. Rangkaian modul fungsional ini dapat ditempatkan di utas IDL, melalui alat ini, pengoperasian seluruh sistem DSP akan menjadi jelas dalam sekejap.

2.2 Komunikasi dan sinkronisasi antar utas

Dalam sistem multi-utas ini, akses ke sumber daya bersama membutuhkan koordinasi timbal balik antara utas untuk diselesaikan.

Ada tiga metode komunikasi di lingkungan DSP/BIOS, yaitu komunikasi berbasis pipa (PIPE), komunikasi berbasis saluran berbasis aliran (SIO), dan komunikasi berbasis saluran host (HST).

Tabel 1 menunjukkan cara 4 utas berbagi data dan mencapai sinkronisasi.

3 Analisis dan debugging sistem real-time

Overhead kernel DSP/BIOS itu sendiri akan berdampak pada kinerja program sistem secara real-time. Untuk alasan ini, kernel DSP/BIOS perlu dioptimalkan. Anda dapat menggunakan alat analisis DSP/BIOS yang disediakan di CCS untuk menentukan overhead DSP/BIOS dan kapasitas komputasi seluruh sistem aplikasi. Misalnya, diagram beban CPU dalam alat analisis waktu nyata yang disediakan oleh DSP/BIOS adalah salah satu alat yang umum digunakan.

Pada tahap integrasi akhir, karena interaksi waktu nyata dan alasan lainnya, akan sering terjadi beberapa kesalahan atau respons yang tidak tepat waktu. Secara umum, karena fenomena ini non-periodik dan memiliki frekuensi kemunculan yang rendah, mereka sulit untuk ditemukan dan dilacak. Namun, karena modul RTA di DSP/BIOS tertanam di intinya, dikombinasikan dengan vektor deteksi khusus yang disediakan oleh pengembang, modul ini memberikan visibilitas unik ke akar penyebab kesalahan. Fungsi visualisasi ini sangat membantu mengisolasi dan memperbaiki kesalahan, yang tidak tersedia dalam sistem pengembangan tertanam umum.

Kinerja eksekusi program aplikasi di seluruh sistem dapat ditingkatkan dari empat aspek berikut: pilih jenis utas dengan hati-hati untuk fungsi program yang berbeda; menempatkan tumpukan sistem di memori on-chip; mengurangi frekuensi interupsi jam; meningkatkan ukuran input aliran dan buffer output.

4 ringkasan

Sebagai seperangkat alat yang disediakan oleh CCS, DSP/BIOS sendiri hanya menempati sumber daya CPU yang sangat sedikit, tetapi memberikan kinerja yang cukup tinggi dan mempercepat kemajuan pengembangan. Menggunakan DSP/BIOS sebagai sistem operasi real-time dari terminal pemantauan kualitas daya, mudah untuk mengontrol sumber daya perangkat keras saat menulis program DSP, dan untuk mengoordinasikan berbagai modul perangkat lunak secara fleksibel, yang sangat mempercepat kemajuan pengembangan perangkat lunak dan debugging. Eksperimen terakhir membuktikan bahwa seluruh sistem memiliki kinerja waktu nyata yang baik dan operasi yang stabil dan andal.