正运动技术快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门
之前正运动技术与大家分享了,运动控制器的固件升级、ZBasic 程序开发、ZPLC 程序开发、与触摸屏通讯和输入/输出IO 的应用、运动控制器数据与存储的应用、运动控制器ZCAN、EtherCAT 总线的使用、示波器的应用、多任务运行的特点、运动控制器中断的应用、U盘接口的使用、ZDevelop 编程软件的使用、运动控制器的基础轴参数与基础运动控制指令以及运动缓冲等。
今天,我们来讲解一下正运动技术运动控制器EtherCAT 总线快速入门。
视频教程:《视频教程:正运动控制器EtherCAT总线快速入门》
1)ZDevelop V3.10版本控制器编程软件。从正运动技术官网(www.zmotion.com.cn)下载压缩包,解压后直接运行应用程序,无需安装。
1)主电源:将控制器主电源接线端子上的E+24V端子接入24V直流电源正极,将EGND端子接入24V直流电源负极。
2)以太网EtherNET端口接线:使用一根网线将控制器的EtherNET端口与电脑的以太网口相连。
3)伺服驱动器与控制器接线:使用一根网线将控制器的EtherCAT总线端口与伺服驱动器的X2A或X2B口相连。
多轴控制时伺服驱动器的EtherCAT OUT口再连接下一级驱动设备的EtherCAT IN口,依此类推。
伺服驱动器与电机和编码器的接线参见驱动器手册,将驱动器接入220V市电。
控制器与电脑可以通过串口或网口连接,下面以网口连接例展开说明。
先将控制器与电脑用网线连接好,接通控制器的电源,再打开ZDevelop编程软件,点击菜单栏“控制器”→“连接”,打开“连接到控制器”窗口。
通过“连接到控制器”窗口,可以快速查看本机IP,对比控制器与电脑是否处于同一网段。
IP地址列表下拉选择时,会自动查找当前局域网可用的控制器IP地址(控制器上电POWER灯和RUN灯亮的时候就能查找到该控制器的IP地址)。
同一个网络有多个控制器的时候,IP的下拉列表若没有显示目标控制器的IP地址,可以采取IP扫描来查看当前所有可用的控制器IP地址,扫描完成之后确定关闭此窗口,重新在IP下拉列表选择。
选择正确的IP地址,点击连接之后,编程软件与控制器连接成功,在线命令与输出窗口打印信息提示。
若控制器与电脑不处于同一网段,则需要修改控制器或电脑其中之一的IP地址,使二者处于同一网段。
修改控制器IP地址需要先使用串口连接控制器,获取控制器IP地址,然后修改本机IP或控制器IP使二者处于同一网段。
先使用串口连接控制器,获取控制器IP地址,再修改控制器IP地址。
方法一:可以通过菜单栏“控制器”→“修改IP地址”窗口直接修改控制器IP地址。
指令发送修改成功之后自动断开连接,在线命令打印控制器连接错误信息,通过网口连接选择新IP地址192.168.0.23再次连接控制器,IP地址修改成功后永久有效。
以WIN10为例,在开始菜单里打开控制面板,打开“网络和Internet”。
使用EtherCAT伺服驱动器时需要保证控制器与伺服周期一致才可正常通讯使用。
控制器一般默认为1ms,使用SERVO_PERIOD指令读取控制器周期。
如6040h控制字(用于控制伺服轴的使能、启动、停止、报警、复位等运行状态),每个数据字典Index包含32个子字典Sub-Index。数据字典的功能和初始值查看驱动器手册的描述。
数据字典的编号及功能是协议本身就确定好的,用户只需按照数据字典的描述设置数据字典的bit位,所有的标准EtherCAT设备都使用一套数据字典。
松下A6B伺服驱动器的EtherCAT相关说明内容可查看松下文档《技术资料-EtherCAT通讯规格篇》。
DRIVE_PROFILE=-1表示驱动器的内置缺省PDO列表,驱动器内置PDO列表包含哪些数据字典需要查看驱动器手册。
DRIVE_PROFILE已有的配置不能满足需求就自定义PDO,采用SDO相关指令操作数据字典配置驱动器需要的PDO。
SDO_READ (槽位号, 设备编号, 数据字典编号, 数据字典子编号, 数据类型, 读取数据存储TABLE位置)
SDO_READ_AXIS (轴号, 数据字典编号, 数据字典子编号, 数据类型, 读取数据存储TABLE位置)
SDO_WRITE (槽位号, 设备编号, 数据字典编号, 数据字典子编号, 数据类型, 写入数据值)
SDO_WRITE_AXIS (轴号, 数据字典编号, 数据字典子编号, 数据类型, 写入数据值)
自定义PDO的配置方法请咨询正运动的销售工程师或者技术工程师。
点击菜单栏“显示”→“对象编辑器”,打开如下窗口,找到需要设置的数据字典,在“Setting Value”一栏直接修改数据字典的内容。
修改完成将参数传送给驱动器,并写入驱动器的EEPROM,驱动器再次上电后参数生效。
例:设置UNITS脉冲当量,即设置电机转一圈需要发送多少个脉冲。
SPEED速度、ACCEL加速度、DECEL减速度和运动指令等都是以UNITS为基本单位。
或者使用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) '电机一圈脉冲数
点击驱动器软件PANATERM主界面的“参数”按钮打开下方窗口,选中要修改的IO信号后,在“设定值”一栏修改。
驱动器IO映射需要PDO包含数据字典60FDh,然后使用DRIVE_IO指令设置驱动器IO地址,映射的编号范围不要与总线上的其他设备的IO编号重复。
DRIVE_PROFILE(iAxis) = 5 '设定对应的带IO映射的PDO模式
DRIVE_IO(iAxis) = i_IoNum '设定驱动器输入/输出IO起始编号
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-转矩
EtherCAT驱动器一般有三种控制模式,分别为CSP周期位置模式,CSV周期速度模式,CST周期力矩模式。提供ATYPE指令设置控制模式。
CSP,CSV,CST模式的设置需要预先设置PDO,PDO同时包含下方数据字典时,即可直接修改ATYPE数值进行模式切换。驱动器默认PDO列表内置有哪些数据字典需要查看驱动器手册确定。
1.当PDO包含607Ah时,ATYPE可设置为65,周期位置模式,此时使用运动指令控制电机运动。
注意速度模式和力矩模式切换时,先将DAC=0后,再修改ATYPE,防止出现事故。
位置模式也是实际过程中用的较多的一种模式,运行效果参见在文章后半部分。
出于安全因素考虑,注意DAC不要设置过大,先设置一个较小值,观察电机运行情况后慢慢往上增加。
此模式下停止电机在线命令发送DAC=0即可,或按下软件的紧急停止按钮。
出于安全因素考虑,注意DAC不要设置过大,先设置一个较小值,观察电机运行情况后慢慢往上增加。
此模式下停止电机在线命令发送DAC=0即可,或按下软件的紧急停止按钮。
观察驱动器上LED面板上是否有报错信息,报错会显示错误码,根据驱动器手册排查错误,修正后将报警清零。
打开驱动器软件的报警窗口,也能看当前驱动器是否有警报,或查询历史警报。
初始化过程中按轴号清除驱动器的错误,重复调用DRIVE_CLEAR指令清除多个驱动器错误。
模式值0——清除当前告警;模式值1——清除历史告警;模式值2——清除外部输入告警。
EtherCAT总线可使用控制器提供的回零方式DATUM(mode),mode模式值选择查看ZBasic编程手册的DATUM指令。EtherCAT总线也可以使用驱动器本身的回零模式。
?"回零失败" ,"停止原因:",AXIS_STOPREASON,"状态字0X",HEX(DRIVE_STATUS)
初始化程序中包含WDOG=1开总使能,和AXIS_ENABLE(轴号) = 1开单轴使能,使能前用手可以转动点击,使能完成后便旋转不动,需要给电机发送脉冲才能使其转动。
用户使用的时候只需要设置程序头的四个常量的值即可。程序其他地方不用改动。分别设置起始的脉冲轴号,和使用的脉冲轴个数,总线轴的起始映射轴号,和总线轴的个数。
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 Bus_InitStatus '总线初始化完成状态
global Bus_TotalAxisnum '检查扫描的总轴数
delay(3000) '延时3S等待驱动器上电,不同驱动器自身上电时间不同,具体根据驱动器调整延时
'*********************ECAT总线初始************************
'初始流程: slot_scan(扫描总线) -> 从站节点映射轴/io -> SLOT_START(启动总线) -> 初始化成功
local Node_Num,Temp_Axis,Drive_Vender,Drive_Device,Drive_Alias
for i=0 to MAX_AXISNUM - 1 '初始化还原轴类型
DELAY(10) '防止所有驱动器全部同时切换使能导致瞬间电流过大
?"总线扫描成功","连接从站设备数:"NODE_COUNT(Bus_Slot)
if NODE_COUNT(Bus_Slot) <> Bus_NodeNum then '判断总线检测数量是否为实际接线数量
?"扫描节点数量与程序配置数量不一致!" ,"配置数量:"Bus_NodeNum,"检测数量:"NODE_COUNT(Bus_Slot)
Bus_InitStatus = 0 '初始化失败。报警提示
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 '轴号按驱动器设定的拨码分配(一拖多需要特殊处理)
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
Sub_SetNodeIo(Node_Num,Drive_Vender,Drive_Device,1024 + 32*Node_Num) '映射扩展模块IO
?"轴号映射完成","连接总轴数:"Bus_TotalAxisnum
for i= Bus_AxisStart to Bus_AxisStart + Bus_TotalAxisnum - 1
2.驱动器IO映射(需要使用驱动器IO时才映射,否则不用映射)。
'************************总线驱动IO映射**************************************
'通过DRIVE_IO指令映射驱动器对象字典中60FD,60FE输入输出状态,要设置正确的DRIVE_PROFILEE或者POD后才可以正常映射
'iAxis - 轴号 iVender - 驱动器类型 i_IoNum - 输入输出起始编号
'**************************************************************************
global sub Sub_SetDriverIo(iVender,Iaxis,i_IoNum)
&nnbsp; DRIVE_PROFILE(iAxis) = 5 '设定对应的带IO映射的PDO模式
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) '特殊信号有效电平反转
'***********************总线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
'********************************从站节点特殊参数配置********************************
'通过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后驱动器需要重新上电)
EtherCAT初始化成功后会打印信息提示,如下。若初始化失败也会打印信息提示。
EtherCAT总线上连接的设备信息有如下三种查看方法。查看总线状态的前提是初始化操作成功,否则无法查看。
1.在菜单栏“控制器”→“控制器状态”窗口查看“槽位0节点”。
2.在菜单栏“调试”→“总线状态诊断”打开如下窗口查看控制器总线槽位接口的设备信息。
3.还可以通过在线命令发送?*EtherCAT打印EtherCAT总线上的全部设备信息。
初始化成功后,将各个总线轴依此回零,配置好轴参数之后,就可以使用指令让总线轴按需求动作。
在程序中写入运动指令、在线命令发送运动指令或使用“手动运动”窗口控制电机运行。
正运动技术运动控制器EtherCAT总线快速入门就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。
本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。
正运动技术快速入门 | 篇十六:正运动控制器EtherCAT总线快速入门相关推荐
- 快速入门 | 篇十四:运动控制器基础轴参数与基础运动控制指令
之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...
- 快速入门 | 篇十八:正运动技术脉冲型运动控制器的使用
视频教程:<正运动技术脉冲型运动控制器的使用> 今天,正运动技术来分享一下,脉冲型运动控制器的使用入门.首先,我们从准备工作讲起,然后依次讲控制器与电脑连接.控制器参数设置.驱动器参数设置 ...
- 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一
点击上方"正运动小助手",随时关注新动态! 运动控制器ZHMI组态编程简介一 今天我们来学习一下,运动控制器的ZHMI组态编程简介.本文主要从产品概述.控制器连接触摸屏使用.HM ...
- 快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用
之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...
- 快速入门 | 篇十三:正运动技术运动控制器ZDevelop 编程软件的使用
之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...
- 快速入门 | 篇十一: 正运动技术运动控制器中断的应用
之前正运动技术与大家分享了,运动控制器的固件升级.ZBasic程序开发.ZPLC程序开发.与触摸屏通讯和输入/输出IO的应用.运动控制器数据与存储的应用.运动控制器ZCAN.EtherCAT总线的使用 ...
- 经济型EtherCAT运动控制器(十):EtherCAT总线快速入门
本节主要介绍XPLC006E多轴经济型EtherCAT总线运动控制器控制EtherCAT总线驱动器的方法,分别介绍硬件接线方法,控制器与EtherCAT总线驱动器如何通讯,EtherCAT总线驱动器相 ...
- UWP开发入门(十六)——常见的内存泄漏的原因
原文:UWP开发入门(十六)--常见的内存泄漏的原因 本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)--用Diagno ...
- 正运动技术荣膺“CMCD 2020年度运动控制领域最具成长品牌”等三项大奖
2020年12月17日,"智能制造&中国运动控制/直驱行业发展高峰论坛暨CMCD&CDDIA年度颁奖典礼"在深圳坪山隆重举行,正运动技术总经理赵建厂.市场总监陈光华 ...
- 计算机强制关机原理,解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于“按电源键强制关机对硬件无危害”的...
解决PC常见问题 篇十六:究竟如何关机才是正确的姿势---关于"按电源键强制关机对硬件无危害"的 2020-08-10 10:21:40 36点赞 186收藏 64评论 本文背景 ...
最新文章
- 物理生力热实验不确定度计算源代码
- php -- PDO事务处理
- 优秀的程序员是那种过单行线马路都要往两边看的人
- java maven restful_使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架...
- 山西职业技术学院计算机宿舍怎么样,山西职业技术学院宿舍怎么样
- wamp xampp mysql端口冲突_解决xampp端口冲突
- 第九章 CSS-DOM
- 封装和使用Docker流程
- 再生核希尔伯特空间:Hilbert Space与RKHS基础
- 计算机基础知识及键盘熟悉实验报告,实验报告-实验一计算机的认识与指法练习.doc...
- HC-SR04 超声波原理图讲解与时序分析与arduino使用
- 腾讯云TCA运维考试题
- 18天精读掌握《费曼物理学讲义卷一》 第14天 2019/6/30
- 中国嵌入式应用市场四大热点及趋势
- UAAC 访问 Predix UAA 入门
- 初学oracle-1
- 8月11_day08_日志框架基础
- ME863手机(android)下安装backtrack 5
- Timestamp-时间戳转换
- 零基础HTML入门教程(17)——表单的单选框和复选框