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

📄 set.cpp

📁 hart工业仪表的微机仿真程序,在C++Builder下制作,能够仿真仪表(执行器)的动作以及数学模型,方便实用.
💻 CPP
字号:
#include <vcl.h>
#include "math.h"
#include "stdlib.h"
#include "Sim_Valve.h"

void TMainForm::Set_Timer_Process(void)
{
     if(m_Auto_Init==1)
     {
       Set_Auto_Init_Process();
       if(m_Auto_Init==1)
         Work_Disp_Data();
     }
}
void TMainForm::Set_Start(void)
{
     m_Work_State=1;
     m_Auto_Init=0;
     m_Mani_Init=0;
     m_Error=0;
     m_Mani_Init_Num=0;                       //无错误
     m_Auto_Init_Num=0;               //自动初始化1,RUN1
     m_Auto_Init_Count=0;             //计数器

     Work_Timer->Enabled=false;
     m_Set_Num=0;
     Set_Disp();
}
void TMainForm::Set_Func_Key(void)
{
    if(m_Auto_Init==0 && m_Mani_Init==0)
    {
       if(m_Set_Num<54)
       {
         if(m_Set_Num==11 && m_SFCT!=7)    //转折点设计
           m_Set_Num=33;
         else
           m_Set_Num++;
       }
       else
       {
         m_Set_Num=0;
       }
       Set_Disp();
    }
    if(m_Mani_Init==1)
    {
       Set_Mani_Func_Key();
    }
}

void TMainForm::Set_FuncAndMenu_Key(void)
{
       if(m_Set_Num>0)
       {
         if(m_Set_Num==33 && m_SFCT!=7)
           m_Set_Num=11;
         else
           m_Set_Num--;
         Set_Disp();
       }
       else
       {
         m_Set_Num=54;
         Set_Disp();
       }
}



void TMainForm::Set_Sub_Key(void)
{
  int i;
 if(m_Mani_Init==0 && m_Auto_Init==0)
 {
   if(m_Set_Num!=54 && m_Set_Num!=4 && m_Set_Num!=3)
   {
   if(m_Set_Num==0)
   {
     if(m_YFCT==0 || m_YFCT==3 || m_YFCT==4 || m_YFCT==5)
        m_YAGL=0;
     m_YFCT=Set_Change(m_YFCT,0,5,0);
   }
   else if(m_Set_Num==1 && (m_YFCT==1 || m_YFCT==2)) m_YAGL=Set_Change(m_YAGL,0,1,0);
   else if(m_Set_Num==2) m_YWAY=Set_Change(m_YWAY,0,14,0);
   else if(m_Set_Num==3) m_INITA=Set_Change(m_INITA,0,2,0);
   else if(m_Set_Num==4) m_INITM=Set_Change(m_INITM,0,2,0);
   else if(m_Set_Num==5) m_SCUR=Set_Change(m_SCUR,0,1,0);
   else if(m_Set_Num==6) m_SDIR=Set_Change(m_SDIR,0,1,0);
   else if(m_Set_Num==7) m_SPRA=Set_Change_F(m_SPRA,0.0,100.0,0);
   else if(m_Set_Num==8) m_SPRE=Set_Change_F(m_SPRE,0.0,100.0,0);

   else if(m_Set_Num==9) m_TSUP=Set_Change_L(m_TSUP,-1,400,0);
   else if(m_Set_Num==10) m_TSDO=Set_Change_L(m_TSDO,0,400,0);
   else if(m_Set_Num==11) m_SFCT=Set_Change(m_SFCT,0,7,0);

   else if(m_Set_Num>=12 && m_Set_Num<=32)
       m_SL[m_Set_Num-12]=Set_Change_F(m_SL[m_Set_Num-12],0.0,100.0,0);

   else if(m_Set_Num==33) m_DEBA=Set_Change_F(m_DEBA,0.0,10.0,0);
   else if(m_Set_Num==34) m_YA=Set_Change_F(m_YA,0.0,100.0,0);
   else if(m_Set_Num==35) m_YE=Set_Change_F(m_YE,0.0,100.0,0);

   else if(m_Set_Num==36) m_YNRM=Set_Change(m_YNRM,0,1,0);
   else if(m_Set_Num==37) m_YDIR=Set_Change(m_YDIR,0,1,0);
   else if(m_Set_Num==38) m_YCLS=Set_Change(m_YCLS,0,3,0);
   else if(m_Set_Num==39) m_YCDO=Set_Change_F(m_YCDO,0.0,100.0,0);
   else if(m_Set_Num==40) m_YCUP=Set_Change_F(m_YCUP,0.0,100.0,0);

   else if(m_Set_Num==41) m_BIN1=Set_Change(m_BIN1,0,10,0);
   else if(m_Set_Num==42) m_BIN2=Set_Change(m_BIN2,0,10,0);
   else if(m_Set_Num==43) m_AFCT=Set_Change(m_AFCT,0,6,0);
   else if(m_Set_Num==44) m_A1=Set_Change_F(m_A1,0.0,100.0,0);
   else if(m_Set_Num==45) m_A2=Set_Change_F(m_A2,0.0,100.0,0);
   else if(m_Set_Num==46) m_HFCT=Set_Change(m_HFCT,0,5,0);
   else if(m_Set_Num==47) m_HTIM=Set_Change(m_HTIM,-1,100,0);
   else if(m_Set_Num==48) m_HLIM=Set_Change_F(m_HLIM,-0.1,100.0,0);
   else if(m_Set_Num==49) m_HSTRK=Set_Change_L(m_HSTRK,0,1000000000,0);
   else if(m_Set_Num==50) m_HDCHG=Set_Change_L(m_HDCHG,0,1000000000,0);
   else if(m_Set_Num==51) m_HZERO=Set_Change_F(m_HZERO,-0.1,100.0,0);
   else if(m_Set_Num==52) m_HOPEN=Set_Change_F(m_HOPEN,-0.1,100.0,0);
   else if(m_Set_Num==53) m_HDEBA=Set_Change_F(m_HDEBA,-0.1,10.0,0);
//   else if(m_Set_Num==54) m_PRST=Set_Change(m_PRST,0,2,0);
   Set_Disp();
   }
  }
  else if(m_Mani_Init==1 && m_Auto_Init==0)
  {
     Set_Mani_Sub_Key();
  }

}

void TMainForm::Set_Add_Key(void)
{
 int i;
 if(m_Mani_Init==0 && m_Auto_Init==0)
 {
  if(m_Set_Num!=54 && m_Set_Num!=4 && m_Set_Num!=3)
  {
   if(m_Set_Num==0)
   {
     m_YFCT=Set_Change(m_YFCT,0,5,1);
     if(m_YFCT==0 || m_YFCT==3 || m_YFCT==4 || m_YFCT==5)
       m_YAGL=0;
   }
   else if(m_Set_Num==1 && (m_YFCT==1 || m_YFCT==2)) m_YAGL=Set_Change(m_YAGL,0,1,1);
   else if(m_Set_Num==2) m_YWAY=Set_Change(m_YWAY,0,14,1);
   else if(m_Set_Num==3) m_INITA=Set_Change(m_INITA,0,2,1);
   else if(m_Set_Num==4) m_INITM=Set_Change(m_INITM,0,2,1);
   else if(m_Set_Num==5) m_SCUR=Set_Change(m_SCUR,0,1,1);
   else if(m_Set_Num==6) m_SDIR=Set_Change(m_SDIR,0,1,1);
   else if(m_Set_Num==7) m_SPRA=Set_Change_F(m_SPRA,0.0,100.0,1);
   else if(m_Set_Num==8) m_SPRE=Set_Change_F(m_SPRE,0.0,100.0,1);
   else if(m_Set_Num==9) m_TSUP=Set_Change_L(m_TSUP,-1,400,1);
   else if(m_Set_Num==10) m_TSDO=Set_Change_L(m_TSDO,0,400,1);
   else if(m_Set_Num==11) m_SFCT=Set_Change(m_SFCT,0,7,1);

   else if(m_Set_Num>=12 && m_Set_Num<=32)
       m_SL[m_Set_Num-12]=Set_Change_F(m_SL[m_Set_Num-12],0.0,100.0,1);

   else if(m_Set_Num==33) m_DEBA=Set_Change_F(m_DEBA,0.0,10.0,1);
   else if(m_Set_Num==34) m_YA=Set_Change_F(m_YA,0.0,100.0,1);
   else if(m_Set_Num==35) m_YE=Set_Change_F(m_YE,0.0,100.0,1);


   else if(m_Set_Num==36) m_YNRM=Set_Change(m_YNRM,0,1,1);
   else if(m_Set_Num==37) m_YDIR=Set_Change(m_YDIR,0,1,1);
   else if(m_Set_Num==38) m_YCLS=Set_Change(m_YCLS,0,3,1);
   else if(m_Set_Num==39) m_YCDO=Set_Change_F(m_YCDO,0.0,100.0,1);
   else if(m_Set_Num==40) m_YCUP=Set_Change_F(m_YCUP,0.0,100.0,1);

   else if(m_Set_Num==41) m_BIN1=Set_Change(m_BIN1,0,10,1);
   else if(m_Set_Num==42) m_BIN2=Set_Change(m_BIN2,0,10,1);
   else if(m_Set_Num==43) m_AFCT=Set_Change(m_AFCT,0,6,1);
   else if(m_Set_Num==44) m_A1=Set_Change_F(m_A1,0.0,100.0,1);
   else if(m_Set_Num==45) m_A2=Set_Change_F(m_A2,0.0,100.0,1);

   else if(m_Set_Num==46) m_HFCT=Set_Change(m_HFCT,0,5,1);
   else if(m_Set_Num==47) m_HTIM=Set_Change(m_HTIM,-1,100,1);
   else if(m_Set_Num==48) m_HLIM=Set_Change_F(m_HLIM,-0.1,100.0,1);
   else if(m_Set_Num==49) m_HSTRK=Set_Change_L(m_HSTRK,0l,1000000000l,1);
   else if(m_Set_Num==50) m_HDCHG=Set_Change_L(m_HDCHG,0l,1000000000l,1);
   else if(m_Set_Num==51) m_HZERO=Set_Change_F(m_HZERO,-0.1,100.0,1);
   else if(m_Set_Num==52) m_HOPEN=Set_Change_F(m_HOPEN,-0.1,100.0,1);
   else if(m_Set_Num==53) m_HDEBA=Set_Change_F(m_HDEBA,-0.1,10.0,1);
   //else if(m_Set_Num==54) m_PRST=Set_Change(m_PRST,0,2,1);

   Set_Disp();
   }
  }
  else if(m_Mani_Init==1 && m_Auto_Init==0)
  {
     Set_Mani_Add_Key();
  }

}


