注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控博客苑 -- 运动控制系统 -- 如何正确计算及设置DMC1000插补的矢量速度

中国工控网搜索:

钟天玉先生

     学历:大学本科
     职称:工程师
     年龄:41岁
       新闻信息(7/2)
       工作图片(0)
       技术论文(2/7)
       交流论坛(19/20)
       留言信箱(4)
       浏览人次:16379
       给我发消息
 我的新闻推荐 更多..
发表人:zhong2010 发表时间:2010/5/9 21:08:00

 

发表新论题

 本栏论题: 如何正确计算及设置DMC1000插补的矢量速度  [9572]

    如何正确计算及设置DMC1000插补的矢量速度
   
    一、问题现象
    用户通过以下编程:
   
    # define XCH 0
    # define YCH 1
   
    double fUnit[]={ 3200/5.0, 3200/5.0}; //脉冲当量,每毫米脉冲数
    //每转脉冲数为3200,每转毫米数为5.0
   
    short axisArray[]={ XCH, YCH };//选择XY两轴
    long distArray[]={ x * fUnit[XCH], y*fUnit[YCH] }; //x和y为毫米单位的绝对位置
   
    d1000_start_ta_line( 2, axisArray, distArray, 10, 10, 0.0);//匀速插补
   
   
    通过实际运动发现以下情况:
    No.1 当X=100,Y=0,即水平方向,所花时间为10.002秒
    No.2 当X=0,Y=100,即垂直方向,所花时间为10.003秒
    No.3 当X=100,Y=100,即45度斜线,所花时间为10.005秒
   
    即三种情况下的运行时间几乎相当(当中的微小时间差可能由系统的多任务特性引起的),而实质上当走45度斜线时,其距离等于100*sqrt(2) = 100*1.414=141.4毫米,由此可见距离长了许多,故其速度也快了许多。此种情况在速度慢的情况下表现不明显,但是在激光切割时,速度不稳定,同样的能量切割出来的效果就不一致,质量也就不能过关。
   
    二、原因分析
    DMC1000的开发较早,对于直线插补的算法是采用三角函数进行合成,故以上设定的10,10,0.0的速度是对距离长的运动轴有效(即长轴),不是一个矢量的速度,由此可见,同样的速度设定会因为直线的斜率不同而快慢不一致。
   
    三、解决方法
    解决此问题也很简单,每次需要重新计算长轴的速度,以用于作为插补速度,下面给出原代码,以对上面的代码进行补充:
   
    double fP1 = distArray[XCH] - (double)d1000_get_command_pos(XCH);
    double fP2 = distArray[YCH] - (double)d1000_get_command_pos(YCH);
    double fLen= sqrt( fP1*fP1 + fP2*fP2 );
    if( fLen < 1 )//0脉个不要
    return nAxises;
    long nStart,nSpeed; //计算出新的速度
    if( fabs(fP1)>fabs(fP2) )
    {
    double kx = fP1 / fLen;
    double AP = kx * fP1;
    kx = AP / fP1;
    nStart = long(fUnit[XCH] * speed.start * kx );
    nSpeed = long(fUnit[XCH] * speed.speed * kx );
    }
    else{
    double ky = fP2 / fLen;
    double AP = ky * fP2;
    ky = AP/ fP2;
    nStart = long(fUnit[YCH]*ky);
    nSpeed = long(fUnit[YCH]*ky);
    }
   
    nStart和nSpeed是计算出来的最后设定的速度。
    关于speed是一个速度结构,大致如下(单位:毫米/秒)
   
    typedef struct tag_SPEED
    {
    double start;
    double speed;
    double accel;
    };
   
   
    四、附带声明
    在DMC1000以后的系列控制卡,如:DMC2000,DMC3000,DMC5000,对矢量速度的设定都已进行充分的考虑,不再需要用户添加额外的代码进行计算了。
   
   

 

如果要回复本栏论题,请首先登陆网站

·如果你已经是中国工控网www.chinakong.com成员,请直接登录 。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码
 
     相关博客新闻:
     相关技术论文:

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