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

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

ZMC408CE硬件功能特性:
1.支持8軸運(yùn)動(dòng)控制(脈沖+EtherCAT總線),EtherCAT同步周期可快至125us;
2.24路通用輸入、16路通用輸出,模擬量AD/DA各兩路;
3.8路10MHz高速差分脈沖輸出,總線軸、脈沖軸可混合插補(bǔ);
4.高性能處理器,提升運(yùn)算速度、響應(yīng)時(shí)間和掃描周期等;
5.一維/二維/三維、多通道視覺飛拍,高速高精;
6.位置同步輸出PSO,連續(xù)軌跡加工中對(duì)精密點(diǎn)膠膠量控制和激光能量控制等;
7.多軸同步控制,多坐標(biāo)系獨(dú)立控制等;
8.直線插補(bǔ)、任意空間圓弧插補(bǔ)、螺旋插補(bǔ)、樣條插補(bǔ)等;
9.應(yīng)用靈活,可PC上位機(jī)開發(fā),也可脫機(jī)獨(dú)立運(yùn)行;
ZMC408CE視頻介紹,點(diǎn)擊→“高性能EtherCAT總線運(yùn)動(dòng)控制器,帶你玩轉(zhuǎn)“8通道獨(dú)立PSO”應(yīng)用場(chǎng)景”查看。
更多關(guān)于ZMC408CE的詳情介紹,點(diǎn)擊“推薦|8通道PSO的高性能EtherCAT總線運(yùn)動(dòng)控制器”查看。
PCIE464M是一款基于PCIe的PCI Express的EtherCAT總線運(yùn)動(dòng)控制卡,具有多項(xiàng)實(shí)時(shí)和高精度運(yùn)動(dòng)控制控制功能。

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

PCIE464M硬件功能特性:
1.可選6-64軸運(yùn)動(dòng)控制,支持EtherCAT總線/脈沖/步進(jìn)伺服驅(qū)動(dòng)器;
2.聯(lián)動(dòng)軸數(shù)最高可達(dá)16軸,運(yùn)動(dòng)周期最小為100μs;
3.標(biāo)配16進(jìn)16出,其中4路高速鎖存輸入、4路高速PWM和12路高速硬件比較輸出PSO;
4.支持PWM輸出、1D/2D/3D PSO硬件位置比較輸出、視覺飛拍、連續(xù)軌跡插補(bǔ)等;
5.支持30+機(jī)械手模型正逆解模型算法,比如SCARA、Delta、UVW、4軸/5軸 RTCP...;
6.支持掉電存儲(chǔ)和掉電中斷,多重加密,提供程序更安全機(jī)制;
7.8路單端脈沖軸、4路單端編碼器軸;
8.具有一維、二維螺距補(bǔ)償控制,實(shí)現(xiàn)更高的加工精度;
PCIE464M視頻介紹,點(diǎn)擊→“超高速PCle EtherCAT控制卡PCIE464M,即刻提升高速高精智能裝備生產(chǎn)力!”查看。
更多關(guān)于PCIE464M的詳情介紹,點(diǎn)擊“PCIE464M-高速高精,超高速PCIe EthrtCAT實(shí)時(shí)運(yùn)動(dòng)控制卡”查看。
ECI2A18B 高性價(jià)比10軸運(yùn)動(dòng)控制卡
ECI2A18B是正運(yùn)動(dòng)推出的一款高性價(jià)比10軸脈沖型、模塊化的網(wǎng)絡(luò)型運(yùn)動(dòng)控制卡,采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實(shí)現(xiàn)實(shí)時(shí)的運(yùn)動(dòng)控制,同時(shí)支持多種通信協(xié)議,方便與其他工業(yè)控制設(shè)備連接和集成。安裝配置相對(duì)便捷,適合于模塊化和靈活性要求較高的控制系統(tǒng)。

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

ECI2A18B硬件功能特性:
1.支持6路差分脈沖軸+4路單端脈沖軸運(yùn)動(dòng)控制;
2.支持1路專用的手輪輸入接口;
3.差分脈沖軸最大輸出脈沖頻率10MHz;
4.標(biāo)配24+12進(jìn)16+6出,其中支持4路高速鎖存,4路高速PWM,2路高速硬件比較輸出PSO(可選支持HW2功能);
5.可支持RTSys+其他高級(jí)上位機(jī)編程語言的混合編程支持;
6.支持RTBasic多任務(wù)編程;
ECI2A18B視頻介紹,點(diǎn)擊→“【加量不加價(jià)】高性價(jià)比十軸脈沖運(yùn)動(dòng)控制卡ECI2A18B 讓您的設(shè)備在自動(dòng)化行業(yè)內(nèi)卷中脫穎而出!”查看。
更多關(guān)于ECI2A18B的詳情介紹,點(diǎn)擊“【加量不加價(jià)】正運(yùn)動(dòng)網(wǎng)絡(luò)型運(yùn)動(dòng)控制卡ECI2618B/ECI2A18B”查看。
本文案例java開發(fā)環(huán)境:
- 操作系統(tǒng)環(huán)境:Win11_64位
- Java版本:Oracle OpenJDK 22.0.2
- IntelliJ IDEA版本:IntelliJ IDEA 2024.1.2
Java開發(fā)流程
1 新建項(xiàng)目
打開IntelliJ IDEA 2024.1.2,新建項(xiàng)目,生成器選擇Spring Boot,語言選java,類型選擇Maven,選擇JDK版本(此處選擇JDK22.0.2),選擇java版本(此處是17)。


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


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


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


