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.

[参考译文] TMS320F28069F:将传感器和无传感器集成到一个程序中

Guru**** 2380860 points
Other Parts Discussed in Thread: MOTORWARE, BOOSTXL-3PHGANINV, DRV8329AEVM, DRV8316REVM, C2000WARE-MOTORCONTROL-SDK, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program

器件型号:TMS320F28069F
主题中讨论的其他器件:MOTORWAREC2000WARE-MOTORCONTROL-SDKC2000WARE

尊敬的罗燕明:

我想将传感器和无传感器集成到一个程序中、并通过 motorware lab10e 实现。 我的计划如下:

1.根据《InstaSPIN-FOC 和 InstaSPIN-MOTION 用户指南》的第18章设置 QEP 的硬件和软件。

2.在 main()中,添加 ENC _设置(...),尽管我仍然不理解为什么此函数需要输入 USER_ MOTOR_ NUM_POLE_PAIRS / USER_ IQ_ FULL_ SCALE_FREQ_ Hz/USER_ ISR_FREQ_ Hz 这些参数? 但它不会影响我的使用。

3.在 mainISR()中,添加 ENC_ run (...)/ENC_ CalcElecAngle(),使用 ENC_ getElecAngle (...)/ENC_ GetSpeedRPM (...) 替换 EST_getAngle_pu (ctrlHandle->estHandle)/EST_getFm_ pu (ctrlHandle->estHandle)。

4.在 FS_ IN RUN (...)中、使用 ENC_ GetSpeedRPM (...) 替换 EST_getFm_pu (ctrl->estHandle)。

5. 在 updateGlobalVariables_motor (...)中 ,使用 ENC_ GetSpeedRPM ()替换 EST_getSpeed_ krpm (obj->estHandle)。

上述解决方案是否可行? 如果可能、ENC_ getElecAngle (...)/ENC_ GetSpeedRPM (...) 和 EST_getAngle_pu (ctrlHandle->estHandle)/EST_getFm_pu (ctrlHandle ->estHandle)如何 匹配单位?

希望能得到您的帮助,谢谢您!

