|
|
@ -36,7 +36,7 @@ static void onMotorMonitorTimer(void const* argument) { |
|
|
|
// return;
|
|
|
|
// 电机异常检查
|
|
|
|
TmcMotorGroup* DEVICE = (TmcMotorGroup*)tmcgroup_p; |
|
|
|
report_exeception_data_t data; |
|
|
|
report_exeception_data_t data = {0}; |
|
|
|
for (size_t i = 0; i < DEVICE->motorNum(); i++) { |
|
|
|
// ZLOGI(TAG, "check motor %d", i);
|
|
|
|
bool estate = motorErrorFlag_get(i); |
|
|
@ -50,6 +50,7 @@ static void onMotorMonitorTimer(void const* argument) { |
|
|
|
ZLOGE(TAG, "motor %d offline error", i); |
|
|
|
zcanbus_send_emergency_report(kreport_exception_error, (uint8_t*)&data, sizeof(data), 100); |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
auto gstate = DEVICE->motor(i)->getGState(); |
|
|
|
auto gstatus = DEVICE->motor(i)->getDevStatus(); |
|
|
@ -78,12 +79,29 @@ static void onMotorMonitorTimer(void const* argument) { |
|
|
|
data.ecode = kerr_motor_reset_error; |
|
|
|
} else if (gstate.uv_cp) { |
|
|
|
data.ecode = kerr_motor_undervoltage_error; |
|
|
|
} else if (gstate.drv_err) { |
|
|
|
data.ecode = kerr_motor_driver_error; |
|
|
|
} else { |
|
|
|
data.ecode = kerr_motor_unkown_error; |
|
|
|
if (gstate.drv_err) data.ecode = kerr_motor_driver_error; |
|
|
|
//
|
|
|
|
if (gstatus.ot) |
|
|
|
data.ecode = kerr_motor_overtemperature_flag; |
|
|
|
else if (gstatus.s2ga) |
|
|
|
data.ecode = kerr_motor_short_to_ground_indicator_phase_A; |
|
|
|
else if (gstatus.s2gb) |
|
|
|
data.ecode = kerr_motor_open_load_indicator_phase_B; |
|
|
|
else if (gstatus.ola) |
|
|
|
data.ecode = kerr_motor_open_load_indicator_phase_A; |
|
|
|
else if (gstatus.olb) |
|
|
|
data.ecode = kerr_motor_open_load_indicator_phase_B; |
|
|
|
else if (gstatus.stst) |
|
|
|
data.ecode = kerr_motor_standstill_indicator; |
|
|
|
else if (gstatus.otpw) |
|
|
|
data.ecode = kerr_motor_overtemperature_pre_warning_flag; |
|
|
|
} |
|
|
|
|
|
|
|
data.subid = i; |
|
|
|
data.detailinfo; |
|
|
|
static_assert(sizeof(gstatus) == 4); |
|
|
|
memcpy(&data.detailinfo, &gstatus, sizeof(gstatus)); |
|
|
|
motorErrorFlag_set(i, true); |
|
|
|
zcanbus_send_emergency_report(kreport_exception_error, (uint8_t*)&data, sizeof(data), 100); |
|
|
|
} |
|
|
|