一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

快速入門 | 篇八:如何進行運動控制器EtherCAT總線的基礎(chǔ)使用?

 阿明哥哥資料區(qū) 2020-09-30

今天,我們來講解一下正運動技術(shù)運動控制器EtherCAT總線的基礎(chǔ)使用。

教學(xué)視頻

1、材料準(zhǔn)備與控制器接線參考

材料準(zhǔn)備:
1)電腦1臺,安裝ZDevelop3.01以上版本軟件。
2)控制器1個。
3)24V直流電源2個(主電源,IO電源)。
4)總線驅(qū)動器+電機(或步進驅(qū)動器+電機)若干。
5)控制器接線端子若干。
6)網(wǎng)線若干。
7)連接線若干。
8)不同類型擴展模塊多個(擴展模塊接線參考參見下文)。

控制器接線參考
2、擴展模塊的作用
當(dāng)控制器自身的軸資源、IO資源不夠用時,可采用擴展模塊來擴展,可以擴展脈沖軸、數(shù)字量輸入輸出、模擬量輸入輸出這三種類型。只有帶脈沖軸接口的擴展模塊才支持?jǐn)U展脈沖軸數(shù),總線軸不可擴展。
擴展模塊按連接方式可分為ZCAN總線擴展模塊和EtherCAT擴展模塊兩類。
按產(chǎn)品系列劃分,可分為ZCAN擴展模塊,EtherCAT擴展模塊、ZMIO300擴展模塊三大類。
IO數(shù)字量擴展:ZMC控制器4系列及以上的型號IO點數(shù)可擴展至4096點。
AIO模擬量擴展:ZMC控制器4系列及以上的型號AIO點數(shù)可擴展至520點。

軸擴展:只能擴展脈沖軸,鑒于成本和使用方面,不建議使用過多軸擴展板,可選用支持脈沖軸數(shù)較多的控制器型號。

控制器可擴展的IO點數(shù)可在硬件手冊或“命令與輸出”窗口輸入?*max打印查看。

3、EtherCAT總線擴展模塊

EtherCAT總線擴展模塊包含兩個系列:可分為EIO擴展模塊、ZMIO300-ECAT擴展模塊。

EIO1616MT支持?jǐn)U展數(shù)字量IO,包含16路輸入和16路輸出。

EIO24088可擴展數(shù)字量IO和脈沖軸,支持?jǐn)U展8個脈沖軸,包含24路輸入和8路輸出。

ZMIO300-ECAT擴展模塊為立式組合模塊,可擴展數(shù)字量IO和模擬量。

EtherCAT通訊建議采用帶屏蔽層的雙絞線進行網(wǎng)絡(luò)數(shù)據(jù)傳輸。

EIO1616MT

EIO24088

ZMIO300-ECAT+16DO+16DI+4DA+4AD

1)EIO擴展模塊

A、EIO擴展模塊使用EtherCAT總線擴展,可選型號如下表:

EIO1616雙電源供電(除了主電源,IO也需要單獨供電),EIO24088為單電源供電。

擴展模塊數(shù)字量IO接口默認支持NPN型。

EtherCAT擴展模塊接線只需將各個模塊的EtherCAT口相互連接即可,EIO擴展板帶兩個EtherCAT接口,EtherCAT IN口接主控制器,EtherCAT OUT口接下級擴展板或驅(qū)動設(shè)備,不可混用。

B、EIO擴展模塊使用接線

EIO擴展接線參考如下:

ZMC432+EIO24088+EIO1616

2)ZMIO300-ECAT擴展模塊

A、ZMIO300-ECAT擴展模塊可搭配子模塊如下表:

模擬量精度為16位,有NPN和PNP兩種輸入方式可選,數(shù)字量輸入輸出口帶信號狀態(tài)指示燈。

ZMIO300-16DO/ZMIO300-16DOP數(shù)字量輸出需要一路電源單獨供電。

B、ZMIO300-ECAT擴展模塊使用接線

ZMIO300-ECAT擴展模塊接線參考如下,與EIO擴展模塊接線方法相同。

EtherCAT IN口與EtherCAT OUT口不可混用。

4、EtherCAT總線使用

