技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > EtherCAT運動控制卡應(yīng)用開發(fā)教程之Java

EtherCAT運動控制卡應(yīng)用開發(fā)教程之Java

時間:2025-06-13 14:43:12來源:深圳市正運動技術(shù)有限公司

導(dǎo)語:?ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應(yīng)用于各種需要脫機或聯(lián)機運行的場合。

  ZMC408CE 高性能總線型運動控制

  ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應(yīng)用于各種需要脫機或聯(lián)機運行的場合。

運動控制

  ZMC408CE支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機API編程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。

運動控制

  ZMC408CE硬件功能特性:

  1.支持8軸運動控制(脈沖+EtherCAT總線),EtherCAT同步周期可快至125us;

  2.24路通用輸入、16路通用輸出,模擬量AD/DA各兩路;

  3.8路10MHz高速差分脈沖輸出,總線軸、脈沖軸可混合插補;

  4.高性能處理器,提升運算速度、響應(yīng)時間和掃描周期等;

  5.一維/二維/三維、多通道視覺飛拍,高速高精;

  6.位置同步輸出PSO,連續(xù)軌跡加工中對精密點膠膠量控制和激光能量控制等;

  7.多軸同步控制,多坐標系獨立控制等;

  8.直線插補、任意空間圓弧插補、螺旋插補、樣條插補等;

  9.應(yīng)用靈活,可PC上位機開發(fā),也可脫機獨立運行;

  PCIE464M PCIe EtherCAT總線運動控制卡

  PCIE464M是一款基于PCIe的PCI Express的EtherCAT總線運動控制卡,具有多項實時和高精度運動控制控制功能。

運動控制

  PCIE464M運動控制卡上自帶16進16出,第三方圖像處理工控機或PC無需額外配置IO數(shù)據(jù)采集卡和PLC,即可實現(xiàn)IPC形態(tài)的機器視覺運動控制一體機,簡化硬件架構(gòu),節(jié)省成本,軟硬件一體化。

運動控制

  PCIE464M硬件功能特性:

  1.可選6-64軸運動控制,支持EtherCAT總線/脈沖/步進伺服驅(qū)動器;

  2.聯(lián)動軸數(shù)最高可達16軸,運動周期最小為100μs;

  3.標配16進16出,其中4路高速鎖存輸入、4路高速PWM和12路高速硬件比較輸出PSO;

  4.支持PWM輸出、1D/2D/3D PSO硬件位置比較輸出、視覺飛拍、連續(xù)軌跡插補等;

  5.支持30+機械手模型正逆解模型算法,比如SCARA、Delta、UVW、4軸/5軸 RTCP...;

  6.支持掉電存儲和掉電中斷,多重加密,提供程序更安全機制;

  7.8路單端脈沖軸、4路單端編碼器軸;

  8.具有一維、二維螺距補償控制,實現(xiàn)更高的加工精度;

  ECI2A18B 高性價比10軸運動控制卡

  ECI2A18B是正運動推出的一款高性價比10軸脈沖型、模塊化的網(wǎng)絡(luò)型運動控制卡,采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實現(xiàn)實時的運動控制,同時支持多種通信協(xié)議,方便與其他工業(yè)控制設(shè)備連接和集成。安裝配置相對便捷,適合于模塊化和靈活性要求較高的控制系統(tǒng)。

運動控制

  ECI2A18B控制卡最大可擴展至12脈沖軸,支持8路高速輸入和4路高速輸出,集成豐富的運動控制功能,包含多軸點位運動、電子凸輪,直線插補,圓弧插補,連續(xù)插補運動等,滿足多樣化的工業(yè)應(yīng)用需求。

運動控制

  ECI2A18B硬件功能特性:

  1.支持6路差分脈沖軸+4路單端脈沖軸運動控制;

  2.支持1路專用的手輪輸入接口;

  3.差分脈沖軸最大輸出脈沖頻率10MHz;

  4.標配24+12進16+6出,其中支持4路高速鎖存,4路高速PWM,2路高速硬件比較輸出PSO(可選支持HW2功能);

  5.可支持RTSys+其他高級上位機編程語言的混合編程支持;

  6.支持RTBasic多任務(wù)編程;

  本文案例java開發(fā)環(huán)境:

  1、操作系統(tǒng)環(huán)境:Win11_64位

  2、Java版本:Oracle OpenJDK 22.0.2

  3、IntelliJ IDEA版本:IntelliJ IDEA 2024.1.2

  Java開發(fā)流程

  1、新建項目

  打開IntelliJ IDEA 2024.1.2,新建項目,生成器選擇Spring Boot,語言選java,類型選擇Maven,選擇JDK版本(此處選擇JDK22.0.2),選擇java版本(此處是17)。

