⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check.cpp

📁 hart工业仪表的微机仿真程序,在C++Builder下制作,能够仿真仪表(执行器)的动作以及数学模型,方便实用.
💻 CPP
字号:
#include <vcl.h>
#include "math.h"
#include "stdlib.h"
#include "Sim_Valve.h"
//五、统计诊断程序
//进入统计诊断程序
//---------------------------------------------------------------------------
void TMainForm::Check_Func_Key(void)
{
       if(m_Set_Num<34)
       {
           m_Set_Num++;
       }
       else
       {
         m_Set_Num=0;
       }
       Check_Disp();
}
void TMainForm::Check_FuncAndSub_Key(void)
{
       if(m_Set_Num>0)
       {
           m_Set_Num--;
       }
       else
       {
         m_Set_Num=34;
       }
       Check_Disp();
}
//---------------------------------------------------------------------------
//工作时间中断,累积工作时间,温度测量与温度处理
//---------------------------------------------------------------------------


void TMainForm::Check_TimerP(void)
{

   float f;
   //行程累计
   f=fabs(m_Valve_Check_Pos-m_Valve_Check_Pos_Old);
   if(f>1.0)
   {
      if(m_HSTRK==0)
      {
        if(m_STRKS<TENY)
          m_STRKS+=f;
      }
      else
      {
        if(m_STRKS<m_HSTRK)
          m_STRKS+=f;
      }
      m_Valve_Check_Pos_Old=m_Valve_Check_Pos;
   }
   //报警与报警累计
   if(m_HLIM<-0.05)  f=ALARMLIMAUTO;
   else              f=m_HLIM;
   if(m_Valve_Check_Pos>m_A2+f)
   {
      m_A2_Timer++;
      if(m_HTIM==-1)
      {
         if(m_A2_Timer>ALARMTIMEAUTO  && m_A2_Alarm==0)
         {
              //报警
              Alarm_Panel->Color=clRed;
              A2_Panel->Color=clRed;
              if(m_A2CNT<TENY)
                m_A2CNT++;
              if(m_HCNT<TENY)
                m_HCNT++;
              m_A2_Alarm=1;
         }
      }
      else
      {
         if(m_A2_Timer>m_HTIM && m_A2_Alarm==0)
         {
              A2_Panel->Color=clRed;
              Alarm_Panel->Color=clRed;//报警
              if(m_A2CNT<TENY)
                m_A2CNT++;
              if(m_HCNT<TENY)
                m_HCNT++;
              m_A2_Alarm=1;
         }
      }
   }
   else
   {
      if(m_A1_Alarm==0)
        Alarm_Panel->Color=clBtnFace;//报警
      A2_Panel->Color=clBtnFace;
      m_A2_Timer=0;
      m_A2_Alarm=0;
   }

   if(m_Valve_Check_Pos<m_A1-f)
   {
      m_A1_Timer++;
      if(m_HTIM==-1)
      {
         if(m_A1_Timer>ALARMTIMEAUTO  && m_A1_Alarm==0)
         {
              //报警
              A1_Panel->Color=clRed;
              Alarm_Panel->Color=clRed;//报警
              if(m_A1CNT<TENY)
                m_A1CNT++;
              if(m_HCNT<TENY)
                m_HCNT++;
              m_A1_Alarm=1;
         }
      }
      else
      {
         if(m_A1_Timer>m_HTIM && m_A1_Alarm==0)
         {
              //报警
              A1_Panel->Color=clRed;
              Alarm_Panel->Color=clRed;//报警
              if(m_A1CNT<TENY)
                m_A1CNT++;
              if(m_HCNT<TENY)
                m_HCNT++;
              m_A1_Alarm=1;
         }
      }
   }
   else
   {
      if(m_A2_Alarm==0)
         Alarm_Panel->Color=clBtnFace;//报警
      A1_Panel->Color=clBtnFace;
      m_A1_Timer=0;
      m_A1_Alarm=0;
   }









     if(m_Work_Time<60)
       m_Work_Time++;
     else
     {
        if(m_HOURS<TENY)
          m_HOURS++;
        m_TEMP=30.0-random(100);
        if(m_TMIN>m_TEMP)
           m_TMIN=m_TEMP;
        if(m_TMAX<m_TEMP)
           m_TMAX=m_TEMP;
        if(m_TEMP<LIMIT_T1)
        {
            if(m_T1<TENY)
              m_T1++;
        }
        else if(m_TEMP<LIMIT_T2)
        {
          if(m_T2<TENY)
            m_T2++;
        }
        else if(m_TEMP<LIMIT_T3)
        {
          if(m_T3<TENY)
            m_T3++;
        }
        else if(m_TEMP<LIMIT_T4)
        {
          if(m_T4<TENY)
            m_T4++;
        }
        else if(m_TEMP<LIMIT_T5)
        {
          if(m_T5<TENY)
            m_T5++;
        }
        else if(m_TEMP<LIMIT_T6)
        {
          if(m_T6<TENY)
            m_T6++;
        }
        else if(m_TEMP<LIMIT_T7)
        {
          if(m_T7<TENY)
            m_T7++;
        }
        else if(m_TEMP<LIMIT_T8)
        {
          if(m_T8<TENY)
            m_T8++;
        }
        else if(m_TEMP<LIMIT_T9)
        {
          if(m_T9<TENY)
            m_T9++;
        }
        Check_Data_Save();
     }
}
void TMainForm::Check_Number(void)
{

   if(m_Valve1_State==1 && m_Valve1_State_Old==0)
   {
     if(m_VENT1<TENY)
       m_VENT1++;

     if(m_Valve_State==0)
     {
        if(m_HDCHG==0)
        {
           if(m_CHDIR<TENY)
             m_CHDIR++;
        }
        else
        {
           if(m_CHDIR<m_HDCHG)
             m_CHDIR++;
        }
     }
     m_Valve_State=1;
   }
   if(m_Valve2_State==1 && m_Valve2_State_Old==0)
   {
     if(m_VENT2<TENY)
       m_VENT2++;
     m_Valve_State=0;
   }

}

