📄 disp_control.c
字号:
T_ch7=0xdd07;
trip_flag=26;//跳闸记录标志
}
else
{T_ch7=0xff07;
trip_record(26);
}
}
else if((temp_alarm&0x0040)==0x0040)
{
alarm_flag_son(26);
T_ch7=0xdd07;
}
else
T_ch7=0;
if((temp_trip&0x0080)==0x0080)
{
if(status==0xcc)
{
T_ch8=0xdd08;
trip_flag=27;//跳闸记录标志
}
else
{T_ch8=0xff08;
trip_record(27);
}
}
else if((temp_alarm&0x0080)==0x0080)
{
alarm_flag_son(27);
T_ch8=0xdd08;
}
else
T_ch8=0;
}
/*********************************************************************/
void dol_led()//DOL指示灯
{
if(Starcrv_sel==0x05)
dol_f=0;
else
dol_f=1;
}
void turn_led()//TURN指示灯
{
if(motor_turn==0xba)
turn_f=0;
else
turn_f=1;
}
void control_mode_led()//控制模式指示灯
{
if(Ctrl_mode==0xca)
{
remote_f=1;
local_f=0;
}
else if (Ctrl_mode==0xcd)
{
remote_f=0;
local_f=1;
}
}
/*************************************************************************************/
void write_temp_comm()//温度报警相关子程序
{
temp_trip_b=temp_trip;
temp_trip_alarm();
clear1();
delay(2000);
clear1();
pic_number300();
}
//--------------------------------------------------------------------------------------------------------------------------
//Interrupt Section for CAN2
//--------------------------------------------------------------------------------------------------------------------------
void __attribute__((interrupt, no_auto_psv)) _C2Interrupt(void){
IFS2bits.C2IF = 0; // Clear interrupt flag
if(C2INTFbits.RX0IF)//接收
{
C2INTFbits.RX0IF = 0;
page = C2RX0B1;
InData2[0] = C2RX0B2;
InData2[1] = C2RX0B3;
InData2[2] = C2RX0B4;
C2RX0CONbits.RXFUL=0;
switch (page)
{
//接收主显示
case 0x1101:
{
I_a_value=InData2[0];//主显示初值
I_b_value=InData2[1];
I_c_value=InData2[2];
}break;
case 0x1102:
{
U_a_value=InData2[0];//主显示初值
U_b_value=InData2[1];
U_c_value=InData2[2];
}break;
case 0x1103://接收功率参数
{
cosa=InData2[0]>>8;//小数点后2位,高字节
sina=InData2[0];//小数点后2位,低字节
power_kwh_h=InData2[1];//一个高字
power_kwh_l=InData2[2];//一个低字
temp_flag=0xaa12;//接收完功率因数标志,等待发送索求温度数据
} break;
//接收基本起动参数
case 0x1104:
{
Starcrv_sel=InData2[0]>>8; //起动参数初值
Stopcrv_sel=InData2[0];
Init_volt1=InData2[1]>>8;
Init_volt2=InData2[1];
I_loaded=InData2[2]>>8;
Raise_time=InData2[2];
dol_led();//DOL灯显示
}break;
case 0x1105:
{
Istrlimit=InData2[0]; //起动参数初值
Tstrlimit=InData2[1]>>8;
Intvlstrs=InData2[1];
Ctrl_mode=InData2[2]>>8;
control_mode_led();
Frequency=InData2[2];
}break;
//------------------------------------------------------------
//接收保护参数
//------------------------------------------------------------
case 0x1108://第36画面
{
over_current_enable=InData2[0];
over_current_alarm_l=(InData2[1]>>8)*10;
over_current_alarm_d=InData2[1];
over_current_trip_l=(InData2[2]>>8)*10;
over_current_trip_d=InData2[2];
}break;
case 0x1109://第37画面
{
short_circuit_enable=InData2[0];
short_circuit_t_l=(InData2[1]>>8)*10;
short_circuit_t_d=InData2[1];
}break;
case 0x110a://第38画面
{
under_current_enable=InData2[0];
under_current_alarm_l=(InData2[1]>>8)*10;
under_current_alarm_d=InData2[1];
under_current_trip_l=(InData2[2]>>8)*10;
under_current_trip_d=InData2[2];
}break;
case 0x110b://第39画面
{
unsym_current_enable=InData2[0];
unsym_current_alarm_l=(InData2[1]>>8)*10;
unsym_current_alarm_d=InData2[1];
unsym_current_trip_l=(InData2[2]>>8)*10;
unsym_current_trip_d=InData2[2];
}break;
case 0x110c://第40画面
{
earth_fault_enable=InData2[0];
earth_fault_alarm_l=(InData2[1]>>8)*10;
earth_fault_alarm_d=InData2[1];
earth_fault_trip_l=(InData2[2]>>8)*10;
earth_fault_trip_d=InData2[2];
}break;
case 0x110d://第41画面
{
under_voltage_enable=InData2[0];
under_voltage_alarm_l=(InData2[1]>>8)*10;
under_voltage_alarm_d=InData2[1];
under_voltage_trip_l=(InData2[2]>>8)*10;
under_voltage_trip_d=InData2[2];
}break;
case 0x110e://第42画面
{
over_voltage_enable=InData2[0];
over_voltage_alarm_l=(InData2[1]>>8)*10;
over_voltage_alarm_d=InData2[1];
over_voltage_trip_l=(InData2[2]>>8)*10;
over_voltage_trip_d=InData2[2];
}break;
case 0x110f://第43画面
{
power_factor_enable=InData2[0];
power_factor_alarm_l=(InData2[1]>>8);
power_factor_alarm_d=InData2[1];
power_factor_trip_l=(InData2[2]>>8);
power_factor_trip_d=InData2[2];
}break;
case 0x1110://第44画面
{
phase_loss_enable=InData2[0];
}break;
case 0x1111://第45画面
{
phase_sequence_enable=InData2[0];
}break;
case 0x1112://第46画面
{
steep_load_enable=InData2[0];
steep_load_alarm_l=(InData2[1]>>8)*10;
steep_load_alarm_d=InData2[1];
steep_load_trip_l=(InData2[2]>>8)*10;
steep_load_trip_d=InData2[2];
}break;
case 0x1113://第47画面
{
thermal_overload_enable=InData2[0];
thermal_overload_alarm_l=(InData2[1]>>8)*10;
thermal_overload_alarm_d=InData2[1];
thermal_overload_trip_l=(InData2[2]>>8)*10;
thermal_overload_trip_d=InData2[2];
}break;
case 0x1114://第48画面
{
rotor_blocking_enable=InData2[0];
rotor_blocking_trip_l=(InData2[1]>>8)*10;
rotor_blocking_trip_d=InData2[1];
}break;
case 0x1115://第49画面
{
comm_error_enable=InData2[0];
}break;
case 0x1116://第50画面
{
power_uint_error_lost_sync=InData2[0];
power_uint_error_lost_trigger=InData2[1];
power_uint_error_breakdown=InData2[2];
tran_require(0x1c5a); //向从机发送要求初始化温度报警\跳闸设定指令
}break;
//------------------------------------- ------------------------
//接收motor_turn参数
//--------------------------------------------------------------
case 0x1117://接收功能参数
{
motor_turn=InData2[0];
turn_pause=InData2[1];
turn_puls=InData2[2];
turn_led();
}break;
//------------------------------------- ------------------------
//接收modibus参数
//--------------------------------------------------------------
case 0x1118://接收功能参数
{
modibus_enable=InData2[0];
modibus_rate=InData2[1];
modibus_address=InData2[2];
}break;
//-------------------------------------------------------------
//接收时间(年、月、日、小时、分钟)
//--------------------------------------------------------------
case 0x1120://接收时间参数
{
year=InData2[0];
month=InData2[1]>>8;
date=InData2[1];
hour=InData2[2]>>8;
minute=InData2[2];
}break;
//--------------------------------------------------------------
//接收状态信息
//--------------------------------------------------------------
case 0x1301://待命状态
{
power_kw=0;//有功和无功在待命状态显示为0
power_kvar=0;
P_factor=0;
minute_stop=minute;//停止时间
if(minute_stop>minute_run)
{
minute_total=(minute_stop-minute_run);//
run_time=(read_eeprom(0xfc30)+minute_total);
write_word(0xfc30,run_time);
}
if(minute_stop<minute_run)
{
minute_dis=(minute_run-minute_stop);
run_time=(read_eeprom(0xfc30)+(60-minute_dis));
write_word(0xfc30,run_time);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -