PMAC应用六-前瞻(Look-Ahead)
前瞻
简介
Look-Ahead 技术又称为速度前瞻控制技术,目前实现此技术有两个基本思路:
(1)进行路径段之间速度衔接;
(2)进行大量微小线段参数曲线拟合。Look-Ahead 技术考虑的主要因素是机床本身动力学特性限制和加工精度限制。
加减速控制
加减速控制是指加工过程中对进给速度的加速和减速处理,这样避免机床突然启动和停止,减小机床运动过程的震动。加减速控制按照加减速曲线模型分为:T型加减速,S型加减速,指数型加减速和其它曲线加减速方式;按照加减速规划执行顺序分为:插补后加减速和插补前加减速;按照加减速规划完成的NC路径段数目分为:单段NC路径的加减速规划和连续轨迹加减速轨划。
加减速曲线模型对生成轨迹有重要影响,不同加减速曲线对轨迹控制的效果有很大区别。T型加减速曲线是最常用的加减速方式,在加速和减速阶段,加速度保持恒定值,这种方式计算简单、效率较高,但在加减速开始和结束点的加速度发生阶跃突变,导致轨迹指令不太顺滑,将在伺服系统引起较大的加加速度需求。指数型和S型加减速曲线在保证速度变化连续的同时,还保证了加速度平滑变化,在高精度CNC系统中常用这种加减速方式。这种速度曲线虽然计算较为复杂,但随着CNC的执行处理器的性能提高,这种缺点逐渐变得微小。T型加减速和S型加减速规划出来的轨迹指令作用于性能相同的伺服系统上,跟踪误差的区别在加速和减速阶段尤为明显。
S 型和T 型曲线的分析
T型速度曲线包括三个阶段:加速段Ta,匀速段Tm,减速段Td,在加减速期间,加速度A保持不变,加加速度J 在加减速起始和结束点处表现为无穷大。S型速度曲线包括五个阶段:两个加速阶段,时间均为Ta,匀速段Tm,两个减速段,时间均为Td,加减速过程中,以最大加加速度Jmax为限制,加速度A不断变化但不能超过机床允许的最大加速度Amax,速度曲线表现为缓慢变化,是一种光滑的速度曲线。
从伺服系统的指令跟踪性能考虑,T型速度规划算法考虑了速度和加速度限制而能在满足动态性能的条件下达到较好快速性,但该算法的终止点定位精度较差,并且在加减速过程中速度跟踪不够平滑;S型速度计算能够提高运动过程中的位置精度和终止点精度,并且改善了运动过程中的速度跟踪性能,运行更加平稳。上面说道得到,T 型加减速过程简单,速度规划容易实现,但有很大的加加速度,加减速过程不平稳;S 型加减速阶段多,计算较复杂,但加加速度受到限制,加减速过程平滑。
PMAC速度前瞻
PMAC算法流程
速度前瞻算法大概流程(设备使用中个的理解)
在PMAC使用前瞻功能
功能中的几个限制参数
- 位置(软件超行程)限制(Motor[x].MaxPos, Motor[x].MinPos)
- 速度限制(Motor[x].MaxSpeed)
- 加速度限制(Motor[x].InvAmax)
- 加加速度限制(Motor[x].InvJMax)
前瞻算法在运行时当检测到该运动在限制内,在不改变位置轨迹的情况下减慢问题点的运动,该算法对导致问题点的运动进行重新计算,使所有运动保持在一定范围内,可以自动减速进入急转弯,并在急转弯后加速。
程序编写
2.Motor[x].MaxPos和Motor[x].MinPos,设置正负软限位。
3.Motor[x].MaxSpeed,设置电机的最大速度。
4.Motor[x].InvAMax,最大加速的的相反数,单位
m
s
2
/
m
m
ms^2/mm
ms2/mm(当前设定的电机单位是mm)。
5.Coord[x].SegMoveTime,分割时间,单位ms,值越低,精度越高,基本上在2~20ms之间。
6.Coord[x].MaxFeedrate,非矢量轴的速度,相当于矢量轴的F。
7.选择停止时间最长的电机,计算Coord[x].LHDistance前瞻的长度
8.计算
N
T
N^T
NT,这是前瞻缓冲区大小。
9.删除前瞻缓冲区大小。
10.定义前瞻缓冲区的大小。
Motor[1].MaxPos=1000,1000
Motor[1].MinPos=-1000,-1000
Motor[1].MaxSpeed=0.2,0。2
Delete All Lookahead
Motor[1].InvAmax=100,100 //开启lookahead后PPMAC会检查加速度
Coord[1].SegMoveTime = 2 // Enable segmentation, with 5 ms segmentation time
Coord[1].AltFeedRate=50 //制定非矢量轴的速度,相当于矢量轴的F
Coord[1].LHDistance = 1024 // Lookahead length
Delete Lookahead
Define Lookahead 1024 // Buffer size based on Coord[1].LHDistance or 1024 at least
Coord[1].FRAxes=$1C0 //设置矢量轴xyz,a为非矢量轴
前瞻中涉及的参数计算
Coord[x].LHDistance:是段数的函数,它告诉算法程序中有多少段要查找。它需要比所需的段数稍微大一些。公式是:
S
t
o
p
T
i
m
e
(
m
s
)
=
M
o
t
o
r
[
x
]
.
M
a
x
S
p
e
e
d
×
M
o
t
o
r
[
x
]
.
I
n
v
A
M
a
x
StopTime(ms)=Motor[x].MaxSpeed\times Motor[x].InvAMax
StopTime(ms)=Motor[x].MaxSpeed×Motor[x].InvAMax
S
e
g
m
e
n
t
s
N
e
e
d
e
d
=
S
t
o
p
T
i
m
e
(
m
s
)
2
×
C
o
o
r
d
[
x
]
.
S
e
g
M
o
v
e
T
i
m
e
[
m
s
/
s
e
g
]
SegmentsNeeded=\frac{StopTime(ms)}{2\times Coord[x].SegMoveTime[ms/seg]} \quad
SegmentsNeeded=2×Coord[x].SegMoveTime[ms/seg]StopTime(ms)
C
o
o
r
d
[
x
]
.
L
H
D
i
s
t
a
n
c
e
=
4
3
×
S
e
g
m
e
n
t
s
N
e
e
d
e
d
=
2
×
M
o
t
o
r
[
x
]
.
M
a
x
S
p
e
e
d
×
M
o
t
o
r
[
x
]
.
I
n
v
A
M
a
x
3
×
C
o
o
r
d
[
x
]
.
S
e
g
M
o
v
e
T
i
m
e
Coord[x].LHDistance=\frac{4}{3} \quad\times SegmentsNeeded=\frac{2\times Motor[x].MaxSpeed\times Motor[x].InvAMax }{3\times Coord[x].SegMoveTime } \quad
Coord[x].LHDistance=34×SegmentsNeeded=3×Coord[x].SegMoveTime2×Motor[x].MaxSpeed×Motor[x].InvAMax
N
T
N^T
NT
一个超大的前瞻缓冲区提供了轨迹的“历史”,缓冲区中的位置信息是可逆的(不像实际的运动程序)
如无反方向
N
T
=
C
o
o
r
d
[
x
]
.
L
H
D
i
s
t
a
n
c
e
N^T=Coord[x].LHDistance
NT=Coord[x].LHDistance
有反向
N
R
=
R
e
v
e
r
s
e
D
i
s
t
a
n
c
e
(
m
o
t
o
r
u
n
i
t
s
)
v
m
a
x
×
C
o
o
r
d
[
x
]
.
S
e
g
M
o
v
e
T
i
m
e
N^R=\frac{Reverse Distance (motor units)}{v_{max}\times Coord[x].SegMoveTime} \quad
NR=vmax×Coord[x].SegMoveTimeReverseDistance(motorunits)
N
T
=
C
o
o
r
d
[
x
]
.
L
H
D
i
s
t
a
n
c
e
+
N
R
N^T=Coord[x].LHDistance + N^R
NT=Coord[x].LHDistance+NR
结后语
PMAC中的前瞻功能使用起来很简单,参数不多,计算也很少,想要符合自己预期的进度和稳定性,参数还是要反复调整的。
哈尔滨工业大学李建华《基于Look-Ahead技术的CNC轨迹规划的研究》
Power PMAC 5-Day Training (Plus Opt ECAT Training)