盧光云 梁偉鄯
(廣西科技大學 鹿山學院,柳州 545616)
自動化立體倉庫在工廠自動化和彈性制造系統以及電腦整合制造系統的物流系統中占據非常重要的位置。其目的不僅是存儲物料、零件、半成品和成品,更是密切配合制造工廠的產銷計劃與物料需求計劃,妥善安排生產所需合理數量的物料、零件,并盡量縮短其庫存時間,避免發生缺料、滯料,利用高架搬運車、輸送機、無人搬運車等,保管產成品并正確出貨,提高服務水平,整合了計劃、庫存、生產、出入物流的功能與管理,降低生產成本。
本自動化立體倉庫主要利用人機交互控制系統,當顧客在觸摸屏上選中相應物品及向投幣器里投幣后,投幣器上的指示燈點亮,再將指令傳送給STM32芯片,由STM32芯片接收投幣器傳遞來的指令,驅動相應物品的電機,使其帶動傳送帶工作,進而使物品能及時地輸送出來。
系統的硬件平臺以主控芯片STM32F103C8T6為核心,再配備貨物選擇模塊、電機驅動模塊、信息反饋接口等模塊,它們共同組成了自動倉庫的控制部分,該部分為整個倉庫的核心部件,主要實現自動倉庫的功能。系統的硬件平臺整體架構如圖1所示。

圖1 硬件平臺整體架構
系統的機械結構主要包括鋼架、貨物巢、傳送帶、貨物巢邊上的擋塊和電機。
根據需求,貨架可以分為三層結構,每層都是可進可出的,因為這樣可以推出來,方便人工放入物品,縮短補給物品的時間,提高效率,當物品缺量的時候可以及時補給。但是也有一個缺點,由于內存空間較小,所以儲存物品的數量少,物品很快就會出完,因此每隔一段時間就需對物品進行一次補給。
倉庫的每條貨物巢都有兩個滑輪,方便將傳送帶安裝在滑輪上,將一個滑輪固定在電機的旋轉軸上,使其跟隨電機轉動,另一個則固定在貨物架的邊緣上。最重要的是,一定要將兩個滑輪保持在同一平面上,否則物品在貨物巢會往下滑落。另外,傳送帶與滑落的接觸端有一個小小的螺絲釘,其作用就是能使傳送帶很好地固定在滑輪上,不會脫落,起到固定的作用。
每個貨物巢都是由相鄰的擋塊、傳送帶組成的,每個貨物巢的寬度由物品的大小而定,可以使物品剛好能從貨物巢里出庫。傳送帶上也有一個護欄,主要作用是當物品出庫時,帶動物品,可以使物品不會卡在貨物巢里。物品出庫是按顧客的訂單出庫,顧客選擇了多少物品,自動倉庫就會出來多少,而不是由系統倉庫自己選擇哪路物品出來。
系統軟件部分的設計流程如圖2所示。

圖2 軟件設計流程
在自動化立體倉庫中,系統軟件是整個控制系統的核心部件,下面就分別對各模塊的程序作出說明。4.2.1 系統的主函數部分
#include “includes.h”
int main(void)
{SystemInit();//內核初始化
delay_init();//延時函數初始化
Init_GpioPort();//控制端口初始化
USART1_Init();//串口初始化
while(1)
{slave_forbackmaste_parsecommand();//等待訂單信息,并解析訂單信息}}
4.2.2 信息接收接口指令信號
在這個部分中,信息反饋接口是實現程序運行成功的重要通道,通過從主控芯片STM32F103C8T6接收來的信息,反饋給電機,從而使電機動作,以下是信息反饋接口的相關程序。
//--貨物反饋函數
void bck_boxs_statse(unsigned char *cmd_tep,unsigned char max_boxs)
{unsigned char i;
for(i=0; i {switch(i/8) {case 0: {GPIO_SetBits(Sensor_ContorPort[0].GPIOx,Sensor_ContorPort[0].GPIO_Pin); GPIO_ResetBits(Sensor_ContorPort[1].GPIOx,Sensor_ContorPort[1].GPIO_Pin); //讀取柜子開關狀態 if(GPIO_ReadInputDataBit(Sensor_InputPort[i].GPIOx, Sensor_InputPort[i].GPIO_Pin) == 0) *cmd_tep++=0x01; else *cmd_tep++=0x00; }break; case 1: {GPIO_SetBits(Sensor_ContorPort[1].GPIOx,Sensor_ContorPort[1].GPIO_Pin); GPIO_ResetBits(Sensor_ContorPort[0].GPIOx,Sensor_ContorPort[0].GPIO_Pin); //讀取柜子開關狀態 i f(G P I O_R e a d I n p u t D a t a B i t(S e n s o r_InputPort[i-8].GPIOx, Sensor_InputPort[i-8].GPIO_Pin)==0) *cmd_tep++=0x01; else *cmd_tep++=0x00; }break; default: break;}} GPIO_SetBits(Sensor_ContorPort[0].GPIOx, Sensor_ContorPort[0].GPIO_Pin); GPIO_SetBits(Sensor_ContorPort[1].GPIOx, Sensor_ContorPort[1].GPIO_Pin);} 4.2.3 信息接收指令解析程序 //--對那個柜門發送開門指令 void master_cmd_openbox_slave(unsigned int box_num) { //指令頭 *(sencmd_temp+cmdhead_startposit)=open_box; //清柜子狀態 Buffercls(sencmd_temp+subboxstates_startposit,0x00, subbox_states); //開門指令 Buffercls(sencmd_temp+subboxstates_startposit+box_num, 0x01, 1); //返回確認指令 sencmd_temp[command_length-2]=0x00; sencmd_temp[command_length-3]=0x00; //校驗值 sencmd_temp[command_length-1]=Checksum_Value(sencmd_temp, command_length-1); //串口2發送出去 USART1_Send_Len_Str(sencmd_temp, command_length); } [1]李希霖,田國會,林家恒.自動化技術在倉儲領域中的應用與展望[J].基礎自動化,1994,(2):5-7. [2]熊肖磊,趙炯,周奇才.自動化立體倉庫管理與控制系統的實現[J].制造業自動化,2002,(4):16-19. [3]劉昌祺,董良.自動化立體倉庫設計[M].北京:機械工業出版社,2004. [4]張曉川.現代倉儲物流技術與裝備[M].北京:化學工業出版社,2003. [5]師向麗,白尚旺,譚瑛,等.自動化立體倉庫中作業調度的研究[J].物流技術,2004,(3):29-32.