高川運(yùn)動控制卡功能系列----電子凸輪
2021-12-13

電子凸輪


目錄

概述.................................................................................................................................. 1

1. 基本介紹................................................................................................................... 1

1.1 基本原理......................................................................................................... 2

1.2 基本特點(diǎn)......................................................................................................... 2

2. 應(yīng)用講解................................................................................................................... 3

2.1 硬件部分......................................................................................................... 3

2.2 軟件部分......................................................................................................... 3

1 工具介紹................................................................................................ 3

2 指令介紹................................................................................................ 3

3 應(yīng)用案例................................................................................................ 7

3. 注意事項................................................................................................................... 9

 


概述

利用構(gòu)造的凸輪曲線來模擬機(jī)械凸輪,以達(dá)到機(jī)械凸輪系統(tǒng)相同凸輪軸與主軸之間相對運(yùn)動的軟件系統(tǒng)。

1. 基本介紹

1.1 基本原理

電子凸輪屬于多軸同步運(yùn)動(速度位置同步),這種運(yùn)動(也叫Follow運(yùn)動)是基于主軸和一個或者多個從軸系統(tǒng)。主軸可以是物理軸,也可以是虛擬軸(一種算法, 沒有實際的輸出);

電子凸輪是直接將軌跡點(diǎn)輸入到驅(qū)動器內(nèi),通過設(shè)定的計算方式進(jìn)行伺服控制,達(dá)到和機(jī)械凸輪相同的加工目的,實現(xiàn)一種周期性的往復(fù)運(yùn)動;

啟動位置和終點(diǎn)位置是否一致可以將電子凸輪曲線分為閉式曲線和開式曲線,如圖1.1.1;

圖1.1.1 電子凸輪運(yùn)動曲線

1.2 基本特點(diǎn)

電子凸輪靈活,軌跡易于改動,方便根據(jù)需求加工軌跡,不需要繁瑣更改機(jī)械凸輪;

當(dāng)要改變凸輪的運(yùn)動軌跡時,加工機(jī)械凸輪的成本較高,難度較大,而電子凸輪只需簡單的設(shè)定一些軌跡參數(shù)即可,不需要產(chǎn)生新的成本;

機(jī)械凸輪會磨損,通常是機(jī)床噪音的最大來源,而用電子凸輪可減輕運(yùn)行阻力及噪音,減輕機(jī)身重量,提高效率;

每組 Follow 運(yùn)動關(guān)聯(lián)的兩個軸,被跟隨軸稱為主軸,跟隨軸稱為從軸。多個從軸可以跟隨同一個主軸,從軸又可以作為其他軸的主軸

從軸可以跟隨主軸的規(guī)劃位置或者實際位置,從軸也可以直接跟隨外部的編碼器輸入從軸可以指跟隨主軸的某個運(yùn)動方向(正向或者負(fù)向)或者雙向跟隨;

與從軸之間的同步,通過用戶設(shè)定的多個數(shù)據(jù)段自動規(guī)劃,每個數(shù)據(jù)段包含主軸位移,從軸位移,速度規(guī)劃類型三個參數(shù),即主軸在完成設(shè)定位移的過程中,從軸也自動完成設(shè)定位移,這個過程中的速度曲線由速度規(guī)劃類型決定;

每個從軸有兩個 FIFO 用于緩存同步數(shù)據(jù)段,每個 FIFO 最多可以存儲 32 個數(shù)據(jù)段,通過手動切換,其中一個 FIFO 的數(shù)據(jù)用完后會自動切換到另外一個 FIFO;

通過配置 FIFO 的循環(huán)次數(shù),可實現(xiàn)從軸周期性的跟隨;

同步的啟動可以配置為立即啟動,也可以配置為主軸穿越某個位置時自動啟動;

2. 應(yīng)用講解

2.1 硬件部分

2.2 軟件部分

1)工具介紹

通過GCS.exe工具對電子凸輪的使用配置進(jìn)行詳細(xì)說明。GCS.exe工具連接控制器,點(diǎn)擊功能->Follow(電子凸輪)運(yùn)動,打開測試軸1,測試軸2,如圖2.2.1電子凸輪測試。

圖2.2.1 電子凸輪測試

從圖2.1的Follow(電子凸輪)運(yùn)動工具中測試,添加主軸位移、從軸位移和跟隨類型,添加位置點(diǎn)沒有限制;參數(shù)設(shè)置列表中,從軸通道、跟隨主軸、主軸類型、跟隨方向和循環(huán)次數(shù)根據(jù)需求選擇即可;對于Fifo序號,用來設(shè)置從軸緩存同步數(shù)據(jù)段的;啟動模式如果選擇主軸穿越啟動,當(dāng)主軸達(dá)到設(shè)定的穿越位置從軸方可響應(yīng);配置完成執(zhí)行1.配置,2.壓入數(shù)據(jù)和3.啟動;值得注意的是,啟動前,需要把軸位置,狀態(tài)清零。

2)指令介紹

以下為電子凸輪常用功能函數(shù)的詳細(xì)說明。

電子凸輪

函數(shù)原形

函數(shù)說明

NMC_MtFollowSetDir

設(shè)置FOLLOW跟隨方向

NMC_MtFollowGetDir

獲取FOLLOW跟隨方向

NMC_MtFollowSetMaster

設(shè)置FOLLOW主軸參數(shù)

NMC_MtFollowGetMaster

獲取FOLLOW主軸參數(shù)

NMC_MtFollowSetLoopCount

設(shè)置FOLLOW的循環(huán)執(zhí)行次數(shù)

NMC_MtFollowGetLoopCount

獲取FOLLOW的循環(huán)執(zhí)行次數(shù)

NMC_MtFollowSetEvent

設(shè)置FOLLOW的的啟動事件

NMC_MtFollowGetEvent

獲取FOLLOW的啟動事件

NMC_MtFollowGetSpace

獲取FOLLOWfifo剩余空間

NMC_MtFollowPushData

設(shè)置FOLLOW的數(shù)據(jù)

NMC_MtFollowClear

清除FOLLOW對應(yīng)fifo號的數(shù)據(jù)

NMC_MtFollowStart

啟動Follow運(yùn)動

NMC_MtFollowSwitch

切換Follow運(yùn)動的fifo

 

(1)設(shè)置單軸運(yùn)動速度曲線類型

NMC_MtSetPrfMode( HAND axisHandle,  short mode );

參數(shù)

輸入/輸出

描述

axisHandle

輸入

軸句柄

mode

輸入

各軸的規(guī)劃模式

#define MT_NONE_PRF_MODE     (-1) // 無效

#define MT_PTP_PRF_MODE      (0)    // 梯形規(guī)劃

#define MT_JOG_PRF_MODE      (1)    // 連續(xù)速度模式

#define MT_CRD_PRF_MODE      (3)    // 坐標(biāo)系

#define MT_GANTRY_MODE       (4)    // 龍門跟隨模式

#define MT_PT_PRF_MODE       (5)  //   PT模式

#define   MT_MULTI_LINE_MODE   (6)  // 多軸直線插補(bǔ)

#define MT_GEAR_PRF_MODE     (7)    // 電子齒輪模式

#define MT_FOLLOW_PRF_MODE   (8)  // Follow跟隨模式

注意:坐標(biāo)系模式不需要通過NMC_MtSetPrfMode設(shè)置

 

(2)單軸JOG運(yùn)動

NMC_MtMoveJog(HAND axisHandle, double acc, double dec, double maxVel, short  smoothCoef, short clrStsFlag);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

軸句柄

acc

輸入

加速度,脈沖/ms^2

dec

輸入

減速度,脈沖/ms^2

maxVel

輸入

最大速度,脈沖/ms

smoothCoef

輸入

平滑系數(shù),[0,   199], 單位ms

clrStsFlag

輸入

是否運(yùn)動前先清除軸狀態(tài),0:不清除,1:清除

 

(3)設(shè)置FOLLOW跟隨方向

NMC_MtFollowSetDir(HAND axisHandle, short dir);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

dir

輸入

=0:雙向跟隨

<0:< span="">負(fù)向跟隨

