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

📄 sim_valve.h

📁 hart工业仪表的微机仿真程序,在C++Builder下制作,能够仿真仪表(执行器)的动作以及数学模型,方便实用.
💻 H
📖 第 1 页 / 共 2 页
字号:
        TLabel *Label7;
        TLabel *Label8;
        TEdit *F_Edit;
        TEdit *K_Edit;
        TEdit *m_Edit;
        TEdit *P1_Edit;
        TEdit *P2_Edit;
        TLabel *Label9;
        TEdit *Edit1;
        TLabel *Label10;
        TLabel *Label11;
        TEdit *Edit2;
        TLabel *Label12;
        TEdit *Edit3;
        TLabel *Label13;
        TEdit *Edit4;
        TGroupBox *GroupBox2;
        TLabel *Label4;
        TLabel *Label5;
        TLabel *Label6;
        TPanel *Panel2;
        TPanel *Valve_Panel;
        TPanel *P1_Panel;
        TPanel *P2_Panel;
        TPanel *Panel4;
        TPanel *Panel7;
        TEdit *W_Edit;
        TEdit *A_Edit;
        TEdit *In_Edit;
        TEdit *YFCTEdit;
        TLabel *Label14;
        TLabel *Label15;
        TEdit *YPGLEdit;
        TEdit *YWAYEdit;
        TLabel *Label16;
        TEdit *SCUREdit;
        TLabel *Label17;
        TLabel *Label18;
        TEdit *SDIREdit;
        TEdit *SPRAEdit;
        TLabel *Label19;
        TEdit *SPREEdit;
        TLabel *Label20;
        TLabel *Label21;
        TEdit *TSUPEdit;
        TEdit *TSDOEdit;
        TLabel *Label22;
        TEdit *YDIREdit;
        TLabel *Label23;
        TLabel *Label24;
        TEdit *YCLSEdit;
        TEdit *YCDOEdit;
        TLabel *Label25;
        TEdit *YCUPEdit;
        TLabel *Label26;
        TLabel *Label27;
        TEdit *BIN1Edit;
        TEdit *BIN2Edit;
        TLabel *Label28;
        TEdit *AFCTEdit;
        TLabel *Label29;
        TLabel *Label30;
        TEdit *A1Edit;
        TEdit *A2Edit;
        TLabel *Label31;
        TEdit *SFCTEdit;
        TLabel *Label32;
        TLabel *Label33;
        TEdit *DEBAEdit;
        TEdit *YAEdit;
        TLabel *Label34;
        TEdit *HFCTEdit;
        TLabel *Label35;
        TLabel *Label36;
        TEdit *YNRMEdit;
        TEdit *YEEdit;
        TLabel *Label37;
        TShape *Shape2;
        TLabel *Label38;
        TLabel *Label39;
        TLabel *Label40;
        TLabel *Label41;
        TLabel *Label42;
        TLabel *Label43;
        TLabel *Label44;
        TEdit *HTIMEdit;
        TEdit *HLIMEdit;
        TEdit *HSTRKEdit;
        TEdit *HDCHGEdit;
        TEdit *HZEROEdit;
        TEdit *HOPENEdit;
        TEdit *HDEBAEdit;
        TEdit *MinEdit;
        TLabel *Label45;
        TEdit *MaxEdit;
        TLabel *Label46;
        TLabel *Label47;
        TEdit *zEdit;
        TLabel *Label48;
        TEdit *bEdit;
        TPanel *Panel3;
        TPanel *Panel5;
        TShape *Shape1;
        TButton *T_M_Button;
        TButton *T_A_Button;
        TGroupBox *GroupBox3;
        TCheckBox *BE1_CheckBox;
        TCheckBox *BE2_CheckBox;
        TGroupBox *GroupBox4;
        TPanel *Alarm_Panel;
        TPanel *A2_Panel;
        TPanel *A1_Panel;
        TLabel *Label49;
        TLabel *Label50;
        TLabel *Label51;
        TCheckBox *CheckBox1;
        TTimer *Timer1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall FButtonClick(TObject *Sender);
        void __fastcall MButtonClick(TObject *Sender);
        void __fastcall Work_TimerTimer(TObject *Sender);
        void __fastcall F_ButtonClick(TObject *Sender);
        void __fastcall F_M_ButtonClick(TObject *Sender);
        void __fastcall AButtonClick(TObject *Sender);
        void __fastcall M1000ButtonClick(TObject *Sender);
        void __fastcall A1000ButtonClick(TObject *Sender);
        void __fastcall A5ButtonClick(TObject *Sender);
        void __fastcall F_M_A_ButtonClick(TObject *Sender);
        void __fastcall Check_TimerTimer(TObject *Sender);
        void __fastcall Timer1Timer(TObject *Sender);
