2 perancangan perangkat lunak sistem
2.1μC / OS-II arsitektur
μC / OS-II adalah ROM portabel, implan, croppable, preemptive real-time multitasking sistem operasi kernel dengan efisiensi eksekusi yang tinggi, footprint kecil, kinerja real-time yang baik dan skalabilitas. Fitur, kernel terkecil dapat dikompilasi menjadi 2KB. μC / OS-II ditulis dalam bahasa C dan assembly. Sebagian besar kode ditulis dalam C. Hanya sedikit dari kode yang terkait erat dengan prosesor yang ditulis dalam bahasa assembly. μC / OS-II hanya mencakup fungsi dasar seperti penjadwalan tugas, manajemen tugas, manajemen waktu, manajemen memori, komunikasi antar tugas, dan sinkronisasi.
Penugasan tugas di bawah sistem 2.2μC / OS-II
Setelah berhasil mem-porting sistem μC / OS-II ke STM32F107, pemrograman berbasis μC / OS-II dilakukan dengan membagi aplikasi besar menjadi tugas yang relatif independen. Prioritas setiap tugas didefinisikan dan kernel μC / OS-II menjadwalkan dan mengelola tugas-tugas ini.
Ide desain perangkat lunak adalah untuk memberikan kecepatan motor dan posisi kemudi dari perangkat kemudi melalui port serial sesuai dengan operasi sebenarnya dari robot. Kecepatan motor dibandingkan dengan nilai set inkremental encoder dan kontrol loop tertutup diimplementasikan oleh algoritma PID kecepatan. Posisi perangkat kemudi terutama adalah bahwa enkoder nilai absolut mengisi kembali posisi saat ini, dan kecepatan gigi kemudi disesuaikan dengan kebutuhan waktu aksi. Fungsi yang akan direalisasikan oleh perangkat lunak sistem kontrol motor dari robot penanganan ini adalah sebagai berikut:
◆ Mesin atas memberi kecepatan motor, sudut kemudi dan waktu aksi;
◆ Memerlukan penyesuaian kecepatan motor yang terus menerus dan kinerja statis dan dinamis yang baik. Kecepatan tidak dihitung oleh algoritma PI.
◆ Membutuhkan perangkat kemudi untuk mencapai sudut yang ditentukan dengan cepat, dan umpan balik posisi digunakan sebagai penyesuaian kecepatan yang diberikan dari perangkat kemudi;
◆ Memiliki fungsi perlindungan kesalahan tertentu. Ketika motor diblokir, arus terlalu besar, dan perangkat kemudi menyentuh saklar batas, diperlukan untuk menghentikan modul drive.
Untuk fungsi-fungsi di atas yang akan diterapkan, desain aplikasi dapat dibagi ke dalam tugas-tugas berikut:
1 Mulai tugas. Inisialisasi sistem, buat keadaan motor awal, kemudian hapus sendiri dan mulai tugas untuk tidur.
2 tugas perlindungan motor dan kemudi. Ini digunakan untuk menanggapi interupsi eksternal ketika saklar arus berlebih atau batas diaktifkan. Ketika status interupsi dimasukkan, tugas semaphore dikirim. Program tugas mendeteksi bahwa semaphore valid dan merespons tugas dan menghentikan keluaran. Prioritas tugas diatur ke level 0.
3 komputer host tugas yang diberikan. Hal ini digunakan untuk mesin atas untuk mengendalikan motor dan perangkat kemudi, dan prioritas tugas diatur ke level 1. Ketika register input data komputer host dihasilkan, interupsi akan dihasilkan, yang akan mengirim byte yang diterima ke dalam buffer dan lepaskan semaphore dari tugas yang diberikan komputer host; ketika semaphore terdeteksi, tugas akan mulai dieksekusi dan byte yang sesuai akan dieksekusi. Informasi tersebut diolah menjadi informasi kecepatan motor dan informasi posisi kemudi yang sesuai untuk menetapkan nilai ke variabel yang sesuai.
4 tugas kontrol kecepatan motor. Untuk pengaturan kecepatan putaran-tertutup motor, prioritas tugas diatur ke level 2.
5 tugas kontrol peralatan kemudi. Ini digunakan untuk mengontrol perangkat kemudi untuk mencapai posisi yang ditentukan dalam waktu yang ditentukan, dan prioritas tugas diatur ke level 3.
2.3 Mulai tugas
Dalam program utama, sebelum memanggil tugas lain μC / OS-II, pertama-tama panggil fungsi inisialisasi sistem OSInit () untuk menginisialisasi semua variabel dan struktur data μC / OS-II; pada saat yang sama, buat task idle OS_TaskIdle (), tugas ini selalu dalam keadaan siap; memanggil fungsi OSTaskCreate () untuk menetapkan tugas startup; panggil OSStart (), transfer kontrol ke μC / OS-II kernel, mulailah menjalankan multitasking.
Tugas startup dibuat dalam program utama, yang memiliki tiga fungsi utama:
1 untuk inisialisasi sistem (modul output PWM, port serial, modul ADC, fungsi interupsi level input, timer).
2 Tetapkan jumlah sinyal yang digunakan oleh sistem.
3 menetapkan tugas lain dari sistem.
Akhirnya, panggil OSTaskDel (OS_PRIO_SELF) untuk menghapus dirinya sendiri dan mulai tugas untuk tidur. Alur kerja program utama ditunjukkan pada Gambar 4.
2.4 tugas kontrol kecepatan motor
Setiap kali enkoder inkremental menghasilkan interupsi eksternal, tugas semaphore dikeluarkan dalam keadaan interupsi. Program tugas mendeteksi bahwa semaphore valid dan merespons tugas. Tugas ini mewujudkan kontrol loop tertutup dengan mengukur kecepatan motor saat ini dan perbandingan kecepatan yang diberikan. Arus tugas kontrol kecepatan motor ditunjukkan pada Gambar 5.
2.5 tugas kontrol gigi kemudi
Kontrol servo menghasilkan waktu referensi oleh timer, mengirim semaphore setiap waktu tetap, dan tugas akan dijalankan satu kali. Tugas kontrol servo membandingkan posisi yang diukur oleh enkoder absolut dengan posisi yang diberikan dan menyesuaikan kecepatan servo sesuai dengan waktu yang tersisa. Alur tugas kontrol servo ditunjukkan pada Gambar 6.
3 antarmuka sistem elektromekanik
Perangkat kemudi robot terdiri dari peredam 30: 1 yang terhubung ke motor DC. Encoder posisi absolut terhubung ke perangkat kemudi dan mengirim sinyal sudut perangkat kemudi ke papan kontrol drive. Dua poros roda depan robot dihubungkan oleh batang transmisi. Salah satu poros terhubung ke perangkat kemudi oleh sabuk transmisi, sehingga ketika gigi kemudi berputar, sabuk transmisi menggerakkan batang transmisi untuk memastikan bahwa dua roda depan dapat berputar secara bersamaan. Motor penggerak roda belakang adalah motor DC, yang terhubung langsung ke enkoder inkremental. Setelah rasio reduksi dikurangi dengan peredam 25: 1, roda belakang digerakkan oleh diferensial mekanis. Sinyal dari encoder tambahan juga dikirim ke papan kontrol drive. Struktur sistem elektromekanik ditunjukkan pada Gambar 7.
Kesimpulan
Dalam tulisan ini, perancangan perangkat keras pengendali motor dan servo dari robot penanganan direalisasikan. Sistem operasi real-time μC / OS-II berhasil disematkan pada STM32F107, dan percobaan putaran-tertutup kecepatan motor dan perangkat kemudi diselesaikan. Memanfaatkan karakteristik multi-tugas kinerja real-time dari kontroler inti Cortex-M3 dan sistem μC / OS-II, ia menyediakan perangkat lunak dan fondasi perangkat keras untuk pengambilan gambar video robot dan pelacakan navigasi berikutnya. Jika algoritma PI yang ada ditingkatkan dan kecepatan motor dan kontrol loop tertutup ganda saat ini dapat direalisasikan, karakteristik motor robot akan lebih baik, dan prospek aplikasi robot penanganan akan lebih luas.





