EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九)

XPCIE1032H功能简介

XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

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

在这里插入图片描述

XPCIE1032H支持PWM,PSO功能,板载16进16出通用IO口,其中输出口全部为高速输出口,可配置为4路PWM输出口或者16路高速PSO硬件比较输出口。输入口含有8路高速输入口,可配置为4路高速色标锁存或两路编码器输入。

XPCIE1032H搭配MotionRT7实时内核,使用本地LOCAL接口连接,通过高速的核内交互,可以做到更快速的指令交互,单条指令与多条指令一次性交互时间可以达到3-5us左右。

在这里插入图片描述

➜XPCIE1032H与MotionRT7实时内核的配合具有以下优势:
在这里插入图片描述

1.支持多种上位机语言开发,所有系列产品均可调用同一套API函数库;

2.借助核内交互,可以快速调用运动指令,响应时间快至微秒级,比传统PCI/PCIe快10倍;

3.解决传统PCI/PCIe运动控制卡在Windows环境下控制系统的非实时性问题;

4.支持一维/二维/三维PSO(高速硬件位置比较输出),适用于视觉飞拍、精密点胶和激光能量控制等应用;

5.提供高速输入接口,便于实现位置锁存;

6.支持EtherCAT总线和脉冲输出混合联动、混合插补。
在这里插入图片描述

➜使用XPCIE1032H和MotionRT7进行项目开发时,通常需要进行以下步骤:

1.安装驱动程序,识别XPCIE1032H;

2.打开并执行文件“MotionRT710.exe”,配置参数和运行运动控制实时内核;

3.使用ZDevelop软件连接到控制器,进行参数监控。连接时请使用PCI/LOCAL方式,并确保ZDevelop软件版本在3.10以上;

4.完成控制程序开发,通过LOCAL链接方式连接到运动控制卡,实现实时运动控制。

在这里插入图片描述

➜与传统PCI/PCIe卡和PLC的测试数据结果对比:

在这里插入图片描述

我们可以从测试对比结果看出,XPCIE1032H运动控制卡配合实时运动控制内核MotionRT7,在LOCAL链接(核内交互)的方式下,指令交互的效率是非常稳定,当测试数量从1w增加到10w时,单条指令交互时间与多条指令交互时间波动不大,非常适用于高速高精的应用。

一、C#语言进行运动控制项目开发

在这里插入图片描述

二、PC函数介绍

相关PC函数介绍详情可参考“ZMotion PC函数库编程手册 V2.1.1”。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在form设计界面找到需要用到的控件拖拽到窗体中进行UI界面设计,效果如下。

在这里插入图片描述

三、相关程序以及设计思路

本次设计操作步骤相应的流程图如下:
在这里插入图片描述

本例程以运动控制卡XPLCIE1032H搭载MotionRT7实时内核,通过EthereCAT总线口接节点0(汇川驱动器-0轴),节点1(正运动扩展模块EIO16084)1-4轴映射为总线轴为例:

在这里插入图片描述

注意:在总线初始化basic程序,驱动器PDO不能设置为-1,因为该PDO列表不含数据字典6060,不支持驱动器回零。

关于pdo列表的配置详细说明,可以查阅basic编程手册,搜索DRIVE_PROFILE指令。

在这里插入图片描述

1、初始化程序执行后,通过ZAux_Direct_GetUserVar函数接口,可以读取basic程序自定义的变量。

本节案例获取的是总线初始化映射轴数量、总线初始化起始轴号和总线初始化完成状态。下图是事先编辑好的basic程序的自定义变量。

在这里插入图片描述

使用定时器将总线轴数量,总线起始轴号,初始化状态等总线初始化信息进行获取更新。

//读取basic程序自定义变量--总线初始化的总轴数
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_TotalAxisnum", ref EcatAxisNum);
//读取basic程序自定义变量--总线初始化的总线起始轴号
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_AxisStart", ref EcatStartAxisNum);
//读取basic程序自定义变量--总线初始化的初始化状态
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_InitStatus", ref EcatInitStatus)

2、使用RTsys软件,点击软件菜单栏的帮助→Zbasic帮助→搜索,搜索DATUM指令,选择回零模式并设置回零模式对应的参数。

假设回零模式选择的是13,需要设置原点开关、限位开关、回零速度(SPEED)和爬行速度(CREEP)。

该模式进行回零时轴以SPEED速度正向运行,碰到限位开关会反向查找原点。找到原点后以CREEP速度反向爬行,直到离开原点。
在这里插入图片描述

