Power PMAC运动控制器 —— 学习笔记7
发布日期:2021-07-01 04:03:33 浏览次数:2 分类:技术文章

本文共 3174 字,大约阅读时间需要 10 分钟。

本文主要说明Power PMAC中EtherCAT通信的驱动器下循环力矩模式(CST)的使用,主要通过操作PDO实现,对于循环速度模式(CSV)同上。

  • 第一步:设置System时钟(默认1kHz),EtherCAT下的循环力矩模式建议设置4kHz+,通过Sys.ServoPeriod设置,单位为kHz。注意:ServoPeriod单位为ms,且必须为62.5μs的倍数。

    若轴过多,4kHz+可能出现通信失败,需尝试降低通信频率!!!

    其他相关的几个状态结构有:

    • Sys.ServoPeriod
    • Sys.ServoTime
    • Sys.RtIntPeriod
    • Sys.RtIntTime
    • Sys.RunTime
  • 第二步:添加EtherCAT主站,注意PowerPMAC的Servo clock必须和主站的Cycle Time匹配。

    在这里插入图片描述

  • 第三步:扫描EtherCAT网络

    在这里插入图片描述

  • 第四步:配置从站时钟,分布式时钟默认与主站相同,如自定义可开启【覆写模式】,具体设置参考Power PMAC IDE手册P226。

    在这里插入图片描述

  • 第五步:配置从站PDO,PDO的设置参考DS402,Elmo驱动器ESI默认是位置模式,这里我们选满足三种循环操作模式的两个PDO组合。

    在这里插入图片描述

  • 第六步:设置初始化命令,默认循环位置模式(CSP=8),在此修改默认循环位置后,电机轴的操作模式及硬件接口将会自动配置,但也要检查自动配置信息是否正确。

模式 模式值
Cyclic sync position mode 8
Cyclic sync velocity mode 9
Cyclic sync torque mode 10

在这里插入图片描述

  • 第七步,加载映射到PMAC

    在这里插入图片描述

  • 第八步:添加EtherCAT电机(本文未使用轴的方式,直接通过操作PDO实现的电机控制)

  • 第九步:使能EtherCAT

    在这里插入图片描述

  • 第十步:关闭Power PMAC伺服程序,通过Motor[x].ServoCtrl=0实现,赋值为0后,Motor[x].IqCmd将无数据输出,注意,使用Motor[x]结构体时只能在配置有电机轴以后才能使用。

  • 第十一步:查看PMAC Script Language -> Global Includes -> ECATMap.pmh,以此为参照,通过ECAT的IO进行操作(如程序已下载到PMAC中,则可通过宏进行操作)

//------------------------------------------------------------------------------// 
// This code was generated by PowerPMAC IDE.// Date: 2/21/2021, Time: 10:43 AM// // Changes to this file may cause incorrect behavior and will be lost if// the code is regenerated.//
//------------------------------------------------------------------------------// Slave_1001 [Elmo Drive ] Station Address-1001#define Slave_1001_ElmoDrive_1001_Index 0// Inputs#define Slave_1001_ElmoDrive_1001_6064_0_Positionactualvalue ECAT[0].IO[4096].Data#define Slave_1001_ElmoDrive_1001_60F4_0_PositionFollowingerroractualvalue ECAT[0].IO[4097].Data#define Slave_1001_ElmoDrive_1001_6077_0_Torqueactualvalue ECAT[0].IO[4098].Data#define Slave_1001_ElmoDrive_1001_6041_0_Statusword ECAT[0].IO[4099].Data#define Slave_1001_ElmoDrive_1001_6061_0_Modeofoperationdisplay ECAT[0].IO[4100].Data// Outputs#define Slave_1001_ElmoDrive_1001_607A_0_TargetPosition ECAT[0].IO[0].Data#define Slave_1001_ElmoDrive_1001_60FF_0_TargetVelocity ECAT[0].IO[1].Data#define Slave_1001_ElmoDrive_1001_6071_0_TargetTorque ECAT[0].IO[2].Data#define Slave_1001_ElmoDrive_1001_6072_0_MaxTorque ECAT[0].IO[3].Data#define Slave_1001_ElmoDrive_1001_6040_0_Controlword ECAT[0].IO[4].Data#define Slave_1001_ElmoDrive_1001_6060_0_Modeofoperation ECAT[0].IO[5].Data
  • 第十二步:通过PDO接口操作电机,命令如下:
// 设置电机操作模式为循环力矩模式(CST)ECAT[0].IO[5].Data = 10// 设置电机最大力矩,此处对应电机峰值电流大小,单位为mAECAT[0].IO[3].Data = 20500// 通过控制字使能电机,使能以后驱动器会有电流声ECAT[0].IO[4].Data = 6  // 通信前的准备ECAT[0].IO[4].Data = 7  // 掉电ECAT[0].IO[4].Data = 15 // 使能// 写入目标力矩,目标力矩的计算参照下文,此处303代表目标转矩为2AECAT[0].IO[2].Data = 303

关于状态字切换,参照该文:

控制字 control word:

6------ -------7-------------15-------------7通信前的准备    电机去使能       电机使能       电机去使能

Tips:

  1. 通信准备工作 control word=6;
  2. 在进行控制前,先设置操作模式 mode of operation 在使能电机;
  3. 模式切换,先去使能control word =7, 在重新设置模式。
  • 0x6075:电机额定电流,对应驱动器CL[1](单位A),0x6075电流单位为mA
  • 0x6072:Max Torque,对应驱动器PL[1](单位A),0x6072单位为mA
  • 0x6073:Max Current,计算方式为:(0x6072 * 1000)/ 0x6075
  • 0x6071:目标力矩,计算方式为:目标电流(mA) * 1000 / 0x6075
  • 0x6077:实际电流值(mA),对应驱动器的IQ(A)

本文电机峰值电流为20.5A,连续电流为6.6A,假设目标电流为2A,则下发CST的命令大小应为:

2000 m A ∗ 1000 / 6600 m A = 303 2000mA * 1000 / 6600mA = 303 2000mA1000/6600mA=303

转载地址:https://miracle.blog.csdn.net/article/details/113924616 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Simulink框图转C代码笔记
下一篇:MATLAB - Modbus TCP客户端的使用

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年05月07日 16时31分13秒