摘要:前面说过,新建一个项目的组态在哪。在汇川 IFA 程序框架 01 中,新建一个项目组态完成之后,需要添加轴,不然就会出现上面说的这些问题,然后再添加轴。
一,配置EtherCAT伺服
在写轴功能块之前,得先添加配置轴,要不然就没法使用 AXIS_REF 数据类型,程序也就没法写啦。
前面说过,新建一个项目的组态在哪。在汇川 IFA 程序框架 01 中,新建一个项目组态完成之后,需要添加轴,不然就会出现上面说的这些问题,然后再添加轴。
把轴类型选择为“总线控制轴”之后,就能看到“输出设备”这个选项被激活了。要是已经在设备和网络里完成了设备组态,那就能够选择相应的设备当作输出。要是还没配置设备和网络组态,那就可以在 EtherCAT_Master 节点下面扫描设备。
添加完成以后,伺服端勾选的 PDO 会自动映射到轴端。
1. 基本设置
轴类型:有旋转模式和线性模式。线性模式:适合像丝杠、直线电机这种做往复运动的电机场景。旋转模式:适合那种单方向旋转,不关心累计位置的电机场景。
编码器类型:包括增量编码器和绝对编码器。
速度斜坡式:梯形:是 T 型规划,不用管跃度参数。S 型:是 S 型规划,得输入跃度参数。
数据存储位置:在编码器类型是绝对编码器的时候用,数据能选保存在伺服端或者 PLC 端。
位置滞后管理:选“使失效”的话就不开启位置偏差过大报警,选“生效”之后会按照滞后限制的值周期性检查偏差有没有超限。
2. 周期设置:
在用于旋转模式的情况下,会对旋转周期加以限制。
3. 软件限位:
在用于线性模式的时候,勾选使能之后,会对轴的负向和正向的位置进行限制。
4. 软限位预判参数设置:
轴的限位保护,要判断当前位置和限位位置之间存在的风险。
5. 运动参数限制:
下面这张图展示的是单轴最大运行限制参数。要是运动指令块里的参数设置超过了这个限制,功能块就会报错。
调试参数限制:
下面这张图展示的是单轴调试运行限制参数,这个参数只对 MC_Jog 和 MC_Inch 指令起作用。要是超过了限制值,指令执行的时候就会报错。
6. 其它设置
正扭矩最大值:就是正向扭矩所能达到的最大限制值,会把设置好的参数直接通过 SDO 对象设置到 60E0 对象里。负扭矩最大值:这是负扭矩的最大限制值,会把设置的参数直接通过 SDO 对象设置到 60E1 对象里。最大速度:指的是最大限制速度,会把设置的参数乘上齿轮比,然后直接通过 SDO 对象设置到 607F 对象中。单位换算1、单位:
支持 6 种单位名称的切换,分别是:脉冲、毫米、微米、纳米、度还有英寸。默认的单位是毫米,能够依照需求来进行配置。
2、行程距离:用户单位与脉冲单位的转换。
总线控制轴或者本地脉冲轴在指令这一侧采用的是像脉冲、毫米以及微米这样的用户单位,而在实际控制物理电机的时候采用的则是脉冲单位。这需要配置齿轮比系数来进行单位的转换。转换的模式分为下面这几种场景:
a,不使用变速装置当不使用变速装置时,用户单位到脉冲单位的转换公式如下
以汇川 20 位编码器为例,设定的参数是这样的:电机旋转一周的指令脉冲数默认为 10#1048576 。常用的编码器位数能够直接选择,当下支持 14 位、18 位、20 位、23 位、26 位编码器的选择,而且还能自定义设置电机旋转一周的指令脉冲数。工作台旋转一周的工作行程是 1 。
根据上面这些参数,如果在相对运动指令端输入目标距离是 100 ,那么控制轴发出的实际脉冲就是 104857600 ,电机就会旋转 100 圈,在没有减速机的情况下,平台会移动 100 个用户单位。
b.使用变速装置(1)为电机,(3)为工件,(4)为工作齿轮比,(5)为电机齿轮比
旋转模式下的典型场景如下图所示:
(1)为电机,(3)为工件,(4)为工作齿轮比,(5)为电机齿轮比
配置完成之后,可以先不写程序,调试运行一下,看看轴能不能手动控制。这可以通过在线调试来实现一些基本的功能,比如使能、定位、往复、回原、停止等等。要是轴绑定的是总线步进驱动,那就需要驱动器支持相关功能,才能够进行回零或者力矩控制。在确定基本的动作都正常之后,就能够通过运动控制功能块来实现复杂的运动控制。
注意:轴调试和程序运动控制功能块不能同时用,轴调试的优先级是最高的。单击“激活调试”之后,如果有程序运动控制功能块在执行,就会报错,程序里的运动控制功能就没用了。关闭调试之后,把复位功能块重新触发一下,就能够正常使用。
支持的轴类型有:总线控制轴、本地脉冲轴、虚轴。
二,下面说明下如何配置FB(EtherCat伺服功能块)
一)、功能块架构设计思路
输入/输出接口的定义
控制信号输入:像使能信号、急停信号、运动模式(比如 JOG、绝对定位、速度模式等等)、目标位置/速度/加速度这些参数。
状态反馈输出:包含轴使能状态、到位信号、错误代码、实际位置/速度的反馈。轴对象引用:是通过 AXIS_REF 类型来传递轴硬件对象的。
内部的功能模块集成封装了标准 PLCopen 运动指令(像 MC_Power、MC_MoveAbsolute、MC_Stop 等等),通过条件逻辑来实现多模式的切换;
二)、核心功能实现步骤
轴参数的读取:
比如实际位置、状态字等等。
状态机的设计:
定义了轴的生命周期:从初始化开始,然后到使能,接着是运动,再到停止,最后是错误处理。通过 MC_ReadStatus 能够实时读取轴的状态(像伺服就绪之类的)。
异常处理机制方面:
硬限位检测是通过正/负极限传感器信号来触发紧急停止的。错误码映射是把驱动器的错误代码转换成可读的状态。动作触发是以 PLCopen 标准的运动控制功能块为基础,来编写轴的动作逻辑。位置及手动操作判断,要判断输出是否到位,还要判断是不是被认为手动移动了伺服位置。先构建轴控制的数据类型,然后建立数据存储区来存储轴的数据。
然后新建一个FB块,添加输入输出引脚
一个轴控制功能块常用有以下功能:
00读取轴状态
01伺服使能
02 jog运动
03相对定位
04 绝对定位MC_MoveAbsolute_01.Execute:=FALSE;A04booltemp:=FALSE;//判断状态IF iAxisNO.eAxisState=3 THEN FOR i:=0 TO 19 DO IF ioAxisOper.Axis_In.EnablePos AND NOT ioAxisOper.Axis_Out.PosCheck THEN//AUTO,判断流程传送的定位编号//自动或初始化定位启动,循环到对应的轴定位编号,才触发 IF (iStation.St_AutoRunning OR iStation.St_InitialBusy) AND ioAxisOper.Axis_In.Auto_AbsPosSt AND ioAxisOper.Axis_In.Auto_PosNo=i THEN A04booltemp:=TRUE; ioAxisOper.Axis_Out.Auto_PosNo:=i; ioAxisOper.Axis_Out.Curr_PosNo:=i; END_IF//MANUAL1,判断按了第几个move按钮//手动定位启动情况,点位置后面的move按钮 IF iStation.St_Manual AND ioAxisOper.Axis_In.Manual_AbsPosSt1 THEN A04booltemp:=TRUE; ioAxisOper.Axis_Out.Curr_PosNo:=i; END_IF//MANUAL2,判断手动填的数字几//手动定位启动情况,填数字决定要去位置几 IF iStation.St_Manual AND ioAxisOper.Axis_In.Manual_AbsPosNoSt AND ioAxisOper.Axis_In.Manual_PosNo=i THEN A04booltemp:=TRUE; ioAxisOper.Axis_Out.Curr_PosNo:=i; END_IF//确定第几个位置启动定位 传送相关参数//根据触发情况,写入参数 IF A04booltemp THEN //定位地址传送 MC_MoveAbsolute_01.Position:= iParameter.PosAddr;//定位地址速度传送 IF iStation.St_Manual THEN MC_MoveAbsolute_01.Velocity :=iParameter.ManualPosSpeed; //手动定位速度 ELSIF iStation.St_AutoRunning OR iStation.St_InitialBusy THEN MC_MoveAbsolute_01.Velocity :=iParameter.AutoPosSpeed;//自动定位速度 END_IF; //加减速设置 MC_MoveAbsolute_01.Acceleration:= MC_MoveAbsolute_01.Velocity *10; MC_MoveAbsolute_01.Deceleration:= MC_MoveAbsolute_01.Velocity *10; //绝对定位触发 IF GL02_SystemVar.M01Bool THEN MC_MoveAbsolute_01.Execute := TRUE; END_IF; //如果触发了绝对定位,后续不再循环,退出循环 EXIT; END_IF END_IF END_FOREND_IFMC_MoveAbsolute_01(Axis:=iAxisNO);06 停止
06 复位
07 原点偏移
08 回原点
09 当前位置检测
FOR i:=0 TO 19 DO ioAxisOper.Axis_Out.PosCheck := FALSE; IF ioAxisOper.Axis_Out.Origin_Done THEN IF iParameter.PosAddr + 0.005 > ioAxisOper.Axis_Out.Curr_Addr AND iParameter.PosAddr - 0.005
IFA软件配置EtherCat伺服和EtherCat伺服功能块,就讲到这里,这一块讲有点粗糙,思路应该是对的,需要在实际操作过程中逐渐完善功能块。
汇川IFA程序框架08-EtherCat伺服功能块 PLC论坛-全力打造可编程控制器专业技术论坛 -
来源:PLC技术玩