C++开发新能源汽车车身域控软件

C++开发新能源汽车车身域控制器软件

概要

C++面相对象方式开发新能源汽车车身域控制器软件

整体架构流程

`依据新能源汽车车身域控制器的EEA架构,原理图,功能规范将车身域控的信号进行划分为:硬线信号,CAN总线信号,诊断信号,控制输出信号几个部分。每个部分将信号封装成类,定义对象,直接调用属性。根据功能规范写出逻辑代码。

技术名词解释

VCU 整车控制器
BCM 车身域控制器
PEPS 无钥匙系统
SSB 一键启动开关
IMMO 天线

技术细节

`
BCM 满足下面任一条件将关闭后除霜功能:
1、 在后除霜功能被激活时, BCM 收到 CAN 消息(0x51A) “RearDfstReq”=0。
2、 工作时间达到 15min ± 5s 后。
3、 钥匙从 IGN-ON 打至 ACC 或 OFF。
4、 IGN-CRANK 时, 除霜功能将会暂停, 此时 BCM 保持 CAN 消息(0x392) “RARDfst
Cmd”=1, 内部计时器 Theater 保持有效, CRANK 后, 除霜功能恢复。 (如果此时收到 C
AN 消息(0x51A) “RearDfstReq”=0, BCM 将关断除霜输出。 )
 注意:
1、 当电压小于 11.5V 超过 5s±10%, 除霜功能将被暂时关闭, 暂时关闭时间不计入除霜
时间, BCM 保持 CAN 消息(0x392) “RARDfstCmd”=1, 如果电压大于 12.5V 超过 15s±
10%BCM 将会重新恢复除霜功能, 完成剩余的除霜时间。
2、 后除霜带有诊断功能。

小结

`C++面向对象方式编程,将各种信号封装,便于直接调用,且不容易出错。

//----------定义VCU_111类------------------
class Ha01_Can_Matirx_VCU_111 {
public:
	int m_Id;	//定义了ID
	string m_MsgName;	//定义了报文名称
	int m_VCU_WorkingMode;	//VCU工作模式
	int m_VCU_DriveMode;   //指示车辆驾驶模式
	int m_VCU_PTReadyInd;  //指示动力系统READY状态
	int m_VCU_GearsFlickerRemind;  //档位闪烁提示(换挡操作错误指示)
	int m_VCU_PTSysElecPwrInd;   //动力系统电功率
	int m_VCU_GearPositionInd;   //目标档位(档杆的实际档位)
	int m_VCU_GearPositionSys;   //系统档位
	int m_VCU_PTMode;   //动力系统实际运行模式
	int m_VCU_VehicleSysErrorLevel;   //整车故障等级
	int m_VCU_GearPositionIndValid;   //目标档位有效性(档杆的实际档位)
	int m_VCU_111_Counter;	//报文计数器(从0至15单向循环自增)

};

class Ha01_Can_Matrix_VCU_112 {
public:
	int m_Id;	//定义了ID
	string m_MsgName;	//定义了报文名称
	float m_VCU_AcceleratorPedalPosition;	//加速踏板位置
	float m_VCU_BrakePedalPosition;	  //刹车踏板位置
	int m_VCU_BrakSwitchSts;	//制动开关状态
	int m_VCU_AcceleratorPedalPositionValid;	//加速踏板位置信号有效
	int m_VCU_BrakePedalPositionValid;	//刹车踏板位置信号有效
	int m_VCU_BrakSwitchStsValid;	//制动开关状态信号有效
	int m_VCU_VehicleSpdValid;	//车速信号有效标志(待定)
	int m_VCU_VehicleSpd;	//车速(待定)
	int m_VCU_VehicleSmartChargeAllowed;	//整车允许智能充电状态
	int m_VCU_DriverReminder;	//驾驶员提示信息
	int m_VCU_112_Counter;	 //报文计数器(从0至15单向循环自增)

void rearDefrost() { //后除霜功能
Ha01_Signal_Input hsi; //定义硬线信号输入对象
hsi.m_OFF = 1; //初始状态整车电源档位OFF
hsi.m_ACC = 0;
hsi.m_ON = 0;
hsi.m_Defrost_Sw = 0; //初始状态后除霜开关关闭
Ha01_Bcm_Signal_Output hbso;
hbso.m_REAR_DEFROST = 0;
Ha01_Can_Matrix_BCM_PEPS_338 hcmbp338;
hcmbp338.m_BCM_RearDefrostSts = 0; //后除霜状态关闭
hcmbp338.m_BCM_RearDefrostStsValid = 0; //后除霜状态无效

if (hsi.m_ON == 1 && hsi.m_Defrost_Sw == 1) {	//后除霜激活条件
	hbso.m_REAR_DEFROST = 1;	//后除霜工作
	std::cout << "后除霜工作" << std::endl;
	hcmbp338.m_BCM_RearDefrostStsValid = 1;		//BCM反馈后除霜有效
	hcmbp338.m_BCM_RearDefrostSts = 1;		//BCM反馈后除霜工作状态
}
else if (hsi.m_ACC == 1 || hsi.m_OFF == 1 ) {	//后除霜关闭条件
	hbso.m_REAR_DEFROST = 0;	//后除霜停止
	std::cout << "后除霜停止" << std::endl;
	hcmbp338.m_BCM_RearDefrostStsValid = 0;	  //BCM反馈后除霜无效
	hcmbp338.m_BCM_RearDefrostSts = 0;	  //BCM反馈后除霜停止状态
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值