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详情点击“推荐 | 8通道PSO的高性能EtherCAT总线运动控制器”查看。
PCIE464是正运动推出的一款EtherCAT总线+脉冲型、PCIE接口式的运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

PCIE464运动控制卡适合于多轴点位运动、插补运动、轨迹规划、手轮控制、编码器位置检测、IO控制、位置锁存等功能的应用。
PCIE464运动控制卡适用于3C电子加工、检测设备、半导体设备、SMT加工、激光加工、光通讯设备、锂电及光伏设备、以及非标自动化设备等高速高精应用场合。

PCIE464硬件功能特性
1.可选6-64轴运动控制,支持EtherCAT总线/脉冲/步进伺服驱动器;
2.联动轴数最高可达16轴,运动周期最小为100μs;
3.标配8进8出,其中4路高速锁存输入和8路高速PWM、PSO输出,更多IO请选配ACC37接线板扩展板;
4.支持PWM输出、精准输出、PSO硬件位置比较输出、视觉飞拍等;
5.支持30+机械手模型正逆解模型算法,比如SCARA、Delta、UVW、4轴/5轴 RTCP...;
6.支持掉电存储和掉电中断,提供程序更安全机制;
7.具有螺距补偿控制,在单轴上通过多个补偿点进行精确调整,从而实现更高的加工精度。
更多关于PCIE464详情点击“PCIE464 — 高速高精,超高实时性的PCIe EtherCAT实时运动控制卡”查看。
XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

XPCIE1032H运动控制卡集成了强大的运动控制功能,结合MotionRT7运动控制实时软核,解决了高速高精应用中,PC Windows开发的非实时痛点,指令交互速度比传统的PCI/PCIe快10倍。

XPCIE1032H硬件功能特性
1.6-64轴EtherCAT总线+脉冲可选,其中4路单端500KHz脉冲输出;
2.16轴EtherCAT同步周期500us,支持多卡联动;
3.板载16点通用输入,16点通用输出,其中8路高速输入和16路高速输出;
4.通过EtherCAT总线,可扩展到512个隔离输入或输出口;
5.支持PWM输出、精准输出、PSO硬件位置比较输出、视觉飞拍等;
6.支持直线插补、圆弧插补、连续轨迹加工(速度前瞻);
7.支持电子凸轮、电子齿轮、位置锁存、同步跟随、虚拟轴、螺距补偿等功能;
8.支持30+机械手模型正逆解模型算法,比如SCARA、Delta、UVW、4轴/5轴 RTCP...
更多关于PCIE464详情点击“不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!”查看。
01 C#进行单旋转台XYR项目开发
1.在VS2019菜单“文件”→“新建”→“项目”,启动创建项目向导。

2.选择开发语言为“C#”和Windows窗体应用程序,点击下一步。

3.配置好项目名称和位置,以及相应框架,点击创建。

4.找到厂家提供的光盘资料里面的C#函数库,路径如下(64位库为例)。进入厂商提供的光盘资料,找到zauxdll.dll,zmotion.dll和Zmcaux.cs这三个库文件。
库文件路径:【00光盘资料】→【04PC函数】→【01PC函数库V2.1】→【Windows平台】→【C#】→【64位】→【库文件】。

5.将厂商提供的C#的库文件以及相关文件复制到新建的项目中。
1)将zmcaux.cs文件复制到新建的项目里面中。

2)将zauxdll.dll和zmotion.dll文件放入bin\debug文件夹中。

3)将Zmcaux.cs文件添加进项目中。右键项目名称,选择添加,再选择现有项,选择Zmcaux.cs文件。

6.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle。

7.至此,项目新建完成,可进行C#项目开发。
02 相关PC函数介绍
PC函数手册可在光盘资料获取,具体路径如下:“00光盘资料\03编程手册\03ZMotion PC函数库编程手册”。

1.链接控制器,获取链接句柄。

2.机械手参数矫正指令。

3.硬件比较输出指令使用介绍。

4.圆心螺旋指令使用介绍。

03 C#单旋转台XYR例程演示

1.上位机软件界面如下,首先选择连接方式。
可以选择网口IP连接,串口COM连接,PCI卡卡号连接以及Local MotionRT连接。选择好连接字符串后,这里以网口IP连接为例,再连接字符串中输入控制器IP地址,再点击连接。若弹出链接成功提示框,则可正常操作。若连接失败,检测连接字符串是否正确,网线是否松动等情况。

2.总线驱动器初始化界面的介绍。
(1)配置好总线起始轴号,总线节点个数,本地脉冲轴起始轴号和本地脉冲轴个数四个参数后,点击总线初始化按钮,进行总线扫描。

