01 產(chǎn)品簡介
EIO16084擴(kuò)展模塊是EtherCAT總線控制器使用的擴(kuò)展模塊,可擴(kuò)展數(shù)字量 IO和脈沖軸這兩類資源,當(dāng)控制器本體上資源不夠的時(shí)候,EtherCAT總線控制器可連接多個(gè)EIO擴(kuò)展模塊進(jìn)行資源擴(kuò)展 ,可查看控制器的IO最大擴(kuò)展點(diǎn)數(shù)和最大擴(kuò)展軸數(shù),支持IO的遠(yuǎn)程擴(kuò)展。
EIO16084擴(kuò)展模塊
每個(gè)EIO擴(kuò)展模塊在擴(kuò)展接線完成后,不需要進(jìn)行進(jìn)行二次開發(fā),只需使用指令在 EtherCAT主站控制器配置唯一的 IO 地址和軸地址,配置完成即可訪問。
IO 地址編號通過總線指令NODE_IO來設(shè)置,控制器上程序只需通過IO編號就可以訪問到擴(kuò)展模塊上的資源。軸地址的配置使用“AXIS_ADDRESS”指令映射綁定軸號,綁定完成通過BASE或AXIS指令指定軸號。
EIO16084擴(kuò)展模塊功能特點(diǎn):
(1)支持4軸脈沖軸擴(kuò)展。
(2)脈沖輸出模式:方向/脈沖或雙脈沖。
(3)每軸最大輸出脈沖頻率10MHz。
(4)支持16進(jìn)+8出IO擴(kuò)展,每個(gè)脈沖軸另外各有2進(jìn)2出IO可供配置。
(5)脈沖軸以外的輸出口最大輸出電流達(dá)300mA,可直接驅(qū)動(dòng)部分電磁閥。
(6)ECAT最快500us的刷新周期。
(7)單電源供電,連接主電源即可,無需IO電源。
此系列產(chǎn)品選型指南:

EIO系列帶軸的擴(kuò)展模塊的使用方法相同,僅是擴(kuò)展資源數(shù)量的區(qū)別,EIO16084和EIO24088的使用方法完全相同,EIO1616相比上面兩個(gè)型號,無需軸映射相關(guān)操作。
EIO24088擴(kuò)展模塊
02 接口說明
1.總線接口
EIO16084帶兩個(gè)EtherCAT總線接口,“EtherCAT IN”和“EtherCAT OUT”,使用標(biāo)準(zhǔn)網(wǎng)線完成接線。
接線時(shí)注意: “EtherCAT IN”連接上一級模塊,“EtherCAT OUT”連接下一級模塊,IN和OUT口不可混用。
2.通用輸入口
通用輸入口IN的內(nèi)部電路參考圖如下,EIO16084帶16個(gè)通用輸入口,輸入口需要NODE_IO配置IO地址編號才能通過控制器端操作,輸入口參數(shù)參見下表。
通用輸入口IN的內(nèi)部電路參考圖
輸入口參數(shù)說明:

3.通用輸出口
通用輸出口OUT的內(nèi)部電路參考圖如下,EIO16084帶8個(gè)通用輸入口,輸出口需要NODE_IO配置IO地址編號才能通過控制器端操作(NODE_IO使用一次便可配置好輸入和輸出),輸出口參數(shù)參見下表。
通用輸出口OUT的內(nèi)部電路參考圖
輸入口參數(shù)說明:

4.軸接口
EIO16084的軸接口有4個(gè),采用DB26針腳,針腳定義如下表,軸接口包含差分脈沖輸入和差分編碼器輸入信號,同時(shí)還有兩路通用輸入口(其中一路為報(bào)警輸入),兩路通用輸出口(其中一路為驅(qū)動(dòng)使能)。
EIO16084擴(kuò)展軸時(shí),為總線轉(zhuǎn)脈沖,將脈沖型驅(qū)動(dòng)器接入到EIO16084擴(kuò)展模塊上的脈沖軸接口上。通過總線初始化建立EtherCAT總線控制器和EIO16084擴(kuò)展模塊之間的通訊連接,總線初始化過程中必須包含軸映射,之后參考脈沖型控制器的使用方法操作脈沖驅(qū)動(dòng)器。


可以通過數(shù)據(jù)字典配置EIO擴(kuò)展板直接使能與告警,缺省不使用,需要主控制器來操作。
告警輸入、位置到位信號、軸使能、誤差清除可以為通用的輸入輸出,由于驅(qū)動(dòng)能力偏小建議做軸功能IO使用。
“EGND,OVCC電源”是控制器內(nèi)部輸出供伺服IO使用,請勿連接到開關(guān)電源,不使用時(shí)懸空。
03 接線參考
EIO16084擴(kuò)展模塊接線規(guī)則:EIO16084可接到EtherCAT總線上的任意節(jié)點(diǎn)。
EIO16084為總線上的一個(gè)設(shè)備節(jié)點(diǎn),可接入4個(gè)脈沖型驅(qū)動(dòng)器,驅(qū)動(dòng)器按照AXIS 0到AXIS 3的順序依次編號,并且遵從總線上的驅(qū)動(dòng)器編號規(guī)則。
驅(qū)動(dòng)器的使能信號為脈沖接口內(nèi)的通用輸出口,直接通過主控制器的OP指令來使能;蚴褂肧DO指令配置數(shù)據(jù)字典為自動(dòng)使能后,主控制器無法直接控制對應(yīng)的輸出口來使能。
注意:軸擴(kuò)展模塊的使用個(gè)數(shù)不是無限制的,參考控制器可擴(kuò)展的最大軸數(shù)。
如下圖,ZMC416BE運(yùn)動(dòng)控制器本體支持連接16個(gè)脈沖驅(qū)動(dòng)器,最大擴(kuò)展軸數(shù)為20,故可以通過EtherCAT總線連接一個(gè)EIO16084擴(kuò)展到支持20個(gè)脈沖驅(qū)動(dòng)器。
擴(kuò)展軸映射軸號時(shí)注意避開本地脈沖軸,若本地脈沖軸使 用了 1 6 個(gè),默認(rèn)對應(yīng)軸號 0 -15 ,則擴(kuò)展軸上的 AXIS 0-3 (對應(yīng)下圖中驅(qū)動(dòng)器編號 0 -3 )分別手動(dòng)映射為軸號 1 6-19 。

如下圖,ZMC432運(yùn)動(dòng)控制器本體支持連接32個(gè)軸(脈沖驅(qū)動(dòng)器+Ether,CAT總線驅(qū)動(dòng)器一共32個(gè)),控制器本體只有6路脈沖接口,通過一個(gè)EIO16084可擴(kuò)展4路脈沖接口,支持脈沖驅(qū)動(dòng)器和總線驅(qū)動(dòng)器混合使用。

上圖涉及的編號概念如下:總線相關(guān)指令參數(shù)會用到如下編號。
(1)槽位號(slot)
槽位號是指控制器上總線接口的編號,EtherCAT總線槽位號為0。
(2)設(shè)備號(node)
設(shè)備號是指一個(gè)槽位上連接的所有設(shè)備的編號,從0開始,按設(shè)備在總線上的連接順序自動(dòng)編號,可以通過“NODE_COUNT(slot)”指令查看總線上連接的設(shè)備總數(shù)。
(3)驅(qū)動(dòng)器編號
控制器會自動(dòng)識別出槽位上的驅(qū)動(dòng)器,編號從0開始,按驅(qū)動(dòng)器在總線上的連接順序自動(dòng)編號。
驅(qū)動(dòng)器編號與設(shè)備號不同,只給槽位上的驅(qū)動(dòng)器設(shè)備編號,其他設(shè)備忽略,映射軸號時(shí)將會用到驅(qū)動(dòng)器編號。
04 擴(kuò)展資源映射方法
EIO16084擴(kuò)展模塊上有兩類資源需要映射,軸資源和IO資源。
1.IO映射
控制器上程序只需通過IO編號就可以訪問到擴(kuò)展模塊上的資源,EtherCAT總線擴(kuò)展模塊IO編號通過總線指令NODE_IO來設(shè)置,同時(shí)配置輸入和輸出。
IO映射時(shí)先查看控制器自身的最大IO編號(包括外部IO接口和脈沖軸內(nèi)的接口),再使用指令設(shè)置。
若擴(kuò)展的IO與控制器自身IO編號重合,二者將同時(shí)起作用,所以IO映射的映射的編號在整個(gè)控制系統(tǒng)中均不得重復(fù)。
IO映射語法:
NODE_IO(slot,node)=iobase
slot:槽位號,0-缺省
node:設(shè)備編號,編號從0開始
iobase:映射IO起始編號,設(shè)置結(jié)果只會是8的倍數(shù)
示例:
NODE_IO(0,0)=32 '設(shè)置槽位0接口設(shè)備0的IO起始編號為32
若設(shè)備0為EIO16084,按如上語法配置后,擴(kuò)展模塊上的通用輸入口IN0-15對應(yīng)的IO編號依次為32-47,軸接口內(nèi)的通用輸入口編號48-55,其中軸AXIS 0-3的驅(qū)動(dòng)報(bào)警輸入分別為48-51。通用輸出口OUT0-7應(yīng)的IO編號依次為32-39,軸接口內(nèi)的通用輸出口編號40-47,其中軸AXIS 0-3的驅(qū)動(dòng)使能輸出分別為40-43。

