{ "title": "电机欠压检测算法优化:提高效率,简化逻辑", "description": "本文介绍一种电机欠压检测算法的优化方案,通过将停止状态的代码提前处理、减少重复判断和简化逻辑,提高了代码效率和可读性。该算法能够准确判断电机是否处于欠压状态,并记录欠压持续时间,设置和取消欠压标识。", "keywords": "电机欠压检测, 算法优化, 代码效率, 可读性, 欠压标识, 持续时间", "content": ""void motor_voltage_detect_thread(void)\n{\n\tstatic TICK_TYPE motor_low_voltage_tick; \t\t//电机欠压时钟\n\tstatic TICK_TYPE motor_low_voltage_recover_tick; \t\t//电机欠压恢复时钟\n\t\n\tif (motor_state == MOTOR_STATE_STOP) \t\t//电机处于停止状态\n\t{\n\t\ttiming_start(&motor_low_voltage_tick);\n\t\ttiming_start(&motor_low_voltage_recover_tick);\n\t\treturn;\n\t}\n\t\n\t//电机输入两端电压差小于9v\n\tif (my_abs_u16(out2_voltage_100t - out1_voltage_100t) <= MOTOR_VOLTAGE_9V)\n\t{\n\t\tif (!IS_PST_PUMP_STATE(PST_PUMP_STATE_MOTOR_LOW_VOLTAGE)) \t\t//没有产生欠压标识\n\t\t{\n\t\t\tif (timing_end(&motor_low_voltage_tick, TIME_MS(3000))) \t\t//电机欠压时间超过3s\n\t\t\t{\n\t\t\t\t//电机欠压\n\t\t\t\tSET_PST_PUMP_STATE(PST_PUMP_STATE_MOTOR_LOW_VOLTAGE);\n\t\t\t}\n\t\t}\n\t\t\n\t\t//打开欠压恢复时钟\n\t\ttiming_start(&motor_low_voltage_recover_tick);\n\t}\n\telse \t\t//电压差大于9v\n\t{\n\t\tif (IS_PST_PUMP_STATE(PST_PUMP_STATE_MOTOR_LOW_VOLTAGE)) \t\t//有产生电机欠压标识\n\t\t{\n\t\t\tif (timing_end(&motor_low_voltage_recover_tick, TIME_MS(3000))) \t\t//电机欠压恢复时间超过3s\n\t\t\t{\n\t\t\t\t//电机欠压恢复\n\t\t\t\tRESET_PST_PUMP_STATE(PST_PUMP_STATE_MOTOR_LOW_VOLTAGE);\n\t\t\t}\n\t\t}\n\t\telse \t\t//无欠压标识\n\t\t{\n\t\t\t//开启电机欠压时钟\n\t\t\ttiming_start(&motor_low_voltage_tick);\n\t\t}\n\t}\n}\n"\n}


原文地址: https://www.cveoy.top/t/topic/pX0S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录