ZMC408CE 高性能總線型運動控制器
ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運行的場合。
ZMC408CE支持PLC、Basic、HMI組態三種編程方式。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.高性能處理器,提升運算速度、響應時間和掃描周期等;
5.一維/二維/三維、多通道視覺飛拍,高速高精;
6.位置同步輸出PSO,連續軌跡加工中對精密點膠膠量控制和激光能量控制等;
7.多軸同步控制,多坐標系獨立控制等;
8.直線插補、任意空間圓弧插補、螺旋插補、樣條插補等;
9.應用靈活,可PC上位機開發,也可脫機獨立運行;
ZMC408CE視頻介紹,點擊→“高性能EtherCAT總線運動控制器,帶你玩轉“8通道獨立PSO”應用場景”查看。
更多關于ZMC408CE的詳情介紹,點擊“推薦|8通道PSO的高性能EtherCAT總線運動控制器”查看。
PCIE464M PCIe EtherCAT總線運動控制卡
PCIE464M是一款基于PCIe的PCI Express的EtherCAT總線運動控制卡,具有多項實時和高精度運動控制控制功能。
PCIE464M運動控制卡上自帶16進16出,第三方圖像處理工控機或PC無需額外配置IO數據采集卡和PLC,即可實現IPC形態的機器視覺運動控制一體機,簡化硬件架構,節省成本,軟硬件一體化。
PCIE464M硬件功能特性:
1.可選6-64軸運動控制,支持EtherCAT總線/脈沖/步進伺服驅動器;
2.聯動軸數最高可達16軸,運動周期最小為100μs;
3.標配16進16出,其中4路高速鎖存輸入、4路高速PWM和12路高速硬件比較輸出PSO;
4.支持PWM輸出、1D/2D/3D PSO硬件位置比較輸出、視覺飛拍、連續軌跡插補等;
5.支持30+機械手模型正逆解模型算法,比如SCARA、Delta、UVW、4軸/5軸 RTCP...;
6.支持掉電存儲和掉電中斷,多重加密,提供程序更安全機制;
7.8路單端脈沖軸、4路單端編碼器軸;
8.具有一維、二維螺距補償控制,實現更高的加工精度;
PCIE464M視頻介紹,點擊→“超高速PCle EtherCAT控制卡PCIE464M,即刻提升高速高精智能裝備生產力!”查看。
更多關于PCIE464M的詳情介紹,點擊“PCIE464M-高速高精,超高速PCIe EthrtCAT實時運動控制卡”查看。
ECI2A18B 高性價比10軸運動控制卡
ECI2A18B是正運動推出的一款高性價比10軸脈沖型、模塊化的網絡型運動控制卡,采用優化的網絡通訊協議可以實現實時的運動控制,同時支持多種通信協議,方便與其他工業控制設備連接和集成。安裝配置相對便捷,適合于模塊化和靈活性要求較高的控制系統。
ECI2A18B控制卡最大可擴展至12脈沖軸,支持8路高速輸入和4路高速輸出,集成豐富的運動控制功能,包含多軸點位運動、電子凸輪,直線插補,圓弧插補,連續插補運動等,滿足多樣化的工業應用需求。
ECI2A18B硬件功能特性:
1.支持6路差分脈沖軸+4路單端脈沖軸運動控制;
2.支持1路專用的手輪輸入接口;
3.差分脈沖軸最大輸出脈沖頻率10MHz;
4.標配24+12進16+6出,其中支持4路高速鎖存,4路高速PWM,2路高速硬件比較輸出PSO(可選支持HW2功能);
5.可支持RTSys+其他高級上位機編程語言的混合編程支持;
6.支持RTBasic多任務編程;
ECI2A18B視頻介紹,點擊→“【加量不加價】高性價比十軸脈沖運動控制卡ECI2A18B 讓您的設備在自動化行業內卷中脫穎而出!”查看。
更多關于ECI2A18B的詳情介紹,點擊“【加量不加價】正運動網絡型運動控制卡ECI2618B/ECI2A18B”查看。
本文案例java開發環境:
操作系統環境:Win11_64位
Java版本:Oracle OpenJDK 22.0.2
IntelliJ IDEA版本:IntelliJ IDEA 2024.1.2
Java開發流程
1 新建項目
打開IntelliJ IDEA 2024.1.2,新建項目,生成器選擇Spring Boot,語言選java,類型選擇Maven,選擇JDK版本(此處選擇JDK22.0.2),選擇java版本(此處是17)。
2 配置構建
配置構建,添加main下面的application,運行一遍程序,沒有問題就進行下一步。
3 創建接口
(1)按照標準開發,在當前軟件包路徑下創建接口ZmotionDao。
(2)ZmotionDao接口繼承自StdCallLibrary,并添加相應的Maven依賴項。
4 導入DLL庫
添加正運動DLL庫函數文件至resource路徑下。
5 接口實例
通過Native.load方法加載“zauxdll.dll”的DLL,并創建一個ZMotionDao接口的實例INSTANCE,并聲明需要調用的PC函數,PC函數可查詢ZMotion PC函數庫編程手冊。
6 數據類型
函數聲明中JNA對應C語言中的數據類型需要修改,PC函數原型在ZMotion PC函數庫編程手冊查詢。比如打開網口連接函數ZAux_OpenEth(char * ipaddr,ZMC_HANDLE*phandle)中的char *用String替換,ZMC_HANDLE*對應void**用PointerByReference替換。
簡單應用
1 句柄初始化
PC函數均需傳入參數句柄handle,而ZMC_HANDLE實際封裝是void*,則傳入的參數類型是void**,根據上面的數據類型轉化表,void**需要用PointerByReference()創建一個PointerByReference對象intptr,即句柄初始化完成,把intptr傳入函數即可。
2 網口連接
打開網口連接,函數參數填入控制器的IP地址(此處控制器IP地址為192.168.0.11),注意電腦IP的網段和控制器的網段一致(即電腦IP設置為192.168.0.XX),查看打印結果返回值X1,為0則控制器連接成功。
3 設置軸參數
此處函數第一個參數的數據類型ZMC_HANDLE封裝是void*,前面已初始化的二級指針對象(此處為intptr)的數據類型是void**,需要調用方法intptr.getValue()來獲取一級指針才能傳入函數,否則參數無法設置成功,查看打印結果X檢驗控制器參數是否設置成功。
4 打印結果
查看打印結果X檢驗控制器參數是否設置成功,返回的結果為0即說明設置成功。
5 簡單軸運動
軸0往正方向持續運動。
6 指針類型的參數處理
注意獲取位置函數的第三個參數是一級指針類型,此處需用數組去接收函數返回的數據。
此時數組第一個元素dpos[0]即對應軸0的位置,程序上死循環不斷獲取軸0位置,直至DPOS為100停止運動并關閉控制器的連接。
五角星軌跡代碼如下:
(1)變量定義。
int[] piAxislist = {0,1}; //運動軸列表 inta =30; //五角星的邊長 int[] status_x = {0}; //x軸的運動狀態 int[] status_y = {0}; //y軸的運動狀態 float[][] pfDisancelists =newfloat[11][2]; // 初始化運動距離列表 int[] GetValue = {0}; //當前剩余緩沖數
(2)用二維數組來存放五角星軌跡的位置。
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)通過函數ZAux_Direct_MoveAbs根據五角星軌跡點位運動。
// 循環調用運動函數 for(float[] pfDisancelist : pfDisancelists) { ZMotionDao.INSTANCE.ZAux_Direct_GetRemain_Buffer( intptr.getValue(),0, GetValue);//獲取軸 0 剩余緩沖數 System.out.printf("當前剩余緩沖數為%dn",GetValue[0]); if(GetValue[0]>0) { ZMotionDao.INSTANCE.ZAux_Direct_MoveAbs(intptr.getValue(),2, piAxislist, pfDisancelist); } }
(4)通過函數ZAux_Direct_GetIfIdle得到的status_x[0]和status_y[0]判斷運動是否結束。
// 判斷運動是否結束 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示波器監控軌跡
RTSys是正運動推出的集成運動控制+機器視覺功能的開發軟件,先用RTSys軟件連接控制器,控制器默認IP是192.168.0.11,軸參數窗口監控參數設置是否成功,打開示波器,通過示波器觀察軌跡是否正確。
教學視頻可點擊→“EtherCAT運動控制卡應用開發教程之Java_嗶哩嗶哩_bilibili”查看。
完整代碼獲取地址
▼
本次,正運動技術EtherCAT運動控制卡應用開發教程之Java,就分享到這里。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。
本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。
審核編輯 黃宇
-
JAVA
+關注
關注
20文章
2987瀏覽量
107330 -
運動控制
+關注
關注
4文章
643瀏覽量
33431 -
ethercat
+關注
關注
19文章
1062瀏覽量
39736
發布評論請先 登錄
控制系統調優必備知識:“運動控制卡 控制周期怎么算”你真的懂了嗎?






評論