From 6e797b7c8ce7e71b86d67464b96c4eaa0de1f670 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Sun, 28 Apr 2024 19:59:24 +0800
Subject: [PATCH] 继续完善,开始添加远传功能
---
Function/VALVE/valve_control.c | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 206 insertions(+), 9 deletions(-)
diff --git a/Function/VALVE/valve_control.c b/Function/VALVE/valve_control.c
index 1b7553e..0c57aa3 100644
--- a/Function/VALVE/valve_control.c
+++ b/Function/VALVE/valve_control.c
@@ -2,7 +2,7 @@
#include "gpio.h"
#include "system_mem_para.h"
-
+__IO VALVE_CTRL_PARA_T valve_ctrl_para_g;
void Motor_AB_GPIO_Init(void)
@@ -23,26 +23,43 @@
CloseIO(Motor_OP_PORT,Motor_OP_PIN);
CloseIO(Motor_CL_PORT,Motor_CL_PIN);
}
+void Force_Open_GPIO_Init(void)
+{
+ InputtIO(VALVE_FORCE_OPEN_PORT,VALVE_FORCE_OPEN_PIN,IN_NORMAL);
+}
+void Force_Open_GPIO_Init_sleep_mode(void)
+{
+ CloseIO(VALVE_FORCE_OPEN_PORT,VALVE_FORCE_OPEN_PIN);
+}
void ValveMotorOpenRun(void)
{
Motor_AB_GPIO_Init();
+ Motor_OP_CL_GPIO_Init();
Motor_A_HIGH;
Motor_B_HIGH;
+ GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, ENABLE);
+ GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, ENABLE);
}
void ValveMotorCloseRun(void)
{
Motor_AB_GPIO_Init();
+ Motor_OP_CL_GPIO_Init();
Motor_A_LOW;
Motor_B_LOW;
+ GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, ENABLE);
+ GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, ENABLE);
}
void ValveMotorStop(void)
{
Motor_AB_GPIO_Init();
+ Motor_OP_CL_GPIO_Init_sleep_mode();
+ GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, DISABLE);
+ GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, DISABLE);
Motor_A_LOW;
Motor_B_HIGH;
}
@@ -62,10 +79,10 @@
if((Open_status==(uint8_t)Bit_RESET)&&(Close_status==(uint8_t)Bit_SET))
{
- return VALVE_OP;
+ return VALVE_OPEN;
}else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_RESET))
{
- return VALVE_CL;
+ return VALVE_CLOSE;
}else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_SET))
{
return VALVE_ERROR;
@@ -80,23 +97,203 @@
void ValveRunParaInit(void)
{
- VALVE_STATUS valve_status;
-
- switch (save_valve_para_g.valve_status)
- {
+// VALVE_STATUS valve_status;
+ switch (save_valve_para_g.valve_type){
+ case VM_PENGSHENG: ;
+ case VM_HADE:
+ save_valve_para_g.valve_status = Read_OP_CL_VALVE_Status(0);
+
+ break;
+ default:break;
+ }
+
+ //������Ҫ��ʼ���IJ���
+
+}
+
+
+uint16_t GetValveRunMaxTime(CALIBER_TYPE caliber_type_l)
+{
+ switch (caliber_type_l){
+ case DN25_TYPE: return VALVE_HADE_RUN_TIME_DN25 ;break;
+ case DN32_TYPE: return VALVE_HADE_RUN_TIME_DN32 ;break;
+ case DN40_TYPE: return VALVE_HADE_RUN_TIME_DN40 ;break;
+ case DN50_TYPE: return VALVE_HADE_RUN_TIME_DN50 ;break;
+ case DN80_TYPE: return VALVE_HADE_RUN_TIME_DN80 ;break;
+ case DN100_TYPE: return VALVE_HADE_RUN_TIME_DN100 ;break;
+ case DN150_TYPE: return VALVE_HADE_RUN_TIME_DN150 ;break;
+ case DN200_TYPE: return VALVE_HADE_RUN_TIME_DN200 ;break;
+ default: return VALVE_HADE_RUN_TIME_DN200 ;break;
+ }
+}
+
+
+void ValveCtrlHade(CALIBER_TYPE caliber_type_l)
+{
+ if(valve_ctrl_para_g.valve_ctrl_order == VC_OPEN){
+ if(Read_OP_CL_VALVE_Status(0) == VALVE_OPEN){
+ ValveMotorStop();
+ save_valve_para_g.valve_status = VALVE_OPEN;
+ valve_ctrl_para_g.close_time_cnt = 0;
+ valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
+
+ }else{
+ if(0){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
+
+ }else{
+ valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
+
+ ValveMotorOpenRun();
+
+ 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();
+ save_valve_para_g.valve_status = VALVE_CLOSE;
+ valve_ctrl_para_g.open_time_cnt = 0;
+ valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
+
+ }else{
+ if(0){ //?Զ����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;
+
+ }
+
+ }
+ }else if(valve_ctrl_para_g.valve_ctrl_order == VC_LOCK){
+ save_valve_para_g.valve_lock_state = VL_LOCK;
+
+ }
+
+
+ //?�жϿ��ط��Ƿ�λ
+ if(save_valve_para_g.valve_status==VALVE_OPENING){
+ if(valve_ctrl_para_g.open_time_cnt==0){
+ //?��ʱ����
+ ValveMotorStop();
+ save_valve_para_g.valve_status = VALVE_ERROR;
+
+ }else{
+ valve_ctrl_para_g.open_time_cnt--;
+ }
+
+ if(valve_ctrl_para_g.force_open_status ==SET){
+ //��������������ǿ�����ر�����
+ ValveMotorStop();
+ }
+
+
+
+ }else if(save_valve_para_g.valve_status==VALVE_CLOSING){
+ if(valve_ctrl_para_g.close_time_cnt==0){
+ //?��ʱ����
+ ValveMotorStop();
+ save_valve_para_g.valve_status = VALVE_ERROR;
+
+ }else{
+ valve_ctrl_para_g.close_time_cnt--;
+ }
+
+ if(valve_ctrl_para_g.force_open_status ==SET){
+ //�ط�����������ǿ�����ر�������״̬�ı�ɿ����У����ÿ�����ʱ
+ ValveMotorStop();
+ save_valve_para_g.valve_status = VALVE_OPENING;
+ valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
+ }
}
}
+//����������
+ErrorStatus ValveCtrlOrder(VALVE_CTEL_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;
+ return PASS;
+ }
+ break;
+
+ 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;
+ return PASS;
+ }
+ break;
+
+ case VC_UNLOCK:
+ save_valve_para_g.valve_lock_state = VL_UNLOCK;
+ return PASS;
+ break;
+
+ case VC_LOCK:
+ save_valve_para_g.valve_lock_state = VL_LOCK;
+ return PASS;
+ break;
+
+ default: break;
+ }
+
+ return FAIL;
+}
+void ValveForceOpenSignalCheck(void)
+{
+ uint8_t force_open_io_status=(uint8_t)Bit_RESET;
+ Force_Open_GPIO_Init();
+ if(VALVE_FORCE_OPEN_IO_READ==Bit_SET){
+ delay_ms(5);
+ if(VALVE_FORCE_OPEN_IO_READ==Bit_SET)
+ force_open_io_status=(uint8_t)Bit_SET;
+ }
+
+ if(force_open_io_status==(uint8_t)Bit_SET){
+ if(valve_ctrl_para_g.force_open_status !=SET){
+ valve_ctrl_para_g.force_open_status =SET;
+ //��ʼ����ǿ��
+ }
+
+
+ }else{
+ if(valve_ctrl_para_g.force_open_status ==SET){
+ valve_ctrl_para_g.force_open_status =RESET;
+ //��ʼ�ر�ǿ��
+ }
+
+ }
+
+
+ if((valve_ctrl_para_g.force_open_status ==SET)&&(Read_OP_CL_VALVE_Status(0)==VALVE_OPEN)){
+ //?��ǿ�������Ƿ���״̬��ȡ�Ѿ�����λ����ʾ�Ƴ�ǿ����Դ��
+ }
+
+}
-
-void valveCtrlPro(void) //?
+void valveCtrlPro(void) //? ���Ҫ������������ú���ValveCtrlOrder��VC_OPEN��;��δ����������
{
+ ValveForceOpenSignalCheck();//?ǿ���жϴ���
+
+ ValveCtrlHade(equipment_basic_inf_g.caliber_type);//���·��Ų���������
}
--
Gitblit v1.9.3