>0:正向跟隨

 

(4)獲取FOLLOW跟隨方向

NMC_MtFollowGetDir(HAND axisHandle, short *pDir);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

pDir

輸出

=0:雙向跟隨

<0:< span="">負(fù)向跟隨

>0:正向跟隨

 

(5)設(shè)置FOLLOW主軸參數(shù)

NMC_MtFollowSetMaster(HAND axisHandle, short masterNo, short masterType);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

masterNo

輸入

主軸序列號(0~N)

masterType

輸入

主軸類型

#define PROFILE_FOLLOW_MASTER_NONE  (0) //   0:無效

#define   PROFILE_FOLLOW_MASTER_AXIS_PRF  (1)     //   1:AXIS規(guī)劃值

#define   PROFILE_FOLLOW_MASTER_AXIS_ENC  (2)     //   2:AXIS反饋值

#define PROFILE_FOLLOW_MASTER_ENC       (3)       // 3:編碼器值

 

(6)獲取FOLLOW主軸參數(shù)

NMC_MtFollowGetMaster(HAND axisHandle, short *pMasterNo, short *pMasterType);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

pMasterNo

輸出

主軸序列號(0~N)

pMasterType

輸出

主軸類型,見宏定義

 

(7)設(shè)置FOLLOW的循環(huán)執(zhí)行次數(shù)

NMC_MtFollowSetLoopCount(HAND axisHandle, long loopCnt);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

loopCnt

輸入

循環(huán)次數(shù)

 

(8)獲取FOLLOW的循環(huán)執(zhí)行次數(shù)

NMC_MtFollowGetLoopCount(HAND axisHandle, long *pLoopCnt);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

ploopCnt

輸出

循環(huán)次數(shù)

 

(9)設(shè)置FOLLOW的的啟動事件

NMC_MtFollowSetEvent(HAND axisHandle, short eventType, short masterDir, long pos);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

eventType

輸入

1:表示調(diào)用啟動指令以后立即啟動

2:表示主軸穿越設(shè)定位置以后啟動跟隨

masterDir

輸入

穿越啟動時,主軸的運(yùn)動方向:1主軸正向運(yùn)動,-1 主軸負(fù)向運(yùn)動

pos

輸入

穿越位置

 

(10)獲取FOLLOW的的啟動事件

NMC_MtFollowGetEvent(HAND axisHandle, short *pEventType, short *pMasterDir, long *pPos);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

pEventType

輸出

1 表示調(diào)用啟動指令以后  立即啟動

2表示主軸穿越設(shè)定位置以后啟動跟隨

pMasterDir

輸出

穿越啟動時,主軸的運(yùn)動方向:1 主軸正向運(yùn)動,-1 主軸負(fù)向運(yùn)動

pPos

輸出

穿越位置

 

(11)獲取FOLLOW的fifo剩余空間

NMC_MtFollowGetSpace(HAND axisHandle, short *pSpace, short fifoNo);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

pSpace

輸出

空間大小

fifoNo

輸入

fifo號,0或1

 

(12)設(shè)置FOLLOW的數(shù)據(jù)

NMC_MtFollowPushData(HAND axisHandle, long masterPos, double slavePos, short type, short fifoNo;

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

masterPos

輸入

主軸位移

slavePos

輸入

從軸位移

type

輸入

數(shù)據(jù)段類型:0普通段,默認(rèn);1勻速段;2 減速到 0 段;3保持 FIFO 之間速度連續(xù)

fifoNo

輸入

fifo號,0或1

 

(13)清除FOLLOW對應(yīng)fifo號的數(shù)據(jù)

NMC_MtFollowClear(HAND axisHandle, short fifoNo);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

fifoNo

輸入

fifo號,0或1

 

(14)啟動Follow運(yùn)動

NMC_MtFollowStart(HAND axisHandle, short syncAxCnts, short *pSyncAxArray);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

syncAxCnts

輸入

不包括axisHandle   的其他同步啟動軸數(shù)量

pSyncAxArray

輸入

其他同步啟動軸的序號:0~N

 

(15)切換Follow運(yùn)動的fifo號

NMC_MtFollowSwitch(HAND axisHandle, short syncAxCnts, short *pSyncAxArray);

參數(shù)

輸入/輸出

描述

axisHandle

輸入

從軸句柄

syncAxCnts

輸入

不包括axisHandle   的其他同步進(jìn)行fifo切換的軸數(shù)量

pSyncAxArray

輸入

其他同步進(jìn)行fifo切換的軸的序號:0~N

 

3)應(yīng)用案例

該案例主軸為 Jog 模式,速度為 50pulse/ms,從軸為 Follow 模式,跟隨主軸的規(guī)劃位置。從 軸啟動的跟隨條件是:主軸走過 50000pulse 后,從軸啟動跟隨。從軸的運(yùn)動規(guī)律由 3 段組成,如下表所示,加速段跟隨,勻速跟隨,減速跟隨,類似一個梯形曲線。并且無限次循環(huán)此數(shù)據(jù)段。


第一段

第二段

第三段

主軸位置

20000

20000

20000

從軸位置

10000

20000

10000

 

/*********此處省略控制器初始化部分***********/

 

//函數(shù)返回值錯誤

#define RTN_ERR {if(rtn != RTN_CMD_SUCCESS){ return;}}

 

short rtn = 0;

//啟動主軸JOG運(yùn)動, 速度脈沖/ms, 加、減速度為脈沖/ms^2

rtn = NMC_MtMoveJog(axishandle[0],   1, 1, 50, 0, 1);

RTN_ERR

//設(shè)置軸二的運(yùn)動模式為FOllow模式

rtn = NMC_MtSetPrfMode(axishandle[1],   MT_FOLLOW_PRF_MODE);

RTN_ERR

//清空從軸FIFO數(shù)據(jù)

rtn = NMC_MtFollowClear(axishandle[1],   0);

RTN_ERR

//設(shè)置跟隨主軸的規(guī)劃位置

rtn = NMC_MtFollowSetMaster(axishandle[1],   0, PROFILE_FOLLOW_MASTER_AXIS_PRF);

RTN_ERR

//設(shè)置跟隨數(shù)據(jù)

double masterpos = 20000;

double slavepos = 10000;

rtn = NMC_MtFollowPushData(axishandle[1],   masterpos, slavepos,   0, 0);

RTN_ERR

masterpos += 20000;

slavepos += 20000;

rtn = NMC_MtFollowPushData(axishandle[1],   masterpos, slavepos,   0, 0);

RTN_ERR

masterpos += 20000;

slavepos += 10000;

rtn = NMC_MtFollowPushData(axishandle[1],   masterpos, slavepos,   0, 0);

RTN_ERR

//設(shè)置為無限循環(huán)

rtn = NMC_MtFollowSetLoopCount(axishandle[1], 0);

RTN_ERR

//設(shè)置跟隨條件, 主軸正向運(yùn)動到位置時啟動

rtn = NMC_MtFollowSetEvent(axishandle[1],   2, 1, 50000);

RTN_ERR

//啟動Follow運(yùn)動

rtn = NMC_MtFollowStart(axishandle[1],   0, 0);

RTN_ERR

//跟隨運(yùn)動過程中可調(diào)用NMC_MtFollowGetLoopCount查詢循環(huán)執(zhí)行次數(shù)

return rtn;

 

 

3. 注意事項

首先使用GCS.exe工具測試數(shù)控機(jī)床是否達(dá)到安全啟動要求;

在函數(shù)中,有三種編程對象,對于單軸控制的指令是以 NMC_Mt 開頭,對于坐標(biāo)系的指令是以NMC_Crd 開頭,其余是對控制器的指令;

文檔只挑選常用功能,更多功能請關(guān)注頭文件,在里面做了詳細(xì)的注釋;

如有其他疑問,請聯(lián)系技術(shù)。

 


銷售服務(wù)熱線:13510269529 張先生 電子郵箱:sales@gcauto.com.cn 官方網(wǎng)址:weightlossgram.com 辦公地址:廣東省深圳市寶安區(qū)新安街道隆昌路2號甲岸科技園1號樓6樓