上節課程,正運動小助手給大家分享了運動控制器提供的回零模式配置與實現。本節課程主要介紹控制器實現EtherCAT與RTEX驅動器的回零及其配置。
01 總線驅動器回零模式
正運動控制器提供自己的回零模式,也支持使用EtherCAT總線驅動器提供的回零模式,或RTEX總線驅動器的提供的回零模式,均可使用DATUM指令實現回零,但采用的回零模式和配置方法與控制器提供的回零方式有所區別。
以上兩類總線驅動器回零模式采用21,回零模式由總線驅動器提供,參見驅動器手冊說明。
語法:DATUM(21,驅動器提供的回零模式)
總線驅動器回零時,除了模式需要采用驅動器提供的,原點開關、正/負限位開關需要接入驅動器的IO端子上,一般驅動器IO端子有指定的HOME、POT,NOT用于回零,引腳需查看驅動器手冊說明。
1.EtherCAT總線驅動器
可使用EtherCAT總線驅動器回零功能,DATUM(21,mode2),此時mode2有效,mode2為EtherCAT總線驅動器6098h提供的原點回歸模式。
使用此模式需要參考驅動器手冊的說明,找到手冊對應的章節,如上圖,配置驅動器回零PDO所需要的功能,按照驅動器手冊提供的信號接線方式完成開關信號的接線,將原點和正/負限位信號接在驅動器IO指定的HOME、POT,NOT端子上,等待DATUM觸發回零即可。
示例:初始化完成后再運行驅動器回零程序。
BASE(iAxis) '按驅動器軸號逐個回零
AXIS_STOPREASON = 0
SPEED = 100 '回零速度
CREEP = 10 '反找速度
ACCEL = 1000
DATUM(21,2) '驅動器回零模式value=2
WAIT IDLE
IF AXIS_STOPREASON = 0 THEN
?"回零成功"
ELSE
?"回零失敗" ,"停止原因:",AXIS_STOPREASON,"狀態字0X",HEX(DRIVE_STATUS)
ENDIF
2.RTEX總線驅動器
此模式下可使用RTEX總線驅動器回零功能,此時mode2有效,回零模式查看驅動器手冊即可(如下表)。使用此模式原點和正負限位信號接在驅動器指定IO上,
等待DATUM觸發回零即可。
02 EtherCAT總線驅動器回零方式
使用EtherCAT總線驅動器提供的回零,需要將原點信號接入驅動器指定IO上,不同的廠商的使用要求略有差異,需要閱讀驅動器手冊之后再進行配置。
參考步驟如下:
1.硬件接線:
以下以某個驅動器為例,將原點等信號接入下圖指定引腳即可,無需映射,并且按要求給驅動器的IO端子供電。
使用控制器OP輸出模擬IO信號輸入,控制器OUT0口接到驅動器控制端子8引腳,模擬原點信號,控制器OUT6口接到驅動器控制端子9引腳,模擬負限位信號,控制器OUT5口接到驅動器控制端子10引腳,模擬正限位信號。
2.驅動器配置要求:
根據驅動器手冊說明配置回零所需要的功能,例如下方配置說明中,6040h和6041是必須模式,其他模式均為選配,故DRIVE_PROFILE配置驅動器PDO時,需要包含必須模式才可完成回零操作。
3.總線初始化:
運動下方初始化模板程序,合理配置DRIVE_PROFILE,使能總線驅動器。
4.驅動器回零:
初始化成功方可執行回零程序,設置合理的總線軸參數,配置回零的找原點速度SPEED和反找速度CREEP,發送DATUM(21,mode2)驅動器開始找原點運動,例程使用模式如下,回零成功停止運動,DPOS和MPOS自動清零。
程序分為兩部分執行,先總線初始化,再回零。
1.總線初始化參考程序:
'*******************************************************ECAT總線初始化
global CONST BUS_TYPE = 0 '總線類型??捎糜?a target="_blank">上位機區分當前總線類型
global CONST MAX_AXISNUM = 16 '最大軸數
global CONST Bus_Slot = 0 '槽位號0(單總線控制器缺省0)
global CONST PUL_AxisStart = 0 '本地脈沖軸起始軸號
global CONST PUL_AxisNum = 0 '本地脈沖軸軸數量
global CONST Bus_AxisStart = 0 '總線軸起始軸號
global CONST Bus_NodeNum = 1 '總線配置節點數量,用于判斷實際檢測到的從站數量是否一致
global Bus_InitStatus '總線初始化完成狀態
Bus_InitStatus = -1
global Bus_TotalAxisnum '檢查掃描的總軸數
delay(3000) '延時3S等待驅動器上電,不同驅動器自身上電時間不同,具體根據驅動器調整延時
?"總線通訊周期:",SERVO_PERIOD,"us"
Ecat_Init() '初始化ECAT總線
while (Bus_InitStatus = 0)
Ecat_Init()
wend
end
'***************************ECAT總線初始化*****************************
'初始流程: slot_scan(掃描總線) -> 從站節點映射軸/io -> SLOT_START(啟動總線) -> 初始化成功
'**********************************************************************
global sub Ecat_Init()
local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias
RAPIDSTOP(2)
for i=0 to MAX_AXISNUM - 1 '初始化還原軸類型
AXIS_ENABLE(i) = 0
atype(i)=0
AXIS_ADDRESS(i) =0
DELAY(10) '防止所有驅動器全部同時切換使能導致瞬間電流過大
next
Bus_InitStatus = -1
Bus_TotalAxisnum = 0
SLOT_STOP(Bus_Slot)
delay(200)
slot_scan(Bus_Slot) '掃描總線
if return then
?"總線掃描成功","連接從站設備數:"NODE_COUNT(Bus_Slot)
if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then '判斷總線檢測數量是否為實際接線數量
?""
?"掃描節點數量與程序配置數量不一致!" ,"配置數量:"Bus_NodeNum,"檢測數量:"NODE_COUNT(Bus_Slot)
Bus_InitStatus = 0 '初始化失敗。報警提示
return
endif
'"開始映射軸號"
for Node_Num=0 to NODE_COUNT(Bus_Slot)-1'遍歷掃描到的所有從站節點
Drive_Vender = NODE_INFO(Bus_Slot,Node_Num,0) '讀取驅動器廠商
Drive_Device = NODE_INFO(Bus_Slot,Node_Num,1) '讀取設備編號
Drive_Alias = NODE_INFO(Bus_Slot,Node_Num,3) '讀取設備撥碼ID
if NODE_AXIS_COUNT(Bus_Slot,Node_Num) <> 0 the '判斷當前節點是否有電機
for j=0 to NODE_AXIS_COUNT(Bus_Slot,Node_Num)-1 '根據節點帶的電機數量循環配置軸參數(針對一拖多驅動器)
Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum '軸號按NODE順序分配
'Temp_Axis = Drive_Alias '軸號按驅動器設定的撥碼分配(一拖多需要特殊處理)
base(Temp_Axis)
AXIS_ADDRESS= Bus_TotalAxisnum+1 '映射軸號
ATYPE=65 '設置控制模式 65-位置 66-速度 67-轉矩
DRIVE_PROFILE = 1
disable_group(Temp_Axis) '每軸單獨分組
Bus_TotalAxisnum=Bus_TotalAxisnum+1 '總軸數+1
next
endif
next
?"軸號映射完成","連接總軸數:"Bus_TotalAxisnum
DELAY 200
SLOT_START(Bus_Slot) '啟動總線
if return then
wdog=1 '使能總開關
'?"開始清除驅動器錯誤"
for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1
BASE(i)
DRIVE_CLEAR(0)
DELAY 50
'?"驅動器錯誤清除完成"
datum(0) '清除控制器軸狀態錯誤"
DELAY 100
'"軸使能"
AXIS_ENABLE=1
next
Bus_InitStatus = 1
?"軸使能完成"
'本地脈沖軸配置
for i = 0 to PUL_AxisNum - 1
base(PUL_AxisStart + i)
AXIS_ADDRESS = (-1<<16) + i
ATYPE = 4
next
?"總線開啟成功"
run "Basic1",1 '開啟回零任務
else
?"總線開啟失敗"
Bus_InitStatus = 0
endif
else
?"總線掃描失敗"
Bus_InitStatus = 0
endif
end sub
2.驅動器回零程序:
?"開始回零"
TABLE(0)=0
BASE(0)
UNITS=(8388608/360) '脈沖當量
SPEED=50 '找原點速度
CREEP=10 '反找速度
ACCEL=1000
DECEL=1000
DELAY(100)
DATUM(21,19) '開始回零,模式19
WHILE 1
WAIT IDLE
TABLE(0)=DRIVE_STATUS '讀取6041h狀態字判斷回零狀態
IF READ_BIT2(15,TABLE(0)) THEN
?"回零完成"
EXIT WHILE
ENDIF
WEND
END
示波器采用回零成功波形如下:采用模式19,采用OP模擬原點信號,驅動器感應到原點后低速反找,離開原點時停止運動,清空位置信息。
回零時碰到限位開關停止運動,AXISSTATUS軸狀態顯示40h正在回零中,回零完成狀態為0h。
本次,正運動技術EtherCAT與RTEX驅動器軸回零的配置與實現,就分享到這里。
-
驅動器
+關注
關注
52文章
8228瀏覽量
146271 -
控制器
+關注
關注
112文章
16339瀏覽量
177859 -
EtherCAT總線
+關注
關注
5文章
72瀏覽量
5375
發布評論請先 登錄
相關推薦
評論