- {{item.name}}
Simotion 路径插补功能介绍
- 0
- 710
- 4962
对于Version 4.1以上的Simotion, 内部集成了路径插补(path interpolation)功能,三维以下包括三维的位置控制都可以通过插补的方式来确定路径。路径可以有直线,圆弧以及多项式曲线三种方式。如图[1]
图1 三种路径插补方式
Path interpolation同CAM的异同
事实上路径插补是基于CAM的基础的完成计算的。也可以说路径插补的工艺包包含了CAM的工艺包。
图2 路径插补的三个平面 图3 工艺包之间的关系
同CAM一样,路径插补的功能是为了生成位置轴的profile文件,但CAM利用轴与轴之间的函数关系式来完成插补,轴与轴之间并不确定平面或空间的概念,用到所有的数据都是标量。例如通过提供的几个(X,Y)点的坐标来完成两个轴位置轨迹之间的线性同步关系。再例如多项式y = 1 - 4x +4x^2 + 0.5 sin(1x + 0.5)确定从轴y与主轴位置x之间的跟随关系,如图[4]:
图4 用多项式生成的CAM曲线
而Path interpolation 功能更突出体现空间路径的概念,如三维空间的多项式插补,如图[2],并不需要确定轴之间的直接函数关系,而是借助矢量矩阵来设定三维变量同第四变量p的关系:P = A0 + A1•p + A2 •p2 + A3•p3 + A4•p4 + A5•p5, p∈ [0,1]
Path interpolation的激活
首先只有Version 4.1以上的simotion才可以激活其路径插补功能,另外PATH的工艺包需要被激活,到simotion 的“select Technology packages”中去选择。如图[6]所示。也只有激活PATH工艺包的前提下,才能在编程过程中找到与插补相关的指令[图5]。
图5 Sout 中的插补菜单
图6 激活插补工艺包
生成带有Path interpolation功能的轴
在创建轴的过程中要选择Path interpolation,如图[7]:需要注意的是PATH功能与 Synchronous operation并没有直接的联系,因此不必要激活同步功能。
图7 创建Path 轴
创建PATH OBJECT
在选择了带有Path功能的轴后,我们需要在PATH OBJECTS中创建一个新的object_2, 如下图[8]:
图8 创建Path object
然后再所创建的path_object_2中的interconnections中将path_object_2链接到相应的轴上去。
图 9 将Path 链接到轴上
另外,Path_object不但可以链接到轴上,也可以链接到事先生成的CAM,用CAM定义其速度关系。
三种插补方式
直线插补
在MCC语言编程中,只需要输入目标位置的坐标值,当调用此程序块时,三维上的三个轴都会到达目标位置的坐标值,而轨迹上的每一个点都在这条空间直线上。在库文件中提供的指令为 _movePathLiner()
圆弧插补
圆弧插补有三种方式:
1. 在二维平面内基于圆弧半径、目标位置以及方向的平面插补方式,当起动此程序块时,系统会根据当前位置,目标位置以及圆弧半径三个数据来计算圆弧轨迹,然后二维方向上的轴会从当前位置按圆弧轨迹运行到目标位置,编程时需要注意半径必需大于两点之间的距离的一半。另外在编程时还可以定义轨迹的大小圆弧方式,如下图所示。
图10 基于圆弧半径、目标位置以及方向的平面插补方式
注意这种方式不能用于三维,因为不能确定唯一轨迹。在ST编程中相应的指令为_movePathCircular(),圆弧类型选择 WITH_RADIUS_AND_ENDPOSITION。
编程举例:
retval := _movepathcircular(pathobject := pathIpo,pathplane := X_Y,circulartype := WITH_RADIUS_AND_ENDPOSITION,circledirection := POSITIVE,pathmode := RELATIVE,x := 10.0, y := 10.0,radius := SQRT(200.0)/2.0 );
2. 在两维平面内基于圆心坐标、旋转角度以及方向的平面插补方式,当调用此程序块时,系统会根据当前位置,圆心坐标以及旋转角度来计算运行轨迹以及目标位置,运行程序块时会根据事先设定的轨迹到达相应位置。这里不存在大小圆弧的概念,只有方向的设定。如下图所示:
图11 基于圆心坐标、旋转角度以及方向的平面插补方式
注意这种方式不能用于三维,因为不能确定唯一轨迹。在ST编程中相应的指令为 _movePathCircular(),圆弧类型选择BY_CENTER_AND_ARC。
图12 MCC编程举例
编程举例:
retval := _movepathcircular(pathobject := pathIpo,pathplane := X_Y,circulartype := BY_CENTER_AND_ARC,circledirection := POSITIVE,ijkmode := RELATIVE,i := -10.0, j := 0.0,arc := 90.0 );
3. 基于中间插补点以及目标位置的插补方式,与上面两种插补方式不同,这种插补方式有两维也有三维的,因为三点可以确定一个平面,所以轨迹时可以唯一确定的,运行轨迹如下图所示。如果选择两维平面需要注意中间插补点与目标位置都要保证在此平面上。否则运行程序时系统会报错。
图13基于中间插补点以及目标位置的插补方式
ST指令为 _movePathCircular(),圆弧类型选择BY_CENTER_AND_ARC。
编程举例:
retval := _movepathcircular(pathobject := pathIpo,pathplane := X_Y_Z,circulartype := OVER_POSITION_TO_ENDPOSITION,pathmode := RELATIVE,x:=10.0, y:=0.0, z:=0.0,ijkmode := RELATIVE,i:=5.0, j:=5.0, k:=5.0 );
图14 MCC编程举例
多项式插补
在高级应用中,圆弧插补可能不能满足设计需求,如椭圆形的插补等,这种情况只有借助多项式来完成计算,但需要注意,路径插补中用到的多项式变量均为矢量。
1. 根据五阶多项式的系数来完成插补,如下式:
其中,我们在编程时需要提供的数据有目标位置以及四个空间矢量坐标:A2 , A3, A4, A5,方程又可以写成如下形势:
这种方法的优点是插补比较精确,但缺点是多项式不好确定,即四个矢量的运算难度比较大。
图15 MCC编程举例
可供调用的库程序为_movePathPolynomial(),其多项式类型polynomialMode:=
SETTING_OF_COEFFICIENTS
2. 提供起始位置与目标位置的几何微分
图16 根据起始与最终点的微分进行插补
其中 为起始位置,即当前位置,为一阶微分,为起始位置的二阶微分;
为目标位置,为目标位置的一阶微分,为目标位置的二阶微分。
举例如下:
图16 插补举例
图17 MCC插补举例
可供调用的库程序为_movePathPolynomial(),其多项式类型polynomialMode:=SPECIFIC_START_DATA
3. 只需提供目标位置的几何微分,不需要提供起始位置,把当前位置作为起始位置,如果当前位置不能获得,则系统会报错50002。
举例 :将两段直线通过插补的方式连接起来,并形成路径。
// Determination of derivatives via function// _getLinearPathGeometricData// Derivative in start point of polynomial commandstartPoly := _getLinearPathGeometricData(pathObject := pathIpo,pathPlane := X_Y_Z,pathMode := ABSOLUTE,xEnd := 50.0, yEnd := 0.0, zEnd := 0.0,xStart := 0.0, yStart := 0.0, zStart := 0.0,pathPointType := END_POINT );// Determine derivative in end point of polynomial commandendPoly := _getLinearPathGeometricData(pathObject := pathIpo,pathPlane := X_Y_Z,pathMode := ABSOLUTE,xEnd := 150.0, yEnd := 150.0, zEnd := 0.0,xStart := 150.0, yStart := 100.0, zStart := 0.0,pathPointType := START_POINT);// Programming of polynomial command// Use of derivatives in the commandretval := _movePathPolynomial(pathObject := pathIpo,pathPlane := X_Y_Z,pathMode := ABSOLUTE,polynomialMode := ATTACHED_STEADILY,x:=150.0, y:=100.0, z:=0.0,vector1x := startPoly.firstGeometricDerivative.x,vector1y := startPoly.firstGeometricDerivative.y,vector1z := startPoly.firstGeometricDerivative.z,vector2x := startPoly.secondGeometricDerivative.x,vector2y := startPoly.secondGeometricDerivative.y,vector2z := startPoly.secondGeometricDerivative.z,vector3x := endPoly.firstGeometricDerivative.x,vector3y := endPoly.firstGeometricDerivative.y,vector3z := endPoly.firstGeometricDerivative.z,vector4x := endPoly.secondGeometricDerivative.x,vector4y := endPoly.secondGeometricDerivative.y,vector4z := endPoly.secondGeometricDerivative.z,blendingMode := ACTIVE_WITH_DYNAMIC_ADAPTION,mergeMode := SEQUENTIAL,nextCommand := WHEN_BUFFER_READY );
停止与继续PATH
可用通过_stopPath()编程指令来停止当前的PATH, 但并不清楚,还可以指令_continuePath()来继续PATH。
Path 的动态特性
我们在插入PATH OBJECT可以预设其动态特性的, 我们可以选择速度文件如CAM作为其速度文件,我们还可以通过指令的方式来修改其动态特性,如Jerk, smooth等等。另外我们还可以对其动态特性进行限制。
与PATH相关的命令如下:
关键词
路径,插补
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}