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.8027万F:如何使用instaSPIN检索瞬时电流读数

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/574424/tms320f28027f-how-to-retrieve-the-instantaneous-current-reading-with-instaspin

部件号:TMS320F2.8027万F

我的客户正在尝试确定电机连接是否缺少相位。 其°是比较所有三个电流的读数,计算120 μ A相移,并确定它们之间的正常差值。 如果该差异大于预期值,则缺少一个相位。 问题是:要监控的变量是什么?  是否在结构 _CTRL_Obj_中为idq_in?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最好使用相电流通过gAdcData.i.检查相位是否缺少连接 客户可以使用电机速度频率计算gAdcData.i.绝对值的总和。 如果相电流总和小于阈值,则表示连接缺失。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    延明

    我玩了不同的电流读数,包括gAdcData.i,但无法得出任何结论。 我尝试了求和,比较和峰值。 我们是否有检测电机中缺失相位的经验? 如果是,您是否可以共享代码示例?

    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅以下代码,了解简单的失相检测,定义全局变量,然后在ISR中运行这些代码。

    gMotorVars.IadcSum[0]+=(_IQabs(gAdcData.I.Value[0])>3); // gAdcData.i. value[n]不带偏移,因此值为_IQN (-IQN 1.0)到_IQN (1.0)
    gMotorVars.IadcSum[1]+=(_IQabs(gAdcData.I.Value[1])>3);
    gMotorVars.IadcSum[2]+=(_IQabs(gAdcData.I.Value[2])>>3);

    gMotorVars.IadcCount++;

    IF (gMotorVars.IadcCount > 4096) //为不同的运行频率设置正确的

    gMotorVars.IadcCount = 0;

    gMotorVars.IadcAvg[0]=(gAdcData.I.Value[0])+ gMotorVars.IadcSum[0])>1;
    gMotorVars.IadcSum[0]=0;

    gMotorVars.IadcAvg[1]=(gMotorVars.IadcAvg[1]+ gMotorVars.IadcSum[1])>1;
    gMotorVars.IadcSum[1]=0;

    gMotorVars.IadcAvg[2]=(gMotorVars.IadcAvg[2]+ gMotorVars.IadcSum[2])>1;
    gMotorVars.IadcSum[2]=0;
    }

    IF((gMotorVars.IadcAvg[0]< gMotorSets.IrmsLostPhaseSet)
    ||(gMotorVars.IadcAvg[1]< gMotorSets.IrmsLostPhaseSet)
    ||(gMotorVars.IadcAvg[2]< gMotorSets.IrmsLostPhaseSet)

    IF (gMotorVars.PhaseLostFaultTimeCnt > gMotorSets.PhaseLostSet) // 1000ms/1s

    gMotorVars.FaultFlagNow.bit.MotorLostPhase = 1;
    }
    否则
    gMotorVars.PhaseLostFaultTimeCnt+;
    }
    否则,如果(gMotorVars.PhaseLostFaultTimeCnt >2)
    gMotorVars.PhaseLostFaultTimeCnt -=2;
    否则
    gMotorVars.PhaseLostFaultTimeCnt = 0;