2.軸映射
擴(kuò)展模塊的軸使用前需要使用“AXIS_ADDRESS”指令映射軸號,軸映射也需要注意整個(gè)系統(tǒng)的軸號不得重復(fù)。EIO系列擴(kuò)展軸的映射與總線驅(qū)動(dòng)器的軸映射語法相同。
軸映射語法:
AXIS_ADDRESS(軸號)=(槽位號<<16)+驅(qū)動(dòng)器編號+1
示例:
AXIS_ADDRESS(0)=(0<<16)+0+1 'EtherCAT總線上的第一個(gè)驅(qū)動(dòng)器,驅(qū)動(dòng)器編號0,綁定為軸0
AXIS_ADDRESS(1)=(0<<16)+1+1 'EtherCAT總線上的第二個(gè)驅(qū)動(dòng)器,驅(qū)動(dòng)器編號1,綁定為軸1
若第一個(gè)節(jié)點(diǎn)是EIO16084,EIO16084上連接了驅(qū)動(dòng)器,那么這里的驅(qū)動(dòng)器0是連接在EIO16084上的第一個(gè)脈沖驅(qū)動(dòng)器,否則便是EtherCAT總線驅(qū)動(dòng)器。
05 拓展脈沖軸的使用方法
EIO16084擴(kuò)展模塊需要經(jīng)過總線初始化之后才能使用,我們這里把一個(gè)脈沖型驅(qū)動(dòng)器接到EIO16084擴(kuò)展模塊上的AXIS 0接口上,使用步驟如下。
第一步:執(zhí)行總線初始化程序(參見下節(jié)),初始化過程中識別EIO擴(kuò)展模塊的設(shè)備編號和連接的驅(qū)動(dòng)器編號,根據(jù)驅(qū)動(dòng)器編號操作軸映射,根據(jù)設(shè)備號操作擴(kuò)展模塊的IO映射,設(shè)置DRIVE_PROFILE和ATYPE。
第二步:初始化成功后,使能EIO16084擴(kuò)展模塊上的脈沖驅(qū)動(dòng)器,同樣也是操作脈沖軸接口內(nèi)的OP信號使能驅(qū)動(dòng)器,由于擴(kuò)展模塊映射的起始編號是32,這里的AXIS 0-AXIS 3口內(nèi)的使能信號對應(yīng)通用輸出口編號是40-43。在輸出口窗口內(nèi)按下OP(40)或在程序中執(zhí)行指令OP(40,ON)均可使能AXIS 0的驅(qū)動(dòng)器。
第三步:使能完成設(shè)置相關(guān)軸參數(shù),再發(fā)送運(yùn)動(dòng)指令便可驅(qū)動(dòng)電機(jī)。

在初始化操作成功后,總線上能識別該擴(kuò)展模塊,可查看擴(kuò)展模塊上的軸接口數(shù),IO映射后可查看輸入輸出的編號范圍。
例如設(shè)置起始編號為32,該擴(kuò)展模塊上的輸入編號為外部自帶的16點(diǎn)+軸接口通用輸入8點(diǎn),一共24點(diǎn),范圍32-55,輸出編號為外部自帶的8點(diǎn)+軸接口通用輸入8點(diǎn),一共16點(diǎn),范圍32-47。

