EtherCAT是自動化控制最好的實時環形控制總線之一,本文以最簡單的方式帶你實際操作ZMC300E的EtherCAT總線,讓你的EtherCAT電機轉起來。
前言
當一個鼠標插入到電腦時,發生了什么?
然后,電腦會提示安裝驅動;
最后,就可以通過鼠標來移動光標、單擊、雙擊等操作了。
這有問題么?當前沒有問題,但作為程序猿,有兩個地方值得深挖一下。1、電腦安裝的驅動,是什么驅動?當然是鼠標驅動,因為我們接入的是鼠標。但電腦是如何知道呢?原來USB規范中,要求每個USB設備都要有自己的設備描述符,電腦通過分析該描述符,才知道接入的是什么設備。2、為什么能通過鼠標來移動光標?這是雙方共同合作的結果。首先鼠標提供光標位置的數據,然后電腦收到鼠標的數據后,將數據作用到光標的位置上產生移動效果。這需要有個前提,即鼠標數據的格式,電腦需要先知道其格式,才能解釋這份數據。這份數據格式的定義,在USB的接口描述符規范中進行了定義。
說了這么多,這和EtherCAT有關系么?當然有,對于EtherCAT或者任意一個總線來說,都需要知道接入設備的類型及數據格式,否則是無法解釋數據的,通常有兩種方式:
事先約定:通過事先約定的來確定工作如何進行。這就像發個信息說“我們晚上8點一起看電影吧“一樣簡單,這是小編喜歡它的原因。但這個約定有時就像友誼的小船說翻就翻,對方招呼也不打,只剩你一個人還傻傻地站在的電影院門口;
協議規范:定義一套完整的規范,大家一起遵循它。規范通常都很多很雜,學習成本較高,按規范開發就像是你去做的基金定投,短期收益低,但穩定可靠。
EhterCAT和USB一樣都采用了協議規范這種方式,這里簡單介紹一下EtherCAT的相關規范及用途:
ESI(EtherCAT Slave Information):這個是從站提供的標準描述規范文件,該文件描述了設備的類型、數據格式及一些“特殊癖好”,這就相當于USB的設備描述符+接口描述符。
ENI(EtherCAT Network Information):這個是用于給主站啟動時,加載的標準配置規范文件,用于初始化所有的從站。這個文件描述了從站的數量、每個從站的類型及數據格式、DC等配置信息。
ESI還理解,為啥還多了個ENI呢?EtherCAT規范為了滿足工業控制的復雜性,ESI中提供了非常強大的可配置功能,相對的使用起來也變得困難了。因此EtherCAT采用靜態化配置,即由PC使用可視化工具進行對應的配置工作,配置完成后導出不可變的ENI配置,給到具體的主站設備來執行。所謂靜態化配置,即EtherCAT網絡設備發生變化時,需要重新執行配置工作,相比于USB的全自動配置,功能強大了,但使用也麻煩了。有得必有失,這是EtherCAT的選擇。簡單總結一下EtherCAT開發,可分三步走:生成ENI,加載ENI,解釋輸入輸出數據。
準備工作
開始EtherCAT測試前,需要準備以下硬件:一臺電腦、一臺ZMC300E運動控制器、一臺EtherCAT伺服驅動器、2根網線,然后使用網線將設備按如下示意圖進行連接。
生成ENI文件
1. 啟動EtherCAT服務
打開putty.exe軟件,輸入運動控制器NET1的默認IP地址:192.168.1.136,賬號和密碼為root。
2.連接設備
啟動ZlgEtherCatStudio上位機配置軟件,輸入運動控制器NET1的默認IP地址:192.168.1.136,點擊回車。
3. 掃描網絡
通過掃描EtherCAT總線,來識別接入了多少個設備,并將其網絡拓撲添加到本地主站樹節點。
4.導入ESI
如果該從站無法正確識別,可手動導入從站ESI(EtherCAT Slave Information)文件。
5. 配置FMMU
一般應用不需配置從站FMMU/SM,使用從站默認配置即可。當需要改變輸入輸出變量時,可通過本配置項配置。
6. 生成ENI文件
導出ENI,取名為text_eni。
加載ENI文件1.將上一步生成的test_eni.xml文件,通過WinSCP工具上傳到運動控制器的目錄/opt中。
2. 使用控制器加載ENI配置/文件在putty.exe工具,先輸入ctrl+c結束當前主站程序,輸入以下命令啟動主站并加載ENI配置文件:/opt/ecat_test/master /opt/test_eni.xml,看到輸出ethercat start success即代表成功。
解釋輸入輸出數據
在CiA402規范中,定義了伺服類設備的數據格式,這里給大家介紹一下最常用的位置控制模式的數據格式。
1.輸出數據
Controlword:控制字,16Bit,主要用于控制電機上下電,抱閘等;
Target Position:目標位置,32Bit,用于控制電機轉到指定的位置。
2.輸入數據(相對于設備)
Statusword:控制字,16Bit,主要用于控制電機上電、下電、抱閘等操作;
Position Actual Value:實際位置,用于反饋電機當前所在位置。我們要做的就是周期性解釋以上4個數據,然后執行對應的操作即可,可參考如下代碼:
電機測試
在putty.exe工具中,可使用以下命令,對電機進行簡易測試,這些命令是基于CiA402規范進行實現的。
1. move_test命令
angle表示電機轉動角度,輸入該命令后,電機會一直重復執行輸出:先正轉angle度,然后反轉angle度。
輸入move_test 90,仔細觀察電機的轉動,如果發現轉動的角度比90度小,則說明脈沖當量偏小,應適當增加。推薦10倍住上遞增進行測試,該值默認為1。
2、units命令unit表示脈沖當量,units 1000命令用于將軸0的脈沖當量設置成1000。使用units?查看所有軸的脈沖當量。
其它補充
1. 關于脈沖當量
在實際應用中,脈沖當量的準備值,是如何計算出來的?這個應根據實際的場景及所需要單位來確定,這里給出一個常見的,以角度為單位的脈沖當量計算公式。
編碼器的分辨率,可以從伺服驅動器的手冊得到。
2. 關于EtherCAT主站
ZMC300E提供的EtherCAT主站,采用的是KPA master主站,商業授權,其主要特點是高效、穩定、支持通過硬件來消除幀抖動(ZMC300E可做到±15us的抖動),我司已購買其版權,用戶可免費自由使用。
-
電機
+關注
關注
142文章
9044瀏覽量
145790
發布評論請先 登錄
相關推薦
評論