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.

[参考译文] TMS320F28027F:使用 C2000电机器件的 Lab1C 无法使用 TMS320F28027F 实现更高的加速(高达50kRPM)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/927272/tms320f28027f-unable-to-achieve-higher-acceleration-upto-50krpm-with-tms320f28027f-using-lab1c-of-c2000-motorware

器件型号:TMS320F28027F

大家好、

我将 Lab1C 与定制板搭配使用、以通过以下数据驱动 BLDC 电机(48V、10000rpm、峰值电流2A)

电机参数

#define USER_MOTOR_TYPE                 Motor_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS      (2)
#define USER_MOTOR_RR                    (空)
#define USER_MOTOR_Rs                    (1.2)
#define USER_MOTOR_LS_d                  (0.000721023)
#define USER_MOTOR_LS_q                  (0.000721023)
#define USER_MOTOR_RATed_VLUX           (0.28)

#define USER_MOTOR_磁 化电流 (空)
#define USER_MOTOR_RES_EST_CURRENT       (1.0)
#define USER_MOTOR_IND_EST_CURRENT       (-1.0)
#define USER_MOTOR_MAX_CURRENT           (9.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz      (20.0)

#define USER_MOTOR_FREQ_LOW               (2.0)
#define USER_MOTOR_FREQ_HIGH               (220.0)
#define USER_MOTOR_FREQ_MAX               (250.0)
#define USER_MOTOR_VOLT_MIN                (3.0)
#define USER_MOTOR_VOLT_MAX                (68.0)

板参数是

#define USER_IQ_FULL_SCALE_FREQ_Hz          (433)

#define USER_IQ_FULL_SCALE_VOLTAGE_V        (88.0)

#define USER_ADC_FULL_SCALE_VOLTGE_V      (69.3)

#define USER_VOLTGE_SF                      ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V))

#define USER_IQ_FULL_SCALE_CURRENT_A        (19.8)

#define USER_ADC_FULL_SCALE_CURRENT_A      (33)

#define USER_CURRENT_SF                      ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A))

#define USER_NUM_CURRENT_SENSORS           (3)

#define USER_NUM_VOLTGE_SENSORS           (3)

#define USER_PWM_FREQ_kHz                    (15.0)

#define USER_MAX_VS_MAG_PU                   (0.5)

#define USER_NUM_PWM_TICKS_PER_ISR_TICK     (1)

#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (5)

#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK  (5)

#define USER_VOLTGE_FILTER_POLE_Hz           (698.34)

实际上、我只有2个电流传感器(不提供相位"A"传感器)、因此我使用 HAL_readAdcData (hal.h)中的以下公式从软件方面对其进行了改编

//转换电流 B
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_2);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[1];//除以2^numAdcBits = 2^12
pAdcData->I.value[1]=-value;                       //-ve 更改电流传感器的极性

//转换当前 C
值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_3);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[2];//除以2^numAdcBits = 2^12
pAdcData->I.value[2]=-value;
//pAdcData->I.value[2]=(pAdcData->I.value[0]+pAdcData->I.value[1]);

//转换电流 A

值=(_IQ) ADC_readResult (obj->adcHandle、ADC_ResultNumber_1);
值=_IQ12mpy (value、curry_SF)- obj->adcBias.I.value[0];//除以2^numAdcBits = 2^12
//pAdcData->I.value[0]=-value;
pAdcData->I.value[0]=(pAdcData->I.value[1]+pAdcData->I.value[2]);

并在 hal.c 中进行设置、同时声明电流传感器 ADC

ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_0、ADC_SockChanNumber_A4);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_0、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_0、ADC_SockSampleDelay_7_cycles);

ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_1、ADC_SockChanNumber_A4);           //与 b 相电流感测相同
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_1、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_1、ADC_SockSampleDelay_7_cycles);

ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_2、ADC_SockChanNumber_A4);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_2、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_2、ADC_SockSampleDelay_7_cycles);

ADC_setSockChanNumber (obj->adcHandle、ADC_SockNumber_3、ADC_SockChanNumber_A6);
ADC_setSockTrigSrc (obj->adcHandle、ADC_SockNumber_3、ADC_SockTrigSrc_EPWM1_ADCSOCA);
ADC_setSockSampleDelay (obj->adcHandle、ADC_SockNumber_3、ADC_SockSampleDelay_7_cycles);

bcz 如果选择2个电流传感器、根据 hal.c 中的 ADC、则绘制的是14A (超过限制)

就像这样、当我从软件方面进行管理时、它运行良好、我实现了最高8400RPM 的理想速度、最大加速度为10kRPM。

但现在我的问题是

我想将加速度增加到50KRPM、但无法实现 (即使将电机最大电流增加到18A、我也没有获得)。


读数之后  

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/463896 线程我曾尝试过 LAB10a、但它也绘制了14A。(即使不是 Lab1b 和 Lab1C、无论我尝试的是哪个实验、它绘制的是14A)

我的问题是  

如何获得更高的加速度?

以及如何运行其他实验(尤其是 Lab10A)?(该实验消耗的电流更高)

 

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

    您可能只需启用电流环路并禁用速度闭环即可获得更高的加速度。  您应该为启动设置较低的加速度、 然后在仍需要 速度闭环时将加速度更改为较高的值。

    您能否布置一些由示波器捕获的相电流波形? 如果 您想实现如此高的加速度、是否可以增大电源板的最大电流?

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

    尊敬的 Yanming:

    感谢您的回答。

    " 如果 您想实现如此高的加速度、是否可以增大电源板的最大电流?"

    是的、最多可使用10A。

    "您能否发布一些由示波器捕获的相电流波形?  "

    连接了从1000rpm 到8400rpm 的电流和电压波形图像(使用 Lab1C)

    电流@1krpm

    电流@2krpm

    电流@3krpm

    电流@4krpm

    电流@5krpm

    电流@6krpm

    电流@7krpm

    电流@8krpm

    Current@8.4krpm

    电压

    电压@1krpm


    电压@2krpm


    电压@3krpm


    电压@4krpm


    电压@5krpm


    电压@6krpm


    电压@7krpm


    电压@8krpm


    voltage@8.4krpm


    我对有些怀疑

    Q1)

    "您可能只需启用电流环路并禁用速度闭环即可获得更高的加速度。"

    对于 Lab1C 或 Lab10A、您是否建议这么做?

    在 lab1c 中、我尝试了以下组合

    1) gMotorVars.Flag_enableSpeedCtrl = 0、将速度保持在500rpm 、并将 gMotorVars.Iqref_A 改变 为0.1至更高。

    但在  gMotorVars.Iqref_a=0.1时、它仅绘制了14A。

    2) gMotorVars.Flag_enableSpeedCtrl = 0、如果我将保持 gMotorVars.Iqref_A=0并通过将 gMotorVars.SpeedRef_krpm 更改为1krpm 且 V_BIAS.IqSet_A=0.5来提高速度、那么它在最大1.3A 时工作正常  

    3) gMotorVars.Flag_enableSpeedCtrl = 1、并且与(1)和(2)相同的变量

    Q2)

    根据您的上述建议、

    在表达式窗口中、 有3个 IQ

    1) 1) gMotorVars.IQ_A

    2) 2) gMotorVars.Iqref_A

    3) 3) V_BIAS.IqSet_A

    在3个 IQ 中、需要更改哪个 IQ?

    问题3)

    在我的上一篇文章中

    "实际上、我只有2个电流传感器(不提供相位"A"传感器)、因此我使用 HAL_readAdcData (hal.h)中的以下公式从软件方面对其进行了改编"

    它会影响我的绩效吗? 无论我在加速方面遇到什么问题、这对我来说是否重要?

    问题4)

    我的最后一个问题也请向我提供建议

    "如何运行其他实验(特别是 Lab10A)?(该实验消耗的电流更高)"

     我无法执行除 Lab1b 和 Lab1c 以外的所有实验、如果我将根据实验手册继续、则会消耗高电流(14A)。

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

    问题1. lab10a 或 lab05b。 Lab01b 和 Lab01c 仅用于验证硬件、不用于在高速和负载下旋转电机、这就是不能获得更高加速度的原因、这两个实验在没有转子位置的情况下不是开环控制。

    如果您想在不使用速度闭合环路的情况下使用扭矩控制、请参阅 lab05a。

    问题2. 回答问题1。

    问题3. 您无法实现过调制、并且需要在 user.h 中将 USER_MAX_VS_MAG_PU 设置为小于0.5

    问题4. 请参阅 InstaSPIN 实验室指南中的操作步骤、您应首先运行 lab02b 或 lab02c 以识别电机参数、然后运行 lab05a/b 或 lab10a 等后续实验。

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

    尊敬的 Yanming:

    感谢您的建议。

    现在、我已经成功实现了 Lab2a、2b 和 Lab4。  

    我已参考实验室手册以及 HVkitr1p1套件手册来执行该实验。

    但基于速度环路的实验无法正常工作。

    Q1) Lab5b

    现在我使用的是 HVkitr1p1。 在 Lab5b 中调节 Kp、Ki 时、我的性能完全没有变化。

    我已将转速设置为500rpm、突然它将转速设置为高 rpm、它将停止。

    我的速度计算值  

    Kp = 30.14

    Ki = 1.49

    即使改变它、性能也没有变化。

    我的电机参数是

    #define USER_IQ_FULL_SCALE_FREQ_Hz         (433.0)

    #define USER_IQ_FULL_SCALE_VOLTAGE_V       (50.0)

    #define USER_ADC_FULL_SCALE_VOLTGE_V    (409.6)  

    #define USER_IQ_FULL_SCALE_CURRENT_A      (12.0)

    #define USER_ADC_FULL_SCALE_CURRENT_A    (19.89)   

    #define USER_MOTOR_NUM_POLE_PAIRS        (2)

    #define USER_MOTOR_Rs                      (0.352500051)

    #define USER_MOTOR_LS_d                    (0.00025)

    #define USER_MOTOR_LS_q                    (0.00025)

    #define USER_MOTOR_RATed_VLUX             (0.045)

    #define USER_MOTOR_RES_EST_CURRENT      (1.0)   

    #define USER_MOTOR_IND_EST_CURRENT       (-1.0)

    #define USER_MOTOR_MAX_CURRENT          (10.0)  

    #define USER_MOTOR_FLUX_EST_FREQ_Hz      (20.0)  

    #define USER_MOTOR_FREQ_LOW              (1.0)

    #define USER_MOTOR_FREQ_HIGH              (200.0)

    #define USER_MOTOR_FREQ_MAX              (250.0)

    #define USER_MOTOR_VOLT_MIN                (3.0)

    #define USER_MOTOR_VOLT_MAX               (48.0)

    和  

    q) Lab1C

    即使 在 Lab1C 中、当我更改速度和电流的 KP 和 KI 时、性能和输入电流都没有变化。

    如果我增大或减小电流 KP、则它应根据设置的电流 KP 消耗更多/更少的电流。

    但未观察到变化。

    那么、是否缺少任何内容?

    等待您的回复。

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

    Lab01b 和 lab01c 是开环控制、不使用速度环路和位置角度。

    对于速度控制器而言、Kp 和 Ki 似乎过高、您可以根据电机的运行状态调整这两个参数。

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

    是的、这是根据计算得出的。

    然后、在 Lab5b 中的运行条件期间、I SET

    速度 KP = 5

    速度 Ki = 0.01至1.66

    但是、我没有观察到任何重大变化。

    稍后、为了验证它是否接受速度 Kp、ki 更改

    我使速度 Kp 和 Ki=0、IQ_ref=0、Speed_krpm=0、此时电机以其高速运行(9500rpm)。

    为什么会出现这种行为?

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

    尊敬的 Yanming:

    现在、我的电机在800 rpm 到10000 rpm 的速度范围内运转良好、加速度更高。

    问题 仅在于速度和电流 Kp、Ki。

    我已经使用 Lab2b 测量了电机的多个数据、并相应地计算了 Kp、Ki。

    现在、它在 Lab5b 中运行良好。

    但无法获得较低的转速范围。

    我的 V/f = 0.048、这是消耗量  

    1) Vphase = 3V &

    2)控制器侧的 VOLT_sensing 在800rpm 时=0.18V。

    因此、我已经在 Hvkitr1p1的 R2 (电压感测中绕过800k Ω)上连接了所有4个跳线、并在 user.h 中更新了相应的 ADC_VOLT 和 POLE_FREQ

    但是、我仍然无法在0至800rpm 的转速范围内旋转电机、它在800rpm 至10000rpm 的转速范围内工作正常、并且加速度更高。

    那么、如何获得更低的转速范围?

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

    无传感器 FOC 很难在如此宽的速度范围内以负载旋转电机、尤其是零速或极低的速度。 如果您需要以零速或接近零速运行电机、则必须使用有传感器 FOC。

    您可以使用不同的增益来调节低速和高速控制器。

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

    问题1.

    "您可以使用不同的增益来调节低速和高速控制器。"

    是的、通过这样做、它可以正常工作。

    但我不想为高速和低速范围定义不同的增益。

    Q2)

    "无传感器 FOC 很难在如此宽的速度范围内以负载旋转电机、尤其是零速或极低的速度。 如果您需要以零速或接近零速运行电机、则必须使用传感 FOC。"

    好的、您是指 Lab12b。?

    在有传感器 FOC 中、我能否同时获得速度和电流控制?

    问题3)  


    进行了比较

    参考文献编号:SPRUHJ1F


    因此、如果我增大较低的电压感应范围、我是否仅使用 Lab5b 获得较低的 rpm?

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

    问题1. 通常、在实际产品中、对低速和高速使用不同的增益是常见的解决方案。

    问题2. 无传感器和有传感器 FOC 都支持速度和电流闭环、唯一的区别是位置反馈。

    问题3. 是的、如果采样电压的分辨率足够好、这意味着速度更低、而不是零速度。

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

    "问题1. 通常情况下、对低速和高速使用不同的增益是实际产品中的常见解决方案。"


    是的、我已经观察到。

    "第三季度. 是的、如果采样电压的分辨率足够好、这意味着速度更低、而不是零速度。"


    否、不是零。最小值为300rpm。

    现在、通过增大电压感应范围、我还能够以更高的加速度实现400rpm 转速。 但在使用 Lab5b 时减速时遇到问题。

    因此、根据您的建议、我转到了传感实验室。 借助 Lab6a、我能够实现更高的加速度+减速以及低转速(测试10rpm)。  

    感谢 Yanming 的支持。