EtherCAT运动控制卡和LabVIEW构建智能装备(三)

今天,正运动小助手给大家分享一下EtherCAT运动控制卡之ECI2828的轴参数说明以及如何使用LabVIEW进行EtherCAT总线初始化。

一 、ECI2828硬件介绍

ECI2828系列运动控制卡支持多达16 轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴和机械手指令等;采用优化的网络通讯协议可以实现实时的运动控制。

ECI2828系列运动运动控制卡支持以太网,232 通讯接口和电脑相连,接收电脑的指令运行,可以通过EtherCAT总线和CAN总线去连接各个扩展模块,从而扩展输入输出点数或运动轴。

111.jpg

ECI2828系列运动控制卡的应用程序可以使用 VC、VB、VS、C++以及C#等软件来开发,程序运行时需要动态库 zmotion.dll。调试时可以把ZDevelop软件同时连接到控制器,从而方便调试,方便观察。

1.jpg

二 、LabVIEW基本轴参数介绍

ATYPE:轴功能类型设置,只能设置为轴具备的特性(轴特性可查询硬件手册或使 用 ZDevelop 软件连接上控制器以后查看控制器状态)。

UNITS:脉冲当量,指定每单位发送的脉冲数,支持 5 位小数精度。

ACCEL:轴加速度,单位为 units/s/s。当多轴运动时,插补运动的加速度为主轴加速度。建议运动前设置好加速度和减速度,运动中不要修改,运动中调整会导致速度曲线变化。

DECEL:轴减速度,单位为 units/s/s。当多轴运动时,作为插补运动的减速度。当设置为0 时,自动等于加速度ACCEL值,进行对称的加减速。建议运动前设置好加速度和减速度,运动中不要修改,运动中调整会导致速度曲线变化。

SPEED:轴速度,单位为 units/s。当多轴运动时,作为插补运动的速度。SPEED 修改后,立刻生效,可以实现动态变速,但是改变瞬间会抖。希望平滑变速请使用 SPEED_RATIO 指令。

以上是控制轴运动的基本参数,在硬件连接没问题的情况下,只要设置好这5个参数,就可以控制伺服或步进电机运动。

2.jpg

三、 总线初始化文件准备

总线初始化文件一般可以使用正运动的开发环境ZDevelop来编辑。

3.jpg

我们可以直接打开“.zpj”项目,该项目中就包含了“ECAT初始化.bas”文件。或者直接打开“ECAT初始化.bas”文件来修改初始化程序。

