正运动技术
正运动技术
EN

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

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

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

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

运动控制器ZMC408CE.png

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

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

运动控制卡PCIE464M.png

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

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

高性价比运动控制卡ECI2A18B.png

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

高性价比运动控制卡ECI2A18B接线图.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查看。



项目.png
本文案例java开发环境:
1

操作系统环境:Win11_64位

2

Java版本:Oracle OpenJDK 22.0.2

3

IntelliJ IDEA版本:IntelliJ IDEA 2024.1.2







Java开发流程


1

新建项目

打开IntelliJ IDEA 2024.1.2,新建项目,生成器选择Spring Boot,语言选java,类型选择Maven,选择JDK版本(此处选择JDK22.0.2,选择java版本(此处是17

新建项目1.png
新建项目2.png

2

配置构建

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

配置构建1.png
配置构建2.png

3

创建接口

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

创建接口1.png
创建接口2.png

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

创建接口3.png
创建接口4.png

4

导入DLL库

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

导入DLL库.png

5

接口实例

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

接口实例.png

6

数据类型

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

数据类型.png
指令3.png










简单应用


1

句柄初始化

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

句柄初始化.png

2

网口连接

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

网口连接.png

3

设置轴参数

设置轴参数.png

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

设置轴参数2.png

4

打印结果

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

打印结果.png

5

简单轴运动

轴0往正方向持续运动。

简单轴运动.png

6

指针类型的参数处理

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

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

指令27.png
指针类型的参数处理.png



五角星轨迹代码如下:

1)变量定义。

int[] piAxislist = {0,1};   //运动轴列表
int a = 30;             //五角星的边长
int[] status_x = {0};  //x轴的运动状态
int[] status_y = {0};   //y轴的运动状态
float[][] pfDisancelists = new float[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("当前剩余缓冲数为%d\n" ,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,轴参数窗口监控参数设置是否成功,打开示波器,通过示波器观察轨迹是否正确

RTSys示波器监控轨迹1.png
RTSys示波器监控轨迹2.png
RTSys示波器监控轨迹3.png
RTSys示波器监控轨迹4.png
RTSys示波器监控轨迹5.png




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


完整代码获取地址

源代码二维码.png

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

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

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

二维码.png


正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等。

邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询