📄 winconsys.h
字号:
/*****************************************************************************/
/* 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 + -