技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > EtherCAT運(yùn)動控制器之ZMIO300模塊的使用

EtherCAT運(yùn)動控制器之ZMIO300模塊的使用

時間:2021-11-23 16:44:15來源:深圳市正運(yùn)動技術(shù)有限公司

導(dǎo)語:?今天,正運(yùn)動小助手給大家分享一下EtherCAT運(yùn)動控制器之ZMIO300模塊的使用。

控制器

  今天,正運(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)載請注明文章來源。


標(biāo)簽: 控制器EtherCAT運(yùn)動控制

點(diǎn)贊

分享到:

上一篇:超聲波測厚儀是測量什么的

下一篇:關(guān)于工業(yè)機(jī)器人和移動機(jī)器人

中國傳動網(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é)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號