2 sistem yazılımı tasarımı
2.1μC / OS-II mimarisi
μC / OS-II, yüksek yürütme verimliliği, küçük ayak izi, iyi gerçek zamanlı performans ve ölçeklenebilirlik özelliklerine sahip taşınabilir, implante edilebilir ROM, çatalı, önleyici gerçek zamanlı çoklu görev işletim sistemi çekirdeğidir. Özellikler, en küçük çekirdek 2KB'ye derlenebilir. C ve OS-II, C ve montaj dilinde yazılmıştır. Kodun çoğu C dilinde yazılmıştır. İşlemciyle yakından ilişkili kodun sadece bir kısmı montaj dilinde yazılmıştır. μC / OS-II sadece görev zamanlama, görev yönetimi, zaman yönetimi, bellek yönetimi, görevler arası iletişim ve senkronizasyon gibi temel işlevleri içerir.
2.2μC / OS-II sistemi altında görev atama
ΜC / OS-II sistemini STM32F107'ye başarıyla aktardıktan sonra, μC / OS-II tabanlı programlama, büyük bir uygulamayı görece bağımsız görevlere bölerek yapılır. Her görevin önceliği tanımlanmıştır ve μC / OS-II çekirdeği bu görevleri zamanlamakta ve yönetmektedir.
Yazılım tasarım fikri, robotun gerçek çalışmasına göre motor hızını ve direksiyon dişlisinin seri portundan direksiyon pozisyonunu vermektir. Motorun hızı, artımlı kodlayıcının ayarlanan değeri ile karşılaştırılır ve kapalı döngü kontrolü, hız PID algoritması tarafından uygulanır. Direksiyon dişlisinin konumu esas olarak mutlak değer enkoderinin akım konumunu geri beslemesidir ve direksiyon dişlisinin hızı, eylem süresi gereksinimine göre ayarlanır. Bu elleçleme robotunun motor kontrol sistemi yazılımı tarafından gerçekleştirilecek fonksiyonlar aşağıdaki gibidir:
Machine Üst makine motor hızını, direksiyon açısını ve hareket süresini verir;
Motor Motor hızının sürekli ayarlanması ve iyi statik ve dinamik performans gerektirir. Hız, PI algoritması tarafından sayılmamaktadır.
Steering Direksiyon dişlisinin belirtilen açıya hızlıca ulaşmasını ve konum geri bildiriminin direksiyon dişlisinin verilen hızının ayarlanması için kullanılmasını gerektirir;
Certain Belirli bir arıza koruma fonksiyonuna sahiptir. Motor bloke edildiğinde, akım çok büyüktür ve direksiyon dişlisi limit anahtarına dokunduğunda, sürücü modülünü durdurmak gerekir.
Uygulanacak yukarıdaki fonksiyonlar için uygulama tasarımı aşağıdaki görevlere ayrılabilir:
1 Görevi başlatın. Sistemi ilklendirin, bir başlangıç motor durumu oluşturun, sonra kendini silin ve uyumaya başlayın.
2 motor ve direksiyon dişlisi koruma görevi. Aşırı akım veya limit anahtarı etkinleştirildiğinde harici bir kesmeye cevap vermek için kullanılır. Kesme durumu girildiğinde, görev semaforu gönderilir. Görev programı semaforun geçerli olduğunu algılar ve göreve yanıt verir ve çıkışları durdurur. Görev önceliği 0 seviyesine ayarlandı.
Görev verilen 3 ana bilgisayar. Motor ve direksiyon dişlisini kontrol etmek için üst makinede kullanılır ve görev önceliği seviye 1 olarak ayarlanır. Ana bilgisayar veri giriş kaydı oluşturulduğunda, alınan baytı ana bilgisayarın verilen görevinin semaforunu tamponlamak ve serbest bırakmak; Semafor algılandığında, görev yürütülmeye başlayacak ve ilgili bayt çalıştırılacaktır. Bilgiler ilgili değişkenlere değer atamak için ilgili motor hızına ve direksiyon dişlisi pozisyon bilgisine ayrıştırılır.
4 motor hız kontrol görevi. Motorun kapalı döngü hız ayarı için, görev önceliği seviye 2'ye ayarlanır.
5 direksiyon dişlisi kontrol görevi. Direksiyon dişlisinin belirtilen süre içerisinde belirlenen konuma ulaşması için kullanılır ve görev önceliği 3. seviyeye ayarlanır.
2.3 görevi başlatmak
Ana programda, otherC / OS-II'nin diğer görevlerini çağırmadan önce, ilk olarak initialC / OS-II'nin tüm değişkenlerini ve veri yapılarını başlatmak için sistem başlatma fonksiyonu OSInit () işlevini çağırın; Aynı zamanda, boşta olan OS_TaskIdle () görevini belirleyin, bu görev her zaman hazır durumdadır; Başlangıç görevini kurmak için OSTaskCreate () işlevini çağırın; OSStart () işlevini çağırın, controlC / OS-II çekirdeğine aktarımı kontrol edin, çoklu görev çalıştırmaya başlayın.
Başlangıç görevi üç ana işlevi olan ana programda oluşturulur:
1 sistem başlatma için (PWM çıkış modülü, seri port, ADC modülü, giriş seviyesi kesme fonksiyonu, zamanlayıcı).
2 Sistem tarafından kullanılan sinyal miktarını belirleyin.
3 sistemin diğer görevlerini kurmak.
Son olarak, kendisini silmek ve uyumak için görev başlatmak için OSTaskDel (OS_PRIO_SELF) arayın. Ana program görev akışı Şekil 4'te gösterilmiştir.
2.4 motor hız kontrol görevi
Artımlı enkoder her harici bir kesme oluşturduğunda, görev semaforu kesinti durumunda verilir. Görev programı semaforun geçerli olduğunu algılar ve göreve yanıt verir. Görev, mevcut motor hızını ve verilen hız karşılaştırmasını ölçerek kapalı döngü kontrolünü gerçekleştirir. Motor hız kontrol görev akışı Şekil 5'te gösterilmiştir.
2.5 direksiyon dişlisi kontrol görevi
Servo kontrol, bir zamanlayıcı tarafından bir referans zamanı üretir, her sabit zamanda bir semafor gönderir ve görev bir kez gerçekleştirilir. Servo kontrol görevi mutlak enkoder tarafından ölçülen pozisyonu verilen konumla karşılaştırır ve kalan süreye göre servo hızını ayarlar. Servo kontrol görev akışı Şekil 6'da gösterilmiştir.
3 sistem elektromekanik arayüzü
Robotun direksiyon dişlisi, DC motora bağlı bir 30: 1 redüktörden oluşur. Mutlak konum enkoderi direksiyon dişlisine bağlanır ve direksiyon dişlisinin açı sinyalini sürücü kontrol panosuna gönderir. Robotun ön tekerleğinin iki şaftı bir transmisyon çubuğu ile bağlanır. Şaftlardan bir tanesi, bir şanzıman kayışıyla direksiyon dişlisine bağlanır, böylece direksiyon dişlisi döndüğünde, şanzıman kayışı, iki ön tekerleğin eşzamanlı olarak dönebildiğinden emin olmak için şanzıman çubuğunu hareket ettirir. Arkadan çekişli motor, artımlı enkodere doğrudan bağlı olan bir DC motordur. Redüksiyon oranı 25: 1 redüktör ile azaltıldıktan sonra, arka tekerlek mekanik diferansiyel tarafından tahrik edilir. Artımlı kodlayıcıdan gelen sinyaller ayrıca sürücü kontrol panosuna gönderilir. Elektromekanik sistemin yapısı Şekil 7'de gösterilmiştir.
Sonuç
Bu çalışmada, elleçleme robotunun motor ve servo kontrolör donanımının tasarımı gerçekleştirilmiştir. Gerçek zamanlı işletim sistemi μC / OS-II, STM32F107 üzerinde başarılı bir şekilde gömülüdür ve motorun kapalı çevrim deneyi ve direksiyon dişlisi tamamlanmıştır. Cortex-M3 çekirdek kontrolörün ve μC / OS-II sisteminin çok-görevli gerçek zamanlı performansının özelliklerinden yararlanarak, daha sonraki robot görüntülü video yakalama ve navigasyon takibi için bir yazılım ve donanım temeli sağlar. Mevcut PI algoritması geliştirilirse ve motorun hızı ve mevcut çift kapalı çevrim kontrolü gerçekleştirilebilirse, robot motorun özellikleri daha iyi olacaktır ve işleme robotunun uygulama olasılığı daha geniş olacaktır.





