摘要: 基于ARM7芯片LPC2132和功率驱动芯片A3977,设计了一种两轴运动控制卡。给出了该运动控制卡硬件组成以及通讯协议、插补算法等具体实现方案。描述了所设计的粉末物料自动化仓库关键功能的实现方式,以及该运动控制卡作为智能节点在此对象中的实际应用情况。
关键词: 运动控制卡;智能节点;S曲线规划
0. 引言
本文设计了粉末自动化仓库,其目的是为了实现多种粉末状物料的存储以及自动输送。区别于一般分散物料的自动化仓库,粉体物料的存取过程不是以货格为单位进行操作,而是以一定数目的储罐来保存物料,每次取货操作只取一个储罐中指定量的物料;存货过程现采用人工将空罐用装满物料的罐替代的方式。在这种工作模式下,将只需要AGV而省略堆垛系统,但是粉末的输出系统将必须具有计量的功能,同时,储罐的更换过程也要求简单快捷[1]。
本文中,使用一套2自由度的下料机构来实现粉末的计量,使用丝杆提升机构来实现储罐的升降以方便加料操作。控制系统采用基于现场总线的分布式控制系统,以智能节点为控制单元来实现所需动作。本文设计了一种基于ARM微处理器的两轴运动控制卡,集成了通讯、运动控制以及步进电机驱动等功能,可以作为智能节点接受主控制系统指令,直接驱动步进电机运行并采集和处理某些过程变量。与现有步进电机控制系统相比,本运动控制卡具有结构紧凑,线路简单,集成度高,使用方便等特点。
1. 智能运动控制卡硬件平台
运动控制卡中使用一块LPC2132芯片作为CPU来完成系统的通讯、指令解析、控制结构以及插补等功能。CPU产生两路独立的脉冲信号,每个轴的细分及驱动由一片Allegro公司的单片步进电机专用驱动芯片A3977来完成。
1.1 元件性能特点
在众多微处理器产品中,ARM处理器以极低的成本和功耗提供了较高性能,是复杂嵌入式应用的理想平台。目前的32位、64位嵌入式微处理器中,ARM是应用最为广泛的一个系列。
LPC2132是PHILIPS公司基于ARM7TDMI内核推出的工业级MCU。它具有16KB片内SRAM,64KB FLASH,可以容纳更大规模的代码;2个32位定时器/计数器以及一个PWM单元;多达47个通用I/O口;2个16C550工业标准的UART;通过片内PLL可以实现最大为60MHz的CPU操作频率。ARM处理器较小的封装,极低的功耗和强大的功能使其特别适合于小型系统[2]。
脉冲分配以及功率驱动操作也可以由相应的芯片实现,本运动控制卡采用了集成这两种功能的驱动芯片A3977。A3977是Allegro公司生产的单片正弦细分二相步进电机驱动专用芯片,它采用脉宽调制式斩波驱动方式,可以驱动二相步进电机,且电路简单,工作可靠。该芯片输出电流可达2.5A,具有整步、半步、1/4细分、1/8细分运行方式可供选择,满足一般功率要求下的驱动需求。
1.2硬件系统结构
平台硬件系统结构如图1所示 :
图1.硬件系统结构图
(1)通讯及调试接口
在一主多从结构下,每块运动控制卡作为从站通过RS485总线与主站连接。LPC2132芯片包含2个16C550工业标准的UART,每一路包含16字节的接收和发送FIFO,其中接收器的FIFO触发点可以设为1,4,8,14字节。在该自动化仓库的控制系统中,考虑协议规定的每条指令长度而将触发点设为8字节。上位机指令通过光耦与CPU实现电隔离。
LPC2132支持JTAG(Joint Test Action Group)协议。该协议主要用于芯片内部测试以及对系统进行仿真、调试,通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发和调试过程的一种方便高效的手段。卡上保留一个20针的JTAG接口用于调试和烧写程序[3]。
(2)输入输出及采样接口
系统的输出量主要包括脉冲的输出以及相关控制电平,输入包括对码盘、接近开关等信号的数字的读取以及部分位置传感器中模拟信号的采样。LPC2132的管脚大多具有一个以上的功能,使用某一功能前必须对管脚连接进行配置。除去调试接口所占用的部分,所余IO口能满足输入输出具体功能的要求。
(3)驱动芯片
运动控制部分的职能在于产生正确的脉冲序列和控制信号,脉冲分配以及功率驱动的功能可以由独立的驱动器来实现。常用驱动芯片性能比较如表1所示:
型号 |
L297+L298 |
A3977 |
TA8435H |
A3955SB |
输出电压(V) |
50 |
35 |
10-40 |
50 |
平均电流(A) |
2.5 |
2.5 |
1.5 |
1.5 |
功率(W) |
25 |
25 |
表1:常用步进电机驱动芯片比较
AGV上的提升机构电机额定电流为2A,这里采用单片细分及功率驱动芯片A3977。每片A3977驱动一个步进电机运行,卡上设两片驱动芯片来分别对应两路输出脉冲。驱动芯片输入信号包括公共端,使能控制,细分设置,方向设置和脉冲输入等,在细分设置确定的情况下,至少需要CPU提供3个I/O口。CPU与驱动芯片间的连接通过光耦实现电隔离。
2. 软件设计
运动控制卡的软件系统主要运行以下三个任务:任务一为插补运算;任务二为接收并缓存指令;任务三为提取并执行指令。按任务的重要性和实时性要求,将插补运算设为最高优先级,在1ms中断中得到执行,其它任务在背景程序中得到执行。软件系统的具体结构如图2所示:
图2.软件系统结构框图
(1)S曲线加减速规划及插补运算
为了保证系统在启动或停止时不产生冲击、失步、超程或振荡,必须对送到步进电机的进给脉冲频率进行加减速控制。立体仓库中某些运动形式负载较大,为保证其良好的动态性能,采用S曲线型无冲击型加减速处理。
S曲线加减速基本原理就是在加减速时,使加速度的导数Jerk为常数,通过对Jerk值的调整最大限度的减小对机械系统造成的冲击。用户设置加速度参数时只需考虑两个参数,一个是总的加速度时间(TA),一个是S曲线加速时间(TS)。系统根据用户设置的值对加速度曲线进行分类,首先必须保证TA>0。如果TS=0,则曲线为直线型加减速;如果TS != 0,且TA>TS,则曲线为S曲线与直线混合型加减速;如果TS != 0,且TA<TS,则曲线变成了S曲线加减速。规划过程需要对速度、加速度等参数进行圆整,从而给出每个阶段需要的插补周期数。插补运算过程中间量可以使用浮点数表示,最终结果再取其整数部分[4]。
在接收到运动开始指令后,在背景程序中的指令执行部分即进行对该过程的基本规划,包括:计算升降速各个阶段所需要的插补周期数,Jerk值。插补过程在1ms中断中完成。在本运动控制卡中,使用匹配输出的方式来产生脉冲:定时器TC或PWM的值和比较匹配控制值MCR相等的时候发生定时器匹配,匹配后引起相应输出口电平翻转。在每一插补周期开始时,即设置好匹配控制值并启动定时器,即可保证输出频率稳定的波形。脉冲正常产生后则开始进行插补运算,计算下一周期的脉冲频率,并查询一次UART模块相关标志位状态以判断是否有控制指令。实测得每个插补周期中的规划及查询运算量可以在300us内完成,在1ms内完成以上任务可以保证时序不发生错乱。
(2)指令接收与处理
中断内检测到UART模块接收缓存满标志时,即通知背景程序对指令进行接收,缓存以及后续处理。可能的指令类型包括:对参数进行修改、查询等参数处理类型;插补运算的开始,运动开始,急停等运动控制类型。485主站与节点之间定义8位的ASCII字符作为一条指令,包括起始位,地址位,功能代码位,4位数据段以及停止位。
所有节点在检测到指令信息时,即从中搜索起始位“:”字符,当检测到起始字符时,则对下一位(地址位)进行判断来确定该指令是否发送给本卡,随后将符合本机地址的指令收入队列做进一步处理。本运动控制卡中采用了普通指令队列与优先指令队列两个环形队列的方式。一般情况下,指令进入普通指令队列末端等候执行,特殊指令,如急停等,将进入优先的队列以保证立即得到处理。
指令从主设备发往从设备时,功能代码位将告之从设备需要执行哪些行为,数据位则包含了要执行功能的任何附加信息。运动控制卡需要执行的功能包括读取输入的开关状态,参数修改,发出运动控制指令,作出回应等。对其中每一种功能,在卡上都编程并与某一功能代码唯一对应。功能代码位选用一个ASCII字符,可用的代码有255种,可以满足使用要求。
3. 应用实例
在本文设计的粉末物料自动化仓库中,原料置于单独的储罐中,每个储罐底部连接下料机构,下料机构靠两个旋转的叶轮来完成功能。在需要某种原料时,AGV移动到相应储罐下方,下料机构工作,配合AGV上的称量装置完成对一种原料的精确计量操作。AGV移动时需要随时读取位置传感器信息,保证定位准确。为了更换储罐方便,放置储罐的料架由丝杆来驱动,可以自由升降。为了实现密封、自动清洗等附属功能,料架上附带两种类型的机械手,其中一种操作密封盖在不需要下料时封闭下料机构的下端出口,另一种携带清洗水管,辅助完成料罐的清洗工作。机械手运行时要求精确定位于指定料罐的下方,并要求能对管路上的阀门进行控制。该系统的具体结构参考图3。
图3. 立体仓库结构示意图
该粉末物料立体仓库作为某化工产品柔性生产线的一部分,采用图4所示的分布式控制系统,并将控制系统分级以减少主机的任务量。RS485主站作为二级主站完成该立体仓库分系统的控制。所述的运动控制卡作为RS485节点完成某一功能模块的管理。485主站的指令以广播的方式向所有下属节点发出,被接收并地址识别后在节点得到处理。立体仓库中每一功能模块,使用单块运动控制卡可以完成控制需求。
图4. 控制系统层次
(1)脉冲输出类任务
最简单的操作方式为输出脉冲驱动电机运动,如下料操作。这种工作方式下,主机通过指令设定行程,速度等运动参数,启动指定节点的插补过程,插补过程启动以后将不依赖后续指令而运行至设定行程。在产生脉冲的过程中,主机可能向节点周期性发出查询指令以确定节点当前运动状态,为后续处理提供依据。
(2)传感器信息采集类任务
较为复杂的运动方式包括料架的提升以及机械手的操作。此两类运动的范围受到机械约束,需要读取限位开关信号以及码盘反馈信号以检测运动状态,机械手的操作中包含阀门等IO量的控制,位置传感器输入信号为模拟量需要采集及转换。该系统的运行中,丝杆转速最高为1.5r/s,采用256线的码盘作为转动反馈时,产生脉冲频率为384Hz;机械手工作在更低的转速范围内。本控制卡中,将限位开关、码盘等信号视为I/O量,进行定时采样来读取信息;模拟信号被同时采样并在片上即得到转换。系统产生的1ms定时中断同时也作为采样周期。根据香农定理,1000Hz的采样频率足以满足当前转速区域内的采样要求。
自动化仓库中料罐,下料机构,提升机构等组成多个相对独立的下料单元,按照规划这些下料单元不可能同时工作。使用继电器切换,一块控制卡即可完成系统中所有同类机构的控制要求。
单个节点对功能的实现中,完成了参数修改及运动控制,数字及模拟信号的采样和处理等功能,与主机之间采用数字通信,具有智能化的特点。在分布式控制系统中,该运动控制卡还具有鲜明的特点使其适合作为智能节点使用:采用统一的软件硬件接口形式,简单的对地址进行编辑后即可互相替换;模拟信号在节点即得到处理,主机与节点之间采用数字通信;不同节点之间完全独立,单个节点的错误不会影响系统其它部分的运行。该系统基本符合基于现场总线的控制系统的开放型、分散性、数字通信的特征,是一种较低成本的实现方式,同时,系统以步进电机为主要控制对象,节点上增加了功率驱动功能,并在软件开发上优先考虑了运动控制功能的实现。
4. 结论
本文介绍了一种基于ARM微处理器和步进电机专用驱动芯片A3977H的两轴运动控制卡。在粉末物料自动化仓库的控制系统中,采用基于现场总线的分布式控制系统中,将其作为智能节点使用,通过RS485总线完成与中央控制系统的通信,并根据接收的指令完成插补过程,脉冲序列的产生,运动状态的查询等操作。产生的脉冲序列通过驱动芯片最终驱动步进电机运动。同时,利MCU上的其它资源,可以完成多种辅助信号的采集与处理过程。本运动控制卡结构紧凑,使用方便,在该自动化仓库的控制系统中发挥了重要的作用。
参考文献:
1.刘昌祺 自动化立体仓库设计 北京: 机械工业出版社, 2004
2.吴明晖 基于ARM的嵌入式系统开发与应用 北京:人民邮电出版社 2004
3.楚红雨 基于ARM的嵌入式通信控制器的设计与应用微计算机信息 2005年16期
4.王恒 基于USB的激光热处理数控系统研究与开发 中国制造业信息化 2003年5期