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.

[参考译文] TMS320F28377S:在 VFD 控制器中、输出电压与给定频率不匹配。

Guru**** 2580615 points
Other Parts Discussed in Thread: TMS320F28035, CONTROLSUITE, TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/648824/tms320f28377s-in-vfd-controller-output-voltage-is-not-matching-with-the-given-frequency

器件型号:TMS320F28377S
主题中讨论的其他器件:TMS320F28035controlSUITE

大家好、

     我将 TMS320F28377S micro_controller 用于三相感应电机的标量(V/f)控制。  我已经从 ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVACI_Scalar 中获取了参考代码、该代码在 TMS320F28035控制器上运行正常、只对  VHZ 宏中的电压/Hz 设置进行了相同的修改、即我设置了415V/50Hz。 我 尝试在 TMS320F28377S 中转储的代码相同,但我观察到 O/p 电压与给定的 I/p 频率不匹配。   
 我已经检查 了每个微控制器的输出、即 VHZ 微控制器、SVGEN 微控制 器的所有输出都按照计算值获取、仅 PWM 初始化中发生变化。 目前我没有使用任何外部跳闸区域来提供 PWM 保护。 如果我需要在 PWM 初始化中或在任何位置更改任何这一点、请提供建议。

空 InitEPwmUPDON (uint16 inV_PWM_NO、uint16 PWM_PERIOD_TICK)

   EALLOW;
   //设置 TBCLK
   (* ePWM[INV_PWM_no]).TBPRD = PWM_PERIOD_TICK;
   (* ePWM[INV_PWM_no]).TBPHS.bit.TBPHS = 0x0000;
   (* ePWM[INV_PWM_no]).TBCTR = 0x0000;

   //设置比较值
   //(* ePWM[inV_PWM_no]).cmpA.bit.cmpA = 10;
   //(* ePWM[INV_PWM_no]).CMPB.bit.CMPB = 10;

   //设置计数器模式
   (* ePWM[INV_PWM_no]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
   (* ePWM[INV_PWM_no]).TBCTL.bit.PHSEN = 0x1;             //pH_sens;
   (* ePWM[INV_PWM_no]).TBCTL.bit.HSPCLKDIV = TB_DIV1; //010 ->/4
   (* ePWM[INV_PWM_no]).TBCTL.bit.CLKDIV = TB_DIV1;    //001 -->/1
   (* ePWM[INV_PWM_no]).TBCTL.bit.FREE_SOFT = 0x2;
   (* ePWM[INV_PWM_no]).TBCTL.bit.PHSDIR = 0x1;
   (* ePWM[INV_PWM_no]).TBCTL.bit.SWFSYNC = 0x0;

   //设置隐藏
   (* ePWM[INV_PWM_no]).cmPCTL.bit.SHDWAMODE = CC_SHADOW;
   (* ePWM[INV_PWM_no]).cmPCTL.bit.SHDWBMODE = CC_SHADOW;
   (* ePWM[INV_PWM_no]).cmPCTL.bit.LOADAMODE = CC_CTR_ZERO;
   (* ePWM[INV_PWM_no]).cmPCTL.bit.LOADBMODE = CC_CTR_ZERO;

   //设置操作
   (* ePWM[INV_PWM_no]).AQCTLA.bit.CAU = AQ_CLEAR;    // CTR = CMPA@UP,设置为1
   (* ePWM[inV_PWM_no]).AQCTLA.bit.CAD = AQ_SET;      // CTR = CMPA@DOWN、togleAQ_CLEAR
//   (* ePWM[inV_PWM_no]).AQCTLB.bit.CBU = AQ_SET;
//   (* ePWM[inV_PWM_no]).AQCTLB.bit.CBD = AQ_CLEAR;

   (* ePWM[INV_PWM_no]).TBCTL.bit.PRDLD = TB_IMMETIATE;//TB_SHADOW;

   //高电平有效互补 PWM -设置死区
   (* ePWM[INV_PWM_no]).DBCTL.bit.IN_MODE = DBA_ALL;
   (* ePWM[INV_PWM_no]).DBCTL.bit.out_mode = DB_full_enable;
   (* ePWM[INV_PWM_no]).DBCTL.bit.POLSEL = DB_ACTV_HIC;
   (* ePWM[INV_PWM_no]).DBRED.bit.DBRED = 1000;
   (* ePWM[INV_PWM_no]).DBFED.bit.DBFED = 1000;

   (* ePWM[INV_PWM_no]).TBCTL.bit.SYNCOSEL = 0x00; //SYn_SEL; //

   (* ePWM[INV_PWM_no]).PCCTL.ALL = 0x0000;

   (* ePWM[INV_PWM_no]).TZSEL.ALL = 0x0000;

 //todo
   (* ePWM[INV_PWM_no]).ETSEL.bit.INTSEL = et_CTR_ZERO;//选择"INT on Zero (零事件时的 INT)"
   (* ePWM[INV_PWM_no]).ETSEL.bit.INTEN = 1;        //启用 INT
   (* ePWM[INV_PWM_no]).ETPS.bit.INTPRD= et_1st;//在发生第一个事件时生成 INT
   (* ePWM[INV_PWM_no]).ETCLR.bit.INT = 1;
   EDIS;

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上问题是在 h/w 中,它已经解决了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Datta、

    很高兴听到您解决了问题、并感谢您告知我们。

    此致、