单位文秘网 2021-10-27 08:25:17 点击: 次
摘 要 本文介绍了一种基于STM32与CPLD的双轴运动控制器。该控制器采用32位微控制器STM32f103VET6完成粗插补计算、数据处理、图形显示及数据通信;采用高速的CPLD完成精确插补及电机的高速与高精度控制。实际测试结果表明此控制器控制精度高、速度快、运动更加平稳,能满足大多数双轴联动控制场合的需求。
关键词 插补算法;运动控制;STM32;CPLD
中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2014)20-0009-02
运动控制器已经从单片机或专用芯片(ASIC)作为核心处理器,发展到了以DSP/ARM和FPGA作为核心处理器的开放式运动控制器。高速、高精度始终是运动控制技术追求的目标。充分利用高速处理器的计算能力,进行复杂的运动规划、高速实时多轴插补、误差补偿,使得运动控制精度更高、速度更快、运动更加平稳。根据应用要求,设计出智能化的运动控制器将成为市场应用的新方向。
1 系统设计方案
本控制器以ST公司的STM32f103VET6芯片和Altera公司的CPLD芯片EPM570T100为控制核心。利用STM32运算速度快处理能力强的特点,实现粗插补计算、数据处理、图形显示及数据通信;利用CPLD较强的逻辑处理能力,实现精确插补及电机的高速与高精度控制。其系统原理框图如图1所示。
图1 系统原理框图
STM32通过MAX232接口接收上位机控制指令,或以键盘输入的方式输入图形轮廓数据,之后进行相关的算法处理,将计算所得到的初插补参数传送到CPLD,由CPLD进行精插补,产生控制两轴联动的脉冲信号,驱动步进电机运动。
2 系统硬件设计
1)STM32模块。
STM32F103VET6为32位微控制器,芯片主频为72 MHz,具有512KBFlash、64KB的SRAM内存,支持USB接口、网口、串口等外设,为运动控制系统提供丰富的外围接口资源支持。
STM32部分需完成接收上位机的控制指令、按键输入轮廓数据、完成粗插补算法,显示当前运行状态,与CPLD通信等功能。所以STM32芯片的外围电路有LCD显示模块,矩阵键盘模块,串口模块。
2)CPLD模块。
CPLD模块的功能主要通过硬件语言Verilog来实现。CPLD负责与STM32通信,并根据数据实时进行脉冲均匀化处理,产生两轴方向与脉冲控制信号,最终驱动步进电机运行。设计的CPLD内部架构图如图2所示。主要由三个模块组成:①与STM32通信模块:包括8*10数据寄存器与命令接口;②参数运算寄存器与数据控制模块;③脉冲均匀化处理模块。
图2 CPLD内部架构图
3)其他电路模块。
系统其他模块还有上位机通信模块、电源模块等。由于此控制器采用+5 V供电,而STM32F103VET6芯片、EPM570T100芯片、LCD显示模块需要3.3 V电压供电,因此用LM1117系列芯片转换产生3.3 V电源。通信模块使用MAX3232电平转换与上位机通信,通过串口接收上位机指令,对电机进行相应的控制。
3 系统软件设计
1)粗插补算法在STM32中的实现。
①插补原理。插补算法有很多,根据微处理器的本身特点,这里采用数据采样插补法。用一系列首尾相连的微小线段来逼近给定轮廓。每经过一个插补周期就进行一次插补计算,求出插补周期内各个坐标轴进给量,得出下一个插补点的指令
位置[1]。
②直线插补的算法实现。设插补周期T、输入进给速度为F、加速度为a、当前速度为Vi、终点坐标为(Xe,Ye)。可得每个插补周期的进给步长△L=ViT,所需运动的总长度为L=,X轴和Y轴的位移增量为△x=△L Xe / L,△y=△L Ye / L。插补第i点的动点坐标为X=X+△x;Y=Y+△y。
由此,可以设计出数据采样直线插补软件流程图,如图3所示。
图3 直线插补软件流程图
③圆弧插补。要进行圆弧插补,需要先根据指令中的进给速度F,计算出轮廓步长L,再进行插补计算。以弦线逼近圆弧,就是以轮廓步长为圆弧长相邻两个插补点之间的弦长,由前一个插补点的坐标和轮廓步长,计算后一插补点,实质上是求后一插补点到前一插补点两个坐标轴的进给量△X,△Y。设S(X,Y)为当前点,E(X,Y)为插补后到达的点,进给速度为F,圆半径为R,则一个插补周期步长△L=F*T,由几何关系可得,X、Y轴进给量为:
△X =
△Y =
其中,令m=、n=,则上式可以化简为:
△X=m Y-n X,△Y=m X+n Y
故插补后到达的点E的坐标为X= X+△X,Y= Y-△Y[2]。
由此,可以设计出数据采样插补软件流程图,如图4所示。
图4 圆插补软件流程图
2)STM32与CPLD的通信实现。
STM32与CPLD的数据传输协议时序图5所示,
图5 数据通信时序图
STM32和CPLD通过10位数据总线data进行数据传输,由start,EN,clock信号进行命令控制。CPLD每4ms在 start信号线上产生一个正脉冲作为STM32中断信号,STM32在中断程序中进行数据传输和下一插补周期数据计算。通过使能信号EN、时钟信号Clock对传输数据进行控制。
3)精插补算法在CPLD中的实现。
由于在4 ms粗插补周期中各进给轴的进给量在不断变化,要保证电机进给运动平稳,必须使各插补周期中输出脉冲均匀化。为此我们提出一种简单有效的脉冲均匀化插补算法。
设每个插补周期T内所需要输出的脉冲数为X,在插补周期T内,CPLD时钟产生的脉冲总数为F,F与X具有以下关系:
F=A*X+B=A(X–B) + (A+1)B (1)
其中A为F/X的商,B为F/X的余数。
所代表的物理含义是以CPLD时钟为基准,先以每隔A个时钟脉冲输出一个进给脉冲,共输出X-B个脉冲,然后以每隔A+1 个时钟脉冲输出一个进给脉冲,共输出B个脉冲。这样,就完成了在插补周期T内,均匀输出X个脉冲的任务。
实际研究中,设定插补周期为4 ms与数据传输时间一样,保持在数据接收与运动控制上的一致性。运动控制的系统时钟为500 kHz。在一个插补周期T=4 ms中,系统时钟脉冲数F=2000。
在Quartues II9.0中的仿真图如图6所示。
图6 精插补输出脉冲仿真图
经过测试,输出进给脉冲的速率能稳步上升至250 kHz。
参考文献
[1]刘军.数控技术及应用[M].北京大学出版社,2013.
[2]李莉.数控系统中圆弧插补算法的改进和实现[J].组合机床与自动化加工技术,2009(7).
[3]王广炎.张润孝脉冲均匀化查补方法[J].制造技术与机床,2000(3).
(责任编辑:单位文秘网) )地址:https://www.kgf8887.com/show-233-97285-1.html
下一篇:消极的构成要件要素理论研究
版权声明:
本站由单位文秘网原创策划制作,欢迎订阅或转载,但请注明出处。违者必究。单位文秘网独家运营 版权所有 未经许可不得转载使用