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.

[参考译文] MOTORWARE:MOTORWARE 问题

Guru**** 2536360 points
Other Parts Discussed in Thread: TMS320F28069, MOTORWARE, C2000WARE, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/779487/motorware-motorware-questions

器件型号:MOTORWARE
主题中讨论的其他器件:TMS320F28069C2000WAREcontrolSUITE

您好!

我们将 TMS320F28069处理器与 Instaspin 配合使用以用于逆变器应用。 我对代码进行了一些研究、试图了解代码的某些部分以重写代码并为我们的应用添加一些功能、我对此有一些疑问:

1. CTRL_setup:据我所知、运行轨迹的函数就是运行轨迹、这是正确的吗? 如果是、哪个轨道? 我认为它是速度、Id、可能是 speed_max?

我向该函数中添加了 IQ 的另一个轨迹、以便将转矩斜升而不是升:

"// IQ 轨迹句柄
_iq intValue_IQ = TRAJ_getIntValue (obj->trajHandle_IQ);
_iq targetValue_IQ = TRAJ_getTargetValue (obj->trajHandle_IQ);
_iq maxDelta_IQ = TRAJ_getMaxDelta (obj->trajHandle_IQ);

_iq error_IQ = targetValue_IQ - intValue_IQ;

//剪切并更新值
intValue_IQ +=_IQsat (ERROR_IQ、maxDelta_IQ、-maxDelta_IQ);

//存储值
TRAJ_setIntValue (obj->trajHandle_IQ、intValue_IQ);
CTRL_setIq_ref_pu (handle、intValue_iq);"

是否可以将该代码重新用于其他轨道而不是使用 CTRL_runTraj? 我认为该函数是 Instaspin ROM 库的一部分、因此我无法访问该函数。

2. spdmax 轨迹是什么? 这是速度控制器可以输出的最大速度的轨迹吗? 这是否与更改速度轨迹的 maxValue 不同? 您为什么需要另一个轨迹?

什么是 gMxCurrentSlope? 现在、在我的代码中、它是:


"if (EST_isMotorIdentified (obj->estHandle))

物品;

EST_setMaxCurrentSlope _pu (obj->estHandle、gMaxCurrentSlope);

物品;


其他

gMaxCurrentSlope = EST_getMaxCurrentSlope _pu (obj->estHandle);
}"

这是否仅在识别过程中使用? 如果是、什么标识? 我需要在应用中使用的唯一标识是偏移校准和 Rs 重校准。  

4.是否可以知道估算器运行所需的参数? 我发现与估算器设置有关的唯一位置是 CTRL_setparam:

"Ctrl_setEstParams (obj->estHandle、pUserParams);"

 我假设估算器从 pUserParams 获取它所需的所有参数? 我计划修改此结构、以便添加/删除一些内容。 这是否可以在不中断估算器的情况下实现?

5.我想添加另一个中断来处理 CAN 通信。 这是否会以某种方式干扰主 ISR? 有没有这方面的示例?

6. gMotorVars 结构 定义为易失性。 这是必要的吗? 可以更改吗?

提前感谢!

Javier

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CTR_setup 针对 ID、速度和 speedMax 运行轨道。 您可以使用 traj.c 和 traj.h 中的函数、但无法使用 CTRL_runTraj、因为它在 ROM 中被阻止。
    2、速度 PI 控制器的输出受限、限制了最大扭矩电流。
    它用于 Id 轨迹的斜坡速率。
    4.所有参数,您都不能更改结构,即使是其对象变量的顺序,也不能更改 CTRL 对象所需的结构。
    5. motorWare 中没有示例代码,您可以参考 controlSUITE 或 C2000Ware 中的 eCAN 示例代码。
    6.你最好保持这一点。

    顺便说一下、如果您希望更灵活地修改 instaSPIN 示例项目、则可以参阅 lab11a。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.如果我使用 traj.c 中的轨道而不是 CTRL_runTraj、会有问题吗?

    2.您能再进一步介绍一下吗? 我仍然无法理解为什么需要它。 如果您限制速度轨迹的最大和最小输出、则应限制允许的最大速度。 由于 CTRL_runTraj 是运行 speedmax 轨迹的路径、因此我无法看到代码来查看速度和 speedmax 轨迹的目标值在何处设置。

    3.估算器是否需要该值来估算角度/速度? 还是只是为了识别?

    6.这是为什么呢?

    我看了 lab11a、它不使用最大速度轨迹。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.如果我使用 traj.c 中的轨道而不是 CTRL_runTraj、会有问题吗?

    2.您能再进一步介绍一下吗? 我仍然无法理解为什么需要它。 如果您限制速度轨迹的最大和最小输出、则应限制允许的最大速度。 由于 CTRL_runTraj 是运行 speedmax 轨迹的路径、因此我无法看到代码来查看速度和 speedmax 轨迹的目标值在何处设置。

    3.估算器是否需要该值来估算角度/速度? 还是只是为了识别?

    6.这是为什么呢?

    我看了 lab11a、它不使用最大速度轨迹。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有人吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.不能,因为您定义了一个新的轨迹对象,所以没有使用 CTRL_runTraj()中的句柄,只是调用了同一个函数。
    作为速度 PI 稳压器转矩电流的限制或斜升控制、它仅在最大电流发生变化时工作、输出将设置为速度 PI 控制器的最大和最小输出。 您可能会在 ctrl.h 中的 CTRL_runOnLine_User()中找到该代码 它不是正在运行的进程所必需的、因此不会在 lab11a 中使用。
    3、不需要、仅用于电机识别、以限制电流斜升速率、从而避免过流。
    6."volatile"告诉编译器不要优化与 volatile 变量有关的任何内容、它告诉编译器该变量的值可能会在 ISR 或后台循环可以更改的任何时间发生变化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后一个问题是3。 是否在所有识别过程中使用? 由于识别过程中唯一使用的部分是 Rs 估算、因此如果未在此处使用 Rs 估算、或者它可以使用默认值、那么我宁愿将其删除以简化代码并使其更易读。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它将用于 Rs 估算、但不仅用于 Rs 估算。 该变量及其值将用于 ROM 代码中的一些快速函数。 我认为您无需更改或替换它、只需按照示例代码操作即可。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。 谢谢!