台达PLC-Base运动控制器-变更回零速度功能块

前言

无论是DVP-15MC/AS524C还是DVP-50MC/AS516E采用的都是CanOpen里面的CiA402字典规范的运动模式。(EtherCAT下是COE)
我们来看一下里面所规范的Homing Mode(原点复归模式)

Homing Mode(原点复归模式)

相关对象列表

我们可以清楚的看到关于回零速度的相关地址是 6099H 开始的一组数组
操作步骤

这是摘录于台达A3伺服驱动器使用说明文档中的。

接下来看台达PLC-Base运动控制器下的设置(下面以CanopenBuilder V6.05版本为例)

Motion配置

对应的轴

原点回归

回零模式与回零速度设置

通过上图这个地方设置完即可直接采用MC-Home指令进行回零的相关操作。相关的设置值可以通过全局变量中 Axis[x] 结构体中读取到。

Axis[x].HomeMode (回零模式)
Axis[x].HomeSpeed1 (寻找原点的速度)
Axis[x].HomeSpeed2 (离开原点的速度)

这种方式只有在通过下载新的程序配置中生效,不符合某下调试过程中需要变更。

正文

根据结合上面的变量地址,通过里面DMC_WriteParameter_Motion这个指令,进行回零速度的变更。因为考虑到回零速度的变更其实不是经常性的操作,所以写成一个功能块,方便多次复用。
由此写了一个 - uFB_AxisHomeSpeedChange 功能块

功能块变量声明

变量声明

功能块程序

DMC_WritePar[1](EN:= TRUE,Axis:= UsiAxisNumber,Index:= 16#6099,SubIndex:= 16#1,DataType:= 4,Data:= UdiHomeFirstSpeed);
DMC_WritePar[2](EN:= TRUE,Axis:= UsiAxisNumber,Index:= 16#6099,SubIndex:= 16#2,DataType:= 4,Data:= UdiHomeSecondSpeed);
DMC_ReadPar[1](EN:= TRUE,Axis:= UsiAxisNumber,Index:= 16#6099,SubIndex:= 16#1);
DMC_ReadPar[2](EN:= TRUE,Axis:= UsiAxisNumber,Index:= 16#6099,SubIndex:= 16#2);

IF EDGEPOS(bExecute) THEN
    UiStep := 1 ;
END_IF;

CASE UiStep OF
    1:
        bChangeHomeSpeedDone    := FALSE ;
        DMC_WritePar[1].Execute := TRUE ;
        UiStep                   := 2 ;
    2:
        IF DMC_WritePar[1].Done THEN
            DMC_WritePar[1].Execute := FALSE ;
            DMC_WritePar[2].Execute := TRUE ;
            UiStep                   := 3 ;
        END_IF;
    3:
        IF DMC_WritePar[2].Done THEN
            DMC_WritePar[2].Execute := FALSE ;

            DMC_ReadPar[1].Execute := TRUE ;
            UiStep                   := 4 ;
        END_IF;
    4:
        IF DMC_ReadPar[1].Done THEN
            IF ( DMC_ReadPar[1].Data = UdiHomeFirstSpeed ) THEN
                DMC_ReadPar[1].Execute := FALSE ;
                DMC_ReadPar[2].Execute := TRUE ;
                UiStep                 := 5;
            ELSE
                UiStep                 := 1;
            END_IF;
        END_IF;
    5:
        IF DMC_ReadPar[2].Done THEN
            IF ( DMC_ReadPar[2].Data = UdiHomeSecondSpeed ) THEN
                DMC_ReadPar[2].Execute := FALSE ;
                bChangeHomeSpeedDone   := TRUE ;
                bExecute               := FALSE ;
                UiStep                 := 0;
            ELSE
                UiStep                 := 1;
            END_IF;
        END_IF;
ELSE
    DMC_WritePar[1].Execute := FALSE ;
    DMC_WritePar[2].Execute := FALSE ;  
    DMC_ReadPar[1].Execute  := FALSE ;
    DMC_ReadPar[2].Execute  := FALSE ;
    bExecute                := FALSE ;
END_CASE;

结尾

通过在初始化程序中进行一次的调用变更即可。

2020-01-02 发布本文

你可能感兴趣的:(台达PLC-Base运动控制器-变更回零速度功能块)