4 導(dǎo)入DLL庫
添加正運(yùn)動(dòng)DLL庫函數(shù)文件至resource路徑下。

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

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


簡單應(yīng)用
1 句柄初始化
PC函數(shù)均需傳入?yún)?shù)句柄handle,而ZMC_HANDLE實(shí)際封裝是void*,則傳入的參數(shù)類型是void**,根據(jù)上面的數(shù)據(jù)類型轉(zhuǎn)化表,void**需要用PointerByReference()創(chuàng)建一個(gè)PointerByReference對(duì)象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ù)第一個(gè)參數(shù)的數(shù)據(jù)類型ZMC_HANDLE封裝是void*,前面已初始化的二級(jí)指針對(duì)象(此處為intptr)的數(shù)據(jù)類型是void**,需要調(diào)用方法intptr.getValue()來獲取一級(jí)指針才能傳入函數(shù),否則參數(shù)無法設(shè)置成功,查看打印結(jié)果X檢驗(yàn)控制器參數(shù)是否設(shè)置成功。

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

5 簡單軸運(yùn)動(dòng)
軸0往正方向持續(xù)運(yùn)動(dòng)。

6 指針類型的參數(shù)處理
注意獲取位置函數(shù)的第三個(gè)參數(shù)是一級(jí)指針類型,此處需用數(shù)組去接收函數(shù)返回的數(shù)據(jù)。
此時(shí)數(shù)組第一個(gè)元素dpos[0]即對(duì)應(yīng)軸0的位置,程序上死循環(huán)不斷獲取軸0位置,直至DPOS為100停止運(yùn)動(dòng)并關(guān)閉控制器的連接。


五角星軌跡代碼如下:
(1)變量定義。
int[] piAxislist = {0,1}; //運(yùn)動(dòng)軸列表
int a = 30; //五角星的邊長
int[] status_x = {0}; //x軸的運(yùn)動(dòng)狀態(tài)
int[] status_y = {0}; //y軸的運(yùn)動(dòng)狀態(tài)
float[][] pfDisancelists = new float[11][2]; // 初始化運(yùn)動(dòng)距離列表
int[] GetValue = {0}; //當(dāng)前剩余緩沖數(shù)
(2)用二維數(shù)組來存放五角星軌跡的位置。
float[][] pfDisancelists = new float[11][2]; // 初始化運(yùn)動(dòng)距離列表
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ù)五角星軌跡點(diǎn)位運(yùn)動(dòng)。
// 循環(huán)調(diào)用運(yùn)動(dòng)函數(shù)
for (float[] pfDisancelist : pfDisancelists) {
ZMotionDao.INSTANCE.ZAux_Direct_GetRemain_Buffer( intptr.getValue(), 0, GetValue);//獲取軸 0 剩余緩沖數(shù)
System.out.printf("當(dāng)前剩余緩沖數(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]判斷運(yùn)動(dòng)是否結(jié)束。
// 判斷運(yùn)動(dòng)是否結(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是正運(yùn)動(dòng)推出的集成運(yùn)動(dòng)控制+機(jī)器視覺功能的開發(fā)軟件,先用RTSys軟件連接控制器,控制器默認(rèn)IP是192.168.0.11,軸參數(shù)窗口監(jiān)控參數(shù)設(shè)置是否成功,打開示波器,通過示波器觀察軌跡是否正確。





教學(xué)視頻可點(diǎn)擊→“EtherCAT運(yùn)動(dòng)控制卡應(yīng)用開發(fā)教程之Java”查看。
完整代碼獲取地址
▼

本次,正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制卡應(yīng)用開發(fā)教程之Java,就分享到這里。
更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開發(fā)環(huán)境與例程代碼,請(qǐng)咨詢正運(yùn)動(dòng)技術(shù)銷售工程師:400-089-8936。
本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來源。

正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國家級(jí)高新技術(shù)企業(yè)。正運(yùn)動(dòng)技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺(tái)技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動(dòng)控制卡_運(yùn)動(dòng)控制器_EtherCAT運(yùn)動(dòng)控制卡_EtherCAT控制器_運(yùn)動(dòng)控制系統(tǒng)_視覺控制器__運(yùn)動(dòng)控制PLC_運(yùn)動(dòng)控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動(dòng)控制卡等。
|