EtherCAT總線上連接的電機則需要編寫一段程序來進行使能。使能之后的應(yīng)用與脈沖電機一致,運動指令都是相同的。初始化程序參見文章末尾。

初始化過程主要包含以下幾個步驟:

1、總線掃描SLOT_SCAN (slot)

2、軸映射AXIS_ADDRESS,擴展模塊IO映射NODE_IO

3、總線開啟SLOT_START (slot)

4、清除驅(qū)動器錯誤DRIVE_CLEAR(0)

5、軸使能AXIS_ENABLE(單軸使能),WDOG(總使能)

初始化成功后,便可以使用運動控制指令控制總線軸運轉(zhuǎn)。

擴展的資源必須映射到控制器本地資源才可使用。

不同的EtherCAT擴展模塊,IO映射、軸映射方法相同。

IO映射采用NODE_IO指令(數(shù)字量)、NODE_AIO指令(模擬量)設(shè)置,軸映射采用AXIS_ADDRESS指令映射軸號。

IO映射時先查看控制器自身的最大IO編號(包括外部IO接口和脈沖軸內(nèi)的接口),再使用指令設(shè)置。

若擴展的 IO與控制器自身IO編號重合,二者將同時起作用,所以IO映射的映射的編號在整個控制系統(tǒng)中均不得重復(fù)。

5、EtherCAT總線相關(guān)概念

總線相關(guān)指令參數(shù)會用到如下編號:

槽位號(slot)

槽位號是指控制器上總線接口的編號,缺省為0。當(dāng)控制器上有多個總線接口,?*SLOT查看槽位號。

運動控制器支持單總線時,槽位號為0。

支持雙總線時,EtherCAT總線槽位號為0,RTEX總線槽位號為1。

設(shè)備號(node)

設(shè)備號是指一個槽位上連接的所有設(shè)備的編號,從0開始,按設(shè)備在總線上的連接順序自動編號,可以通過NODE_COUNT(slot)指令查看。

驅(qū)動器編號

控制器會自動識別出槽位上的驅(qū)動器,編號從0開始,按驅(qū)動器在總線上的連接順序自動編號。

驅(qū)動器編號與設(shè)備號不同,只給槽位上的驅(qū)動器設(shè)備編號,其他設(shè)備忽略。

6、IO映射

1)數(shù)字量IO

NODE_IO指令設(shè)置設(shè)備的數(shù)字量IO起始編號,單個設(shè)備的輸入輸出的起始編號一樣。必須總線掃描后才能設(shè)置。

語法:

NODE_IO(slot, node)=iobase

   slot:槽位號,0-缺省

   node:設(shè)備編號,編號從0開始

   iobase:映射IO起始編號,設(shè)置結(jié)果只會是8的倍數(shù)

示例:

SLOT_SCAN(0)         '掃描總線

IF NODE_COUNT(0)>0 THEN '判斷槽位0上是否有設(shè)備

   NODE_IO(0,0)=32   '設(shè)置槽位0接口設(shè)備0的IO起始編號為32

   ?NODE_IO(0,0)       '打印出設(shè)備0的IO起始編號

ENDIF

2)模擬量IO

NODE_AIO指令設(shè)置設(shè)備的模擬量IO起始編號,單個設(shè)備的輸入輸出的起始編號一樣。必須總線掃描后才能讀取。

NODE_AIO(slot, node[,idir])=Aiobase

   slot:槽位號,0-缺省

   node:設(shè)備編號,編號從0開始

   idir:AD/DA選擇 。0-缺省,同時設(shè)置AIN、AOUT,讀取時只讀AIN;3-AIN;4-AOUT

示例:

SLOT_SCAN(0)            '掃描總線

IF NODE_COUNT(0)>0 THEN         '判斷槽位0上是否有設(shè)備

   NODE_AIO(0,0,0)=8   '設(shè)置槽位0接口設(shè)備0的AIN和AOUT起始編號都為8

   ?NODE_AIO(0,0,0)     '打印出設(shè)備0的AIO起始編號

ENDIF

7、EtherCAT總線軸映射

總線軸需要進行軸映射操作,采用AXIS_ADDRESS指令映射,操作方法如下:

