This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8069万F:基于eQEP的控制存在疑问

Guru**** 2325560 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/571705/tms320f28069f-doubt-about-eqep-based-control

部件号:TMS320F2.8069万F

你好

我想使用编码器运行感应式扭矩控制。  

我已调整了Lab4a,以便做到这一点:

我已启动编码器手柄等

我还将编码器的读数传递给了mainISR功能中的控件

CTRL_RUN (ctrlHandle,halHandle,&gAdcData,&ENC_getElectro角(encHandle));

我已经执行了spruhF1中给出的所有步骤,但这一步(QEPctrl.h)除外

ANGLE_PU = EST_getAngle_PU (obj->estHandle);
//从ENC模块更新电气角度
ANGLE_PU = ENC_GETELEAngle (encHandle);

我没有修改此项,因为在Lab12实验室中,这些行不包括在内

这是否正确?

控制器工作正常,但似乎具有更多的扭矩纹波,而不带编码器的纹波(Lab4a)。 编码器分辨率为512 (我认为应该足够)

是否有任何遗漏?

我在上一篇文章中看到编码器固件不提供速度反馈。 是真的吗?

我还有另一个问题

由于我的应用(带轮式电机的动力传动系统),编码器对齐相位不适合实际应用。 我们提供了双增量和绝对编码器。 是否有执行偏移初始化的方法的示例? 我执行了一些多个编码器校准过程(在Rs重新计算步骤中),根据电机初始位置(在Rs重新校准步骤之前),我们获得了四个位置:1591,1079,567,55 (电机有4个极对,我们使用2048 ABS封装器)。 根据测试,这些位置的缩写为+/-50。 我的想法是使用这个预先计算的位置来设置偏移。 这种缩写是否对执行此操作至关重要? 是否有将这些点转换为有效偏移的方式的示例

感谢你

Borja Gómez ć

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Borja,

    [报价用户="Borja Gomez88"]//从ENC模块更新电气角度
    ANGLE_PU = ENC_GETELEAngle (encHandle);

    此步骤是必需的,否则FOC将使用估计器作为其角度源,而不是编码器。  

    I have read in previous post that speed feedback is not provided by the encoder firmware.(我在上一篇文章中读到编码器固件不提供速度反馈。) 是真的吗?[/QUOT]

    ENC软件模块默认情况下不计算速度,但提供了可启用此功能的功能。

    Borja Gomez88 说:
    有没有关于执行偏移初始化的方法的示例。[/QUOT]

    由于编码器种类繁多,因此没有提供示例。  您应该能够使用实验信息和编码器来创建一个不依赖于初始转子位置的偏移。  ENC模块正在尝试将机械位置转换为电气位置,为此,它需要将每个电气角度的角度从0到1进行包绕。  因此,您应该能够修改代码,以便您的偏移不是从机械读数而是从电气读数中获取。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的雷诺德先生

    感谢您的回复。

    此步骤是必需的,否则FOC将使用估计器作为其角度源,而不是编码器。  

    我弄错了。 我没有意识到我使用的是"ENC_GETELEAngle(encHandle)"。 在 CTRL_runOnLine_User函数中,electronicalAngle是一个输入参数(可从main_ISR函数中的编码器读取获取)

    //生成电机电气角度
    ANGLE_PU = EST_getAngle_PU (obj->estHandle);

    //从传感器更新电气角度
    ANGLE_PU =电子角度;

    由于编码器种类繁多,因此没有提供示例。  您应该能够使用实验信息和编码器来创建一个不依赖于初始转子位置的偏移。  ENC模块正在尝试将机械位置转换为电气位置,为此,它需要将每个电气角度的角度从0到1进行包绕。  因此,您应该能够修改代码,以便您的偏移不是从机械读数而是从电气读数中获取。

    使用SSI编码器,我成功地对对齐功能进行了编程。 根据转子的位置,Rs重新校准过程会将转子移至四个固定位置(SSI位置)。 此信息可用于初始化偏移,无需使用"Rs重新校准流程"

    因此,目前我认为硬件和软件都正确,但实际上不正确。 我在要求高扭矩时遇到一些问题(3 *额定扭矩。 >用于电流测量的80 % ADC刻度)。 出于测试目的,我正在运行标准驾驶循环。 扭矩参考通过CAN发送至控制装置,并使用相同的总线获取速度和扭矩。 在以下图形中,显示了扭矩参考(绿色),测量的扭矩(红色)和电机转速。 如果“扭矩图”被扭曲,可以看到在某些时期(高扭矩(3*TN)),扭矩纹波相当高。 在此期间,速度信息(来自估计器)不正确。 它在零左右渗透。

    该电机与另一个电机耦合,以作为负载(负载取决于道路,车辆参数,坡度...)。 两个电机之间的扭矩传感器已处理完毕。 如果我们从该传感器和负载电机获取信息,我们可以看到生成的扭矩正在跟踪指令扭矩(平均信息),并且实际速度也是正确的。 什么会导致实际速度和测量速度及扭矩之间出现这种差异? 可能是噪音问题?  

    提前感谢您的参与

    Borja

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Borja,

    您使用哪种图形工具来显示扭矩和速度?

    感谢您提前分享,
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我正在使用dSPACE的ControlDesk

    www.dspace.com/.../controldesk.cfm

    我只是从自定义板上阅读CAN消息

    此致