编写一个运动程序

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

运动程序格式

       所有的动作程序都必须有一个打开陈述(open prog ****)和一个结尾陈述(close),程序名可按自己功能定义,e.g.open prog Montion_Proggram

在这里插入图片描述

运动模式

       运动模式分为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}

运动程序例子

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

线性移动参数说明

TA TS TM F Frax

TA:混合移动(线性和圆形模式)之间的部分指令加速时间,以及这些移动从开始到停止的时间

TS:指定在线性和圆形模式混合移动中在s曲线加速度中花费的总加速时间的开始和结束时间
在这里插入图片描述

如果Ta>=Ts
总 加 速 时 间 = T a + T s 总加速时间=Ta+Ts
总加速时间=Ta+Ts

如果Ta<Ts
总 加 速 时 间 = 2 × T s 总加速时间=2\times Ts
总加速时间=2×Ts

如果Td>=Ts
总 加 速 时 间 = T d + T s 总加速时间=Td+Ts
总加速时间=Td+Ts

如果Td<Ts
总 加 速 时 间 = 2 × T s 总加速时间=2\times Ts
总加速时间=2×Ts
TM:线性模式和圆形模式在加速开始和减速开始之间所需要的时间。

在这里插入图片描述

如果Tm>=总的加减速时间
总 移 动 时 间 = T m + 总 的 加 减 速 时 间 总移动时间=Tm+总的加减速时间
总移动时间=Tm+总的加减速时间

如果Tm<总的加减速时间
总 移 动 时 间 = 2 × 总 的 加 减 速 时 间 总移动时间=2\times 总的加减速时间
总移动时间=2×总的加减速时间
F:为线性和圆形模式混合移动设置命令速度[用户单位/Coord[x].FeedTime]
速度单位:(用户距离单位/用户时间单位)
用户距离单位:(在轴中定义)
用户时间单位:(在Coord[x].FeedTime参数定义)

Delay Dwell的区别

Delay

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

如果上一个是混合移动,在暂停时间开始之前会有一个TA时间减速到停止

对变化的时间基不敏感,它总是在实时运行(Sys.ServoPeriod参数所定义)

在Dwell期间,Power PMAC不会预先计算即将到来的移动(以及它们之前的程序行),它会等待,直到完成后开始进一步的计算

同步变量赋值

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

结后语

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

————————————————
版权声明:本文为CSDN博主「一只小毛多」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41415238/article/details/108896073