以下是初始化文件的具体内容:

             '*******************************************************ECAT总线初始化

             '''''''''

             global CONST BUS_TYPE = 0         '总线类型。用于上位机区分当前模式

             global CONST MAX_AXISNUM = 16       '最大轴数

             global CONST Bus_Slot  = 0        '槽位号0

             global CONST Bus_AxisStart   = 0    '总线轴起始轴号

             global Bus_InitStatus      '总线初始化完成状态

             Bus_InitStatus = -1

             global  Bus_TotalAxisnum    '检查扫描的总轴数

             delay(3000)        '延时3S等待驱动器上电

             '**********************初始化ECAT总线 

             Ecat_Init()

             end

            

             global sub Ecat_Init()

                 local temp_axis

                 for i=0 to MAX_AXISNUM - 1    '初始化还原轴类型          

                     AXIS_ENABLE(i) = 0

                     atype(i)=0  

                 next

                   

                 Bus_InitStatus = -1

                 Bus_TotalAxisnum = 0  

                 SLOT_STOP(Bus_Slot)

                 delay(200)

                 slot_scan(Bus_Slot)                      '开始扫描

                 if return then 

                   

                    ?"总线扫描成功","连接设备数:"NODE_COUNT(Bus_Slot)

                    ?"开始映射轴号"

                    for i=0 to NODE_COUNT(Bus_Slot)-1      '遍历总线下所有从站节点

                       if NODE_AXIS_COUNT(Bus_Slot,i) <>0 then    '判断当前节点是否有电机

                          for j=0 to NODE_AXIS_COUNT(Bus_Slot,i)-1

                             temp_axis = Bus_AxisStart +Bus_TotalAxisnum

                             base(temp_axis)

                             AXIS_ADDRESS=Bus_TotalAxisnum+1      '映射轴号

                             ATYPE=65      '设置控制模式 65-位置 66-速度 67-转矩 

                             DRIVE_PROFILE= 0          '设置PROFILE功能

                             disable_group(temp_axis)      '每轴单独分组

               

               '             DRIVE_IO = 128 + (temp_axis)*16    '映射驱动器上的IO状态

               '             REV_IN = 128 + (temp_axis)*16 

               '             FWD_IN = 129 + (temp_axis)*16

               '             DATUM_IN = 130 + (temp_axis)*16

               '             INVERT_IN(128 + (temp_axis)*16,ON)

               '             INVERT_IN(129 + (temp_axis)*16,ON)

               '             INVERT_IN(130 + (temp_axis)*16,ON)

                         

                             Bus_TotalAxisnum=Bus_TotalAxisnum+1    '总轴数+1

                          next

                       endif

                    next

                    ?"轴号映射完成","连接总轴数:"Bus_TotalAxisnum

                    wa 2000

                   

                    SLOT_START(Bus_Slot)            '启动总线

                    if return then 

                       ?"总线开启成功"      

                       ?"开始清除驱动器错误(根据驱动器数据字典设置)"

                       for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1          

                          DRIVE_CONTROLWORD(i)=128    '根据驱动器数据字典

                          wa 100

                          DRIVE_CONTROLWORD(i)=6

                          wa 100

                          DRIVE_CONTROLWORD(i)=15

                          wa 100

                       next

                       ?"驱动器错误清除完成"

                       wa 100

                       ?"清除控制器错误"

                       datum(0)

                       DRIVE_CLEAR(0)

                       ?"控制器错误清除完成"

                       wa 100

                           

                       ?"轴使能准备"

                       for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1

                          base(i)

                          AXIS_ENABLE=1

                       next

                       wdog=1                      '使能总开关

                       Bus_InitStatus  = 1

                       ?"轴使能完成"

                    else

                       ?"总线开启失败"

                       Bus_InitStatus = 0

                    endif

                 else

                    ?"总线扫描失败"

                    Bus_InitStatus = 0

                 endif

             end sub

四 、LabVIEW编程介绍

在进入具体程序介绍前,我们先来大概了解一下LabVIEW究竟是怎么编程的。

1.LabVIEW编程结构 – while循环结构

4.jpg

While循环结构顾名思义,就是类似于C语言中的while,或是正运动开发环境ZDevelop中使用的while循环一般,来对程序进行循环扫描。我们可以通过BOOL类型输入来控制while循环是否结束,以及将 !接入显示控件来显示while循环次数。

2.LabVIEW编程结构–事件结构

6.jpg

事件结构是我们进行人机交互的主要结构,在事件结构中,我们可以自由添加外部控件的触发事件。

例如:在前面板处,我们添加了一个“以太网连接”的控件,当我们想在这个控件按下时,执行对应的程序,我们就可以在事件结构中添加这个控件的事件,以此来达到我们的目的。

7.jpg

8.jpg
9.jpg

此时当我们按下“以太网连接”控件后,可以发现弹出一个消息框,消息框显示“鼠标按下”,这个正是我们所要显示的字符常量。

3. LabVIEW编程结构 – 条件结构。

10.jpg

此结构类似于C语言中的if语句,当 条件结构中的?输入为真时,执行“真”内程序,当条件结构的?输入为假时,执行“假”内程序。

4. LabVIEW编程结构 – 程序运行顺序。

在LabVIEW中一般是最后添加的函数先执行。

11.jpg

所以,为了进行先后顺序执行,我们可以使用顺序结构来进行分类。

12.jpg

13.jpg

五、 LabVIEW初始化EtherCAT总线

1.下载初始化文件函数。

14.jpg

2.LabVIEW中函数使用实例。

下面我们以例程8-总线控制运动例程来讲解一下ZAux_BasDown函数使用方式。

(1)首先,我们在事件结构中添加了“【下载Bas文件】值改变”鼠标按下事件。

15.jpg

也就是当我们控件界面的“下载Bas文件”按键按下时触发该事件。

(2)接下来是满足“条件结构”中的条件,即句柄不为0时,执行条件结构中“真”程序。

16.jpg

在“条件结构”中我们看到还有一个“文件对话框”的控件,该控件可以为我们打开一个用于选择下载文件的对话框。剩下的就是选择我们需要初始化的总线文件即可。

17.jpg

(3)初始化完成后,我们可以看见轴状态为65,这代表我们使用的是csp位置模式。

18.jpg

3.LabVIEW中轴状态显示。

(1)轴状态栏因为是实时更新的,所以需要我们循环地访问控制器里的轴参数。这里我们可以在“事件结构”中的“超时”处写入我们的读取轴参数程序。“超时”事件是在其他事件未触发时,“事件结构”中默认执行的事件。

19.jpg

这里我们可以看到,此处“超时”事件中有两个“条件结构”一个是轴参数读取“条件结构”。在轴参数读取的条件结构中,当连接句柄不为0时,轴参数读取的“条件结构”便处于执行状态,也就是只要我们一旦连接上了控制器,轴参数便一直处于实时读取状态。

另一个“条件结构”是总线初始化显示程序,当“文件下载标志”、“初始化状态”、“连接句柄”三个变量有一个不满足要求时,便重新读取一下总线节点、初始化文件里的**“Bus_InitStatus”初始化完成标志、“Bus_TotalAxisnum”**总线总轴数。

4.LabVIEW中EtherCAT交互。

要了解EtherCAT总线的SDO通讯的程序实现,我们可以在**“事件结构”中看一下“设置”“读取”**两个按键里的程序。

20.jpg

(1)“设置”事件程序。

21.jpg

我们可以看见“设置”事件中仅调用了一个“ **ZAux_BusCmd_SDOWrite”**函数就可以实现。

(2)“读取”事件程序。

22.jpg

读取也只需要调用**“ ZAux_BusCmd_SDORead”**函数即可实现。

六、 调试与监控

1.因为,ECI2828是通过TCP/IP与PC建立连接的,这意味着我们可以建立多条连接。因此,在使用启动LabVIEW程序时,我们还可以使用正运动开发环境ZDevelop来监控当前控制器运行状态。

23.jpg

通过打印信息,我们可以看见总线初始化已成功。

2.示波器使用。

连接“ZDevelop”软件通过软件右侧的轴参数进行控制器状态监控,也可以点击“视图”→“示波器”打开示波器对轴运动情况进行监控。

24.jpg

示波器可以实现实时监控当前的命令位置和反馈位置。

25.jpg

3.调试视频。

EtherCAT运动控制卡和LabVIEW构建智能装备(三)

本次,正运动技术EtherCAT运动控制卡和LabVIEW构建智能装备(三),就分享到这里。

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

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

26.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 汇川EtherCAT是一种高效的工业以太网通信协议,用于实时控制和通信。要使用汇川EtherCAT控制第方伺服,需要按照以下步骤操作。 首先,确保您已经正确连接了EtherCAT总线和第方伺服。将EtherCAT主站连接到控制器,并将伺服驱动器连接到EtherCAT从站。 然后,您需要在您的控制器上设置EtherCAT网络。通过配置控制器参数,将EtherCAT网络设置为正确的数据传输速率和拓扑结构,以适应您的应用需求。 接下来,您需要在控制器上配置和初始化EtherCAT从站。每个从站都需要有一个唯一的从站地址和网络配置信息。通过配置从站参数,您可以将第方伺服正确地识别和注册到EtherCAT网络中。 一旦EtherCAT网络配置和从站初始化完成,您就可以开始使用控制器发送控制指令给第方伺服。通过编程或配置控制器的工具软件,您可以发送不同类型的指令,如位置、速度或力控制指令,以控制第方伺服的运动。 在发送指令之前,您需要确保您了解第方伺服的通信协议和相关参数。根据第方伺服的手册或文档,您可以了解到如何正确设置和发送控制指令。 最后,您可以通过监测和反馈机制来获取第方伺服的运动状态。通过读取从站的状态和反馈数据,您可以实时监测第方伺服的位置、速度和其他相关信息。 总之,要使用汇川EtherCAT控制第方伺服,您需要正确设置EtherCAT网络和从站参数,并按照第方伺服的通信规范发送控制指令。通过监测反馈数据,您可以实时获取第方伺服的运动状态。 ### 回答2: 汇川EtherCAT是一种用于实时通信和控制的开放式工业以太网协议。它可以用于控制各种设备和系统,包括第方伺服驱动器。 要使用汇川EtherCAT控制第方伺服,首先需要确保伺服驱动器支持EtherCAT通信协议。然后,您需要将伺服驱动器连接到以太网交换机,并配置EtherCAT总线的网络拓扑。 在配置完成后,您可以使用汇川EtherCAT控制器(例如EtherCAT主站或EtherCAT从站)设置和监控第方伺服驱动器的参数和运行状态。具体步骤包括: 1. 配置EtherCAT主站:在主站上设置伺服驱动器的配置参数,例如通信周期、数据帧长度等。 2. 连接EtherCAT主站和伺服驱动器:使用以太网电缆将主站和伺服驱动器连接起来,确保连接的稳定和可靠。 3. 设置伺服参数:通过主站软件或编程接口,向第方伺服发送设置参数的命令,例如位置、速度或加速度控制参数。 4. 控制伺服运动:使用主站发送命令,例如启动、停止、加减速等,来控制伺服驱动器的运动。 5. 监控伺服状态:通过主站软件或编程接口,获取伺服驱动器的运行状态、故障信息以及实时反馈数据,例如位置、速度等。 需要注意的是,不同的第方伺服驱动器可能有不同的控制命令和参数设置方式。您需要参考相关的用户手册、软件或技术文档,了解伺服驱动器的具体配置和控制方法。 总结起来,使用汇川EtherCAT控制第方伺服需要配置EtherCAT通信网络,连接主站和伺服驱动器,并使用主站软件或编程接口来设置参数和控制运动。这样就可以实现对第方伺服驱动器的控制和监控。 ### 回答3: 汇川ethercat是一种实时以太网通信协议,用于控制和通信各种机械设备,包括伺服系统。要使用汇川ethercat控制第方伺服,需要按照以下步骤进行操作: 1.硬件连接:首先,确保伺服和控制系统之间的物理连接准确可靠。通常,这涉及连接正确的电缆,包括以太网通信和电源线。 2.配置网络:接下来,在控制系统中配置以太网通信网络。这通常涉及设置IP地址和网络参数,以确保控制系统能够与伺服进行通信。 3.配置驱动器:在控制系统中配置相应的以太网驱动器模块,以支持汇川ethercat通信协议。这样,控制系统才能理解和与伺服进行有效的通信。 4.编写控制程序:使用相应的编程软件(如C、C++、Python等),编写控制程序来实现所需的功能。这可以包括设定伺服的位置、速度、加速度等参数,以及发送命令和接收反馈信息等。 5.测试和调试:在编写完控制程序后,进行一系列的测试和调试,确保控制系统能够正确地与第方伺服进行通信和控制。这可能需要通过反复修改程序和参数,直到达到预期的效果。 总结起来,要使用汇川ethercat控制第方伺服,首先需要正确连接硬件设备,然后进行网络和驱动器的配置,编写相应的控制程序,并进行测试和调试工作。通过这些步骤,就能够实现对第方伺服的有效控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正运动技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值