運動控制

運動控制

  2、配置構(gòu)建

  配置構(gòu)建,添加main下面的application,運行一遍程序,沒有問題就進行下一步。

運動控制

運動控制

  3、創(chuàng)建接口

  (1)按照標準開發(fā),在當前軟件包路徑下創(chuàng)建接口ZmotionDao。

運動控制

運動控制

  (2)ZmotionDao接口繼承自StdCallLibrary,并添加相應(yīng)的Maven依賴項。

  4、導(dǎo)入DLL庫

  添加正運動DLL庫函數(shù)文件至resource路徑下。

運動控制

  5、接口實例

  通過Native.load方法加載“zauxdll.dll”的DLL,并創(chuàng)建一個ZMotionDao接口的實例INSTANCE,并聲明需要調(diào)用的PC函數(shù),PC函數(shù)可查詢ZMotion PC函數(shù)庫編程手冊。

運動控制

  6、數(shù)據(jù)類型

  函數(shù)聲明中JNA對應(yīng)C語言中的數(shù)據(jù)類型需要修改,PC函數(shù)原型在ZMotion PC函數(shù)庫編程手冊查詢。比如打開網(wǎng)口連接函數(shù)ZAux_OpenEth(char * ipaddr,ZMC_HANDLE*phandle)中的char *用String替換,ZMC_HANDLE*對應(yīng)void**用PointerByReference替換。

運動控制

運動控制

  簡單應(yīng)用

  1、句柄初始化

  PC函數(shù)均需傳入?yún)?shù)句柄handle,而ZMC_HANDLE實際封裝是void*,則傳入的參數(shù)類型是void**,根據(jù)上面的數(shù)據(jù)類型轉(zhuǎn)化表,void**需要用PointerByReference()創(chuàng)建一個PointerByReference對象intptr,即句柄初始化完成,把intptr傳入函數(shù)即可。

運動控制

  2、網(wǎng)口連接

  打開網(wǎng)口連接,函數(shù)參數(shù)填入控制器的IP地址(此處控制器IP地址為192.168.0.11),注意電腦IP的網(wǎng)段和控制器的網(wǎng)段一致(即電腦IP設(shè)置為192.168.0.XX),查看打印結(jié)果返回值X1,為0則控制器連接成功。

運動控制

  3、設(shè)置軸參數(shù)

運動控制

  此處函數(shù)第一個參數(shù)的數(shù)據(jù)類型ZMC_HANDLE封裝是void*,前面已初始化的二級指針對象(此處為intptr)的數(shù)據(jù)類型是void**,需要調(diào)用方法intptr.getValue()來獲取一級指針才能傳入函數(shù),否則參數(shù)無法設(shè)置成功,查看打印結(jié)果X檢驗控制器參數(shù)是否設(shè)置成功。

運動控制

  4、打印結(jié)果

  查看打印結(jié)果X檢驗控制器參數(shù)是否設(shè)置成功,返回的結(jié)果為0即說明設(shè)置成功。

運動控制

  5、簡單軸運動

  軸0往正方向持續(xù)運動。

運動控制

  6、指針類型的參數(shù)處理

  注意獲取位置函數(shù)的第三個參數(shù)是一級指針類型,此處需用數(shù)組去接收函數(shù)返回的數(shù)據(jù)。

  此時數(shù)組第一個元素dpos[0]即對應(yīng)軸0的位置,程序上死循環(huán)不斷獲取軸0位置,直至DPOS為100停止運動并關(guān)閉控制器的連接。

運動控制