private:	// User declarations
public:		// User declarations
        __fastcall TMainForm(TComponent* Owner);
        //
        //一、设定变量定义,共55个与外部设定变量
        //在内存中开55个变量,同时在flash区开这55个变量存贮
        unsigned char m_YFCT; //1、1执行机构类型,5种0~4,对应turn,WAY,LWAY,ncSt,-ncSt
        unsigned char m_YAGL; //2、2额定反馈角,  两个数,90,33。
        unsigned char m_YWAY; //3、3行程范围,    15种,OFF/5/10/15/20/25/30/35/40/50/60/70/90/110/130
        unsigned char m_INITA;//4、4自动初始化,3个状态,0~3;
        unsigned char m_INITM;//5、5同上
        unsigned char m_SCUR; //6、6电流范围,  2个数 0mA对应0~20mA,4mA对应4~20mA
        unsigned char m_SDIR; //7、7方向设定,  2个数 rise  FALL
        float         m_SPRA; //8、11分程范围设定,起点,0.0~100.0
        float         m_SPRE; //9、15分程范围设定,终点,0.0~100.0
        int  m_TSUP;          //10、17斜率设计OPEN,0~400
        int  m_TSDO;          //11、19斜率设计CLOSE,0~400
        unsigned char m_SFCT; //12、20输出设定     共8个数,0~7,Lin\1:25\1:33\1:50
        float  m_SL[21];      //13、104 设定折点   0.0~100.0
                              //SL0~SL20共21个数
        float         m_DEBA;  //34、108控制器死区    0.1~10.0
        float         m_YA;    //35、112行程上限值    0.0~100.0
        float         m_YE;    //36、116行程下限值    0.0~100.0
        unsigned char m_YNRM;  //37、117行程标定      MPOS、FLOW
        unsigned char m_YDIR;  //38、118行程方向      rise、FALL
        unsigned char m_YCLS;  //39、119  ”紧密关闭“带人工操作变量 no\up\do\up do
        float         m_YCDO;  //40、123  ”紧密关闭“值,下降 0.0~100.0%
        float         m_YCUP;  //41、127  ”紧密关闭“值,上升 0.0~100.0%
        unsigned char m_BIN1;  //42、128  二进制输入BIN1的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        unsigned char m_BIN2;  //43、129  二进制输入BIN2的功能OFF\ON\bloc1\bloc2\uP\doWn\StoP\NC\-on\-uP\-doWn\-StoP
        unsigned char m_AFCT;  //44、130   报警功能
        float         m_A1;    //45、134  报警响应阈值1 0.0~100.0%
        float         m_A2;    //46、138  报警响应阈值2 0.0~100.0%
        unsigned char m_HFCT;  //47、139  报警输出功能
        char m_HTIM;           //48、140  77监视时间设定 Auto 0~100
        float m_HLIM;          //49、144  故障信号的响应阈值 Auto 0~100
        unsigned long m_HSTRK; //50、148  行程累计极限值   OFF 1~1.00E9
        unsigned long m_HDCHG; //51、152  方向改变极限值   OFF 1~1.00E9
        float m_HZERO;         //52、156  极限用于零极值监视 OFF 1~100%
        float m_HOPEN;         //53、160  极限用于开极值监视 OFF 1~100%
        float m_HDEBA;         //54、164  极限用于死区极值监视 OFF 1~100%
        unsigned char m_PRST;  //55、165  预设定 no\Strt\oCAY
       //上述55个变量占用165个字节空间
       /////////////////////////////////////////////////////////////////////////
       //二、诊断测试统计变量
       unsigned long m_STRKS;  //1,4  行程累积,按+5秒可复位为0(rESEt),需要确认
       unsigned long m_CHDIR;  //2,8  阀改变方向次数,按+5秒可复位为0(rESEt)
       unsigned long m_HCNT;   //3,12  总报警次数,按+5秒可复位为0(rESEt)
       unsigned long m_A1CNT;  //4,16  A1报警次数,按+5秒可复位为0(rESEt)
       unsigned long m_A2CNT;  //5,20  A2报警次数,按+5秒可复位为0(rESEt)
       unsigned long m_HOURS;  //6,24 总运行时间(小时),以何为标准
       unsigned char m_WAY;    //7,25 当前操作方式,与m_YFCT对应,需要确认
       unsigned int m_Up_Time; //8,27 阀上升定位时间,需要确认
       unsigned int m_Down_Time;//9,29 阀下降定位时间,需要确认
       float     m_LEAK;       //10,33执行机构泄漏,需要确认
       float     m_P0;         //11,37
       float     m_P100;       //12,41
       unsigned int m_IMPUP;   //13, 43
       unsigned int m_IMPDN;   //14  45
       float     m_DBUP;       //15,49 死区正限位,为m_DEBA值
       float     m_DBDN;       //16,53 死区负限位,为-m_DEBA值
       float     m_SSUP;       //17  57
       float     m_SSDN;       //18  61
       float     m_TEMP;       //19,65 当前温度,按”+“可进行摄氏与华氏之间转换
       float     m_TMIN;       //20,69 最小温度,
       float     m_TMAX;       //21,73 最大温度
       unsigned long m_T1;     //22,77 T1运行时间
       unsigned long m_T2;     //23,81 T2运行时间
       unsigned long m_T3;     //24,85 T3运行时间
       unsigned long m_T4;     //25,89 T4运行时间
       unsigned long m_T5;     //26,93 T5运行时间
       unsigned long m_T6;     //27,97 T6运行时间
       unsigned long m_T7;     //28,101 T7运行时间
       unsigned long m_T8;     //29,105 T8运行时间
       unsigned long m_T9;     //30,109 T9运行时间
       unsigned long m_VENT1;  //31,113 压电阀运行循环次数
       unsigned long m_VENT2;  //32,117 压电阀运行循环次数
       unsigned char m_STORE;  //33,121 存贮,按”+“5秒后存贮,出现Strt(Start)
       unsigned int m_PRUP;    //34,125
       unsigned int m_PRDN;    //35,129
       //上述35个变量占用129字节空间
       /////////////////////////////////////////////////////////////////////////



       //系统工作状态
        unsigned char m_System_State;   //当前系统状态,0未初始化1已初始化
        unsigned char m_Work_AM;        //当前系统状态,0手动1自动
        unsigned char m_Work_State;     //当前工作状态,0:工作,1,设定
        unsigned char m_Work_Time;      //工作时间累积用变量,不能他用
        unsigned char m_Check_TF;
       //系统运行参数
        float m_Valve_Pos;              //当前阀位,反馈电位器所指示值
        float m_Valve_Pos_Old;
        float m_Valve_Pos_Last;
        float m_Valve_Pos_Set;
        float m_Valve_Check_Pos;
        float m_Valve_Check_Pos_Old;
        unsigned char m_Set_Num;        //组态设定当前值
        float m_APP_Current;            //外输入电流
        float m_APP_Current_Pos;
        unsigned char m_Valve_State;
        unsigned char m_Valve1_State;
        unsigned char m_Valve1_State_Old;
        unsigned char m_Valve2_State;
        unsigned char m_Valve2_State_Old;


        unsigned char m_A1_Timer;
        unsigned char m_A1_Alarm;
        unsigned char m_A2_Timer;
        unsigned char m_A2_Alarm;

        //初始化参数

        //中间变量,可以其它程序中使用,在初始化中使用
        unsigned char m_Auto_Init;      //自动初始化状态0:组态,1,初始化开始
        unsigned char m_Mani_Init;      //手动初始化状态0:组态,1,初始化开始
        unsigned char m_Mani_Init_Num;      //手动初始化状态0:组态,1,初始化开始
        unsigned char m_Auto_Init_Num;  //自动初始化状态0:1组态,1,初始化开始
        unsigned int  m_Auto_Init_Count;//自动初始化状态0:1组态,1,初始化开始
        unsigned char m_SDIR_m[22];     //测得作用方向
        unsigned char m_Auto_Z0;        //到一个端点正确否
        unsigned char m_Auto_Z1;        //下降时测得作用方向
        unsigned char m_Auto_Z2;        //下降时测得作用方向
        unsigned char m_Count1;         //循环显示计数
        unsigned char m_Count2;         //显示错误与RUN n计数
        unsigned char m_Count3;         //显示错误与RUN n计数
        unsigned char m_Count4;         //显示错误与RUN n计数
        unsigned char m_Error;          //错误
        float    m_Mani_Pos[3];

        //模型参数
        float m_mP1;                    //
        float m_mP2;                    //
        float m_mK;
        float m_mF;
        float m_mm;
        float m_mW;
        float m_mA;
        float m_mW1;
        float m_mW2;
        float m_mT;





//函数定义
//初始化函数
        void InitSystem(void);  //系统初始化
        void Init_Param(void);  //系统第一次开机时执行工厂置,或工厂预设定功能调用参数55
        void Init_Code(void);
        void Parm_Save(void);
        void Parm_Load(void);
//显示函数
     //底层显示程序,在单片中需修改
        void Draw_Data(unsigned char n,char data1,char data2,TCanvas *pCanvas);//大8数据
        void Draw_Num(unsigned char n,char data1,char data2,TCanvas *pCanvas); //小8数据
        void Draw_State(unsigned char n,char data[],TCanvas *pCanvas);//状态
        void Draw_UP_Arrow(TCanvas *pCanvas);//上箭头
        void Draw_DN_Arrow(TCanvas *pCanvas);//下箭头
        void Draw_Menus(TCanvas *pCanvas);   //负号
        void Draw_Circle(TCanvas *pCanvas);  //圆
     //显示数据
        void Disp_Data(char Data[12]);
        void Disp_State(unsigned char Data[6]);//显示状态
        void Disp_State_All(char D_Code[]);    //显示状态

        void Disp_Num(char Data[4]);   //段选码,单片机不用

        void Disp_Number(void);
        void Disp_HexToDec(unsigned long f,unsigned char Data[12]);    //16位数转成BCD10进制数
        void Disp_HexToDecM(unsigned int f,unsigned char Data[6]);    //16位数转成BCD10进制数
        int Disp_Process_Data(unsigned int f,unsigned char Data[12]);

        void Disp_Turn_Str_TO_Code(unsigned char s[],char data[12]);
        void Disp_Turn_Data_TO_Code8(double f,unsigned char c[12],int n);
        void Disp_Turn_Data_TO_Code8_LE(unsigned long f,unsigned char c[12]);
        void Disp_Turn_Long(unsigned long f,char data[12]);
        void Disp_Debug_Param();

