From b39a40b0191e0a8b155db74e885ff66e17b91896 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Thu, 06 Jun 2024 19:25:15 +0800
Subject: [PATCH] 继续完善
---
Soft/sizhu_ctrl_word.c | 150 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 133 insertions(+), 17 deletions(-)
diff --git a/Soft/sizhu_ctrl_word.c b/Soft/sizhu_ctrl_word.c
index 9a15174..eb1e542 100644
--- a/Soft/sizhu_ctrl_word.c
+++ b/Soft/sizhu_ctrl_word.c
@@ -1,30 +1,92 @@
#include "sizhu_ctrl_word.h"
#include "system_run_fun.h"
+#include "valve_control.h"
+#include "system_mem_para.h"
FlagStatus AlarmTriggerWrcFlag = RESET;
uint8_t AlarmTriggerCLoseValveNum = 0; //�����ط����������������ڴ������л�ȡ����ID���ж�Ӧ�Ĺط�����
SYSTEM_STATUS_WORD_T system_status_word_g;
SYSTEM_FUNCTION_CTRL_WORD_T system_function_ctrl_word_g = { \
-.fun_ctrl_word.billing_type = 0x02, \
+ .fun_ctrl_word.billing_type = 0x02, \
};
+
SYSTEM_ALARM_WORD_T system_alarm_word_g; //�����ϱ����ϱ������
-SYSTEM_ALARM_WORD_T system_alarm_word_for_valve_g; //���ڷ��أ��ϱ������
-SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g;
-SYSTEM_ALARM_REPORT_CTRL_WORD_T system_alarm_report_ctrl_word_g;
-VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = {
-{0},
-{0},
-{0},
-{1,0,1,1,1,1,0,0,0,0,0,0,0,0},
-{0,0,0,1,1},
-{0},
-{0},
-{0},
-{0},
-{0},
-{0},}
+
+SYSTEM_ALARM_WORD_T system_alarm_word_for_valve_g; //���ڷ��أ��ж��귧��֮������
+
+
+SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g= {.alarm_ctl_word={
+ .system_start = 1,
+ .power_state = 1,
+ .valve_error = 1,
+ .valve_state_change = 1,
+ .set_cumulate_up_to = 1,
+ .no_use_gas_date_up_to = 1,
+ .no_gprs_date_up_to = 1,
+ .balance_small_3 = 1,
+ .lith_low = 1,
+ .lith_down = 1,
+ .lith_remove = 1,
+ .alka_low = 1,
+ .alka_down = 1,
+ .alka_remove = 1,
+ .gprs_status = 1, //Զ��ʧ��ֻ���������ϱ�
+ .RS485_err = 1,
+ .RS485_lessen = 1,
+ .broken_line = 1,
+ .temp_err = 1,
+ .cpu_temp_up = 1,
+ .cpu_temp_down = 1,
+ .press_err = 1,
+ .lcd_up = 1,
+ .cl_have_flow = 1,
+ }
};
+SYSTEM_ALARM_CTRL_WORD_T system_alarm_report_ctrl_word_g= {.alarm_ctl_word={
+ .system_start = 1,
+ .power_state = 1,
+ .valve_error = 1,
+ .valve_state_change = 1,
+ .set_cumulate_up_to = 1,
+ .no_use_gas_date_up_to = 1,
+ .no_gprs_date_up_to = 1,
+ .balance_small_3 = 1,
+ .lith_low = 1,
+ .lith_down = 1,
+ .lith_remove = 1,
+ .alka_low = 1,
+ .alka_down = 1,
+ .alka_remove = 1,
+ //.gprs_status = 1, //Զ��ʧ��ֻ���������ϱ�
+ .RS485_err = 1,
+ .RS485_lessen = 1,
+ .broken_line = 1,
+ .temp_err = 1,
+ .cpu_temp_up = 1,
+ .cpu_temp_down = 1,
+ .press_err = 1,
+ .lcd_up = 1,
+ .cl_have_flow = 1,
+ }
+};
+
+
+VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = {
+ {0},
+ {0},
+ {0},
+ {.lith_down_need_close_valve_flag =1,.lith_down_close_valve_type = 1,.lith_remove_need_close_valve_flag =1,.lith_remove_close_valve_type =1,
+ //.alka_down_need_close_valve_flag= 1,.alka_down_close_valve_type = 1,.alka_remove_need_close_valve_flag =1,.alka_remove_close_valve_type =1,
+ },
+ {0},
+ {0},
+ {0},
+ {0},
+ {0},
+ {0},
+ {0},}
+};
#define alarm_ctrl_para_array_g_NUM (sizeof(alarm_ctrl_para_array_g) /sizeof(ALARM_CTRL_PARA_T) )
@@ -125,6 +187,11 @@
}
break;
}
+
+ if(count_i > 200) //��ʱ��û��200������
+ {
+ break;
+ }
}
return RESET;
}
@@ -161,15 +228,64 @@
//��¼���ϴιط�ԭ����Ҫ�����ȼ����ǻ��ƣ� ǿ���Թط����Ƿ�ǿ���Թط��� �������ɵ�ǿ���Թط����������ɵġ�
void SysAlarmCtrlPro(void)
{
+ uint16_t count_i;
+ uint16_t close_valve_ID;
+ uint8_t close_valve_flag;
+
EveryDayClearAlarmCnt(sys_clockBCD_g); //ÿ�������������
/*���������ϱ�*/
if(AlarmTriggerWrcFlag ==SET){
AlarmTriggerWrcFlag = RESET;
- start_wrc_g = WRC_MEANS_ALARM;//���ڱ���
+// start_wrc_g = WRC_MEANS_ALARM;//���ڱ��� ������ע��
}
/*������������*/
+ for(count_i = 0;count_i <alarm_ctrl_para_array_g_NUM;count_i++ ){
+ if(((system_alarm_word_for_valve_g.alarm_word_union[alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit >>4 ] >>(alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit & 0x0f)) & 0x01) == 0x01){
+ close_valve_flag = valve_ctl_bytes_g.valve_ctrl_bytes_union [alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit >>4 ]>>(alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit & 0x0f);
+ close_valve_flag = close_valve_flag & 0x03;
+ if(close_valve_flag == VALVE_CTRL_FLAG_LOCK_AND_CLSOSE){
+ //��������������ɣ�����ִ����Ҫһ��ʱ��
+ if(save_valve_para_g.valve_lock_state != VL_UNLOCK){
+ ValveCtrlOrder(VC_LOCK);
+ //?�洢
+ }
+ system_status_word_g.status_word.valve_lock = (save_valve_para_g.valve_lock_state == VL_LOCK)?1:0;
+ ValveCtrlOrder(VC_CLOSE);
+
+ //����ط�ԭ��ID������Ѿ���ǿ���Թط�������Ҫ�ж����ȼ����������Ա����ǣ�����ܱ����ǣ������ж��Ƿ����������ɵģ��������ɵ��ڳ�ֵ֮�����ֱ�ӿ���
+ if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){
+ close_valve_ID = save_valve_para_g.valve_close_ID & ~0x8000;
+ if((close_valve_ID ==ALARM_ID_BALANCE_SMALLER1)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER2)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER3)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER4)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER5)){
+ save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000 ; //�ط�ԭ��ID��ͬ�ڱ���ID��
+ }
+ }else{
+ save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000; //�ط�ԭ��ID��ͬ�ڱ���ID��
+ }
+
+ }else if(close_valve_flag == VALVE_CTRL_FLAG_ONLY_CLSOSE){
+ ValveCtrlOrder(VC_CLOSE);
+ //����ط�ԭ��ID������Ѿ���ǿ���Թط������ٸ���
+ if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){
+
+ }else{
+ save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id ; //�ط�ԭ��ID��ͬ�ڱ���ID��
+ }
+
+ }else{}
+
+ }
+
+ if(count_i > 200) //��ʱ��û��200������
+ {
+ break;
+ }
+ }
+ //���ڹط��ı���������
+ for(count_i = 0;count_i <(SYSTEM_ALARM_WORD_INF_LENGTH >> 1);count_i++ ){
+ system_alarm_word_for_valve_g.alarm_word_union[count_i] = 0;
+ }
--
Gitblit v1.9.3