void TMainForm::Check_Add5s_Key(void)
{
           if(m_Set_Num==0)  Check_Reset(&m_HOURS);
           else if(m_Set_Num==1)  Check_Reset(&m_CHDIR);
           else if(m_Set_Num==2)  Check_Reset(&m_HCNT);
           else if(m_Set_Num==3)  Check_Reset(&m_A1CNT);
           else if(m_Set_Num==4)  Check_Reset(&m_A2CNT);

           else if(m_Set_Num==18)  Check_T_F(m_TEMP);
           else if(m_Set_Num==19)  Check_T_F(m_TMIN);
           else if(m_Set_Num==20)  Check_T_F(m_TMAX);
           else if(m_Set_Num==32)  Check_Save();
}
//---------------------------------------------------------------------------
void TMainForm::Check_Reset(unsigned long *d)
{
  char Data[12];
  char str[6]="RESETa";
  Disp_Turn_Str_TO_Code(str,Data);
  Disp_Data(Data);
  Check_Delay(5000);
  *d=0;
  Check_Disp();
}
void TMainForm::Check_T_F(float d)
{
   if(m_Check_TF==0)
     m_Check_TF=1;
   else
     m_Check_TF=0;
   Check_Disp();
}
void TMainForm::Check_Save(void)
{
  char Data[12];
  char str[6]="STARTa";
  Disp_Turn_Str_TO_Code(str,Data);
  Disp_Data(Data);
  Check_Delay(5000);
  strcpy(str,"OCAYaa");
  Disp_Turn_Str_TO_Code(str,Data);
  Disp_Data(Data);
  Check_Data_Save();
}
void TMainForm::Check_Delay(unsigned long d)
{
   unsigned long i,j;
   for(i=0;i<d;i++)
    for(j=0;j<60000;j++)
    ;
}

void TMainForm::Check_Start(void)
{
     m_Work_State=2;
     Work_Timer->Enabled=false;
     m_Set_Num=0;
     Check_Disp();
}


