From 6ea1a42391f86e72f53042a966dae970a3fd77cb Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Fri, 17 May 2024 17:18:57 +0800
Subject: [PATCH] 阀门控制进一步完善

---
 Function/VALVE/valve_control.c |   51 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/Function/VALVE/valve_control.c b/Function/VALVE/valve_control.c
index 28098fa..e76a010 100644
--- a/Function/VALVE/valve_control.c
+++ b/Function/VALVE/valve_control.c
@@ -1,6 +1,7 @@
 #include "valve_control.h"
 #include "gpio.h"
 #include "system_mem_para.h"
+#include "power_manage.h"
 
 __IO VALVE_CTRL_PARA_T	valve_ctrl_para_g;
 
@@ -151,8 +152,8 @@
 			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
 			
 		}else{
-			if(0){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
-			
+			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
+				;
 			}else{
 				valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
 		
@@ -160,12 +161,8 @@
 
 				save_valve_para_g.valve_status = VALVE_OPENING;
 				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-				
 			}
-			
 		}
-		
-		
 	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE){
 		if(Read_OP_CL_VALVE_Status(0) == VALVE_CLOSE){
 			ValveMotorStop();
@@ -174,24 +171,20 @@
 			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
 			
 		}else{
-			if(0){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
-			
+			if(sys_fun_run_ctrl_p->rs485_ctrl_flag.running_flag==SET||sys_fun_run_ctrl_p->wrc_ctrl_flag.running_flag==SET){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
+				;
 			}else{
 				
 				valve_ctrl_para_g.close_time_cnt = GetValveRunMaxTime(caliber_type_l);
 				ValveMotorCloseRun();
 
 				save_valve_para_g.valve_status = VALVE_CLOSING;
-				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-				
+				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;	
 			}
-			
 		}
 	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_LOCK){
-		save_valve_para_g.valve_lock_state = VL_LOCK;
-		
+		save_valve_para_g.valve_lock_state = VL_LOCK;	
 	}
-	
 	
 	//?�жϿ��ط��Ƿ�λ
 	if(save_valve_para_g.valve_status==VALVE_OPENING){
@@ -208,9 +201,6 @@
 			//��������������ǿ�����ر�����
 			ValveMotorStop();
 		}
-			
-			
-		
 	}else if(save_valve_para_g.valve_status==VALVE_CLOSING){
 		if(valve_ctrl_para_g.close_time_cnt==0){
 			//?��ʱ����
@@ -235,17 +225,37 @@
 	else
 		sys_fun_run_ctrl_p->valve_ctrl_flag.running_flag = RESET;
 	
+	
+	//״̬�ִ���
+	if(save_valve_para_g.valve_lock_state == VL_UNLOCK)
+		system_status_word_g.status_word.valve_lock = RESET;
+	else
+		system_status_word_g.status_word.valve_lock = SET;
+	
+	if(save_valve_para_g.valve_status == VALVE_ERROR){
+		if(system_status_word_g.status_word.valve_state != VALVE_ERROR){
+			//���������쳣����
+			if(__SYS_ALARM_REPORT_CTL_BYTES_GET(valve_error) == SET)
+				__SYS_ALARM_BYTES_SET(valve_error, SET);	
+			
+			system_alarm_word_for_valve_g.alarm_word.valve_error = SET; //�ط�����״̬��λ
+		}
+	}else{
+		system_status_word_g.status_word.valve_state = save_valve_para_g.valve_status;
+	}
+	
 }
 
 
 //���Ų�������������������������У������ط�������Ҫֹͣ������ת�����йط�
-ErrorStatus ValveCtrlOrder(VALVE_CTEL_TYPE_T valve_ctrl_order_l) 
+ErrorStatus ValveCtrlOrder(VALVE_CTRL_TYPE_T valve_ctrl_order_l) 
 {
 	switch(valve_ctrl_order_l){
 		case VC_NONE:break;
 		case VC_OPEN:
 			if((save_valve_para_g.valve_status == VALVE_CLOSE)&&(valve_ctrl_para_g.force_open_status==RESET)){
 				valve_ctrl_para_g.valve_ctrl_order = VC_OPEN;
+				pwr_vol_g.alka_flag = AMS_VALVE_CTRL_BEFORE;
 				return PASS;
 			}
 		break;
@@ -253,6 +263,7 @@
 		case VC_CLOSE:
 			if((save_valve_para_g.valve_status != VALVE_CLOSE)&&(valve_ctrl_para_g.force_open_status==RESET)){
 				valve_ctrl_para_g.valve_ctrl_order = VC_CLOSE;
+				pwr_vol_g.alka_flag = AMS_VALVE_CTRL_BEFORE;
 				return PASS;
 			}
 		break;
@@ -288,6 +299,7 @@
 		if(valve_ctrl_para_g.force_open_status !=SET){
 			valve_ctrl_para_g.force_open_status =SET;
 			//��ʼ����ǿ��
+			
 		}
 			
 		
@@ -302,6 +314,9 @@
 	
 	if((valve_ctrl_para_g.force_open_status ==SET)&&(Read_OP_CL_VALVE_Status(0)==VALVE_OPEN)){
 		//?��⵽ǿ�������Ƿ���״̬��ȡ�Ѿ�����λ����ʾ�Ƴ�ǿ����Դ��
+		//
+		
+		
 	}
 	
 }

--
Gitblit v1.9.3