Sub_Working.c

#include "Sub_Sys.h"

// 系统工作处理
void Sub_Sys_Working(void)
{
	static uint32_t Fan_Start_Cnt = 0;
	// static uint32_t Sys_Run.outFan_end_Cnt = 0;//xg-230814N
	static uint16_t Compressor_Allow_Run_Cnt = 0;
	static uint32_t Open_Door_Mode_Cnt = 0;
	static uint32_t Run_Frq_Change_Cnt = 0;
	static uint16_t Compressor_Run_Frq_Level_Old = 0;
	int16_t Board_Temp_Aim_Tmp;

	Board_Temp_Aim_Tmp = MenuF_Val.MenuF_Struct.MenuF_Board_Temp_Aim * 10;
	// 定频模式
	if (MenuF_Val.MenuF_Struct.MenuF_INV_Or_No == 0)
	{
		// 制冷模式
		if (Sys_Run.Sys_Run_Mode == Cold_Mode)
		{
			if (Sys_Run.Sys_Run_Enable == 0 && Sys_Run.Fault_Code == 0) // 未运行
			{
				// 停机时制冷模式下 柜内温度大于目标温度5度系统启动
				if ((Sys_Run.Board_Temp > Board_Temp_Aim_Tmp))
				{
					if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 50)
					{
						if (Sys_Run.Compressor_Allow_Run_Flag)
						{
							Sys_Run.Sys_Run_Enable = 1;
						}
						else
						{
							Sys_Run.Sys_Run_Enable = 0;
						}
						// 压缩机速度给定
						Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed;
					}
					Sys_Run.Aim_Temp_Arrived_Delay = 0;
				}
			}
			// 定频运行中
			else if (Sys_Run.Sys_Run_Enable == 1)
			{
				// 温度达到目标温度
				if (Sys_Run.Board_Temp <= Board_Temp_Aim_Tmp)
				{
					if (Sys_Run.Aim_Temp_Arrived_Delay < 12000) // 120S
					{
						Sys_Run.Aim_Temp_Arrived_Delay++;
					}
					else
					{
						Sys_Run.Sys_Run_Enable = 0; // 停机

						Sys_Run.Compressor_Allow_Run_Flag = 0;
					}
				}
				else
				{
					Sys_Run.Aim_Temp_Arrived_Delay = 0;
				}
				Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed;
			}
			// 安全模式
			if ((MenuC_Val.MenuC_Struct.MenuC_Warning & 0xfffe) > 0) // xg-230814N  (Sys_Run.Warning_Code > 0)
			{
				Sys_Run.Sys_Run_Mode = Saft_Mode;
			}
			Open_Door_Mode_Cnt = 0;
		}
		// 开门模式
		else if (Sys_Run.Sys_Run_Mode == Open_Door_Mode)
		{
			if (Open_Door_Mode_Cnt < (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Open_Door_Time * 6000)
			{
				Open_Door_Mode_Cnt++;
			}
			else
			{
				Sys_Run.Sys_Run_Mode = Cold_Mode;
				Open_Door_Mode_Cnt = 0;
			}
		}
		else if (Sys_Run.Sys_Run_Mode == Sys_Waitling) // 待机
		{
			Sys_Run.Aim_Temp_Arrived_Delay = 0;
			Sys_Run.Sys_Run_Enable = 0; // 停机
			Open_Door_Mode_Cnt = 0;
		}
		// 安全模式
		else if (Sys_Run.Sys_Run_Mode == Saft_Mode)
		{
			if (Sys_Run.Sys_Run_Enable == 0) // 未运行
			{
				// 停机时制冷模式下 柜内温度大于目标温度5度系统启动
				if (Sys_Run.Board_Temp > MenuF_Val.MenuF_Struct.MenuF_Board_Temp_Aim)
				{
					if ((Sys_Run.Board_Temp - MenuF_Val.MenuF_Struct.MenuF_Board_Temp_Aim) >= 50)
					{
						if (Sys_Run.Compressor_Allow_Run_Flag)
						{
							Sys_Run.Sys_Run_Enable = 1;
						}
						else
						{
							Sys_Run.Sys_Run_Enable = 0;
						}
						// 压缩机速度给定
						Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Saft_Compressor_Speed;
					}
					Sys_Run.Aim_Temp_Arrived_Delay = 0;
				}
			}
			// 定频运行中
			else if (Sys_Run.Sys_Run_Enable == 1)
			{

				// 压缩机速度给定
				Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Saft_Compressor_Speed;

				if (MenuC_Val.MenuC_Struct.MenuC_Warning == 0)
				{
					Sys_Run.Sys_Run_Mode = Cold_Mode;
				}
			}
		}
		Run_Frq_Change_Cnt = 0;
		Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
	}
	// 变频模式
	else
	{
		// 制冷模式
		if (Sys_Run.Sys_Run_Mode == Cold_Mode)
		{
			if (Sys_Run.Sys_Run_Enable == 0 && Sys_Run.Fault_Code == 0) // 未运行
			{
				// 停机时制冷模式下 柜内温度大于目标温度5度系统启动
				if (Sys_Run.Board_Temp > Board_Temp_Aim_Tmp)
				{
					// static uint16_t Sys_Run_Enable = 0;

					if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 50)
					{
						if (Sys_Run.Compressor_Allow_Run_Flag)
						{
							Sys_Run.Sys_Run_Enable = 1;
						}
						else
						{
							Sys_Run.Sys_Run_Enable = 0;
						}
						// 压缩机速度给定
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_100;
					}
					Sys_Run.Aim_Temp_Arrived_Delay = 0;
				}
				else
				{
					Sys_Run.Compressor_Run_Frq_Level = Run_Frq_Non;
				}
				Run_Frq_Change_Cnt = 0;
			}
			// 变频运行中
			else if (Sys_Run.Sys_Run_Enable == 1)
			{
				// 每次调速后至少运行温区改变时间频率才可以改变
				if (Sys_Run.Compressor_Run_Frq_Change_Flag == 1)
				{
					if (Run_Frq_Change_Cnt < MenuF_Val.MenuF_Struct.MenuF_Temp_Change_Delay_Time * 100)
					{
						Run_Frq_Change_Cnt++;
					}
					else
					{
						Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
						Run_Frq_Change_Cnt = 0;
					}

					if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) <= 0) // 温差小于0度
					{
						Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
					}
				}
				else
				{
					if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 40) // 温差大于4度
					{
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_100;
						Sys_Run.Aim_Temp_Arrived_Delay = 0;
					}
					else if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 30) // 温差大于3度
					{
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_95;
						Sys_Run.Aim_Temp_Arrived_Delay = 0;
					}
					else if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 20) // 温差大于2度
					{
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_90;
						Sys_Run.Aim_Temp_Arrived_Delay = 0;
					}
					else if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 10) // 温差大于1度
					{
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_85;
						Sys_Run.Aim_Temp_Arrived_Delay = 0;
					}
					else if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) > 0) // 温差大于0度
					{
						Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_80;
						Sys_Run.Aim_Temp_Arrived_Delay = 0;
					}
					else // 停机
					{
						if (Sys_Run.Aim_Temp_Arrived_Delay < 12000) // 120S
						{
							Sys_Run.Aim_Temp_Arrived_Delay++;

							Sys_Run.Compressor_Run_Frq_Level = Compressor_Run_Frq_Lower; // 温度到达后运行最低速
						}
						else
						{
							Sys_Run.Compressor_Run_Frq_Level = Run_Frq_Non;
							Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
							Sys_Run.Sys_Run_Enable = 0;
							Sys_Run.Compressor_Allow_Run_Flag = 0;
						}
					}
					Run_Frq_Change_Cnt = 0;
				}
			}
			// 运行速度改变
			if (Sys_Run.Compressor_Run_Frq_Level > Run_Frq_Non)
			{
				if (Sys_Run.Compressor_Run_Frq_Level != Compressor_Run_Frq_Level_Old)
				{
					Sys_Run.Compressor_Run_Frq_Change_Flag = 1;

					if ((Sys_Run.Board_Temp - Board_Temp_Aim_Tmp) >= 50)
					{
						Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
					}
				}
			}
			Open_Door_Mode_Cnt = 0;
			// 安全模式
			if ((MenuC_Val.MenuC_Struct.MenuC_Warning & 0xfffe) > 0) // xg-230814N  
			{
				Sys_Run.Sys_Run_Mode = Saft_Mode;
			}
		}
		// 开门模式
		else if (Sys_Run.Sys_Run_Mode == Open_Door_Mode)
		{
			if (Open_Door_Mode_Cnt < (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Open_Door_Time * 6000)
			{
				Open_Door_Mode_Cnt++;
				Sys_Run.Compressor_Run_Frq_Level = Run_Frq_Non;
			}
			else
			{
				Sys_Run.Sys_Run_Mode = Cold_Mode;
				Open_Door_Mode_Cnt = 0;
			}
			Sys_Run.Compressor_Run_Frq_Change_Flag = 0;
			Run_Frq_Change_Cnt = 0;
			// 安全模式
		}
		else if (Sys_Run.Sys_Run_Mode == Sys_Waitling) // 待机
		{
			Sys_Run.Aim_Temp_Arrived_Delay = 0;
			Sys_Run.Sys_Run_Enable = 0; // 停机
			Open_Door_Mode_Cnt = 0;
			Run_Frq_Change_Cnt = 0;
		}
		// 安全模式
		else if (Sys_Run.Sys_Run_Mode == Saft_Mode)
		{
			if (Sys_Run.Sys_Run_Enable == 0) // 未运行
			{
				// 停机时制冷模式下 柜内温度大于目标温度4度系统启动
				if (Sys_Run.Board_Temp > MenuF_Val.MenuF_Struct.MenuF_Board_Temp_Aim)
				{
					if ((Sys_Run.Board_Temp - MenuF_Val.MenuF_Struct.MenuF_Board_Temp_Aim) >= 40)
					{
						if (Sys_Run.Compressor_Allow_Run_Flag)
						{
							Sys_Run.Sys_Run_Enable = 1;
						}
						else
						{
							Sys_Run.Sys_Run_Enable = 0;
						}
					}
					Sys_Run.Aim_Temp_Arrived_Delay = 0;
				}
			}
			// 运行中
			else if (Sys_Run.Sys_Run_Enable == 1)
			{
				;
			}

			if (MenuC_Val.MenuC_Struct.MenuC_Warning == 0)
			{
				Sys_Run.Sys_Run_Mode = Cold_Mode;
			}
		}
		// 压缩机速度给定
		Sys_Run.Compressor_Run_Speed = Compressor_Run_Frq_Adjust(Sys_Run.Compressor_Run_Frq_Level);
		// 安全模式频率
		if (Sys_Run.Sys_Run_Mode == Saft_Mode)
		{
			Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Saft_Compressor_Speed;
		}
	}
	//============================================================================
	// 最大频率限制为安全模式频率。 板载温度传感器故障、排温传感器故障    //xg-230814N
	if (((Sys_Run.Warning_Code & 0x0001) != 0) || ((MenuC_Val.MenuC_Struct.MenuC_Error1 & 0x0004) != 0))
	{
		if (Sys_Run.Compressor_Run_Speed >= MenuF_Val.MenuF_Struct.MenuF_Saft_Compressor_Speed)
		{
			Sys_Run.Compressor_Run_Speed = MenuF_Val.MenuF_Struct.MenuF_Saft_Compressor_Speed;
		}
	}
	//============================================================================
	// 发生故障时关机
	if ((Sys_Run.Fault_Code > 0)								 // 通讯故障不停机
		&& (Sys_Run.Fault_Code != Comm_Error)					 // 12//Mos温度传感器故障不停机	//xg-230814N
		&& ((MenuC_Val.MenuC_Struct.MenuC_Error1 & 0x0002) != 0) //(Sys_Run.Fault_Code != Mos_Temp_Sensor_Error)\

		// 柜温传感器故障不停机
		&& (Sys_Run.Fault_Code != Board_Temp_Sensor_Error))
	{
#if (Sys_Falut_Run_Disable == 1)
		// Sys_Run.Sys_Run_Enable = 0;
		// Sys_Run.Sys_Run_Mode = Sys_Waitling;
		Sys_Run.InDoor_Fan_Run_Enable = 0;
		Sys_Run.OUT_Door_Fan_Run_Enable = 0;
		Fan_Start_Cnt = 0;
		Compressor_Allow_Run_Cnt = 0;
		Sys_Run.Compressor_Allow_Run_Flag = 0;
		Sys_Run.Sys_Run_Enable = 0;
#else
		Fan_Start_Cnt = 0;
#endif
	}

	if ((Sys_Run.Fault_Code > 0) && (Sys_Run.Fault_Code != 14) && ((Sys_Run.Fault_Code == Over_Voltage_Error) || (Sys_Run.Fault_Code == Under_Voltage_Error)))
	{
		Sys_Run.InDoor_Fan_Run_Enable = 0;
		Sys_Run.OUT_Door_Fan_Run_Enable = 0;
		Fan_Start_Cnt = 0;
		Sys_Run.outFan_end_Cnt = 1700;
		Compressor_Allow_Run_Cnt = 0;
		Sys_Run.Compressor_Allow_Run_Flag = 0;
		Sys_Run.Sys_Run_Enable = 0;
	}

	// 风机以及压缩机运行控制
	if (Sys_Run.Sys_Run_Enable == 1)
	{
		Sys_Run.outFan_end_Cnt = 0; // xg-230814N
		// 风机先运行
		if (Fan_Start_Cnt < 1650) // 风机固定运行30S//3300 xg-230814N
		{
			Fan_Start_Cnt++;
			Sys_Run.InDoor_Fan_Run_Enable = 1;
			Sys_Run.OUT_Door_Fan_Run_Enable = 1;
			Sys_Run.Compressor_Run_Enable = 0;
		}
		else
		{
			Sys_Run.Compressor_Run_Enable = 1;
		}
		// 压缩机允许运行计时清零
		Compressor_Allow_Run_Cnt = 0;
	}
	else
	{
		// 停机状态清零运行状态
		Fan_Start_Cnt = 0;
		Sys_Run.Compressor_Run_Enable = 0;

		if (Sys_Run.outFan_end_Cnt < 1650) // xg-230814N
		{
			Sys_Run.outFan_end_Cnt++;
			Sys_Run.OUT_Door_Fan_Run_Enable = 1;
			Sys_Run.InDoor_Fan_Run_Enable = 1;
		}
		else
		{
			Sys_Run.OUT_Door_Fan_Run_Enable = 0;
			Sys_Run.InDoor_Fan_Run_Enable = 0;
		}

		Sys_Run.Sys_Run_Enable = 0;

		// 压缩机允许运行计时
		if (Sys_Run.Compressor_Allow_Run_Flag == 0)
		{
			if (Compressor_Allow_Run_Cnt < ((MenuF_Val.MenuF_Struct.MenuF_Compressor_Run_Delay_Time * 100) + 100)) // 等待延迟后运行
			{
				Compressor_Allow_Run_Cnt++;
				// 当压缩机真正停机后才开始计时
				if (Uart1_Val.RS485_OK > 0)
				{
					if (MenuC_Val.MenuC_Struct.MenuC_Compressor_Speed > 0)
					{
						Compressor_Allow_Run_Cnt = 0;
					}
				}
			}
			else
			{
				Sys_Run.Compressor_Allow_Run_Flag = 1;
				Compressor_Allow_Run_Cnt = 0;
			}
		}
		else
		{
			Compressor_Allow_Run_Cnt = 0;
		}
	}
	// 开门模式压缩机不运行 内风机停机  外风机运行
	if ((Sys_Run.Sys_Run_Mode == Open_Door_Mode) && (Sys_Run.Fault_Code == 0))
	{
		Sys_Run.Sys_Run_Enable = 0;
		Sys_Run.InDoor_Fan_Run_Enable = 0;
		Sys_Run.OUT_Door_Fan_Run_Enable = 1;
		// Compressor_Allow_Run_Cnt = 0;
		Fan_Start_Cnt = 0;
	}
	Compressor_Run_Frq_Level_Old = Sys_Run.Compressor_Run_Frq_Level;
}
// 变频模式下压缩机运行频率调节
uint16_t Compressor_Run_Frq_Adjust(uint16_t Val)
{
	uint16_t Val1;
	uint16_t i;

	if (Val == Compressor_Run_Frq_100)
	{
		Val1 = MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed;
	}
	else if (Val == Compressor_Run_Frq_95)
	{
		Val1 = (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed * 95 / 100;
	}
	else if (Val == Compressor_Run_Frq_90)
	{
		Val1 = (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed * 90 / 100;
	}
	else if (Val == Compressor_Run_Frq_85)
	{
		Val1 = (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed * 85 / 100;
	}
	else if (Val == Compressor_Run_Frq_80)
	{
		Val1 = (uint32_t)MenuF_Val.MenuF_Struct.MenuF_Cold_Compressor_Speed * 80 / 100;
	}
	else if (Val == Compressor_Run_Frq_Lower)
	{
		Val1 = MenuF_Val.MenuF_Struct.MenuF_P_Compressor_Min_Speed;
	}
	else if (Val == Run_Frq_Non)
	{
		Val1 = 0;
	}
	// 最低频率限制
	if (Val > Run_Frq_Non)
	{
		if (Val1 < MenuF_Val.MenuF_Struct.MenuF_P_Compressor_Min_Speed)
		{
			Val1 = MenuF_Val.MenuF_Struct.MenuF_P_Compressor_Min_Speed;
		}
	}
	// 共振频率处理 范围±2HZ
	for (i = 0; i < 10; i++)
	{
		if (MenuL_Val.MenuL_Union_Val[i] > 0 && MenuL_Val.MenuL_Union_Val[i] >= MenuF_Val.MenuF_Struct.MenuF_P_Compressor_Min_Speed)
		{
			if ((Val1 > (MenuL_Val.MenuL_Union_Val[i] - 2)) && (Val1 < (MenuL_Val.MenuL_Union_Val[i] + 2)))
			{
				Val1 = MenuL_Val.MenuL_Union_Val[i] + 2;
			}
		}
	}

	return Val1;
}
// 系统变量传递
void Sys_Val_Exchange(void)
{
	uint8_t i;
	static uint16_t Fault_Code_Old = 0;
	static uint16_t Warning_Code_Old = 0;
	static uint32_t Fault_Code_Temp = 0;
	static uint16_t Over_Voltage_Cnt = 0;
	static uint16_t Over_Voltage_Reset_Cnt = 0;
	static uint16_t Under_Voltage_Cnt = 0;
	static uint16_t Under_Voltage_Reset_Cnt = 0;
	static uint16_t Over_Voltage_Flag = 0;
	static uint16_t Under_Voltage_Flag = 0;
	//---------------------------
	//	 static uint8_t  errcnt,errnumb;
	//	 uint8_t  errall[16];
	//---------------------------

	// 柜内温度
	Sys_Run.Board_Temp = MenuC_Val.MenuC_Struct.MenuC_Board_Temp;
	if ((MenuC_Val.MenuC_Struct.MenuC_Warning & 0x0002) != 0) // xg-230814N  避免断路无穷低无法启动
	{
		Sys_Run.Board_Temp = 650;
	}

	// 故障
	Fault_Code_Temp = ((uint32_t)MenuC_Val.MenuC_Struct.MenuC_Error2 << 16) + MenuC_Val.MenuC_Struct.MenuC_Error1;

	MenuC_Val.MenuC_Struct.MenuC_Set_Speed = Sys_Run.Compressor_Run_Speed;
	// 先清零
	Sys_Run.Fault_Code = 0;
	Sys_Run.Warning_Code = 0;
	Sys_Run.errnumb = 0;
	Sys_Run.diserr = 0;
	for (i = 0; i < 16; i++)
	{
		Sys_Run.errall[i] = 0;
	}
	Sys_Run.Fault_Code = 16; // 电流检测错误

	// 面板过压 通讯正常时才判断
	if (Uart1_Val.RS485_OK > 0)
	{
		if (MenuC_Val.MenuC_Struct.MenuC_Udc > MenuF_Val.MenuF_Struct.MenuF_Over_Udc)
		{
			// 2S
			if (Over_Voltage_Cnt < 200)
				Over_Voltage_Cnt++;
			else
			{
				Over_Voltage_Flag = 1; // Sys_Run.Fault_Code = 1;//过压
			}
			Over_Voltage_Reset_Cnt = 0;
		}
		else if (MenuC_Val.MenuC_Struct.MenuC_Udc <= (MenuF_Val.MenuF_Struct.MenuF_Over_Udc - 2))
		{
			// 过压恢复
			if (Over_Voltage_Reset_Cnt < 250)
				Over_Voltage_Reset_Cnt++; // 2.5s
			else
			{
				Over_Voltage_Flag = 0;
			}
			Over_Voltage_Cnt = 0;
		}
		// 面板欠压
		if (MenuC_Val.MenuC_Struct.MenuC_Udc < MenuF_Val.MenuF_Struct.MenuF_Under_Udc)
		{
			// 5S
			if (Under_Voltage_Cnt < 500)
				Under_Voltage_Cnt++;
			else
			{
				Under_Voltage_Flag = 1; // Sys_Run.Fault_Code = 2;//欠压
			}
			Under_Voltage_Reset_Cnt = 0;
		}
		else if (MenuC_Val.MenuC_Struct.MenuC_Udc >= (MenuF_Val.MenuF_Struct.MenuF_Under_Udc + 2))
		{
			// 欠压恢复
			if (Under_Voltage_Reset_Cnt < 250)
				Under_Voltage_Reset_Cnt++; // 2.5s
			else
			{
				Under_Voltage_Flag = 0;
			}
			Under_Voltage_Cnt = 0;
		}
		// 排气断线
		if (MenuC_Val.MenuC_Struct.MenuC_Warning & 0x0001)
		{
			// Sys_Run.Fault_Code = 11;
			Sys_Run.Warning_Code = 15;
			Sys_Run.errall[Sys_Run.errnumb] = 15; // 排气传感器故障
			Sys_Run.errnumb++;
		}
		// 环温断线
		if (MenuC_Val.MenuC_Struct.MenuC_Warning & 0x0002)
		{
			// Sys_Run.Fault_Code = 11;
			Sys_Run.Warning_Code = 11;
		}
	}
	// 过压
	if (Over_Voltage_Flag == 1)
	{
		Sys_Run.Fault_Code = 1;
	}
	// 欠压
	if (Under_Voltage_Flag == 1)
	{
		Sys_Run.Fault_Code = 2;
	}
	// 通讯故障
	if (Uart1_Val.RS485_Error > 0)
	{
		Sys_Run.Warning_Code = 8;
	}

	// xg-230814N	----------------------------------------------------------------
	// 故障判断
	if ((Fault_Code_Temp & 0x00000001) != 0) // b0
	{
		Sys_Run.Fault_Code = 4;
		Sys_Run.errall[Sys_Run.errnumb] = 4; // 硬件过流
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00000002) != 0) // b1
	{
		Sys_Run.Fault_Code = 7;
		Sys_Run.errall[Sys_Run.errnumb] = 7; // 堵转失步
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00000004) != 0) // b2
	{
		Sys_Run.Fault_Code = 14;
		Sys_Run.errall[Sys_Run.errnumb] = 14; // mos温度传感器故障
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00000008) != 0) // b3
	{
		Sys_Run.Fault_Code = 5;
		Sys_Run.errall[Sys_Run.errnumb] = 5; // mos温度过高
		Sys_Run.errnumb++;
	}

	if (((Fault_Code_Temp & 0x00000010) != 0) || (Under_Voltage_Flag == 1)) // b4
	{
		Sys_Run.Fault_Code = 2;
		Sys_Run.errall[Sys_Run.errnumb] = 2; // 欠压
		Sys_Run.errnumb++;
	}
	if (((Fault_Code_Temp & 0x00000020) != 0) || (Over_Voltage_Flag == 1)) // b5
	{
		Sys_Run.Fault_Code = 1;
		Sys_Run.errall[Sys_Run.errnumb] = 1; // 过压
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00000040) != 0) // b6
	{
		Sys_Run.Fault_Code = 6;
		Sys_Run.errall[Sys_Run.errnumb] = 6; // 输出缺相
		Sys_Run.errnumb++;
	}

	if ((Fault_Code_Temp & 0x00000100) != 0) // b8
	{
		Sys_Run.Fault_Code = 3;
		Sys_Run.errall[Sys_Run.errnumb] = 3; // 软件过流
		Sys_Run.errnumb++;
	}
	if (((Fault_Code_Temp & 0x00000200) != 0) || (Sys_Run.Warning_Code == 8)) // b9
	{
		Sys_Run.Fault_Code = 8;
		Sys_Run.errall[Sys_Run.errnumb] = 8; // 通讯故障
		Sys_Run.errnumb++;
	}

	if ((Fault_Code_Temp & 0x00002000) != 0) // b13
	{
		Sys_Run.Fault_Code = 9;
		Sys_Run.errall[Sys_Run.errnumb] = 9; // 压力开关断开
		Sys_Run.errnumb++;
	}

	if ((Fault_Code_Temp & 0x00200000) != 0) // b21
	{
		Sys_Run.Fault_Code = 10;
		Sys_Run.errall[Sys_Run.errnumb] = 10; // 排气过温
		Sys_Run.errnumb++;
	}

	if (((Fault_Code_Temp & 0x00020000) != 0) || (Sys_Run.Warning_Code == 11)) // b17
	{
		Sys_Run.Fault_Code = 11;
		Sys_Run.errall[Sys_Run.errnumb] = 11; // 柜内温度传感器故障
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00080000) != 0) // b19
	{
		Sys_Run.Fault_Code = 17;
		Sys_Run.errall[Sys_Run.errnumb] = 17; // 室内风机故障
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x00100000) != 0) // b20
	{
		Sys_Run.Fault_Code = 18;
		Sys_Run.errall[Sys_Run.errnumb] = 18; // 室外风机故障
		Sys_Run.errnumb++;
	}
	if ((Fault_Code_Temp & 0x04000000) != 0) // b26
	{
		Sys_Run.Fault_Code = 16;
		Sys_Run.errall[Sys_Run.errnumb] = 16; // 电流检测错误
		Sys_Run.errnumb++;
	}

	if (Sys_Run.errcnt >= Sys_Run.errnumb)
	{
		Sys_Run.errcnt = 0;
	}
	Sys_Run.diserr = Sys_Run.errall[Sys_Run.errcnt];

	//-------------------------------------------------------------//xg-230814N
	{

		if (((Sys_Run.Fault_Code > 0) && (Fault_Code_Old != Sys_Run.Fault_Code)) || ((Sys_Run.Warning_Code > 0) && (Warning_Code_Old != Sys_Run.Warning_Code)))
		{
			// Sys_Run.Buzzer_Drv_Time += 100;//每次按键蜂鸣器运行100ms
			Sys_Run.Buzzer_Fault_Reset = 1;
			Sys_Run.Buzzer_Fault_Run_Flag = 1;
		}

		Fault_Code_Old = Sys_Run.Fault_Code; // Sys_Run.Fault_Code;
		Warning_Code_Old = Sys_Run.Warning_Code;
	}
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值