tag 标签: 三轴联动

相关博文
  • 热度 22
    2014-3-24 09:09
    4340 次阅读|
    0 个评论
    首先,看看MCX314是一颗什么样的芯片。 主要功能描述 MCX314是一个用于4轴运动控制的芯片,控制步进电机驱动器或者脉冲型的伺服电机驱动,带位置,速度和插补功能。 用于运动控制卡中。它的功能都是通过寄存器来控制的,包括命令寄存器,数据寄存器,状态寄存器和配置寄存器。 从大体上来看,整个芯片的框架包括了X,Y,Z,U四轴的控制模块,包括了直线,圆形,和位模式插补三个模块,都由插补控制模块来控制,另外由中断信号的发生器,以及指令的处理模块来管理。 功能包括: 4轴控制:允许3轴联动,包括恒速,线性和S曲线驱动。 脉冲输出:单脉冲和双脉冲两种模式 恒速控制:就是不管切换其他的插补,速度不变。 速度控制:生成1HZ~4MHZ的任何脉冲频率。 位置控制:理论上的一个位置值和一个实际采样回来的位置值。 比较寄存器和复位:比较值输出,假如偏差太多,可选复位。 三大插补:直线插补,圆形插补,位模式插补。 连续插补:相当于可以随意切换 单步插补:相当于输出一个脉冲 中断信号:有很多种中断,比如一次运动的开始和结束,比较寄存器触发等。 由外部信号驱动:减轻CPU负担 输入输出信号:4个输入信号,8个输出信号,输入信号实现刹车用的。8个输出位通用的输出点。 伺服电机反馈信号:输入连接管脚,包括伺服报警,到位信号等 实时监控:寄存器可以读出,实现监控 8位和16位数据总线:连接CPU MCX314的工作方式 与MCX314的通信,主要是通过8个可读和可写的寄存器来实现的,其中包括: 命令寄存器WR0:设定诸多命令,有写还必须先写入WR6和WR7以后才行。 模式寄存器有三个: WR1:中断时能,输入时能,减速状态和比较结果寄存器设置。 WR2:设定限位开关输入,反馈类型以及伺服的反馈信号。 WR3:设定手动减速,单独减速,S减速,外部操作模式和通用输出的设定。 输出寄存器:WR4,用于设置各轴的通用输出信号。 插补模式寄存器:WR5 数据寄存器WR6和WR7:写入WR0之前,WR6存放低字,WR7存放高字。 可读的也包括8个:RR0~RR7 RR0:各轴驱动与错误状态 RR1:各轴的运动状态和限位状态 RR2:各轴出错误的原因 RR3:中断的来源 RR4和RR5:通用输入寄存器 RR6和RR7:读取命令的高字和低字 芯片管脚定义 芯片管脚一共144个,看这样数量的引脚如何实现上面的功能。 CLK:输入时钟,内部默认位16M,可以修改 D0~D15:16位或者8位的数据总线。 A0~A3:有了数据总线,还得知道数据发到那个寄存器 CSN:片选 WRN:写时置为低 RDN:读信号 RESETN:复位 EXPLSN:外部脉冲输入 H16L8:16位和8位选择 TESTN:测试用 BUSYN:忙 INTN:中断发给MCU SCLK:系统时钟,为CLK的一半。 XYZU轴脉冲输出和方向输出 XYZU轴反馈信号输入,一共AB两组 各轴的运动状态,停止时为高,运行时为低 各轴都有通用用途的8位输出位,共32位 各轴,接受伺服驱动器输入状态的反馈 各轴,伺服警告的反馈引脚 各轴,超量程,各轴将减速到停止 各轴,4个引脚,立即停止的各轴,计数器的锁存 各轴外部驱动信号时能,正负信号 EMGN:紧急停止所有输出信号,为输入。 电源和地:13个地引脚和7个VDD引脚。 功能和相关技术参数 脉冲输出的模式有两种,一种是定长输出,一种是连续输出,下面讲述 定长脉冲输出驱动     这个相当于一个梯形,当然需要知道一些重要的参数,范围R,加减速AD,驱动速度,初始适度,和输出脉冲数。     在驱动的时候,可以随时更换脉冲数,包括增减脉冲数。     减速点在频繁更改脉冲数和插补时需要手动设置,加速点和减数点可以改变,MCX314会自动设置在哪里开始减速。 连续脉冲驱动输出     这个相当于一直已某个频率输出脉冲,直到有中断信号或者停止命令。这个主要用于寻找机械原点,示教和速度控制。四个通用输入也可以用来设置中断信号。 速度曲线 速度曲线一共有三种: 恒速     当驱动速度低于初始化速度的时候,直接开始恒速运行,这个用于有传感器反馈的零点,随时开始,到零点有传感器反馈立即结束。 线性加减速     就是上面的梯形的例子,一般设置加速后,减速自动计算脉冲个数和减速的位置,如果要单独设置,可以设置WR3的D1位,这个时候,需要手动减速。 S曲线方式加减速     简单来说,加速度为两个梯形,上身的过程中,开始是加速度增加,增加到一定值后开始保持加速度,然后加速度减小到0,减速的时候过程正好相反。见下图:     这种情况下,显然有如下的参数要设置,范围,加速度率,加速度和减速度的最大值,也就是什么时候开始保持,然后减小,初始速度,驱动速度,输出脉冲数。     这里出现一种特殊情况,如果还没有过加速度增加的这个过程,就需要减速呢,这样,就会出现一个三角波,这个肯定是不行的,因为我们的速度曲线必须平滑,这样,当S曲线加速的脉冲比总脉冲的1/12大的话,将停止加速,开始减速,这个时候还是一个平滑的波形,如下图: 当然,手动立即减速时,为了速度曲线的平滑,也会是先加速度减小到0,然后再开始减速。     S加速曲线也有一些限制,包括,在定长运动中,速度不能修改,手动强制修改会导致工作不正常,插补运动的时候也不能工作,如果减速到初始速度之前,已经没有脉冲了,或者还有比较多的脉冲没有用完,可以修改脉冲数或者减速参数来避免。     另外还有一个完全S和一个部分S的曲线,完全S就是加速度加到一定值开始减小,不保持。这样,加速度增加和减小是一样的时间,可以根据这个来计算所需要的加速度,并进行设置。    脉宽和速度精度      占空比,本来应该是50%的占空比,但是在加速或者减速的时候,占空比会进行变化,只有在匀速区域占空比才不会变化。     但是驱动速度会麻烦一点,因为这个速度是基于SCLK的,也就是说,必须设置为整数倍,否则数个数的时候,会数不准确。实际上,就算不是整数倍,MCX314自己也会进行调整,并且精度控制在125ns,这样实际是不会影响到精度的,因为机械的惯性会吸收这样的误差。 位置管理 每个轴都有2个32位的往返计数器,两个寄存器和当前位置进行比较。 逻辑位置寄存器:既然是位置,就会有一个正向一个反向,并且有一个边界,这个正向和方向寄存器就是逻辑位置寄存器,边界则位比较寄存器。如果逻辑计数器大于比较寄存器,将会减速至停止。 插补     圆形插补只限于两轴,直线插补和位模式插补可以拓展到3轴,插补的时候,所有的计算都是基于AX1,所以必须在插补之前将AX1赋给具体的轴,并且设置好所有的其他参数。     直线插补种,如果遇到了硬件限位或者软件限位,则会立刻停止插补,限位传感器也会导致MCX314停止插补。而其他两种模式不会中断插补。 直线插补     长轴和短轴,我们将移动多一点的轴称为长轴,另外的叫做短轴。以2轴直线插补为例,只要设置好当前位置,则两个轴需要做怎么样的运动,以达到一个标准的平面斜线,我们就不需要管了,MCX314自己来分配。比如平面斜线,设置方法如下: WR5=0004H;将AX1设置位X轴,AX2设置位Y轴。 WR6=1200H;设置范围 WR7=007AH; WR0=0100H; ……     然后设置寄存器,分别设置初始速度,驱动速度,X轴终点,Y轴终点,写入2轴直线插补命令就OK了。 3轴插补跟2轴类似,走的是立体面的斜线,设置坐标位3个而已。如下图: 圆弧插补     圆形插补分为顺时针和逆时钟,并且长轴不是固定的,下面可以看出来,0,3,4,7时AX1位长轴,其他位置AX2为长轴。     圆形插补会有一个位置检查,因为圆形插补的时候,会有一个最小的有效位的误差,显然,短轴运动距离更小,落在短轴上比较合适,所以位置检查就会根据这个,在短轴位置停止。比如要进行一个顺时针的圆弧插补,则需要: 定义长短轴 范围 2轴的恒定线速范围 初始速度 驱动速度 圆心X,和Y 终点 顺时针,圆弧插补命令 这里可以看出来,一个是进行恒速,一个进行插补。 位模式插补     位模式插补的脉冲是有MCU来控制的,可以画出任何的图形,比如要画出下面的图形,输出的方块数据如下: 可以看出,XPP和XPM分别表示正向插补和反向插补,显然只有可能一个有数据,另外一个肯定为0,一旦开始插补,则从D0开始输出脉冲。 另外还有一个堆栈计数器SC,这个是用于数据写入到哪个轴的缓冲中的。这样,可以按照顺序来发数据,写入SC=3当然是无效的,因为只有三轴嘛,当SC从2变化到1则开始请求MCU发数据,不至于当SC=0的时候,数据还没有刷新。 这里显然还有一个速度的限制,也就是MCU刷新数据的速度。另外MCX314也有一个速度限制。