正运动技术

协助伙伴成功,是我们的价值所在

The value of Zmotion is to bring customers more success!

首页 / 支持与服务 / 技术分享

Technical support

技术分享

快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门

  之前正运动技术与大家分享了,运动控制器的固件升级、ZBasic 程序开发、ZPLC 程序开发、与触摸屏通讯和输入/输出IO 的应用、运动控制器数据与存储的应用、运动控制器ZCAN、EtherCAT 总线的使用、示波器的应用、多任务运行的特点、运动控制器中断的应用、U盘接口的使用、ZDevelop 编程软件的使用、运动控制器的基础轴参数与基础运动控制指令以及运动缓冲等。

  今天,我们来讲解一下正运动技术运动控制器EtherCAT 总线快速入门。

  视频教程:《视频教程:正运动控制器EtherCAT总线快速入门

  以下是图文详解

  一准备工作

  

  (一)材料准备

  1.硬件

  

  1.png

  

  2.软件

  

  2.png

  

  1)ZDevelop V3.10版本控制器编程软件。从正运动技术官网(www.zmotion.com.cn)下载压缩包,解压后直接运行应用程序,无需安装。

  2)松下伺服驱动器上位机调试软件。从松下官网下载后安装。

  (二)硬件接线

  1.控制器接线

  控制器接口的用途参见下图。

  

  3.png

  

  1)主电源:将控制器主电源接线端子上的E+24V端子接入24V直流电源正极,将EGND端子接入24V直流电源负极。

  2)以太网EtherNET端口接线:使用一根网线将控制器的EtherNET端口与电脑的以太网口相连。

  3)伺服驱动器与控制器接线:使用一根网线将控制器的EtherCAT总线端口与伺服驱动器的X2A或X2B口相连。

  

  4.png

  

  注意伺服驱动器的EtherCAT接口有两个,有些驱动器这两个口可以随意接,有些分为EtherCAT IN和EtherCAT OUT,IN口接上一级设备,OUT口接下一级设备,二者不能混用,要注意连接顺序。

  多轴控制时伺服驱动器的EtherCAT OUT口再连接下一级驱动设备的EtherCAT IN口,依此类推。

  2.驱动器接线

  伺服驱动器与电机和编码器的接线参见驱动器手册,将驱动器接入220V市电。

  二 控制器与电脑连接

  

  控制器与电脑可以通过串口或网口连接,下面以网口连接例展开说明。

  (一)网口通讯操作方法

  先将控制器与电脑用网线连接好,接通控制器的电源,再打开ZDevelop编程软件,点击菜单栏“控制器”→“连接”,打开“连接到控制器”窗口。

  

  5.png

  

  通过“连接到控制器”窗口,可以快速查看本机IP,对比控制器与电脑是否处于同一网段。

  IP地址列表下拉选择时,会自动查找当前局域网可用的控制器IP地址(控制器上电POWER灯和RUN灯亮的时候就能查找到该控制器的IP地址)。

  同一个网络有多个控制器的时候,IP的下拉列表若没有显示目标控制器的IP地址,可以采取IP扫描来查看当前所有可用的控制器IP地址,扫描完成之后确定关闭此窗口,重新在IP下拉列表选择。

  

  6.png

  

  选择正确的IP地址,点击连接之后,编程软件与控制器连接成功,在线命令与输出窗口打印信息提示。

  

  7.png

  

  控制器出厂的缺省IP地址为192.168.0.11,“连接到控制器”窗口能显示出本机IP地址,请注意设置有线网卡与无线网卡各自的IP。电脑需要设置IP地址与控制器IP处于同一网段才能连接,即四段的前三段要相同,最后一段不同才能通讯。

  若控制器与电脑不处于同一网段,则需要修改控制器或电脑其中之一的IP地址,使二者处于同一网段。

  修改控制器IP地址需要先使用串口连接控制器,获取控制器IP地址,然后修改本机IP或控制器IP使二者处于同一网段。

  (二)修改控制器IP地址

  先使用串口连接控制器,获取控制器IP地址,再修改控制器IP地址。

  方法一:可以通过菜单栏“控制器”→“修改IP地址”窗口直接修改控制器IP地址。

  

  8.png

  

  方法二:通过IP_ADDRESS指令发送在线命令修改。

  

  9.png

  

  指令发送修改成功之后自动断开连接,在线命令打印控制器连接错误信息,通过网口连接选择新IP地址192.168.0.23再次连接控制器,IP地址修改成功后永久有效。

  (三)修改本机IP地址

  以WIN10为例,在开始菜单里打开控制面板,打开“网络和Internet”。

  

  10.png

  

  再打开“网络与共享中心”。

  

  11.png

  

  点击“以太网”。

  

  12.png

  

  在“以太网状态”窗口点击“属性”,打开“以太网属性”窗口,找到Internet协议版本4(TCP/IPv4)打开,就能看到本机IP地址修改窗口,勾选“使用下面的IP地址”,在IP地址输入栏里修改IP,将本机IP改为和控制器IP处于同一网段,修改完成点击“确认”即可成功修改IP。

  再次打开“连接到控制器”窗口尝试连接到控制器。

  

  13.png

  

  三 EtherCAT伺服驱动器参数设置

  

  (一)通讯周期

  使用EtherCAT伺服驱动器时需要保证控制器与伺服周期一致才可正常通讯使用。

  EtherCAT伺服驱动器一般支持不同周期,通讯周期主要有250us,500us,1ms,2ms,4ms,连接时自动匹配控制器周期,不需要设置,当通讯周期无法自动匹配时,通讯失败,通过升级控制器固件修改控制器周期解决。

  控制器一般默认为1ms,使用SERVO_PERIOD指令读取控制器周期。

  伺服周期越小,位置控制越精细,响应速度也更快。

  (二)驱动器PDO设置

  PDO全名为Process Data Object,指在EtherCAT总线网络中周期的进行主站与从站的数据交互的功能,可以看作一个数组空间,每个数组元素存放了不同的功能码,PDO在一个周期中执行这些功能码对应的操作,这些功能码就叫做数据字典,数据字典用4位16进制数来表示。

  

  14.png

  

  RxPDO:主站传送数据给从站。

  TxPDO:从站传送数据给主站。

  EtherCAT总线上控制器为主站,伺服驱动器为从站。

  如6040h控制字(用于控制伺服轴的使能、启动、停止、报警、复位等运行状态),每个数据字典Index包含32个子字典Sub-Index。数据字典的功能和初始值查看驱动器手册的描述。

  数据字典的编号及功能是协议本身就确定好的,用户只需按照数据字典的描述设置数据字典的bit位,所有的标准EtherCAT设备都使用一套数据字典。

  松下A6B伺服驱动器的EtherCAT相关说明内容可查看松下文档《技术资料-EtherCAT通讯规格篇》。

  

  15.png

  

  EtherCAT初始化过程中必须进行驱动器PDO配置,DRIVE_PROFILE指令配置驱动器的PDO列表,目前提供20几种配置选择,每种配置包含哪些数据字典查看该指令说明确认,如下图,具体内容可以在《ZBasic编程手册V3.2.4》中查看。

  

  16.png

  

  

  DRIVE_PROFILE=-1表示驱动器的内置缺省PDO列表,驱动器内置PDO列表包含哪些数据字典需要查看驱动器手册。

  DRIVE_PROFILE已有的配置不能满足需求就自定义PDO,采用SDO相关指令操作数据字典配置驱动器需要的PDO。

  驱动器的相关参数修改,同样使用SDO指令读写对应的数据字典进行配置或通过驱动器软件修改。SDO指令包含数据字典读取SDO_READ、SDO_READ_AXIS和数据字典写入SDO_WRITE、SDO_WRITE_AXIS。

  数据字典读取语法:

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

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

  数据字典写入语法:

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

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

  自定义PDO的配置方法请咨询正运动的销售工程师或者技术工程师。

  (三)驱动器参数设置

  修改驱动器参数先连接驱动器,可选USB线或WLAN连接驱动器,使用USB线连接电脑与驱动器端的X1端口,给驱动器上电,打开松下驱动器软件PANATERM,弹出“选择与驱动器通信”窗口,选择与驱动器通过USB连接后,自动获取到驱动器信息显示在窗口内,点击OK连接成功,就能对驱动器进行设置。

  

  17.png

  

  点击菜单栏“显示”→“对象编辑器”,打开如下窗口,找到需要设置的数据字典,在“Setting Value”一栏直接修改数据字典的内容。

  修改完成将参数传送给驱动器,并写入驱动器的EEPROM,驱动器再次上电后参数生效。

  

  18.png

  

  例:设置UNITS脉冲当量,即设置电机转一圈需要发送多少个脉冲。

  SPEED速度、ACCEL加速度、DECEL减速度和运动指令等都是以UNITS为基本单位。

  如图,通过数字字典6091h设置电子齿轮比,6091h-01h设置电子齿轮比分子,6091h-02h设置电子齿轮比分母,此时,电子齿轮比=1/1,6092h-01h设为10000表示给电机发10000个脉冲能使电机旋转一圈,对应的脉冲当量UNITS=10000,MOVE(2)表示给电机发送20000个脉冲,此时电机转两圈。

  

  19.png

  

  或者使用SDO指令读写数据字典修改参数。修改完成使用驱动器软件读取6092h-01h的值为10000。

  示例:

          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)     '电机一圈脉冲数

  (四)驱动器IO信号

  驱动器自身有输入信号,作用为保护信号,默认使能状态,若不接入外部信号,驱动器就会保护报错,调试阶段可以关闭这些信号方便调试,将输入值设置为0即可,需要使用驱动器IO时要对驱动器的IO编号映射后才能使用,后续根据实际需求接入实际信号。

  点击驱动器软件PANATERM主界面的“参数”按钮打开下方窗口,选中要修改的IO信号后,在“设定值”一栏修改。

  

  20.png

  

  驱动器IO映射需要PDO包含数据字典60FDh,然后使用DRIVE_IO指令设置驱动器IO地址,映射的编号范围不要与总线上的其他设备的IO编号重复。

  DRIVE_IO (轴号)=输入输出IO起始编号。

  示例:

          DRIVE_PROFILE(iAxis) = 5         '设定对应的带IO映射的PDO模式

          DRIVE_IO(iAxis) = i_IoNum        '设定驱动器输入/输出IO起始编号

  (五)参数写入驱动器

  驱动器的数据字典参数或其他的参数设置完成后,先点击“传送”将修改的全部参数传入驱动器,再点击EEP,将参数写入驱动器的EEPROM,给驱动器重新上电后修改的参数生效,图片上值修改了输入参数,在下图查看不同类别参数变更后的值并修改。

  

  21.png

  

  (六)驱动器轴号映射

  EtherCAT总线上连接的设备的设备号按照连接顺序从0开始自动编号,驱动器编号也是按连接顺序给驱动器设备自动从0开始编号的,只算总线上的驱动器设备,其他设备是没有驱动器编号的。

  EtherCAT总线上连接的驱动器需要使用指令映射驱动器的轴号,使用AXIS_ADDRESS 指令映射,映射完成之后才能使用BASE指令选择驱动器轴号,发送脉冲,控制驱动器所连的电机运行。

  轴映射写在总线初始化程序中,总线扫描之后,开启总线之前。

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

  EtherCAT总线的槽位号是0。轴号为驱动器映射的目标轴号,映射时每个驱动器的轴号不重复,指向空闲轴号即可。

  示例:

          AXIS_ADDRESS (6)=(0<<16)+0+1         '第一个ECAT驱动器,驱动器编号0,绑定为轴6

          AXIS_ADDRESS (7)=(0<<16)+1+1         '第二个ECAT驱动器,驱动器编号1,绑定为轴7

          AXIS_ADDRESS (8)=(0<<16)+2+1         '第三个ECAT驱动器,驱动器编号2,绑定为轴8

          ATYPE(6)=65                             '设置为ECAT轴类型,65-位置 66-速度 67-转矩

          ATYPE(7)=65

          ATYPE(8)=65

  (七)驱动器控制模式

  EtherCAT驱动器一般有三种控制模式,分别为CSP周期位置模式,CSV周期速度模式,CST周期力矩模式。提供ATYPE指令设置控制模式。

  

  22.png

  

  CSP,CSV,CST模式的设置需要预先设置PDO,PDO同时包含下方数据字典时,即可直接修改ATYPE数值进行模式切换。驱动器默认PDO列表内置有哪些数据字典需要查看驱动器手册确定。

  1.当PDO包含607Ah时,ATYPE可设置为65,周期位置模式,此时使用运动指令控制电机运动。

  2.当PDO包含60FFh时,ATYPE可设置为66,周期速度模式,此时使用DAC指令控制电机以设置值的速度运行,速度单位有两个,脉冲数/S和R/MIN,由驱动器确定,使用时先给较小的数值,观察电机速度情况,再加大。

  3.当PDO包含6071h时,ATYPE可设置为67,周期力矩模式,此时使用DAC指令控制电机以设置值的力矩运行,DAC值范围0-1000,对应0-100%的6071设置值,比如DAC=10,此时电机力矩=1%的6071h值。

  注意速度模式和力矩模式切换时,先将DAC=0后,再修改ATYPE,防止出现事故。

  位置模式:ATYPE=65

  将DRIVE_PROFILE配置为带速度的模式1,ATYPE=65,执行总线初始化程序后,设置轴的UNITS、SPEED等运行参数,使用运动指令给电机发脉冲控制轴的运行,注意试运行时SPEED的值不要设置过大。

  位置模式也是实际过程中用的较多的一种模式,运行效果参见在文章后半部分。

  

  23.png

  

  速度模式:ATYPE=66

  将DRIVE_PROFILE配置为带速度的模式22,ATYPE=66,执行总线初始化程序后,在线命令栏发送DAC指令即可控制电机运行,如下图,DAC=5000表示电机以每秒5000个脉冲的速度持续运行,DAC命令发送后电机一直运行,要提高运行速度将DAC的值加大,DAC的值太小电机会克服不了摩擦力无法转动。

  出于安全因素考虑,注意DAC不要设置过大,先设置一个较小值,观察电机运行情况后慢慢往上增加。

  此模式下停止电机在线命令发送DAC=0即可,或按下软件的紧急停止按钮。

  

  24.png

  

  力矩模式:ATYPE=67

  将DRIVE_PROFILE配置为带力矩的模式30,ATYPE=67,执行总线初始化程序后,在线命令栏发送DAC指令即可控制电机运行,如下图,DAC=30,当前驱动器为3%的力矩,DAC等于1000时表示100%力矩。要提高运行速度将DAC的值加大,DAC的值太小电机会克服不了摩擦力无法转动。

  出于安全因素考虑,注意DAC不要设置过大,先设置一个较小值,观察电机运行情况后慢慢往上增加。

  此模式下停止电机在线命令发送DAC=0即可,或按下软件的紧急停止按钮。

  

  25.png

  

  (八)驱动器报警

  观察驱动器上LED面板上是否有报错信息,报错会显示错误码,根据驱动器手册排查错误,修正后将报警清零。

  

  26.png

  

  打开驱动器软件的报警窗口,也能看当前驱动器是否有警报,或查询历史警报。

  

  27.png

  

  

  初始化过程中按轴号清除驱动器的错误,重复调用DRIVE_CLEAR指令清除多个驱动器错误。

  语法:DRIVE_CLEAR(模式值)

  模式值0——清除当前告警;模式值1——清除历史告警;模式值2——清除外部输入告警。

  示例:

          BASE(i)

          DRIVE_CLEAR(0)         '清除驱动器错误

          DELAY 50

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

          DELAY 100

  (九)驱动器回零

  EtherCAT总线可使用控制器提供的回零方式DATUM(mode),mode模式值选择查看ZBasic编程手册的DATUM指令。EtherCAT总线也可以使用驱动器本身的回零模式。

  驱动器本身回零使用DATUM(21,mode2)指令,mode2模式值要查驱动器手册数据字典6098h回零模式,如下图所示,mode2填入对应Value值,mode2缺省值为0,也是驱动器回零模式,注意此时的原点限位等信号要接在驱动器上,所以要使用驱动器回零时需要对驱动器的IO进行映射。

  

  28.png

  

  示例:初始化完成后再运行驱动器回零程序。

          BASE(iAxis)         '按驱动器轴号逐个回零

          AXIS_STOPREASON = 0

          SPEED = 100         '回零速度

          CREEP = 10         '反找速度

          ACCEL = 1000

          DATUM(21,2)         '驱动器回零模式value=2

          WAIT IDLE

          IF AXIS_STOPREASON = 0 THEN

              ?"回零成功"

          ELSE

              ?"回零失败" ,"停止原因:",AXIS_STOPREASON,"状态字0X",HEX(DRIVE_STATUS)

          ENDIF

  四 EtherCAT总线初始化

  

  (一)初始化基本流程

  按照前面的步骤接好线,给EtherCAT伺服驱动器和控制器上电,使用ZDevelop软件连接控制器,EtherCAT总线使用一段程序来初始化,将初始化程序下载到控制器运行之后,才能设置轴参数和执行运动指令控制伺服电机的运动。

  

  29.png

  

  初始化程序中包含WDOG=1开总使能,和AXIS_ENABLE(轴号) = 1开单轴使能,使能前用手可以转动点击,使能完成后便旋转不动,需要给电机发送脉冲才能使其转动。

  (二)初始化程序

  1.主要初始化程序

  用户使用的时候只需要设置程序头的四个常量的值即可。程序其他地方不用改动。分别设置起始的脉冲轴号,和使用的脉冲轴个数,总线轴的起始映射轴号,和总线轴的个数。

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

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

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

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

     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总线

       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(Temp_Axis)= (Bus_Slot<<16)+ Bus_TotalAxisnum + 1        '映射轴号

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

              DRIVE_PROFILE=-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)     '设置特殊总线参数

          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


  wa 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)     '清除控制器轴状态错误"

          wa 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

  2.驱动器IO映射(需要使用驱动器IO时才映射,否则不用映射)。

  '************************总线驱动IO映射**************************************

  '通过DRIVE_IO指令映射驱动器对象字典中60FD,60FE输入输出状态,要设置正确的DRIVE_PROFILEE或者POD后才可以正常映射

  'DRIVE_PROFILE模式包含60FD/60FE

  'iAxis - 轴号 iVender - 驱动器类型 i_IoNum - 输入输出起始编号

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

  global sub Sub_SetDriverIo(iVender,Iaxis,i_IoNum)

      if iVender = $66f then '松下驱动器

          DRIVE_PROFILE(iAxis) = 5 '设定对应的带IO映射的PDO模式

          DRIVE_IO(iAxis) = i_IoNum

          REV_IN(iAxis) = i_IoNum '负限位应60FD BIT0

          FWD_IN(iAxis) = i_IoNum + 1 '正限位先对应60FD BIT1

          DATUM_IN(iAxis) = i_IoNum + 2 '原点先对应60FD BIT2

          INVERT_IN(i_IoNum,ON) '特殊信号有效电平反转

          INVERT_IN(i_IoNum + 1,ON)

          INVERT_IN(i_IoNum + 2,ON)

      endif

  end sub

  3.扩展模块IO映射(连接了扩展模块才设置)。

  '***********************总线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

  4.特殊参数配置。

  '********************************从站节点特殊参数配置********************************

  '通过SDO方式修改对应对象字典的值修改从站参数(具体对象字典查看驱动器手册)

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

  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的起始映射地址

      elseif iVender = $66f then                                                           '松下驱动器

          SDO_WRITE(Bus_Slot,iNode,$3741,0,3,0)                                '以拨码为ID

          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,0)                                 '电机正转0 反转224

          SDO_WRITE(Bus_Slot,iNode,$6085,0,7,4290000000)               '异常减速度

          'SDO_WRITE(Bus_Slot,iNode,$1010,1,7,$65766173)                '写EPPROM(写EPPROM后驱动器需要重新上电)

          '?"写EPPR0M OK 请断电重启"

      endif

  end sub

  EtherCAT初始化成功后会打印信息提示,如下。若初始化失败也会打印信息提示。

  

  30.png

  

  (三)总线节点状态查看

  EtherCAT总线上连接的设备信息有如下三种查看方法。查看总线状态的前提是初始化操作成功,否则无法查看。

  1.在菜单栏“控制器”→“控制器状态”窗口查看“槽位0节点”。

  

  31.png

  

  2.在菜单栏“调试”→“总线状态诊断”打开如下窗口查看控制器总线槽位接口的设备信息。

  

  32.png

  

  3.还可以通过在线命令发送?*EtherCAT打印EtherCAT总线上的全部设备信息。

  

  33.png

  

  (四)运行效果

  初始化成功后,将各个总线轴依此回零,配置好轴参数之后,就可以使用指令让总线轴按需求动作。

  在程序中写入运动指令、在线命令发送运动指令或使用“手动运动”窗口控制电机运行。

  

  34.png

  

  示波器采集总线轴参数波形:

  

  35.png

  

  使用“手动运动”功能快速手动操作电机运动:

  

  36.png

  

  正运动技术运动控制器EtherCAT总线快速入门就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。

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

  

  37.png

  

邮箱留言

Copyright © 2013 正运动技术有限公司 Design by Zmotion 版权所有   粤ICP备13037187号    Powered by www.zmotion.com.cn 运动控制器-运动控制卡

在线咨询