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

eio16084扩展模块的使用分为如下几步,硬件接线;总线初始化建立总线通讯连接,初始化中执行扩展资源的映射,分别配置轴资源和io资源;扩展资源配置完成可通过控制器端访问,扩展轴为脉冲型,设置相关轴参数,发送运动命令即可控制电机运动。
01 产品简介
eio16084扩展模块是ethercat总线控制器使用的扩展模块,可扩展数字量io和脉冲轴这两类资源,当控制器本体上资源不够的时候,ethercat总线控制器可连接多个eio扩展模块进行资源扩展,可查看控制器的io最大扩展点数和最大扩展轴数,支持io的远程扩展。
eio16084扩展模块
每个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电源。
此系列产品选型指南:
产品型号 电机轴数 编码器数 总轴数 内部输入/输出口 ecat in/ecat out
eio1616 - - - 16/16 1/1
eio16084 4 4 4 16/8 1/1
eio24088 8 8 8 24/8 1/1
eio系列带轴的扩展模块的使用方法相同,仅是扩展资源数量的区别,eio16084和eio24088的使用方法完全相同,eio1616相比上面两个型号,无需轴映射相关操作。
eio24088扩展模块
02 接口说明
1.总线接口
eio16084带两个ethercat总线接口,“ethercat in”和“ethercat out”,使用标准网线完成接线。
接线时注意:“ethercat in”连接上一级模块,“ethercat out”连接下一级模块,in和out口不可混用。
2.通用输入口
通用输入口in的内部电路参考图如下,eio16084带16个通用输入口,输入口需要node_io配置io地址编号才能通过控制器端操作,输入口参数参见下表。
通用输入口in的内部电路参考图
输入口参数说明:
项目 规格
通道数 16(in0-in15)
输入方式 npn型
输入电压等级 dc24v
输入电流(典型值) 4.8ma
输入开通电压 <14.5v
输入最小电流 1.8ma
输入阻抗 4.7kω
隔离方式 光电隔离
输入频率 <5khz
3.通用输出口
通用输出口out的内部电路参考图如下,eio16084带8个通用输入口,输出口需要node_io配置io地址编号才能通过控制器端操作(node_io使用一次便可配置好输入和输出),输出口参数参见下表。
通用输出口out的内部电路参考图
输入口参数说明:
项目 规格
通道数 8(out0-out7)
输出方式 晶体管npn型,od输出。
输出电压等级 负载电源≤36v
最大输出电流 300ma
关闭时最大漏电流 25μa
导通响应时间 12μs
关闭响应时间 80μs
隔离方式 光电隔离
过流保护 支持,动作电流600ma
输出频率 <8khz
4.轴接口
eio16084的轴接口有4个,采用db26针脚,针脚定义如下表,轴接口包含差分脉冲输入和差分编码器输入信号,同时还有两路通用输入口(其中一路为报警输入),两路通用输出口(其中一路为驱动使能)。
eio16084扩展轴时,为总线转脉冲,将脉冲型驱动器接入到eio16084扩展模块上的脉冲轴接口上。通过总线初始化建立ethercat总线控制器和eio16084扩展模块之间的通讯连接,总线初始化过程中必须包含轴映射,之后参考脉冲型控制器的使用方法操作脉冲驱动器。
针脚号 信号 说明
1 egnd 外部电源地
2 in16-19/alm 通用输入,建议做驱动报警
3 out8-11/enable 通用输出,建议驱动使能
4 ea- 编码器输入
5 eb- 编码器输入
6 ez- 编码器输入
7 +5v 内部5v电源输出
8 备用 备用
9 dir+ 伺服或步进方向输出
10 gnd 内部电源地
11 pul- 伺服或步进脉冲输出
12 备用 备用
13 gnd 内部电源地
14 ovcc e24v输出(建议仅供伺服io )
15 out12-15/clr 通用输出,建议驱动报警清除
16 in20-23/inp 通用输入,建议做到位信号
17 ea+ 编码器输入
18 eb+ 编码器输入
19 ez+ 编码器输入
20 gnd 内部电源地
21 gnd 内部电源地
22 dir- 伺服或步进方向输出
23 pul+ 伺服或步进脉冲输出
24 gnd 内部电源地
25 备用 备用
26 备用 备用
可以通过数据字典配置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
若设备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,绑定为轴0axis_address(1)=(0< 从站节点映射轴/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   endifend 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 endifend 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) endifend 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 endifend sub
参考配置采用控制器依次连接一个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在运动控制系统中的应用,就分享到这里。


MEMS技术在标准实时时钟(RTC)中的优势
车载LAN应用中,基于共模扼流线圈,村田推荐什么样的CAN静噪对策?
贞光科技|汽车芯片深度研究报告
凯迪正大10kV-35kV电缆试验用油杯终端
5G时代下的各种脑是什么情况
EtherCAT轴扩展模块EIO16084在运动控制系统中的应用
英特尔推新款可编程芯片,能否越位AMD?
德国将对华为是否参与该国5G网络的建设作出最终的决定
DMS-SCADA试用—打通生产现场数字化应用最后一公里
2020年上半年云服务市场规模达100.8亿元
无人机市场现竞争激烈,使用场景已经影响了不止一个行业
热仿真和热特性优化 在汽车LED车灯上的应用
ARM的太阳能发电控制系统功率研究
索斯科机械驱动器系列再添新品 具高驱动操作和现代感设计
土壤墒情:土壤墒情在农业生产中的重要地位
120V或240V供电LED电路分享
Intel是固态硬盘真正赢家 黑科技血洗SSD
星际荣耀的双曲线一号运载火箭在中国酒泉卫星发射中心成功发射
DHT11温湿度传感器原理剖析
小米6最新消息:小米6和华为P10实力评测对比,你更看好哪一部?