The value of Zmotion is to bring customers more success!
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的PCI Express的EtherCAT总线运动控制卡,具有多项实时和高精度运动控制控制功能。
PCIE464M运动控制卡上自带16进16出,第三方图像处理工控机或PC无需额外配置IO数据采集卡和PLC,即可实现IPC形态的机器视觉运动控制一体机,简化硬件架构,节省成本,软硬件一体化。
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控制卡最大可扩展至12脉冲轴,支持8路高速输入和4路高速输出,集成丰富的运动控制功能,包含多轴点位运动、电子凸轮,直线插补,圆弧插补,连续插补运动等,满足多样化的工业应用需求。
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”查看。
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("当前剩余缓冲数为%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软件连接控制器,控制器默认IP是192.168.0.11,轴参数窗口监控参数设置是否成功,打开示波器,通过示波器观察轨迹是否正确。
教学视频可点击→“EtherCAT运动控制卡应用开发教程之Java”查看。
本次,正运动技术EtherCAT运动控制卡应用开发教程之Java,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。