您现在的位置:智能制造网>技术首页>技术交流

超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化

2023年11月17日 11:16来源:深圳市正运动技术有限公司 >>进入该公司展台人气:137


XPCIE1032H功能简介

XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。
XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动控制实时软核,解决了高速高精应用中,PC Windows开发的非实时痛点,指令交互速度比传统的PCI/PCIe快10倍。

企业微信截图_20231116091426.png

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

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

企业微信截图_20231116091450.png



➜XPCIE1032H与MotionRT7实时内核的配合具有以下优势:

企业微信截图_20231116091505.png

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

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

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

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

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

6.支持EtherCAT总线和脉冲输出混合联动、混合插补。

企业微信截图_20231116091527.png

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

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

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

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

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

企业微信截图_20231116091603.png

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

企业微信截图_20231116091622.png

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

  • 打开计算机机箱,选择一条空闲的XPCIE卡槽,用螺丝刀卸下相应的挡板条。

  • 将运动控制卡插入该槽,拧紧挡板条上的固定螺丝。

XPCIE1032H驱动安装与建立连接参考往期文章EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接



一、新建C#项目(VS2022)
企业微信截图_20231116091638.png

到正运动技术的下载中心选择需要的平台库文件。

企业微信截图_20231116091739.png

解压下载的安装包找到 “Zmcaux.cs”, “zauxdll.dll”, “zmotion.dll” 放入到项目文件中。

1、“Zmcaux.cs”放在项目根目录文件中,与bin目录同级。

企业微信截图_20231116091752.png
2、“zauxdll.dll”,“zmotion.dll”放在bin -> Debug。

企业微信截图_20231116091803.png

用vs打开新建的项目文件,在右边的解决方案资源管理器中点击显示所有,选中项目,右键“添加”->“现有项”,选中zmcaux.cs文件添加进在项目中。

企业微信截图_20231116091822.png

企业微信截图_20231116091836.png

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

企业微信截图_20231116091850.png



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

QQ截图20231116092358.png

企业微信截图_20231116092553.png

企业微信截图_20231116092614.png

企业微信截图_20231116092631.png

企业微信截图_20231116092646.png

企业微信截图_20231116092656.png

企业微信截图_20231116092707.png

企业微信截图_20231116092719.png

企业微信截图_20231116092731.png

企业微信截图_20231116092743.png

企业微信截图_20231116092754.png

企业微信截图_20231116092805.png

企业微信截图_20231116092820.png

其他基本轴参数指令:

企业微信截图_20231116092834.png

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

企业微信截图_20231116093228.png


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

1、通过LOCAL链接方式,按钮控件的的click事件触发链接控制卡。

1.png

2、选择总线初始化的bas脚本文件下载到控制器rom里面掉电保存。

提前在zdevelop软件根据需求修改总线初始化的basic程序,映射轴,节点IO等初始化内容。
这里以节点0(汇川驱动器-0轴)、节点1(EIO16084)的1-4轴映射为总线轴为例,将节点之间通过ETHERCAT口连接起来。如下图:
相关初始化basic程序(其中红色为指令,可以到正运动查阅其使用场景以及方法)。
相关配置如下:

利用按钮的click事件,浏览选择编辑好的bas文件下载掉电保存,并弹出反馈下载是否成功的提示。

1.png

3、通过按钮控件的click事件触发初始化。

调用函数库的ZAux_Execute函数(在线命令),通过在线命令调用basic脚本里面的总线初始化函数-- Ecat_Init()进行总线初始化。

private void EcatInitStart_Btn_Click(object sender, EventArgs e)

{

    if (g_handle == (IntPtr)0)

    {

        MessageBox.Show("未链接到控制器!", "提示");

    }

    else

    {

        int tmpret;

        //-1可能正在执行初始化

        if ((BasFlag == true) && (InitStatus != -1))        

        {

            InitStatus = -1;

            StringBuilder buffer = new StringBuilder(10240);

            tmpret = zmcaux.ZAux_Execute(g_handle, "RUNTASK 1,Ecat_Init", buffer, 0);        //任务1重新运行BAS中的初始化函数

            if (tmpret != 0)

            {

                MessageBox.Show("总线初始化失败!", "提示");

                return;

            }

            else

            {   

                MessageBox.Show("总线初始化成功!", "提示");

            }

        }

        else

        {

            MessageBox.Show("Bas文件未加载");

            return;

        }

    }

}

4、以汇川驱动器为例,驱动器IO映射的起始地址为DI1,也就是正向超程开关(正硬限位),若要设置负向超程开关,将起始地址加1。

可以通过按钮控件的click事件,触发设置轴的软限位,以及原点、正负硬限位。驱动器IO映射的basic指令是DRIVE_IO。在这里调用在线命令的PC函数去实现驱动器IO映射。
Basic指令说明见下图:
企业微信截图_20231116093300.png
DRIVE_IO -- 驱动器IO:

企业微信截图_20231116093313.png

通过按钮控件的click事件,配置轴的正负软限位和驱动器IO起始地址(正负硬限位IO映射)。

private void Configure_OK_Button_Click(object sender, EventArgs e)

