CAN信号坡度处理函数:slope_vOutput()详解
CAN信号坡度处理函数:slope_vOutput()详解
本代码片段展示了一个名为slope_vOutput()的函数,该函数负责根据CAN信号PitchAng和PitchAngleSign的值来设置坡度方向、坡度角度和坡度单位。
以下是slope_vOutput()函数的详细解析:
/*slope output function */
void slope_vOutput(void) {
// 1. 判断CAN信号PitchAng是否为0,如果是,则将坡度方向值、坡度角度值、坡度单位值都设为0。
if (SYN__u8PitchAng() == 0) {
DIF_stSlopeDpoolData.DIF_u8SlopeDirectionValue = 0;
DIF_stSlopeDpoolData.DIF_u8SlopeAngleValue = 0;
DIF_stSlopeDpoolData.DIF_u8SlopeUnit = 1;
}
// 2. 如果CAN信号PitchAng大于0且小于等于90,则判断CAN信号PitchAngleSign是否为0,如果是,则将坡度方向值设为1,否则设为2。将坡度角度值设为CAN信号PitchAng的值,将坡度单位值设为1。
else if (SYN__u8PitchAng() > 0 && SYN__u8PitchAng() <= 90) {
if (SYN__u8PitchAngleSign() == 0) {
DIF_stSlopeDpoolData.DIF_u8SlopeDirectionValue = 1;
}
else DIF_stSlopeDpoolData.DIF_u8SlopeDirectionValue = 2;
DIF_stSlopeDpoolData.DIF_u8SlopeAngleValue = SYN__u8PitchAng();
DIF_stSlopeDpoolData.DIF_u8SlopeUnit = 1;
}
// 3. 如果CAN信号PitchAng大于127且PitchAngSign和PitchAng都没有超时,则将坡度方向值、坡度角度值、坡度单位值都设为0。
else if (Flg_PitchAngSign_tmout() == False && Flg_PitchAng_tmout == False && SYN__u8PitchAng() > 127) {
DIF_stSlopeDpoolData.DIF_u8SlopeDirectionValue = 0;
DIF_stSlopeDpoolData.DIF_u8SlopeAngleValue = 0;
DIF_stSlopeDpoolData.DIF_u8SlopeUnit = 1;
}
// 4. 如果以上条件都不满足,则什么都不做。
else {
// do nothing
}
// 5. 返回。
return;
}
函数逻辑概述
该函数主要根据PitchAng和PitchAngleSign两个CAN信号的值来判断坡度信息:
- 水平状态: 当
PitchAng为0时,说明车辆处于水平状态,此时坡度方向、坡度角度和坡度单位都设为0。 - 倾斜状态: 当
PitchAng大于0且小于等于90时,说明车辆处于倾斜状态。根据PitchAngleSign的值来判断是上坡还是下坡。PitchAngleSign为0,表示上坡,坡度方向设置为1。PitchAngleSign为非0,表示下坡,坡度方向设置为2。- 坡度角度设置为
PitchAng的值,坡度单位设置为1(度)。
- 超时状态: 当
PitchAng大于127且PitchAngSign和PitchAng都没有超时时,说明这两个信号可能出现了异常,此时将坡度信息重置为水平状态。 - 其他情况: 如果以上条件都不满足,则什么都不做。
总结
slope_vOutput()函数通过分析CAN信号PitchAng和PitchAngleSign,并将结果映射到坡度方向、坡度角度和坡度单位,实现对车辆坡度状态的判断和输出。
注意
- 代码中使用了
False来表示逻辑假,建议使用false来保持代码风格一致。 - 代码中存在一些逻辑冗余,例如在
else if语句中判断PitchAng大于127,而实际判断逻辑可能需要根据具体的场景和需求进行调整。 - 代码缺少对
SYN__u8PitchAng()和SYN__u8PitchAngleSign()函数的定义和说明,建议提供完整代码或注释以方便理解。 - 代码中使用了
Delay(TimeCnt())来进行延时操作,建议使用更明确的延时方式,例如DelayMs(10)。 - 代码中缺少对
DIF_stSlopeDpoolData结构体的解释和说明,建议提供相关注释或文档以方便理解。
建议对代码进行进一步优化,以提高代码的可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/oQyR 著作权归作者所有。请勿转载和采集!