Przeglądaj źródła

【版本号:P156V102】1.增加压紧力测试,2.将时间循环更改为传感器判定,累计次数也用传感器判定

CHENJIE-PC\QiXiang_CHENJIE 3 lat temu
rodzic
commit
14d8adff8d

+ 29 - 17
System/Vehicle/AppFunc.c

@@ -14,44 +14,55 @@
 #include "math.h"
 #include "AppFunc.h"
 #include "Std_Types.h"
+#define Lock 0
+#define Unlock 1
+#define LockCtrl() PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, Lock)
+#define UnlockCtrl() PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, Unlock)
 void LockAndUnlockCtrl()
 {
-	static uint16 TimerCounter = 0;
-	TimerCounter = TimerCounter + 10;
-
+	static uint16 LockDelay = 0;
+	static uint8 CtrlFlg = 0;
 	if (!ebcd_flg_ebcEolDone) //下线检测模式
 	{
-		static uint16 Delay = 0;
-		Delay = Delay + 10;
-		if (Delay > 5000)
-		{
-			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, 0);
-		}
-		else
+		if(ebcd_st_lockSensor==1)//处于锁紧状态
 		{
-			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, 1);
+			LockDelay = LockDelay + 10;
+			if(LockDelay>5*1000)//锁紧状态超时5s,就解锁
+			{
+				Control_Times++;
+				LockDelay = 0;
+				CtrlFlg = Unlock;
+			}
 		}
-		if (Delay > 10000)
+		else if(ebcd_st_unlockSensor==1)//处于解锁状态
 		{
-			Control_Times++;
-			Delay = 0;
+			CtrlFlg = Lock;
 		}
 	}
 	else //正常工作模式
 	{
 		if(bled_flg_lockCmd==1)
 		{
-			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, 0);
+			CtrlFlg = Lock;
 		}
 		else if(bled_flg_unlockCmd==1)
 		{
-			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, 1);
+			CtrlFlg = Unlock;
 		}
 		else
 		{
-			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN, 0);
+			CtrlFlg = Lock;
 		}
 	}
+	//锁紧解锁执行
+	if(CtrlFlg)
+	{
+		UnlockCtrl();
+	}
+	else
+	{
+		LockCtrl();
+	}
 }
 /**
  * @brief : 互锁检测函数
@@ -178,6 +189,7 @@ void GetAIOValue(void)
 
 	AirPressureTemp_Vol = ATDDrv_GetChanResult(_ATD_INDEX_AIRPRESSURE);
 	AirPressureTemp_Vol = (uint16)(AirPressureTemp_Vol * 1000 / 4095.0);
+	Test_LockPressure = AirPressureTemp_Vol;//锁紧力测试变量
 	/*气压数据转换*/
 	AirPressureTemp_Vol = MAX(AirPressureTemp_Vol, 500);
 	AirPressureTemp_Vol = MIN(AirPressureTemp_Vol, 4500);

+ 3 - 2
System/Vehicle/Communication/CANNet.c

@@ -48,6 +48,7 @@ void CANNet_Init(void)
 	CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.DLC = 8;
 	CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.IDE = _MCAN_IDE_EXT;
 	MCANDrv_SetMsgObj(CANNet_InfoRxMsgConfSA[0], CANNet_RecvMsgCAN2);
+
 	CANNet_InfoRxMsgConfSA[1].infoMsgIDUI = 0x1CEF00F1UL;
 	CANNet_InfoRxMsgConfSA[1].infoMsgParU.B.CAN = 2;
 	CANNet_InfoRxMsgConfSA[1].infoMsgParU.B.MO = 4;
@@ -256,8 +257,8 @@ void CAN2Net_Manage1ms(void)
 		infoMsgS.datMsgUBA[1] = Control_Times>>8;
 		infoMsgS.datMsgUBA[2] = Control_Times>>16;
 		infoMsgS.datMsgUBA[3] = Control_Times>>24;
-		infoMsgS.datMsgUBA[4] = 0;
-		infoMsgS.datMsgUBA[5] = 0;
+		infoMsgS.datMsgUBA[4] = Test_LockPressure;
+		infoMsgS.datMsgUBA[5] = Test_LockPressure>>8;
 		infoMsgS.datMsgUBA[6] = 0;
 		infoMsgS.datMsgUBA[7] = 0;
 		MCANDrv_SendMsg(infoMsgS);

+ 3 - 0
System/Vehicle/Communication/CanVar.c

@@ -730,6 +730,9 @@ uint8 ebcd_st_pedstSucJug;			 //
 uint8 ebcd_st_pluginLockSig;		 //互锁接插件信号具体状态,1-触发,0-无触发
 uint8 ebcd_st_unlockSensor;			 //解锁传感器信号:bit0-bit3:传感器0-3的状态每,bit:1-触发,0-不触发
 uint8 ebcd_st_unlockSucJug;			 //解锁完成判断:0-完全未解锁,1-完全解锁,2-未完全解锁
+
+uint16 Test_LockPressure = 0;//锁紧力测试
+
 #define EEPDATA_START_SEC_VAR
 #include "MemMap.h"
 uint32 Control_Times = 0;

+ 2 - 0
System/Vehicle/Communication/CanVar.h

@@ -558,6 +558,8 @@ extern uint8 ebcd_st_chargingMod; //
 extern uint8 ebdc_st_lockUpState; //锁止机构状态,0-故障,1-解锁成功,2-上锁成功
 extern uint8 ebdc_st_ConnecState; //换电连接器状态(充电回路&放电回路同时闭合代表闭合,有一路断开则为断开),0_未连接 1_连接
 
+extern uint16 Test_LockPressure;
+
 #define EEPDATA_START_SEC_VAR
 #include "MemMap.h"
 extern uint8 ebcd_flg_ebcEolDone;		 // EBC下线检测状态完成标志位

+ 1 - 1
System/Vehicle/VehCo.c

@@ -30,7 +30,7 @@
 #define APPLAYERVER_START_SEC_VAR
 #include "MemMap.h"
 
-const uint8 AppLayer_idxVerUBA[64] = "P156V101"; //应用层软件版本信息,可通过UDS接口读取
+const uint8 AppLayer_idxVerUBA[64] = "P156V102"; //应用层软件版本信息,可通过UDS接口读取
 
 #define APPLAYERVER_STOP_SEC_VAR
 #include "MemMap.h"