📄 defprl.h
字号:
//******************************************************************
//
// 结构定义文件:DefPrl.h
// 文件内容:定义104协议帧结构
// 结构定义规则:见文档《变量定义规范》
// 创建者:
// 创建时间:2007-7-19
//******************************************************************
//***************************头文件区*******************************
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
//******************************************************************
#ifndef DEF_PRL_H
#define DEF_PRL_H
//**********************帧头帧尾值的宏定义**************************
#define HEAD_FIXED_FRAME 0x10
#define TAIL_FIXED_FRAME 0x16
#define HEAD_UNFIXED_FRAME 0x68
#define TAIL_UNFIXED_FRAME 0x16
#define SUB_HEAD_FLAG 0x68
#define HEAD_REBOOT 0xDD
#define HEAD_DSP 1
//******************************************************************
//**************************帧结构**********************************
#define OFFS_HEAD 0
//**********************固定长度帧结构******************************
#define FIXED_OFFS_CONTROL (OFFS_HEAD+1)
//监测仪链路地址偏移
#define FIXED_OFFS_LINK_ADDR (FIXED_OFFS_CONTROL+1)
//校验和低字节偏移
#define FIXED_OFFS_CRC_LOW (FIXED_OFFS_LINK_ADDR+1)
//校验和高字节偏移
#define FIXED_OFFS_CRC_HIGH (FIXED_OFFS_CRC_LOW+1)
//固定长度帧尾标志偏移
#define FIXED_OFFS_TAIL (FIXED_OFFS_CRC_HIGH+1)
//******************************************************************
//**********************可变长度帧结构******************************
//长度低字节偏移
#define OFFS_LEN_LOW (OFFS_HEAD+1)
//长度高字节偏移
#define OFFS_LEN_HIGH (OFFS_LEN_LOW+1)
//子帧头偏移
#define OFFS_SUB_HEAD (OFFS_LEN_HIGH+1)
//控制标志偏移
#define OFFS_CTRL_FLAG (OFFS_SUB_HEAD+1)
//链路数据地址偏移
#define OFFS_LINK_ADDR (OFFS_CTRL_FLAG+1)
//用户链路数据偏移
#define OFFS_USER_DATA_FRAME (OFFS_LINK_ADDR+1)
//*******************用户链路数据内部结构***************************
//用户数据帧类型偏移
#define OFFS_UD_FRAME_TYPE 0
//可变结构限定词偏移
#define OFFS_UD_REC_NUM (OFFS_UD_FRAME_TYPE+1)
//传送原因偏移
#define OFFS_UD_REASON (OFFS_UD_REC_NUM+1)
//监测仪设备地址偏移
#define OFFS_UD_DEV_ADDR (OFFS_UD_REASON+1)
//监测仪设备地址之线路号偏移
#define OFFS_UD_DEV_ADDR_THREADID (OFFS_UD_REASON+1)
//监测仪设备地址之DSP板号偏移
#define OFFS_UD_DEV_ADDR_DSPID (OFFS_UD_DEV_ADDR_THREADID+1)
//用户数据记录类型偏移
#define OFFS_UD_REC_TYPE (OFFS_UD_DEV_ADDR+2)
//用户数据帧总帧数
#define OFFS_UD_FRAME_SUM (OFFS_UD_REC_TYPE+1)
//用户数据帧帧序号
#define OFFS_UD_FRAME_ID (OFFS_UD_FRAME_SUM+1)
//记录数据偏移
#define OFFS_UD_DATA (OFFS_UD_FRAME_ID+1)
//******************************************************************
//校验和
//******************************************************************
//**********************控制字段值的宏定义**************************
//主站复位远方链路
#define FCTL_RESET 0x40
//监测仪肯定式确认数据包
#define FCTL_CONFIRM_YES 0x80
//监测仪否定式确认数据包
#define FCTL_CONFIRM_NO 0x85
//主站查询监测仪系统信息
#define FCTL_GET_SYS_INFO 0x4D
//主站设置监测仪DSP的参数
#define FCTL_SET_DSP_PARAM 0x44
//主站查询监测仪DSP的参数
#define FCTL_GET_DSP_PARAM 0x4C
//主站设置监测仪MCU的参数
#define FCTL_SET_MCU_PARAM 0x43
//主站查询监测仪MCU的参数
#define FCTL_GET_MCU_PARAM 0x4B
//监测仪对设置或查询MCU参数的返回
#define FCTL_PARAM_OP_RETURN 0x81
//主站召唤数据
#define FCTL_GET_DATA 0x4A
//监测仪带数据的肯定式确认
#define FCTL_CFM_YES_WITH_DATA 0x88
//******************************************************************
//**********************传输类型值的宏定义**************************
//请求或者被请求
#define TR_SEASON_REQUEST 0x05
//系统正忙,请稍侯
#define TR_SEASON_BUSY_NOW 0x10
//监测仪不存在
#define TR_SEASON_DEV_NOEXIST 0x11
//秒(实时)
#define TR_SEASON_FOR_SECOND 0x1f
//分(准实时)
#define TR_SEASON_FOR_MINUTE 0x20
//三分
#define TR_SEASON_FOR_MINUTES 0x20
//小时
#define TR_SEASON_FOR_HOUR 0x21
//日
#define TR_SEASON_FOR_DAY 0x22
//小时
#define TR_SEASON_FOR_MONTH 0x24
//******************************************************************
//**********************统计类型值的宏定义**************************
//三分钟
#define SHOW_STAT_MINUTES 0x00
//小时
#define SHOW_STAT_HOUR 0x01
//日
#define SHOW_STAT_DAY 0x02
//月
#define SHOW_STAT_MONTH 0x04
//实时
#define SHOW_MR_IN_SECOND 0x00
//准实时
#define SHOW_MR_IN_MINUTE 0x01
//******************************************************************
#define FIELD_DEV_ADDR_LEN 1
//专线MODEM或广播命令
#define FADR_BROADCAST 0xff
#define FIELD_RECORD_ADDR_LEN 1
//链路用户数据类型
//读取监测仪系统信息
#define FRAME_TYPE_GET_SYS_INFO 0x63
//读取监测仪实时数据
#define FRAME_TYPE_GET_SECD_DATA 0x65
//读取监测仪历史数据
#define FRAME_TYPE_GET_HIST_DATA 0x66
//读取,设置监测仪参数,用类型5格式
#define FRAME_TYPE_GETSET_PARAM 0x69
//监测仪返回实时数据
#define FRAME_TYPE_RET_SECD_DATA 0x80
//监测仪返回历史数据
#define FRAME_TYPE_RET_HIST_DATA 0x81
//返回事件数据
#define FRAME_TYPE_RET_EVNT_DATA 0x84
//返回监测仪系统信息
#define FRAME_TYPE_RET_SYS_INFO 0x85
//数据记录类型宏定义
//线路及DSP设置
#define DRT_LINE_DSP_SET 0x10
//时钟与日历
#define DRT_DATE_TIME 0x11
//线路额定值设置
#define DRT_RATING_SET 0x12
//线路限值设置
#define DRT_UP_DOWN_SET 0x13
//接线方式设置
#define DRT_CONNECTION_TYPE_SET 0x14
//互感器变化设置
#define DRT_TRANS_RATING_SET 0x15
//事件过滤设置
#define DRT_EVENT_FILTER_SET 0x16
//故障过滤设置
#define DRT_FAULT_FILTER_SET 0x17
//稳态录波设置
#define DRT_REC_PARAM_ME_SET 0x18
//暂态录波设置
#define DRT_REC_PARAM_TE_SET 0x19
//高级系统参数设置
#define DRT_ADV_SYS_PARAM_SET 0x1A
//网络与监测仪号设置
#define DRT_NETWORK_SET 0x1B
//以下开始留置扩充
//电压曲线图
#define DRT_VLT_CURVE_GRAPH 0x20
//电流曲线图
#define DRT_CRRN_CURVE_GRAPH 0x21
//向量图
#define DRT_VECTOR_GRAPH 0x22
//缺省监测电压有效值表方式
#define DRT_DEFAULT_VLT_RMS 0x23
//全监测电压有效值表方式
#define DRT_FULL_VLT_RMS 0x24
//缺省监测电流有效值表方式
#define DRT_DEFAULT_CRRN_RMS 0x25
//全监测电流有效值表方式
#define DRT_FULL_CRRN_RMS 0x26
//有功功率表
#define DRT_PN 0x27
//无功功率表
#define DRT_QN 0x28
//视在功率表
#define DRT_SN 0x29
//功率因数表
#define DRT_POWER_FACTOR 0x2A
//长期电压变动
#define DRT_VLT_VRTN 0x2B
//长期频率变动
#define DRT_FRQ_VRTN 0x2C
//电压谐波方图
#define DRT_HRMN_VLT_GRAPH 0x2D
//电流谐波方图
#define DRT_HRMN_CRRN_GRAPH 0x2E
//电压谐波与间谐波有效值包络线图
#define DRT_IHRMN_VLT_TABLE 0x2F
//电流谐波与间谐波有效值梯形图
#define DRT_IHRMN_CRRN_TABLE 0x30
//总谐波电压数值表
#define DRT_TTL_HRMN_VLT_TABLE 0x31
//总谐波电流数值表
#define DRT_TTL_HRMN_CRRN_TABLE 0x32
//各次谐波电压数值表
#define DRT_HRMN_VLT_TABLE 0x33
//各次谐波电流数值表
#define DRT_HRMN_CRRN_TABLE 0x34
//电压波动与闪变
#define DRT_FLCT_FLCK 0x35
//三相电压不平衡
#define DRT_VLT_UNBL 0x36
//三相电流不平衡
#define DRT_CRRN_UNBL 0x37
//事件
#define DRT_EVENT 0x38
//脉冲与震荡暂态
#define DRT_PULSE_VIBRATION 0x39
//电能显示
#define DRT_POWER_DISPLAY 0x3A
//频率值表
#define DRT_FRQ_TABLE 0x3B
//谐波相位差
#define DRT_HRMN_PHS_DIFF 0x3C
//三相电压不平衡-扩展版
#define DRT_VLT_UNBL_EXT 0x3D
//三相电流不平衡-扩展版
#define DRT_CRRN_UNBL_EXT 0x3E
//系统自检
#define DRT_SELF_CHECK 0x62
//在线检测
#define DRT_ONLINE_TEST 0x63
#define MAX_MESSAGE_LEN 10240
#define MAX_DATA_LEN (10240-17)
#define PRL_INVALID_LINE_ID 0x02
#define PRL_EXECUTE_OK 0x01
#define PRL_EXECUTE_FAILED 0x00
#define TRANS_UNIT_SIZE 1024
typedef struct {
int Server;
struct sockaddr_in FromAddr;
int FromAddrLen;
int Length;
char Content[MAX_MESSAGE_LEN];
}TNetMessage;
typedef struct {
unsigned char HeadFlag;
unsigned char LowLength;
unsigned char HighLength;
unsigned char SubHeadFlag;
unsigned char Control;
unsigned char LinkAddress;
unsigned char LowCRC;
unsigned char HighCRC;
unsigned char TailFlag;
struct {
unsigned char FrameType;
unsigned char RecordNum;
unsigned char TransReason;
struct {
unsigned char ThreadID;
unsigned char DspID;
}DeviceAddress;
unsigned char DataRecordType;
unsigned char FrameSum;
unsigned char FrameID;
char Data[MAX_DATA_LEN];
//该字段为辅助字段, 不在协议规定与支持范围内
unsigned short int DataLen;
}UserData;
}TPrlFrame;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -