• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      STM32單片機(jī)的四驅(qū)磁導(dǎo)航AGV控制器設(shè)計(jì)*

      2018-07-11 07:51:38,,
      關(guān)鍵詞:觸摸屏指令驅(qū)動(dòng)

      ,,

      (云南民族大學(xué) 電氣信息工程學(xué)院,昆明 650504)

      引 言

      自動(dòng)導(dǎo)引小車(Automated Guided Vehicle, AGV)是一種能沿預(yù)先設(shè)定路徑行駛的智能化搬運(yùn)設(shè)備,廣泛應(yīng)用于現(xiàn)代工業(yè)自動(dòng)化物流系統(tǒng)中。目前,國(guó)內(nèi)現(xiàn)有的AGV控制器仍大多采用可編程控制器或51系列單片機(jī),通過串行處理或輪詢方式執(zhí)行AGV系統(tǒng)任務(wù),其動(dòng)態(tài)響應(yīng)能力差[1-2]、系統(tǒng)運(yùn)行不穩(wěn)定,實(shí)際運(yùn)行過程容易引起脫軌、車身行駛異常。針對(duì)這些不足,本文以STM32F103ZET6為核心設(shè)計(jì)AGV控制器,嵌入微型實(shí)時(shí)操作系統(tǒng),采用分層模型結(jié)構(gòu),管理AGV系統(tǒng)的軟硬件資源,以并行處理方式實(shí)現(xiàn)實(shí)時(shí)任務(wù)調(diào)度,大幅度提高系統(tǒng)性能,有效克服運(yùn)行過程中脫軌、車身行駛異常等不足。

      1 硬件系統(tǒng)總體設(shè)計(jì)

      AGV控制器的硬件系統(tǒng)主要包括控制系統(tǒng)單元、傳感器單元、人機(jī)交互單元、運(yùn)動(dòng)控制單元、電源管理單元[3],如圖1所示為AGV硬件系統(tǒng)架構(gòu)。

      控制系統(tǒng)單元主要由STM32單片機(jī)最小系統(tǒng)電路組成,主要完成人機(jī)交互、邏輯控制以及運(yùn)動(dòng)控制算法等功能。

      傳感器單元主要由磁導(dǎo)航傳感器、地標(biāo)傳感器、障礙物檢測(cè)傳感器等組成。通過傳感器單元采集磁導(dǎo)航信號(hào)、地標(biāo)指令信號(hào)、障礙物檢測(cè)信號(hào),然后經(jīng)過光耦隔離輸入控制器單元處理。

      人機(jī)交互單元主要是在觸摸屏和控制器單元之間通過RS232串口電路建立通信,實(shí)現(xiàn)觸摸屏人機(jī)界面與控制器之間的信息交互。

      運(yùn)動(dòng)控制單元主要由前級(jí)傳感器信號(hào)經(jīng)控制器單元運(yùn)算處理后輸出控制指令,再輸入AD7225芯片進(jìn)行D/A轉(zhuǎn)換,經(jīng)運(yùn)算放大電路輸出模擬信號(hào)給后級(jí)驅(qū)動(dòng)。

      圖1 AGV硬件系統(tǒng)架構(gòu)

      電源管理單元主要給其它各個(gè)單元模塊進(jìn)行供電以及控制器系統(tǒng)電源電量采集的模擬量信息。電源管理單元由24 V直流電源輸入,經(jīng)過TPS5450電源管理芯片生成12 V、5 V、3.3 V的直流電源。其中,24 V給觸摸屏、伺服驅(qū)動(dòng)電路供電,12 V給各組傳感器供電,5 V給信號(hào)放大電路、邏輯電平轉(zhuǎn)換電路供電,3.3 V給控制芯片STM32F103ZET6供電。

      2 軟件系統(tǒng)總體設(shè)計(jì)

      μC/OS-II是專門為嵌入式系統(tǒng)設(shè)計(jì)的硬實(shí)時(shí)內(nèi)核,其內(nèi)核精簡(jiǎn),多任務(wù)管理功能十分完善,實(shí)時(shí)性能好,并且具有可裁剪、可固化、源碼開放、可移植性強(qiáng)的特點(diǎn)[4]。同時(shí),μC/OS-II是搶占式的多任務(wù)操作系統(tǒng),總是運(yùn)行就緒列表中優(yōu)先級(jí)最高的任務(wù),其核心是任務(wù)調(diào)度器。μC/OS-II有5種任務(wù)狀態(tài),分別是運(yùn)行態(tài)、就緒態(tài)、掛起態(tài)、睡眠態(tài)以及中斷服務(wù)態(tài),通過調(diào)度實(shí)現(xiàn)在這5種狀態(tài)之間的任務(wù)轉(zhuǎn)換。本控制器在設(shè)計(jì)系統(tǒng)任務(wù)時(shí),通過任務(wù)調(diào)度的方式使控制器在滿足功能需求的同時(shí)實(shí)現(xiàn)程序設(shè)計(jì)的合理化、最優(yōu)化[5],從而實(shí)現(xiàn)AGV的直行、轉(zhuǎn)彎、避障、人機(jī)交互等功能。圖2所示為本文設(shè)計(jì)的控制器軟件體系架構(gòu)。

      本系統(tǒng)軟件平臺(tái)采用分層、模塊化結(jié)構(gòu),包括物理層、MAC層和應(yīng)用層。系統(tǒng)軟件包括Cortex-M3標(biāo)準(zhǔn)外設(shè)庫、Cortex-M3內(nèi)核庫、嵌入式實(shí)時(shí)微型操作系統(tǒng)μC/OS-II。應(yīng)用層包括電源管理控制庫、傳感器信號(hào)分析處理庫和運(yùn)動(dòng)控制庫,主要進(jìn)行磁導(dǎo)航傳感器數(shù)據(jù)采集、數(shù)值插補(bǔ)計(jì)算、誤差補(bǔ)償、校正等任務(wù),地標(biāo)傳感器的中斷任務(wù)處理、指令采集、分析、生成和輸出任務(wù),障礙物檢測(cè)傳感器的信號(hào)檢測(cè)和執(zhí)行任務(wù),電量數(shù)據(jù)的采集和電源調(diào)度任務(wù),運(yùn)動(dòng)控制的速度控制任務(wù)及其調(diào)度,人機(jī)交互操作任務(wù)。

      圖2 軟件體系架構(gòu)

      通過對(duì)任務(wù)的合理劃分可以有效地簡(jiǎn)化程序設(shè)計(jì),提高系統(tǒng)的動(dòng)態(tài)響應(yīng)性能和穩(wěn)定性,本控制器根據(jù)系統(tǒng)任務(wù)需求,將系統(tǒng)任務(wù)進(jìn)行劃分,采用靜態(tài)優(yōu)先級(jí)設(shè)置,賦予各個(gè)任務(wù)一定的優(yōu)先級(jí)別。如表1所列為任務(wù)的具體劃分和優(yōu)先級(jí)設(shè)置。

      如圖3所示為本控制器系統(tǒng)任務(wù)調(diào)度切換示意圖。系統(tǒng)啟動(dòng)后,μC/OS-II實(shí)時(shí)操作系統(tǒng)和硬件首先進(jìn)行初始化配置,然后CPU的控制權(quán)由操作系統(tǒng)開始管理,CPU內(nèi)核開始對(duì)任務(wù)按優(yōu)先級(jí)循環(huán)調(diào)度。

      表1 任務(wù)優(yōu)先級(jí)分配

      圖3 任務(wù)調(diào)度切換示意圖

      2.1 人機(jī)交互任務(wù)

      Modbus協(xié)議是Modicon公司開發(fā)的一種通信協(xié)議,采用主從問答方式工作,允許一個(gè)主機(jī)與一個(gè)從機(jī)或者多個(gè)從機(jī)通信,廣泛應(yīng)用于自動(dòng)化控制領(lǐng)域,已成為一種通用的工業(yè)標(biāo)準(zhǔn),控制器與觸摸屏之間可以利用此協(xié)議進(jìn)行通信。

      FreeModbus是一位奧地利人寫的針對(duì)嵌入式應(yīng)用的一種免費(fèi)通用的Modbus從機(jī)協(xié)議,其代碼規(guī)范、易移植、

      可裁剪、對(duì)軟硬件要求低、資源占用少[6-7]。本系統(tǒng)人機(jī)交互任務(wù)可以通過移植FreeModbus協(xié)議棧到STM32內(nèi)核,實(shí)現(xiàn)觸摸屏對(duì)系統(tǒng)信息的實(shí)時(shí)監(jiān)測(cè)和控制。本系統(tǒng)采用臺(tái)達(dá)DOP-B07系列觸摸屏,兼容Modbus RTU模式。通過臺(tái)達(dá)DOPSoft軟件設(shè)計(jì)觸摸屏界面,將觸摸屏設(shè)為主站,控制器設(shè)為從站,采用Modbus協(xié)議RTU模式進(jìn)行通信。

      本系統(tǒng)設(shè)計(jì)的觸摸屏主要用來監(jiān)控AGV的電量、速度、行駛狀態(tài)等信息,以及顯示主板各個(gè)傳感器和電機(jī)工作狀態(tài)是否正常。系統(tǒng)基于STM32內(nèi)核配置使用Modbus從機(jī)的 01功能和06功能,其分別在內(nèi)核開辟2個(gè)字節(jié)的離散變量地址存儲(chǔ)區(qū)域usDiscreteInputBuf[0]~usDiscreteInputBuf[1],以及 8個(gè)字節(jié)的保持寄存器地址存儲(chǔ)區(qū)域usRegHoldingBuf[0]~usRegHoldingBuf[7],然后通過配置STM32內(nèi)部的TIM2通用定時(shí)器,以及UART1寄存器進(jìn)行串口通信,最終實(shí)現(xiàn)AGV行駛狀態(tài)、傳感器運(yùn)行狀態(tài)等信息的人機(jī)交互。如表2所列為主機(jī)觸摸屏和從機(jī)控制器之間的存儲(chǔ)地址映射。

      表2 主從地址映射表

      2.2 障礙物檢測(cè)任務(wù)

      障礙物檢測(cè)是通過采集激光傳感器掃描傳回的編碼信息,調(diào)用Read_Obstacle()函數(shù)對(duì)采集的編碼信息讀取分析,如果掃描的距離小于系統(tǒng)設(shè)定的安全距離,則調(diào)用Avoidance_Obstacle_Process_task()函數(shù),使電機(jī)停止運(yùn)行。Obstacle_Check_task()的主要代碼如下所示:

      VoidObstacle_Check_task(void *pdata){

      while(1){

      Read_Obstacle();

      }

      //讀取傳感器編碼

      if(Command_Security_Obstacle==Unsafe)

      //讀取編碼信息是否小于安全距離Avoidance_Obstacle_Process_task();

      //執(zhí)行避障處理任務(wù)

      OSTimeDlyHMSM(0, 0, 0, 20);

      }

      //系統(tǒng)延時(shí)20ms,讓出CPU使用權(quán)

      2.3 地標(biāo)指令讀取任務(wù)

      2.3.1磁地標(biāo)指令讀取時(shí)隙糾錯(cuò)方法

      AGV控制系統(tǒng)任務(wù)中地標(biāo)指令讀取是AGV平穩(wěn)運(yùn)行的關(guān)鍵任務(wù)之一,如果地標(biāo)讀取錯(cuò)誤,可能導(dǎo)致行駛異常甚至災(zāi)難性后果[8]。為了提高命令地標(biāo)指令讀取的準(zhǔn)確性,本文設(shè)計(jì)了一種指令讀取時(shí)隙糾錯(cuò)方法,使AGV在不同速度、不同負(fù)載的條件下,有效降低地標(biāo)命令誤碼率,提高系統(tǒng)穩(wěn)定性。磁地標(biāo)指令讀取主要通過觸發(fā)地標(biāo)磁條,使控制器開始讀取地標(biāo)指令,解析生成相應(yīng)的控制指令,從而控制AGV執(zhí)行加減速、停車、轉(zhuǎn)向等功能[8]。

      2.3.2軟件設(shè)計(jì)

      如圖4所示為地標(biāo)指令讀取流程圖。本控制器設(shè)計(jì)的地標(biāo)指令讀取時(shí)隙糾錯(cuò)方法,每組地標(biāo)傳感器有3個(gè)磁極信號(hào)采集輸入端,分別是觸發(fā)地標(biāo)南極S1、命令地標(biāo)南極S2、命令地標(biāo)北極N1,當(dāng)S極觸發(fā)記為字符S,N極觸發(fā)記為字符N。當(dāng)?shù)貥?biāo)S1被觸發(fā),產(chǎn)生上升沿信號(hào)輸入STM32的PF0口而觸發(fā)外部中斷0時(shí),執(zhí)行中斷函數(shù)EXTI0_IRQHandler(),通過I2C總線觸發(fā)實(shí)時(shí)時(shí)鐘芯片的時(shí)鐘輸出功能,并產(chǎn)生32 Hz的脈沖輸入PB8口,觸發(fā)外部中斷8,執(zhí)行中斷函數(shù)EXTI9_5_IRQHandler(),開始計(jì)時(shí)指令讀取時(shí)間。當(dāng)指令讀取時(shí)間超過設(shè)定的時(shí)隙閾值時(shí),則判定指令讀取出錯(cuò),此時(shí)自動(dòng)清除地標(biāo)指令輸入存儲(chǔ)區(qū)的指令代碼,初始化指令存儲(chǔ)區(qū),重新開始讀取指令。本控制器設(shè)計(jì)的計(jì)時(shí)時(shí)隙閾值為6 s。

      圖4 地標(biāo)指令處理流程圖

      上述兩個(gè)中斷函數(shù)主要代碼如下:

      void EXTI0_IRQHandler(void){

      if(EXTI_GetITStatus(EXTI_Line0)!=RESET)

      //判斷外部中斷0發(fā)生{

      EXTI_ClearFlag(EXTI_Line0); //清除外部中斷0 標(biāo)志位

      Trigger_Marker_En = 1;//觸發(fā)地標(biāo)標(biāo)志置位

      RTC_CLKOUT_Control(Enable,Freq_32);

      //使能實(shí)時(shí)時(shí)鐘產(chǎn)生32Hz時(shí)鐘

      EXTI_ClearITPendingBit(EXTI_Line0);

      }

      }

      //清除外部中斷0標(biāo)志位,退出中斷

      void EXTI9_5_IRQHandler(void){

      if(EXTI_GetITStatus(EXTI_Line8)!=RESET){

      //判斷外部中斷8發(fā)生

      EXTI_ClearFlag(EXTI_Line8);//清除外部中斷8標(biāo)志位

      if(Slot_Count>65534)//判斷時(shí)隙計(jì)數(shù)值

      Slot_Count = 0;//計(jì)數(shù)值歸零

      else Slot_Count++;//否則繼續(xù)計(jì)數(shù)

      EXTI_ClearITPendingBit(EXTI_Line8);

      }

      }//清除外部中斷8標(biāo)志位

      2.4 運(yùn)動(dòng)控制任務(wù)

      2.4.1磁導(dǎo)航偱跡偏差補(bǔ)償控制算法

      AGV控制系統(tǒng)任務(wù)中導(dǎo)航循跡任務(wù)也是AGV平穩(wěn)運(yùn)行的關(guān)鍵任務(wù)之一[9-10]。一旦導(dǎo)航偏差過大,將導(dǎo)致AGV脫軌。本系統(tǒng)設(shè)計(jì)了磁導(dǎo)航偱跡偏差補(bǔ)償控制算法。如圖5所示的算法模型,每個(gè)點(diǎn)的數(shù)值為其所在位置的權(quán)值,算法表達(dá)如下所示:

      (1)

      式(1)中,ai為每個(gè)位置磁導(dǎo)航傳感器的權(quán)值,N為被觸發(fā)磁導(dǎo)航傳感器的個(gè)數(shù),ε為磁導(dǎo)航偱跡偏移值。其中,第1組為直行行駛模型,傳感器8和9感應(yīng)到磁極信號(hào)而觸發(fā),ε=(8+9)/(1+1)-8.5=0。第2組為左轉(zhuǎn)彎模型,傳感器5、6感應(yīng)到磁極信號(hào)而觸發(fā),ε=(5+6)/(1+1)-8.5= -3。第3組為右轉(zhuǎn)彎模型,傳感器11、12感應(yīng)到磁極信號(hào)而觸發(fā),ε=(11+12)/(1+1)-8.5= 3。

      圖5 偱跡算法模型

      2.4.2軟件設(shè)計(jì)

      本系統(tǒng)采用8位磁導(dǎo)航傳感器,即上述模型5、6、7、8、9、10、11、12共8個(gè)點(diǎn)作為磁導(dǎo)航傳感器的磁條信號(hào)采集點(diǎn)。如圖6所示為導(dǎo)航循跡流程圖。根據(jù)地標(biāo)傳感器觸發(fā)采集到的地標(biāo)指令,調(diào)用 Command_Analysis()函數(shù)解析指令,再調(diào)用Offset_Analysis()實(shí)時(shí)計(jì)算并反饋磁導(dǎo)航傳感器循跡偏移值,同時(shí)調(diào)用AGV_Motion_Control()函數(shù),將偏移值反饋給驅(qū)動(dòng)信號(hào)輸入端進(jìn)行補(bǔ)償計(jì)算,再調(diào)用 WR_Speed()函數(shù)將補(bǔ)償計(jì)算后的值經(jīng)過D/A芯片轉(zhuǎn)換,輸出相應(yīng)驅(qū)動(dòng)電壓信號(hào),從而實(shí)現(xiàn)AGV直行、轉(zhuǎn)彎、加減速等功能。表3為AGV地標(biāo)指令功能編碼。

      圖6 導(dǎo)航循跡流程圖

      地標(biāo)指令編碼功能說明地標(biāo)指令編碼功能說明NNNS高速行駛SNNS調(diào)轉(zhuǎn)行駛NNSN中速行駛SNSN左轉(zhuǎn)彎行駛NNSS低速行駛SNSS右轉(zhuǎn)彎行駛NSNN停止行駛SSNN直線行駛

      3 功能測(cè)試

      圖7 AGV實(shí)驗(yàn)平臺(tái)

      功能測(cè)試主要對(duì)本文設(shè)計(jì)的控制器人機(jī)交互任務(wù)、障礙物檢測(cè)任務(wù)、運(yùn)動(dòng)控制任務(wù)、地標(biāo)指令讀取任務(wù)的功能及系統(tǒng)性能驗(yàn)證。如圖7所示為搭載本文設(shè)計(jì)的AGV控制器實(shí)驗(yàn)平臺(tái)。當(dāng)系統(tǒng)上電時(shí),觸摸屏開啟,人機(jī)界面顯示AGV的電量、速度等狀態(tài)信息,系統(tǒng)上電默認(rèn)設(shè)置為中速直行,設(shè)定地標(biāo)指令讀取時(shí)隙閥值為6 s,如圖8所示為AGV運(yùn)行過程中地標(biāo)指令界面。通過安裝在控制器主板上的驅(qū)動(dòng)電壓信號(hào)采集裝置得到各驅(qū)動(dòng)電機(jī)的驅(qū)動(dòng)電壓信號(hào),如表4所列。本控制器設(shè)計(jì)了4檔(零速、低速、中速、高速)速度驅(qū)動(dòng)電壓信號(hào),充分滿足實(shí)際生產(chǎn)中的運(yùn)行需求。從采集的各個(gè)驅(qū)動(dòng)輪驅(qū)動(dòng)電壓信號(hào)可以驗(yàn)證,當(dāng)AGV檢測(cè)到障礙物時(shí),各檔速度模式下電機(jī)驅(qū)動(dòng)均

      立即輸出0 V的信號(hào),使系統(tǒng)迅速停機(jī)。同時(shí),當(dāng)本系統(tǒng)采用差速驅(qū)動(dòng)方式實(shí)現(xiàn)AGV轉(zhuǎn)彎時(shí),各檔速度模式下4個(gè)電機(jī)的驅(qū)動(dòng)信號(hào)值均非常穩(wěn)定。實(shí)測(cè)表明,AGV系統(tǒng)運(yùn)行穩(wěn)定可靠、行駛平穩(wěn),沒有出現(xiàn)AGV脫軌、車身行駛異常的情況。

      圖8 地標(biāo)指令及行駛信息界面

      驅(qū)動(dòng)輪直行驅(qū)動(dòng)電壓/V右轉(zhuǎn)驅(qū)動(dòng)電壓/V左轉(zhuǎn)驅(qū)動(dòng)電壓/V檢測(cè)到障礙物時(shí)驅(qū)動(dòng)電壓/V零速低速中速高速零速低速中速高速零速低速中速高速零速低速中速高速前左00.61.73.601.02.14.000.31.43.00000前右00.61.73.600.21.33.200.92.13.80000后左00.61.73.601.02.14.000.41.53.10000后右00.61.73.600.21.33.201.02.13.90000

      結(jié) 語

      猜你喜歡
      觸摸屏指令驅(qū)動(dòng)
      聽我指令:大催眠術(shù)
      基于模糊PI控制的驅(qū)動(dòng)防滑仿真系統(tǒng)分析
      屈宏斌:未來五年,雙輪驅(qū)動(dòng),砥礪前行
      PLC和觸摸屏在衛(wèi)生間控制系統(tǒng)的應(yīng)用
      軌旁ATC系統(tǒng)門控柜接收/驅(qū)動(dòng)板改造
      ARINC661顯控指令快速驗(yàn)證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      皮膚“長(zhǎng)”出觸摸屏
      基于S3C6410的Wi-Fi驅(qū)動(dòng)移植實(shí)現(xiàn)
      坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      松阳县| 新疆| 南开区| 潜山县| 永州市| 炎陵县| 隆昌县| 建始县| 汉阴县| 丘北县| 瑞丽市| 宜兰市| 邮箱| 巴彦淖尔市| 巢湖市| 张家港市| 鄂伦春自治旗| 和林格尔县| 铁力市| 清河县| 北川| 弥渡县| 南宁市| 肥城市| 乌拉特前旗| 璧山县| 鸡西市| 宕昌县| 礼泉县| 龙门县| 扶绥县| 绥化市| 鄂托克前旗| 大渡口区| 青浦区| 扶沟县| 武川县| 潜江市| 赤峰市| 武邑县| 方山县|