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

📄 winconsys.h

📁 《Windows CE .NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************/
/* Subroutine: Demo8000 for ICPDAS WinCON 8000                               */
/*                                                                           */
/* COPYRIGHT 2003 BY HUNG-TSAIR YEH                                          */
/*     Date :   2003 -10 - 01   designed  V1.0                               */
/*                                                                           */
/*                                           Desgined by Yeh Hung-Tsair      */
/*****************************************************************************/
#define   ED_MAX            128
#define   ED_MAX_DD_BYTE    16   // Alarm bit etc. 
#define   DD_MAX_BIT        512
#define   DD_MAX_BYTE       64 
#define   CT_MAX_CASE       128  // Timer and Counter max. case
#define   CT_MAX_DD_BYTE    16   // Timer, Counter Contact

// Analog Input
#define   AI_BARE_TYPE      1    // Bare data of AI Module                 
#define   AI_ENG_TYPE       2    // convert AI bare data to Engineering data  
#define   AI_SOFT_TYPE      3    // Soft AI TAG for internal data           
#define   AI_RH_TYPE        4    // Engineering Range High                 
#define   AI_RL_TYPE        5    // Enginnering Range Low                  
#define   AI_BH_TYPE        6    // Signal Bare data High                  
#define   AI_BL_TYPE        7    // Signal Bare data Low                   
#define   AI_FL_TYPE        8    // First order filter 0.0 - 1.0           
#define   AI_HH_TYPE        9    // Alarm High High Limit value            
#define   AI_H_TYPE         10   // Alarm High Limit value                 
#define   AI_L_TYPE         11   // Alarm Low Limit value                  
#define   AI_LL_TYPE        12   // Alarm Low Low Limit value              
#define   AI_DEAD_TYPE      13   // Alarm dead zone filter                 
// Analog Output
#define   AO_BARE_TYPE      21   // Bare data of AO Module                 
#define   AO_ENG_TYPE       22   // convert AO bare data to Engineering data  
#define   AO_SOFT_TYPE      23   // Soft AO TAG for internal data
#define   AO_RH_TYPE        24   // Engineering Range High                 
#define   AO_RL_TYPE        25   // Enginnering Range Low                  
#define   AO_BH_TYPE        26   // Signal Bare data High                  
#define   AO_BL_TYPE        27   // Signal Bare data Low                   
#define   AO_FL_TYPE        28   // First order filter 0.0 - 1.0           
#define   AO_HH_TYPE        29   // Alarm High High Limit value            
#define   AO_H_TYPE         30   // Alarm High Limit value                 
#define   AO_L_TYPE         31   // Alarm Low Limit value                  
#define   AO_LL_TYPE        32   // Alarm Low Low Limit value              
#define   AO_DEAD_TYPE      33   // Alarm dead zone filter                 
// Timer and Counter
#define   TM_PSET_TYPE      41   // Timer preset value
#define   TM_CURR_TYPE      42   // Timer current value
#define   TM_BIT_TYPE       43   // Timer contact bit
#define   CN_PSET_TYPE      44   // Counter preset value
#define   CN_CURR_TYPE      45   // Counter current value
#define   CN_BIT_TYPE       46   // Counter contact bit
// Digital Input   
#define   DI_BARE_TYPE      51   // DI module input status
#define   DI_SOFT_TYPE      52   // DI soft TAG for internal relay
#define   DI_PLON_TYPE      53   // DI plus ON 
#define   DI_PLOFF_TYPE     54   // DI plus OFF
#define   DO_BARE_TYPE      55   // DO module output status
#define   DO_SOFT_TYPE      56   // DO soft TAG for internal relay
#define   AI_HH_BIT_TYPE    57   // AI TAG High High alarm bit     
#define   AI_H_BIT_TYPE     58   // AI TAG High alarm bit          
#define   AI_L_BIT_TYPE     59   // AI TAG Low alarm bit           
#define   AI_LL_BIT_TYPE    60   // AI TAG Low Low alarm bit       
#define   AO_HH_BIT_TYPE    61   // AO TAG High High alarm bit     
#define   AO_H_BIT_TYPE     62   // AO TAG High alarm bit          
#define   AO_L_BIT_TYPE     63   // AO TAG Low alarm bit           
#define   AO_LL_BIT_TYPE    64   // AO TAG Low Low alarm bit       
#define   DO_PLON_TYPE      65   // DO plus ON (include Alarm, Timer, Counter bit)
#define   DO_PLOFF_TYPE     66   // DO plus OFF (include Alarm, Timer, Counter bit)
// for AI or AO alarm bit
#define   AI_ENG_HH_BIT_TYPE     70   // AI Eng. TAG High High alarm bit     
#define   AI_ENG_H_BIT_TYPE      71   // AI Eng. TAG High alarm bit          
#define   AI_ENG_L_BIT_TYPE      72   // AI Eng. TAG Low alarm bit           
#define   AI_ENG_LL_BIT_TYPE     73   // AI Eng. TAG Low Low alarm bit       
#define   AO_ENG_HH_BIT_TYPE     74   // AO Eng. TAG High High alarm bit     
#define   AO_ENG_H_BIT_TYPE      75   // AO Eng. TAG High alarm bit          
#define   AO_ENG_L_BIT_TYPE      76   // AO Eng. TAG Low alarm bit           
#define   AO_ENG_LL_BIT_TYPE     77   // AO Eng. TAG Low Low alarm bit       
#define   AI_SOFT_HH_BIT_TYPE    78   // AI Soft TAG High High alarm bit     
#define   AI_SOFT_H_BIT_TYPE     79   // AI Soft TAG High alarm bit          
#define   AI_SOFT_L_BIT_TYPE     80   // AI Soft TAG Low alarm bit           
#define   AI_SOFT_LL_BIT_TYPE    81   // AI Soft TAG Low Low alarm bit       
#define   AO_SOFT_HH_BIT_TYPE    82   // AO Soft TAG High High alarm bit     
#define   AO_SOFT_H_BIT_TYPE     83   // AO Soft TAG High alarm bit          
#define   AO_SOFT_L_BIT_TYPE     84   // AO Soft TAG Low alarm bit           
#define   AO_SOFT_LL_BIT_TYPE    85   // AO Soft TAG Low Low alarm bit       

