PMAC应用三-运动程序

PMAC应用三-运动程序

  • 编写一个运动程序
    • 运动程序格式
    • 运动模式
    • 位置模式
    • 移动参数
    • 运动程序例子
  • 线性移动参数说明
    • TA TS TM F Frax
    • Delay Dwell的区别
    • 同步变量赋值
  • 结后语

编写一个运动程序

       前面我们已经知道了怎么定义一个坐标系,现在我们可以开始先建立一个坐标系1,再编写一个简单的运动程序,先来看一个例子。

undefine all    // 清除所有坐标系定义
&1   //定义一个坐标系
#1->x  //将1号电机分配给X轴
#2->y  //将2号电机分配给Y轴
#3->z    //将3号电机分配给Z轴
open prog 1     //打开程序1
linear abs    //直线绝对值运动模式
ta 300 ts 100 td 300 f 30    //加速度时间为300ms S型曲线时间为100ms 减速度时间为300 进给速度为30
x 0 y 0 z 10    //X移动10个用户单元  Y不移动 Z移动10个用户单元
x 10 y 10 z 10  
x10 y0 z10
x0 y 10 z 0
close   //关闭运动程序

运动程序格式

       所有的动作程序都必须有一个打开陈述(open prog ****)和一个结尾陈述(close),程序名可按自己功能定义,e.g.open prog Montion_Proggram
PMAC应用三-运动程序_第1张图片

运动模式

       运动模式分为5种,分别为linear,pvt, circle,spline,rapid,官方解释如下:

  • linear
           线性插值混合运动。梯形速度与时间的关系,笛卡尔坐标系下的直线路径。

  • pvt
           以指定的端点位置和速度和指定的移动时间进行移动。对抛物线速度与时间的关系使用厄米-样条(一种插值算法)路径。

  • circle
           以指定的中心或半径和终点作圆周运动。

  • spline
           样条模式提供三次b样条(三次位置与时间的微分方程)将轴上的一系列点混合在一起。

  • rapid
           主要目的是极小时间点对点移动,给定速度,加速度,和冲击约束,快速是唯一可以从PLC程序命令的移动模式。

位置模式

  • abs
           使用绝对定位
  • inc
           使用增量式定位

移动参数

  • 对于线性和圆周运动模式
    加速时间(Ta)
    减速时间(Td)
    S型曲线时间(Ts)
    移动时间(Tm)
    以上参数单位均位毫秒(ms)
    如果是进给轴,移动时间是进给速率(F),单位是:用户单位/Coord[x].FeedTime。(可使用FRAX函数定义进给轴)

  • 对于样条模,每个样条移动包含3段持续时间,指定段时间可可改变方法
    spline{data0} :将3段时间设置为{data0}
    spline{data0}spline{data1} :将T0设置为{data0},T1和T2为{data1}
    spline{data0}spline{data1}spline{data2} :将T0设置为{data0},T1为{data1},T2为{data2}
    计算和执行移动段0,并暂时计算段1和段2,但尚未执行,下一个程序样条移动可以改变这些时间(它的T0是这个移动的T1;它的T1是这个移动的T2)

  • 对于PVT模式
    pvt {Time}
    {Axis}{Position}:{Velocity}

Inc // 增量移动
pvt 1000 // 1000 ms移动时间
X 20:1.5 //X点为20个用户单位,点速度为1.5进给单位

运动程序例子

上面讲解了几种运动模式及与运动模式相关的尝试,下面是一个线性运动的例子。

open prog Motion_Program
linear abs   //线性绝对值
ta 300 ts 100 td 300 f 30    加速度时间300 s型曲线时间100 减速时间300 矢量轴进给速30 
dwell 1 //等待1ms,dwell与普通的延时不同,dwell不会对后面的移动或逻辑进行计算或判断
 X 12.0666623184884703 Y -2.55370140075683594 Z 175.31781379350133
 X 12.0667004654611265 Y -2.55370140075683594 Z 342.974248567900133
dwell 0
call Timer(m89)  //一个延时子程序
X 12.0666733527865606 Y -2.55370140075683594 Z 278.997280101779666 A -0.432743549346923828
X 12.0666619086947637 Y 87.0913314819335938 Z 278.998695116046633 A -0.432743549346923828
call Timer(10)
X 12.0666623184884703 Y -2.55370140075683594 Z 175.31781379350133 A -0.43274688720703125
dwell 0
m86=0;
m87=0;
close

线性移动参数说明

TA TS TM F Frax

  • TA:混合移动(线性和圆形模式)之间的部分指令加速时间,以及这些移动从开始到停止的时间
  • TS:指定在线性和圆形模式混合移动中在s曲线加速度中花费的总加速时间的开始和结束时间
    PMAC应用三-运动程序_第2张图片
    如果Ta>=Ts
    总 加 速 时 间 = T a + T s 总加速时间=Ta+Ts =Ta+Ts
    如果Ta 总 加 速 时 间 = 2 × T s 总加速时间=2\times Ts =2×Ts
    如果Td>=Ts
    总 加 速 时 间 = T d + T s 总加速时间=Td+Ts =Td+Ts
    如果Td 总 加 速 时 间 = 2 × T s 总加速时间=2\times Ts =2×Ts
  • TM:线性模式和圆形模式在加速开始和减速开始之间所需要的时间。
    PMAC应用三-运动程序_第3张图片
    如果Tm>=总的加减速时间
    总 移 动 时 间 = T m + 总 的 加 减 速 时 间 总移动时间=Tm+总的加减速时间 =Tm+
    如果Tm<总的加减速时间
    总 移 动 时 间 = 2 × 总 的 加 减 速 时 间 总移动时间=2\times 总的加减速时间 =2×
  • F:为线性和圆形模式混合移动设置命令速度[用户单位/Coord[x].FeedTime]
    速度单位:(用户距离单位/用户时间单位)
    用户距离单位:(在轴中定义)
    用户时间单位:(在Coord[x].FeedTime参数定义)
如果用户距离单位时mm,Coord[x].FeedTime = 1000(默认值),F 10表示10mm/s
F {velocity} //指定进给轴的速度
F 10
Frax(Axes) // 矢量进给轴定义
Frax(x,y,z)

当使用F时,TM的值如下计算:
T M = 总 的 距 离 F − 总 的 加 减 时 间 TM=\frac{总的距离} {F} -总的加减时间 TM=F
当定义TM而不是F时,F最大值为:
F m a x = 匀 速 的 距 离 T M Fmax=\frac{匀速的距离}{TM} Fmax=TM

  • Frax:指定哪些坐标轴在进给量计算中
    当在一个移动中涉及多个轴时,例如XYZ笛卡尔坐标系中,需要将距离计算指定为用于移动时间计算的向量长度,:任何非进给轴移动与进给轴移动在同一条线上,将在相同的时间内完成.
    e.g.
    Frax(x,y,z):表示距离从X, Y, Z轴计算(默认值)
    矢 量 距 离 = X 2 + Y 2 + Z 2 矢量距离=\sqrt{X^2+Y^2+Z^2} =X2+Y2+Z2

Delay Dwell的区别

Delay

  • 如果延迟发生在混合移动之后,则该移动的TA减速时间发生在延迟时间内,而不是之前
  • 如果指定的延迟时间小于当前有效的加速时间(TA或2*TS),整个延迟将在加速期间发生,实际上根本不发生
  • :延迟的实际时间会随着时间基数的变化而变化(当前%值,来自任何源)
  • 在延迟期间,PMAC会预先计算即将到来的移动(以及它们之前的线路)

Dwell

  • 如果上一个是混合移动,在暂停时间开始之前会有一个TA时间减速到停止
  • 对变化的时间基不敏感,它总是在实时运行(Sys.ServoPeriod参数所定义)
  • 在Dwell期间,Power PMAC不会预先计算即将到来的移动(以及它们之前的程序行),它会等待,直到完成后开始进一步的计算

同步变量赋值

由于PMAC对与移动无关的数值计算进行了预先处理,因此通常的变量分配可能会在用户预期之前执行,若要强制在下一个移动开始时进行变量分配,请使用同步变量赋值,就像一个普通的变量赋值,但是在赋值表达式中使用==而不是=,可以用于global, csglobal或ptr变量(除了自分配的prt变量)

ClearGlue == 1   //当运动开始时,变量输出1
 X 12.0667004654611265 Y -2.55370140075683594 Z 342.974248567900133 A -0.43274688720703125
ClearGlue == 0
X 12.0666733527865606 Y -2.55370140075683594 Z 278.997280101779666 A -0.432743549346923828
ClearGlueLidOpen == 0
X 12.0666619086947637 Y 87.0913314819335938 Z 278.998695116046633 A -0.432743549346923828
ToolRotationEnable == 0   // //当运动结束时,变量输出0

结后语

这一节总结了运动程序的一些参数,下一节总结一下PLC脚本程序。

Power PMAC 5-Day Training (Plus Opt ECAT Training)

你可能感兴趣的:(PMAC应用三-运动程序)