前言
无论是DVP-15MC/AS524C还是DVP-50MC/AS516E采用的都是CanOpen里面的CiA402字典规范的运动模式。(EtherCAT下是COE)
我们来看一下里面所规范的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 发布本文