運動控制

  五角星軌跡代碼如下:

  (1)變量定義。

  int[] piAxislist = {0,1}; //運動軸列表int a = 30; //五角星的邊長int[] status_x = {0}; //x軸的運動狀態(tài)int[] status_y = {0}; //y軸的運動狀態(tài)float[][] pfDisancelists = new float[11][2]; // 初始化運動距離列表int[] GetValue = {0}; //當前剩余緩沖數(shù)

  (2)用二維數(shù)組來存放五角星軌跡的位置。

  float[][] pfDisancelists = new float[11][2]; // 初始化運動距離列表 pfDisancelists[0] = new float[]{0, (float) (a * Math.cos(0.1 * Math.PI))}; pfDisancelists[1] = new float[]{(float) (a * Math.sin(0.1 * Math.PI)), 0}; pfDisancelists[2] = new float[]{(float) (a + a * Math.sin(0.1 * Math.PI)), 0}; pfDisancelists[3] = new float[]{(float) (a * Math.sin(0.1 * Math.PI) + a * Math.sin(0.2 * Math.PI) * Math.tan(0.1 * Math.PI)), (float) (-a * Math.sin(0.2 * Math.PI))}; pfDisancelists[4] = new float[]{(float) (a * Math.cos(0.2 * Math.PI)), (float) (-(a + a * Math.sin(0.1 * Math.PI)) * Math.tan(0.2 * Math.PI) - a * Math.sin(0.2 * Math.PI))}; pfDisancelists[5] = new float[]{0, (float) (-(a + a * Math.sin(0.1 * Math.PI)) * Math.tan(0.2 * Math.PI))}; pfDisancelists[6] = new float[]{(float) (-a * Math.cos(0.2 * Math.PI)), (float) (-(a + a * Math.sin(0.1 * Math.PI)) * Math.tan(0.2 * Math.PI) - a * Math.sin(0.2 * Math.PI))}; pfDisancelists[7] = new float[]{(float) (-a * Math.sin(0.1 * Math.PI) - a * Math.sin(0.2 * Math.PI) * Math.tan(0.1 * Math.PI)), (float) (-a * Math.sin(0.2 * Math.PI))}; pfDisancelists[8] = new float[]{(float) (-a - a * Math.sin(0.1 * Math.PI)), 0}; pfDisancelists[9] = new float[]{(float) (-a * Math.sin(0.1 * Math.PI)), 0}; pfDisancelists[10] = new float[]{0, (float) (a * Math.cos(0.1 * Math.PI))};

  (3)通過函數(shù)ZAux_Direct_MoveAbs根據(jù)五角星軌跡點位運動。

  // 循環(huán)調(diào)用運動函數(shù)for (float[] pfDisancelist : pfDisancelists) { ZMotionDao.INSTANCE.ZAux_Direct_GetRemain_Buffer( intptr.getValue(), 0, GetValue);//獲取軸 0 剩余緩沖數(shù) System.out.printf("當前剩余緩沖數(shù)為%d\n" ,GetValue[0]); if (GetValue[0]>0) { ZMotionDao.INSTANCE.ZAux_Direct_MoveAbs(intptr.getValue(), 2, piAxislist, pfDisancelist); }}

  (4)通過函數(shù)ZAux_Direct_GetIfIdle得到的status_x[0]和status_y[0]判斷運動是否結(jié)束。

  // 判斷運動是否結(jié)束do { ZMotionDao.INSTANCE.ZAux_Direct_GetIfIdle(intptr.getValue(), 0, status_x); ZMotionDao.INSTANCE.ZAux_Direct_GetIfIdle(intptr.getValue(), 0, status_y);} while (status_x[0] != -1 || status_y[0] != -1);

  RTSys示波器監(jiān)控軌跡

  RTSys是正運動推出的集成運動控制+機器視覺功能的開發(fā)軟件,先用RTSys軟件連接控制器,控制器默認IP是192.168.0.11,軸參數(shù)窗口監(jiān)控參數(shù)設(shè)置是否成功,打開示波器,通過示波器觀察軌跡是否正確。

運動控制

運動控制

運動控制

運動控制

運動控制

  已同步到看一看寫下你的評論

視頻詳情 完整代碼獲取地址

運動控制

  本次,正運動技術(shù)EtherCAT運動控制卡應(yīng)用開發(fā)教程之Java,就分享到這里。

  更多精彩內(nèi)容請關(guān)注“正運動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。

  本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

標簽: 正運動運動控制

點贊

分享到:

上一篇:電動汽車行業(yè)發(fā)展現(xiàn)狀與電池...

下一篇:無人機鋰電池壽命維護方法有...

中國傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.wangxinlc.cn)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號