{

    StringBuilder buffer = new StringBuilder(10240);

    //正向软限位设置

    zmcaux.ZAux_Direct_SetFsLimit(g_handle, MoveAxis, Convert.ToSingle(FSLimit_Value.Text));

    //负向软限位设置

    zmcaux.ZAux_Direct_SetRsLimit(g_handle, MoveAxis, Convert.ToSingle(RSLimit_Value.Text));          

    //驱动器IO起始地址           

    zmcaux.ZAux_Execute(g_handle, "DRIVE_IO(" + MoveAxis.ToString() + ") = " +DriveStart_IO_Value.Value.ToString(), buffer, 0);

    //正硬限位设置

    zmcaux.ZAux_Direct_SetFwdIn(g_handle, MoveAxis, DRIVE_Start_IO);

    zmcaux.ZAux_Direct_SetInvertIn(g_handle, DRIVE_Start_IO, 1);

    //负硬限位设置

    zmcaux.ZAux_Direct_SetRevIn(g_handle, MoveAxis, DRIVE_Start_IO + 1);

    zmcaux.ZAux_Direct_SetInvertIn(g_handle, DRIVE_Start_IO + 1, 1);

    MessageBox.Show("当前轴配置成功!", "提示");

}

5、通过按钮控件的MouseDown(鼠标在组件上方并按下时发生)事件来触发单轴持续运动;MouseUp(鼠标在组件上方并松开时发生)事件来触发单轴运动的停止。模拟手动运动的调试过程。

1.png

6、通过textbook控件的 TextChanged(空间上text属性更改时发生)事件来修改运动过程中轴的基本参数,定时器会获取接收。//脉冲当量变化

private void Units_Value_TextChanged(object sender, EventArgs e)

{

    zmcaux.ZAux_Direct_SetUnits(g_handle, MoveAxis, Convert.ToSingle(Units_Value.Text));

}

//轴速度变化

private void Speed_Value_TextChanged(object sender, EventArgs e)

{

    zmcaux.ZAux_Direct_SetSpeed(g_handle, MoveAxis, Convert.ToSingle(Speed_Value.Text));

}

//加速度变化

private void Accel_Value_TextChanged(object sender, EventArgs e)

{

    zmcaux.ZAux_Direct_SetAccel(g_handle, MoveAxis, Convert.ToSingle(Accel_Value.Text));

}

//减速度变化

private void Decel_Value_TextChanged(object sender, EventArgs e)

{

    zmcaux.ZAux_Direct_SetDecel(g_handle, MoveAxis, Convert.ToSingle(Decel_Value.Text));

}

7、通过按钮控件,与文本信息比对,触发总线轴的使能切换功能。

1.png

8、通过复选框的切换、单选框的选择实现寸动运动调试的功能。

//寸动方向选择

private void MoveDirection_CheckedChanged(object sender, EventArgs e)

{

    if (MoveDirection.Checked == false)

    {

        MoveDirection.Text = "运动方向: 正";

        dir = 1;

    }

    else

    {

        MoveDirection.Text = "运动方向: 负";

        dir = -1;

    }

}

//寸动启动

private void InchStart_Button_Click(object sender, EventArgs e)

{

    if (g_handle == (IntPtr)0)

    {

        MessageBox.Show("未链接到控制器!", "提示");

    }

    else

    {


        if (MoveAbs_RadBtn.Checked == true)     

        {

            zmcaux.ZAux_Direct_Single_MoveAbs(g_handle, MoveAxis, dir * Convert.ToSingle(InchDistance_Value.Text));

        }

        //相对运动

        if (MoveOpp_RadBtn.Checked == true)        

        {

            zmcaux.ZAux_Direct_Single_Move(g_handle, MoveAxis, dir * Convert.ToSingle(InchDistance_Value.Text));

        }

    }

}

9、通过定时器的刷新,对轴参数的接收,初始化信息,IO监控等信息进行实时的反馈。

1.png

10、通过按钮控件的的click事件触发断开链接。

1.png




四、运行效果
运行主界面如下:

企业微信截图_20231116093328.png

本次,正运动技术EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化,就分享到这里。

教学视频以及源代码下载地址,更多精彩内容请关注“ 正运动小助手 ”公众号。

全年征稿/资讯合作 联系邮箱:1271141964@qq.com
  • 凡本网注明"来源:智能制造网"的所有作品,版权均属于智能制造网,转载请必须注明智能制造网,https://www.gkzhan.com。违反者本网将追究相关法律责任。
  • 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。


编辑精选

更多


宣传样本推荐图书

旗下子站

工控网机器人仪器仪表物联网3D打印工业软件金属加工机械包装机械印刷机械农业机械食品加工设备制药设备仓储物流环保设备造纸机械工程机械纺织机械化工设备电子加工设备水泥设备海洋水利装备矿冶设备新能源设备服装机械印染机械制鞋机械玻璃机械陶瓷设备橡塑设备船舶设备电子元器件电气设备



关于我们|本站服务|会员服务|企业建站|旗下网站|友情链接| 兴旺通| 产品分类浏览|产品sitemap

智能制造网 - 工业4.0时代智能制造领域“互联网+”服务平台

Copyright gkzhan.comAll Rights Reserved法律顾问:浙江天册律师事务所 贾熙明律师

客服热线:0571-87756395加盟热线:0571-87759904媒体合作:0571-89719789

客服部:编辑部:展会合作:市场部:

关闭