前言
無論是DVP-15MC/AS524C還是DVP-50MC/AS516E采用的都是CanOpen里面的CiA402字典規(guī)范的運動模式。(EtherCAT下是COE)
我們來看一下里面所規(guī)范的Homing Mode(原點復(fù)歸模式)
我們可以清楚的看到關(guān)于回零速度的相關(guān)地址是 6099H 開始的一組數(shù)組
這是摘錄于臺達(dá)A3伺服驅(qū)動器使用說明文檔中的元践。
接下來看臺達(dá)PLC-Base運動控制器下的設(shè)置(下面以CanopenBuilder V6.05版本為例)
Motion配置
對應(yīng)的軸
原點回歸
通過上圖這個地方設(shè)置完即可直接采用MC-Home指令進(jìn)行回零的相關(guān)操作沿盅。相關(guān)的設(shè)置值可以通過全局變量中 Axis[x] 結(jié)構(gòu)體中讀取到。
Axis[x].HomeMode (回零模式)
Axis[x].HomeSpeed1 (尋找原點的速度)
Axis[x].HomeSpeed2 (離開原點的速度)
這種方式只有在通過下載新的程序配置中生效肄扎,不符合某下調(diào)試過程中需要變更墨林。
正文
根據(jù)結(jié)合上面的變量地址,通過里面DMC_WriteParameter_Motion這個指令犯祠,進(jìn)行回零速度的變更旭等。因為考慮到回零速度的變更其實不是經(jīng)常性的操作,所以寫成一個功能塊衡载,方便多次復(fù)用搔耕。
由此寫了一個 - 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;
結(jié)尾
通過在初始化程序中進(jìn)行一次的調(diào)用變更即可。
2020-01-02 發(fā)布本文