📄 comm.h
字号:
#include <windows.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <memory.h>
#include <time.h>
#include "\users\ems\system\dms\v3.0a\inc\dmsstd.h"
#include "\users\ems\system\dms\v3.0a\inc\dmserr.h"
#include "\users\ems\system\dms\v3.0a\inc\dmsdef.h"
#include "\users\ems\system\dms\v3.0a\inc\dmscom.h"
#include "\users\ems\system\dps\v3.0a\inc\dbwritedata.h"
#include "\users\ems\system\dps\v3.0a\inc\dbwriteh.h"
#include "\users\ems\system\dps\v3.0a\inc\data_type_def.h"
//#define RCV_TEST //调试时,从pd_test.txt文件中读网调命令
//#define EMS_TEST //调试时,从ems_test.txt文件中读时实数据
#define FOR_HDWD
#define COMM_PORT "\\\\.\\COM11"
#define TIMEOUT_SECONDS 8
#define RTU_LOCAL_ADDR 0x01
#define RTU_BROADCAST_ADDR 0xff
#define INFO_TABLE "\\users\\ems\\system\\n4f\\v3.0a\\def\\网调通讯信息表.txt"
#define INFO_TABLE_VALID "\\users\\ems\\system\\n4f\\v3.0a\\def\\valid_infotable.txt"
#define IOMB_CONFIG_VALID "\\users\\ems\\system\\n4f\\v3.0a\\def\\valid_infoconfig.txt"
#define CMDRECORD "\\users\\ems\\system\\n4f\\v3.0a\\网调下达命令记录\\"
#define YES 1
#define NO 0
#define BUFSIZE 1024
#define OK 0
#define FAILURE -1
#define TIMEOUT -2
#define POSITIVE 0x00
#define NEGATIVE 0x80
#define OPEN 0x00
#define CLOSE 0x01
#define YC_TYPE 0x00
#define YX_TYPE 0x01
#define YT_TYPE 0x02
#define YK_TYPE 0x03
#define BCD_TYPE 0x04
#define IMP_TYPE 0x05
#define SCAN_PERIOD 500 //数据查询周期(毫秒)
typedef struct
{ short status;
short value;
} DB_DATA;
typedef struct
{ char dev_id;
char data_type;
short point_id;
} DB_ID;
typedef struct
{ int value;
char sign;
short format;
} INT_STRU;
BOOL Lan_init(), Lan_finish();
DB_DATA *DBread_by_name();
DB_ID *DBread_id();
void Endproc(), Get_crc8(), Get_crc16(),
Read_info_table(),Clear_iomb(), Clear_soe(),
Cfg_init_iomb(), Print_iomb_cfg(), Print_iomb_cfg_all(),
Get_yx_value(), Get_yc_value(), Cmd_record(),
Bufr_merge(), Bufs_merge(), sleep(),
Brd_YT(), Brd_YK(), P_adj_cmd(),
Int_to_float(), Float_to_int(),
Real_data_proc(), Rcv_data_proc(),
Proc_TYPE_0DH(), Proc_TYPE_05H_1AH(),
Proc_TYPE_1CH(), Proc_TYPE_1CH_imp(),
Proc_TYPE_0FH(), Proc_TYPE_1EH(),
Wait_before_send();
int Port_init(), Disp_time(), Check_crc(),
Write_out(), Write_out_crc8(), Write_out_crc16(),
Read_in(), read(), write(),
MountDB(),
DBreadbyname_stat(),
Get_ADvalue(), Get_ms();
void Send_ACK(), Send_NCK(), Send_POWER_ON();
//==========================================================//
#define DATA_POSITIVE 0x00
#define DATA_NEGATIVE 0x08
#define X 99
#define XXXX 0
#define XXX_X 1
#define XX_XX 2
#define X_XXX 3
#define MAX_MODULE_NU 32 //RTU可配置的最大模板数
#define MAX_NUM 1000
#define MAX_SOE_REC 100 //可保存的最大SOE记录数
typedef struct
{ char year;
char month;
char day;
char hour;
char minute;
char second;
int ms;
time_t value;
} ABS_TIME;
typedef struct /*------ 遥测量结构 ------*/
{ char l_name[100]; //逻辑名
char c_name[100]; //中文名
short value; //H9000格式value
short status; //H9000格式status
short AD_value; //由实时值转换的AD值
char AD_signe; //由实时值转换的AD值的符号
short fan_code; //反码
float f_value; //H9000格式模拟量变的浮点数
unsigned short imp_old; //旧脉冲个数
unsigned short imp_new; //新脉冲个数
long int l_value;
int prs_id; //模拟量压缩因子ID号
float data_up; //模拟量数值值上限
float data_low; //模拟量数值值下限
int mea_up; //模拟量AD测量值上限
int mea_low; //模拟量AD测量值下限
int mea_zero; //模拟量AD测量值零点
float PD_imp_cvt; //向网调送,电度变比(KWH/脉冲)
float EMS_imp_cvt; //H9000电度变比(KWH/脉冲)
} YC_PID;
typedef struct /*------ 遥信量结构 ------*/
{ char l_name[100]; //逻辑名
char c_name[100]; //中文名
short status; //状态
ABS_TIME time; //时标
} YX_PID;
typedef struct
{ int scan_allow;
int chg_flag;
YC_PID yc_pid[1];
} YC;
typedef struct
{ int scan_allow;
int chg_flag;
YX_PID yx_pid[16];
short status_bit;
short chg_bit_id;
int soe_flag;
} YX;
typedef struct /* -------- RTU模板定义 -------- */
{ char def_type;
char mb_type;
char mb_type_id;
int mb_used;
int mb_data_chg;
char mb_w_id;
YC yc[8];
YX yx[8];
} IO_MB;
typedef struct
{ char l_name[100];
char c_name[100];
char dev_id;
char data_type;
short point_id;
} CTRL_GRP;
typedef struct /* ------- RTU遥控组定义 ------ */
{ int config;
CTRL_GRP ctrl_pnt[8];
} YK_GRP;
typedef struct
{ char cmd_name[100];
short h9000_value;
short h9000_status;
int pd_ADvalue;
float pd_FLvalue;
} CMD_PACK;
//------------------------------------------------------//
typedef struct
{ int used;
int iomb_addr;
int word_addr;
int bit_addr;
char status_id;
char status;
char location;
long time_val;
} SOE_BUF;
typedef struct /*-------- SOE记录区定义 --------*/
{ long syn_time;
SOE_BUF soe_buf[100];
} SOE_REC;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -