時間:2021-08-11 10:52:47來源:深圳市正運動技術有限公司
今天,正運動小助手給大家分享一下EtherCAT運動控制卡之ECI2828的軸參數說明以及如何使用LabVIEW進行EtherCAT總線初始化。
一ECI2828硬件介紹
ECI2828系列運動控制卡支持多達16 軸直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸和機械手指令等;采用優(yōu)化的網絡通訊協(xié)議可以實現實時的運動控制。
ECI2828系列運動運動控制卡支持以太網,232 通訊接口和電腦相連,接收電腦的指令運行,可以通過EtherCAT總線和CAN總線去連接各個擴展模塊,從而擴展輸入輸出點數或運動軸。
ECI2828系列運動控制卡的應用程序可以使用 VC、VB、VS、C++以及C#等軟件來開發(fā),程序運行時需要動態(tài)庫 zmotion.dll。調試時可以把ZDevelop軟件同時連接到控制器,從而方便調試,方便觀察。
ECI2828系列典型連接配置圖
二、LabVIEW基本軸參數介紹
ATYPE:軸功能類型設置,只能設置為軸具備的特性(軸特性可查詢硬件手冊或使 用 ZDevelop 軟件連接上控制器以后查看控制器狀態(tài))。
UNITS:脈沖當量,指定每單位發(fā)送的脈沖數,支持 5 位小數精度。
ACCEL:軸加速度,單位為 units/s/s。當多軸運動時,插補運動的加速度為主軸加速度。建議運動前設置好加速度和減速度,運動中不要修改,運動中調整會導致速度曲線變化。
DECEL:軸減速度,單位為 units/s/s。當多軸運動時,作為插補運動的減速度。當設置為0 時,自動等于加速度ACCEL值,進行對稱的加減速。建議運動前設置好加速度和減速度,運動中不要修改,運動中調整會導致速度曲線變化。
SPEED:軸速度,單位為 units/s。當多軸運動時,作為插補運動的速度。SPEED 修改后,立刻生效,可以實現動態(tài)變速,但是改變瞬間會抖。希望平滑變速請使用 SPEED_RATIO 指令。
以上是控制軸運動的基本參數,在硬件連接沒問題的情況下,只要設置好這5個參數,就可以控制伺服或步進電機運動。
三、總線初始化文件準備
總線初始化文件一般可以使用正運動的開發(fā)環(huán)境ZDevelop來編輯。
我們可以直接打開“.zpj”項目,該項目中就包含了“ECAT初始化.bas”文件?;蛘咧苯哟蜷_“ECAT初始化.bas”文件來修改初始化程序。
以下是初始化文件的具體內容:
'*******************************************************ECAT總線初始化'''''''''global CONST BUS_TYPE = 0 '總線類型。用于上位機區(qū)分當前模式global CONST MAX_AXISNUM = 16 '最大軸數global CONST Bus_Slot = 0 '槽位號0global CONST Bus_AxisStart = 0 '總線軸起始軸號global Bus_InitStatus '總線初始化完成狀態(tài)Bus_InitStatus = -1global Bus_TotalAxisnum '檢查掃描的總軸數delay(3000) '延時3S等待驅動器上電'**********************初始化ECAT總線 Ecat_Init()end
global sub Ecat_Init() local temp_axis for i=0 to MAX_AXISNUM - 1 '初始化還原軸類型 AXIS_ENABLE(i) = 0 atype(i)=0 next Bus_InitStatus = -1 Bus_TotalAxisnum = 0 SLOT_STOP(Bus_Slot) delay(200) slot_scan(Bus_Slot) '開始掃描 if return then ?"總線掃描成功","連接設備數:"NODE_COUNT(Bus_Slot) ?"開始映射軸號" for i=0 to NODE_COUNT(Bus_Slot)-1 '遍歷總線下所有從站節(jié)點 if NODE_AXIS_COUNT(Bus_Slot,i) <>0 then '判斷當前節(jié)點是否有電機 for j=0 to NODE_AXIS_COUNT(Bus_Slot,i)-1 temp_axis = Bus_AxisStart +Bus_TotalAxisnum base(temp_axis) AXIS_ADDRESS=Bus_TotalAxisnum+1 '映射軸號 ATYPE=65 '設置控制模式 65-位置 66-速度 67-轉矩 DRIVE_PROFILE= 0 '設置PROFILE功能 disable_group(temp_axis) '每軸單獨分組 ' DRIVE_IO = 128 + (temp_axis)*16 '映射驅動器上的IO狀態(tài) ' REV_IN = 128 + (temp_axis)*16 ' FWD_IN = 129 + (temp_axis)*16 ' DATUM_IN = 130 + (temp_axis)*16 ' INVERT_IN(128 + (temp_axis)*16,ON) ' INVERT_IN(129 + (temp_axis)*16,ON) ' INVERT_IN(130 + (temp_axis)*16,ON) Bus_TotalAxisnum=Bus_TotalAxisnum+1 '總軸數+1 next endif next ?"軸號映射完成","連接總軸數:"Bus_TotalAxisnum wa 2000 SLOT_START(Bus_Slot) '啟動總線 if return then ?"總線開啟成功" ?"開始清除驅動器錯誤(根據驅動器數據字典設置)" for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 DRIVE_CONTROLWORD(i)=128 '根據驅動器數據字典 wa 100 DRIVE_CONTROLWORD(i)=6 wa 100 DRIVE_CONTROLWORD(i)=15 wa 100 next ?"驅動器錯誤清除完成" wa 100 ?"清除控制器錯誤" datum(0) DRIVE_CLEAR(0) ?"控制器錯誤清除完成" wa 100 ?"軸使能準備" for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 base(i) AXIS_ENABLE=1 next wdog=1 '使能總開關 Bus_InitStatus = 1 ?"軸使能完成" else ?"總線開啟失敗" Bus_InitStatus = 0 endif else ?"總線掃描失敗" Bus_InitStatus = 0 endifend sub
四、LabVIEW編程介紹
在進入具體程序介紹前,我們先來大概了解一下LabVIEW究竟是怎么編程的。
1.LabVIEW編程結構 -- while循環(huán)結構
While循環(huán)結構顧名思義,就是類似于C語言中的while,或是正運動開發(fā)環(huán)境ZDevelop中使用的while循環(huán)一般,來對程序進行循環(huán)掃描。我們可以通過BOOL類型輸入來控制while循環(huán)是否結束,以及將 !接入顯示控件來顯示while循環(huán)次數。
2.LabVIEW編程結構--事件結構
事件結構是我們進行人機交互的主要結構,在事件結構中,我們可以自由添加外部控件的觸發(fā)事件。
例如:在前面板處,我們添加了一個“以太網連接”的控件,當我們想在這個控件按下時,執(zhí)行對應的程序,我們就可以在事件結構中添加這個控件的事件,以此來達到我們的目的。
第一步控制器連接
第二步添加事件分支
第三步編輯事件
第四步添加以太網連接控件
第五步按下“以太網連接”控件
此時當我們按下“以太網連接”控件后,可以發(fā)現彈出一個消息框,消息框顯示“鼠標按下”,這個正是我們所要顯示的字符常量。
3. LabVIEW編程結構 -- 條件結構。
此結構類似于C語言中的if語句,當 條件結構中的?輸入為真時,執(zhí)行“真”內程序,當條件結構的?輸入為假時,執(zhí)行“假”內程序。
4. LabVIEW編程結構 -- 程序運行順序。
在LabVIEW中一般是最后添加的函數先執(zhí)行。
所以,為了進行先后順序執(zhí)行,我們可以使用順序結構來進行分類。
第一步
第二步
第三步
五LabVIEW初始化EtherCAT總線
1.下載初始化文件函數。
現在我們來介紹一下,下載“Bas文件”到控制器里所用到的函數。
2.LabVIEW中函數使用實例。
下面我們以例程8-總線控制運動例程來講解一下ZAux_BasDown函數使用方式。
(1)首先,我們在事件結構中添加了“【下載Bas文件】值改變”鼠標按下事件。
也就是當我們控件界面的“下載Bas文件”按鍵按下時觸發(fā)該事件。
(2)接下來是滿足“條件結構”中的條件,即句柄不為0時,執(zhí)行條件結構中“真”程序。
在“條件結構”中我們看到還有一個“文件對話框”的控件,該控件可以為我們打開一個用于選擇下載文件的對話框。剩下的就是選擇我們需要初始化的總線文件即可。
(3)初始化完成后,我們可以看見軸狀態(tài)為65,這代表我們使用的是csp位置模式。
3.LabVIEW中軸狀態(tài)顯示。
(1)軸狀態(tài)欄因為是實時更新的,所以需要我們循環(huán)地訪問控制器里的軸參數。這里我們可以在“事件結構”中的“超時”處寫入我們的讀取軸參數程序。“超時”事件是在其他事件未觸發(fā)時,“事件結構”中默認執(zhí)行的事件。
這里我們可以看到,此處“超時”事件中有兩個“條件結構”一個是軸參數讀取“條件結構”。在軸參數讀取的條件結構中,當連接句柄不為0時,軸參數讀取的“條件結構”便處于執(zhí)行狀態(tài),也就是只要我們一旦連接上了控制器,軸參數便一直處于實時讀取狀態(tài)。
另一個“條件結構”是總線初始化顯示程序,當“文件下載標志”、“初始化狀態(tài)”、“連接句柄”三個變量有一個不滿足要求時,便重新讀取一下總線節(jié)點、初始化文件里的“Bus_InitStatus”初始化完成標志、“Bus_TotalAxisnum”總線總軸數。
4.LabVIEW中EtherCAT交互。
要了解EtherCAT總線的SDO通訊的程序實現,我們可以在“事件結構”中看一下“設置”和“讀取”兩個按鍵里的程序。
(1)“設置”事件程序。
我們可以看見“設置”事件中僅調用了一個“ZAux_BusCmd_SDOWrite”函數就可以實現。
(2)“讀取”事件程序。
讀取也只需要調用“ZAux_BusCmd_SDORead”函數即可實現。
六調試與監(jiān)控
1.因為,ECI2828是通過TCP/IP與PC建立連接的,這意味著我們可以建立多條連接。因此,在使用啟動LabVIEW程序時,我們還可以使用正運動開發(fā)環(huán)境ZDevelop來監(jiān)控當前控制器運行狀態(tài)。
通過打印信息,我們可以看見總線初始化已成功。
2.示波器使用。
連接“ZDevelop”軟件通過軟件右側的軸參數進行控制器狀態(tài)監(jiān)控,也可以點擊“視圖”→“示波器”打開示波器對軸運動情況進行監(jiān)控。
示波器可以實現實時監(jiān)控當前的命令位置和反饋位置。
3.調試視頻。
本次,正運動技術EtherCAT運動控制卡和LabVIEW構建智能裝備(三),就分享到這里。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發(fā)環(huán)境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。
本文由正運動技術原創(chuàng),歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.wangxinlc.cn)獨家所有。如需轉載請與0755-82949061聯(lián)系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯(lián)網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-04-30
性能躍升20%!維宏NK300CX Plus數控系統(tǒng)...
2025-04-11
2025-04-08
2025-03-31
應用案例 | 使用宏集TELE監(jiān)控繼電器監(jiān)控...
2025-03-26
2025-03-20