(2)等待初始化完成后,表格出现厂商ID和设备ID等相关节点信息,则代表初始化完成。

(3)如需将对应总线节点的IO状态信息映射到控制器上查看,则填写对应节点需要映射IO的起始地址,若无需映射默认-1不需要修改,填写完成后,点击保存,再次点击总线初始化按钮进行总线扫描。

(4)通过RTSys软件查看IO映射的地址成功与否。成功连接控制器后,在菜单栏中找到【控制器】→【控制器状态】→【槽位0节点】,可以看到所有节点对应的IO起始地址。可以在总线初始化完成后观看此界面确认IO起始地址映射正常。

3.相关轴参数配置界面介绍。
选择轴号,配置轴类型,电机一圈脉冲数,加速度,减速度等相关轴参数后点击立即生效按钮,将这些参数配置对应轴上。默认旋转中心(X,Y)坐标为(0,0),接着选择旋转轴实际正向旋转方向,再点击写入参数配置按钮,将机械手参数写入机械手模型结构中。

4.旋转中心标定界面介绍。
(1)首先点击手动运动,选择正解机模式,接着点击寸动按钮选择寸动还是点动模式,最后配置好速度。


(2)参考单旋转台旋转中心标定界面的步骤,通过手动运动示教三组坐标。示教完成后点击标定旋转中心按钮,通过三点确认圆心计算旋转中心的坐标。
注意:α,β,γ三个角度不重合即可,原理是3点确定一个圆心,角度范围覆盖可以尽量大一些。

(3)点击单旋转台关节轴参数按钮,可以看到的计算出的旋转中心坐标,点击写入参数配置,将实际旋转中心写入机械手结构参数中。

函数介绍:当点击标定旋转中心按钮后,首先会判断当前模式是否处于正解模式,标定旋转中心时机械手必须处于正解模式。然后再调用机械手参数矫正指令,开始计算旋转中心将计算的坐标赋值给轴参数配置界面的文本框。
private void Calculate_rotation_center(object sender, EventArgs e)
{
float[] conter = new float[2]; //存储旋转中心坐标
int cali_table = 1000; //关节坐标存储的table起始编号
int space = 3; //坐标存储间隔
int groups = 3; //坐标个数
int tableaux = 1500; //辅助参数的table编号
int zeroout = 1200; //计算出来理论零点时关节轴的绝对坐标的table编号
int zeroout2 = 1300; //计算出来的机械手参数存储的位置,不填时直接存储原参数的位置
int ret;
int[] iAxisMtype = new int[2];
ret=zmcaux.ZAux_Direct_GetMtype(g_handle,Axis[0],ref iAxisMtype[0]);
if (iAxisMtype[0] == 33)
{
Console.WriteLine("当前处于正解模式");
}
else
{
//建立正解
ret = zmcaux.ZAux_Direct_Connreframe(g_handle, reframe_num, VirAxis_List, robot_mode, store_table, frame_num, Axis);
}
//计算旋转中心坐标
ret = zmcaux.ZAux_Direct_FrameCal(g_handle, VirAxis_List, 2, cali_table, space, groups, tableaux, zeroout, zeroout2);
if (ret != 0)
{
MessageBox.Show("旋转中心计算失败");
return;
}
ret = zmcaux.ZAux_Direct_GetTable(g_handle, zeroout2, 2, conter);
textBox61.Text = conter[0].ToString();
textBox60.Text = conter[1].ToString();
}
5.产品参数配置界面。
配置好产品长度,产品宽度等相关参数以及不同段的速度后,点击手动运动将加工轴通过手动运动移动到A点位置,点击示教坐标按钮,将当前位置保存为A点坐标。完成示教后,即可点击启动按钮,对手机边框进行检测。

