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.

[参考译文] CCS/TMDSSOLARUINVKIT:TMDSSOLARUINVKI、#F28035、#SFRA

Guru**** 2587345 points
Other Parts Discussed in Thread: SFRA, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/801875/ccs-tmdssolaruinvkit-tmdssolaruinvki-f28035-sfra

器件型号:TMDSSOLARUINVKIT
Thread 中讨论的其他器件: SFRAcontrolSUITE

工具/软件:Code Composer Studio

我有一个 TMDSSOLARUINVKIT、我尝试添加不带 GUI 的 SFRA 以进行投影。 但我有一个问题
构建目标:"SolarMicroInv_F2803x.Out"
调用:C2000链接器
"C:/ti/ccs901/ccs/tools/compiler/ti-cgt-c2000_18.1.5.LTS/bin/cl2000 "  
-v28 -ml -mt ---cla_support=cla0 --float_support=softlib -O4 -opt_for_speed=2 --advice:performance=all  
--define=_debug --define=flash --define=larg_model -g --diag_warning=225 -z -m"SolarMicroInv_F2803x.map"  
--stack_size=0x380 -warn_sections -i"C:/ti/controlSUITE/libs/app_libs/SFRA/v1_10_00_00/IQ/lib
 -i"C:/ti/ccs901/ccs/tools/compiler/ti-cgt-c2000_18.1.5.LTS/lib  
 -i"C:/ti/ccs901/ccs/tools/compiler/ti-cgt-c2000_18.1.5.LTS/include --priority --reread_libs  
 -xml_link_info="SolarMicroInv_F2803x_linkInfo.xml"--rom_model -o "SolarMicroInv_F2803x.out"  
 "C:/ti/controlSUITE/libs/app_libs/solar/v1.2/IQ/lib/Solar_Lib_IQ.lib "  
 "C:/ti/controlSUITE/libs/math/IQmath/v160/lib/IQmath.lib "../F28035_FLASH_SolarMicroInv.CMD"
 "./adc_SOC_Cnf.obj""./DSP2803x_CodeStartBranch.obj""./DSP2803x_CpuTimers.obj""./DSP2803x_GlobalVariableDefs.obj"
 "../DSP2803x_usDelay.obj"../pwm_1ch_UpDwnCnt_Cnf.obj"../pwm_MicroInvLineClamp_Cnf.obj"../CommScisGui_320.obj"  
 "./SolarMicroInv-DevInit_F2803x.obj""./SolarMicroInv-Main.obj"  
 "C:/ti/controlSUITE/device_support/f2803x/v126/DSP2803x_headers/cmd/DSP2803x_Headers_nonBIOS.cmd "
 "C:/ti/controlSUITE/device_support/f2803x/v126/DSP2803x_common/lib/SFO_TI_Build_V6b.lib "  
 -l"C:/ti/controlSUITE/libs/app_libs/SFRA/v1_10_00_00/IQ/lib/SFRA_IQ_Lib.lib  
 l"C:/ti/controlSUITE/libs/utilities/flash_api/2803x/v100/lib/rts2800_ml.lib -llibc.a  
>>./SFRA_IQ_init.c、第68行:内部错误:与 UMULT 不匹配
 
 
这可能是一个严重的问题。  请使用与客户支持联系
此问题的说明以及导致此问题的源文件示例
出现内部错误消息。
 
无法继续编译-中止!
 
 
>>编译失败
 
>>编译失败
 
>>编译失败
Makefile:155:目标'olarMicroInv_F2803x.Out'的配方失败
致命错误:链接时优化失败
Gmake:***[SolarMicroInv_F2803x.Out]错误1.
gmake:目标"全部"不会由于错误而重新生成。
****构建完成****
当、我在    第3.4章中添加了来自 www.ti.com/lit/ug/spruhz5a/spruhz5a.pdf 的 SFRA 代码  
 
1、 在 SolarMicroInv_F2803x 文件的 SolarMicroInv-Main.c 上#include "SFRA_IQ_include.h"
1.2将链接 SFRA 库:(SFRA_IQ_Lib.lib)添加到项目中,SFRA 库位于:   
   controlSUITE\development\libs\app_libs\SFRA\include  
1.3添加 C2000链接器的链接部分:(SFRA_IQ_Lib.lib)由 SFRA 库提供,位于:   
   ..\controlSUITE\development\libs\app_libs\SFRA\v1_10_00_00\SFRA_IQ\lib   
1.4通过 SFRA lib 添加 C2000链接器的链接部分:(rts2800_ml.lib)位于:   
   ..\controlSUITE\libs\utilities\flash_api\2803x\v100\lib\rts2800_ml.lib   
2.在 SolarMicroInv_F2803x 文件的 SolarMicroInv-Main.c 中创建和添加模块结构
#define SFRA_ISR_FREQ 200000
#define SFRA_FREQ_START 100
#define SFRA_FREQ_LENGTH 100
//SFRA 阶跃^= 10 μ s (1/每十倍频程的阶跃数(40))
#define FREQ_STEP_乘 法(浮点) 1.059253
在 SolarMicroInv-Main.c 中声明 FRA 数据存储阵列
// SFRA 库对象
SFRA_IQ SFRA1;
// SFRA 变量
int32 Plant_MagVect[SFRA_FREQ_LENGTH];
int32 Plant_PhaseVect[SFRA_FREQ_LENGTH];
int32 OL_MagVect[SFRA_FREQ_LENGTH];
int32 OL_PhaseVect[SFRA_FREQ_LENGTH];
float32 FreqVect[SFRA_FREQ_LENGTH];
//用于重新初始化 SFRA 变量的标志
Int16初始化标志;
//extern 访问 ROM 中的表
extern long IQsincTable[];
4.在 SolarMicroInv-Main.c 中初始化模块
//在此处执行 SFRA 对象初始化
  //SFRA 对象初始化
  //指定注入振幅
  SFRA1.RANGE=_IQ26 (0.01);
  //指定 SFRA 的长度
  SFRA1.Vec_Length = SFRA_FREQ_LENGTH;
  //指定 SFRA ISR 频率
  SFRA1.ISR_Freq=SFRA_ISR_FREQ;
  //指定 SFRA 分析的起始频率
  SFRA1.Freq_Start=SFRA_FREQ_START;
  //指定频率阶跃
  SFRA1.Freq_Step=FREQ_STEP_M倍增;
  //将数组位置分配给 SFRA 对象中的指针
  SFRA1.FreqVect=FreqVect;
  SFRA1.GH_MagVect=OL_MagVect;
  SFRA1.GH_PhaseVect=OL_PhaseVect;
  SFRA1.H_MagVect=Plant_MagVect;
  SFRA1.H_PhaseVect=Plant_PhaseVect;
  初始化标志= 0;
  /****测试:尝试在扫描****之前导致 SFRA_IQ 初始化
  SFRA_IQ_init (&SFRA1);
5.使用模块
if (CloseIloopInv=1)
  {
    cntlpi_BusInv.Ref  = Bus_Vol_Note.out;
    cntlpi_BusInv.FBK  =inV_bus_ref;
    CNTL_PI_IQ_MACRO (CNTL_PI_BusInv)
    Inv_ISET=cntlpi_BusInv.out;
    Inv_ref_cur_inst=_IQ24mpy (inV_ISET、InvSine);
    cntl3p3z_invi_vars.Ref=SFRA_IQ_Inject (inV_ref_cur_insts);
    cntl3p3z_invi_vars.fdbk=inv_meas cur_inst;
    CNTL_3P3Z_IQ_asm (&cntl3p3z_invi_coeff、&cntl3p3z_invi_vars);
    Duty_inv_pu=_IQ24div (((cntl3p3z_invi_vars.out+inv_meas _vol_inst)、vbu_meas _insts);
    Duty_inv_pu =(Duty_inv_pu>_iq24 (1.0))?_iq24 (1.0):Duty_inv_pu;
    Duty_inV_pu=(Duty_inV_pu<_iq24 (-1.0))?_iq24 (-1.0):Duty_inV_pu;
    SFRA_IQ_collect (&cntl3p3z_invi_vars.out、&cntl3p3z_invi_vars.Fdbk);
  }
#endif //(INCR_BUILD = 3)
6.后台任务:在缓慢任务中调用后台函数:  
空 A1 (空)
//----------------------------------------
  if (PVInverterState_Old!= PVInverterState)
  {
    开关(PVInverterState)
    {
    空闲情况: strcpy (CPV_STATE、"空闲");
        中断;
    Case CheckGrid:strcpy (CPV_State、"CheckGrid");
          中断;
    案例 CheckPV:  strcpy (CPV_State、"CheckPV");
          中断;
    案例监控 DCBus: strcpy (CPV_State、"MonitorDCBus");
          中断;
    Case EnableMPPT:  strcpy (CPV_State、"EnableMPPT");
          中断;
    案例 PVInverterActive: strcpy (CPV_State、"PVInverterActive");
          中断;
    案例 ResetState1:  strcpy (CPV_State、"ResetState1");
          中断;
    案例 ResetState2:  strcpy (CPV_State、"ResetState2");
          中断;
    情况 FaultState:if (FaultFlag==OverVoltageDCBus)
              strcpy (CPV_State、"FaultState:DC 总线过压");
            否则(FaultFlag==UnderVoltageDCBus)
              strcpy (CPV_State、"FaultState:DC Bus under Voltage");
            如果(FaultFlag==OverVoltageGrid)则为其他
              strcpy (CPV_State、"FaultState:过压电网");
            否则(FaultFlag==UnderVoltageGrid)
              strcpy (CPV_State、"FaultState:欠压电网");
            否则、如果(FaultFlag==OverCurrentFlag)
              strcpy (CPV_State、"FaultState:电网电流过");
            其他
              strcpy (CPV_State、"FaultState");
          中断;
    }
  }
  PVInverterState_Old = PVInverterState;
  if (PVInverterState=Idle)
    Gui_GridFreq=ACFreq<<16;
  其他
    Gui_GridFreq=(long)(spll2.fo)>>3;
  SFRA_IQ_background (&SFRA1);
  //--------
  //下次 CpuTimer0 'counter'达到周期值时转到 A2
  A_Task_ptr =&A2;
  //--------
7.Linker 命令文件更改(*。CMD):
 第0页:
  RAML3  :origin = 0x009000,length = 0x001000   // RAM (L3)*/
>>
  RAML3  :origin = 0x008000、length = 0x002000   // RAM (L0-L3)*/
--------------------------------------------------
 第1页:
添加 dataRAM1:origin = 0x009000,length = 0x001000  //片上 RAM 块 L3 */
--------------------------------------------------
部分:
  。
  ramfuncs      :LOAD = FLASHD,  
            运行= RAML3、
            load_start (_RamfuncsLoadStart)、
            load_end (_RamfuncsLoadEnd)、
            run_start (_RamfuncsRunStart)、
            PAGE = 0
  {
  --library=Solar_Lib_IQ.lib
  --library=Solar_Lib_IQ.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  }
 添加 SFRA 库
ramfuncs      :LOAD = FLASHD,  
            运行= RAML3、
            load_start (_RamfuncsLoadStart)、
            load_end (_RamfuncsLoadEnd)、
            run_start (_RamfuncsRunStart)、
            PAGE = 0
  {
  --library=Solar_Lib_IQ.lib
  --library=Solar_Lib_IQ.lib
  --library=Solar_Lib_IQ.lib
  --library=SFRA_IQ_Lib.lib
  --library=SFRA_IQ_Lib.lib
  --library=SFRA_IQ_Lib.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  --library=IQmath.lib
  }
----------------------------------------
/*添加*/
(笑声)  
DataRAM:>dataRAM1,page = 1.
SFRA_IQ_Data:> dataRAM1,page = 1.
----------------------------------------
/*添加*/
(笑声)
SFRA_Data:> dataRAM1,align = 64,page=1
CNTL_COEFF_RAM:> DataRAM,page=1
CNTL_var_RAM:> RAMM1,page =1
----------------------------------------
感谢您的所有建议。

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

    您的帖子已分配给专家、专家将回复您。

    在另一个注释中,如果您在帖子中插入代码片段,请始终使用“Syntax Highlighter”选项进行粘贴。 这使得代码更易于阅读。

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

    感谢您记录错误的显示方式。  但是、有一种更好的方法更有可能让我重现问题。  请按照文章 "共享项目"中的说明压缩项目、然后将其附加到您的下一篇文章中。

    谢谢、此致、

    乔治

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

    e2e.ti.com/.../SolarMicroInv_5F00_F2803x.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您@George Mock 的建议、我已经将文件上传到社区
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提交测试案例。  我可以重现相同的结果。  我在 SDOWP 系统中提交了条目 CodeGen-6276以进行调查。  欢迎您在我的签名中使用下面的 SDOWP 链接进行访问。

    谢谢、此致、

    乔治