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

📄 comm.h

📁 该程序实现N4F接口程序
💻 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 + -