8轴EtherCAT轴扩展模块EIO24088的使用

视频教程:8轴EtherCAT轴扩展模块EIO24088的使用

EIO系列带轴的扩展模块的使用方法相同,仅是扩展资源数量的区别。本文以EIO24088扩展模块为例,来对EIO系列扩展模块进行使用说明。

一 扩展模块简介

EIO24088扩展模块是EtherCAT总线控制器使用的扩展模块,可扩展数字量IO和脉冲轴这两类资源,通过EtherCAT总线连接控制器与EIO24088扩展模块。

1.jpg

当控制器的IO或轴资源不够的时候,需要增加扩展模块,控制器可以同时连接多个扩展模块,EIO系列扩展模块通过EtherCAT总线连接,每个扩展模块有唯一的地址,从0开始。

EIO24088轴扩展时,为总线转脉冲,将脉冲型驱动器接入到EIO24088扩展模块上的脉冲轴接口上。

EIO24088带两个EtherCAT总线接口,接线时注意EtherCAT IN 连接主控制器或上级模块,EtherCAT OUT连接驱动设备或下一级扩展板,IN和OUT口不可混用。

2.jpg

二 材料准备

(一)硬件

A.ZMC432控制器一台,任意带EtherCAT总线接口的控制器均可。

B.EtherCAT伺服驱动器+电机一套,脉冲型伺服驱动器+电机一套

C.EIO24088扩展模块一个

D.电脑一台。

E.带屏蔽层网线两根。

F.24V直流电源一个。

G.接线端子与连接线若干。

(二)软件

ZDevelop V3.10版本控制器编程软件。

3.jpg

从正运动官网www.zmotion.com.cn下载压缩包,解压后直接运行应用程序,无需安装。

需要配置驱动器参数时下载驱动器调试软件。

三 硬件接线

ZMC432总线控制器支持EtherCAT总线连接,支持最快250us的刷新周期(16轴以内),支持多达32轴运动控制,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等;同时还支持位置锁存、硬件比较输出、运动中精准输出等,功能齐全,配置高。采用优化的网络通讯协议可以实现实时的运动控制。

4.jpg

总线接线参考:

控制器、EIO扩展模块和驱动器的接线参考如下图:

5.jpg

EIO24088扩展模块接线规则:EIO24088可接到EtherCAT总线上的任意节点。

EIO24088为总线上的一个设备节点,可接入8个脉冲型驱动器,驱动器按照AXIS 0到AXIS 7的顺序依次编号,并且遵从总线上的驱动器编号规则。

驱动器的使能信号为脉冲接口内的通用输出口,直接通过主控制器的OP指令来使能。或使用SDO指令配置数据字典为自动使能后,主控制器无法直接控制对应的输出口来使能。

涉及的编号概念如下:总线相关指令参数会用到如下编号。

1.槽位号(slot)

槽位号是指控制器上总线接口的编号,缺省为0。当控制器上有多个总线接口时,在线命令发送?*SLOT查看。

6.jpg

运动控制器支持单总线时,槽位号为0。

支持双总线时,EtherCAT总线槽位号为0,RTEX总线槽位号为1。

2.设备号(node)

设备号是指一个槽位上连接的所有设备的编号,从0开始,按设备在总线上的连接顺序自动编号,可以通过NODE_COUNT(slot)指令查看总线上连接的设备总数。

3.驱动器编号

控制器会自动识别出槽位上的驱动器,编号从0开始,按驱动器在总线上的连接顺序自动编号。

驱动器编号与设备号不同,只给槽位上的驱动器设备编号,其他设备忽略。

四 扩展资源映射方法

EIO24088扩展模块上有两类资源需要映射,轴资源和IO资源。

控制器上程序只需通过IO编号就可以访问到扩展模块上的IO资源,EtherCAT总线扩展模块的IO编号通过总线指令NODE_IO来设置。

IO映射时先查看控制器自身的最大IO编号(包括外部IO接口和脉冲轴内的通用接口),再使用指令设置。

若扩展的IO与控制器自身IO编号重合,二者将同时起作用,所以IO映射的编号在整个控制系统中均不得重复。

扩展模块的轴使用前需要使用AXIS_ADDRESS指令映射轴号,轴映射也需要注意轴号不得重复。

IO映射语法:NODE_IO(slot,node)=iobase

slot:槽位号,0-缺省

node:设备编号,编号从0开始

iobase:映射IO起始编号,设置结果只会是8的倍数

示例:NODE_IO(0,0)=32 '设置槽位0接口设备0的IO起始编号为32

轴映射语法:AXIS_ADDRESS(轴号)=(槽位号<<16)+驱动器编号+1

示例:AXIS_ADDRESS(0)=(0<<16)+0+1 'EtherCAT总线上的第一个驱动器,驱动器编号0,绑定为轴0

若第一个节点是EIO24088,那么这里的驱动器编号0对应连接在EIO24088上的第一个脉冲型驱动器,否则便是EtherCAT总线驱动器。

五 扩展模块上驱动器使用方法

EIO24088扩展模块需要经过总线初始化之后才能使用,我们这里把一个脉冲型驱动器接到EIO24088扩展模块上的AXIS 0接口上,使用步骤如下:

1.执行总线初始化程序,初始化过程中识别EIO扩展模块的设备编号和连接的驱动器编号,根据驱动器编号操作轴映射,根据设备号操作扩展模块的IO映射,设置DRIVE_PROFILE和ATYPE。

2.初始化成功后,使能EIO24088扩展模块上的脉冲驱动器,同样也是操作脉冲轴接口内的OP信号使能驱动器,由于扩展模块映射的起始IO编号是32,这里的轴接口AXIS 0-AXIS 7内的通用输出口编号是40-47。在输出口窗口内按下OP(40)或在程序中执行指令OP(40,ON)均可使能AXIS 0上的脉冲型驱动器。

3.使能完成设置相关轴参数,再发送运动指令便可驱动电机。

软件操作如下:

7.jpg

在初始化操作成功后,总线上能识别该扩展模块,可查看扩展模块上的轴接口数,IO映射后输入输出的编号范围。

起始编号映射为32,该扩展模块上的输入编号为外部自带的24点+轴接口通用输入8点,一共32点,范围32-63,输出编号为外部的8点+轴接口通用输出8点,共16点,范围32-47。

8.jpg

EIO24088使用注意事项:

扩展模块上的IO不管有没有使用,都需要使用NODE_IO指令映射EIO24088的输入输出编号。扩展模块的DRIVE_PROFILE需要配置为0,ATYPE设为65,但实际由于是脉冲型驱动器,轴类型并不是65,真实轴类型的配置使用SDO指令配置数据字典6011h设置。

初始化过程中若产生硬限位报警,可在轴参数窗口将硬限位的映射编号号指向-1,表示不映射,需要接入限位开关时再去修改FWD_IN和REV_IN。

EIO24088扩展模块设置:

通过SDO指令读写数据字典设置,只开放了部分数据字典供设置,详情参见EIO24088硬件手册,更多驱动器参数使用驱动器调试软件修改。

例如:扩展的脉冲轴的真实轴类型ATYPE设置通过数据字典6011h设置,(按轴号依次设置,第一个驱动器设置数据字典编号为6011h+0800h,第二个驱动器设置6011h+1800h,以此类推,每个驱动器加800h,其他参数同理)。

9.jpg

数据字典读取语法:

SDO_READ (槽位号, 设备编号, 数据字典编号, 数据字典子编号, 数据类型, 读取数据存储TABLE位置)

SDO_READ_AXIS (轴号, 数据字典编号, 数据字典子编号, 数据类型, 读取数据存储TABLE位置)

数据字典写入语法:

SDO_WRITE (槽位号, 设备编号, 数据字典编号, 数据字典子编号, 数据类型, 写入数据值)

SDO_WRITE_AXIS (轴号, 数据字典编号, 数据字典子编号, 数据类型, 写入数据值)

数据字典读写示例:

global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)

  if iVender = $41B and iDevice = $1ab0 then '正运动24088脉冲扩展轴

  SDO_WRITE(Bus_Slot,iNode,$6011+Iaxis*$800,0,5,4) '设置扩展脉冲轴ATYPE类型,值为4表示脉冲和编码器信号在同一个轴号上

  SDO_WRITE(Bus_Slot,iNode,$6012+Iaxis*$800,0,6,0) '设置扩展脉冲轴INVERT_STEP脉冲输出模式,模式0脉冲+方向

  NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode '设置240808上IO的起始映射地址

  endif

end sub

如果EIO扩展模块之后还连接了EtherCAT驱动器,使用时注意总线扫描设备数量的设置,EtherCAT驱动器在初始化程序执行完便使能成功,后续设置轴参数便能运行,注意初始化过程中使用DRIVE_PROFILE指令配置合适的PDO列表,需要用到驱动器IO时,还需操作DRIVE_IO映射。

10.jpg

六 脉冲轴与总线轴混合使用

驱动器在使用之前,先配置常用驱动器参数,例如电子齿轮比、一圈脉冲数、电机转向、控制器模式等,配置方法可参考公众号历史文章,关于脉冲型驱动器和EtherCAT/RTEX总线驱动器的配置方法都有详细说明。

不同类型的轴混合使用时,主要是初始化过程和与驱动器通讯方式不同。

脉冲轴是通过给OP信号使能,总线轴通过一段初始化程序使能,使能成功后均可设置轴参数后执行运动。

驱动器通讯方式的区别:总线驱动器有对应的驱动器读写指令或驱动器软件修改参数,脉冲型驱动器只能通过驱动器软件修改参数。

演示配置:

本例子采用两种不同类型的的驱动器,脉冲型驱动器和EtherCAT总线驱动器混合使用,将一个脉冲驱动器接在控制器的脉冲轴接口AXIS 0上;将另一个EtherCAT总线驱动器接在控制器的EtherCAT口上,设备号和驱动器编号均为0。

总线初始化完成,在“控制器状态”能看到总线上的节点。

在这里插入图片描述
  混合使用步骤:

脉冲轴的轴号按所接的AXIS 0口默认是轴0,总线轴的轴号使用AXIS_ADDRESS指令映射为轴1。

1.使能EtherCAT总线驱动器:执行总线初始化程序,设置EtherCAT总线轴的AXIS_ADDRESS、DRIVE_PROFILE和ATYPE等。

2.使能脉冲型驱动器:总线初始化成功后,使能控制器脉冲轴接口上的脉冲驱动器,操作脉冲轴接口内的OP信号使能驱动器,这里的AXIS 0-AXIS 5口内的通用输出口编号是12-17。在输出口窗口内按下OP(12)或在程序中执行指令OP(12,ON)均可使能。

3.驱动器使能完成,后续两种不同的轴的使用方法基本一致,设置相关轴参数,再发送运动指令便可驱动电机。

控制器支持不同类型的轴混合插补。