AXIS_ADDRESS(軸號)=(槽位號<<16)+驅(qū)動器編號+1

軸映射寫在總線初始化程序中,總線掃描之后,開啟總線之前。

示例:

AXIS_ADDRESS (0)=(0<<16)+0+1   '第一個ECAT驅(qū)動器,驅(qū)動器編號0,綁定為軸0

AXIS_ADDRESS (2)=(0<<16)+1+1   '第二個ECAT驅(qū)動器,驅(qū)動器編號1,綁定為軸2

AXIS_ADDRESS (1)=(0<<16)+2+1   '第三個ECAT驅(qū)動器,驅(qū)動器編號2,綁定為軸1

ATYPE(0)=65   '設(shè)置為ECAT軸類型, 65-位置 66-速度 67-轉(zhuǎn)矩 

ATYPE(1)=65 

ATYPE(2)=65

8、EtherCAT總線狀態(tài)

使用編程軟件成功連接到控制器之后,執(zhí)行總線掃描之后,在線命令欄輸入?*EtherCAT打印出每個NODE節(jié)點的狀態(tài)。

Slot 0 contain 1 nodes:0槽位口共連接了1個設(shè)備

Lostcount 0-0:丟包數(shù)

Node:設(shè)備連接NODE編號

Status:設(shè)備連接狀態(tài),參考NODE_STATUS

Mainid:廠商ID

Productid:設(shè)備ID

Axises:設(shè)備總軸數(shù)

Alstate:設(shè)備OP狀態(tài)

Node_profile:設(shè)備Profile設(shè)置

Bindaxis:映射到控制器的軸號,-1表示未映射

Drive_profile:設(shè)備收發(fā)PDO配置

Controlword:控制字

Drive_status:設(shè)備當(dāng)前狀態(tài),參考DRIVE_STATUS

Drive_mode:設(shè)備控制模式

Target:電機位置

Encode:編碼器位置

9、EtherCAT擴展模塊參考配置

控制模塊接線完成,使用ZDevelop軟件連接上控制器,運行總線初始化程序,打開“控制器”-“控制器狀態(tài)”窗口,查看槽位0節(jié)點信息,可以看到EtherCAT總線連接的全部設(shè)備的信息。

1)EIO擴展模塊

控制模塊配置:

1個ZMC432+1個EIO1616MT。

EIO1616MT的節(jié)點號為0,擴展的數(shù)字量輸入IO編號為1024-1039共16個,擴展的數(shù)字量輸出IO編號為1024-1039共16個。

NODE_IO(0,0)=1024  

  2)ZMIO300-ECAT擴展模塊

控制模塊配置:

1個ZMC432+1個ZMIO300-ECAT通訊模塊+4個ZMIO300-16DI輸入+2個ZMIO300-16DO輸出+1個ZMIO300-4AD+1個ZMIO300-4DA。

NODE_IO(0,0)=32   'IO映射,起始編號從32開始,擴展了64個輸入和32個輸出

NODE_AIO(0,0,0)=4  'AIO映射,起始編號從4開始,擴展4個輸入和4個輸出

10、EtherCAT總線參考配置1

控制模塊配置:

1個ZMC432+2個總線驅(qū)動器。

使用ZDevelop軟件連接上控制器,執(zhí)行完總線初始化程序后,打開“控制器”-“控制器狀態(tài)”窗口,可查看槽位0節(jié)點信息,或在線命令欄輸入?*EtherCAT打印出每個NODE節(jié)點的狀態(tài)。

此時總線上可以掃描到兩個節(jié)點,這兩個節(jié)點均為總線驅(qū)動器,每個驅(qū)動器各帶一個電機,將節(jié)點0的軸映射到軸6,將節(jié)點1的軸映射到軸7。

AXIS_ADDRESS(6)= (0<<16)+0+1   '映射軸號

AXIS_ADDRESS(7)=(0<<16)+1+1

ATYPE(6)=65'設(shè)置控制模式,65-位置 66-速度 67-轉(zhuǎn)矩

ATYPE(7)=65

在線命令欄輸入?*EtherCAT打印信息如下:

11、EtherCAT總線參考配置2

控制模塊配置:

1個ZMC432+1個EIO1616MT+2個總線驅(qū)動器。

使用ZDevelop軟件連接上控制器,執(zhí)行完總線初始化程序后,打開“控制器”-“控制器狀態(tài)”窗口,可查看槽位0節(jié)點信息,或在線命令欄輸入?*EtherCAT打印出每個NODE節(jié)點的狀態(tài)。

此時總線上可以掃描到3個節(jié)點,0節(jié)點為EIO1616MT數(shù)字量IO擴展模塊,帶16進16出,IO映射編號范圍為32-47,NODE_IO(0,0)=32 

節(jié)點1和2均為總線驅(qū)動器,每個驅(qū)動器各帶一個電機,將這兩個軸的軸號分別映射為軸6、軸7。

在線命令欄輸入?*EtherCAT打印信息如下:

12、EtherCAT總線初始化程序

此初始化程序為通用版本,以上幾種配置均適用,使用時只需更改個別全局定義的參數(shù)即可。

運動控制模塊根據(jù)實際使用情況編寫。

'**********ECAT總線初始化主程序***********global CONST PUL_AxisStart = 0 '本地脈沖軸起始軸號global CONST PUL_AxisNum = 0 '本地脈沖軸軸數(shù)量global CONST Bus_AxisStart = 6 '總線軸起始軸號global CONST Bus_NodeNum   = 1      '總線配置節(jié)點數(shù)量,用于判斷實際檢測到的從站數(shù)量是否一致global MAX_AXISNUM '最大軸數(shù)MAX_AXISNUM = SYS_ZFEATURE(0)   '自動獲取控制器支持的軸數(shù)global Bus_InitStatus '總線初始化完成狀態(tài)Bus_InitStatus = -1global  Bus_TotalAxisnum    '檢查掃描的總軸數(shù)delay(3000)        '延時3S等待驅(qū)動器上電,不同驅(qū)動器自身上電時間不同,具體根據(jù)驅(qū)動器調(diào)整延時?'總線通訊周期:',SERVO_PERIOD,'us'Ecat_Init()      '初始化ECAT總線 while (Bus_InitStatus = 0) Ecat_Init()wendif Bus_InitStatus = 1 then '總線初始化是否完成 main() '運動控制模塊 endifEND'************ECAT總線初始化**********'初始流程: slot_scan(掃描總線) -> 從站節(jié)點映射軸/io -> SLOT_START(啟動總線) -> 初始化成功'***********************************global sub Ecat_Init() LOCAL Node_Num '節(jié)點設(shè)備編號 LOCAL Temp_Axis '當(dāng)前總線軸的軸號 LOCAL Drive_Vender '當(dāng)前設(shè)備廠商編號 LOCAL Drive_Device '設(shè)備編號  LOCAL  Drive_Alias         '設(shè)備撥碼ID RAPIDSTOP(2) for i=0 to MAX_AXISNUM - 1 '初始化還原軸類型 AXIS_ENABLE(i) = 0 '關(guān)軸使能 atype(i)=0 '設(shè)置為虛擬軸 AXIS_ADDRESS(i) =0 DELAY(10) '防止所有驅(qū)動器全部同時切換使能導(dǎo)致瞬間電流過大  next Bus_InitStatus = -1 Bus_TotalAxisnum = 0 '將掃描的總線總軸數(shù)置0 SLOT_STOP(0)   delay(200) slot_scan(0) '掃描總線 if return then     ?'總線掃描成功','連接從站設(shè)備數(shù):'NODE_COUNT(0) if NODE_COUNT(0) <> Bus_NodeNum then '判斷總線檢測數(shù)量是否為實際接線數(shù)量 ?'' ?'掃描節(jié)點數(shù)量與程序配置數(shù)量不一致!' ,'配置數(shù)量:'Bus_NodeNum,'檢測數(shù)量:'NODE_COUNT(0) Bus_InitStatus = 0 '初始化失敗。報警提示 'return    endif    ''開始映射軸號' for Node_Num=0 to NODE_COUNT(0)-1 '遍歷掃描到的所有從站節(jié)點 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é)點是否有電機        for j=0 to NODE_AXIS_COUNT(0,Node_Num)-1      '根據(jù)節(jié)點帶的電機數(shù)量循環(huán)配置軸參數(shù)(針對一拖多驅(qū)動器) Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum '軸號按NODE順序分配,總線開始軸號+總線掃描軸號 'Temp_Axis = Drive_Alias '軸號按驅(qū)動器設(shè)定的撥碼分配(一拖多需要特殊處理) base(Temp_Axis) AXIS_ADDRESS(Temp_Axis)= (0<<16)+ Bus_TotalAxisnum + 1 '映射軸號          ATYPE=65    '設(shè)置控制模式 65-位置 66-速度 67-轉(zhuǎn)矩    disable_group(Temp_Axis) '每軸單獨分組 Bus_TotalAxisnum=Bus_TotalAxisnum+1 '總軸數(shù)+1 next else 'IO擴展模塊 Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,1024 + 32*Node_Num) '映射擴展模塊IO ?'擴展IO映射完成' endif next    ?'軸號映射完成','連接總軸數(shù):'Bus_TotalAxisnum wa 200 SLOT_START(0) '啟動總線    if return then       wdog=1              '使能總開關(guān) '?'開始清除驅(qū)動器錯誤' for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 BASE(i) DRIVE_CLEAR(0)        DELAY 50 '?'驅(qū)動器錯誤清除完成' datum(0) '清除控制器軸狀態(tài)錯誤'        wa 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  endifend sub'********總線IO模塊映射********'通過NODE_IO(0,Node_Num)分配模塊IO起始地址,不使用擴展模塊的時候刪掉此段'*****************************global sub Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum) if iVender = $41B then '正運動IO擴展模塊 NODE_IO(0,iNode) = i_IoNum 'NODE_AIO(0,iNode) = 4*(iNode+1) ?'IO映射成功'  endifend sub
'**********運動控制模塊********'初始化完成后,使用運動控制指令控制ECAT總線軸運動'*****************************global sub main() RAPIDSTOP(2)  WAIT IDLE BASE(6,7) '選擇總線軸軸號 ATYPE=65,65 UNITS=100,100 '脈沖當(dāng)量設(shè)置 SPEED=100,100 ACCEL=1000,1000  DECEL=1000,1000 DPOS=0,0 MPOS=0,0  TRIGGER              '自動觸發(fā)示波器 MOVE(100,100) '先運動100,100位置  MOVECIRC(200,0,100,0,1)  '半徑100順時針畫半圓,終點坐標(biāo)(300,100)end sub

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品白丝一区二区| 成人精品亚洲欧美日韩| 午夜视频在线观看日韩| 亚洲视频偷拍福利来袭| 儿媳妇的诱惑中文字幕| 久久国产精品亚州精品毛片| 少妇肥臀一区二区三区| 亚洲国产欧美精品久久| 欧美日韩亚洲巨色人妻| 美国黑人一级黄色大片| 成年午夜在线免费视频| 亚洲精品伦理熟女国产一区二区| 亚洲欧美天堂精品在线| 国产国产精品精品在线| 99热九九热这里只有精品| 午夜国产成人福利视频| 久久精品色妇熟妇丰满人妻91| 一个人的久久精彩视频 | 99久久免费中文字幕| 国产一级片内射视频免费播放| 欧美在线观看视频免费不卡| 亚洲欧美国产精品一区二区| 欧美日韩亚洲国产综合网| 日韩人妻精品免费一区二区三区| 亚洲精品国产福利在线| 97人妻精品一区二区三区男同 | 91亚洲国产成人久久| 亚洲一区二区三区三区| 超碰在线播放国产精品| 久久国产人妻一区二区免费| 久久精品亚洲精品一区| 日韩精品视频高清在线观看| 亚洲av秘片一区二区三区| 亚洲一二三四区免费视频 | 日本午夜免费观看视频| 日韩人妻欧美一区二区久久| 开心五月激情综合婷婷色| 国产欧美一区二区久久| 日本久久精品在线观看| 国产麻豆一区二区三区在| 亚洲国产成人精品福利|