void TMainForm::Set_Add5s_Key(void)
{
   if(m_Set_Num==54)
   {
     m_PRST=1;
     Init_Code();     //初始化工作参数
     Set_Disp();
     Init_Param();    //初始化系统参数
     m_PRST=2;
     Set_Disp();
     m_PRST=0;
   }
   else if(m_Set_Num==3)
   {
     if(m_Auto_Init==0)
     {
       Set_Auto_Init_Start();
       Disp_Debug_Param();
     }
     else
     {
       Set_Auto_Init_Stop();
       Disp_Debug_Param();
     }
   }
   else if(m_Set_Num==4)
   {
     if(m_Mani_Init==0)
     {
       Set_Mani_Init_Start();
       Disp_Debug_Param();
     }
     else
     {
       Set_Mani_Init_Stop();
       Disp_Debug_Param();
     }
   }
}
void TMainForm::Set_Disp(void)
{
     unsigned char State[6];
     unsigned char Data[12];
     unsigned char Temp[6];
     unsigned int  D[6];
     int i;
     for(i=0;i<5;i++)
       State[i]=m_Set_State[m_Set_Num][i];
     State[5]=0x0;
     Data[5]=0;
     //全字符显示
     if(m_Set_Num==0)
       Disp_Turn_Str_TO_Code(m_Set_YFCT[m_YFCT],Data);
     else  if(m_Set_Num==1)
      Disp_Turn_Str_TO_Code(m_Set_YAGL[m_YAGL],Data);
     else  if(m_Set_Num==2)
      Disp_Turn_Str_TO_Code(m_Set_YWAY[m_YWAY],Data);
     else  if(m_Set_Num==3)
      Disp_Turn_Str_TO_Code(m_Set_INITAM[m_INITA],Data);
     else  if(m_Set_Num==4)
      Disp_Turn_Str_TO_Code(m_Set_INITAM[m_INITM],Data);
     else  if(m_Set_Num==5)
      Disp_Turn_Str_TO_Code(m_Set_SCUR[m_SCUR],Data);
     else  if(m_Set_Num==6)
     Disp_Turn_Str_TO_Code(m_Set_SDIR[m_SDIR],Data);
     else  if(m_Set_Num==11)
     Disp_Turn_Str_TO_Code(m_Set_SFCT[m_SFCT],Data);


     else  if(m_Set_Num==36)
     Disp_Turn_Str_TO_Code(m_Set_YNRM[m_YNRM],Data);
     else  if(m_Set_Num==37)
     Disp_Turn_Str_TO_Code(m_Set_YDIR[m_YDIR],Data);
     else  if(m_Set_Num==38)
     Disp_Turn_Str_TO_Code(m_Set_YCLS[m_YCLS],Data);
     else  if(m_Set_Num==41)
     Disp_Turn_Str_TO_Code(m_Set_BIN12[m_BIN1],Data);
     else  if(m_Set_Num==42)
     Disp_Turn_Str_TO_Code(m_Set_BIN12[m_BIN2],Data);
     else  if(m_Set_Num==43)
     Disp_Turn_Str_TO_Code(m_Set_AFCT[m_AFCT],Data);
     else  if(m_Set_Num==46)
     Disp_Turn_Str_TO_Code(m_Set_HFCT[m_HFCT],Data);
     else  if(m_Set_Num==54)
     Disp_Turn_Str_TO_Code(m_Set_PRST[m_PRST],Data);
     //全数字显示
     else  if(m_Set_Num==7)   Disp_Turn_Data_TO_Code8(m_SPRA,Data,1);
     else  if(m_Set_Num==8)   Disp_Turn_Data_TO_Code8(m_SPRE,Data,1);
     else  if(m_Set_Num==10)  Disp_Turn_Data_TO_Code8(m_TSDO,Data,0);

     else  if(m_Set_Num>=12 && m_Set_Num<=32)
          Disp_Turn_Data_TO_Code8(m_SL[m_Set_Num-12],Data,1);

     else  if(m_Set_Num==34)  Disp_Turn_Data_TO_Code8(m_YA,Data,1);
     else  if(m_Set_Num==35)  Disp_Turn_Data_TO_Code8(m_YE,Data,1);

     else  if(m_Set_Num==39)  Disp_Turn_Data_TO_Code8(m_YCDO,Data,1);
     else  if(m_Set_Num==40)  Disp_Turn_Data_TO_Code8(m_YCUP,Data,1);

     else  if(m_Set_Num==44)  Disp_Turn_Data_TO_Code8(m_A1,Data,1);
     else  if(m_Set_Num==45)  Disp_Turn_Data_TO_Code8(m_A2,Data,1);
     //字符与数字
     else  if(m_Set_Num==9)
     {
       if(m_TSUP<0)
       {
         strcpy(Temp,"aAUTO");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_TSUP,Data,0);
     }
     else  if(m_Set_Num==33)
     {
       if(m_DEBA<=0.05)
       {
         strcpy(Temp,"aAUTO");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_DEBA,Data,1);
     }

     else  if(m_Set_Num==47)
     {
       if(m_HTIM<0)
       {
         strcpy(Temp,"aAUTO");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_HTIM,Data,0);
     }
     else  if(m_Set_Num==48)
     {
       if(m_HLIM<=-0.05)
       {
         strcpy(Temp,"aAUTO");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_HLIM,Data,1);
     }
     else  if(m_Set_Num==49)
     {
       if(m_HSTRK<1)
       {
         strcpy(Temp,"aOFFa");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else if(m_HSTRK<100000)
        Disp_Turn_Data_TO_Code8(m_HSTRK,Data,0);
       else
        Disp_Turn_Data_TO_Code8_LE(m_HSTRK,Data);

     }

     else  if(m_Set_Num==50)
     {
       if(m_HDCHG<1)
       {
         strcpy(Temp,"aOFFa");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else if(m_HDCHG<100000)
          Disp_Turn_Data_TO_Code8(m_HDCHG,Data,0);
       else
          Disp_Turn_Data_TO_Code8_LE(m_HDCHG,Data);

     }
     else  if(m_Set_Num==51)
     {
       if(m_HZERO<=-0.05)
       {
         strcpy(Temp,"aOFFa");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_HZERO,Data,1);
     }
     else  if(m_Set_Num==52)
     {
       if(m_HOPEN<=-0.05)
       {
         strcpy(Temp,"aOFFa");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_HOPEN,Data,1);
     }
     else  if(m_Set_Num==53)
     {
       if(m_HDEBA<=-0.05)
       {
         strcpy(Temp,"aOFFa");
         Disp_Turn_Str_TO_Code(Temp,Data);
       }
       else
         Disp_Turn_Data_TO_Code8(m_HDEBA,Data,1);
     }




     for(i=0;i<6;i++)
           D[i]=Data[i];



     Disp_Data(Data);
     Disp_Number();
     Disp_State(State);
}
char TMainForm::Set_Change(char k,char min,char max,char am)
{
   if(am==1 && k<max)
     k++;
   else if(am==0 && k>min)
     k--;
   return k;
}
long TMainForm::Set_Change_L(long k,long min,long max,char am)
{
   if(am==1 && k<max)
     k++;
   else if(am==0 && k>min)
     k--;
   return k;
}
long TMainForm::Set_Change_LL(long k,long min,long max,char am)
{
   if(am==1 && k<max)
     k+=10000;
   else if(am==0 && k>min)
     k-=10000;
   return k;
}

float TMainForm::Set_Change_F(float k,float min,float max,char am)
{
   if(am==1 && k<max)
   {
      k=k+0.1;
      if(k>max) k=max;
   }
   else if(am==0 && k>min)
   {
     k=k-0.1;
     if(k<min) k=min;
   }
   return k;
}
 

⌨️ 快捷键说明

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