技术频道

娓娓工业
您现在的位置: 中国传动网 > 技术频道 > 应用方案 > EtherCAT运动控制器之ZMIO300模块的使用

EtherCAT运动控制器之ZMIO300模块的使用

时间:2021-11-23 16:44:15来源:深圳市正运动技术有限公司

导语:​今天,正运动小助手给大家分享一下EtherCAT运动控制器之ZMIO300模块的使用。

控制器

  今天,正运动小助手给大家分享一下EtherCAT运动控制器之ZMIO300模块的使用。

  01、材料准备与控制器接线参考

  一、材料准备

  1.电脑1台,安装ZDevelop软件。2.控制器1个,ZMC432(带Ethercat接口即可)。3.24V直流电源1个(给控制器和ZMIO模块供电)。4.ZMIO扩展模块一套+EtherCAT总线驱动器。5.控制器接线端子若干,导线若干。6.网线若干。

  二、接线参考

控制器

  02、实验思路

  1.我们先将 ZMC432控制器、ZMIO 300扩展模块、Ethercat总线驱动进行组合成一个小系统。然后通过Basic编程实现EtherCAT总线初始化,从而实现控制器对ZMIO 300扩展模块和总线驱动器控制。

  2.如果采用上位机开发,可以通过接口ZAux_Execute()来调用下载到控制器里面的总线初始化的Basic函数,来实现总线设备的初始化。

控制器

  03、ZMIO 300扩展模块的介绍和接线

  1.ZMIO扩展模块的组成。

控制器

  通讯模块:该模块有ZMIO300-ECAT 通讯模块和ZMIO300-CAN 通讯模块两种,ZMIO300-ECAT 通讯模块的使用需要通过一段Basic代码进行总线初始化才能通讯上。

  ZMIO300-CAN 通讯模块使用简单,只要预先设置好拨码开关,然后上电即可实现通讯。但是ZMIO300-CAN 通讯模块不能设置AD/DA扩展子模块的量程和模式。

  2.硬件接线。

  ECAT耦合器+扩展子模块接线参考:

