<< 点击显示目录 >> 主页 轴控开发使用手册 > 轴控应用 > 19.CamProfileAutomat > 02.CamProfile多项式 |
[应用][CAM PROFILE多项式]
[穆珊珊][20151015][V1.00]
1.基本信息
编写人 |
穆珊珊 |
审核人 |
(检查,测试,注释) |
|
应用归属 |
运动控制 |
|||
软件信息 |
(版本,库) |
硬件信息 |
(硬件型号) |
|
其他 |
|
|||
版本信息 |
修改内容 |
修改人 |
||
V1.00 |
创建 |
穆珊珊 |
2.应用简介
2.1 CAM曲线多项式介绍
使用cam曲线时,通常是直接在cam编辑器中编辑cam曲线,这种方式的优点是简单而且直观,但也存在缺点,就是cam曲线不能动态修改。除了直接编辑cam曲线外,也可以通过给出cam曲线多项式的方式,动态生成cam曲线。
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多项式数的数据模块中保存的数据结构是既定的,格式如下所示:
名称 |
类型 |
描述 |
MasterPeriod |
DINT |
主轴周期 |
SlavePeriod |
DINT |
从轴周期 |
PolyNum |
UDINT |
多项式个数(1~64) |
PolyData |
Polynomial_typ[0..63] |
多项式参数结构体 |
其中,polynomial_typ的定义如下:
名称 |
类型 |
描述 |
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
使用例子如下:
•使用nc_action函数:ncDAT_MOD+ncSERVICE
两者都能在内存中生成数据模块,区别在于前者函数调用后会立即生成数据模块,如果任务周期短,并且没有tolerance时间,会使循环时间超时。而后者并不会。
不管是PLCopen方式还是ncaction方式,创建的数据模块都是在RAM中,如果想要长久保存,可以使用DatObjMove功能块存放到USERROM中。
2.4 下载到ACOPOS中
使用PLCopen库的MC_BR_DownloadCamProfileObj或者ncaction的ncDATBLOCK 下载到ACOPOS中,就可以使用了。