函数介绍:点击启动检测后,会根据A点坐标,产品长度,产品宽度和拐角半径,计算出所需坐标点位。结合实际情况在拐角处使用圆心螺距指令实现拐角轨迹,走出实际产品轨迹。根据拍照线宽,使用硬件比较输出模式5周期脉冲模式,每隔线宽距离触发一次比较。
private void move_path(object sender, EventArgs e)
{
//设置拐角模式,用Speed限制单轴速度
ret = zmcaux.ZAux_Direct_SetCornerMode(g_handle, VirAxis_List[0],corner_mode);
//设置运行速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[0], product_para[6]);
//回到起始点
ret = zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, VirAxis_List, distance_A1);
int idle = 0;
while (true)
{
Thread.Sleep(10);
//获取轴运行状态
zmcaux.ZAux_Direct_GetIfIdle(g_handle, VirAxis_List[0], ref idle);
if (idle == -1){break;}
}
//清空矢量坐标
ret = zmcaux.ZAux_Direct_SetParam(g_handle, "VECTOR_MOVED", VirAxis_List[0], 0);
float line_width = Convert.ToSingle(textBox31.Text); //拍照线宽
float arc_length =Convert.ToSingle(2* Math.PI* product_para[2]); //四个拐角弧长
int out_num = Convert.ToInt32((product_para[0]*2 + 2 * product_para[1] - product_para[2]*8 + arc_length) / line_width);//输出点数
int out_mode = 5; //输出模式
int out_port = 0; //输出端口
int out_state = 1; //输出状态
float start_vector = 0; //起始矢量
float out_vector = 0.5f; //输出脉冲
float delay_vector = 0.5f; //延时矢量
//直线A1-B1
//清空矢量
zmcaux.ZAux_Direct_SetParam(g_handle, "VECTOR_MOVED", VirAxis_List[0], 0);
//清空上次未完成的输出
zmcaux.ZAux_Direct_HwPswitch2(g_handle, VirAxis_List[0], 2, 0, 0, 0, 0, 0, 0);
//设置周期脉冲模式的硬件比较输出
zmcaux.ZAux_Direct_HwPswitch2(g_handle, VirAxis_List[0], out_mode, out_port, out_state, start_vector+ delay_vector, out_num, line_width, out_vector);
//设置直线速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[0], product_para[6]);
//直线插补运动
ret = zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, VirAxis_List, distance_B1);
//拐角B1-B2
//设置拐角速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[2], product_para[7]);
//圆心螺旋指令实现拐角
ret = zmcaux.ZAux_Direct_MHelicalAbs(g_handle, 3, VirAxis_List, distance_B2[0], distance_B2[1], distance_B1[0], distance_B2[1], 0, distance_B2[2], 1);
//直线B2-C1
//设置直线速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[0], product_para[6]);
//直线插补运动
ret = zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, VirAxis_List, distance_C1);//拐角C1-C2
//设置拐角速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[2], product_para[7]);
//圆心螺旋指令实现拐角
ret = zmcaux.ZAux_Direct_MHelicalAbs(g_handle, 3, VirAxis_List, distance_C2[0], distance_C2[1], distance_C2[0], distance_C1[1], 0, distance_C2[2], 1);
//直线C2-D1
//设置直线速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[0], product_para[6]);
//直线插补运动
ret = zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, VirAxis_List, distance_D1);
//拐角D1-D2
//设置拐角速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[2], product_para[7]);
//圆心螺旋指令实现拐角
ret = zmcaux.ZAux_Direct_MHelicalAbs(g_handle, 3, VirAxis_List, distance_D2[0], distance_D2[1], distance_D1[0], distance_D2[1], 0, distance_D2[2], 1);
//直线D2-A2
//设置直线速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[0], product_para[6]);
//直线插补运动
ret = zmcaux.ZAux_Direct_MoveAbs(g_handle, 3, VirAxis_List, distance_A2);
//拐角A2-A1
//设置拐角速度
ret = zmcaux.ZAux_Direct_MovePara(g_handle, (uint)VirAxis_List[0], "Speed", (uint)VirAxis_List[2], product_para[7]);
//圆心螺旋指令实现拐角
ret = zmcaux.ZAux_Direct_MHelicalAbs(g_handle, 3, VirAxis_List, distance_A1[0], distance_A1[1], distance_A1[0], distance_A2[1], 0, 360, 1);
}
04 使用RTSys抓取输出和轨迹
1.打开【RTSys】软件,点击【常用】→【连接】→【控制器】。

2.输入控制器IP地址,点击连接。

3.打开RTSys软件中的示波器可以方便直观的观察输出的次数。
选择菜单栏中的【工具】→【示波器】。打开示波器后配置水平刻度通道数量,接着选择数据源的类型,再确认通道号的显示是否被勾选,最后勾选连续采集和跟随。配置好这些参数后即可点击蓝色三角按钮开始抓取数据。

4.运行C#手机外观检测例程。
(1)配置好轴参数,机械手参数以及产品参数后,点击启动检测。

(2)后勾选轴3,轴4和输出口0,将模式切换为XYZ模式再配置好合适的垂直刻度,可以更直观的看到输出口的输出次数以及的间距。

(3)勾选轴3和轴4的DPOS,将显示模式切换为XY模式,即可直观看到轴实际运行的轨迹。

(4)设置YT模式。抓取主轴轴3的VP_SPEED也就是加工合速度,可以看到在拐角处是减速运行的。

5.教学视频可点击→“单旋转台XYR在精密点胶外观检测精密焊接的C#应用”查看。
本次,正运动技术单旋转台XYR在精密点胶/外观检测/精密焊接的C#应用,就分享到这里。
更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

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