//工作处理函数,工作状态时的处理函数
        void Work_Timer_Process(void);
        void Work_Func_Key(void);
        void Work_Start(void);
        void Work_Sub_Key(void);
        void Work_Add_Key(void);

        void Work_Auto(void);       //自动工作
        void Work_Disp_Data(void);  //显示工作数据
        void Work_Disp_Num(void);//小8字显示数字程序
        void Work_Disp_State(void);
        void Work_Disp_Curve(void); //单片机中无用,显示图形
        void Work_Mani(void);       //手动工作
        void Work_NoInit(void);     //无初始化工作
        void Work_Valve_Model();            //自动
        void Work_Valve_Model_Mani(int d);  //手动d=0下降,d=1上升
        void Work_Valve_Model_Mani_Noini(int d);
        void Work_Process_Set_Data(unsigned char S[],unsigned char D[]);
        double Work_Valve_Translate(double m);
        double Work_SetValve_Translate(double m);


//设定参数初始化函数
//
        void Set_Timer_Process(void);
        void Set_Start(void);
        void Set_Func_Key(void);
        void Set_FuncAndMenu_Key(void);
        void Set_Sub_Key(void);
        void Set_Add_Key(void);
        void Set_Add5s_Key(void);

        void Set_Auto_Init_Process();
        void Set_Auto_Init_Start();
        void Set_Auto_Init_Stop();
        void Set_Auto_Init_Run1(void);
        void Set_Auto_Init_Run2(void);
        void Set_Auto_Init_Run3(void);
        void Set_Auto_Init_Run4(void);
        void Set_Auto_Init_Run5(void);
        void Set_Disp_Wait_Num(void);
        void Set_Auto_Disp_Error(void);
        void Set_Disp(void);
        void Set_Save(void);
        void Set_Load(void);
        char Set_Change(char m_YFCT,char min,char max,char am);
        long Set_Change_L(long k,long min,long max,char am);
        long Set_Change_LL(long k,long min,long max,char am);
        float Set_Change_F(float k,float min,float max,char am);
        void Set_Mani_Init_Start();
        void Set_Mani_Init_Stop();
        void Set_Mani_Func_Key(void);
        void Set_Mani_Add_Key(void);
        void Set_Mani_Sub_Key(void);


//三、时间累积与温度处理函数
        void Check_Data_Save(void);
        void Check_Data_Load(void);
        void Check_Init_Param(void);
        void Check_Reset(unsigned long *d);
        void Check_T_F(float d);
        void Check_Save(void);
        void Check_Delay(unsigned long d);
        void Check_Disp(void);
        void Check_Func_Key(void);
        void Check_FuncAndSub_Key(void);
        void Check_TimerP(void);
        void Check_Add5s_Key(void);
        void Check_Start(void);
        void Check_Number(void);



//////////////////////////////////////////////////
//通用程序
//////////////////////////////////////////////////

        //自动初始化

        void Key_Func_Process();
        void Key_Func5s_Process();
        void Key_FuncSub_Process();
        void Key_Sub_Process();
        void Key_Add_Process();
        void Key_Add5s_Process();
        void Key_FuncSubAdd_Process();




};
//---------------------------------------------------------------------------
extern PACKAGE TMainForm *MainForm;


//---------------------------------------------------------------------------
#endif

⌨️ 快捷键说明

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