控制器

  注意:通讯模块和扩展子模块都需要24V电源供电。

  04、ECAT总线初始化的Basic代码编写

  1.EtherCAT总线扫描的Basic代码。

  '/************************************************************'任务编号:无'函数功能:总线扫描'Input:无'Output:无 '返回值:无'备注:无 '*************************************************************/GLOBAL SUB Ecat_ScanSlot() LOCAL i '初始化还原轴类型 RAPIDSTOP(2) For i=0 to gv_MaxAxisNum - 1 AXIS_ENABLE(i) = 0 '关轴使能 atype(i)=0 '设置为虚拟轴 AXIS_ADDRESS(i) =0 DELAY(10) '防止所有驱动器全部同时切换使能导致瞬间电流过大 next '扫描总线 SLOT_STOP(0) DELAY(200) SLOT_SCAN(0) '判断总线扫描结果 IF RETURN THEN if NODE_COUNT(0) <> (Gc_BusAxisNodeNum + Gc_BusIoNodeNum) then gv_BusScanState = 2 '总线扫描失败,实际数量不一致 ?"总线扫描失败,节点实际数量不一致" ELSE TRACE "总线扫描成功,连接设备数:", NODE_COUNT(0) gv_BusScanState = 1 '总线扫描成功 endif ELSEIF gv_BusScanState = -1 '总线扫描失败 ?"总线扫描失败" ENDIFENDSUB

  2.设置总线IO扩展板起始IO编号。

  '/************************************************************'任务编号:无'函数功能:IO扩展板初始化'Input:无'Output:无 '返回值:无'备注:无 '*************************************************************/GLOBAL SUB Ecat_IO_Init() gv_BusIoNodeNum = 0 '初始化总线IO扩展板数量 '如果总线扫描失败 IF gv_BusScanState <> 1 THEN '总线扫描失败,io扩展板也扫描失败 gv_NodeIoInitFlag=-1 RETURN ENDIF LOCAL Node_Num '节点设备编号 LOCAL Drive_Vender '当前设备厂商编号 LOCAL Drive_Device '设备编号 LOCAL Drive_Alias '设备拨码ID Dealy(200) '启动总线 SLOT_START(0) if return =0 then TRACE "IO扩展板初始化,启动总线失败" gv_NodeIoInitFlag=-1 return endif '开始映射总线IO for Node_Num= 0 to NODE_COUNT(0) - 1 '遍历扫描到的所有从站节点 Drive_Vender = NODE_INFO(0,Node_Num,0) '读取设备厂商 Drive_Device = NODE_INFO(0,Node_Num,1) '读取设备编号 Drive_Alias= NODE_INFO(0,Node_Num,3) '读取设备拨码ID if NODE_AXIS_COUNT(0,Node_Num) = 0 then '判断当前节点是否有电机 Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,Gc_EcatIoStartId+(16* gv_BusIoNodeNum)) '映射扩展模块IO gv_BusIoNodeNum = gv_BusIoNodeNum + 1 endif next gv_NodeIoInitFlag=1 '判断IO扩展板数目是否正确 if gv_BusIoNodeNum <> Gc_BusIoNodeNum then ?"扫描到的IO扩展板数目不正确" gv_NodeIoInitFlag=2 endif ENDSUB

  '/************************************************************'任务编号:无'函数功能:总线IO模块映射'Input:无'Output:无 '返回值:无'备注:通过NODE_IO(0,Node_Num)分配模块IO起始地址,不使用扩展模块的时候删掉此段'*************************************************************/GLOBAL SUB Sub_SetNodeIo(iNode,iVender,iDevice,i_IoNum) if iVender = $41B then '正运动IO扩展模块 NODE_IO(0,iNode) = i_IoNum NODE_AIO(0,iNode) = Gc_EcatAIoStartId '设置zmio的ad模式为0~20mA电流模式 SDO_WRITE(0,iNode,$5003,1,6,5) SDO_WRITE(0,iNode,$5004,1,6,13) endifENDSUB

  3.总线驱动器轴号映射。

  '/************************************************************'任务编号: 无'函数功能: 总线轴初始化'Input: 无'Output: 无 '返回值: 无'备注: 通过NODE_IO(0,Node_Num)分配模块IO起始地址,不使用扩展模块的时候删掉此段'*************************************************************/GLOBAL SUB Ecat_Axis_Init() LOCAL NodeSum_Num ,BusAxis_Num ,NodeAxis_Num '设备总数、总线轴总数、每个节点上的电机数 LOCAL Drive_Vender,Drive_Device,Drive_Alias '驱动厂商编号、驱动设备编号、驱动设备拨码ID LOCAL j,i '如果总线扫描失败 IF gv_BusScanState <> 1 THEN gv_EcatAxisInitFlag=-1 RETURN ENDIF '总线轴总数,从0开始计数 BusAxis_Num = 0 FOR i = 0 TO NODE_COUNT(0) - 1 NodeAxis_Num = NODE_AXIS_COUNT(0,i) '读取设备电机数 Drive_Vender = NODE_INFO(0,i,0) '读取驱动器厂商 Drive_Device = NODE_INFO(0,i,1) '读取设备编号 Drive_Alias = NODE_INFO(0,i,3) '读取设备拨码ID FOR j = 0 TO NodeAxis_Num - 1 AXIS_ADDRESS(BusAxis_Num+Gc_BusAxisStartId) = BusAxis_Num + 1 '映射轴号 ATYPE(BusAxis_Num+Gc_BusAxisStartId) = 65 '设置控制模式 65-位置 66-速度 67-转矩 详细参照AXISSTATUS DRIVE_PROFILE(BusAxis_Num+Gc_BusAxisStartId) = 0 'PDO类型 DISABLE_GROUP(BusAxis_Num+Gc_BusAxisStartId) '每轴单独分组 'Sub_SetNodePara(i,Drive_Vender,Drive_Device) '设置特殊总线参数 BusAxis_Num = BusAxis_Num + 1 '总线轴计数+1 NEXT NEXT if BusAxis_Num = Gc_BusAxisNodeNum then TRACE "轴扫描映射完成,连接总线轴数:",BusAxis_Num else ?"扫描到的总线轴数目不正确" gv_EcatAxisInitFlag =2 RETURN endif DELAY(100) SLOT_START(0) IF RETURN THEN TRACE "开始清除驱动器报警" FOR i = Gc_BusAxisStartId TO Gc_BusAxisStartId + BusAxis_Num - 1 BASE(i) DRIVE_CLEAR(0) WA(10) DRIVE_CONTROLWORD(i) = 128 WA(10) DRIVE_CONTROLWORD(i)=6 WA(10) DRIVE_CONTROLWORD(i)=15 WA(10) NEXT DELAY(100) TRACE "控制器报警清除完成" DATUM(0) DELAY(1000) TRACE"开始伺服使能" WDOG = 1 FOR i = Gc_BusAxisStartId TO Gc_BusAxisStartId + BusAxis_Num - 1 AXIS_ENABLE(i) = 1 NEXT TRACE"伺服使能完成" gv_EcatAxisInitFlag =1 ELSE TRACE"总线开启失败" gv_EcatAxisInitFlag=-1 ENDIF ENDSUB

  05、设置ZMIO模拟量扩展模块的量程和模式

  可通过SDO_Write指令对ZMIO模拟量扩展模块的量程和模式进行设置。(需要是ECAT 耦合器才支持修改模拟量模块的模式和量程)。

控制器

控制器

  06、上位机开发进行总线轴和模块的初始化

  1.通过ZDevelop软件将该Basic程序下载到控制器中。

  2.通过ZAux_Execute()来调用控制器里面的Basic函数,进行EtherCAT总线初始化。

  示例:ZAux_Execute(g_handle, "Runtask 0,EcatInit_Para()", NULL, 0)

控制器

  3.通过ZAux_Direct_GerVariableInt()指令来读取Basic文件定义的全局整形变量,比如读取EcatAxisInitFlag和NodeIoInitFlag这两个变量来获取Basic程序那边总线初始化的情况。

  示例:

  ZAux_Direct_GetVariableInt(g_handle,"EcatAxisInitFlag",&AxisInitFlag)

  ZAux_Direct_GetVariableInt(g_handle,"NodeIoInitFlag",&IoInitFlag)

控制器

完整代码获取地址

控制器

  本次,正运动技术EtherCAT运动控制器之ZMIO300模块的使用,就分享到这里。

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

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


标签: 控制器EtherCAT运动控制

点赞

分享到:

上一篇:超声波测厚仪是测量什么的

下一篇:关于工业机器人和移动机器人

中国传动网版权与免责声明:凡本网注明[来源:中国传动网]的所有文字、图片、音视和视频文件,版权均为中国传动网(www.chuandong.com)独家所有。如需转载请与0755-82949061联系。任何媒体、网站或个人转载使用时须注明来源“中国传动网”,违反者本网将追究其法律责任。

本网转载并注明其他来源的稿件,均来自互联网或业内投稿人士,版权属于原版权人。转载请保留稿件来源及作者,禁止擅自篡改,违者自负版权法律责任。

网站简介|会员服务|联系方式|帮助信息|版权信息|网站地图|友情链接|法律支持|意见反馈|sitemap

中国传动网-工业自动化与智能制造的全媒体“互联网+”创新服务平台

网站客服服务咨询采购咨询媒体合作

Chuandong.com Copyright ©2005 - 2021 ,All Rights Reserved 版权所有 粤ICP备 14004826号 | 营业执照证书 | 不良信息举报中心 | 粤公网安备 44030402000946号