private void Controllers_DatumPara_Button_Click(object sender, EventArgs e)
{if (g_handle == (IntPtr)0){MessageBox.Show("未连接到控制器!", "提示");}else{//轴基本参数设置,控制器回零的速度是SPEEDAxisParaSet();int[] ret = new int[7];//设置回零爬行速度ret[0] = zmcaux.ZAux_Direct_SetCreep(g_handle, MoveAxis, Convert.ToSingle(Datum_Creep_Value.Text));//配置原点信号。ZMC系列默认OFF时信号有效,常开传感器需要反转输入口为ONret[1] = zmcaux.ZAux_Direct_SetDatumIn(g_handle, MoveAxis, Convert.ToInt32(DatumIO_Value.Text));ret[2] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(DatumIO_Value.Text), 1);//正硬限位IO设置ret[3] = zmcaux.ZAux_Direct_SetFwdIn(g_handle, MoveAxis, Convert.ToInt32(FWD_IO_Value.Text));ret[4] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(FWD_IO_Value.Text), 1);//负硬限位IO设置ret[5] = zmcaux.ZAux_Direct_SetRevIn(g_handle, MoveAxis, Convert.ToInt32(REV_IO_Value.Text));ret[6] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(REV_IO_Value.Text), 1);//设置控制器回零模式Controllers_DatumMode = Convert.ToInt32(Controllers_DatumMode_Value.Text);//定义临时的变量记录各个函数的返回值int FinalRet = -1;for(int i = 0; i < 7; ++i){FinalRet *= ret[i];}if (FinalRet == 0)  //说明所有函数的返回值都是0,回零等参数均设置成功{MessageBox.Show("控制器回零参数设置成功!", "提示");}else{MessageBox.Show("控制器回零参数设置失败!", "提示");}}
}

3、使用ZAux_Direct_Single_Datum函数,函数语法如下:

语法:ZAux_Direct_Single_Datum(连接句柄,轴号,控制器回零模式)

选择回零的轴号,模式以及设置完参数,确认参数按钮然后点击回零按钮,此时轴以控制器回零参数进行回零。

private void Controllers_Datum_Button_Click(object sender, EventArgs e)
{if (g_handle == (IntPtr)0){MessageBox.Show("未连接到控制器!", "提示");return;}int ret = -1;//触发示波器zmcaux.ZAux_Trigger(g_handle);//控制器回零ret = zmcaux.ZAux_Direct_Single_Datum(g_handle, MoveAxis, Controllers_DatumMode);if(ret != 0){MessageBox.Show("控制器回零启动失败!", "提示");}else{MessageBox.Show("控制器回零启动成功!", "提示");}
}

4、查阅驱动器手册→回零模式介绍,选择驱动器支持的回零模式(数据字典6098),然后设置该回零模式的回零高速,回零低速等参数。

在本次例程选择的是模式19,开始回零时原点开关(HW)为0,以设置的回零高速Speed(50units/s)正向开始回零,遇到原点开关(HW)为1后以回零低速Creep(20units/s)反向爬行,直到原点开关(HW)为0时停机,回零完成。

在这里插入图片描述

private void Drivers_DatumPara_Button_Click(object sender, EventArgs e)
{if (g_handle == (IntPtr)0){MessageBox.Show("未连接到控制器!", "提示");return;}int ret1, ret2, ret3;//设置驱动器回零高速ret1 = zmcaux.ZAux_Direct_SetSpeed(g_handle, MoveAxis, Convert.ToSingle(Datum_HighSpeed_Value.Text));//设置驱动器回零低速ret2 = zmcaux.ZAux_Direct_SetCreep(g_handle, MoveAxis, Convert.ToSingle(Datum_LowSpeed_Value.Text));//设置驱动器回零偏移ret3 = zmcaux.ZAux_BusCmd_SetDatumOffpos(g_handle, (uint)MoveAxis, Convert.ToSingle(Datum_OffSet_Value.Text));//设置驱动器回零模式Drivers_DatumMode = Convert.ToInt32(Drivers_DatumMode_Value.Text);if (ret1 == 0 && ret2 == 0 && ret3 == 0){MessageBox.Show("驱动器回零参数设置成功!", "提示");}else{MessageBox.Show("驱动器回零参数设置失败!", "提示");}
}

5、使用ZAux_BusCmd_Datum函数,函数语法如下:

语法:ZAux_BusCmd_Datum(连接句柄,轴号,驱动器回零模式)

选择回零的轴号,模式以及设置完参数,确认参数按钮然后点击回零按钮,此时轴以驱动器回零参数进行回零。

private void Drivers_Datum_Button_Click(object sender, EventArgs e)
{if (g_handle == (IntPtr)0){MessageBox.Show("未连接到控制器!", "提示");return;}int ret = -1;//触发示波器zmcaux.ZAux_Trigger(g_handle);//驱动器回零ret = zmcaux.ZAux_BusCmd_Datum(g_handle, (uint)MoveAxis, (uint)Drivers_DatumMode);if (ret != 0){MessageBox.Show("驱动器回零启动失败!", "提示");}else{MessageBox.Show("驱动器回零启动成功!", "提示");}
}

四、运行效果

打开RTsys编程软件,通过Local连接到控制器,同步上位机的轴等等参数。然后在工具栏→示波器界面,打开示波器观察波形。

选择好数据源和编号,点击启动;在上位机界面点击回零按钮,回到RTsys软件点击手动触发,观察对应回零模式的波形。
在这里插入图片描述

**⊙控制器回零:**以模式13(轴以SPEED速度正向运行,碰到限位开关会反向查找原点。找到原点后以Creep速度反向爬行,直到离开原点)为例,抓取的图形如下。
在这里插入图片描述

⊙总线驱动器回零:查阅驱动器手册,选择驱动器支持的回零模式。

这里以模式19为例,回零启动时,原点信号为0,以回零高速(50units/s)正向回零运行;当原点信号为1时以回零低速Creep(20units/s)反向爬行;再次遇到下降沿将停机,回零完成。
在这里插入图片描述
EtherCAT驱动器与控制器回零例程演示

正运动技术EtherCAT驱动器回零与控制器回零

本次,正运动技术EtherCAT驱动器回零与控制器回零:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(九),就分享到这里。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339732.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[linux]编译一个ko文件并运行

一、需求 有一段代码需要在运行时加载注入内核中&#xff0c;当用户层需要访问时可以提供内核态环境去运行。 二、c代码构建 // #include <errno.h> // #include <string.h> // #include <stdio.h> // #include <fcntl.h> // #include <stdlib.h…

自监督深度学习技术

一、定义 自监督学习&#xff08;SSL&#xff09;是机器学习的一种范式&#xff0c;用于处理未标记数据以获取有用的表示&#xff0c;以帮助下游学习任务。SSL方法最显著的特点是它们不需要人类标注的标签&#xff0c;这意味着它的训练完全基于由未标记的数据样本组成的数据集…

2024开网店选择哪个平台?有经验就做视频号,没经验就做抖店

我是王路飞。 如今整体大环境都不怎么样的背景下&#xff0c;只有电商行业一直在蓬勃发展。 一方面是收到科技互联网的发展影响&#xff0c;短视频、直播带货等等都在推动这电商行业的转型&#xff1b; 另一方面也是人们消费观念的改观&#xff0c;从限制性较强的线下转移到…

Web实战丨基于django+html+css+js的电子商务网站

文章目录 写在前面实验目标需求分析实验内容安装依赖库1.登陆界面2.注册界面3.电子商城界面4.其他界面 运行结果写在后面 写在前面 本期内容&#xff1a;基于DjangoHTMLCSSJS的电子商务网站 实验环境&#xff1a; vscode或pycharmpython(3.11.4)django 代码下载地址&#x…

网络安全工具:通过监控分析日志数据保护企业网络

由于混合工作模式的兴起以及业务运营向云环境的迁移&#xff0c;企业网络变得更加分散和复杂&#xff0c;仅安装外围安全解决方案只会创建一个基本的防御层&#xff0c;系统、服务器和其他网络实体会生成记录所有网络活动的日志。集中式日志管理系统可以帮助管理员自动监控网络…

[NISACTF 2022]bingdundun~

[NISACTF 2022]bingdundun~ wp 信息搜集 进入题目&#xff1a; 点一下 upload? &#xff1a; 注意看上面的 URL &#xff0c;此时是 ?bingdundunupload 。 随便找个文件上传一下&#xff1a; 注意看上面的 URL &#xff0c;此时变成&#xff1a;upload.php 。 那么我有理…

防止串扰可不止3W规则,还有这些方法

随着半导体集成度越来越高&#xff0c;PCB层间的串扰问题愈发严重&#xff0c;虽然很多电子工程师通过3W规则来解决串扰&#xff0c;但你知道吗&#xff1f;还有很多方法可以抑制PCB板的串扰问题。 串扰CrossTalk)是指PCB上不同网络之间因较长的平行布线引起的相互干扰&#xf…

水产冷链物流行业零下25℃库架一体 海格里斯HEGERLS四向穿梭式冷藏冷库智能密集仓

随着国内外仓储物流整体规模和低温产品消费需求的稳步增长&#xff0c;冷链市场应用潜力不断释放。在传统“货架叉车”的方式下&#xff0c;货物、人员及机械设备不断进出&#xff0c;容易造成温度波动&#xff0c;导致冷量流失。立体冷库则以更高密度、更具成本效益的方式&…

【JVM 基础】类字节码详解

JVM 基础 - 类字节码详解 多语言编译为字节码在JVM运行Java字节码文件Class文件的结构属性从一个例子开始反编译字节码文件字节码文件信息常量池方法表集合类名 再看两个示例分析try-catch-finallykotlin 函数扩展的实现 源代码通过编译器编译为字节码&#xff0c;再通过类加载…

婴儿专用洗衣机有必要买吗?全网性价比高的宝宝洗衣机推荐

很多新手宝爸宝妈们在购买宝宝用品的时候&#xff0c;想要入手一款婴儿洗衣机&#xff0c;但在选婴儿洗衣机对很多新手宝妈宝爸来说也是一件很头疼的事情&#xff0c;婴儿洗衣机种类较多&#xff0c;而且功能的效果也有所不同&#xff01;所以又迟迟不敢下手&#xff0c;关于宝…

【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位

【STM32】HAL库的RCC复位状态判断及NVIC系统软件复位 在实际开发中 有时候会遇到复位状态不同 导致结果不同的情况 比如在上电复位时 电压不稳定 可能导致一些外部芯片无法正常工作 从而导致进行了错误的操作流程 所以 可以在程序运行后 加一个复位状态判断 用来检测是否正常复…

SpringCloudAlibaba微服务架构实战派上下册技术交流!

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…