本文共 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:
- 通信准备工作 control word=6;
- 在进行控制前,先设置操作模式 mode of operation 在使能电机;
- 模式切换,先去使能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 2000mA∗1000/6600mA=303转载地址:https://miracle.blog.csdn.net/article/details/113924616 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!