EIO16084使用注意事項(xiàng):
擴(kuò)展模塊上的IO不管有沒有使用都需要使用NODE_IO指令映射EIO16084的輸入輸出編號。擴(kuò)展模塊的DRIVE_PROFILE配置為0,ATYPE設(shè)為65,但實(shí)際由于是脈沖型驅(qū)動(dòng)器,軸類型并不是65,真實(shí)軸類型的配置使用SDO指令配置數(shù)據(jù)字典6011h設(shè)置。
初始化過程中若產(chǎn)生硬限位報(bào)警,可在軸參數(shù)窗口將硬限位FWD_IN和REV_IN的映射編號指向-1,表示不映射,需要接入限位開關(guān)時(shí)再去修改FWD_IN和REV_IN。
EIO16084擴(kuò)展模塊設(shè)置:
通過SDO指令讀寫數(shù)據(jù)字典設(shè)置,只開放了部分?jǐn)?shù)據(jù)字典供設(shè)置,更多驅(qū)動(dòng)器參數(shù)使用驅(qū)動(dòng)器軟件修改。
SDO指令配置輸入輸出:

SDO指令配置驅(qū)動(dòng)器參數(shù):
例如:擴(kuò)展的脈沖軸的真實(shí)軸類型設(shè)置通過數(shù)據(jù)字典6011h設(shè)置,(參考下表的參數(shù),按軸號依次設(shè)置,第一個(gè)驅(qū)動(dòng)器設(shè)置數(shù)據(jù)字典6011h+0*800h,第二個(gè)驅(qū)動(dòng)器設(shè)置6011h+1*800h,以此類推,每個(gè)驅(qū)動(dòng)器加800h,其他參數(shù)同理)

數(shù)據(jù)字典讀取語法:
SDO_READ (槽位號, 設(shè)備編號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 讀取數(shù)據(jù)存儲TABLE位置)
SDO_READ_AXIS (軸號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 讀取數(shù)據(jù)存儲TABLE位置)
數(shù)據(jù)字典寫入語法:
SDO_WRITE (槽位號, 設(shè)備編號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 寫入數(shù)據(jù)值)
SDO_WRITE_AXIS (軸號, 數(shù)據(jù)字典編號, 數(shù)據(jù)字典子編號, 數(shù)據(jù)類型, 寫入數(shù)據(jù)值)
數(shù)據(jù)字典讀寫示例:
global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)
if iVender = $41B and iDevice = $1918 then '正運(yùn)動(dòng)16084脈沖擴(kuò)展軸
SDO_WRITE(Bus_Slot,iNode,$6011+Iaxis*$800,0,5,4) '設(shè)置擴(kuò)展脈沖軸ATYPE類型,值為4表示脈沖和編碼器信號在同一個(gè)軸號上
SDO_WRITE(Bus_Slot,iNode,$6012+Iaxis*$800,0,6,0) '設(shè)置擴(kuò)展脈沖軸INVERT_STEP脈沖輸出模式,模式0,脈沖+方向
NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode '設(shè)置16084上IO的起始映射地址
endif
end sub
如果擴(kuò)展模塊之后還連接了EtherCAT驅(qū)動(dòng)器,使用時(shí)注意總線掃描設(shè)備數(shù)量的設(shè)置,EtherCAT驅(qū)動(dòng)器在初始化程序執(zhí)行完便使能成功,后續(xù)設(shè)置軸參數(shù)便能運(yùn)行,注意初始化過程中的DRIVE_PROFILE給EtherCAT驅(qū)動(dòng)器配置合適的PDO列表,需要用到驅(qū)動(dòng)器IO時(shí),還需操作DRIVE_IO映射。
06 總線初始化
此初始化程序可用來初始化EtherCAT驅(qū)動(dòng)器和EtherCAT總線擴(kuò)展模塊,建立通訊連接(通用模板,適用于多種品牌的驅(qū)動(dòng)器)。

