• EtherCAT轴扩展模块EIO16084在运动控制系统中的应用


    EIO16084扩展模块的使用分为如下几步,硬件接线;总线初始化建立总线通讯连接,初始化中执行扩展资源的映射,分别配置轴资源和IO资源;扩展资源配置完成可通过控制器端访问,扩展轴为脉冲型,设置相关轴参数,发送运动命令即可控制电机运动。

    01 产品简介

    EIO16084扩展模块是EtherCAT总线控制器使用的扩展模块,可扩展数字量IO和脉冲轴这两类资源,当控制器本体上资源不够的时候,EtherCAT总线控制器可连接多个EIO扩展模块进行资源扩展,可查看控制器的IO最大扩展点数和最大扩展轴数,支持IO的远程扩展。
    在这里插入图片描述

    每个EIO扩展模块在扩展接线完成后,不需要进行二次开发,只需使用指令在EtherCAT主站控制器配置唯一的IO地址和轴地址,配置完成即可访问。

    IO地址编号通过总线指令NODE_IO来设置,控制器上程序只需通过IO编号就可以访问到扩展模块上的资源。轴地址的配置使用“AXIS_ADDRESS”指令映射绑定轴号,绑定完成通过BASE或AXIS指令指定轴号。

    EIO16084扩展模块功能特点:

    (1)支持4轴脉冲轴扩展。

    (2)脉冲输出模式:方向/脉冲或双脉冲。

    (3)每轴最大输出脉冲频率10MHz。

    (4)支持16进+8出IO扩展,每个脉冲轴另外各有2进2出IO可供配置。

    (5)脉冲轴以外的输出口最大输出电流达300mA,可直接驱动部分电磁阀

    (6)ECAT最快500us的刷新周期。

    (7)单电源供电,连接主电源即可,无需IO电源。

    此系列产品选型指南:
    在这里插入图片描述

    EIO系列带轴的扩展模块的使用方法相同,仅是扩展资源数量的区别,EIO16084和EIO24088的使用方法完全相同,EIO1616相比上面两个型号,无需轴映射相关操作。
    在这里插入图片描述

    02 接口说明

    1.总线接口

    EIO16084带两个EtherCAT总线接口,“EtherCAT IN”和“EtherCAT OUT”,使用标准网线完成接线。

    接线时注意:“EtherCAT IN”连接上一级模块,“EtherCAT OUT”连接下一级模块,IN和OUT口不可混用。

    2.通用输入口

    通用输入口IN的内部电路参考图如下,EIO16084带16个通用输入口,输入口需要NODE_IO配置IO地址编号才能通过控制器端操作,输入口参数参见下表。

    在这里插入图片描述

    输入口参数说明:
    在这里插入图片描述

    3.通用输出口

    通用输出口OUT的内部电路参考图如下,EIO16084带8个通用输入口,输出口需要NODE_IO配置IO地址编号才能通过控制器端操作(NODE_IO使用一次便可配置好输入和输出),输出口参数参见下表。

    在这里插入图片描述
    输入口参数说明:
    在这里插入图片描述
    4.轴接口

    EIO16084的轴接口有4个,采用DB26针脚,针脚定义如下表,轴接口包含差分脉冲输入和差分编码器输入信号,同时还有两路通用输入口(其中一路为报警输入),两路通用输出口(其中一路为驱动使能)。

    EIO16084扩展轴时,为总线转脉冲,将脉冲型驱动器接入到EIO16084扩展模块上的脉冲轴接口上。通过总线初始化建立EtherCAT总线控制器和EIO16084扩展模块之间的通讯连接,总线初始化过程中必须包含轴映射,之后参考脉冲型控制器的使用方法操作脉冲驱动器。
    在这里插入图片描述
    在这里插入图片描述

    可以通过数据字典配置EIO扩展板直接使能与告警,缺省不使用,需要主控制器来操作。

    告警输入、位置到位信号、轴使能、误差清除可以为通用的输入输出,由于驱动能力偏小建议做轴功能IO使用。

    “EGND,OVCC电源”是控制器内部输出供伺服IO使用,请勿连接到开关电源,不使用时悬空。

    03 接线参考

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

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

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

    注意:轴扩展模块的使用个数不是无限制的,参考控制器可扩展的最大轴数。

    如下图,ZMC416BE运动控制器本体支持连接16个脉冲驱动器,最大扩展轴数为20,故可以通过EtherCAT总线连接一个EIO16084扩展到支持20个脉冲驱动器。

    扩展轴映射轴号时注意避开本地脉冲轴,若本地脉冲轴使用了16个,默认对应轴号0-15,则扩展轴上的AXIS0-3(对应下图中驱动器编号0-3)分别手动映射为轴号16-19。

    在这里插入图片描述

    如下图,ZMC432运动控制器本体支持连接32个轴(脉冲驱动器+EtherCAT总线驱动器一共32个),控制器本体只有6路脉冲接口,通过一个EIO16084可扩展4路脉冲接口,支持脉冲驱动器和总线驱动器混合使用。

    在这里插入图片描述

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

    (1)槽位号(slot)

    槽位号是指控制器上总线接口的编号,EtherCAT总线槽位号为0。

    (2)设备号(node)

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

    (3)驱动器编号

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

    驱动器编号与设备号不同,只给槽位上的驱动器设备编号,其他设备忽略,映射轴号时将会用到驱动器编号。

    04 扩展资源映射方法

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

    1.IO映射

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

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

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

    IO映射语法:

    NODE_IO(slot,node)=iobase

    slot:槽位号,0-缺省

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

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

    示例:

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

    若设备0为EIO16084,按如上语法配置后,扩展模块上的通用输入口IN0-15对应的IO编号依次为32-47,轴接口内的通用输入口编号48-55,其中轴AXIS 0-3的驱动报警输入分别为48-51。通用输出口OUT0-7应的IO编号依次为32-39,轴接口内的通用输出口编号40-47,其中轴AXIS 0-3的驱动使能输出分别为40-43。
    在这里插入图片描述
    2.轴映射

    扩展模块的轴使用前需要使用“AXIS_ADDRESS”指令映射轴号,轴映射也需要注意整个系统的轴号不得重复。EIO系列扩展轴的映射与总线驱动器的轴映射语法相同。

    轴映射语法:

    AXIS_ADDRESS(轴号)=(槽位号<<16)+驱动器编号+1

    示例:

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

    若第一个节点是EIO16084,EIO16084上连接了驱动器,那么这里的驱动器0是连接在EIO16084上的第一个脉冲驱动器,否则便是EtherCAT总线驱动器。

    05 拓展脉冲轴的使用方法

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

    第一步:执行总线初始化程序(参见下节),初始化过程中识别EIO扩展模块的设备编号和连接的驱动器编号,根据驱动器编号操作轴映射,根据设备号操作扩展模块的IO映射,设置DRIVE_PROFILE和ATYPE。

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

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

    在这里插入图片描述

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

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

    在这里插入图片描述

    EIO16084使用注意事项:

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

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

    EIO16084扩展模块设置:

    通过SDO指令读写数据字典设置,只开放了部分数据字典供设置,更多驱动器参数使用驱动器软件修改。

    SDO指令配置输入输出:
    在这里插入图片描述

    SDO指令配置驱动器参数:

    例如:扩展的脉冲轴的真实轴类型设置通过数据字典6011h设置,(参考下表的参数,按轴号依次设置,第一个驱动器设置数据字典6011h+0800h,第二个驱动器设置6011h+1800h,以此类推,每个驱动器加800h,其他参数同理)
    在这里插入图片描述
    数据字典读取语法:

    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 = $1918   then    '正运动16084脉冲扩展轴
          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          '设置16084上IO的起始映射地址
       endif
    end sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    06 总线初始化

    此初始化程序可用来初始化EtherCAT驱动器和EtherCAT总线扩展模块,建立通讯连接(通用模板,适用于多种品牌的驱动器)。

    在这里插入图片描述

    '*******************************************************ECAT总线初始化
    global CONST BUS_TYPE = 0      '总线类型。可用于上位机区分当前总线类型
    global CONST MAX_AXISNUM =32    '最大轴数
    global CONST Bus_Slot   = 0        '槽位号0(单总线控制器缺省0)
    global CONST PUL_AxisStart= 0      '本地脉冲轴起始轴号
    global CONST PUL_AxisNum = 0    '本地脉冲轴轴数量
    global CONST Bus_AxisStart   = 6      总线轴起始轴号
    global CONST Bus_NodeNum = 2    '总线配置节点数量,用于判断实际检测到的从站数量是否一致
    global Bus_InitStatus      '总线初始化完成状态
    Bus_InitStatus = -1
    global  Bus_TotalAxisnum    '检查扫描的总轴数
    delay(3000)        '延时3S等待驱动器上电,不同驱动器自身上电时间不同,具体根据驱动器调整延时
    ?"总线通讯周期:",SERVO_PERIOD,"us"
    Ecat_Init()      '初始化ECAT总线 
    while (Bus_InitStatus = 0)
       Ecat_Init()
    wend
    end
    
    '****************************************ECAT总线初始化**********************************
    '初始流程:  slot_scan(扫描总线) ->   从站节点映射轴/io  ->  SLOT_START(启动总线) -> 初始化成功
    '*****************************************************************************************
    global sub Ecat_Init()
       local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias
       RAPIDSTOP(2)
       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)
       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= Bus_TotalAxisnum+1  '映射轴号
                   ATYPE=65      '设置控制模式 65-位置 66-速度 67-转矩 
                   Sub_SetPdo(Node_Num,Drive_Vender,Drive_Device)    '设定PDO参数
                   Sub_SetNodePara(Node_Num,Drive_Vender,Drive_Device,j)  '设置特殊总线参数,包含EIO16084的配置  
                   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 
             wdog=1            '使能总开关   
             '?"开始清除驱动器错误"
             for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1 
                BASE(i)
                DRIVE_CLEAR(0)
                DELAY 50
                '?"驱动器错误清除完成"
                datum(0)            '清除控制器轴状态错误"
                DELAY 100        
                '"轴使能"
                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
    
    '*****************************************手动配置PDO**********************************
    '部分特殊品牌可能需要手动配置,大部分只需要通过DRIVE_PROFILE设置自动配置相应的POD参数即可
    '*******************************************************************************************
    global sub Sub_SetPdo(iNode,iVender,iDevice)
       IF iVender = 0 then                    '自定义PDO  
          SDO_WRITE (Bus_Slot, iNode, $1c12, 0 ,5 ,0)        '禁用PDO,禁用后才可以修改内容
          DELAY(50)
          SDO_WRITE (Bus_Slot, iNode, $1c13, 0 ,5 ,0)
          DELAY(50)
          SDO_WRITE (Bus_Slot, iNode, $1600, $0 ,5 ,0)        'RxPDO配置对应参数
          SDO_WRITE (Bus_Slot, iNode, $1600, $1 ,7 ,$60400010)    '控制字
          SDO_WRITE (Bus_Slot, iNode, $1600, $2 ,7 ,$607a0020)    '目标位置
          SDO_WRITE (Bus_Slot, iNode, $1600, $3 ,7 ,$60fe0120)    '驱动器IO输入
          SDO_WRITE (Bus_Slot, iNode, $1600, $0 ,5 ,3)   
          SDO_WRITE (Bus_Slot, iNode, $1a00, $0 ,5 ,0)        'TxPDO配置对应参数
          SDO_WRITE (Bus_Slot, iNode, $1a00, $1 ,7 ,$60410010)    '状态字
          SDO_WRITE (Bus_Slot, iNode, $1a00, $2 ,7 ,$60640020)    '反馈位置
          SDO_WRITE (Bus_Slot, iNode, $1a00, $3 ,7 ,$60fd0020)    '驱动器IO输出
          SDO_WRITE (Bus_Slot, iNode, $1a00, $0 ,5 ,3)    
          SDO_WRITE (Bus_Slot, iNode, $1c12, 1 ,6 ,$1600)      'RxPDO分配对象
          DELAY(50)
          SDO_WRITE (Bus_Slot, iNode, $1c13, 1 ,6 ,$1a00)      TxPDO分配对象
          DELAY(50)
          SDO_WRITE (Bus_Slot, iNode, $1c12, 0 ,5 ,1)      '启用PDO
          DELAY(50)
          SDO_WRITE (Bus_Slot, iNode, $1c13, 0 ,5 ,1)
          SDO_WRITE (Bus_Slot, iNode, $1C32, $1 ,6 ,2)      '设置DC同步模式
          SDO_WRITE (Bus_Slot, iNode, $1C33, $1 ,6 ,2) 
          DRIVE_PROFILE = -1                '使用驱动缺省PDO配置
       elseif iVender = $66f then
          DRIVE_PROFILE = 4                
       else
          DRIVE_PROFILE = 0                
       endif
    end sub
    
    '***************************************从站节点特殊参数配置*****************************
    '通过SDO方式修改对应对象字典的值修改从站参数(具体对象字典查看驱动器手册)
    '**********************************************************************************************
    global sub Sub_SetNodePara(iNode,iVender,iDevice,Iaxis)
       if iVender = $41B and iDevice = $1918   then    '正运动EIO16084脉冲扩展轴
          SDO_WRITE(Bus_Slot,iNode,$6011,Iaxis*$800,5,4)  '设置扩展脉冲轴ATYPE类型
          SDO_WRITE(Bus_Slot,iNode,$6012,Iaxis*$800,6,0)  '设置扩展脉冲轴INVERT_STEP脉冲输出模式
          NODE_IO(Bus_Slot,iNode) = 32 + 32*iNode    '设置16084上IO的起始映射地址
       elseif iVender = $66f then              '松下驱动器
          SDO_WRITE(Bus_Slot,iNode,$3401,0,4,$10101)        '正限位电平 $818181
          SDO_WRITE(Bus_Slot,iNode,$3402,0,4,$20202)        '负限位电平 $828282 
          SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1)          '齿轮比
          SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1)  
          SDO_WRITE(Bus_Slot,iNode,$6092,1,7,10000)        '电机一圈脉冲数
          SDO_WRITE(Bus_Slot,iNode,$607E,0,5,224)        '电机方向0-反转224   
          SDO_WRITE(Bus_Slot,iNode,$6085,0,7,4290000000)      '异常减速度
          'SDO_WRITE(Bus_Slot,iNode,$1010,1,7,$65766173)      '写EPPROM(写EPPROM后驱动器需要重新上电)
       elseif iVender = $100000 then              '汇川驱动器
          SDO_WRITE(Bus_Slot,iNode,$6091,1,7,1)          '齿轮比
          SDO_WRITE(Bus_Slot,iNode,$6091,2,7,1)  
       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    '正运动EIO1616
          NODE_IO(Bus_Slot,iNode) = i_IoNum
       endif
    end sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167

    参考配置采用控制器依次连接一个EIO16084扩展模块和一个EtherCAT总线驱动器,采用以上初始化程序,成功建立通讯连接,控制器状态窗口显示当前扫描连接的节点情况。

    总线上的主站为控制器,控制器连接的第一个从站设备为EIO16084扩展模块,第二个从站设备为EtherCAT总线驱动器,没有使用控制器的本地脉冲轴接口。总线上的驱动设备映射轴号可以从6开始,EIO16084扩展模块的AXIS 0-3接口上的脉冲驱动器映射为轴号6-9,EtherCAT总线驱动器映射为轴号10,EIO16084扩展模块的IO编号起始为32。

    注意:映射的轴号和IO编号整个控制系统中不得重复,根据具体情况去选择编号。

    在这里插入图片描述

    在没有IO设备的情况下,我们可以通过OUT和IN端口直接相连判断IO的响应情况,如下图,测试EIO扩展模块的IO配置,将EIO的OUT2(映射编号34)端子连接到EIO的IN8(映射编号40)上,操作OP(34)可见输入口40收到信号。

    在这里插入图片描述

    EtherCAT总线初始化执行后,配置轴参数,发送运动指令便可控制电机运行,或参考下图,通过手动运动窗口,快速检测EtherCAT总线驱动器能否正常运行。

    在这里插入图片描述

    本次,正运动技术EtherCAT轴扩展模块EIO16084在运动控制系统中的应用,就分享到这里。

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

  • 相关阅读:
    JS-获取网页滑动距离,并实时监听
    Sentinel注解@SentinelResource详解
    Dialog使用
    代码随想录第40天|62.不同路径,63. 不同路径 II
    Jenkins 安装全攻略:从入门到精通
    使用三丰云免费主机搭建zerotier网络
    【百度0912】选择题
    HTML5期末大作业:商城网站设计——仿天猫在线商城(HTML和CSS实现天猫在线商城网站)
    读懂NFT地板价
    opencv(1):创建和显示窗口, 读取保存图片
  • 原文地址:https://blog.csdn.net/weixin_57350300/article/details/126497645