void TMainForm::Check_Disp(void)
{
     unsigned char State[6];
     unsigned char Data[12];
     unsigned char Temp[6];
     unsigned int  D[6];
     double f;
     unsigned char c;
     int i;
     for(i=0;i<5;i++)
       State[i]=m_Test_Name[m_Set_Num][i];
     State[5]=0x0;
     Data[5]=0;
     //全字符显示
     if(m_Set_Num==0)         Disp_Turn_Long(m_STRKS,Data);
     else  if(m_Set_Num==1)   Disp_Turn_Long(m_CHDIR,Data);
     else  if(m_Set_Num==2)   Disp_Turn_Long(m_HCNT, Data);
     else  if(m_Set_Num==3)   Disp_Turn_Long(m_A1CNT,Data);
     else  if(m_Set_Num==4)   Disp_Turn_Long(m_A2CNT,Data);
     else  if(m_Set_Num==5)   Disp_Turn_Long(m_HOURS,Data);
     else  if(m_Set_Num==6)
     {
       Disp_Turn_Data_TO_Code8(m_WAY,  Data,0);
     }
     else  if(m_Set_Num==7)   Disp_Turn_Data_TO_Code8(m_Up_Time,Data,0);
     else  if(m_Set_Num==8)   Disp_Turn_Data_TO_Code8(m_Down_Time,Data,0);
     else  if(m_Set_Num==9)   Disp_Turn_Data_TO_Code8(m_LEAK,Data,1);
     else  if(m_Set_Num==10)  Disp_Turn_Data_TO_Code8(m_P0,Data,1);
     else  if(m_Set_Num==11)  Disp_Turn_Data_TO_Code8(m_P100,Data,1);
     else  if(m_Set_Num==12)  Disp_Turn_Data_TO_Code8(m_IMPUP,Data,0);
     else  if(m_Set_Num==13)  Disp_Turn_Data_TO_Code8(m_IMPDN,Data,0);
     else  if(m_Set_Num==14)
     {
        m_DBUP=m_DEBA;
        Disp_Turn_Data_TO_Code8(m_DBUP,Data,1);
     }
     else  if(m_Set_Num==15)
     {
        m_DBDN=-m_DEBA;
        Disp_Turn_Data_TO_Code8(m_DBDN,Data,1);
     }
     else  if(m_Set_Num==16)  Disp_Turn_Data_TO_Code8(m_SSUP,Data,1);
     else  if(m_Set_Num==17)  Disp_Turn_Data_TO_Code8(m_SSDN,Data,1);
     else  if(m_Set_Num==18)
     {
       if(m_Check_TF==1)
       {
         f=m_TEMP*9.0/5.0+32.0;
       }
       else
       {
         f=m_TEMP;
       }
       Disp_Turn_Data_TO_Code8(f,Data,2);
       if(m_Check_TF==1)
       {
         Data[0]=0x08;   //F  华氏度
         Data[1]=0x0E;
       }
       else
       {
         Data[0]=0x09;   //C  摄氏度
         Data[1]=0x0A;
       }
     }
     else  if(m_Set_Num==19)
     {
       if(m_Check_TF==1)
       {
         f=m_TMIN*9.0/5.0+32.0;
       }
       else
       {
         f=m_TMIN;
       }
       Disp_Turn_Data_TO_Code8(f,Data,2);
       if(m_Check_TF==1)
       {
         Data[0]=0x08;   //F  华氏度
         Data[1]=0x0E;
       }
       else
       {
         Data[0]=0x09;   //C  摄氏度
         Data[1]=0x0A;
       }
     }
     else  if(m_Set_Num==20)
     {
       if(m_Check_TF==1)
       {
         f=m_TMAX*9.0/5.0+32.0;
       }
       else
       {
         f=m_TMAX;
       }
       Disp_Turn_Data_TO_Code8(f,Data,2);
       if(m_Check_TF==1)
       {
         Data[0]=0x08;   //F  华氏度
         Data[1]=0x0E;
       }
       else
       {
         Data[0]=0x09;   //C  摄氏度
         Data[1]=0x0A;
       }
     }
     else  if(m_Set_Num==21)  Disp_Turn_Long(m_T1,Data);
     else  if(m_Set_Num==22)  Disp_Turn_Long(m_T2,Data);
     else  if(m_Set_Num==23)  Disp_Turn_Long(m_T3,Data);
     else  if(m_Set_Num==24)  Disp_Turn_Long(m_T4,Data);
     else  if(m_Set_Num==25)  Disp_Turn_Long(m_T5,Data);
     else  if(m_Set_Num==26)  Disp_Turn_Long(m_T6,Data);
     else  if(m_Set_Num==27)  Disp_Turn_Long(m_T7,Data);
     else  if(m_Set_Num==28)  Disp_Turn_Long(m_T8,Data);
     else  if(m_Set_Num==29)  Disp_Turn_Long(m_T9,Data);
     else  if(m_Set_Num==30)  Disp_Turn_Long(m_VENT1,Data);
     else  if(m_Set_Num==31)  Disp_Turn_Long(m_VENT2,Data);
     else  if(m_Set_Num==32)  Disp_Turn_Data_TO_Code8(m_STORE,Data,0);
     else  if(m_Set_Num==33)  Disp_Turn_Data_TO_Code8(m_PRUP,Data,0);
     else  if(m_Set_Num==34)  Disp_Turn_Data_TO_Code8(m_PRDN,Data,0);

     Disp_Data(Data);
     Disp_Number();
     Disp_State(State);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -