TwinCAT3中松下伺服A6BF的全闭环设置步骤

发布时间 2023-08-04 09:39:14作者: 一杯清酒邀明月

以TwinCAT3和A6BF进行全闭环测试,带有编码器和绝对式光栅尺,实测有效;

扫描硬件

首先安装EtherCAT网口驱动:

点击安装网卡驱动(TWINCAT-Show Realtime Ethercat Compatibel Devices,然后选中某个设备,点击Install;

将官网下载的Panasonic_MINAS-A6BF_V1_3.xml文件导入D:\TwinCAT\3.1\Config\Io\EtherCAT,注意型号,我这里是A6BF;

https://device.panasonic.cn/ac/c/dl/manual/index.jsp?series_cd=3514

扫描硬件,若出现如下,可能是导入的xml有误(官网有两个文件,一个中文一个英文):

 点击YES:

 更换网卡后:

PANATERM试运行

PANATERM设置

参数设置

PANATERM ver.6.0打开

设置脉冲数

Pr3.24为编码器一圈的脉冲数=2^23(编码器分辨率)=8388608;
丝杠:
Pr3.25为电机转一圈光栅尺的脉冲数=10mm(螺距)/8(减速比)*1000/0.5(光栅尺分辨率)=2500;
齿轮齿条:
Pr3.25=48(分度圆直径)*π(分度圆周长)/120(减速比)*1000/0.5(光栅尺分辨率)≈2513;

 在设定值内输入后,点击“回车”按键;

设置过速度等级

Pr5.13过速度等级设定设置为较大值,如500r/min,否则会出现过速度保护警告;

 Pr6.15第2过速度等级设定Pr6.15;

设置光栅尺反向

Pr3.26光栅尺反向,若需要;

设置自动整定

 Pr0.02设置实时自动调整设定,设置为1;

 手动设定刚性,测定模式,次数,时间,然后开始测定(用试运行),完成后EEP写入整定的参数即可;

设置限位

 默认设置:

 设置方法:

正方向限位-常闭:00818181h(十进制8487297);
负方向限位-常闭:00828282h(十进制8553090);
正方向限位-常开:00010101h(十进制65793);
负方向限位-常开:00020202h(十进制131586);

可根据实际情况设置,例如接线为SI1、SI2,则设置Pr4.00,Pr4.01。Pr4.02设置为0,否则报错;

若报警可能限位与设置相反;

设置绝对式编码器

Pr0.15=1;
点击EEP下载参数;参数若有效需重新上电;

设置再生电阻Pr0.16

全闭环控制模式设定

Pr0.01=6;
Pr3.23=2;

电机位置保持

上电时序图

先打开倍福,后上电;
上电后,假设倍福一直给驱动器发送伺服开启命令,伺服开启后,2ms内制动器动作,处于抱闸状态,2ms后动态制动器解决,再过64ms制动器解除,此时使能已开启,电机静态力矩可保持位置;

电机停止时,伺服关闭的时序图

伺服停止后,t1设置为0ms,Pr4.37=0;1-6ms后动态制动器和外部制动器动作,保持位置,所以会有1-6ms无法保持位置;Pr5.06=0;

电机旋转时,伺服关闭的时序图

对象编辑器设置

对象编辑器和TwinCAT中的Coe参数一致,都可以设置;

在其他-对象编辑器(不要和参数对话框同时打开)-找到6092H,设置为8388608(注意不是8838608);
(用PANATERM试运行时,若设置过大则脉冲数达到设定值后即停止,只能重新使能再运动,试运行可适当减小,但是正常运行还是设置为默认值);

3011H(对应Pr0.11)随便设置例如125000;

读取光栅尺脉冲数
4F49H

 6063H

TwinCAT设置

工作模式设置

在伺服驱动器的‘Startup’下点右键添加0x6060 Modes of operation,如下图所示:

添加完成后,根据驱动器实际的工作模式,设置0x6060。
位置模式则0x6060的值设置为8;速度模式则设置为9。

比例因子设置

光栅尺分辨率:0.5 um/脉冲=0.0005

速度设置

激活配置文件。激活完后,就可以正常使能和控制运动了。

通过TwinCAT读取驱动器报警和温度

导入库

 1     //读取温度报警
 2     fb_CoeRead                      :FB_EcCoESdoRead;    
 3     
 4     sNetId                           : T_AmsNetId := '192.168.43.157.1.1'; (* NetId of EtherCAT Master *)
 5     nSlaveAddr_ElecCyld_1           : UINT := 1009; (* Port Number of EtherCAT Slave *) 
 6     nSlaveAddr_ElecCyld_2           : UINT := 1010; (* Port Number of EtherCAT Slave *) 
 7     nSlaveAddr_InterCyld           : UINT := 1011; (* Port Number of EtherCAT Slave *) 
 8     nSlaveAddr_OuterCyld          : UINT := 1012; (* Port Number of EtherCAT Slave *) 
 9     
10     nErr                          : WORD := 16#603F; (* CoE Object Index *) 
11     bufErr                     AT%I* : ARRAY[1..4] OF UINT;
12     bReadError                AT%I* : ARRAY[1..4] OF BOOL;
13     
14     nAmplTem                      : WORD := 16#4F62; (* CoE Object Index *) 
15     bufAmplTem                 AT%I* : ARRAY[1..4] OF DINT;
16     bReadAmplTem            AT%I* : ARRAY[1..4] OF BOOL;
17     
18     nEncTem                          : WORD := 16#4F63; (* CoE Object Index *) 
19     bufEncTem                   AT%I* : ARRAY[1..4] OF DINT;
20     bReadEncTem                AT%I* : ARRAY[1..4] OF BOOL;

nSlaveAddr_ElecCyld_1在驱动器界面找到:

16#603F:可通过官网下载的文档《SX-DSV03244_R8_0C》找到;

驱动器限位信号读取

 限位开关按下后,其中某一位发生变化:
100001100000100000000000000010
100001000000100000000000000010
100001100000100000000000000000