此致、

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

    是的、您只需将 FAST 估算器的角度和速度替换为传感器的值即可。

    您可以查看 lab12a 和 lab12b、了解如何在 motorWare 中将编码器与 QEP 搭配使用。

     或者、您可以参阅电机控制 SDK 中较新 C2000器件的实验。

    当前的 MCSDK 中提供了通用电机控制实验室、该实验室可支持一组适用于 BLDC/PMSM 驱动器的硬件套件和控制算法。 套件包括 LAUNCHXL-F280025CLAUNCHXL-F280039C、 LAUNCHXL-F2800137 (带 BOOSTXL-DRV8323RS)、 BOOSTXL-DRV8323RHDRV8353Rx-EVM、  用于 低压电机的 BOOSTXL-3PHGANINV、DRV8316REVM 或 DRV8329AEVM 逆变器板。 控制算法包括具有 FAST 的无传感器 InstaSPIN-FOC、具有 eSMO 的无传感器 FOC、具有增量编码器的含传感器 FOC、具有霍尔传感器的含传感器 FOC。

    C2000WARE-MOTORCONTROL-SDK: https://www.ti.com/tool/C2000WARE-MOTORCONTROL-SDK

    Universal Project and Lab User's Guide (通用项目和实验室用户指南): https://www.ti.com/lit/spruj26

    文件夹中的示例实验项目:C:\ti\c2000\C2000Ware_MotorControl_SDK_ \solutions\universal_motorcontrol_lab\f28002x

    或                                                        C:\ti\c2000\C2000Ware_MotorControl_SDK_ \solutions\universal_motorcontrol_lab\f28003x

    或                                                        C:\ti\c2000\C2000Ware_MotorControl_SDK_ \solutions\universal_motorcontrol_lab\f280013x

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

    罗燕明:感谢您的回复! QEP 的接口设置应该没有问题、但我不熟悉如何连接无传感器 FOC 软件。 例如、上述控制中涉及的角度和速度值是否是 Motorware lab10e angle_ est_ pu/ gMotorVars 中的 gMotorVars。 SPEED_ est_两个 pu 参数? EST_getAngle_pu/EST_getFm_ Pu 不直接参与控制?它们的值范围是多少? (角度为0-2 π? 或- 2 π 至+ 2 π?; 速度值是否标量? 标量的计算公式是什么?)。当然、在参考您提供的信息后、我可能会得到这些内容的答案。 但愿如此。 如果我将来有任何问题、我仍希望得到您的帮助!

    谢谢!

    此致!

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

    如上所述、请参阅示例项目。 在 MotorWare 中、速度和角度为 pu (标么值)格式。

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

    尊敬的罗燕明:我检查了 Motorware Lab12b 的代码并将其与 Lab10e 的代码进行了比较。 我有几个问题需要帮助。

    在速度无传感器控制中、EST 直接用于提取 F、A、S 和 T 参数、而在速度传感器控制中、QEP+ENC+SLIN+EST 模式用于从 QEP+ENC+SLIP 中提取 A 和 S、以及从 EST 中提取 F 和 T 参数。 对吗?

    2. ctrlQEP 函数是否用于速度传感器、ctrlQEP 函数是否用于速度传感器?

    使用速度传感器和 FS 功能、通过 ENC 功能计算出的速度能否直接替换通过 EST 计算出的速度?

    谢谢!

    此致!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4423429 #4423429]1. 在速度无传感器控制中、EST 直接用于提取 F、A、S 和 T 参数、而在速度传感器控制中、QEP+ENC+SLIN+EST 模式用于从 QEP+ENC+SLIP 中提取 A 和 S、以及从 EST 中提取 F 和 T 参数。 是这样吗?[/引述]

    否 lab12中的 ST_函数将根据 ENC 模块的角度计算速度。 这只是一个有关如何使用 PU 格式将编码器信号转换为角度的示例。  如果您想要实现有传感器 FOC、则无需 EST 库中的任何函数。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4423429 #4423429]2. ctrlQEP 函数用于速度传感器、ctrlQEP 函数用于速度传感器吗?[/quot]

    是的。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4423429 #4423429]3. 使用速度传感器和 FS 函数时、通过 ENC 函数计算的速度能否直接替换通过 EST 计算的速度?[/QUERP]

    是的、您可以使用 ENC 函数中的角度和速度。

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

    罗燕明:非常感谢您的回复! 但是、仍然存在一些不能理解的问题:

    在 Lab12b 的 mainISR 中、CTRL_Run (ctrlHandle、halHandle、&gAdcData、&gPwmData、slip_getMagnetiticAngle (slipHandle))、其中 slip_ getMagnetiticAngle (slipHandle)的数据格式为_ IQ、但在 ctrlQEP 中为 C、void CTRL_handle、halHandle、CTRL handle (halhandle)

    const HAL_ AdcData_ t * pAdcData、

    HAL_ PwmData_ t * pPwmData、

    uint32_ T electicalAngle)、其中 electicalAngle 的数据格式为 uint32_ t。两者不一致。 为什么电角不采用 Iq 格式?

    我的目的是集成传感器和无传感器控制、并使用变量来控制是使用无传感器控制还是无传感器控制。 通过这种方法、我必须集成 CTRL 和 ctrlQEP。 我检查了这两个代码之间的差异。 CTRL 包含 ctrlQEP 的所有函数、但 Ctrl_ Run()和 CTRL_runOnLine_User ()不同、因为电气角度参数需要输入以进行传感器控制、而不是用于无传感器控制。 通过这种方法、我可以创建两个函数并通过变量选择控制方法、但只需要一个 ctrlQEP 而不是 ctrlQEP。 这是可以的吗?

    谢谢!

    此致!

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

    补充:该实验是今天进行的(ENC 和 SLIP 函数被添加到 lab10e mainISR 中、但它们并未参与到控制中)、并且无法理解几个现象。

    1、EST_getAngle_ Pu ()在正向运行中从+1下降到0、在反向运行中从-1上升到0、但是 ENC_ GetElecAngle ()在正向运行中从0上升到+1、在反向运行中从+1下降到0。 只有正值没有负值。 编码器安装方向不应影响+或-。

    2、EST_getFm_Pu ()和 EST_getSpeed_krpm ()往往在不同的值。时是相同的

    上述现象的原则是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4425654 #4425654"]滑动函数

    与转差相关的功能仅适用于 ACIM。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4425654 #4425654"]上述现象的原理是什么?

    电机和编码器线路的连接顺序不正确。

    您是否正在使用 TI 评估套件? 或者选择了器件来设计您自己的电路板。

    如果不是、您可以参考上面提到的包含所需功能的通用实验。

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

    罗燕明:非常感谢您的回复!  

    1.是的,我正在使用 ACIM,所以使用 SLIP,使用 SLIST_ GetMagneticAngle (),PM 使用 ENC_ getElectAngle()。

    2.我直接检查 QEP 寄存器中的计数值。 对于1000Line,当电机旋转一周时,当它大于3999时,它的计数值将为0。 它是正确的。我将进一步检查 ENC_ getElecAngle ()。的计算过程

    3.是的,我是我自己的仪表板。

    首先、解决编码器 ENC_ GetElecAngle ()和 EST_getAngle_ Pu 与此问题相对应的问题。

    谢谢!

    此致!

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

    好的。 您必须参考 InstaSPIN-MOTION 示例实验室、如果您使用 ACIM、则使用 FAST 提供的速度。

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

    尊敬的罗燕明:

    1.我尝试使用 motoroware lab10e 中的传感器实现 FOC (无运动)控制、但失败了。 这打扰了我! 没有运动的 FOC 例程能否不能由传感器控制? 我的解决方案如下:在 mainISR 中,()调用 ENC _ Run ()和 CTRL_Run (ctrlHandle、halHandle、&gAdcData、&gPwmData、Angle_pu、speed_pu)以替换原始 CTRL_Run (ctrlHandle、halHandle、&gAdcData、&gPwmPu)、并在运行时使用两个 pru_角/getPu = pru_ pru_ pru_ pru_ pru_、pru_ pru_ pru_ pru_ pru_ pru_ pru_ pru_ pru_ pru_、pru_ pru_ 当使用 angle_pu/speed_pu =slick_getMagneticAngle()/ENC_当 getFilteredSpeed ()运行几秒钟时,电流上升到最大值,电机旋转稳定。 如果仅 SPEED_PU = ENC_ GetFilteredSpeed、而 ANGLE_ PU = EST_getAngle_ Pu ()、则运行良好。

    2.上次您提到参考运动、但我的芯片是28069F。 可以 使用与运动相关的函数或库吗?

    希望能得到帮助!

    此致!

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

    地址:我没有给出 ENC_ getElecAngle (encHandle)=0进行校正、 没有调用 ENC_ setZeroOffset ()。是否需要校正?

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

    请参阅 InstaSPIN-MOTION 实验以使用编码器模块(ENC_函数)。 如果您使用基于传感器的 FOC、则项目中不需要所有 EST_functions。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4432591 #4432591]2. 上次您提到参考运动、但我的芯片是28069F。 可以 使用与运动相关的函数或库?

    否 InstaSPIN-MOTION 仅支持 F2806xM。

    对于 PMSM、它必须用于偏移校准、这也应该用于 ACIM。

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

    罗燕明:感谢您的回复! 再次检查 lab12b 代码后、仍有几个问题需要帮助:

    1、SpinTAC.lib 文件是否也适用于无运动的 FOC (例如28069F)?

    在 lab12b 中、if (stCnt++>=ISR_TICKS_PER_SPINTAC_TICK){

    ST_ runPosConv (stHandle、encHandle、ctrlHandle);

    ST_ runVelCtl (stHandle、ctrlHandle);

    stCnt = 1;

    },  对于 FOC 来说 ST_runVelCtl (stHandle、ctrlHandle)不是不必要的?

    ST_时如何进入速度?

    在 lab12b 中,如果不使用 RAM,mainISR()的运行周期时间是多少?

    此致!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4436075 #4436075"] 1、SpinTAC.lib 文件是否也适用于无运动 FOC (如28069F)?

    否 它适用于 F2805xM 上的 InstaSPIN-MOTION。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4436075 #4436075"]  FOC 是否不需要 ST_runVelCtl (stHandle、ctrlHandle)?[/quot]

    用于速度控制的 InstaSPIN-MOTION、而不是用于 FOC。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4436075 #4436075"]3. 在 ST_如何获取速度?[/quot]

    Instaspin"运动"将根据转子角度值计算转速。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4436075 #4436075"]4. 在 lab12b 中,如果不使用 RAM,mainISR()在我们中的运行周期时间是多少?

    相同的 CPU 周期。 我们不会在闪存中测试执行时间。

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

    尊敬的罗燕明:

    我再次检查我的传感器控制代码(lab10e):

    在主 H 中、添加# include "spintac_velocity. 水平"

    2.在 main()中添加//初始化 ST_PosConv 对象

       stPosConvHandle = STPOSCONV_ init (&stPosConv、sizeof (stPosConv));

       STPOSCONV_ setSampleTime_sec (stPosConvHandle、_IQ (0.01));

       STPOSCONV_ seterevMaximums_ erev (stPosConvHandle、_IQ (1.0)、0);

      STPOSCONV_ setUnitConversion (stPosConvHandle、USER_IQ_FULL_SCALE_FREQ_Hz、ST_SAMPLE_TIME、    USER_MOTOR_NUM_POLE_PAIRS);

      STPOSCONV_ setMRevMaximum_ mrev (stPosConvHandle、_IQ (10.0));

      STPOSCONV_ setLowPassFilterTime_tick (stPosConvHandle、3);

      STPOSCONV_ setEnable (stPosConvHandle、true);

    3.在 mainISR()中添加//运行 SpinTAC 组件

    if (stCnt++>= ISR_TICKS_PER_SPINTAC_TICK){

    ST_ runPosConv (stHandle、encHandle、ctrlHandle);

    stCnt = 1;

    if (USER_MOTOR_TYPE = MOTOR_Type_Induction){

    Slip_setElectronicAngle (slipHandle、ENC_getElecAngle (encHandle));

    滑_跑(滑手);

    Slip_ MagAngle = Slip_ getMagneticAngle (slipHandle);

    否则{

    滑移_磁力角= ENC_ getElecAngle (encHandle);

    Ctrl_ runQEP (ctrlHandle、halHandle、&gAdcData、&gPwmData、SLIT_MagAngle、EST_getFm_PU (ctrlHandle->estHandle));

    4.在 proj_中加上 lab10e。 C

    void ST_ runPosConv()/void ST_ RunVelCtl()(从 lab12b 复制)

    5.将 SpinTAC.lib 添加到项目中、如果未添加 lib、编译将无法通过、因为 STPOSCONV_ run (stObj->posConvHandle)/STVELCTL_ Run (stObj ->velCtlHandle)没有相应的 c 文件

    异常操作,磁场角度等于电角,转差->增量_转差=0保持不变。 几秒钟后、电流上升到最大值、电机不稳定。 您能告诉我什么是错误吗? 以及解决方案?

    此致!

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

    添加:

    我是一名参考人:

    e2e.ti.com/.../1293537

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

    您是否正在使用 F2806xM 器件? 如果是、您可能会尝试直接运行 InstaSPIN-MOTION 实验、只需相应地更改编码器行。

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

    罗燕明:不、是 F28069F。 如果 无法使用 SpinTAC 库、在 lab10e 中、无法根据电角计算磁角。  是否需要在 项目中编写自己的代码来计算磁角? 如果是、是否有任何代码可供参考? (您上次提到了 eSMO。 有没有用于计算磁角的代码?),我真的找不到更好的方法了。 请帮帮我。

    谢谢!

    此致!

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

    如您所回答的那样、 F28069F 不支持 InstaSPIN-MOTION 包括 SpinTAC 库。

    eSMO 仅用于 PMSM 电机。

    是的、除了 InstaSPIN-MOTION 之外、MotorWare 中没有用于 ACIM 的传感 FOC、您必须编写此代码来将传感器信号转换为转子角度、以便自己进行电机控制。

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

    尊敬的罗燕明:您好、我在 lab10e 例程中实现了传感器 FOC (它不需要运动模块)、电机工作正常、低速扭矩也可以达到目标值、但仍有几个问题需要我帮助:

    1. motorware 例程的电机参数是否识别转子漏电感或自感? 如果是自感、则转子时间常数的计算将是一个非常小的数字、并且转子磁场角度无法计算、因为我的电机转子参数的识别电感值小于1mH、转子电阻小于1 Ω、 电机功率为2.2kW。 但我通过了30kW 220V ACIM 的输入泄漏电感测试、无传感器运行没有问题。 目前、我直接输入转子时间常量值、使用 lab12b 例程将其修改并移植到 lab10e、实施传感器 FOC (F28069F)、电机似乎正常运行。

    2.当电机反转时 FAST 的角度估算值为负、但我通过了 slip_run (slipHandle);计算后、转换为负值以替换 EST_getAngle_ Pu、电机快速旋转、FAST 的角度估算值直接替换而不进行修改。 电机正常反向运行。 为什么?

    谢谢!

    此致!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4450342 #4450342]1. motorware 例程的电机参数是否识别转子漏电感或自感?[/quot]

    否 InstaSPIN-FOC 不支持 ACIM。

    [引用 userid="520304" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173093/tms320f28069f-integrate-sensor-and-sensorless-into-one-program/4450342 #4450342"]。 电机正常反向运行。 为什么?[/报价]

    对于 ACIM、您需要使用  SLT_ RUN 进行角度校正。 是的、即使角度不精确、电机也可以运行、并且误差很小、但电机效率将低于具有精确转子角度的电流。