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.

[参考译文] TMS320F28054M:仅 instaSPIN FAST 估算器 ROM 函数返回垃圾

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/903000/tms320f28054m-instaspin-only-fast-estimator-rom-functions-returning-garbage

器件型号:TMS320F28054M
主题中讨论的其他器件:MOTORWARETMS320F28051

背景:我正在尝试使用 TI 提供的不同无传感器控制方案、方法是将它们整合到有传感器 PMSM FOC 项目中。 尤其是滑动模式观察器(SMO)和 instaSPIN。 我们有自己的控制环路并使用各种 motorware 宏。 因此、对于 instaSPIN、lab11a 中使用的最小实施方案最适合我们。 即仅使用 FAST 观测器。

我正在尝试让 FAST 观测器提供角度测量。 我是否在初始化或利用率方面缺少某些内容? 我遇到的具体问题如下:

  • EST_getState (estHandle)正在返回0x039C (924)、以下函数不影响其返回值
    • EST_updateState (estHandle、0);
    • EST_setupEstIdleState (estHandle);
  • EST_run (estHandle) 和随附 的 EST_getAngle_pu (estHandle) 不会返回有效信号。 我得到的值介于 IQ(-1.0)和 IQ(1.0)之间,但值应该是 IQ(0.0)到 IQ(1.0)。  考虑到以上问题,我并不感到意外。 下图显示了编码器和观测器在600rpm 电机转速下以800MHz 采样时的电气 θ 对比情况。 无论速度如何、FAST 观测器信号都是相似的。


作为参考、这里是我以相同的比例传递到 EST_run ()的 pu 电压和电流 alpha/betas。 当然、我还有一些噪音问题有待解决、但我怀疑这是问题所在。


我们的旧设计使用 TMS320F28051 MCU。 TMS320F28054M MCU 来自不同的电路板、并通过手工焊接到我们的电机驱动板上。 安全 ROM 部分是否可能损坏? 有没有办法让我检查?

我以 instaSPIN 实验11a 为例。 但是、由于 F2805xF/M 不存在11a 示例、我选择了使用相同 instaSPIN 版本:1.7的 F2802xF 示例。 当然、我使用的是5倍地址和链接器信息。 与 实验10e 中生成的.map 文件相比,我已经验证了我的映射文件的 EST_*符号和地址是否匹配。 (我选择10e 是因为它使用了一些相同的函数并使用5x MCU)

下面是一些相关的代码片段:

#define USER_IQ_FULL_SCALE_VOLTAGE_V (1500) //~




@3x ADC 电压满量程#define USER_ADC_FULL_SCALE_VOLTAGE_V (422.623)// 3.3V *((1.33kOams + 169kOams)/1.33kOams)#define USER_IQ_FULL_SCALE_CURRENT_A (68.1818)// 10.0示例 for drv8312_HVd + 18kOams (rv18)/v/#define USER_RAME_RACK_REV18kHz

)/#define UFF_RACK_REV18kHz /#define CURRENT_RACK_MODE_RATION/#v18 (v18)/v18 (r18n_RAT_RAV18kHz
//电压 Clarke 宏(偏移已被取出)
clarkeFastV.as =_IQmpy (_IQ12toIQ (ADCRESULTREG[UV_SNS_AD])、_IQ (USER_VOLTAGE_SF);
clarkeFastV.B =_IQmpy (_IQSN12toIQ (ADCRESULTREG[V_VOLT_SF_AD_V])、_CLKESFAV_VR_AD_US_V_AD_AD_V[V]
(_FAV_V_V_FAV])、_FAV_ADCREF_AD_V_AD_V_V_V_V_AD_V_AD _iq (USER_VOLTAGE_SF);
CLARKE2_MACRO (clarkeFastV)

//当前 Clarke 宏
clarkeFastI.as =_IQult (_IQ12toIQ (AdcResult.IQAD_RAW)-offsetA、_IQ (USER_CURRENT_SF));
clarkeFastI.Iq =_IQ12mpy (_Iq (_Adcron_Iq
);_Resmpy_Iq (_Iq (_Iq1) _iq (USER_CURRENT_SF));
CLARKE2_MACRO (clarkeFastI)

//将 alpha/Betas 放入快速调用 MATH_vec2
voltVec、curVec 的格式;
voltVec.value[0]= clarkeFastV.Alpha;
clarkeVec.value[1]= volkeV.Beta;voltFastv.Beta
= 0[volkeVec.alec;volv.step.alec = clarkeVec.alec;volv.alec = clarkeVec.step
curVec.value[1]= clarkeFastI.Beta;

EST_run (estHandle、&curVec、&voltVec、DCBus_pu、 speed_pu);
//...
}

#define USER_EST_Handle_address 0x8000// EST 结构的 RAM 地址(特定于处理器)
void SMO_init (void)
{
estHandle = EST_init (((void*) USER_EST_Handle_address、0x200);

USER_setParams (&userParams);
EST_setEstParams (estHandle、&userParams);
EST_setupEstIdleState (estHandle);

EST_setFlag_enableRsRecalc (estHandle、false);//禁用定子电阻计算
EST_setFlag_enableRsOnLine (estHandle、false);
EST_setFlag_updateRs (estHandle、false);

0.0_setAngle_pu (estHandle、Iq);//将角度初始化为0

EST_updateState (estHandle、0);
USER_checkForErrors (&userParams);
} 

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

    1.确保   在 IQmathLib.h 中将 global_Q 定义为24

    2.在电压检测电路上添加滤波电容、以确保电压滤波器极点值(USER_VOLTGE_FILTER_POLE_Hz)介于300.0和1000.0Hz 之间。

    或者、您也可以将 lab02b 和 lab05b 迁移到自己的电路板、以识别和运行电机、从而验证硬件和相关设置是否正确、以便使用 InstaSPIN-FOC 旋转电机。

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

    您好、Yanming、感谢您的回复、

    1. 在 IQmathLib.h 中、GLOBAL_Q 确实定义为24
    2. USER_VOLTGE_FILTER_POLE_Hz 被保留为示例值、但在将其修改到电路板上后、我们的新值为  365.476。
      1. 这是仍使用采样板值的最后一个值、所有其他值均已更新

    第1点或第2点均未解决问题。 我将尝试您建议的实验2b 和5b、并相应地更新该主题。

    尽管如此、安全 ROM 调用返回的值仍超出其记录的范围、这似乎很奇怪。

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

    您好、Matt、

    如果您在自己的电路板上运行 lab02b 或 lab05b、是否有任何更新?  

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

    只是想检查一下您是否有任何更新,我在大约两周内没有听到您的声音,因此我假设您能够解决您的问题。 如果您有任何疑问、请告诉我。 如果没有任何其他问题、我们将关闭此主题。 谢谢。