📄 checkroutine.c
字号:
/////////////////////////////////////////////////////////////////////////////////////
// 程序名: BaseCheck.c
// 装置自检及运行自检
/////////////////////////////////////////////////////////////////////////////////////
#include "BaseVariable.h"
CHECK DO_Check; //开出自检结构体
CHECK AD_Check; //AD自检结构体
CHECK SET_ZONE_Check; //定值区自检结构体
CHECK PARA_SET_Check; //参数自检结构体
CHECK PRO_SET_Check; //定值自检结构体
CHECK ControlTest_Check; //控制回路自检结构体
CHECK Spring_Test_Check; //弹簧蓄能自检结构体
VOID TestFailure(CHECK *pCheck); //自检出错处理
VOID TestRecovery(CHECK *pCheck); //自检返回处理
VOID THFailure(CHECK *pCheck); //自检出错处理
VOID THRecovery(CHECK *pCheck); //自检返回处理
UNSIGNED uADErrorCNT;
/***********************************************************************************/
/* AD自检初始化 */
/***********************************************************************************/
void AD_Check_Initialize(CHECK *pCheckIni) //AD自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //AD自检ID号
//SOE
pCheck->pSOE_name = "A/D出错"; //AD自检出错名称
pCheck->pSOE_back_name = "A/D出错返回"; //AD自检出错返回名称
pCheck->SOE_Inf = 197; //AD自检出错103规约的INF号
//闭锁保护
pCheck->closedown = 1; //AD自检出错时,闭锁保护
}
/***********************************************************************************/
/* 开出回路自检初始化 */
/***********************************************************************************/
void DO_Check_Initialize(CHECK *pCheckIni) //开出自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //开出自检ID号
//SOE
pCheck->pSOE_name = "开出回路出错"; //开出自检出错名称
pCheck->pSOE_back_name = "开出回路出错返回"; //开出自检出错返回名称
pCheck->SOE_Inf = 201; //开出自检出错103规约的INF号
//闭锁保护
pCheck->closedown = 1; //开出自检出错时,闭锁保护
}
/***********************************************************************************/
/* 定值区号自检初始化 */
/***********************************************************************************/
void SET_ZONE_Initialize(CHECK *pCheckIni) //定值区号自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //定值区号自检ID号
//SOE
pCheck->pSOE_name = "定值区号出错"; //定值区号自检出错名称
pCheck->pSOE_back_name = "定值区号出错返回"; //定值区号自检出错返回名称
pCheck->SOE_Inf = 223; //定值区号自检出错103规约的INF号
//闭锁保护
pCheck->closedown = 1; //定值区号自检出错时,闭锁保护
}
/***********************************************************************************/
/* 参数自检初始化 */
/***********************************************************************************/
void PARA_SET_Initialize(CHECK *pCheckIni) //参数自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //参数自检ID号
//SOE
pCheck->pSOE_name = "EEROM出错"; //参数自检出错名称
pCheck->pSOE_back_name = "EEROM出错返回"; //参数自检出错返回名称
pCheck->SOE_Inf = 196; //参数自检出错103规约的INF号
//闭锁保护
pCheck->closedown = 1; //参数自检出错时,闭锁保护
}
/***********************************************************************************/
/* 定值自检初始化 */
/***********************************************************************************/
void PRO_SET_Initialize(CHECK *pCheckIni) //定值自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //定值自检ID号
//SOE
pCheck->pSOE_name = "定值出错"; //定值自检出错名称
pCheck->pSOE_back_name = "定值出错返回"; //定值自检出错返回名称
pCheck->SOE_Inf = 222; //定值自检出错103规约的INF号
//闭锁保护
pCheck->closedown = 1; //定值自检出错时,闭锁保护
}
/***********************************************************************************/
/* 控制回路自检初始化 */
/***********************************************************************************/
void ControlCircuitTest_Initialize(CHECK *pCheckIni) //控制回路自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //控制回路自检ID号
//SOE
pCheck->pSOE_name = "控制回路异常"; //控制回路自检出错名称
pCheck->pSOE_back_name = "控制回路异常返回"; //控制回路自检出错返回名称
pCheck->SOE_Inf = 203; //控制回路自检出错103规约的INF号
}
/***********************************************************************************/
/* 弹簧蓄能自检初始化 */
/***********************************************************************************/
void Spring_Test_Initialize(CHECK *pCheckIni) //弹簧蓄能自检结构体初始化
{
register CHECK *pCheck = pCheckIni;
//ID号
pCheck->chk_id = CHK_Total_Check; //弹簧蓄能自检ID号
//SOE
pCheck->pSOE_name = "弹簧未储能"; //弹簧蓄能自检出错名称
pCheck->pSOE_back_name = "弹簧未储能返回"; //弹簧蓄能自检出错返回名称
pCheck->SOE_Inf = 168; //弹簧蓄能自检出错103规约的INF号
}
/***********************************************************************************/
/* 自检告警程序 */
/***********************************************************************************/
REPORT TestReport;
VOID TestFailure(CHECK *pCheckx) //自检告警程序
{
register REPORT *pRPT;
register SOE *pSOE;
register CHECK *pCheck = pCheckx;
Qdj(); //启动继电器动作,开放+24V
Gxj(); //驱动告警信号继电器
if (pCheck->closedown) //是否闭锁保护
Bsj(); //闭锁继电器动作
pCheck->startup_flag = 1; //自检启动标志
pCheck->pickup_flag = 1; //自检动作标志
pRPT = &TestReport; //填报告
pSOE = &pRPT->pro_report_soe; //SOE 动作名称
pSOE->pSOE_name = pCheck->pSOE_name;
strcpy(pSOE->SOE_name,pCheck->pSOE_name);
pSOE->SOE_Inf = pCheck->SOE_Inf; //103规约INF号
pSOE->DPI = 2; //动作状态
READ_DEC_TIME(&pSOE->Year); //时间
pRPT->pro_report_data_number = 0; //无模拟量数据
pRPT->pro_report_flag = 1; //报告标志
pRPT->mmi_flag = MMIDISPLAY + MMIPICKUP; //自动显示
Fill_Report(pRPT); //填到RAM报告区
}
VOID THFailure(CHECK *pCheckx) //自检告警程序
{
register REPORT *pRPT;
register SOE *pSOE;
register CHECK *pCheck = pCheckx;
Qdj(); //启动继电器动作,开放+24V
Gxj(); //驱动告警信号继电器
if (pCheck->closedown) //是否闭锁保护
Bsj(); //闭锁继电器动作
pCheck->startup_flag = 1; //自检启动标志
pCheck->pickup_flag = 1; //自检动作标志
pRPT = &TestReport; //填报告
pSOE = &pRPT->pro_report_soe; //SOE 动作名称
pSOE->pSOE_name = pCheck->pSOE_name;
strcpy(pSOE->SOE_name,pCheck->pSOE_name);
pSOE->SOE_Inf = pCheck->SOE_Inf; //103规约INF号
pSOE->DPI = 1; //动作状态
READ_DEC_TIME(&pSOE->Year); //时间
pRPT->pro_report_data_number = 0; //无模拟量数据
pRPT->pro_report_flag = 41; //报告标志
pRPT->mmi_flag = MMIDISPLAY + MMIPICKUP; //自动显示
Fill_Report(pRPT); //填到RAM报告区
}
/***********************************************************************************/
/* 告警返回程序 */
/***********************************************************************************/
VOID TestRecovery(CHECK *pCheckx) //自检返回报告
{
register UNSIGNED i;
register REPORT *pRPT;
register SOE *pSOE;
register CHECK *pCheck = pCheckx;
pCheck->startup_flag = 0; //启动标志清0
pCheck->pickup_flag = 0; //动作标志清0
pRPT = &TestReport; //填报告
pSOE = &pRPT->pro_report_soe; //SOE 返回名称
pSOE->pSOE_name = pCheck->pSOE_back_name;
strcpy(pSOE->SOE_name,pCheck->pSOE_back_name);
pSOE->SOE_Inf = pCheck->SOE_Inf; //103规约INF号
pSOE->DPI = 1; //捣回状态
READ_DEC_TIME(&pSOE->Year); //时间
pRPT->pro_report_data_number = 0; //无模拟量数据
pRPT->pro_report_flag = 1; //报告标志
pRPT->mmi_flag = 0; //不自动显示
Fill_Report(pRPT); //填到RAM报告区
pRPT = pReportRVT; //将报告区中的动作报告找到,并清动作标志,
while (pRPT != pReportIN) //待到复归时,将该报告置为不自动显示
{
pSOE = &pRPT->pro_report_soe;
if (pSOE->SOE_Inf = pCheck->SOE_Inf)
{
pRPT->mmi_flag &= ~MMIPICKUP;
break;
}
else
{
if (++pRPT > &ReportRAM[REPORTRAM - 1])
pRPT = ReportRAM;
}
}
}
VOID THRecovery(CHECK *pCheckx) //自检返回报告
{
register UNSIGNED i;
register REPORT *pRPT;
register SOE *pSOE;
register CHECK *pCheck = pCheckx;
pCheck->startup_flag = 0; //启动标志清0
pCheck->pickup_flag = 0; //动作标志清0
pRPT = &TestReport; //填报告
pSOE = &pRPT->pro_report_soe; //SOE 返回名称
pSOE->pSOE_name = pCheck->pSOE_back_name;
strcpy(pSOE->SOE_name,pCheck->pSOE_back_name);
pSOE->SOE_Inf = pCheck->SOE_Inf; //103规约INF号
pSOE->DPI = 0; //捣回状态
READ_DEC_TIME(&pSOE->Year); //时间
pRPT->pro_report_data_number = 0; //无模拟量数据
pRPT->pro_report_flag = 41; //报告标志
pRPT->mmi_flag = 0; //不自动显示
Fill_Report(pRPT); //填到RAM报告区
pRPT = pReportRVT; //将报告区中的动作报告找到,并清动作标志,
while (pRPT != pReportIN) //待到复归时,将该报告置为不自动显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -