時間:2021-11-23 16:44:15來源:深圳市正運(yùn)動技術(shù)有限公司
今天,正運(yùn)動小助手給大家分享一下EtherCAT運(yùn)動控制器之ZMIO300模塊的使用。
01、材料準(zhǔn)備與控制器接線參考
一、材料準(zhǔn)備
1.電腦1臺,安裝ZDevelop軟件。2.控制器1個,ZMC432(帶Ethercat接口即可)。3.24V直流電源1個(給控制器和ZMIO模塊供電)。4.ZMIO擴(kuò)展模塊一套+EtherCAT總線驅(qū)動器。5.控制器接線端子若干,導(dǎo)線若干。6.網(wǎng)線若干。
二、接線參考
02、實(shí)驗思路
1.我們先將 ZMC432控制器、ZMIO 300擴(kuò)展模塊、Ethercat總線驅(qū)動進(jìn)行組合成一個小系統(tǒng)。然后通過Basic編程實(shí)現(xiàn)EtherCAT總線初始化,從而實(shí)現(xiàn)控制器對ZMIO 300擴(kuò)展模塊和總線驅(qū)動器控制。
2.如果采用上位機(jī)開發(fā),可以通過接口ZAux_Execute()來調(diào)用下載到控制器里面的總線初始化的Basic函數(shù),來實(shí)現(xiàn)總線設(shè)備的初始化。
03、ZMIO 300擴(kuò)展模塊的介紹和接線
1.ZMIO擴(kuò)展模塊的組成。
通訊模塊:該模塊有ZMIO300-ECAT 通訊模塊和ZMIO300-CAN 通訊模塊兩種,ZMIO300-ECAT 通訊模塊的使用需要通過一段Basic代碼進(jìn)行總線初始化才能通訊上。
ZMIO300-CAN 通訊模塊使用簡單,只要預(yù)先設(shè)置好撥碼開關(guān),然后上電即可實(shí)現(xiàn)通訊。但是ZMIO300-CAN 通訊模塊不能設(shè)置AD/DA擴(kuò)展子模塊的量程和模式。
2.硬件接線。
ECAT耦合器+擴(kuò)展子模塊接線參考:
注意:通訊模塊和擴(kuò)展子模塊都需要24V電源供電。
04、ECAT總線初始化的Basic代碼編寫
1.EtherCAT總線掃描的Basic代碼。
'/************************************************************'任務(wù)編號:無'函數(shù)功能:總線掃描'Input:無'Output:無 '返回值:無'備注:無 '*************************************************************/GLOBAL SUB Ecat_ScanSlot() LOCAL i '初始化還原軸類型 RAPIDSTOP(2) For i=0 to gv_MaxAxisNum - 1 AXIS_ENABLE(i) = 0 '關(guān)軸使能 atype(i)=0 '設(shè)置為虛擬軸 AXIS_ADDRESS(i) =0 DELAY(10) '防止所有驅(qū)動器全部同時切換使能導(dǎo)致瞬間電流過大 next '掃描總線 SLOT_STOP(0) DELAY(200) SLOT_SCAN(0) '判斷總線掃描結(jié)果 IF RETURN THEN if NODE_COUNT(0) <> (Gc_BusAxisNodeNum + Gc_BusIoNodeNum) then gv_BusScanState = 2 '總線掃描失敗,實(shí)際數(shù)量不一致 ?"總線掃描失敗,節(jié)點(diǎn)實(shí)際數(shù)量不一致" ELSE TRACE "總線掃描成功,連接設(shè)備數(shù):", NODE_COUNT(0) gv_BusScanState = 1 '總線掃描成功 endif ELSEIF gv_BusScanState = -1 '總線掃描失敗 ?"總線掃描失敗" ENDIFENDSUB
2.設(shè)置總線IO擴(kuò)展板起始IO編號。
'/************************************************************'任務(wù)編號:無'函數(shù)功能:IO擴(kuò)展板初始化'Input:無'Output:無 '返回值:無'備注:無 '*************************************************************/GLOBAL SUB Ecat_IO_Init() gv_BusIoNodeNum = 0 '初始化總線IO擴(kuò)展板數(shù)量 '如果總線掃描失敗 IF gv_BusScanState <> 1 THEN '總線掃描失敗,io擴(kuò)展板也掃描失敗 gv_NodeIoInitFlag=-1 RETURN ENDIF LOCAL Node_Num '節(jié)點(diǎn)設(shè)備編號 LOCAL Drive_Vender '當(dāng)前設(shè)備廠商編號 LOCAL Drive_Device '設(shè)備編號 LOCAL Drive_Alias '設(shè)備撥碼ID Dealy(200) '啟動總線 SLOT_START(0) if return =0 then TRACE "IO擴(kuò)展板初始化,啟動總線失敗" gv_NodeIoInitFlag=-1 return endif '開始映射總線IO for Node_Num= 0 to NODE_COUNT(0) - 1 '遍歷掃描到的所有從站節(jié)點(diǎn) Drive_Vender = NODE_INFO(0,Node_Num,0) '讀取設(shè)備廠商 Drive_Device = NODE_INFO(0,Node_Num,1) '讀取設(shè)備編號 Drive_Alias= NODE_INFO(0,Node_Num,3) '讀取設(shè)備撥碼ID if NODE_AXIS_COUNT(0,Node_Num) = 0 then '判斷當(dāng)前節(jié)點(diǎn)是否有電機(jī) Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,Gc_EcatIoStartId+(16* gv_BusIoNodeNum)) '映射擴(kuò)展模塊IO gv_BusIoNodeNum = gv_BusIoNodeNum + 1 endif next gv_NodeIoInitFlag=1 '判斷IO擴(kuò)展板數(shù)目是否正確 if gv_BusIoNodeNum <> Gc_BusIoNodeNum then ?"掃描到的IO擴(kuò)展板數(shù)目不正確" gv_NodeIoInitFlag=2 endif ENDSUB
'/************************************************************'任務(wù)編號:無'函數(shù)功能:總線IO模塊映射'Input:無'Output:無 '返回值:無'備注:通過NODE_IO(0,Node_Num)分配模塊IO起始地址,不使用擴(kuò)展模塊的時候刪掉此段'*************************************************************/GLOBAL SUB Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum) if iVender = $41B then '正運(yùn)動IO擴(kuò)展模塊 NODE_IO(0,iNode) = i_IoNum NODE_AIO(0,iNode) = Gc_EcatAIoStartId '設(shè)置zmio的ad模式為0~20mA電流模式 SDO_WRITE(0,iNode,$5003,1,6,5) SDO_WRITE(0,iNode,$5004,1,6,13) endifENDSUB
3.總線驅(qū)動器軸號映射。
'/************************************************************'任務(wù)編號: 無'函數(shù)功能: 總線軸初始化'Input: 無'Output: 無 '返回值: 無'備注: 通過NODE_IO(0,Node_Num)分配模塊IO起始地址,不使用擴(kuò)展模塊的時候刪掉此段'*************************************************************/GLOBAL SUB Ecat_Axis_Init() LOCAL NodeSum_Num ,BusAxis_Num ,NodeAxis_Num '設(shè)備總數(shù)、總線軸總數(shù)、每個節(jié)點(diǎn)上的電機(jī)數(shù) LOCAL Drive_Vender,Drive_Device,Drive_Alias '驅(qū)動廠商編號、驅(qū)動設(shè)備編號、驅(qū)動設(shè)備撥碼ID LOCAL j,i '如果總線掃描失敗 IF gv_BusScanState <> 1 THEN gv_EcatAxisInitFlag=-1 RETURN ENDIF '總線軸總數(shù),從0開始計數(shù) BusAxis_Num = 0 FOR i = 0 TO NODE_COUNT(0) - 1 NodeAxis_Num = NODE_AXIS_COUNT(0,i) '讀取設(shè)備電機(jī)數(shù) Drive_Vender = NODE_INFO(0,i,0) '讀取驅(qū)動器廠商 Drive_Device = NODE_INFO(0,i,1) '讀取設(shè)備編號 Drive_Alias = NODE_INFO(0,i,3) '讀取設(shè)備撥碼ID FOR j = 0 TO NodeAxis_Num - 1 AXIS_ADDRESS(BusAxis_Num+Gc_BusAxisStartId) = BusAxis_Num + 1 '映射軸號 ATYPE(BusAxis_Num+Gc_BusAxisStartId) = 65 '設(shè)置控制模式 65-位置 66-速度 67-轉(zhuǎn)矩 詳細(xì)參照AXISSTATUS DRIVE_PROFILE(BusAxis_Num+Gc_BusAxisStartId) = 0 'PDO類型 DISABLE_GROUP(BusAxis_Num+Gc_BusAxisStartId) '每軸單獨(dú)分組 'Sub_SetNodePara(i,Drive_Vender,Drive_Device) '設(shè)置特殊總線參數(shù) BusAxis_Num = BusAxis_Num + 1 '總線軸計數(shù)+1 NEXT NEXT if BusAxis_Num = Gc_BusAxisNodeNum then TRACE "軸掃描映射完成,連接總線軸數(shù):",BusAxis_Num else ?"掃描到的總線軸數(shù)目不正確" gv_EcatAxisInitFlag =2 RETURN endif DELAY(100) SLOT_START(0) IF RETURN THEN TRACE "開始清除驅(qū)動器報警" FOR i = Gc_BusAxisStartId TO Gc_BusAxisStartId + BusAxis_Num - 1 BASE(i) DRIVE_CLEAR(0) WA(10) DRIVE_CONTROLWORD(i) = 128 WA(10) DRIVE_CONTROLWORD(i)=6 WA(10) DRIVE_CONTROLWORD(i)=15 WA(10) NEXT DELAY(100) TRACE "控制器報警清除完成" DATUM(0) DELAY(1000) TRACE"開始伺服使能" WDOG = 1 FOR i = Gc_BusAxisStartId TO Gc_BusAxisStartId + BusAxis_Num - 1 AXIS_ENABLE(i) = 1 NEXT TRACE"伺服使能完成" gv_EcatAxisInitFlag =1 ELSE TRACE"總線開啟失敗" gv_EcatAxisInitFlag=-1 ENDIF ENDSUB
05、設(shè)置ZMIO模擬量擴(kuò)展模塊的量程和模式
可通過SDO_Write指令對ZMIO模擬量擴(kuò)展模塊的量程和模式進(jìn)行設(shè)置。(需要是ECAT 耦合器才支持修改模擬量模塊的模式和量程)。
06、上位機(jī)開發(fā)進(jìn)行總線軸和模塊的初始化
1.通過ZDevelop軟件將該Basic程序下載到控制器中。
2.通過ZAux_Execute()來調(diào)用控制器里面的Basic函數(shù),進(jìn)行EtherCAT總線初始化。
示例:ZAux_Execute(g_handle, "Runtask 0,EcatInit_Para()", NULL, 0)
3.通過ZAux_Direct_GerVariableInt()指令來讀取Basic文件定義的全局整形變量,比如讀取EcatAxisInitFlag和NodeIoInitFlag這兩個變量來獲取Basic程序那邊總線初始化的情況。
示例:
ZAux_Direct_GetVariableInt(g_handle,"EcatAxisInitFlag",&AxisInitFlag)
ZAux_Direct_GetVariableInt(g_handle,"NodeIoInitFlag",&IoInitFlag)
完整代碼獲取地址
▼
本次,正運(yùn)動技術(shù)EtherCAT運(yùn)動控制器之ZMIO300模塊的使用,就分享到這里。
更多精彩內(nèi)容請關(guān)注“正運(yùn)動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師:400-089-8936。
本文由正運(yùn)動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
rpi-image-gen:樹莓派軟件鏡像構(gòu)建的終...
2025-04-08
【產(chǎn)品解讀】全面提升精密制造檢測節(jié)拍...
2025-03-31
激光閃耀 智慧引領(lǐng) | WISE MASER 黑武士...
2025-03-20