0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

EtherCAT运动控制卡应用开发教程之Java

正运动技术 ? 来源:正运动技术 ? 作者:正运动技术 ? 2025-06-13 14:29 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

ZMC408CE 高性能总线型运动控制器

ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNETRS232CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。

wKgZO2hLxVmADa5cAAHzCyibW3Q890.png

ZMC408CE支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#C++LabVIEWMatlab、Qt、Linux、VB.Net、Python等接口。

wKgZPGhLxVmAfMLuAAD6H1vc1rg748.png

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总线运动控制卡,具有多项实时和高精度运动控制控制功能。

wKgZO2hLxVmAAvo2AAP3FWF5h1E222.png

PCIE464M运动控制卡上自带16进16出,第三方图像处理工控机或PC无需额外配置IO数据采集卡和PLC,即可实现IPC形态的机器视觉运动控制一体机,简化硬件架构,节省成本,软硬件一体化。

wKgZPGhLxVmAC6NrAAMN1vlErZo639.png

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轴脉冲型、模块化的网络型运动控制卡,采用优化的网络通讯协议可以实现实时的运动控制,同时支持多种通信协议,方便与其他工业控制设备连接和集成。安装配置相对便捷,适合于模块化和灵活性要求较高的控制系统

wKgZO2hLxVqAOVFfAAHdTrsR7V0779.png

ECI2A18B控制卡最大可扩展至12脉冲轴,支持8路高速输入和4路高速输出,集成丰富的运动控制功能,包含多轴点位运动、电子凸轮,直线插补,圆弧插补,连续插补运动等,满足多样化的工业应用需求。

wKgZPGhLxVqATo71AAIYEaphP_0789.png

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)。

wKgZO2hLxVqAborJAAHHCPNU9RQ478.png

wKgZPGhLxVqAAnSRAAIrNK7rC68308.png

2 配置构建

配置构建,添加main下面的application,运行一遍程序,没有问题就进行下一步。

wKgZO2hLxVuALtRXAAGButI6wBc200.png

wKgZPGhLxVuAE-lIAAFnafr6pCM407.png

3 创建接口

(1)按照标准开发,在当前软件包路径下创建接口ZmotionDao。

wKgZO2hLxVyAEb3iAAGxWqpEeho221.png

wKgZPGhLxVyAZepIAAFoIf95XXA895.png

(2)ZmotionDao接口继承自StdCallLibrary,并添加相应的Maven依赖项。

wKgZO2hLxV2AUP_OAAB-2YlWogk456.png

wKgZPGhLxV2AQ_nGAAD6mQsMpBk868.png

4 导入DLL库

添加正运动DLL库函数文件至resource路径下。

wKgZO2hLxV6AQv5dAAGAomdkAsQ512.png

5 接口实例

通过Native.load方法加载“zauxdll.dll”的DLL,并创建一个ZMotionDao接口的实例INSTANCE,并声明需要调用的PC函数,PC函数可查询ZMotion PC函数库编程手册。

wKgZPGhLxV6AQoxmAAGYi56BR9U362.png

6 数据类型

函数声明中JNA对应C语言中的数据类型需要修改,PC函数原型在ZMotion PC函数库编程手册查询。比如打开网口连接函数ZAux_OpenEth(char * ipaddr,ZMC_HANDLE*phandle)中的char *用String替换,ZMC_HANDLE*对应void**用PointerByReference替换。

wKgZO2hLxV6AILLnAAEW_QhBbXM061.png

wKgZPGhLxV-AAjkAAAKryLwaEIs903.png


简单应用

1 句柄初始化

PC函数均需传入参数句柄handle,而ZMC_HANDLE实际封装是void*,则传入的参数类型是void**,根据上面的数据类型转化表,void**需要用PointerByReference()创建一个PointerByReference对象intptr,即句柄初始化完成,把intptr传入函数即可。

wKgZPGhLxV-ALexyAAHxIu1tiJk482.png

2 网口连接

打开网口连接,函数参数填入控制器的IP地址(此处控制器IP地址为192.168.0.11),注意电脑IP的网段和控制器的网段一致(即电脑IP设置为192.168.0.XX),查看打印结果返回值X1,为0则控制器连接成功。

wKgZO2hLxV-AXsC6AAHwCQ4zo50553.png

3 设置轴参数

wKgZPGhLxWCAWjmgAARIeaj10kU263.png

此处函数第一个参数的数据类型ZMC_HANDLE封装是void*,前面已初始化的二级指针对象(此处为intptr)的数据类型是void**,需要调用方法intptr.getValue()来获取一级指针才能传入函数,否则参数无法设置成功,查看打印结果X检验控制器参数是否设置成功。

wKgZO2hLxWCAX-RCAAIfmTGVWT0132.png

4 打印结果

查看打印结果X检验控制器参数是否设置成功,返回的结果为0即说明设置成功。