// for AI or AO Alarm limit value
#define   AI_ENG_HH_TYPE        90   // Alarm High High Limit value            
#define   AI_ENG_H_TYPE         91   // Alarm High Limit value                 
#define   AI_ENG_L_TYPE         92   // Alarm Low Limit value                  
#define   AI_ENG_LL_TYPE        93   // Alarm Low Low Limit value              
#define   AI_ENG_DEAD_TYPE      94   // Alarm dead zone filter                 
#define   AO_ENG_HH_TYPE        95   // Alarm High High Limit value            
#define   AO_ENG_H_TYPE         96   // Alarm High Limit value                 
#define   AO_ENG_L_TYPE         97   // Alarm Low Limit value                  
#define   AO_ENG_LL_TYPE        98   // Alarm Low Low Limit value              
#define   AO_ENG_DEAD_TYPE      99   // Alarm dead zone filter                 
#define   AI_SOFT_HH_TYPE       100  // Alarm High High Limit value            
#define   AI_SOFT_H_TYPE        101  // Alarm High Limit value                 
#define   AI_SOFT_L_TYPE        102  // Alarm Low Limit value                  
#define   AI_SOFT_LL_TYPE       103  // Alarm Low Low Limit value              
#define   AI_SOFT_DEAD_TYPE     104  // Alarm dead zone filter                 
#define   AO_SOFT_HH_TYPE       105  // Alarm High High Limit value            
#define   AO_SOFT_H_TYPE        106  // Alarm High Limit value                 
#define   AO_SOFT_L_TYPE        107  // Alarm Low Limit value                  
#define   AO_SOFT_LL_TYPE       108  // Alarm Low Low Limit value              
#define   AO_SOFT_DEAD_TYPE     109  // Alarm dead zone filter                 

typedef struct  _REGISTER_TAG
{
   float   AI_BARE[ED_MAX];    // Input Register Bare data
   float   AI_ENG[ED_MAX];     // Input Register Eng. data
   float   AI_SOFT[ED_MAX*4];  // Input Register internal use 
   float   AO_BARE[ED_MAX];    // Holding Register Bare Data
   float   AO_ENG[ED_MAX];     // Holding Register Eng. Data
   float   AO_SOFT[ED_MAX*4];  // Holding Register internal use 
   float   AI_RH[ED_MAX];      // Input Register Eng. Range High for Eng. value convert
   float   AI_RL[ED_MAX];      // Input Register Eng. Range Low for Eng. value convert
   float   AO_RH[ED_MAX];      // Holding Register Eng. Range High for Eng. value convert
   float   AO_RL[ED_MAX];      // Holding Register Eng. Range Low for Eng. value convert
   float   AI_BH[ED_MAX];      // Input Register Bare Range High for Eng. value convert
   float   AI_BL[ED_MAX];      // Input Register Bare Range Low for Eng. value convert
   float   AO_BH[ED_MAX];      // Holding Register Bare Range High for Eng. value convert
   float   AO_BL[ED_MAX];      // Holding Register Bare Range Low for Eng. value convert
   float   AI_FL[ED_MAX];      // Input Register first order filter 
   float   AO_FL[ED_MAX];      // Holding Register first order filter 
   float   AI_HH[ED_MAX*5];    // Input Register High High Alarm limit value for ENG and SOFT
   float   AI_H[ED_MAX*5];     // Input Register High Alarm limit value for ENG and SOFT  
   float   AI_L[ED_MAX*5];     // Input Register Low Alarm limit value for ENG and SOFT
   float   AI_LL[ED_MAX*5];    // Input Register Low Low Alarm limit value for ENG and SOFT
   float   AI_DEAD[ED_MAX*5];  // Input Register Alarm Dead Band value for ENG and SOFT
   float   AO_HH[ED_MAX*5];    // Holding Register High High Alarm limit value for ENG and SOFT
   float   AO_H[ED_MAX*5];     // Holding Register High Alarm limit value for ENG and SOFT  
   float   AO_L[ED_MAX*5];     // Holding Register Low Alarm limit value for ENG and SOFT
   float   AO_LL[ED_MAX*5];    // Holding Register Low Low Alarm limit value for ENG and SOFT
   float   AO_DEAD[ED_MAX*5];  // Holding Register Alarm Dead Band value for ENG and SOFT
   float   AO_INIT[ED_MAX*5];  // AO initial value when system start
   float   AI_INIT[ED_MAX*5];  // AI initial value when system start
   short   TM_PSET[CT_MAX_CASE];  // Timer preset value
   short   TM_CURR[CT_MAX_CASE];  // Timer current value
   short   CN_PSET[CT_MAX_CASE];  // Counter preset value
   short   CN_CURR[CT_MAX_CASE];  // Counter current value
} REGISTER_TAG, *pREGISTER_TAG;


