工具与软件:
亲爱的先生、我想问您一个问题、
我正在使用动力系统稳定器。 我需要获取不同变量的瞬态。 我将使用 TCM 模块、C2000数字控制库的瞬态捕捉模块 v3.4。
我能够获得瞬态值、但无法获得触发条件之前的值。 一旦给出触发条件、TCM 就会获取、但采集寄存器中的预触发值全部为零、此段是引线框。
我正在采集的信号值在触发条件前不是零值。
我想问您是否可以共享一个在触发条件之前和之后正确获取整个信号的示例、或者以正确的方式参数化 TCM。
这是我的采集代码:
extern s_log_f log_f = INI_LOG_F;
extern s_log_df log_df = INI_LOG_DF;
外部 FDLOG a_buf = FDLOG_DEFAULTS;
外部 TCM tcm1 = tcm_defaults;
extern FDLOG b_buf = FDLOG_DEFAULTS;
外部 TCM tcm2 = tcm_defaults;
外部 TCM_STATES TCM_STATE = TCM_IDLE;
EXTERN DCL_REFGEN Vgen = DCL_REFGEN_DEFAULTS;
外部 DCL_CSS Vgen_CSS = DCL_CSS_DEFAULTS;
EXTERN DCL_REFGEN Igen = DCL_REFGEN_DEFAULTS;
外部 DCL_CSS Igen_CSS = DCL_CSS_DEFAULTS;
// Inicialización ó n de generador de referencia
// Generador trifásico ó n de tensión ó n.
Vgen.css =&Vgen_Css;
DCL_SET_CONTROLLER_PERIOD (&Vgen、TS_DCL_Timer);
DCL_resetRefgen (&Vgen);
DCL_setRefgenMode (&Vgen、REFGEN_SINE3);
DCL_setRefgenFreq (&Vgen、Fred、0.0f);
DCL_setRefgenAmpl (&Vgen、amp_vCase、0.0f);
DCL_setRefgenRamp (&Vgen、0.0f、0.0f);
DCL_setRefgenClamp (&Vgen、2.0f、-2.0f);
// Generador trifásico ó n de corriente.
Igen.css =&Igen_Css;
DCL_SET_CONTROLLER_PERIOD (&I、TS_DCL_Timer);
DCL_resetRefgen (&I);
DCL_setRefgenMode (&I、REFGEN_SINE3);
DCL_setRefgenFreq (&Igen、Fred、0.0f);
DCL_setRefgenAmpl (&Igen、amp_iFase、0.0f);
DCL_setRefgenRamp (&Igen、0.0f、0.0f);
DCL_setRefgenClamp (&Igen、2.0f、-2.0f);
DCL_initLog (&a_buf、a_vector、tcm_data_length_a);
DCL_clearLog (&a_buf);
DCL_initLog (&B_buf、B_vector、TCM_DATA_LENGTH_B);
DCL_clearLog (&B_buf);
//初始化 TCM
TRIGGER_UP_A = 50.0f;
TRIGGER_DOWN_A = 49.0f;
DCL_initTCM (&tcm1、a_buf.fptr、tcm_data_length_A、25、trigger_down_A TRIGGER_UP_A);
DCL_armTCM (&tcm1);
TRIGGER_UP_B = 1e-3;
TRIGGER_DOWN_B = 0.5e-3;
DCL_initTCM (&tcm2、B_buf.fptr、TCM_DATA_LENGTH_B、25、TRIGGER_DOWN_B TRIGGER_UP_B);
DCL_armTCM (&tcm2);
/*
* A_ps.c Log_Signal_Control
*
创建时间: 2011年11月12日 2024年
*作者: juanm
*
* Rutina que adquiere saltos de frecuencia
*
*
*
*/
#include "B" Function_Declaration .h"
#pragma CODE_SECTION (Frecuency_log_function_A、".TI.ramfunc");
#pragma CODE_SECTION (F_PU_LOG_FUNCTION_A、".TI.ramfunc");
void Frecuency_log_function_A (s_log_f * ptr_A、DCL_REFGEN * ptr_B、TCM * ptr_C、TCM_States Estado)
{
静态 uint16_t index_3 = 0u;
静态 uint16_t ini_log = 0u;
if (ptr_a->start_log!= 0U)
{
if (ini_log == 0u)
{
// Actualización ó n de la frecuencia
DCL_setRefgenFreq (ptr_B、ptr_a->f_step、0.0f);
// Reseteo de Transient Capture Modelue
DCL_resetTCM (ptr_C);
DCL_armTCM (ptr_C);
INI_LOG = 1u;
}
//运行 TCM
//下采样
if (index_3 == 9)
{
DCL_runTCM (ptr_C、ptr_a->adq_signal);
INDEX_3 = 0;
}
INDEX_3++;
if (ptr_C->mode == TCM_COMPLETE)
{
ptr_a->start_log = 0u;
INI_LOG = 0u;
}
}
}
void f_pu_log_function_a (s_log_df * ptr_A、TCM * ptr_B、tcm_States Estado)
{
静态 uint16_t ini_log = 0u;
if (ptr_a->start_log!= 0U)
{
if (ini_log == 0u)
{
// Reseteo de Transient Capture Modelue
DCL_resetTCM (ptr_B);
DCL_armTCM (ptr_B);
INI_LOG = 1u;
}
//运行 TCM
DCL_runTCM (ptr_B、ptr_a->adq_signal);
if (ptr_B->mode == TCM_COMPLETE)
{
ptr_a->start_log = 0u;
INI_LOG = 0u;
}
}
}

谢谢。此致
Juanma