張艷珍,夏繼強,滿慶豐,劉貝,史偉偉
(北京航空航天大學 機械工程及自動化學院,北京100191)
AGV系統是當今柔性制造系統(FMS)和自動化倉儲系統中物流運輸的主要手段。AGV具有適應性好、柔性程度高、可靠性好、可實現生產和搬運功能的集成化和自動化等優點[1]。AGV車載控制器是AGV控制系統的核心,其性能和可靠性直接影響AGV產品的性能和可靠性。
對于國內應用的AGV來說,大多采用基于單片機[2-5]、可編 程 控 制 器 (PLC)[6-9]、嵌 入 式 工 控 機[10-12]等 方案。采用PLC作為控制器系統存在擴展不便、功能簡單、難以實現復雜的調度算法等問題[3];而采用工業計算機控制方案則存在成本過高、系統穩定性不佳等不足,而且由于AGV的不斷振動等原因導致硬盤讀取數據不穩定,造成整個AGV系統的宕機[13]。針對以上問題,本文設計的AGV車載控制器基于嵌入式系統,該車載控制器功能齊全、具有擴展方便、配置靈活的特點。
車載控制器開發中采用雙CPU主從結構,基于ARM11(S3C6410)的開發板平臺作為主控板,基于STM32的擴展板作為底層驅動板。主控板負責復雜的邏輯運算、網絡通信和人機交互;底層驅動板板負責外圍設備驅動,包括數字量的輸入/輸出、驅動電機控制、RFID讀卡器數據采集和磁導航傳感器信號的測量等功能。主控板通過與上位機調度系統的無線通信確定需要完成的規定動作,并分解成各底層驅動板需要的執行的功能,然后通過串口下發給各底層驅動板運動控制指令,底層驅動板完成相應的動作并反饋自身狀態,并在上位機上顯示。車載控制器通用功能框圖見圖1。
車載控制器的STM32底層驅動板通過磁導航傳感器采集磁條信息,并對采集的信號進行處理,然后通過DAC模塊(控制電機的轉速大小)、繼電器輸出DO模塊(控制電機的正反轉)控制驅動電機,高速計數器模塊(電機脈沖采集)實現AGV的行走和轉向;并將自動/手動、急停、磁導航傳感器的門位信號、AGV行走的速度等數據信息通過串口通信發送至主控板,并在觸摸屏上顯示;同時,通過無線通信將上述數據信息發送至上位機,實現上位機對AGV狀態的監測。另一方面,上位機可將自動/手動及行走/轉向(前進、后退、左轉、右轉)指令發送至控制器,實現對AGV的遠程控制。

圖1 車載控制器通用功能框圖
根據功能要求,AGV車載控制器主要有以下模塊:觸摸屏顯示模塊、無線通信模塊、CAN總線通信模塊、串口通信模塊、電源管理模塊、ADC模塊、DAC模塊、計數器模塊、DI/DO模塊。其中,觸摸屏顯示模塊、無線通信模塊在主控板上,其余模塊在底層驅動板上。另外,主控板與底層驅動板之間采用串口通信或者CAN總線通信。
車載控制器硬件分為兩部分:①S3C6410主控板設計,帶有無線模塊以及觸摸屏顯示;②STM32底層驅動板設計,帶有外設接口,用于外圍設備信號的輸入/輸出。
車載控制器的主控板處理器采用Samsung公司的ARM處理器S3C6410。該微處理器采用ARM1176JZF-S內核,其穩定主頻為533 MHz,最高主頻可達667 MHz,具有低成本、低功耗、高性能的特點。S3C6410具有雙總線架構,一路用于內存總線,另一路用于Flash總線DDR內存控制器;支持Nor Flash和Nand Flash兩種Flash;支持多種啟動方式:主要包括SD、Nand Flash、Nor Flash等設備啟動;集成了許多外設接口,如TFT-24位真彩色LCD控制器、電源系統管理、4通道 UART、32通道DMA、4通道定時器、通用I/O端口、I2S/I2C總線接口、USB Host、USB OTG(480 Mbps)、3通道SD/MMC Host控制器及時鐘生成PLL等。
為加快進度,主控板采用已有的核心板進行開發。該核心板為飛凌嵌入式公司生產,集成S3C6410處理器、256 MB SDRAM以及4 GB Nand Flash、2 MB Nor Flash并帶有JTAG接口,在此基礎上進行開發可大大縮短開發周期,降低開發風險。該主控板上主要實現無線通信功能以及觸摸屏顯示功能。
車載控制器的底層驅動板處理器系統采用意法半導體推出的STM32F103,是基于Cortex-M3內核的32位ARM芯片系列,片內Flash為512 KB,片內SRAM為64 KB,主頻72 MHz,具備26位地址線和16位數據寬度。內部ADC模塊是12位逐次逼近型,有16通道,采樣率最高1 Msps。2路DAC,11個Timer,5路USART,I/O端口資源豐富,可滿足多個數字量輸入/輸出的需求,并具有CAN總線接口和RS232接口。
車載控制器主要功能接口圖略——編者注。
2.2.1 電源管理模塊
AGV采用多級電池串聯供電,在運行過程中,隨著電量的減少,電壓也會發生變化,并且為適應一系列車型供電電壓的不同,需要儀表能夠承受較寬的輸入電壓范圍。為滿足車載控制器上不同芯片的供電需求,采用寬輸入電壓DC/DC模塊,將變化范圍在18~36 V的輸入電壓轉換為合適的輸出電壓。另外,在STM32底層驅動板上設計了為S3C6410主控板供電的電源模塊,輸出電壓為5 V。
2.2.2 CAN總線通信模塊
CAN總線部分包括CAN總線控制器和CAN總線收發器,STM32內部集成了CAN總線控制器,選用通用CAN總線收發器芯片,將芯片的3.3 V邏輯信號轉換成CAN總線的差分電壓信號。
2.2.3 數字量輸入/輸出模塊
輸入高電平為24 V的電壓信號,通過分壓電阻將電壓降至芯片允許的電壓范圍內,數字量輸入模塊采用光耦電路進行隔離,從輸入端輸入,經過光耦輸出至STM32的GPIO口,實現對STM32的電氣隔離和保護。數字量輸出模塊主要控制信號的隔離輸出,STM32的控制信號通過控制繼電器的開和關,從而控制外部電平的高低。
2.2.4 高速計數器模塊
高速計數器模塊主要用來采集電機編碼器的脈沖輸出,為A/B/Z三通道計數器。編碼器脈沖經過高速光電隔離并反向后與STM32的Timer通道相連。設計中分別使用了STM32中Timer2和Timer3的第一、第二通道。
車載控制器軟件分為上位機(PC機)軟件和下位機(車載控制器)軟件。上位機軟件的主要功能是通過無線通信模塊向車載控制器發送AGV的運行任務,以及接收AGV車載控制器發送回來的AGV當前工作狀態。下位機軟件的主要功能是接收PC機下達的運行命令,通過STM32底層驅動板對AGV的運動進行控制,并且向PC機發送AGV當前的工作狀態;同時在S3C6410主控板的觸摸屏上顯示AGV的狀態信息。
整個系統的軟件功能框圖如圖2所示。
車載控制器軟件設計包括以下幾個模塊:①STM32底層驅動板的功能模塊;②S3C6410主控板的通信和顯示模塊;③上位機(PC機)的無線通信及遠程控制模塊。

