2021-4-9 | 通信技术
随着科技的发展,工业自动化水平的不断提高,如何应对不断增长的人力成本,降低物流费用,提高生产效率,提高制造业企业的效益,成为各个公司亟待解决的问题.在汽车组装车间使用AGV自动导向车按顺序运送每台汽车所需零部件到生产线,再由工人把零件组装成整车,这是日产2005年引进的IFA(IntegratedFactoryAutomation)理念[1],确定了“零部件合理化”和“廉价自动化”两大主题.自动导向车的广泛使用,方便作业人员拿取零部件,减轻劳动强度.通过生产、物流现场及设备制造等各个环节,通过相互紧密协作,使得物流速度加快,物流时间缩短,占用空间缩小,大大节省成本,实现物流环节的合理衔接并取得最佳经济效益,从而增加企业利润[2].
1AGV自动导向车的组成
AGV自动导向车主要机械部分由车身、控制面板、驱动轮、充电蓄电池组成.电气部分由PLC、伺服电机、传感器、喇叭、无线发射装置组成(图1).AGV自动导向车采用固定导引线方式[3],原理是在AGV自动导向车行驶路径上埋设磁带,通过安装在底盘的磁感应传感器,AGV自动导向车感知磁场强度的强弱,作为纠偏输入信号,进而控制AGV自动导向车的行驶.AGV自动导向车运行线路上垂直于主线路设置有3条不同磁极的短磁条,行驶过程中车身磁极感应器将其转化为减速、停止、加速等不同速度指令.车头安装有障碍物传感器,实现对前方料车、人等障碍物的识别,当遇到障碍物时发出停车指令从而保护人和车辆安全.目前大多数试验性AGV的研究都依赖于有线的通讯系统控制和反馈数据,将上位机安装在车体上,占用车体空间,且对硬件要求较高,导致了在AGV运行时难以迅速有效地进行人工干预,控制方式不灵活[4],本文引入无线通讯技术从而提高了控制的灵活性,车载PLC把AGV自动导向车所在位置、电池电量、故障信号通过无线局域网发送到上位工控机,工控机可对AGV车进行速度控制、状态调整,实现计算机远程监控。
2PLC无线通讯的选型与设计
可编程控制器(PLC)作为工业控制专用的电子设备,由于其结构简单、可靠性高、易于编程、调试方便,成为工业现场最主要的控制装置,在工业控制现场已广泛应用.同时PLC具有较好的通信功能,在工业现场设备分布分散,不具备架设线缆的条件下,利用无线通信功能可方便地将现场信号接入监控管理系统.AGV自动导向车控制系统采用OMRON公司的CP1H系列PLC.该PLC带有模拟量输入/输出,USB口可供上位计算机编程,还带有2个可扩展的串口接口,配合工业无线串口转换设备实现数据接收发送.在每台AGV自动导向车上安装有无线串口转换设备,负责PLC串口数据的转换,并将数据通过无线信号发送至AGV行走轨道线路旁最近的无线接入点AP.环形轨道周围可以布置多个链接到以太网的无线接入点AP,每台AGV自动导向车在沿轨道运行中寻找最近的无线接入点AP,并且根据信号的强度自动切换接入点,实现无缝快速漫游功能.无线接入点AP负责接收PLC数据并通过交换机传至上位计算机.无线串口转换设备和无线接入点AP通过802.11a/b/g及TCP/IP协议实现通讯,最终由上位机完成PLC监控和AGV管理.
3上位机功能
上位机的功能是用来监控AGV车运行状态和控制PLC.上位机通信使用主从总线通信方式,以上位机作为工业局域网的主站,通过无线串口转换设备及无线AP连入该网的所有AGV车上的PLC皆为从站(图2).在本系统中,上位机监控各个AGV自动导向车的运行状态,由于AGV自动导向车之间是独立运行的,它们之间无数据交换,故属于主从通信.主站与从站建立好连接后,采用应答方式进行通信,主站发出命令帧,从站使用响应帧应答,命令帧或响应帧中包含相应的数据即可使需要交换的数据送至对方.上位机在正常运行过程中使用轮询方式进行通信,以避免通信总线发生冲突,确保定时刷新从站PLC中的信息.对于PLC主动发出的报警或者异常信息,上位机采用中断方式进行处理,实现通信.上位机向PLC发出接收数据的指令,PLC判断是否正确,如果正确则向上位机传送数据,上位机接收到数据也同样判断是否来自PLC发出的正确指令,如果正确则上位机和PLC双向实现通信线路的建立.上位机控制流程如图3所示.
4上位机程序设计
用VisualC++实现端口初始化的源代码[5]如下BOOLCserial::Open(intnPort)//nPort为计算机串行通信端口号nport=1为端口1,nport=2为端口2{CharszPort[15];DCBdob;m_hIDCComDev=CreaterFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NOMAL|FILE_FLAG_OVER-LAPPED,NULL);dcb.DCBlength-sizeof(DCB);GetCommState(m_hIDComdev,&dcb);//取得通信资源当前设置dcb.BaudRate=9600;//设定数据传输速率为9600dcb.Bytesize=7;//7数据位dcb.Parity=2;//偶校验dcb.StopBits=0;//设定1个停止位if(SetCommState(m_hIDComDev,&dcb))return(TRUE);elsereturn(FALSE);//设置端口,若设置成功则返回TRUE,否则返回FALSE}握手联络VisualC++语言的源代码如下BOOLCNTJDlg::ReadFormPLC(char*Read_charchar*Read_address,intRead_bytes){CserialSerial;//用户串行通信的类Charread_BUFFER;if(Serial.Open(2))//初始化串行通信口COM2{Serial.SendData(&ENQ_request,1);//发送联络信号Sleep(1000);//等待1sSerial.ReadData(&read_BUFFER,1);//读取PLC响应信号If(read_BUFFER==ACK)//如果PLC响应信号等于ACK,则对PLC进行操作{Serial.Close();//操作完毕,关闭通信口Return(TRUE);//成功}elsereturn(FALSE);//失败}}