關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于STM32F107的搬運機器人電機控制系統設計

        基于STM32F107的搬運機器人電機控制系統設計

        作者: 時間:2012-05-03 來源:網絡 收藏

        2.2 μC/OS-II系統下任務的分配
        成功地將μC/OS-Ⅱ系統移植到后,μC/OS-II的程序是將一個大的應用程序分成相對獨立的多個任務來完成。定義好每個任務的優先級,μC/OS-II內核對這些任務進行調度和管理。
        軟件思路是根據實際運行的需要由上位機通過串口對轉速和舵機轉動位置進行給定。的轉速是由設定的速度值和由增量式編碼器的采集值相比較,經過速度PID算法實現閉環控制。舵機的位置主要是由絕對值式編碼器反饋現在位置,根據動作時間要求調節舵機轉動的速度。本軟件要實現的功能如下:
        ◆上位機給定電機轉速、舵機轉動角度和動作時間;
        ◆要求電機轉速連續可調并且具有良好的靜、動態性能,轉速沒計采用PI算法調節;
        ◆要求舵機快速到達指定角度,有位置反饋作為舵機給定轉速的調整;
        ◆具有一定的故障保護功能。當電機出現堵轉、電流過大以及舵機觸動限位開關時,要求停止驅動模塊工作。
        針對以上要實現的功能,可以將應用程序分為以下幾個任務:
        ①啟動任務。對系統進行初始化,創建初始電機狀態,然后自我刪除,啟動任務進入睡眠狀態。
        ②電機和舵機保護任務。用于在過流或限位開關動作時響應外部中斷,進入中斷狀態通過發任務信號量,任務程序檢測信號量有效并響應該任務,停止輸出。任務優先級設為0級。
        ③上位機給定任務。用于上位機控制電機和舵機,任務優先級設為1級。上位機數據輸入寄存器時將產生一個中斷,該中斷將收到的字節送入緩沖區并釋放上位機給定任務的信號量;任務中檢測到信號量有效便開始執行,將對應的字節信息解析成對應的電機轉速和舵機轉角位置信息給相應變量賦值。
        ④電機轉速控制任務。用于電機的閉環調速,任務優先級設為2級。
        ⑤舵機控制任務。用于控制舵機在規定時間內到達指定位置,任務優先級設為3級。
        2.3 啟動任務
        主程序中,在調用μC/OS-II的其他任務之前,首先調用系統初始化函數OSInit(),初始化μC/OS-II所有的變量和數據結構;同時,建立空閑任務OS_TaskIdle(),這個任務總是處于就緒態;調用OSTaskCreate()函數建立啟動任務;調用OSStart(),將控制權交給μC/OS-II內核,開始運行多任務。
        啟動任務是在主程序中創建的,它主要有3個功能:
        ①用于系統初始化(PWM輸出模塊、串口、ADC模塊、輸入電平中斷功能、定時器)。
        ②建立系統所要用到的信號量。
        ③建立系統的其他任務。
        最后調用OSTaskDel(OS_PRIO_SELF)進行自我刪除,啟動任務進入睡眠狀態。主程序任務流程如圖4所示。

        本文引用地址:http://www.104case.com/article/160667.htm

        e.JPG


        2.4 電機轉速控制任務
        增量式編碼器每次產生外部中斷,在中斷狀態中發出任務信號量,任務程序檢測信號量有效并響應該任務,任務中通過測得電機當前轉速和給定速度對比實現閉環控制。電機轉速控制任務流程如圖5所示。

        f.JPG



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 咸丰县| 密山市| 白河县| 万源市| 云霄县| 邯郸市| 石景山区| 定南县| 和平县| 锦州市| 宁乡县| 金坛市| 荆门市| 紫金县| 宜章县| 兴仁县| 大同县| 武宁县| 靖安县| 铜山县| 合肥市| 周宁县| 永康市| 齐河县| 贵溪市| 彩票| 庆阳市| 台湾省| 淳化县| 桂阳县| 民勤县| 湘潭市| 花莲市| 双鸭山市| 清水河县| 青神县| 宜阳县| 皋兰县| 绍兴县| 揭东县| 那坡县|