CHENJIE-PC\QiXiang_CHENJIE vor 3 Jahren
Ursprung
Commit
1ad0f3fc67
5 geänderte Dateien mit 37 neuen und 8 gelöschten Zeilen
  1. 2 1
      inc/AppSignal.h
  2. 2 1
      src/AppSignal.c
  3. 4 0
      src/AppTaskCan.c
  4. 9 2
      src/AppTaskTcp.c
  5. 20 4
      src/AppTaskUart.c

+ 2 - 1
inc/AppSignal.h

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-18 14:38:28
+ * @LastEditTime : 2021-10-21 11:52:28
  * @Description  : Global variable definition H file
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\inc\AppSignal.h
  */
@@ -54,6 +54,7 @@ extern UINT8 packTemp;
 extern UINT8 PadInterrupt;
 extern UINT8 PosFlag;
 extern UINT8 RelayForbiddenControl;
+extern UINT8 RelayForceControl;
 extern UINT8 reservedSignal1;
 extern UINT8 reservedSignal2;
 extern UINT8 reservedSignal3;

+ 2 - 1
src/AppSignal.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-18 14:36:41
+ * @LastEditTime : 2021-10-21 11:51:54
  * @Description  : Global variable definition c file,此文件存放App使用到的全局变量
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppSignal.c
  */
@@ -50,6 +50,7 @@ UINT8 packTemp = 0;                     //battery pack temprature   电池箱体
 UINT8 PadInterrupt = 0x00;              //每个bit代表一个中断标志
 UINT8 PosFlag = 0;                      //定位信息是否有效标志位
 UINT8 RelayForbiddenControl = 0x00;     //继电器禁止控制
+UINT8 RelayForceControl = 0x00;         //继电器强制控制
 UINT8 reservedSignal1 = 0;              //can信息保留信号1
 UINT8 reservedSignal2 = 0;              //can信息保留信号2
 UINT8 reservedSignal3 = 0;              //can信息保留信号3

+ 4 - 0
src/AppTaskCan.c

@@ -161,6 +161,10 @@ static void CanTask()
 				delayconuter = 0;
 				clrbit(PadInterrupt, 0);
 				PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_IDLE);
+				if (RelayForbiddenControl == 1)
+				{
+					RelayForceControl = 2;
+				}
 			}
 			break;
 		}

+ 9 - 2
src/AppTaskTcp.c

@@ -777,15 +777,22 @@ static void TcpDataInfoRecvHandle()
                     TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer, 30);
                     if (*(Ptr + 31) == 0x01) //0x01代表断开
                     {
+
                         AppDataInfo.appDataModify = TRUE;
-                        AppDataInfo.RelayControl = TRUE;
+                        if (RelayForceControl == 0)
+                        {
+                            AppDataInfo.RelayControl = TRUE;
+                        }
                         AppDataInfo.BattForceLock = TRUE;
                         tcpipConnectionSend(socContext.id, TcpCmdAnswer, 31, 0, 0, 0);
                     }
                     else if (*(Ptr + 31) == 0x00) //0x00代表关闭
                     {
                         AppDataInfo.appDataModify = TRUE;
-                        AppDataInfo.RelayControl = FALSE;
+                        if (RelayForceControl == 0)
+                        {
+                            AppDataInfo.RelayControl = FALSE;
+                        }
                         AppDataInfo.BattForceLock = FALSE;
                         tcpipConnectionSend(socContext.id, TcpCmdAnswer, 31, 0, 0, 0);
                     }

+ 20 - 4
src/AppTaskUart.c

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-20 14:28:48
+ * @LastEditTime : 2021-10-21 11:54:55
  * @Description  : file content
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppTaskUart.c
  */
@@ -325,7 +325,7 @@ void Uart_Cmd_Control(QueueHandle_t UartWriteCmdHandle, UartBuffer UartAnswerDat
 		DisChargeForbiddenControl = 1;
 	}
 	//控制继电器断开
-	if (getbit(BcuFltAct, 3) == 0)
+	if (RelayForceControl == 0)
 	{
 		if (AppDataInfo.RelayControl == TRUE)
 		{
@@ -333,13 +333,29 @@ void Uart_Cmd_Control(QueueHandle_t UartWriteCmdHandle, UartBuffer UartAnswerDat
 		}
 		else if (AppDataInfo.RelayControl == FALSE)
 		{
-			RelayForbiddenControl = 0;
+			if (getbit(BcuFltAct, 3) == 0)
+			{
+				RelayForbiddenControl = 0;
+			}
+			else if (getbit(BcuFltAct, 3) == 1)
+			{
+				RelayForbiddenControl = 1;
+			}
 		}
 	}
-	else if (getbit(BcuFltAct, 3) == 1)
+	else if (RelayForceControl == 1) //close
+	{
+		RelayForbiddenControl = 0;
+		AppDataInfo.appDataModify = TRUE;
+		AppDataInfo.RelayControl = FALSE;
+	}
+	else if (RelayForceControl == 2) //open
 	{
 		RelayForbiddenControl = 1;
+		AppDataInfo.appDataModify = TRUE;
+		AppDataInfo.RelayControl = TRUE;
 	}
+
 	if (TimeCounter % 10 == 0 && BattHeaterSwitch(&HeatSwitch, HeatForceControl) == TRUE)
 	{
 		UartWriteData.WriteCmd = 0x02;