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

📄 defprl.h

📁 104规约linux
💻 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 + -