' *******************************************************ECAT總線初始化
global CONST BUS_TYPE = 0 '總線類型。可用于上位機(jī)區(qū)分當(dāng)前總線類型
global CONST MAX_AXISNUM =32 '最大軸數(shù)
global CONST Bus_Slot = 0 '槽位號0(單總線控制器缺省0)
global CONST PUL_AxisStart= 0 '本地脈沖軸起始軸號
global CONST PUL_AxisNum = 0 '本地脈沖軸軸數(shù)量
global CONST Bus_AxisStart = 6 總線軸起始軸號
global CONST Bus_NodeNum = 2 '總線配置節(jié)點(diǎn)數(shù)量,用于判斷實(shí)際檢測到的從站數(shù)量是否一致
global Bus_InitStatus '總線初始化完成狀態(tài)
Bus_InitStatus = -1
global Bus_TotalAxisnum '檢查掃描的總軸數(shù)
delay(3000) '延時(shí)3S等待驅(qū)動(dòng)器上電,不同驅(qū)動(dòng)器自身上電時(shí)間不同,具體根據(jù)驅(qū)動(dòng)器調(diào)整延時(shí)
?"總線通訊周期:",SERVO_PERIOD,"us"
Ecat_Init() '初始化ECAT總線
while (Bus_InitStatus = 0)
Ecat_Init()
wend
end
' ****************************************ECAT總線初始化 **********************************
'初始流程: slot_scan(掃描總線) -> 從站節(jié)點(diǎn)映射軸/io -> SLOT_START(啟動(dòng)總線) -> 初始化成功
' *****************************************************************************************
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) '防止所有驅(qū)動(dòng)器全部同時(shí)切換使能導(dǎo)致瞬間電流過大
next
Bus_InitStatus = -1
Bus_TotalAxisnum = 0
SLOT_STOP(Bus_Slot)
delay(200)
slot_scan(Bus_Slot) '掃描總線
if return then
?"總線掃描成功","連接從站設(shè)備數(shù):"NODE_COUNT(Bus_Slot)
if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then '判斷總線檢測數(shù)量是否為實(shí)際接線數(shù)量
?""
?"掃描節(jié)點(diǎn)數(shù)量與程序配置數(shù)量不一致!" ,"配置數(shù)量:"Bus_NodeNum,"檢測數(shù)量:"NODE_COUNT(Bus_Slot)
Bus_InitStatus = 0 '初始化失敗。報(bào)警提示
return
endif
'"開始映射軸號"
for Node_Num=0 to NODE_COUNT(Bus_Slot)-1 '遍歷掃描到的所有從站節(jié)點(diǎn)
Drive_Vender = NODE_INFO(Bus_Slot,Node_Num,0) '讀取驅(qū)動(dòng)器廠商
Drive_Device = NODE_INFO(Bus_Slot,Node_Num,1) '讀取設(shè)備編號
Drive_Alias = NODE_INFO(Bus_Slot,Node_Num,3) '讀取設(shè)備撥碼ID
if NODE_AXIS_COUNT(Bus_Slot,Node_Num) <> 0 then '判斷當(dāng)前節(jié)點(diǎn)是否有電機(jī)
for j=0 to NODE_AXIS_COUNT(Bus_Slot,Node_Num)-1 '根據(jù)節(jié)點(diǎn)帶的電機(jī)數(shù)量循環(huán)配置軸參數(shù)(針對一拖多驅(qū)動(dòng)器)
Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum '軸號按NODE順序分配
'Temp_Axis = Drive_Alias '軸號按驅(qū)動(dòng)器設(shè)定的撥碼分配(一拖多需要特殊處理)
base(Temp_Axis)
AXIS_ADDRESS= Bus_TotalAxisnum+1 '映射軸號
ATYPE=65 '設(shè)置控制模式 65-位置 66-速度 67-轉(zhuǎn)矩
Sub_SetPdo(Node_Num,Drive_Vender,Drive_Device) '設(shè)定PDO參數(shù)
Sub_SetNodePara(Node_Num,Drive_Vender,Drive_Device,j) '設(shè)置特殊總線參數(shù),包含EIO16084的配置
disable_group(Temp_Axis) '每軸單獨(dú)分組
Bus_TotalAxisnum=Bus_TotalAxisnum+1 '總軸數(shù)+1
next
else 'IO擴(kuò)展模塊
Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,1024 + 32*Node_Num) '映射擴(kuò)展模塊IO
endif
next
?"軸號映射完成","連接總軸數(shù):"Bus_TotalAxisnum
DELAY 200
SLOT_START(Bus_Slot) '啟動(dòng)總線
if return then
wdog=1 '使能總開關(guān)
'?"開始清除驅(qū)動(dòng)器錯(cuò)誤"
for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1
BASE(i)
DRIVE_CLEAR(0)
DELAY 50
'?"驅(qū)動(dòng)器錯(cuò)誤清除完成"
datum(0) '清除控制器軸狀態(tài)錯(cuò)誤"
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
?"總線開啟成功"
else
?"總線開啟失敗"
Bus_InitStatus = 0
endif
else
?"總線掃描失敗"
Bus_InitStatus = 0
endif
end sub
' *****************************************手動(dòng)配置PDO* *********************************
'部分特殊品牌可能需要手動(dòng)配置,大部分只需要通過DRIVE_PROFILE設(shè)置自動(dòng)配置相應(yīng)的POD參數(shù)即可
' *******************************************************************************************
global sub Sub_SetPdo(iNode,iVender,iDevice)
IF iVender = 0 then '自定義PDO
SDO_WRITE (Bus_Slot, iNode, $1c12, 0 ,5 ,0) '禁用PDO,禁用后才可以修改內(nèi)容
DELAY(50)
SDO_WRITE (Bus_Slot, iNode, $1c13, 0 ,5 ,0)
DELAY(50)
SDO_WRITE (Bus_Slot, iNode, $1600, $0 ,5 ,0) 'RxPDO配置對應(yīng)參數(shù)
SDO_WRITE (Bus_Slot, iNode, $1600, $1 ,7 ,$60400010) '控制字
SDO_WRITE (Bus_Slot, iNode, $1600, $2 ,7 ,$607a0020) '目標(biāo)位置
SDO_WRITE (Bus_Slot, iNode, $1600, $3 ,7 ,$60fe0120) '驅(qū)動(dòng)器IO輸入
SDO_WRITE (Bus_Slot, iNode, $1600, $0 ,5 ,3)
SDO_WRITE (Bus_Slot, iNode, $1a00, $0 ,5 ,0) 'TxPDO配置對應(yīng)參數(shù)
SDO_WRITE (Bus_Slot, iNode, $1a00, $1 ,7 ,$60410010) '狀態(tài)字
SDO_WRITE (Bus_Slot, iNode, $1a00, $2 ,7 ,$60640020) '反饋位置
SDO_WRITE (Bus_Slot, iNode, $1a00, $3 ,7 ,$60fd0020) '驅(qū)動(dòng)器IO輸出
SDO_WRITE (Bus_Slot, iNode, $1a00, $0 ,5 ,3)
SDO_WRITE (Bus_Slot, iNode, $1c12, 1 ,6 ,$1600) 'RxPDO分配對象
DELAY(50)
SDO_WRITE (Bus_Slot, iNode, $1c13, 1 ,6 ,$1a00) TxPDO分配對象
DELAY(50)
SDO_WRITE (Bus_Slot, iNode, $1c12, 0 ,5 ,1) '啟用PDO
DELAY(50)
SDO_WRITE (Bus_Slot, iNode, $1c13, 0 ,5 ,1)
SDO_WRITE (Bus_Slot, iNode, $1C32, $1 ,6 ,2) '設(shè)置DC同步模式
SDO_WRITE (Bus_Slot, iNode, $1C33, $1 ,6 ,2)
DRIVE_PROFILE = -1 '使用驅(qū)動(dòng)缺省PDO配置
elseif iVender = $66f then
DRIVE_PROFILE = 4
else
DRIVE_PROFILE = 0
endif
end sub
' ***************************************從站節(jié)點(diǎn)特殊參數(shù)配置*****************************
'通過SDO方式修改對應(yīng)對象字典的值修改從站參數(shù)(具體對象字典查看驅(qū)動(dòng)器手冊)
' **********************************************************************************************
global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)
if iVender = $41B and iDevice = $1918 then '正運(yùn)動(dòng)EIO16084脈沖擴(kuò)展軸
SDO_WRITE(Bus_Slot,iNode,$6011,Iaxis*$800,5,4) '設(shè)置擴(kuò)展脈沖軸ATYPE類型
SDO_WRITE(Bus_Slot,iNode,$6012,Iaxis*$800,6,0) '設(shè)置擴(kuò)展脈沖軸INVERT_STEP脈沖輸出模式
NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode '設(shè)置16084上IO的起始映射地址
elseif iVender = $66f then '松下驅(qū)動(dòng)器
SDO_WRITE(Bus_Slot,iNode,$3401,0,4,$10101) '正限位電平 $818181
SDO_WRITE(Bus_Slot,iNode,$3402,0,4,$20202) '負(fù)限位電平 $828282
SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1) '齒輪比
SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1)
SDO_WRITE(Bus_Slot,iNode,$6092,1,7,10000) '電機(jī)一圈脈沖數(shù)
SDO_WRITE(Bus_Slot,iNode,$607E,0,5,224) '電機(jī)方向0-反轉(zhuǎn)224
SDO_WRITE(Bus_Slot,iNode,$6085,0,7,4290000000) '異常減速度
'SDO_WRITE(Bus_Slot,iNode,$1010,1,7,$65766173) '寫EPPROM(寫EPPROM后驅(qū)動(dòng)器需要重新上電)
elseif iVender = $100000 then '匯川驅(qū)動(dòng)器
SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1) '齒輪比
SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1)
endif
end sub
' ********************************總線IO模塊映射**************************************
'通過NODE_IO(Bus_Slot,Node_Num)分配模塊IO起始地址
' ******************************************************************************************
global sub Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum)
if iVender = $41B and iDevice = $130 then '正運(yùn)動(dòng)EIO1616
NODE_IO(Bus_Slot,iNode) = i_IoNum
endif
end sub
參考配置采用控制器依次連接一個(gè) EIO1 6084 擴(kuò)展模塊和一個(gè) EtherCAT總線驅(qū)動(dòng)器,采用以上初始化程序,成功建立通訊連接,控制器狀態(tài)窗口顯示當(dāng)前掃描連接的節(jié)點(diǎn)情況。
總線上的主站為控制器,控制器連接的第一個(gè)從站設(shè)備為EIO16084擴(kuò)展模塊,第二個(gè)從站設(shè)備為EtherCAT總線驅(qū)動(dòng)器,沒有使用控制器的本地脈沖軸接口?偩上的驅(qū)動(dòng)設(shè)備映射軸號可以從6開始,EIO16084擴(kuò)展模塊的AXIS 0-3接口上的脈沖驅(qū)動(dòng)器映射為軸號6-9,EtherCAT總線驅(qū)動(dòng)器映射為軸號10,EIO16084擴(kuò)展模塊的IO編號起始為32。
注意:映射的軸號和IO編號整個(gè)控制系統(tǒng)中不得重復(fù),根據(jù)具體情況去選擇編號。

在沒有IO設(shè)備的情況下,我們可以通過OUT和IN端口直接相連判斷IO的響應(yīng)情況,如下圖,測試EIO擴(kuò)展模塊的IO配置,將EIO的OUT2(映射編號34)端子連接到EIO的IN8(映射編號40)上,操作OP(34)可見輸入口40收到信號。

EtherCAT總線初始化執(zhí)行后,配置軸參數(shù),發(fā)送運(yùn)動(dòng)指令便可控制電機(jī)運(yùn)行,或參考下圖,通過手動(dòng)運(yùn)動(dòng)窗口,快速檢測EtherCAT總線驅(qū)動(dòng)器能否正常運(yùn)行。

更多精彩內(nèi)容請關(guān)注“正運(yùn)動(dòng)小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936。
本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動(dòng)技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動(dòng)控制卡_運(yùn)動(dòng)控制器_EtherCAT運(yùn)動(dòng)控制卡_EtherCAT控制器_運(yùn)動(dòng)控制系統(tǒng)_視覺控制器__運(yùn)動(dòng)控制PLC_運(yùn)動(dòng)控制_機(jī)器人控制器_視覺定位等等。
|