wKgZPGhLxWCANjahAAIzahBsIB4219.png

5 简单轴运动

轴0往正方向持续运动。

wKgZO2hLxWGADnohAAIKnFOiGps257.png

6 指针类型的参数处理

注意获取位置函数的第三个参数是一级指针类型,此处需用数组去接收函数返回的数据。

此时数组第一个元素dpos[0]即对应轴0的位置,程序上死循环不断获取轴0位置,直至DPOS为100停止运动并关闭控制器的连接。

wKgZPGhLxWGAYHIMAAGlIrENr7Q434.png

wKgZO2hLxWKAd8iaAAIKnFOiGps905.png


五角星轨迹代码如下:

(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,轴参数窗口监控参数设置是否成功,打开示波器,通过示波器观察轨迹是否正确。

wKgZPGhLxWKAW_dtAAHOUt3d6U0961.png

wKgZO2hLxWOAAsegAAA4etZykE0723.png

wKgZPGhLxWOATnE0AAIai8U3IAg583.png

wKgZO2hLxWSANM12AAGI9SQfdp4612.png

wKgZPGhLxWSASj58AAFwh-W6s2A127.png


教学视频可点击→“EtherCAT运动控制卡应用开发教程之Java_哔哩哔哩_bilibili”查看。


完整代码获取地址

wKgZO2hLxWSAVH9HAACZFz9P6Ic694.png


本次,正运动技术EtherCAT运动控制卡应用开发教程之Java,就分享到这里。

更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    2989

    浏览量

    110749
  • 运动控制
    +关注

    关注

    4

    文章

    730

    浏览量

    33614
  • ethercat
    +关注

    关注

    19

    文章

    1145

    浏览量

    40199
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高速高精运动控制!PCIe超实时2通道EtherCAT运动控制卡上市!

    PCle超实用2通道EtherCAT运动控制卡助您实现更极速精准的运动控制
    的头像 发表于 08-01 11:52 ?25次阅读
    高速高精<b class='flag-5'>运动</b><b class='flag-5'>控制</b>!PCIe超实时2通道<b class='flag-5'>EtherCAT</b><b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>上市!

    全球首创!PCIe超实时6通道EtherCAT运动控制卡上市!

    PCle超实用6通道EtherCAT运动控制卡助您实现更极速精准的运动控制
    的头像 发表于 07-18 10:32 ?180次阅读
    全球首创!PCIe超实时6通道<b class='flag-5'>EtherCAT</b><b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>上市!

    全球首创!PCIe 6路高性能EtherCAT运动控制卡XPCIE6032H #正运动技术 #运动控制卡

    运动控制
    正运动技术
    发布于 :2025年07月17日 10:01:51

    C#上位机与运动控制卡网络通讯的周期上报

    使用C#上位机编程实现运动控制卡网络通讯的周期上报功能
    的头像 发表于 06-26 13:59 ?198次阅读
    C#上位机与<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>网络通讯的周期上报

    控制系统调优必备知识:“运动控制卡 控制周期怎么算”你真的懂了吗?

    在工业自动化领域,运动控制卡控制周期这个参数常常被忽视,但它却是影响整个系统稳定性、精度甚至产能的关键因素。你是不是也遇到过这些问题:电机总是抖动?轨迹跟踪老是偏?想优化系统却无从下手?大概率是你的
    的头像 发表于 05-27 10:59 ?482次阅读
    <b class='flag-5'>控制</b>系统调优必备知识:“<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b> <b class='flag-5'>控制</b>周期怎么算”你真的懂了吗?

    运动控制卡网络通讯的心跳检测之C#上位机编程

    使用C#上位机编程实现运动控制卡网络通讯的心跳检测功能
    的头像 发表于 12-24 10:54 ?1220次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>网络通讯的心跳检测之C#上位机编程

    运动控制卡周期上报实时数据IO状态之C++篇

    使用C++进行运动控制卡的周期上报功能实现
    的头像 发表于 12-17 13:59 ?867次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>周期上报实时数据IO状态之C++篇

    AM263Px控制卡评估模块

    电子发烧友网站提供《AM263Px控制卡评估模块.pdf》资料免费下载
    发表于 10-29 10:00 ?0次下载
    AM263Px<b class='flag-5'>控制卡</b>评估模块

    PCIe实时运动控制卡的双盘视觉筛选机上位机开发应用

    PCIe实时运动控制卡的双盘视觉筛选机上位机开发应用
    的头像 发表于 10-10 10:15 ?819次阅读
    PCIe实时<b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>的双盘视觉筛选机上位机<b class='flag-5'>开发</b>应用

    AM263Px控制卡快速入门指南

    电子发烧友网站提供《AM263Px控制卡快速入门指南.pdf》资料免费下载
    发表于 08-26 09:24 ?0次下载
    AM263Px<b class='flag-5'>控制卡</b>快速入门指南