引言
AGV系统是当今柔性制造系统(FMS)和自动化仓储系统中物流运输的主要手段。AGV具有适应性好、柔性程度高、可靠性好、可实现生产和搬运功能的集成化和自动化等优点[1]。AGV车载控制器是AGV控制系统的核心,其性能和可靠性直接影响AGV产品的性能和可靠性。
对于国内应用的 AGV 来说,大多采用基于单片机[25]、可编程控制器(PLC)[69]、嵌入式工控机[1012]等方案。采用PLC作为控制器系统存在扩展不便、功能简单、难以实现复杂的调度算法等问题[3];而采用工业计算机控制方案则存在成本过高、系统稳定性不佳等不足,而且由于AGV的不断振动等原因导致硬盘读取数据不稳定,造成整个AGV系统的宕机[13]。针对以上问题,本文设计的AGV车载控制器基于嵌入式系统,该车载控制器功能齐全、具有扩展方便、配置灵活的特点。
1 车载控制器总体设计
车载控制器开发中采用双CPU主从结构,基于ARM11(S3C6410)的开发板平台作为主控板,基于STM32的扩展板作为底层驱动板。主控板负责复杂的逻辑运算、网络通信和人机交互;底层驱动板板负责外围设备驱动,包括数字量的输入/输出、驱动电机控制、RFID读卡器数据采集和磁导航传感器信号的测量等功能。主控板通过与上位机调度系统的无线通信确定需要完成的规定动作,并分解成各底层驱动板需要的执行的功能,然后通过串口下发给各底层驱动板运动控制指令,底层驱动板完成相应的动作并反馈自身状态,并在上位机上显示。车载控制器通用功能框图见图1。
车载控制器的STM32底层驱动板通过磁导航传感器采集磁条信息,并对采集的信号进行处理,然后通过DAC模块(控制电机的转速大小)、继电器输出DO模块(控制电机的正反转)控制驱动电机,高速计数器模块(电机脉冲采集)实现AGV的行走和转向;并将自动/手动、急停、磁导航传感器的门位信号、AGV行走的速度等数据信息通过串口通信发送至主控板,并在触摸屏上显示;同时,通过无线通信将上述数据信息发送至上位机,实现上位机对AGV状态的监测。另一方面,上位机可将自动/手动及行走/转向(前进、后退、左转、右转)指令发送至控制器,实现对AGV的远程控制。
图1 车载控制器通用功能框图
2 车载控制器硬件设计
根据功能要求,AGV车载控制器主要有以下模块:触摸屏显示模块、无线通信模块、CAN总线通信模块、串口通信模块、电源管理模块、ADC模块、DAC模块、计数器模块、DI/DO模块。其中,触摸屏显示模块、无线通信模块在主控板上,其余模块在底层驱动板上。另外,主控板与底层驱动板之间采用串口通信或者CAN总线通信。
车载控制器硬件分为两部分:①S3C6410主控板设计,带有无线模块以及触摸屏显示;②STM32底层驱动板设计,带有外设接口,用于外围设备信号的输入/输出。
2.1 S3C6410主控板设计
车载控制器的主控板处理器采用Samsung公司的ARM处理器S3C6410。该微处理器采用ARM1176JZFS内核,其稳定主频为533 MHz,最高主频可达667 MHz,具有低成本、低功耗、高性能的特点。S3C6410具有双总线架构,一路用于内存总线,另一路用于Flash总线DDR内存控制器;支持Nor Flash和Nand Flash两种Flash;支持多种启动方式:主要包括SD、Nand Flash、Nor Flash等设备启动;集成了许多外设接口,如TFT24位真彩色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接口,在此基础上进行开发可大大缩短开发周期,降低开发风险。该主控板上主要实现无线通信功能以及触摸屏显示功能。
2.2 STM32底层驱动板设计
车载控制器的底层驱动板处理器系统采用意法半导体推出的STM32F103,是基于CortexM3内核的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的第一、第二通道。
3 车载控制器软件设计
车载控制器软件分为上位机(PC机)软件和下位机(车载控制器)软件。上位机软件的主要功能是通过无线通信模块向车载控制器发送AGV的运行任务,以及接收AGV车载控制器发送回来的AGV当前工作状态。下位机软件的主要功能是接收PC机下达的运行命令,通过STM32底层驱动板对AGV的运动进行控制,并且向PC机发送AGV当前的工作状态;同时在S3C6410主控板的触摸屏上显示AGV的状态信息。
整个系统的软件功能框图如图2所示。
图2 车载控制器软件功能框图
车载控制器软件设计包括以下几个模块:①STM32底层驱动板的功能模块;②S3C6410主控板的通信和显示模块;③上位机(PC机)的无线通信及远程控制模块。
3.1 STM32底层功能模块
底层功能模块主要有磁导航传感器信息的采集和处理、驱动电机的控制、射频读卡器(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在对应位置处的加速或减速。
3.2 S3C6410主控板的通信和显示模块
S3C6410主控板的通信包括与STM32底层驱动板的串口或者CAN总线通信(试验中为串口通信),以及与上位机PC之间的无线通信。
S3C6410主控板的触摸屏显示界面主要用于显示AGV的速度、路线状态、急停、自动/手动模式等信息。一方面通过串口通信接收来自STM32底层驱动板的信息,另一方面通过无线通信接收来自PC机的信息,同时将接收的信息在界面上显示。该界面的设计基于WinCE操作系统。
车载控制器触摸屏显示界面略——编者注。
3.3 上位机的无线通信及远程控制
为满足车载控制器远程监控的需求,通过车载控制器的无线模块实现上位机对车载控制器的远程控制和监测,车载控制器的数据信息通过无线模块发送到监控上位机,并将上位机的相应指令发送到控制器,实现远程监控。
上位机界面主要是远程控制以及实时监控功能,通过上位机界面可以远程控制AGV的行走状态,并且可以实时显示AGV的速度和相应的故障/异常状态。
上位机远程控制界面和车载控制器软件控制流程略——编者注。
为了验证设计的硬件系统、软件功能和上位机远程控制,进行了相关的试验。相关内容略——编者注。
结语
本文设计的AGV车载控制器。主控板采用S3C6410芯片,实现了车载控制器与上位机的通信以及对AGV沿预设路径行走的控制;底层驱动板采用STM32F103芯片,实现了外设导航传感器信息的采集、RFID数据的读取、驱动电机的控制。现场测试运行状态良好,满足要求,具有可行性和较好的实用性。