嵌入式FPGA热门培训内容之基于PC和FPGA的运动控制系统

时间:2018-12-12 17:15:27

1 主从式运动控制系统

    本系统的设计目标是实现两轴联动的运控系统,主要由PC机、FPGA从控板和电机驱动板三个部分构成,系统结构如图1所示。上位机(PC)的主要功能是对系统运行过程进行控制规划和粗插补(曲线加工规划)。FPGA从控板的主要功能是对加工进行精插补,在此二次插补完成后通过速度补偿模块对插补的执行速度进行补偿,进一步减小插补的偏差,产生直接用于驱动步进电机进行直线/圆弧运动的脉冲信号。驱动电路的作用是将脉冲控制信号进行功率放大,以直接驱动电机,同时为了提高控制精度,可以使用其细分电路对电机的步进进行1、2、4、8次的细分。

    主从模块通过异步串行通信方式RS-232标准进行通信。上位机将一条曲线分割成一组简单曲线(直线/圆弧)的执行序列,使用自定义的编码方式将信息下载到FPGA上。对应地,FPGA上设计有接收并存储这些编码信息的功能模块。

2 上位机主控软件设计

    上位机只需要将一条待加工曲线分解为精插补模块可执行的直线和圆弧的序列,以FPGA能够识别的指令传输给从控板。以粗插补为目的,配套开发了相应所需的通信模块、作为示教功能所需的命令控制模块以及作为数控系统解决方案的G代码生成与编译模块。

    本设计的上位机主控系统是在Windows 7环境下,以Visual Studio 2010作为开发工具,基于Microsoft .NET Framework 4.0开发的。该上位机主控系统主要有5个功能模块,如图2所示。

    这5个模块被设计在一个Windows窗体中,不同功能设计在不同选项卡中,因此只需切换选项卡就可以轻松实现功能的切换。在窗体的右侧有一列独立于选项卡容器的对象,其功能是对串口通信进行设置,控制FPGA执行的起停以及对监视功能进行复位。上位机主控软件视图如图3所示。

    粗插补是将一条曲线分解为一系列的能够被下位机FPGA执行的直线和圆弧的小段。这样,控制者可以在PC机上手动绘制一条待运行的曲线,调用粗插补运算函数产生相应的G代码,再译码运行,实现所见即所得。

    G代码是数控程序中的指令,也称为G指令。在命令编译模块中实现的功能是将之前生成的G代码,或者从本地文件中读入的G代码转换成FPGA控制板可以识别的自定义命令序列,并发送至从控板。

3 基于FPGA的从控模块设计

    精插补模块以硬件方式实现,即将多轴运动控制模块固化在FPGA中,把上位机从生成步进电机的直接驱动信号时的繁重单调的工作中解放出来,提高执行的速度和效率。其功能结构如图4所示。 软件实现的功能是通信协议、命令解析、精插补和速度补偿等功能。

3.1 FPGA从控板硬件设计

    作为脉冲控制指令的直接生成者,FPGA从控板在整体的设计中具有核心地位。由于本设计的输入输出信号有两路不共地的电压输入,因此电源设计与信号隔离至关重要。简易键盘作为系统控制输入,主要进行系统运行方式的选择和控制指令输入。对于系统中简单的开关量,直接用LED显示;而对于复杂的系统状态,如执行时序状态机的监视,则需要借助LCD进行监控。FPGA从控板需要接收来自上位机的加工指令序列,串口作为最为常用的通信接口,它能够保证数据信息以足够高的速度由上位机发送到FPGA从控板上,完成控制操作[3]。

3.2 基于最小偏差法的插补设计

    因为任何一条曲线都可以用直线和圆弧的小段对其进行逼近,因此,直线与圆弧是构成运动控制轨迹的基本要素,直线/圆弧插补就是运动控制器的基本功能,也是实现高精控制的基本手段。

    精插补模块的实现原理有很多种,对于直线和圆弧插补,常用的插补原理有逐点比较法、最小偏差法、数字脉冲相乘法等。最小偏差比较法是在逐点比较法的基础上衍生而来的,其原理是在进给之前先判定向x坐标方向或y坐标方向进给一步的偏差和向对角线进给一步的偏差(向x轴与y轴同时进给一步),应选择偏差小的那个方向进给[4]。

3.2.1 最小偏差法插补进给规则

    最小偏差法直线插补是将直角坐标的每个象限都用45°斜线分成两个区域,4个象限共分为8个区域,称为8个卦限,用0~7表示在某一卦限内,直线插补根据轨迹点偏差的大小选择沿相应轴方向或对角线方向进给。圆弧插补同样把一个圆分成8卦限,将圆弧中心作为坐标原点,在不同的卦限,其进给方向不同[5]。如图5所示为第1象限中0卦限和1卦限的进给示意。

3.2.2 插补模块实现

    插补模块在FPGA中实现的流程图如图6所示。

3.2.3 插补模块的速度补偿

    由于最小偏差比较法的进给规则是单次沿轴向或者沿对角线方向进给,系统实际运行时的速度会因为曲线各处斜率的不同而变化,降低了运行速度的稳定性。为了解决这个问题,可以从驱动状态机的时钟输入上进行考虑。由于脉冲的产生是通过状态机实现的,因此可以通过降低沿轴向运动时的脉冲源频率,提高沿对角线方向的脉冲源频率来平衡不同斜率轨迹点的运行速度[6]。

    设脉冲F单独驱动单轴运动的速度为Vf,合成速度为V。可以画出V/Vf随α的变化的曲线图,如图7(a)所示。由图可知,当角度α=45°时,运动速度最快。

    设进给脉冲源的频率为3f,经过1/N分频器分频后再作为进给脉冲,由此可得新的V/Vf关系如下:

    则这时V/Vf对?琢的曲线图就变为如图7(b)所示。对比图7(a)、(b),可知其速度稳定性有了明显的提升。

    以上分析是插补模块设计的理论依据,在编写模块时需要考虑许多实际问题。但无论是直线插补模块还是圆弧插补模块,其实现方式都是通过状态机对生成脉冲的程序进行循环,根据原理推演而得到的判断条件来产生各轴的驱动脉冲与相应旋转方向的控制信号[7]。

4 仿真与实验

4.1 基于Matlab仿真

    基于最小偏差法的插补模块被封装在FPGA中,但其算法在Matlab环境下进行了仿真,图8所示为半径为8个脉冲当量的运行轨迹,实现了实际轨迹与理想曲线之间的最小偏差。

    图9所示为当插补半径为800个脉冲当量时轨迹情况。可以看出,对于任何实际执行的圆弧指令(半径一般大于1 000个脉冲当量),如此细小的误差完全可以忽略不计。使用最小偏差法实现圆弧插补,流程明确,又是整数计算,特别适合基于FPGA的设计。而且准确性已非常高,所以使用最小偏差法来进行圆弧的精插补是最优方案。

4.2 两轴联动雕刻床测试

    实际测试平台是一个两轴联动雕刻床,每个轴由步进电机驱动,经过丝杠将旋转运动转换为直线运动。为便于观察,雕刻刀使用铅笔芯代替。在上位机软件上手绘一条待运行曲线,经过规划处理后转换为G代码,并加工执行。

    图3与图10分别为上位机的手绘曲线与实际运行情况,由图可见,系统能够很完整地跟踪手绘曲线。