02.CamProfile多项式

<< 点击显示目录 >>

主页  轴控开发使用手册 > 轴控应用 > 19.CamProfileAutomat >

02.CamProfile多项式

 

[应用][CAM PROFILE多项式]

[穆珊珊][20151015][V1.00]

1.基本信息

编写人

穆珊珊

审核人

(检查,测试,注释)

应用归属

运动控制

软件信息

(版本,库)

硬件信息

(硬件型号)

其他

 

版本信息

修改内容

修改人

V1.00

创建

穆珊珊

 

2.应用简介

2.1 CAM曲线多项式介绍

使用cam曲线时,通常是直接在cam编辑器中编辑cam曲线,这种方式的优点是简单而且直观,但也存在缺点,就是cam曲线不能动态修改。除了直接编辑cam曲线外,也可以通过给出cam曲线多项式的方式,动态生成cam曲线。

clip0286

 

 

Cam曲线是由1~64个多项式曲线组成,多项式形式如下所示:

y(x) = a + b*x + c*x2 + d*x3 + e*x4 + f*x5 + g*x6

 

多项式的最高阶次是6,可以通过把系数设置为0来降低阶次。各个多项式可以设置完全不同的曲线段长度。

 

每个多项式的起点都必须为零点,所以在各个段内,要把整个主轴位置平移,整个cam曲线的各个曲线的多项式就变成了如下形式:

 

y1(x) = a1 + b1*(x – x0) + c1*(x - x0)2 + d1*(x – x0)3 + e1*(x – x0)4 + f1*(x – x0)5 + g1*(x – x0)6

 

y2(x) = a2 + b2*(x – x1) + c2*(x – x1)2 + d2*(x – x1)3 + e2*(x – x1)4 + f2*(x – x1)5 + g2*(x – x1)6

 

y3(x) = a3 + b3*(x – x2) + c3*(x – x2)2 + d3*(x – x2)3 + e3*(x – x2)4 + f3*(x – x2)5 + g3*(x – x2)6

 

yn(x) = an + bn*(x – xn-1) + cn*(x – xn-1)2 + dn*(x – xn-1)3 + en*(x – xn-1)4 + fn*(x – xn-1)5 + gn*(x – xn-1)6

 

其中,第一段曲线的多项式的平移距离x0必须为0,即整个cam曲线的起始点必须为0。最后一段曲线的结束位置xn必须对应于整个cam曲线的主轴周期。n取值范围为1~64。

 

Cam曲线多项式的主要参数就是各阶次的系数:a,b,c,d,e,f,g。这些系数可以根据曲线上给定的固定点计算得到。除起始点(0,0)外,最多可以给定64个点,每两点插补得到一条cam曲线段。

最简单的插补方式是直线插补,即只有a、b系数,其它系数均为零。但直线段连接处有速度突变。也可以在两点之间另外取一点,做二次曲线插补,即计算a、b、c三个参数。或者通过提供其它参数如起点处速度、加速度等来计算系数。

 

2.2 多项式结构体

由PLC中生成的,用于保存cam多项式数的数据模块中保存的数据结构是既定的,格式如下所示:

clip0287

名称

类型

描述

MasterPeriod

DINT

主轴周期

SlavePeriod

DINT

从轴周期

PolyNum

UDINT

多项式个数(1~64)

PolyData

Polynomial_typ[0..63]

多项式参数结构体

 

其中,polynomial_typ的定义如下:

clip0288

 

名称

类型

描述

a,b,c,d,e,f,g

REAL

多项式系数,n=1,2,3…64

x

REAL

该段曲线的终点主轴位置

res

UDINT

=0,预留

 

因为PLC根据以上数据直接生成数据模块并下载到ACOPOS,所以如果格式不对,就会报错。需要注意以下事项:

1 多项式个数必须在1~64之间。

2 第一个多项式的a1必须为0。因为偏移量和起点均为0。

3 无效的系数浮点数范围。

4 主轴位置xi不能是负数或小于上一段曲线的终点主轴位置xi-1

5 最后一段曲线的主轴位置xn和主轴周期MasterPeriod必须相等.

6 最后一段曲线的从轴位置yn和从轴周期SlavePeriod必须相等.

7 主轴周期MasterPeriod不能太小或为负数。

8 数据模块内的字节数与1~64个多项式该有的长度不符。

9 res的值不是零

 

由于在数据结构中,主轴周期和从轴周期都是整数,而又根据上述要求的第5、6条,所以最后一段曲线的主轴位置xn和从轴位置yn必须是整数。

 

2.3 在PLC中生成Cam多项式数据模块

使用PLCopen和ncaction都可以将上述数据在PLC中保存为数据模块模式。

使用PLCopen

可以使用库功能块MC_BR_SaveCamProfileObj。

另外,PLCopen库中还有通过点计算cam曲线多项式系数的功能块:MC_BR_CalcCamFromPoints。

 

使用ncaction。该方式中有两个函数可以选择:

函数ncda_cr

clip0289

 

使用例子如下:

clip0290

 

使用nc_action函数:ncDAT_MOD+ncSERVICE

clip0291

 

两者都能在内存中生成数据模块,区别在于前者函数调用后会立即生成数据模块,如果任务周期短,并且没有tolerance时间,会使循环时间超时。而后者并不会。

 

不管是PLCopen方式还是ncaction方式,创建的数据模块都是在RAM中,如果想要长久保存,可以使用DatObjMove功能块存放到USERROM中。

 

2.4 下载到ACOPOS中

使用PLCopen库的MC_BR_DownloadCamProfileObj或者ncaction的ncDATBLOCK 下载到ACOPOS中,就可以使用了。