12.jpg

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

             global CONST PUL_AxisStart   = 0    '本地脉冲轴起始轴号

             global CONST PUL_AxisNum   = 1    '本地脉冲轴轴数量

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

             global CONST Bus_NodeNum   = 1      '总线配置节点数量,用于判断实际检测到的从站数量是否一致

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

             global CONST Bus_Slot  = 0        '槽位号0(单总线控制器缺省0)

             

             global  MAX_AXISNUM        '最大轴数

             MAX_AXISNUM = SYS_ZFEATURE(0)

             

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

             Bus_InitStatus = -1

             global  Bus_TotalAxisnum    '检查扫描的总轴数

             

             delay(3000)    '延时3S等待驱动器上电,不同驱动器自身上电时间不同,具体根据驱动器调整延时

             

             ?"总线通讯周期:",SERVO_PERIOD,"us"

             Ecat_Init()      '初始化ECAT总线 

             

             

             END

             

             

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

             '初始流程:  slot_scan(扫描总线) ->   从站节点映射轴/io  ->  SLOT_START(启动总线) -> 初始化成功

             '****************************************************************************

             global sub Ecat_Init()

               local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias

               RAPIDSTOP(2)

               WAIT IDLE(0)

               

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

                 AXIS_ENABLE(i) = 0

                 atype(i)=0  

                 AXIS_ADDRESS(i) =0

                 DELAY(10)                      '防止所有驱动器全部同时切换使能导致瞬间电流过大

               next

             

               Bus_InitStatus = -1

             '  Bus_TotalAxisnum = 0  

               SLOT_STOP(Bus_Slot)        

               delay(200)                   '延时时间可以按需调整,确保驱动器已上电可以等待EtherCAT到位

               slot_scan(Bus_Slot)                      '扫描总线

               if return then 

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

                 if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then    '判断总线检测数量是否为实际接线数量

                   ?""  

                   ?"扫描节点数量与程序配置数量不一致!" ,"配置数量:"Bus_NodeNum,"检测数量:"NODE_COUNT(Bus_Slot)

                   Bus_InitStatus = 0    '初始化失败。报警提示

                   'return

                 endif   

                 

                 

                 '"开始映射轴号"

                 for Node_Num=0 to NODE_COUNT(Bus_Slot)-1            '遍历扫描到的所有从站节点

                   Drive_Vender = NODE_INFO(Bus_Slot,Node_Num,0)        '读取驱动器厂商

                   Drive_Device = NODE_INFO(Bus_Slot,Node_Num,1)        '读取设备编号

                   Drive_Alias = NODE_INFO(Bus_Slot,Node_Num,3)          '读取设备拨码ID

                   

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

                     for j=0 to NODE_AXIS_COUNT(Bus_Slot,Node_Num)-1      '根据节点带的电机数量循环配置轴参数(针对一拖多驱动器)

                           

                       Temp_Axis = Bus_AxisStart + Bus_TotalAxisnum    '轴号按NODE顺序分配

                       'Temp_Axis = Drive_Alias              '轴号按驱动器设定的拨码分配(一拖多需要特殊处理)          

                       base(Temp_Axis)

                       AXIS_ADDRESS(Temp_Axis)= (Bus_Slot<<16)+ Bus_TotalAxisnum + 1  '映射轴号

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

                         DRIVE_PROFILE=0     '配置为驱动器内置PDO列表,可改为1,-1,等参数                                         '配置为驱动器内置PDO列表

                       

             

             '          Sub_SetDriverIo(Drive_Vender,Temp_Axis,128 + 32*Temp_Axis)    '映射驱动器IO  IO映射到控制器IO32-以后每个驱动器间隔32点      '          

                                 Sub_SetNodePara(Node_Num,Drive_Vender,Drive_Device,j)      '设置特殊总线参数,EIO24088配置

             

                       disable_group(Temp_Axis)                      '每轴单独分组

                       Bus_TotalAxisnum=Bus_TotalAxisnum+1                  '总轴数+1

                     next

                   else                            'IO扩展模块

             '        Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,1024 + 32*Node_Num)    '映射扩展模块IO  

                   endif

                 next

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

                 

                 delay(200)

                 SLOT_START(Bus_Slot)        '启动总线

                 if return then 

                   

                   

                   

                   '?"开始清除驱动器错误"

                   for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 

                     BASE(i)

                     

                     DRIVE_CLEAR(0)

                     DELAY 50

               

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

                     datum(0)            '清除控制器轴状态错误"

                     wa 100  

                     

                     wdog=1              '使能总开关

                     

                     '"轴使能"

                     AXIS_ENABLE=1

                   next

                   Bus_InitStatus  = 1

                   ?"轴使能完成"

                   

                   '本地脉冲轴配置

                   for i = 0 to PUL_AxisNum - 1

                     base(PUL_AxisStart + i)

                     AXIS_ADDRESS  = (-1<<16) +  i

                     ATYPE = 4

                   next

                   ?"总线开启成功"      

                 else

                   ?"总线开启失败"

                   Bus_InitStatus = 0

                 endif  

               else

                 ?"总线扫描失败"

                 Bus_InitStatus = 0

               endif

             

             end sub

             

             

             '***********************EIO24088扩展模块设置*****************************

             '通过NODE_IO(Bus_Slot,Node_Num)分配模块IO起始地址

             '************************************************************************

             global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)

                 if  iVender = $41B and iDevice = $1ab0   then    '正运动24088脉冲扩展轴

                     SDO_WRITE(Bus_Slot,iNode,$6011+Iaxis*$800,0,5,4)      '设置扩展脉冲轴ATYPE类型

                     SDO_WRITE(Bus_Slot,iNode,$6012+Iaxis*$800,0,6,0)      '设置扩展脉冲轴INVERT_STEP脉冲输出模式

                     NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode          '设置240808上IO的起始映射地址        

                 endif

             end sub

             

             

             '***********************总线IO扩展模块映射********************************

             '通过NODE_IO(Bus_Slot,Node_Num)分配模块IO起始地址

             '**************************************************************************

             global sub Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum)

                 if iVender = $41B and iDevice = $130   then    '正运动EIO1616MT

                    NODE_IO(Bus_Slot,iNode) = i_IoNum

                 endif

             end sub

《8轴EtherCAT轴扩展模块EIO24088的使用》就讲到这里。

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

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

在这里插入图片描述

在实现高精度多位置控制及扩展的过程中,正确配置和优化DMC-E3032 V2.0运动控制卡至关重要。以下步骤和建议将助你一臂之力: 参考资源链接:[雷赛DMC-E3032 V2.0运动控制卡用户手册: EtherCAT总线与功能详解](https://wenku.csdn.net/doc/aufmxbca5x) 1. **硬件连接与配置**:首先确保DMC-E3032控制卡已通过EtherCAT总线正确连接至伺服驱动器和I/O模块。使用以太网线进行连接,并确保网络设置正确,以便控制卡能够通过高速通信实现精确控制。 2. **扩展设置**:在DMC-E3032控制卡中配置参数,包括每个的硬件规格和限制条件。根据实际应用需求,你可以扩展到最多32。务必遵循用户手册中的指导,设置正确的伺服参数和电子齿轮比,确保之间的精确同步。 3. **高精度控制优化**:实现高精度控制的关键是精确的速度和位置控制。使用控制卡提供的梯形、S形等速度曲线控制功能,可有效减少运动过程中的冲击和振动。同时,通过在线变速和变位功能,可以即时调整运动参数,以适应不同负载和速度要求。 4. **编码器接口的配置**:为了获得高精度的反馈信息,正确配置编码器接口是必不可少的。将编码器与驱动器和控制卡正确连接,并在控制卡软件中设置相应的编码器类型和参数。 5. **驱动安装与测试**:根据用户手册提供的指南,安装控制卡驱动程序,并确保所有硬件和软件的兼容性。使用随卡附带的测试软件检查通信和控制功能,确保每个的运动准确无误。 6. **应用软件开发**:开发定制化应用软件时,参考用户手册中的编程指南,利用提供的API和函数库。对于Windows平台的开发者,可以使用VB6.0、VC6.0和C#等工具进行软件开发,以实现复杂的控制逻辑和用户界面。 7. **维护与故障排除**:在安装和维护过程中,始终遵守用户手册的安全指南,并定期检查系统的稳定性和性能。遇到问题时,可利用深圳市雷赛控制技术有限公司提供的技术支持服务进行故障排除。 通过以上步骤,你可以有效地配置和优化DMC-E3032 V2.0运动控制卡,以实现高精度的多位置控制和扩展。如果需要进一步深入了解控制卡的功能和技术细节,建议详细阅读《雷赛DMC-E3032 V2.0运动控制卡用户手册:EtherCAT总线与功能详解》,以获得更多专业信息和高级配置技巧。 参考资源链接:[雷赛DMC-E3032 V2.0运动控制卡用户手册: EtherCAT总线与功能详解](https://wenku.csdn.net/doc/aufmxbca5x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正运动技术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值