自动化立体仓库控制系统的设计与研究
2018-06-22卢光云梁伟鄯
卢光云 梁伟鄯
(广西科技大学 鹿山学院,柳州 545616)
1 自动化立体仓库的原理
自动化立体仓库在工厂自动化和弹性制造系统以及电脑整合制造系统的物流系统中占据非常重要的位置。其目的不仅是存储物料、零件、半成品和成品,更是密切配合制造工厂的产销计划与物料需求计划,妥善安排生产所需合理数量的物料、零件,并尽量缩短其库存时间,避免发生缺料、滞料,利用高架搬运车、输送机、无人搬运车等,保管产成品并正确出货,提高服务水平,整合了计划、库存、生产、出入物流的功能与管理,降低生产成本。
本自动化立体仓库主要利用人机交互控制系统,当顾客在触摸屏上选中相应物品及向投币器里投币后,投币器上的指示灯点亮,再将指令传送给STM32芯片,由STM32芯片接收投币器传递来的指令,驱动相应物品的电机,使其带动传送带工作,进而使物品能及时地输送出来。
2 系统硬件平台设计
系统的硬件平台以主控芯片STM32F103C8T6为核心,再配备货物选择模块、电机驱动模块、信息反馈接口等模块,它们共同组成了自动仓库的控制部分,该部分为整个仓库的核心部件,主要实现自动仓库的功能。系统的硬件平台整体架构如图1所示。
图1 硬件平台整体架构
3 机械结构
系统的机械结构主要包括钢架、货物巢、传送带、货物巢边上的挡块和电机。
3.1 货架的分层结构
根据需求,货架可以分为三层结构,每层都是可进可出的,因为这样可以推出来,方便人工放入物品,缩短补给物品的时间,提高效率,当物品缺量的时候可以及时补给。但是也有一个缺点,由于内存空间较小,所以储存物品的数量少,物品很快就会出完,因此每隔一段时间就需对物品进行一次补给。
3.2 传送带与滑轮的搭配
仓库的每条货物巢都有两个滑轮,方便将传送带安装在滑轮上,将一个滑轮固定在电机的旋转轴上,使其跟随电机转动,另一个则固定在货物架的边缘上。最重要的是,一定要将两个滑轮保持在同一平面上,否则物品在货物巢会往下滑落。另外,传送带与滑落的接触端有一个小小的螺丝钉,其作用就是能使传送带很好地固定在滑轮上,不会脱落,起到固定的作用。
3.3 系统的出库机制
每个货物巢都是由相邻的挡块、传送带组成的,每个货物巢的宽度由物品的大小而定,可以使物品刚好能从货物巢里出库。传送带上也有一个护栏,主要作用是当物品出库时,带动物品,可以使物品不会卡在货物巢里。物品出库是按顾客的订单出库,顾客选择了多少物品,自动仓库就会出来多少,而不是由系统仓库自己选择哪路物品出来。
4 系统软件的设计
4.1 软件流程图设计
系统软件部分的设计流程如图2所示。
图2 软件设计流程
4.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.