電機(jī)控制演示
簡(jiǎn)介
EtherCAT CoE(CAN over EtherCAT)是 EtherCAT 協(xié)議中的一種通信協(xié)議,它將 CANopen 應(yīng)用層協(xié)議集成到 EtherCAT 網(wǎng)絡(luò)中,用于分布式系統(tǒng)中的設(shè)備控制和數(shù)據(jù)交換。它結(jié)合了 CANopen 的易用性和 EtherCAT 的高性能優(yōu)勢(shì),廣泛用于工業(yè)自動(dòng)化、運(yùn)動(dòng)控制和傳感器網(wǎng)絡(luò)等領(lǐng)域。
以下是 CoE 的主要特點(diǎn)和功能:
基于CANopen:
CoE 的應(yīng)用層直接采用了 CANopen 的設(shè)備協(xié)議,包括對(duì)象字典(Object Dictionary)的結(jié)構(gòu)和服務(wù)。
通過(guò)對(duì)象字典定義設(shè)備參數(shù)、通信對(duì)象和控制數(shù)據(jù),確保了設(shè)備間的互操作性。
支持標(biāo)準(zhǔn)服務(wù):
SDO(Service Data Object):用于點(diǎn)對(duì)點(diǎn)的配置和診斷通信,允許主站與從站交換大容量數(shù)據(jù)(如參數(shù)配置)。
PDO(Process Data Object):用于實(shí)時(shí)通信,傳輸小數(shù)據(jù)量的周期性過(guò)程數(shù)據(jù),支持快速響應(yīng)。
Emergency(EMCY)消息:用于報(bào)告設(shè)備異常情況。
NMT(Network Management):提供網(wǎng)絡(luò)管理功能,如啟動(dòng)、停止和復(fù)位設(shè)備。
高效傳輸:
EtherCAT 的總線結(jié)構(gòu)和高速幀處理能力,使 CoE 能以更低的延遲和更高的效率進(jìn)行數(shù)據(jù)交換。
支持多種應(yīng)用場(chǎng)景:
適用于工業(yè)設(shè)備配置、實(shí)時(shí)監(jiān)控、參數(shù)診斷和系統(tǒng)集成等。
對(duì)象字典映射:
對(duì)象字典以層級(jí)結(jié)構(gòu)組織設(shè)備的數(shù)據(jù)和功能。
EtherCAT 使用 CoE 協(xié)議訪問(wèn)對(duì)象字典中的變量,以實(shí)現(xiàn)參數(shù)讀取、寫入和實(shí)時(shí)控制。
典型應(yīng)用:
用于支持復(fù)雜控制邏輯的驅(qū)動(dòng)器(如伺服驅(qū)動(dòng))。
用于監(jiān)控、調(diào)試和配置設(shè)備的工程工具。
本節(jié)將演示如何使用Beckhoff TwinCAT3和EtherKit開發(fā)板實(shí)現(xiàn)EtherCAT COE主從站通信,該示例工程
已支持CSP及CSV兩種操作模式。
前期準(zhǔn)備
軟件環(huán)境:
RT-Thread Studio
https://download-redirect.rt-thread.org/download/studio/RT-Thread Studio_2.2.8-setup-x86_64_202405200930.exe
RZN-FSP v2.0.0
https://github.com/renesas/rzn-fsp/releases/download/v2.0.0/setup_rznfsp_v2_0_0_rzsc_v2024-01.1.exe
Beckhoff Automation TwinCAT3
https://www.beckhoff.com/en-us/support/download-finder/search-result/?c-1=26782567
硬件環(huán)境:
EtherKit開發(fā)板
網(wǎng)線一根
Jlink調(diào)試器
CiA402伺服使用說(shuō)明
首先來(lái)看下CiA402協(xié)議:CiA402協(xié)議(Communication Interface for Drive Systems)是由CiA (CAN in Automation) 組織定義的,用于工業(yè)自動(dòng)化領(lǐng)域,特別是針對(duì)電機(jī)控制系統(tǒng)的標(biāo)準(zhǔn)化協(xié)議。CiA402是驅(qū)動(dòng)器和運(yùn)動(dòng)控制器CANopen設(shè)置子協(xié)議,定義變頻器、伺服控制器以及步進(jìn)的接口,它是國(guó)際標(biāo)準(zhǔn)IEC 61800-7系列的組成部分。CiA402協(xié)議基于CANopen通信協(xié)議,并在此基礎(chǔ)上擴(kuò)展和優(yōu)化了用于運(yùn)動(dòng)控制系統(tǒng)的功能。它主要用于伺服電機(jī)、步進(jìn)電機(jī)以及其他類型的電動(dòng)驅(qū)動(dòng)系統(tǒng)的控制。
接下來(lái)看下FSA(有限狀態(tài)自動(dòng)機(jī))顯示驅(qū)動(dòng)器的不同狀態(tài)以及如何執(zhí)行它們之間的轉(zhuǎn)換。
下面是對(duì)應(yīng)上圖各個(gè)狀態(tài)的詳細(xì)說(shuō)明:
對(duì)于控制器來(lái)說(shuō),在通信的每個(gè)周期內(nèi),都需要主站向從站發(fā)送控制字(control word),并且接收從站的狀態(tài)字進(jìn)行確認(rèn),比如說(shuō)本工程中通過(guò)CiA402_StateMachine()實(shí)現(xiàn)CiA402的狀態(tài)切換:
與此同時(shí),主站通過(guò)讀取從站的狀態(tài)字(status word, 0x6041)來(lái)了解從站當(dāng)前正在運(yùn)行的狀態(tài),通過(guò) status word可以了解關(guān)于從機(jī)當(dāng)前狀態(tài)和可能發(fā)生的故障或警告的詳細(xì)信息:
而主站通過(guò)控制字(control word, 0x6040)向從站發(fā)送控制命令,以此來(lái)改變其操作狀態(tài)或觸發(fā)指定的動(dòng)作:
CiA402對(duì)象字典定義
下面是有關(guān)CiA402對(duì)象字典在EtherKit CoE工程中支持的列表,其中已經(jīng)支持了位置模式及速度模式,可通過(guò)主站去設(shè)置控制字來(lái)與從站的過(guò)程數(shù)據(jù)進(jìn)行交互,基于CoE協(xié)議完成對(duì)控制器的讀寫:
TwinCAT3配置
在啟動(dòng)TwinCAT3之前,我們還需要做一些配置操作:
安裝ESI文件
啟動(dòng)TwinCAT之前,將發(fā)布文件夾中包含的ESI文件復(fù)制到TwinCAT目標(biāo)位置:..\TwinCAT\3.x\Config\IO\EtherCAT
注意:當(dāng)前版本的 ESI 文件位于:..\board\ports\ESI_File\Renesas EtherCAT RZN2 CoE CDP.xml
新建TwinCAT工程
打開TwinCAT軟件,點(diǎn)擊文件->新建->新建項(xiàng)目,選擇TwinCAT Projects,創(chuàng)建TwinCAT XAR Project(XML format)工程:
從站啟動(dòng)CoEApp
將EtherKit開發(fā)板上電后,需要使用網(wǎng)線連接ETH0網(wǎng)口, ethercat會(huì)默認(rèn)運(yùn)行。
從站設(shè)備掃描
新建工程之后,在左側(cè)導(dǎo)航欄找到Devices,右鍵選擇掃描設(shè)備。正常來(lái)說(shuō)如果掃描從站設(shè)備成功的話是會(huì)顯示:Device x[EtherCAT];而掃描失敗則顯示的是:Device x[EtherCAT Automation Protocol],此時(shí)就代表從站初始化失敗。
點(diǎn)擊Ok后會(huì)彈出一個(gè)窗口:Scan for boxes,點(diǎn)擊確認(rèn)后,會(huì)再次彈出窗口:Activate Free Run,由于我們首次使用CoE還需要更新EEPROM固件,所以暫時(shí)先不激活。
更新EEPROM固件
回到TwinCAT,在左側(cè)導(dǎo)航欄中,由于我們已經(jīng)成功掃描到從站設(shè)備,因此可以看到主從站的配置界
面:
我們雙擊Box 1,在中間界面的上方導(dǎo)航欄中單擊EtherCAT,并點(diǎn)擊Advanced Settings …:
這里按圖示點(diǎn)擊Download from List …:
我們寫入ESI固件到EEPROM中,這里由于我們配置的是雙網(wǎng)口,所以選擇Renesas EtherCAT RZ/N2 COE 2port,如果你配置的是三網(wǎng)口的話則選擇3port后綴的ESI文件進(jìn)行下載。
下載完成之后,我們右鍵Device x(EtherCAT)移除設(shè)備后重新掃描并添加設(shè)備,并完成激活工作(參考上文)。
EtherCAT COE測(cè)試
首先我們需要確保程序已經(jīng)正常下載至工程中,同時(shí)ESI文件已經(jīng)成功燒錄,下面是開發(fā)板串口終端打印信息:
同時(shí)我們打開前面新建的ESC工程,并且掃描設(shè)備,此時(shí)會(huì)彈出EtherCATdrive(s) added,我們選擇NC
– configuration,點(diǎn)擊OK后并激活設(shè)備:
成功激活后, EtherCAT狀態(tài)機(jī)會(huì)依次經(jīng)歷Init->Pre-Op->Safe-Op,最后到Op(Operational,可操作狀態(tài)), EtherKit CoE工程默認(rèn)開啟csp (周期同步位置模式),并且支持csv(同步周期速度模式)。
當(dāng)系統(tǒng)上電后,驅(qū)動(dòng)器自動(dòng)完成初始化,然后進(jìn)入STATE_SWITCH_ON_DISABLED狀態(tài),此時(shí)可以對(duì)驅(qū)動(dòng)器的工作狀態(tài)模式進(jìn)行設(shè)置,比如說(shuō)設(shè)置為csp或csv模式等等;同時(shí)對(duì)應(yīng)在開發(fā)板端能看到當(dāng)前軸1對(duì) 應(yīng)的CiA402狀態(tài)機(jī)信息在不斷打印:
csp位置模式控制
先來(lái)看下csp模式下的控制器:在位置模式下,我們可以將規(guī)劃好的目標(biāo)位置通過(guò)寫入控制字0x607A設(shè)置目標(biāo)位置,并且對(duì)應(yīng)狀態(tài)字0x6064可以得到實(shí)際反饋的位置信息。
而如果想要在csp或csv模式下操作,必須先將其狀態(tài)修改為STATE_OPERATION_ENABLED (可操作模式)。
展開左側(cè)導(dǎo)航欄,依次點(diǎn)擊Box1(RenesasEtherCATRZ/N2 CoE2port)->Module1(csp- axis)-
>Outputs->Control Word,首先需要將狀態(tài)切換為伺服無(wú)故障模式,主站通過(guò)向控制字0x6040寫入值0x0080(dec:128),將伺服控制器轉(zhuǎn)變?yōu)闊o(wú)障礙狀態(tài):
此時(shí)可以看到從站串口終端會(huì)停止State Transition2、State Transition7的打印,接著我們?cè)俅蜗蚩刂谱?x6040寫入值0x000F(dec:15):
此時(shí)伺服控制器由等待打開伺服使能切換到伺服運(yùn)行的狀態(tài),同時(shí)在從站串口中斷打印
StateTransition2、State Transition3、State Transition4,在經(jīng)過(guò)狀態(tài)傳輸2 3 4后, CiA402狀態(tài)機(jī)進(jìn)入STATE_OPERATION_ENABLED ,此時(shí)就可以對(duì)控制器進(jìn)行控制了。
比如說(shuō)當(dāng)前是位置模式,通過(guò)向Index:0x607A寫入位置數(shù)值,我們寫入100000:
此時(shí)依次點(diǎn)擊Box 1(Renesas EtherCAT RZ/N2 CoE 2port)->Module 1(csp - axis)->Inputs->Actual Position,查看實(shí)際反饋的位置,會(huì)發(fā)現(xiàn)Index 0x6064對(duì)應(yīng)的value會(huì)不斷自增,直到100000停止:
csv速度模式控制
首先需要將控制器模式由默認(rèn)的csp切換為csv模式,點(diǎn)擊左側(cè)導(dǎo)航欄中的Box1(RenesasEtherCAT
RZ/N2 CoE 2port),接著在中間的頁(yè)面中找到上方的Slots選擇Axis 0,在右邊預(yù)設(shè)支持的module修改為 csv ,并點(diǎn)擊‘<’標(biāo)志:
同時(shí)我們也可以觀察左側(cè)對(duì)應(yīng)的模塊信息是否更新,并切換為csv模式:
切換好模式后,我們需要重新加載設(shè)備,點(diǎn)擊TwinCAT3上方導(dǎo)航欄的TwinCAT->Reload Devices:
然后需要使控制器進(jìn)入STATE_OPERATION_ENABLED (可操作模式,參考上文),同樣是對(duì)控制字依次寫入0x0080(轉(zhuǎn)變?yōu)闊o(wú)障礙狀態(tài))、 0x000F (由等待打開伺服使能切換到伺服運(yùn)行狀態(tài))。
此時(shí)我們查看輸入的狀態(tài)字0x6041,如果對(duì)應(yīng)的value值為0x1237,那么就代表當(dāng)前處于可操作模式(STATE_OPERATION_ENABLED);如果顯示的值為0x1208,那么代表當(dāng)前status處于Fault,重新設(shè)置 control word為0x0080( dec:128),并且在重復(fù)上述操作即可。
此時(shí)我們便可對(duì)Target Velocity值進(jìn)行寫入實(shí)際想要控制的速度值:
同時(shí)可在輸入中查看實(shí)際設(shè)置的速度信息是否一致:
-
通信協(xié)議
+關(guān)注
關(guān)注
28文章
911瀏覽量
40425 -
電機(jī)驅(qū)動(dòng)
+關(guān)注
關(guān)注
60文章
1227瀏覽量
86913 -
ethercat
+關(guān)注
關(guān)注
18文章
732瀏覽量
38859
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論