#define  DI_MAX_PLUS_BYTE    DD_MAX_BYTE*3
#define  DO_MAX_PLUS_BYTE    DD_MAX_BYTE*3+ED_MAX_DD_BYTE*40+CT_MAX_DD_BYTE*2
typedef struct   _COIL_TAG
{
   unsigned char DI_BARE[DD_MAX_BYTE];   // Input Coil
   unsigned char DI_SOFT[DD_MAX_BYTE*2];
   unsigned char DI_PLON[DI_MAX_PLUS_BYTE];  // DI Plus On bit
   unsigned char DI_PLOFF[DI_MAX_PLUS_BYTE]; // DI Plus Off bit
   unsigned char DI_OLD[DI_MAX_PLUS_BYTE];
   unsigned char DO_BARE[DD_MAX_BYTE];  // Output Coil
   unsigned char DO_SOFT[DD_MAX_BYTE*2];  
   unsigned char AI_HH[ED_MAX_DD_BYTE*5];   
   unsigned char AI_H[ED_MAX_DD_BYTE*5];
   unsigned char AI_L[ED_MAX_DD_BYTE*5];
   unsigned char AI_LL[ED_MAX_DD_BYTE*5];
   unsigned char AO_HH[ED_MAX_DD_BYTE*5]; 
   unsigned char AO_H[ED_MAX_DD_BYTE*5];
   unsigned char AO_L[ED_MAX_DD_BYTE*5];
   unsigned char AO_LL[ED_MAX_DD_BYTE*5];
   unsigned char TM_BIT[CT_MAX_DD_BYTE];      // Timer contact bit
   unsigned char CN_BIT[CT_MAX_DD_BYTE];      // Counter contact bit
   unsigned char DO_PLON[DO_MAX_PLUS_BYTE];   // DO Plus On bit
   unsigned char DO_PLOFF[DO_MAX_PLUS_BYTE];  // DO Plus Off bit
   unsigned char DO_INIT[DD_MAX_BYTE*3];  // DO initial value when system start
   unsigned char DI_INIT[DD_MAX_BYTE*3];  // DI initial value when system start
   unsigned char DO_OLD[DO_MAX_PLUS_BYTE];
} COIL_TAG, *pCOIL_TAG;


// TAG start pointer of Modbus address
// Analog TAG Input Register 3xxxxx
#define   AI_BARE_PTR    0 
#define   AI_ENG_PTR     ED_MAX
#define   AI_SOFT_PTR    ED_MAX*2
// Analog TAG Output Register 4xxxxx
#define   AO_BARE_PTR    0 
#define   AO_ENG_PTR     ED_MAX
#define   AO_SOFT_PTR    ED_MAX*2
#define   AI_RH_PTR      ED_MAX*6
#define   AI_RL_PTR      ED_MAX*7
#define   AO_RH_PTR      ED_MAX*8
#define   AO_RL_PTR      ED_MAX*9
#define   AI_BH_PTR      ED_MAX*10
#define   AI_BL_PTR      ED_MAX*11
#define   AO_BH_PTR      ED_MAX*12
#define   AO_BL_PTR      ED_MAX*13
#define   AI_FL_PTR      ED_MAX*14
#define   AO_FL_PTR      ED_MAX*15
#define   AI_HH_PTR      ED_MAX*16
#define   AI_H_PTR       ED_MAX*21

⌨️ 快捷键说明

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