在现代工业控制领域中,基于专用运动控制芯片或者DSP控制器的运动控制系统应用较为广泛[1],但成本较高。新兴的ARM Cortex系列具有低功耗、低成本、高性能和开发环境优秀的特点,不仅在功能上能够满足工控领域对速度及功能的要求,更具有很好的成本优势。本文采用ARM Cortxe-M3处理器为运动控制器设计开放式运动控制系统[2-3],并在此硬件平台上研究运动控制策略与关键算法,实现运动控制处理功能。
1 控制系统
1.1 控制系统硬件结构
系统采用“运动控制器+PC机”的开放式结构,如图1所示。系统以ARM Cortex-M3微处理器作为核心处理芯片的运动控制器,与PC机构成的多处理器结构,实现多轴步进电机的控制。
运动控制器主要由ARM Cortex-M3微处理器、存储芯片、接口芯片以及外围接口等构成,如图2所示。处理器芯片选用ST公司的STM32F103VCT6,其具有高性能、低成本、低功耗的特点,时钟频率最高能够达到72 MHz,并拥有丰富的外围设备和功能强大的定时器[4]。
ARM Cortex-M3处理器主要实现数据处理、系统控制及中断处理等。数据处理:对PC机下载的加工数据进行进一步处理,主要是如何将微小线段的端点坐标、速度等信息通过特定算法转变为驱动步进电机驱动器的脉冲信号和方向信号。系统控制:按照要求完成模块功能的分配与处理。中断处理:完成定时器中断、串口通信中断、急停中断、位置控制等。
1.2 控制系统软件
运动控制系统软件程序主要有两大部分,一是用于人机交互的界面程序,包括系统初始化模块、参数设置模块、模板选择模块以及显示模块等;二是为实现运动控制输出的算法处理程序,主要包括速度前瞻性处理算法、坐标变换与主轴判断、脉冲分配以及两轴联动算法。
2 主要算法设计
运动控制系统需要通过运动控制算法来获得控制量的输出,以达到对机械运动部件的控制[5]。本系统通过微小线段来拟合要加工的曲线,在PC机上进行前端预处理得到加工图形的坐标位置、端点数、端点速度等数据,并在运动控制器中进一步处理[6-7]。系统的关键算法设计有:两轴联动的实现、速度前瞻性处理算法以及脉冲分配规划。
2.1 两轴联动
首先,根据X、Y轴的脉冲数来确定主从轴,脉冲数多的为主轴。为了实现联动,则必须在同一时间内将X、Y轴的脉冲数目发送完。
两轴联动主要是靠3个定时器级联来实现,如图3所示。其中,定时器2作为总线时钟的分频器,实现一个动态的“主时钟”;定时器3和定时器4分别作为“主时钟”的计数器,对定时器2产生的“主时钟”进行计数,以产生符合系统所需脉宽的脉冲。
2.2 速度前瞻性处理[1,7]
系统要加工的圆弧是由大量的微小线段来逼近的,为了保证这些微小线段在高速运行时能够连续执行,不出现停顿现象,系统在上位机的内存中开辟一个空间,预先将加工的弧线数据读出,存储到该空间中,再根据设计好的步进电机升降频曲线对速度进行预先规划处理。预先规划包括:相邻直线段拐角速度优化、减速点预测以及连续微小线段始末速度确定。
在高速运动时,如果两个微小线段的拐角处速度差很大,则会使得拐角处产生很大的加速度,有可能导致过冲甚至堵转现象。因此在加工过程中,为使得连续微小线段的曲线加工流畅,必须保证微小线段间的速度过渡是连续的,不能发生突变。为保证轨迹精度并避免产生突变,两个运动轴的速度变化率不能超过该轴电机的驱动能力。在该约束条件下需要对减速点进行提前预测,从而保证每条小线段在运动到线段终点的时候能够达到预定所能达到的最高速度,并且不会过冲。
结合线段主轴的脉冲数目和升降频曲线表,推算出到达该小线段末端能达到的最高速度和最低速度及该线段终点的速度范围。再在这个范围从最高速度开始检查满足速度不突变条件的速度作为该线段的末点速度,并将这个速度或者这个速度在升降频曲线表中的相邻速度作为下一条小线段的起始速度。通过该方式可以规划出构成整条曲线的微小线段的端点速度。而后再利用规划好始末点速度来进行主轴的加减速脉冲分配,确定减速点的位置就可以避免电机运动过程中出现的过冲。
2.3 脉冲分配规划
以X轴为主轴为例,根据主轴的起点速度(line1.begin)、终点速度(line1.end)、主轴脉冲数(line1.Xlength)以及设定好的升降频曲线来规划加速、匀速、减速的脉冲数[6]。具体算法如下:
如果起点速度和终点速度均为最大速度时,则加速和减速脉冲均为零,匀速脉冲数为整个主轴脉冲:line1.speed_yunsu=line1.Xlength。
如果起点速度等于最大速度,终点速度小于最大速度时,则:
line1.speed_up=0;
line1.speed_down=Max_down2_VA(line1.end); (最高速度到终点速度需要的脉冲数)
line1.speed_yunsu=line1.Xlength-Max_down2_VA(line1.end);
如果起点速度小于最大速度,终点速度等于最大速度时,则:
line1.speed_up=VA_up2_Max(line1.begin);(从起始速度到最高速度需要的脉冲数)
line1.speed_down=0;
line1.speed_yunsu=line1.Xlength-VA_up2_Max(line1.begin);
如果两端的速度均小于最大速度时:
当主轴脉冲数大于等于起点加速到终点速度需要的脉冲数加上从最大速度降到终点速度脉冲数,则运动脉冲的分配如下:
line1.speed_up=VA_up2_Max(line1.begin);
line1.speed_down=Max_down2_VA(line1.end);
line1.speed_yunsu=line1.Xlength-VA_up2_Max(line1.begin)-Max_down2_VA(line1.end);
当主轴脉冲数小于起点加速到终点的速度需要的脉冲数加上从最高速度降到结束点速度脉冲数:若开始的速度小于末端速度则只有加速脉冲(等于主轴脉冲);若开始的速度大于末端速度则只有减速脉冲;若开始的速度等于于末端速度则只有匀速脉冲。
以ARM Cortex-M3运动控制器替代传统运动控制卡的运动控制系统,降低了控制系统的成本,同时开阔了ARM Cortex-M3在运动控制领域的应用。本文提供的方法已经成功应用于数控冲孔机的运动控制,实现了数控冲孔机的预定功能,充分证明了ARM Cortex-M3实现优秀运动控制器的可行性。