浪子海风
浪子海风
级别: 略有小成
精华主题: 0
发帖数量: 384 个
工控威望: 471 点
下载积分: 1343 分
在线时间: 130(小时)
注册时间: 2020-04-28
最后登录: 2024-12-19
查看浪子海风的 主题 / 回贴
楼主  发表于: 2022-08-05 15:38
看到手册没有支持实现两轴联动,一般要实现联动要怎么弄?

我是这么想的,目前未上机证实:
概据:S=VT     距离=速度*时间     联动就是在不同的速度来实现在相同时间内到达不同的距离/
设:X轴    S1距离=100       求:V1速度=?              S1=V1*T1    
     Y轴    S2距离=50              V2速度=10            S2=V2*T2
即:(S1/S2)*V2=V1  
      100/50*10=20


M1--------------------davi  K100   K20   K150   Y0  Y2
                          I ---davi  K50     K10   K150    Y1 Y3
sm1000-----------------------------------------inc   D0
sm1020--------I
D0=K2-------------------------------------------rst m1


相互讨论,相互学习.
各位大师指点一下.
优伤的菊花
苏州工人
级别: 工控侠客
精华主题: 0
发帖数量: 252 个
工控威望: 2175 点
下载积分: 13130 分
在线时间: 201(小时)
注册时间: 2021-07-23
最后登录: 2024-12-19
查看苏州工人的 主题 / 回贴
1楼  发表于: 2022-08-12 12:04
引用
引用楼主浪子海风于2022-08-05 15:38发表的 信捷XD5,如何实现两轴联动? :
看到手册没有支持实现两轴联动,一般要实现联动要怎么弄?

我是这么想的,目前未上机证实:
概据:S=VT     距离=速度*时间     联动就是在不同的速度来实现在相同时间内到达不同的距离/
设:X轴    S1距离=100       求:V1速度=?              S1=V1*T1    
.......


对轨迹要求不高,只是需要两轴同时到达的,可以写个C语言模块换算下轴速度就可以
有做个差不多的,效果还可以

   float x, y, l, lx, ly, ll, ss, sx, sy, mx, my;
    x = DW[390];   //D390 X当前位置
    y = DW[490];   //D490 Y当前位置
    mx = DW[220];   //D220 X目标位置
    my = DW[222];   //D222 Y目标位置
    ss = DW[230];   //D230 设定速度

    if ( x >= mx )
    {
        lx = x - mx;
    }
    else
    {
        lx = mx - x;
    }

    if ( y >= my )
    {
        ly = y - my;
    }
    else
    {
        ly = my - y;
    }
    if ( lx >= ly )
    {
        sx = ss;
        sy = ss / lx * ly;
    }
    else
    {
        sy = ss;
        sx = ss / ly * lx;
    }
    if ( lx == ly | lx == 0 | ly == 0 )
    {
        sx = ss;
        sy = ss;
    }
if(sx<5)
{
    sx = 5;
}
if(sy<5)
{
    sy = 5;
}
    DW[200] = mx;   //D200 X轴目标位置
    DW[202] = my;   //D202 Y轴目标位置
    DW[210] = sx;   //D210 X轴速度
    DW[212] = sy;   //D212 Y轴速度


设定了最小速度为5,速度为0时有问题