基于ARM的粉料自動(dòng)倉(cāng)庫(kù)智能控制節(jié)點(diǎn)開發(fā)
摘要: 基于ARM7芯片LPC2132和功率驅(qū)動(dòng)芯片A3977,設(shè)計(jì)了一種兩軸運(yùn)動(dòng)控制卡。給出了該運(yùn)動(dòng)控制卡硬件組成以及通訊協(xié)議、插補(bǔ)算法等具體實(shí)現(xiàn)方案。描述了所設(shè)計(jì)的粉末物料自動(dòng)化倉(cāng)庫(kù)關(guān)鍵功能的實(shí)現(xiàn)方式,以及該運(yùn)動(dòng)控制卡作為智能節(jié)點(diǎn)在此對(duì)象中的實(shí)際應(yīng)用情況。
關(guān)鍵詞: 運(yùn)動(dòng)控制卡;智能節(jié)點(diǎn);S曲線規(guī)劃
0. 引言
本文設(shè)計(jì)了粉末自動(dòng)化倉(cāng)庫(kù),其目的是為了實(shí)現(xiàn)多種粉末狀物料的存儲(chǔ)以及自動(dòng)輸送。區(qū)別于一般分散物料的自動(dòng)化倉(cāng)庫(kù),粉體物料的存取過程不是以貨格為單位進(jìn)行操作,而是以一定數(shù)目的儲(chǔ)罐來(lái)保存物料,每次取貨操作只取一個(gè)儲(chǔ)罐中指定量的物料;存貨過程現(xiàn)采用人工將空罐用裝滿物料的罐替代的方式。在這種工作模式下,將只需要AGV而省略堆垛系統(tǒng),但是粉末的輸出系統(tǒng)將必須具有計(jì)量的功能,同時(shí),儲(chǔ)罐的更換過程也要求簡(jiǎn)單快捷[1]。
本文中,使用一套2自由度的下料機(jī)構(gòu)來(lái)實(shí)現(xiàn)粉末的計(jì)量,使用絲桿提升機(jī)構(gòu)來(lái)實(shí)現(xiàn)儲(chǔ)罐的升降以方便加料操作。控制系統(tǒng)采用基于現(xiàn)場(chǎng)總線的分布式控制系統(tǒng),以智能節(jié)點(diǎn)為控制單元來(lái)實(shí)現(xiàn)所需動(dòng)作。本文設(shè)計(jì)了一種基于ARM微處理器的兩軸運(yùn)動(dòng)控制卡,集成了通訊、運(yùn)動(dòng)控制以及步進(jìn)電機(jī)驅(qū)動(dòng)等功能,可以作為智能節(jié)點(diǎn)接受主控制系統(tǒng)指令,直接驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)行并采集和處理某些過程變量。與現(xiàn)有步進(jìn)電機(jī)控制系統(tǒng)相比,本運(yùn)動(dòng)控制卡具有結(jié)構(gòu)緊湊,線路簡(jiǎn)單,集成度高,使用方便等特點(diǎn)。
1. 智能運(yùn)動(dòng)控制卡硬件平臺(tái)
運(yùn)動(dòng)控制卡中使用一塊LPC2132芯片作為CPU來(lái)完成系統(tǒng)的通訊、指令解析、控制結(jié)構(gòu)以及插補(bǔ)等功能。CPU產(chǎn)生兩路獨(dú)立的脈沖信號(hào),每個(gè)軸的細(xì)分及驅(qū)動(dòng)由一片Allegro公司的單片步進(jìn)電機(jī)專用驅(qū)動(dòng)芯片A3977來(lái)完成。
1.1 元件性能特點(diǎn)
在眾多微處理器產(chǎn)品中,ARM處理器以極低的成本和功耗提供了較高性能,是復(fù)雜嵌入式應(yīng)用的理想平臺(tái)。目前的32位、64位嵌入式微處理器中,ARM是應(yīng)用最為廣泛的一個(gè)系列。
LPC2132是PHILIPS公司基于ARM7TDMI內(nèi)核推出的工業(yè)級(jí)MCU。它具有16KB片內(nèi)SRAM,64KB FLASH,可以容納更大規(guī)模的代碼;2個(gè)32位定時(shí)器/計(jì)數(shù)器以及一個(gè)PWM單元;多達(dá)47個(gè)通用I/O口;2個(gè)16C550工業(yè)標(biāo)準(zhǔn)的UART;通過片內(nèi)PLL可以實(shí)現(xiàn)最大為60MHz的CPU操作頻率。ARM處理器較小的封裝,極低的功耗和強(qiáng)大的功能使其特別適合于小型系統(tǒng)[2]。
脈沖分配以及功率驅(qū)動(dòng)操作也可以由相應(yīng)的芯片實(shí)現(xiàn),本運(yùn)動(dòng)控制卡采用了集成這兩種功能的驅(qū)動(dòng)芯片A3977。A3977是Allegro公司生產(chǎn)的單片正弦細(xì)分二相步進(jìn)電機(jī)驅(qū)動(dòng)專用芯片,它采用脈寬調(diào)制式斬波驅(qū)動(dòng)方式,可以驅(qū)動(dòng)二相步進(jìn)電機(jī),且電路簡(jiǎn)單,工作可靠。該芯片輸出電流可達(dá)2.5A,具有整步、半步、1/4細(xì)分、1/8細(xì)分運(yùn)行方式可供選擇,滿足一般功率要求下的驅(qū)動(dòng)需求。
1.2硬件系統(tǒng)結(jié)構(gòu)
平臺(tái)硬件系統(tǒng)結(jié)構(gòu)如圖1所示 :
圖1.硬件系統(tǒng)結(jié)構(gòu)圖{{分頁(yè)}}
(1)通訊及調(diào)試接口
在一主多從結(jié)構(gòu)下,每塊運(yùn)動(dòng)控制卡作為從站通過RS485總線與主站連接。LPC2132芯片包含2個(gè)16C550工業(yè)標(biāo)準(zhǔn)的UART,每一路包含16字節(jié)的接收和發(fā)送FIFO,其中接收器的FIFO觸發(fā)點(diǎn)可以設(shè)為1,4,8,14字節(jié)。在該自動(dòng)化倉(cāng)庫(kù)的控制系統(tǒng)中,考慮協(xié)議規(guī)定的每條指令長(zhǎng)度而將觸發(fā)點(diǎn)設(shè)為8字節(jié)。上位機(jī)指令通過光耦與CPU實(shí)現(xiàn)電隔離。
LPC2132支持JTAG(Joint Test Action Group)協(xié)議。該協(xié)議主要用于芯片內(nèi)部測(cè)試以及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試,通過JTAG接口,可對(duì)芯片內(nèi)部的所有部件進(jìn)行訪問,因而是開發(fā)和調(diào)試過程的一種方便高效的手段??ㄉ媳A粢粋€(gè)20針的JTAG接口用于調(diào)試和燒寫程序[3]。
(2)輸入輸出及采樣接口
系統(tǒng)的輸出量主要包括脈沖的輸出以及相關(guān)控制電平,輸入包括對(duì)碼盤、接近開關(guān)等信號(hào)的數(shù)字的讀取以及部分位置傳感器中模擬信號(hào)的采樣。LPC2132的管腳大多具有一個(gè)以上的功能,使用某一功能前必須對(duì)管腳連接進(jìn)行配置。除去調(diào)試接口所占用的部分,所余IO口能滿足輸入輸出具體功能的要求。
(3)驅(qū)動(dòng)芯片
運(yùn)動(dòng)控制部分的職能在于產(chǎn)生正確的脈沖序列和控制信號(hào),脈沖分配以及功率驅(qū)動(dòng)的功能可以由獨(dú)立的驅(qū)動(dòng)器來(lái)實(shí)現(xiàn)。常用驅(qū)動(dòng)芯片性能比較如表1所示:
型號(hào) |
L297+L298 |
A3977 |
TA8435H |
A3955SB |
輸出電壓(V) |
50 |
35 |
10-40 |
50 |
平均電流(A) |
2.5 |
2.5 |
1.5 |
1.5 |
功率(W) |
25 |
25 |
|
|
表1:常用步進(jìn)電機(jī)驅(qū)動(dòng)芯片比較
AGV上的提升機(jī)構(gòu)電機(jī)額定電流為2A,這里采用單片細(xì)分及功率驅(qū)動(dòng)芯片A3977。每片A3977驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)運(yùn)行,卡上設(shè)兩片驅(qū)動(dòng)芯片來(lái)分別對(duì)應(yīng)兩路輸出脈沖。驅(qū)動(dòng)芯片輸入信號(hào)包括公共端,使能控制,細(xì)分設(shè)置,方向設(shè)置和脈沖輸入等,在細(xì)分設(shè)置確定的情況下,至少需要CPU提供3個(gè)I/O口。CPU與驅(qū)動(dòng)芯片間的連接通過光耦實(shí)現(xiàn)電隔離。
2. 軟件設(shè)計(jì)
運(yùn)動(dòng)控制卡的軟件系統(tǒng)主要運(yùn)行以下三個(gè)任務(wù):任務(wù)一為插補(bǔ)運(yùn)算;任務(wù)二為接收并緩存指令;任務(wù)三為提取并執(zhí)行指令。按任務(wù)的重要性和實(shí)時(shí)性要求,將插補(bǔ)運(yùn)算設(shè)為最高優(yōu)先級(jí),在1ms中斷中得到執(zhí)行,其它任務(wù)在背景程序中得到執(zhí)行。軟件系統(tǒng)的具體結(jié)構(gòu)如圖2所示:
圖2.軟件系統(tǒng)結(jié)構(gòu)框圖{{分頁(yè)}}
(1)S曲線加減速規(guī)劃及插補(bǔ)運(yùn)算
為了保證系統(tǒng)在啟動(dòng)或停止時(shí)不產(chǎn)生沖擊、失步、超程或振蕩,必須對(duì)送到步進(jìn)電機(jī)的進(jìn)給脈沖頻率進(jìn)行加減速控制。立體倉(cāng)庫(kù)中某些運(yùn)動(dòng)形式負(fù)載較大,為保證其良好的動(dòng)態(tài)性能,采用S曲線型無(wú)沖擊型加減速處理。
S曲線加減速基本原理就是在加減速時(shí),使加速度的導(dǎo)數(shù)Jerk為常數(shù),通過對(duì)Jerk值的調(diào)整最大限度的減小對(duì)機(jī)械系統(tǒng)造成的沖擊。用戶設(shè)置加速度參數(shù)時(shí)只需考慮兩個(gè)參數(shù),一個(gè)是總的加速度時(shí)間(TA),一個(gè)是S曲線加速時(shí)間(TS)。系統(tǒng)根據(jù)用戶設(shè)置的值對(duì)加速度曲線進(jìn)行分類,首先必須保證TA>0。如果TS=0,則曲線為直線型加減速;如果TS != 0,且TA>TS,則曲線為S曲線與直線混合型加減速;如果TS != 0,且TA<TS,則曲線變成了S曲線加減速。規(guī)劃過程需要對(duì)速度、加速度等參數(shù)進(jìn)行圓整,從而給出每個(gè)階段需要的插補(bǔ)周期數(shù)。插補(bǔ)運(yùn)算過程中間量可以使用浮點(diǎn)數(shù)表示,最終結(jié)果再取其整數(shù)部分[4]。
在接收到運(yùn)動(dòng)開始指令后,在背景程序中的指令執(zhí)行部分即進(jìn)行對(duì)該過程的基本規(guī)劃,包括:計(jì)算升降速各個(gè)階段所需要的插補(bǔ)周期數(shù),Jerk值。插補(bǔ)過程在1ms中斷中完成。在本運(yùn)動(dòng)控制卡中,使用匹配輸出的方式來(lái)產(chǎn)生脈沖:定時(shí)器TC或PWM的值和比較匹配控制值MCR相等的時(shí)候發(fā)生定時(shí)器匹配,匹配后引起相應(yīng)輸出口電平翻轉(zhuǎn)。在每一插補(bǔ)周期開始時(shí),即設(shè)置好匹配控制值并啟動(dòng)定時(shí)器,即可保證輸出頻率穩(wěn)定的波形。脈沖正常產(chǎn)生后則開始進(jìn)行插補(bǔ)運(yùn)算,計(jì)算下一周期的脈沖頻率,并查詢一次UART模塊相關(guān)標(biāo)志位狀態(tài)以判斷是否有控制指令。實(shí)測(cè)得每個(gè)插補(bǔ)周期中的規(guī)劃及查詢運(yùn)算量可以在300us內(nèi)完成,在1ms內(nèi)完成以上任務(wù)可以保證時(shí)序不發(fā)生錯(cuò)亂。
(2)指令接收與處理
中斷內(nèi)檢測(cè)到UART模塊接收緩存滿標(biāo)志時(shí),即通知背景程序?qū)χ噶钸M(jìn)行接收,緩存以及后續(xù)處理??赡艿闹噶铑愋桶ǎ簩?duì)參數(shù)進(jìn)行修改、查詢等參數(shù)處理類型;插補(bǔ)運(yùn)算的開始,運(yùn)動(dòng)開始,急停等運(yùn)動(dòng)控制類型。485主站與節(jié)點(diǎn)之間定義8位的ASCII字符作為一條指令,包括起始位,地址位,功能代碼位,4位數(shù)據(jù)段以及停止位。
所有節(jié)點(diǎn)在檢測(cè)到指令信息時(shí),即從中搜索起始位“:”字符,當(dāng)檢測(cè)到起始字符時(shí),則對(duì)下一位(地址位)進(jìn)行判斷來(lái)確定該指令是否發(fā)送給本卡,隨后將符合本機(jī)地址的指令收入隊(duì)列做進(jìn)一步處理。本運(yùn)動(dòng)控制卡中采用了普通指令隊(duì)列與優(yōu)先指令隊(duì)列兩個(gè)環(huán)形隊(duì)列的方式。一般情況下,指令進(jìn)入普通指令隊(duì)列末端等候執(zhí)行,特殊指令,如急停等,將進(jìn)入優(yōu)先的隊(duì)列以保證立即得到處理。
指令從主設(shè)備發(fā)往從設(shè)備時(shí),功能代碼位將告之從設(shè)備需要執(zhí)行哪些行為,數(shù)據(jù)位則包含了要執(zhí)行功能的任何附加信息。運(yùn)動(dòng)控制卡需要執(zhí)行的功能包括讀取輸入的開關(guān)狀態(tài),參數(shù)修改,發(fā)出運(yùn)動(dòng)控制指令,作出回應(yīng)等。對(duì)其中每一種功能,在卡上都編程并與某一功能代碼唯一對(duì)應(yīng)。功能代碼位選用一個(gè)ASCII字符,可用的代碼有255種,可以滿足使用要求。
3. 應(yīng)用實(shí)例
在本文設(shè)計(jì)的粉末物料自動(dòng)化倉(cāng)庫(kù)中,原料置于單獨(dú)的儲(chǔ)罐中,每個(gè)儲(chǔ)罐底部連接下料機(jī)構(gòu),下料機(jī)構(gòu)靠?jī)蓚€(gè)旋轉(zhuǎn)的葉輪來(lái)完成功能。在需要某種原料時(shí),AGV移動(dòng)到相應(yīng)儲(chǔ)罐下方,下料機(jī)構(gòu)工作,配合AGV上的稱量裝置完成對(duì)一種原料的精確計(jì)量操作。AGV移動(dòng)時(shí)需要隨時(shí)讀取位置傳感器信息,保證定位準(zhǔn)確。為了更換儲(chǔ)罐方便,放置儲(chǔ)罐的料架由絲桿來(lái)驅(qū)動(dòng),可以自由升降。為了實(shí)現(xiàn)密封、自動(dòng)清洗等附屬功能,料架上附帶兩種類型的機(jī)械手,其中一種操作密封蓋在不需要下料時(shí)封閉下料機(jī)構(gòu)的下端出口,另一種攜帶清洗水管,輔助完成料罐的清洗工作。機(jī)械手運(yùn)行時(shí)要求精確定位于指定料罐的下方,并要求能對(duì)管路上的閥門進(jìn)行控制。該系統(tǒng)的具體結(jié)構(gòu)參考圖3。
圖3. 立體倉(cāng)庫(kù)結(jié)構(gòu)示意圖{{分頁(yè)}}
該粉末物料立體倉(cāng)庫(kù)作為某化工產(chǎn)品柔性生產(chǎn)線的一部分,采用圖4所示的分布式控制系統(tǒng),并將控制系統(tǒng)分級(jí)以減少主機(jī)的任務(wù)量。RS485主站作為二級(jí)主站完成該立體倉(cāng)庫(kù)分系統(tǒng)的控制。所述的運(yùn)動(dòng)控制卡作為RS485節(jié)點(diǎn)完成某一功能模塊的管理。485主站的指令以廣播的方式向所有下屬節(jié)點(diǎn)發(fā)出,被接收并地址識(shí)別后在節(jié)點(diǎn)得到處理。立體倉(cāng)庫(kù)中每一功能模塊,使用單塊運(yùn)動(dòng)控制卡可以完成控制需求。
圖4. 控制系統(tǒng)層次
(1)脈沖輸出類任務(wù)
最簡(jiǎn)單的操作方式為輸出脈沖驅(qū)動(dòng)電機(jī)運(yùn)動(dòng),如下料操作。這種工作方式下,主機(jī)通過指令設(shè)定行程,速度等運(yùn)動(dòng)參數(shù),啟動(dòng)指定節(jié)點(diǎn)的插補(bǔ)過程,插補(bǔ)過程啟動(dòng)以后將不依賴后續(xù)指令而運(yùn)行至設(shè)定行程。在產(chǎn)生脈沖的過程中,主機(jī)可能向節(jié)點(diǎn)周期性發(fā)出查詢指令以確定節(jié)點(diǎn)當(dāng)前運(yùn)動(dòng)狀態(tài),為后續(xù)處理提供依據(jù)。
(2)傳感器信息采集類任務(wù)
較為復(fù)雜的運(yùn)動(dòng)方式包括料架的提升以及機(jī)械手的操作。此兩類運(yùn)動(dòng)的范圍受到機(jī)械約束,需要讀取限位開關(guān)信號(hào)以及碼盤反饋信號(hào)以檢測(cè)運(yùn)動(dòng)狀態(tài),機(jī)械手的操作中包含閥門等IO量的控制,位置傳感器輸入信號(hào)為模擬量需要采集及轉(zhuǎn)換。該系統(tǒng)的運(yùn)行中,絲桿轉(zhuǎn)速最高為1.5r/s,采用256線的碼盤作為轉(zhuǎn)動(dòng)反饋時(shí),產(chǎn)生脈沖頻率為384Hz;機(jī)械手工作在更低的轉(zhuǎn)速范圍內(nèi)。本控制卡中,將限位開關(guān)、碼盤等信號(hào)視為I/O量,進(jìn)行定時(shí)采樣來(lái)讀取信息;模擬信號(hào)被同時(shí)采樣并在片上即得到轉(zhuǎn)換。系統(tǒng)產(chǎn)生的1ms定時(shí)中斷同時(shí)也作為采樣周期。根據(jù)香農(nóng)定理,1000Hz的采樣頻率足以滿足當(dāng)前轉(zhuǎn)速區(qū)域內(nèi)的采樣要求。
自動(dòng)化倉(cāng)庫(kù)中料罐,下料機(jī)構(gòu),提升機(jī)構(gòu)等組成多個(gè)相對(duì)獨(dú)立的下料單元,按照規(guī)劃這些下料單元不可能同時(shí)工作。使用繼電器切換,一塊控制卡即可完成系統(tǒng)中所有同類機(jī)構(gòu)的控制要求。
單個(gè)節(jié)點(diǎn)對(duì)功能的實(shí)現(xiàn)中,完成了參數(shù)修改及運(yùn)動(dòng)控制,數(shù)字及模擬信號(hào)的采樣和處理等功能,與主機(jī)之間采用數(shù)字通信,具有智能化的特點(diǎn)。在分布式控制系統(tǒng)中,該運(yùn)動(dòng)控制卡還具有鮮明的特點(diǎn)使其適合作為智能節(jié)點(diǎn)使用:采用統(tǒng)一的軟件硬件接口形式,簡(jiǎn)單的對(duì)地址進(jìn)行編輯后即可互相替換;模擬信號(hào)在節(jié)點(diǎn)即得到處理,主機(jī)與節(jié)點(diǎn)之間采用數(shù)字通信;不同節(jié)點(diǎn)之間完全獨(dú)立,單個(gè)節(jié)點(diǎn)的錯(cuò)誤不會(huì)影響系統(tǒng)其它部分的運(yùn)行。該系統(tǒng)基本符合基于現(xiàn)場(chǎng)總線的控制系統(tǒng)的開放型、分散性、數(shù)字通信的特征,是一種較低成本的實(shí)現(xiàn)方式,同時(shí),系統(tǒng)以步進(jìn)電機(jī)為主要控制對(duì)象,節(jié)點(diǎn)上增加了功率驅(qū)動(dòng)功能,并在軟件開發(fā)上優(yōu)先考慮了運(yùn)動(dòng)控制功能的實(shí)現(xiàn)。
4. 結(jié)論
本文介紹了一種基于ARM微處理器和步進(jìn)電機(jī)專用驅(qū)動(dòng)芯片A3977H的兩軸運(yùn)動(dòng)控制卡。在粉末物料自動(dòng)化倉(cāng)庫(kù)的控制系統(tǒng)中,采用基于現(xiàn)場(chǎng)總線的分布式控制系統(tǒng)中,將其作為智能節(jié)點(diǎn)使用,通過RS485總線完成與中央控制系統(tǒng)的通信,并根據(jù)接收的指令完成插補(bǔ)過程,脈沖序列的產(chǎn)生,運(yùn)動(dòng)狀態(tài)的查詢等操作。產(chǎn)生的脈沖序列通過驅(qū)動(dòng)芯片最終驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)動(dòng)。同時(shí),利MCU上的其它資源,可以完成多種輔助信號(hào)的采集與處理過程。本運(yùn)動(dòng)控制卡結(jié)構(gòu)緊湊,使用方便,在該自動(dòng)化倉(cāng)庫(kù)的控制系統(tǒng)中發(fā)揮了重要的作用。
參考文獻(xiàn):
1.劉昌祺 自動(dòng)化立體倉(cāng)庫(kù)設(shè)計(jì) 北京: 機(jī)械工業(yè)出版社, 2004
2.吳明暉 基于ARM的嵌入式系統(tǒng)開發(fā)與應(yīng)用 北京:人民郵電出版社 2004
3.楚紅雨 基于ARM的嵌入式通信控制器的設(shè)計(jì)與應(yīng)用微計(jì)算機(jī)信息 2005年16期
4.王恒 基于USB的激光熱處理數(shù)控系統(tǒng)研究與開發(fā) 中國(guó)制造業(yè)信息化 2003年5期
評(píng)論