📄 ze015_1.c.bak
字号:
t_180s_10s=1250; //180秒到快测12秒
t_10min_15s_std=1875; //10min快测时时间 15秒
}
else
{//不快测时计数时间
t_1min_3s_std=60; //1min快测时时间 3秒
t_10min_10s_std=600; //SHT读正确次数 10min
t_180s_10s=180; //180秒到快测10秒
t_10min_15s_std=600; //10min快测时时间 10秒
}
//f_100ms==1启动AD采样 ,检测湿度SHT15的测量应答时间
if (time_flag &b_time_100ms)
{//将AD采样值进行64次加,取高8位为AD值
WDR(); //
fun_1232_wdt(); //1232的看门狗翻转时钟脉冲
funADsum(); //test
time_flag &=~b_time_100ms;
t_100ms_times++; //计时+1
// if (t_100ms_times >=50) //50*0.1=定时5s到
if (t_100ms_times >=52) //20080612 52*0.08=定时5s到
{//20080201因SHT不能快测,将SHT测试程序移到100ms的计时中
fun_measure_temp(); //测量rt1温度\湿度程序
t_100ms_times=0; //计时清0
}
}
//定时5s到
if (time_flag &b_time_5s) //定时5s到时读SHT15温湿度检测
{
time_flag &=~b_time_5s; //clear
//5S中定时20s
t_20s_times++; //计时+1
if (t_20s_times >=4) //定时20s到
{ t_20s_times=0; //计时清0
time_flag |=b_time_20s; //置标志1
}
//拨到ON时引脚0地址为1,拨到OFF时引脚1地址为0。
if ((PINB &0x03)==0x00)address =0x43; //
else if ((PINB &0x03)==0x02)address =0x42;
else if ((PINB &0x03)==0x01)address =0x41;
else address =0x40;
NOP();
}
if (time_flag &b_time_1s) //定时1s到
{
fun_key(); //连续按钮5秒时按钮动作-应急、故障复位按钮快测
time_flag &=~b_time_1s; //定时1s清0
if (evin_AD>1000 || evin_AD<20) evin_time++;
else {evin_time=0;b_evinerr=0;}
if (defrost_AD>1000 || defrost_AD<20) defrost_time++;
else {defrost_time=0;b_defrosterr=0;}
if (PINB &b_comp) valctlcount++;
if (mode & b_kaiji)
{
if (mode & b_urgent)//开机且应急时灯闪烁
{
if (PINE &led_run) PORTE&=~led_run;
else PORTE |=led_run;//开机时
}
else PORTE |=led_run;//开机非应急时运行灯亮
}
else PORTE&=~led_run; //关机时PE7运行灯灭
//20080215 if ((fault_state==0) &&(fault_state2==0)&&(fault_state3==0)&&(fault_state4==0)&&(fault_state5==0)&&(fault_state==0)&&(fault_state6==0))PORTE&=~led_alarm;
if ((fault_state2==0)&&(fault_state3==0)&&(fault_state4==0)&&(fault_state5==0)&&(fault_state==0))PORTE&=~led_alarm;
else PORTE |=led_alarm; //有故障时故障灯亮
fun_delaytime_1s(); //1s中执行延时启动的计时程序
if (run_state2 &b_fault_reset) //故障复位命令
{
fun_fault_reset(); //故障复位程序
run_state2 &=~b_fault_reset; //故障复位命令clear
fun_fault_beep(); //20080201增加故障报警蜂鸣器子程序
}
fun_fault_detect(); //上电就开始故障检测程序
fun_act_state(); //计算输出状态1、2
if (t_power_on <3000) t_power_on++; //上电时间超过24分钟时不继续加
if (t_power_on >=180) //上电时间超过180秒后才开始动作
{//初次上电时机组开始时运行时间
if (mode & b_urgent)//开机且应急时灯闪烁
{
mode &=~b_manual_on; //应急时为自动
fun_set_default(); //应急下设置值为出厂设置值
}
// if (((fault_state2&b_fault_tongxun)!=0)||((fault_state5&0x90) !=0)||((fault_state3&b_fault_pfan) !=0)||((fault_yuliu&b_fault_stop) !=0))
if (((fault_state5&0x90) !=0)||((fault_state3&b_fault_pfan) !=0)||((fault_yuliu&b_fault_stop) !=0))
{//通讯、风机低风压故障、离心风机过载、逆相保护时、主模块板的故障关机
fun_fault_guanji(); //故障停机关闭压缩机、电加热、加湿器
}
else if (fault_state2 &b_fault_sht) fun_guanji_sht(); //回风探头故障正常关机,风机保持原状
else if (((fault_state2&b_fault_tongxun)!=0)&&((mode & b_urgent) ==0))fun_guanji_sht(); //正常时通讯故障停机关闭压缩机、电加热、加湿器
else if (((fault_yuliu&b_fault_hmi)!=0)&&((mode & b_urgent) ==0))fun_guanji_sht(); //正常时通讯故障停机关闭压缩机、电加热、加湿器
else fun_nofault_run(); //无故障时动作或应急时有通讯故障也正常动作
if ((mode & b_kaiji)==0) manual_set=0; //20080417add关机时请求=0
}
}
if (m_32mscountv>=4)
{//32ms时膨胀阀动作20080620
m_32mscountv=0;
jf_valvetotal();
}
if (valctlcount>=30)
{//每隔 30秒取膨胀阀开度
valctlcount=0;valveproc();
}
if (b_evinerr==1) {fault_state3 = fault_state3|0x02;}
else {fault_state3 = fault_state3&0xFD;}
if (b_defrosterr==1) {fault_state3 = fault_state3|0x01;}
else {fault_state3 = fault_state3&0xFE;}
if (time_flag &b_time_20s) //定时20s到
{
time_flag &=~b_time_20s; //定时20s清0
fun_delaytime_20s(); //20s中执行程序
}
if (time_flag &b_time_1min) //定时2min到
{
time_flag &=~b_time_1min; //定时2min清0
if (mode &b_fast_test)
{//快测10分钟后结束
// if (fast_test_time>1000)
if (fast_test_time>1250) //20080612 125:1
{//结束快测时,将故障计时清0,防止在慢测时溢出
mode &=~b_fast_test; //
rxd_nogood_time =0; //
tongxun_ok_time=0; //通讯正常时间
t_b_fault_tongxun=0; //通讯故障时间
t_b_fault_sht=0; //在1秒计时中定义SHT故障是否恢复
sht_ok_times=0; //SHT读正确次数清0
sht_noread_time=0; //20080222改为未读到SHT的计时
}
else fast_test_time++;
}
}
}
}
void fun_nofault_run(void) // 无故障时动作
{
if (mode & b_kaiji) //开机时根据手动,自动时条件选择
{
if ((mode&b_manual_on)==0) //自动on
{
if (t_auto_start>=10)
{//自动10秒后
fun_auto_set_caculate(); //计算设定值的温度湿度
fun_auto_set(); //10s后判定自动所处状态,选择具体模式
}
else
{
t_auto_start++; //10秒前加自动开始时间
manual_set=0; //刚进入自动时清除模式选择
}
manual_set |=b_fan_onask; //自动开机时内风机为开
manual_set &=~b_paishui_onask; //自动排水开请求始终为关
mokuai_set &=~b_jinshui_onask; //自动进水开请求始终为关
}
else //手动开机时取手动设定,无等待时间
{
manual_set =manual_act_ask; //手动开时以显示板或触摸屏的手动设置
if (manual_act_ask &0x74) //comp\heat1\heat2\humid开时风机默认为开
{
manual_set |=b_fan_onask; //comp\heat1\heat2\humid开时内风机为开
}
if ((manual_act_ask &b_comp_onask)==0) //手动开时comp不开时除湿阀、能量调节阀关
{
manual_set &=~b_yvadjust_onask; //
manual_set &=~b_dry_offask; //除湿关
}
if ((PINB &b_comp)==0)manual_set &=~b_yvadjust_onask; //压缩机未开时能量调节阀关
}
fun_act_on(); //根据请求动作manual_set
}
else fun_guanji(); //关机
}
void fun_txddata0_ID(void) //取uart0发送ID
{
unsigned char i,temp ;
i=0;
txd_data0[i]=0x7E; //头码
i++;
txd_data0[i]=0x7E;
i++;
txd_data0[i]=0xFF; //显示板地址FF
temp=txd_data0[i]; //异或校验
i++;
txd_data0[i]=0x40; //20080201 address; //本机地址
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=0x11; //包号
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=4; //长度
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=ID_l; //IDH机组ID号
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=ID_h; //IDl机组ID号
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=0x81; //回复IDl机组ID号命令81H
temp ^=txd_data0[i]; //异或校验
i++;
txd_data0[i]=temp; //异或校验
txd_len0_ask=10; //ask len
txd_rxd_delaytime0=00; //clear
txd_state0 |=rxd_txdstart0; //rxd_txdstart0=1
}
void fun_1232_wdt(void) //1232的看门狗翻转时钟脉冲
{
if (PING &b_watchdog) PORTG &=~b_watchdog;//PG4看门狗
else PORTG |=b_watchdog;
}
void fun_act_state(void) //计算输出状态1、2
{
unsigned char temp_txd =0; //数据6输出1
if (PINC &b_yv_dry) temp_txd |=0x08; //yv_dry=1
if (PIND &b_yv_comp) temp_txd |=0x04; //yv_comp=1
if (PIND &b_yv_in) temp_txd |=0x80; //yv_in=1
if (PIND &b_yv_out) temp_txd |=0x40; //yv_out=1
if (PINB &b_comp) temp_txd |=0x01; //comp=1
if (PING &b_ofan) temp_txd |=0x02; //b_ofan=1
if (PING &b_yv_adjust) temp_txd |=0x20; //b_yv_adjust=1
if (PIND &b_heat_comp) temp_txd |=0x10; //b_heat_comp=1
// if (mokuai_set &b_fault_rst_onask) temp_txd |=0x08; //故障复位命令已收到
act_state1 =temp_txd; //数据6输出1
temp_txd = mode &0x0f; //数据7输出2
if (PING &b_fan) temp_txd |=0x80; //b_fan=1
if (PIND &b_humid) temp_txd |=0x40; //humid=1
if (PINB &b_heat1) temp_txd |=0x20; //heat1=1
if (PINB &b_heat2) temp_txd |=0x10; //heat2=1
act_state2 =temp_txd; //数据7输出2
}
void fun_fault_reset(void) //故障复位程序
{//显示板或触摸屏设置的故障复位命令或按钮时将所有故障清除,并清除计时
fault_state=0; //故障标志
fault_state2=0; //故障标志
fault_state3=0; //故障标志
fault_state4=0; //故障标志
fault_state5=0; //故障标志
fault_state6=0; //故障标志
fault_lpp_times=0; //低压保护连续次数
fault_hpp_times=0; //h压保护连续次数
fault_exTH0_time=0; //排气感温包短路故障时间
fault_exTH0_times=0; //排气感温包短路故障次数
fault_exTHh_time=0; //排气温度过高故障时间
fault_exh_times=0; //排气温度保护次数
rxd_nogood_time =0; //通讯故障连续时间
fault_highwater_time =0; //高水位保护故障时间
fault_humid_lowi_time =0; //加湿电流连续5分钟低于1A
fault_i_humid_time =0; //加湿电流连续高过载
fault_low_fan_times =0; //风机低风压故障时间
sht_ok_times=0; //SHT读正确次数清0
t_b_fault_sht=0; //20080214在1秒计时中定义SHT故障是否恢复
b_fault_sht_times=0;
auto_state &=~b_sht_noACK; //清除SHT无应答标志
t_value_lowset_times=0; //clear
t_value_highset_times=0; //clear
rh_value_highset_times=0; //clear
rh_value_lowset_times=0; //clear
fault_comp_guozai_s=0; //清除压缩机过载故障时间计数
fault_comp_guozai_times =0; //压缩机过载故障出现次数=0
fault_overheat1_times=0;
fault_overheat2_times =0;
fault_pfan_times=0;
fault_nixiang_times=0;
fault_heatdai_times=0;
fault_pfilter_times=0; //20080114add
start_state2 &=~b_exTHh_delaystart;
start_state2 &=~b_exTH0_delaystart;
start_state2 &=~b_lpp_delay2start;
t_exh_delaytime=0; //计时清0
start_state2 &=~b_highwater_delaystart;
start_state2 &=~b_comp_gz_delaystart; //压缩机过载时启动计时3分钟
t_comp_gz_delaytime=0; //
comp_guozai_clear_time =0; //开始过载恢复的计时
t_lpp_compoff=0; //关压缩机时低压保护的监测
t_exTH0_delaytime=0; //计时清0
tongxun_ok_time=0; //通讯正常时间
t_b_fault_tongxun=0; //通讯故障时间
fault_tongxun_times=0;
sht_noread_time=0; //20080222改为未读到SHT的计时
NOP();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -