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.

[参考译文] C2000WARE:功率因数对逆变器直流电流检测的影响。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465970/c2000ware-effect-of-power-factor-in-the-dc-current-sensing-of-the-inverter

器件型号:C2000WARE

工具与软件:

尊敬的论坛:

这是一个有趣的观察发现。 请参与讨论以确定是否有效?

如果一个逆变器在驱动低功率因数感应电机、为什么逆变器的直流电流存在错误?

为什么只有低功率因数感应电机才会发生该错误?"

逆变器的功率因数和直流电流检测之间的关系是什么。  

如何在不考虑功率因数的情况下实现准确的直流电流检测。 (控制算法只是开环 V/f 控制)  

注意:调节和感应过程正确。 因此、在相同功率和频率下运行的高功率因数电机不会出现问题。

谢谢你

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

    您好!

    [报价用户 id="579115" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465970/c2000ware-effect-of-power-factor-in-the-dc-current-sensing-of-the-inverter "]

    如果一个逆变器在驱动低功率因数感应电机、为什么逆变器的直流电流存在错误?

    为什么只有低功率因数感应电机才会发生该错误?"

    逆变器的功率因数和直流电流检测之间的关系是什么。  

    [报价]

    您指的是什么直流电流检测? 您是指轻负载运行感应电机时电机相电流感应中的误差增加? 或别的什么东西吗?

    此致!

    Kevin

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

    是的、我是指感应电机以轻负载运行时、直流电流感应的误差增加。

    借助-ve 直流母线线路中的电阻器执行直流电流检测。 我们还将使用三相分流器+直流分流器。

      

    ADC 设置

    //为 M1配置 SOC
    // Isen_a_m1.
    ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN4、
    MTR1_ADC_I_SAMPLEWINDOW);

    //配置 PPB 以消除减法相关计算
    // PPB 与 ADCA_SOC0关联
    ADC_setupPPB (ADCC_BASE、MTR1_IU_ADC_PPB_NUM、ADC_SOC_NUMBER0);

    //暂时将零写入此值、直到偏移校准完成
    ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IU_ADC_PPB_NUM、0);

    // Isen_B_M1
    ADC_setupSOC (ADCC_BASE、ADC_SOC_number1、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN0、
    MTR1_ADC_I_SAMPLEWINDOW);

    //配置 PPB 以消除减法相关计算
    // PPB 与 ADCC_SOC0相关联
    ADC_setupPPB (ADCC_BASE、MTR1_IV_ADC_PPB_NUM、ADC_SOC_Number1);

    //暂时将零写入此值、直到偏移校准完成
    ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IV_ADC_PPB_NUM、0);

    // Isen_C_M1
    ADC_setupSOC (ADCC_BASE、ADC_SOC_number2、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN2、
    MTR1_ADC_I_SAMPLEWINDOW);

    //配置 PPB 以消除减法相关计算
    // PPB 与 ADCA_SOC0关联
    ADC_setupPPB (ADCC_BASE、MTR1_IW_ADC_PPB_NUM、ADC_SOC_Number2);

    //暂时将零写入此值、直到偏移校准完成
    ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IW_ADC_PPB_NUM、0);

    // VSEN_A_M1
    ADC_setupSOC (ADCA_BASE、ADC_SOC_Number3、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN6、
    MTR1_ADC_V_SAMPLEWINDOW);

    // VSEN_B_M1
    ADC_setupSOC (ADCC_BASE、ADC_SOC_Number4、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN6、
    MTR1_ADC_V_SAMPLEWINDOW);

    // VSEN_C_M1
    ADC_setupSOC (ADCC_BASE、ADC_SOC_Number5、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN5、
    MTR1_ADC_V_SAMPLEWINDOW);

    // VSEN_DCBus_M1-->Trigg Interrupt
    ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER6、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN2、
    MTR1_ADC_V_SAMPLEWINDOW);

    // IDC
    ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER7、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN1、MTR1_ADC_I_SAMPLEWINDOW)

    //配置 PPB 以消除减法相关计算
    // PPB 与 ADCA_SOC0关联
    ADC_setupPPB (ADCA_BASE、MTR1_IW_ADC_PPB_NUM、ADC_SOC_NUMBER7);

    //暂时将零写入此值、直到偏移校准完成
    ADC_setPPBCalibrationOffset (ADCA_BASE、MTR1_IW_ADC_PPB_NUM、0);

    // VOT
    ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER8、ADC_TRIGGER_EPWM1_SOCA
    ADC_CH_ADCIN0、MTR1_ADC_V_SAMPLEWINDOW)
    //配置中断源
    //电机1中断
    ADC_setInterruptSource (ADCA_BASE、ADC_INT_number1、ADC_SOC_NUMBER8);

    定义

    #define MTR1_ADC_TRIGGER_SOC ADC_TRIGGER_EPWM1_SOCA // EPWM1_SOCA

    #define MTR1_ADC_I_SAMPLEWINDOW 14.
    #define MTR1_ADC_V_SAMPLEWINDOW 20.

    #define MTR1_IU_ADC_BASE ADCA_BASE // ADCA-A1*/CMP1
    #define MTR1_IV_ADC_BASE ADCC_BASE // ADCC-A9/C8*/CMP2
    #define MTR1_IW_ADC_BASE ADCC_BASE // ADCC-A5/C2*/CMP3

    #define MTR1_IU_ADCRES_BASE ADCARESULT_BASE // ADCA-A1*
    #define MTR1_IV_ADCRES_BASE ADCCRESULT_BASE // ADCC-A9/C8*
    #define MTR1_IW_ADCRES_BASE ADCCRESULT_BASE // ADCC-A5/C2*

    #define MTR1_IU_ADC_CH_NUM ADC_CH_ADCIN1 // ADCA-A1*
    #define MTR1_IV_ADC_CH_NUM ADC_CH_ADCIN8 // ADCC-A9/C8*
    #define MTR1_IW_ADC_CH_NUM ADC_CH_ADCIN2 // ADCC-A5/C2*

    #define MTR1_IU_ADC_SOC_NUM ADC_SOC_NOUber1 // ADCA-A1*-SOC1-PPB1
    #define MTR1_IV_ADC_SOC_NUM ADC_SOC_NUMBER1 // ADCC-A9/C8*-SOC1-PPB1
    #define MTR1_IW_ADC_SOC_NUM ADC_SOC_NUMBER2 // ADCC-A5/C2*-SOC2-PPB2

    #define MTR1_IU_ADC_PPB_NUM ADC_PPB_NUMBER1 // ADCA-A1*-SOC1-PPB1
    #define MTR1_IV_ADC_PPB_NUM ADC_PPB_NUMBER2 // ADCC-A9/C8*-SOC2-PPB1
    #define MTR1_IW_ADC_PPB_NUM ADC_PPB_Number3 // ADCC-A5/C2*- SOC3-PPB2

    #define MTR1_CMPSS_U_BASE CMPSS1_BASE
    #define MTR1_CMPSS_V_BASE CMPSSLITE2_BASE
    #define MTR1_CMPSS_W_BASE CMPSSLITE3_BASE

    #define MTR1_IU_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_1 // CMPSS1H-A1*
    #define MTR1_IU_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_1 // CMPSS1L-A1*

    #define MTR1_IV_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_2 // CMPSS2H-A9/C8*
    #define MTR1_IV_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_2 // CMPSS2L-A9/C8*

    #define MTR1_IW_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_3 // CMPSS3H-A5/C2*
    #define MTR1_IW_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_3 // CMPSS3L-A5/C2*

    #define MTR1_IU_CMPHP_MUX 4 // CMPSS1H-A1*
    #define MTR1_IU_CMPLP_MUX 4 // CMPSS1L-A1*

    #define MTR1_IV_CMPHP_MUX 2 // CMPSS2H-A9/C8*
    #define MTR1_IV_CMPLP_MUX 2 // CMPSS2L-A9/C8*

    #define MTR1_IW_CMPHP_MUX 1 // CMPSS3H-A5/C2*
    #define MTR1_IW_CMPLP_MUX 1 // CMPSS3L-A5/C2*

    #define MTR1_IU_XBAR_EPWM_MUX XBAR_EPWM_MUX00_CMPSS1_CTRIPH_OR_L // CMPSS1-HP&LP、A1*
    #define MTR1_IV_XBAR_EPWM_MUX XBAR_EPWM_MUX02_CMPSS2_CTRIPH_OR_L // CMPSS2-HP&LP、A9/C8*
    #define MTR1_IW_XBAR_EPWM_MUX XBAR_EPWM_MUX04_CMPSS3_CTRIPH_OR_L // CMPSS3-HP&LP、A5/C2*

    #define MTR1_IU_XBAR_MUX XBAR_MUX00 // CMPSS1-HP&LP
    #define MTR1_IV_XBAR_MUX XBAR_MUX02 // CMPSS2-HP&LP
    #define MTR1_IW_XBAR_MUX XBAR_MUX04 // CMPSS3-HP&LP

    在 EPWM 中断时读取 adcdata  

    float32_t 值;

    //转换 A 相电流
    value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IU_ADC_PPB_NUM);
    pADCData->I_A.value[0]= value * pADCData->current_sf;

    //转换 B 相电流
    value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IV_ADC_PPB_NUM);
    pADCData->I_A.value[1]= value * pADCData->current_sf;

    //转换 C 相电流
    value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IW_ADC_PPB_NUM);
    pADCData->I_A.value[2]= value * pADCData->current_sf;

    //转换 A 相电压
    value =(float32_t) ADC_readResult (ADCARESULT_BASE、ADC_SOC_Number3);
    pADCData->V_V.value[0]= value * pADCData->voltage_sf;

    //转换 B 相电压
    value =(float32_t) ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number4);
    pADCData->V_V.value[1]= value * pADCData->voltage_sf;

    //转换 C 相电压
    value =(float32_t) ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number5);
    pADCData->V_V.value[2]= value * pADCData->voltage_sf;

    //转换直流母线电压
    value =(float32_t) ADC_readResult (ADCARESULT_BASE、ADC_SOC_NUMBER6);
    pADCData->DCBus_V = value * pADCData->dcBusvoltage_sf;

    //转换 C 相电流
    value =(float32_t) ADC_readPPBResult (ADCARESULT_BASE、MTR1_IW_ADC_PPB_NUM);
    value = HAL_movingAvg (value、&SMA_dci);//为获得更好的稳定性、使用简单移动平均值而不是 EMA

     pADCDdata->DCBus_I =值* 0.0064453125;

    注意:调节正确。 因为 PMSM 与 IM 加载电流是匹配的。 仅在轻负载或具有低功率因数工作区域的 IM 情况下考虑。 它面临感应到的直流电流误差问题。

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

    您好!

    好的、我看到了。  直流电流检测全部是三相电流组合(如单分流检测)。

    您的常规三相电流检测信号上是否也出现误差? 还是仅使用直流并联电 流感应? 您也如何测量误差?

    您是否在 有一些负载的情况下测试低功率因数感应电机? 或空载? 如果还没有、可以尝试设置一些负载吗?

    此致!

    Kevin

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

    您好!

    有。 我们也在三相电流中检测误差。 仅限1-3%。 误差不大。

    我们要测量的反馈值(以4kHz 的速率对400个样本执行 RMS 测试)与通过钳位表测量的电流之间的误差。 (测量设备是一个体面的设备、只有福禄克钳表、也可使用不同的功率计进行熔化验证)

    从我们的观察结果可以看出、检测到的直流电流误差仅为200%左右。 此外、仅在空载条件下观察到误差。 我们也使用不同的感应电机进行了测试、电机的功率因数范围为0.1-0.3。 空载情况下只会观察到该误差。

    与开关频率、死区、样本一起播放。未观察到改进。

    谢谢