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

电子说

1.4w人已加入

描述

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};   //运动轴列表
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("当前剩余缓冲数为%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。

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

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分