Browse Source

电机异常上报更加详细

master
zhaohe 12 months ago
parent
commit
6232ad3a5e
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 26
      usrc/module/tmc_motor_group.cpp
  3. 2
      zsdk

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit bd6d6b04af6fbcb7d9dced79f8ecacb636492a17
Subproject commit 330c5b6d619b65ba9043e632b5833a9efd58bf59

26
usrc/module/tmc_motor_group.cpp

@ -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);
}

2
zsdk

@ -1 +1 @@
Subproject commit 8bf4171e2ef60e8d4cd40e8467e19ae7805e9f26
Subproject commit 5b9a561c0eaa7e37492e2539cfb2dc6007fb8a26
Loading…
Cancel
Save