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

📄 initsystem.cpp

📁 hart工业仪表的微机仿真程序,在C++Builder下制作,能够仿真仪表(执行器)的动作以及数学模型,方便实用.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <vcl.h>
#include "math.h"
#include "stdlib.h"
#include "stdio.h"
#include "dos.h"
#include "Sim_Valve.h"
//二、系统初始化
//内容包括:
//1、开机初始化
    //InitSystem(void)
//2、设定参数
    //Init_Param()  设定参数至缺省数据
    //Init_Save()   存贮设定参数
    //Init_Load()   读入设定参数
//3、运行参数
    //Init_Code()   运行参数至缺省状态
    //Parm_Save()
    //parm_Load()
//4、统计诊断参数
    //Init_Check_Param()统计参数回0
    //Work_Time_Save()
    //Work_Time_Load()
//
void TMainForm::InitSystem(void)
{
        //TODO: Add your source code here
        //Init_Param();
        Set_Load();            //初始化设定参数
        Parm_Load();            //读入运行参数
        Check_Data_Load();       //读入诊断统计参数
        Disp_Debug_Param();     //显示参数,单片机时无用
        m_Work_State=0;
}                  

void TMainForm::Init_Param(void)
{
        //TODO: Add your source code here
        int i;
        m_YFCT=1;//WAY        Turn,WAY,LWAY,ncSt,-ncSt
        m_YAGL=1;//33         额定反馈角,  两个数,90,33。
        m_YWAY=0;//OFF 行程范围,    15种,OFF/5/10/15/20/25/30/35/40/50/60/70/90/110/130
        m_INITA=1;//no  自动初始化,3个状态,0~3  noini  no  Strt
        m_INITM=1;//no  同上
        m_SCUR=1; //4mA 电流范围,  2个数 0mA对应0~20mA,4mA对应4~20mA
        m_SDIR=0; //rise 方向设定,  2个数 rise  FALL
        m_SPRA=0.0; //0.0    分程范围设定,起点,0.0~100.0
        m_SPRE=100.0; //100.0分程范围设定,终点,0.0~100.0
        m_TSUP=-1; //0  10、17斜率上升点AUTO,0~400
        m_TSDO=0; //0  11、19斜率设计CLOSE,0~400
        m_SFCT=0; //Lin 12、20输出设定     共8个数,0~7,Lin\1:25\1:33\1:50
        for(i=0;i<21;i++)
         m_SL[i]=i*5.0;  //    13、21设定折点   0.0~100.0
                       //    33、41设定折点   0.0~100.0
        m_DEBA=0.0;  //34、45控制器死区   AUTO 0.1~10.0
        m_YA=0.0;    //35、49行程上限值    0.0~100.0
        m_YE=100.0;    //36、53行程下限值    0.0~100.0
        m_YNRM=0;  //37、54行程标定      MPOS、FLOW
        m_YDIR=0;  //38、55行程方向      rise、FALL
        m_YCLS=0;  //39、56”紧密关闭“带人工操作变量 no\up\do\up do
        m_YCDO=0.5;  //40、60”紧密关闭“值,下降 0.0~100.0%
        m_YCUP=99.5;  //41、64”紧密关闭“值,上升 0.0~100.0%
        m_BIN1=0;  //42、65二进制输入BIN1的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        m_BIN2=0;  //43、66二进制输入BIN2的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        m_AFCT=0;  //44、67报警功能
        m_A1=10.0;    //45、71报警响应阈值1 0.0~100.0%
        m_A2=90.0;    //46、75报警响应阈值2 0.0~100.0%
        m_HFCT=0;  //47、76报警输出功能
        m_HTIM=-1;   //48、77监视时间设定 Auto 0~100
        m_HLIM=-0.1;   //49、78故障信号的响应阈值 Auto 0~100
        m_HSTRK=0;  //50、82行程累计极限值   OFF 1~1.00E9
        m_HDCHG=0;  //51、86方向改变极限值   OFF 1~1.00E9
        m_HZERO=-0.1;  //52、87极限用于零极值监视 OFF 0.0~100.0%
        m_HOPEN=-0.1;  //53、88极限用于开极值监视 OFF 0.0~100.0%
        m_HDEBA=-0.1;  //54、89极限用于死区极值监视 OFF 0.0~100.0%
        m_PRST=0;  //55、90预设定 no\Strt\oCAY
        m_System_State=0;   //当前系统状态,0未初始化1已初始化
        m_Work_AM=0;        //当前系统状态,0手动1自动


        m_Valve_Check_Pos_Old=0;
        m_A1_Timer=0;
        m_A2_Timer=0;
        m_A1_Alarm=0;
        m_A2_Alarm=0;

        Set_Save();
}
void TMainForm::Set_Save(void)
{
        FILE *fp;
        int i;
        fp=fopen("SetData.dat","wt");
        fprintf(fp,"\n%3d", m_YFCT);
        fprintf(fp,"\n%3d", m_YAGL); //2、2额定反馈角,  两个数,90,33。
        fprintf(fp,"\n%3d", m_YWAY); //3、3行程范围,    15种,OFF/5/10/15/20/25/30/35/40/50/60/70/90/110/130
        fprintf(fp,"\n%3d", m_INITA);//4、4自动初始化,3个状态,0~3;
        fprintf(fp,"\n%3d", m_INITM);//5、5同上
        fprintf(fp,"\n%3d", m_SCUR); //6、6电流范围,  2个数 0mA对应0~20mA,4mA对应4~20mA
        fprintf(fp,"\n%3d", m_SDIR); //7、7方向设定,  2个数 rise  FALL
        fprintf(fp,"\n%3.1f",m_SPRA); //8、11分程范围设定,起点,0.0~100.0
        fprintf(fp,"\n%3.1f",m_SPRE); //9、15分程范围设定,终点,0.0~100.0
        fprintf(fp,"\n%3d", m_TSUP);          //10、17斜率设计OPEN,0~400
        fprintf(fp,"\n%3d", m_TSDO); //11、19斜率设计CLOSE,0~400
        fprintf(fp,"\n%3d", m_SFCT); //12、20输出设定     共8个数,0~7,Lin\1:25\1:33\1:50
        for(i=0;i<21;i++)
          fprintf(fp,"\n%3.1f", m_SL[i]);  //13、21设定折点   0.0~100.0
                                         //33、41设定折点   0.0~100.0
        fprintf(fp,"\n%3.1f",m_DEBA);  //34、45控制器死区    0.1~10.0
        fprintf(fp,"\n%3.1f",m_YA);    //35、49行程上限值    0.0~100.0
        fprintf(fp,"\n%3.1f",m_YE);    //36、53行程下限值    0.0~100.0
        fprintf(fp,"\n%3d", m_YNRM);  //37、54行程标定      MPOS、FLOW
        fprintf(fp,"\n%3d", m_YDIR);  //38、55行程方向      rise、FALL
        fprintf(fp,"\n%3d", m_YCLS);  //39、56”紧密关闭“带人工操作变量 no\up\do\up do
        fprintf(fp,"\n%3.1f",m_YCDO);  //40、60”紧密关闭“值,下降 0.0~100.0%
        fprintf(fp,"\n%3.1f",m_YCUP);  //41、64”紧密关闭“值,上升 0.0~100.0%
        fprintf(fp,"\n%3d", m_BIN1);  //42、65二进制输入BIN1的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        fprintf(fp,"\n%3d", m_BIN2);  //43、66二进制输入BIN2的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        fprintf(fp,"\n%3d", m_AFCT);  //44、67报警功能
        fprintf(fp,"\n%3.1f",m_A1);    //45、71报警响应阈值1 0.0~100.0%
        fprintf(fp,"\n%3.1f",m_A2);    //46、75报警响应阈值2 0.0~100.0%
        fprintf(fp,"\n%3d", m_HFCT);  //47、76报警输出功能
        fprintf(fp,"\n%3d", m_HTIM);   //48、77监视时间设定 Auto 0~100
        fprintf(fp,"\n%3.1f", m_HLIM);   //49、78故障信号的响应阈值 Auto 0~100
        fprintf(fp,"\n%ld",  m_HSTRK);  //50、82行程累计极限值   OFF 1~1.00E9
        fprintf(fp,"\n%ld",  m_HDCHG);  //51、86方向改变极限值   OFF 1~1.00E9
        fprintf(fp,"\n%3.1f", m_HZERO);  //52、87极限用于零极值监视 OFF 1~100%
        fprintf(fp,"\n%3.1f", m_HOPEN);  //53、88极限用于开极值监视 OFF 1~100%
        fprintf(fp,"\n%3.1f", m_HDEBA);  //54、89极限用于死区极值监视 OFF 1~100%
        fprintf(fp,"\n%3d", m_PRST);  //55、90预设定 no\Strt\oCAY
        fclose(fp);
}
void TMainForm::Set_Load(void)
{
      FILE *fp;
      char s[20];
      int i;
      if((fp=fopen("SetData.dat","rt")))
      {

        fscanf(fp,"\n%s",s);
        m_YFCT=atoi(s);
//        fscanf(fp,"\n%3d",&m_YFCT);
        fscanf(fp,"\n%3d",&m_YAGL); //2、2额定反馈角,  两个数,90,33。
        fscanf(fp,"\n%3d",&m_YWAY); //3、3行程范围,    15种,OFF/5/10/15/20/25/30/35/40/50/60/70/90/110/130
        fscanf(fp,"\n%3d",&m_INITA);//4、4自动初始化,3个状态,0~3;
        fscanf(fp,"\n%3d",&m_INITM);//5、5同上
        fscanf(fp,"\n%3d",&m_SCUR); //6、6电流范围,  2个数 0mA对应0~20mA,4mA对应4~20mA
        fscanf(fp,"\n%3d",&m_SDIR); //7、7方向设定,  2个数 rise  FALL
        fscanf(fp,"\n%s",s); //8、11分程范围设定,起点,0.0~100.0
        m_SPRA=atof(s);
        fscanf(fp,"\n%s",s); //9、15分程范围设定,终点,0.0~100.0
        m_SPRE=atof(s);
        fscanf(fp,"\n%3d",&m_TSUP);          //10、17斜率设计OPEN,0~400
        fscanf(fp,"\n%3d",&m_TSDO); //11、19斜率设计CLOSE,0~400
        fscanf(fp,"\n%3d",&m_SFCT); //12、20输出设定     共8个数,0~7,Lin\1:25\1:33\1:50

        for(i=0;i<21;i++)
        {
          fscanf(fp,"\n%s",s);     //13、21设定折点   0.0~100.0
          m_SL[i]=atof(s);
        }                                //33、41设定折点   0.0~100.0
        fscanf(fp,"\n%s",s);  //34、45控制器死区    0.1~10.0
        m_DEBA=atof(s);
        fscanf(fp,"\n%s",s);    //35、49行程上限值    0.0~100.0
        m_YA=atof(s);
        fscanf(fp,"\n%s",s);    //36、53行程下限值    0.0~100.0
        m_YE=atof(s);
        fscanf(fp,"\n%3d",&m_YNRM);  //37、54行程标定      MPOS、FLOW
        fscanf(fp,"\n%3d",&m_YDIR);  //38、55行程方向      rise、FALL
        fscanf(fp,"\n%3d",&m_YCLS);  //39、56”紧密关闭“带人工操作变量 no\up\do\up do
        fscanf(fp,"\n%s",s);  //40、60”紧密关闭“值,下降 0.0~100.0%
        m_YCDO=atof(s);

        fscanf(fp,"\n%s",s);  //41、64”紧密关闭“值,上升 0.0~100.0%
        m_YCUP=atof(s);
        fscanf(fp,"\n%3d",&m_BIN1);  //42、65二进制输入BIN1的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        fscanf(fp,"\n%3d",&m_BIN2);  //43、66二进制输入BIN2的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        fscanf(fp,"\n%3d",&m_AFCT);  //44、67报警功能
        fscanf(fp,"\n%s",s);    //45、71报警响应阈值1 0.0~100.0%
        m_A1=atof(s);
        fscanf(fp,"\n%s",s);    //46、75报警响应阈值2 0.0~100.0%
        m_A2=atof(s);
        fscanf(fp,"\n%3d",&m_HFCT);  //47、76报警输出功能
        fscanf(fp,"\n%3d",&m_HTIM);   //48、77监视时间设定 Auto 0~100
        fscanf(fp,"\n%s",s);   //49、78故障信号的响应阈值 Auto 0~100
        m_HLIM=atof(s);
        fscanf(fp,"\n%s",s);
        m_HSTRK=atol(s);
//        fscanf(fp,"\n%5e",&m_HSTRK);  //50、82行程累计极限值   OFF 1~1.00E9
        fscanf(fp,"\n%s",s);

⌨️ 快捷键说明

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