TI的工程师,你好:
我现在在用280049C这颗芯片做电机控制,发现一个异常现象,停机时刻有时候会触发TZ_OST的故障,本身软件的TZ保护配置了三个,一共两种(外部的TZ输入,内部的TZ_CBC6,内部的比较器输出触发的DC时间),我现在将外部的TZ口上拉,软件内部屏蔽掉该TZ口和TZ_CBC6的功能配置,还是会出现TZ触发的情况(比较器事件并未产生,我做过故意触发DC事件,输出标志位会是两个,一个是OST,另一个是event),已经搞了好几天了,没有头绪,希望给个解析思路,谢谢。
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.
TI的工程师,你好:
我现在在用280049C这颗芯片做电机控制,发现一个异常现象,停机时刻有时候会触发TZ_OST的故障,本身软件的TZ保护配置了三个,一共两种(外部的TZ输入,内部的TZ_CBC6,内部的比较器输出触发的DC时间),我现在将外部的TZ口上拉,软件内部屏蔽掉该TZ口和TZ_CBC6的功能配置,还是会出现TZ触发的情况(比较器事件并未产生,我做过故意触发DC事件,输出标志位会是两个,一个是OST,另一个是event),已经搞了好几天了,没有头绪,希望给个解析思路,谢谢。
你好,按照你的说法,3种保护都不可能触发TZ,但是TZ还是被触发了?
那么就需要确定2点,首先TZ到底有没有触发,或者说电机的故障确实是TZ_OST引起的吗?
另外,如果确实是TZ引起的,有没有检测过是哪个TZ引起的,比如TZ口到底有没有信号?
我的故障显示标志位判断如下:
if(HAL_getPwmEnableStatus(halHandle) == true) //HW OC charles
{
if(HAL_getTripFaults(halHandle) != 0)
{
temp_error_value = EPWM_getTripZoneFlagStatus(halHandle->pwmHandle[0]) | EPWM_getTripZoneFlagStatus(halHandle->pwmHandle[1]) | EPWM_getTripZoneFlagStatus(halHandle- >pwmHandle[2]);
motorVars.faultNow.bit.moduleOverCurrent = 1;
Flag_Faults_II = (Flag_Faults_II | ((uint64_t)0x01 << (1 - 1)));//故障定义位1 硬件过流
}
}
static inline uint16_t HAL_getTripFaults(HAL_Handle handle)
{
HAL_Obj *obj = (HAL_Obj *)handle;
uint16_t tripFault = 0;
tripFault = (EPWM_getTripZoneFlagStatus(obj->pwmHandle[0]) &
(EPWM_TZ_FLAG_OST | EPWM_TZ_FLAG_DCAEVT1 | EPWM_TZ_FLAG_DCAEVT2)) |
(EPWM_getTripZoneFlagStatus(obj->pwmHandle[1]) &
(EPWM_TZ_FLAG_OST | EPWM_TZ_FLAG_DCAEVT1 | EPWM_TZ_FLAG_DCAEVT2)) |
(EPWM_getTripZoneFlagStatus(obj->pwmHandle[2]) &
(EPWM_TZ_FLAG_OST | EPWM_TZ_FLAG_DCAEVT1 | EPWM_TZ_FLAG_DCAEVT2));
}
故障出现在停机时刻,我当前的停机控制做了一个逻辑,降速到3000转上桥臂全部断开,下桥臂全部闭合制动,在此制动过程中如果检测电流大于设定阈值将PWM全关闭(软件强制触发TZ的方式)
在故障时刻temp_error_value 读取到的值为EPWM_TZ_FLAG_OST;TZ口原先用示波器测量过未发现明显下探信号,但是信号干扰比较大,为了排除原因选择了将外部输入信号上拉。