圖2 車載控制器軟件功能框圖
底層功能模塊主要有磁導航傳感器信息的采集和處理、驅動電機的控制、射頻讀卡器(RFID)數據的發送和接收。
3.1.1 磁導航模塊
磁導航模塊通過磁導航傳感器采集磁條路徑的信息,輸入到STM32的ADC模塊,并進行數據的處理,將處理后的數據用于電機速度控制的判斷依據。磁導航傳感器的輸出是電壓信號,電壓范圍為0~10 V,通過STM32的ADC模塊采集和處理。
本設計中,通過ADC模塊進行A/D采樣,采樣時間是可編程的,將ADC配置為工作在掃描模式,對2個通道進行采樣,并且轉換后的數據由DMA傳輸。其中ADC正常采樣2個通道,由DMA進行傳輸,一次傳輸16個數據,即每個通道各8個數據。每當一次DMA過程結束后,觸發DMA完成中斷,調用濾波函數將濾波后的數據存入指定數組中。濾波函數采用算術平均濾波法,即對每個通道采集的8個數據進行算術平均運算。濾波計算公式如式(1)所示:

其中,yi表示第i個通道濾波后的數據,yij表示第i個通道采集的第j個數據。第一個通道采集的值為磁導航傳感器的電壓輸出:

計算得到磁導航傳感器輸出電壓對應的數字量,根據磁導航傳感器偏離磁條中心的距離與輸出電壓成正比例關系可得到,AGV相對于磁條中心線的偏移距離。計算公式如下:

式中,x表示磁導航傳感器輸出電壓對應的偏移距離。
計算得到AGV相對于磁條中心線的偏移距離,該偏移距離作為驅動電機控制模塊的輸入對電機進行差速控制。
3.1.2 驅動電機的控制
驅動電機的控制包括轉速大小的控制、正反轉的控制以及輸出脈沖信號的采集。轉速大小主要是采用DAC模塊輸出電壓的大小進行控制,轉速大小與電壓大小成正比例關系;正反轉通過DO模塊的電平高低來實現;輸出脈沖信號采用高速計數器模塊進行采集。
(1)轉速大小的控制
轉速大小與電壓的關系:

數字量和模擬量電壓之間的關系:

由此可得要獲得需要的轉速,只需控制STM32 DAC模塊輸入相應的數字量即可。電機的輸出通過減速裝置輸出至AGV車輪,從而控制AGV行走。
AGV行走速度v與電機轉速n之間的關系:

式中,n為電機的轉速大小(單位為r/min);U為DAC模塊輸出的電壓大小(單位為V);v為AGV的理論行走速度(單位為mm/s);i為電機的減速比。
(2)輸出脈沖信號的采集
驅動電機的輸出脈沖為PWM信號,采用高速計數器模塊對其進行采集,設計中使用了STM32的Timer2和Timer3的第一、第二通道,將Timer設置為PWM輸入模式。通過得到PWM信號的高電平的時間來計算驅動電機的實際轉速,進而計算得出AGV實際行走的速度。計算如下:

由式(8)、(9)可得速度v與脈沖高電平時間tp的關系:

式中,n實際為驅動電機的實際轉速(單位為r/min);tp為PWM信號高電平的時間(單位為μs);v實際為AGV的實際行走速度(單位為mm/s);D為驅動輪的直徑;i為電機的減速比。
3.1.3 射頻讀卡器數據的發送和接收
射頻讀卡器的主要功能是通過讀取RFID標簽里的數據來確定AGV的位置,以實現AGV在對應位置上的加速或減速,使AGV在通過直線時速度較快,而通過圓弧曲線時速度較慢,保證AGV在整個路徑上的順利運行。事先在RFID標簽里寫入相對應的數據信息,測試中用到的信息為字符1、2、3、4,其中在1、3位置處減速,2、4位置處加速。
射頻讀卡器與STM32底層驅動板的通信接口為USART串口,首先進行串口的初始化,其波特率為9 600 b/s,數據位為8位,停止位為1位,無奇偶校驗位和流量控制,并開啟串口接收中斷。通過串口發送讀使能指令使能射頻讀卡器讀取功能,當射頻讀卡器檢測到RFID標簽時,觸發串口中斷進行數據接收,并對接收到的數據進行讀取和判斷,來確定AGV在對應位置處的加速或減速。
S3C6410主控板的通信包括與STM32底層驅動板的串口或者CAN總線通信(試驗中為串口通信),以及與上位機PC之間的無線通信。
S3C6410主控板的觸摸屏顯示界面主要用于顯示AGV的速度、路線狀態、急停、自動/手動模式等信息。一方面通過串口通信接收來自STM32底層驅動板的信息,另一方面通過無線通信接收來自PC機的信息,同時將接收的信息在界面上顯示。該界面的設計基于WinCE操作系統。
車載控制器觸摸屏顯示界面略——編者注。
為滿足車載控制器遠程監控的需求,通過車載控制器的無線模塊實現上位機對車載控制器的遠程控制和監測,車載控制器的數據信息通過無線模塊發送到監控上位機,并將上位機的相應指令發送到控制器,實現遠程監控。
上位機界面主要是遠程控制以及實時監控功能,通過上位機界面可以遠程控制AGV的行走狀態,并且可以實時顯示AGV的速度和相應的故障/異常狀態。
上位機遠程控制界面和車載控制器軟件控制流程略——編者注。
為了驗證設計的硬件系統、軟件功能和上位機遠程控制,進行了相關的試驗。相關內容略——編者注。
本文設計的AGV車載控制器。主控板采用S3C6410芯片,實現了車載控制器與上位機的通信以及對AGV沿預設路徑行走的控制;底層驅動板采用STM32F103芯片,實現了外設導航傳感器信息的采集、RFID數據的讀取、驅動電機的控制。現場測試運行狀態良好,滿足要求,具有可行性和較好的實用性。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]Peters B,Smith J,Venkatesh S.A Control Classification of Automated Guided Vehicle Systems[J].International Journal of Industrial Engineering,1996,3(1):29-39.
[2]黃嘉城,劉啟新,郭佳琪.基于慣性導引AGV控制系統的設計研究[J].科技傳播,2011(1):1-2.
[3]胡彬.面向柔性制造系統的無人搬運車控制器研究[D].上海:上海交通大學,2012.
[4]張霖,張桐.基于ARM7+μC/OS-II的智能循跡小車設計[J].科技傳播,2012(12):197-200.
[5]王可,黃曉華,張健,等.基于ARM Cortex的視覺導航AGV雙核控制器設計[J].機電工程,2013,30(10):1284-1287.
[6]吳衛榮,丁慎平,鄧玲黎.PLC和觸摸屏在AGV控制系統中的應用[J].現代制造工程,2012(12):115-119.
[7]Butdee S,Suebsomran A,Vignat F,et al.Control and path prediction of an Automate Guided Vehicle[J].Journal of A-chievements in Materials and Manufacturing Engineering,2008,31(2):442-448.
[8]韓騰,樊瑜瑾,李浙昆,等.基于PLC控制的AGV制動系統研究[J].機電一體化,2013(5):44-46.
[9]黃胄.基于PLC控制的AGV技術研究及其應用[D].上海:華東理工大學,2013.
[10]孫曉艷.基于FMS的自動導引車控制器設計與實現[J].無錫職業技術學院學報,2010,9(6):26-28.
[11]徐文斌,蔡容華,林科榮,等.基于工控機的 AGV裝配機器人控制系統設計[J].電子技術應用,2013,39(7):131-136.
[12]張曉朋.AGV開放式控制系統設計[D].西安:陜西科技大學,2009.
[13]王起.論PLC、單片機、工控機在工業現場中的應用及選用方法[J].計算機與信息技術,2011,1(1):60-61.