Files
kunlun/app/brm/inc/proto_645_brk_ext.h
2024-09-28 14:24:04 +08:00

272 lines
9.8 KiB
C

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef PROTO_645_BRK_EXT_H
#define PROTO_645_BRK_EXT_H
/* protocol header file */
#include "proto_645.h"
/* pack for the structures in the whole file */
#pragma pack(push) /* save the pack status */
#pragma pack(1) /* 1 byte align */
/* extended breaker data item of extended 645-2007 frame */
/* breaker DI define */
/* DI: the breaker current data */
#define PROTO_645_EXT_BRK_DI_I_A (0xea020201u)
#define PROTO_645_EXT_BRK_DI_I_B (0xea020202u)
#define PROTO_645_EXT_BRK_DI_I_C (0xea020203u)
#define PROTO_645_EXT_BRK_DI_I_ALL (0xea0202ffu)
/* switch fw version */
#define PROTO_645_EXT_BRK_DI_FW_VER (0xea040002u)
/* leakage protection status word */
#define PROTO_645_EXT_BRK_DI_LP_WORD (0xea040100u)
/* breaker curve data start record tm */
#define PROTO_645_EXT_BRK_CURVE_START_TM (0xea040401u)
/* breaker curve data record tm interval unit: minu */
#define PROTO_645_EXT_BRK_CURVE_INTERVAL_TM (0xea040402u)
/* set breaker 485 mode words */
#define PROTO_645_EXT_BRK_485_MODE (0xea040601u)
/* start calibration */
#define PROTO_645_EXT_BRK_START_CALIBRATE (0xea040603u)
/* calibration status */
#define PROTO_645_EXT_BRK_CALIBRATE_STATUS (0xea040604u)
/* breaker energy measure data */
#define PROTO_645_EXT_BRK_MEASURE_DATA (0xea040701u)
/* erase switch fw */
#define PROTO_645_EXT_BRK_DI_ERASE_FW (0xeaeaea00u)
/* breaker energy measure data */
#define PROTO_645_EXT_BRK_DI_MEASURE_DATA2 (0xeafe00ffu)
/* erase switch value */
#define PROTO_645_EXT_BRK_DI_ERASE_FW_VALUE (0xaa)
/* define 645-2007 extend protocol fn */
/* FN: brk rpt data */
#define PROTO_645_2007_EXT_BRK_FN (0x14)
/* define brk current data length */
#define PROTO_645_EXT_BRK_A_LEN (2)
/* define phase sequence data length */
#define PROTO_645_EXT_BRK_PHASE_SN_LEN (2)
/* defined max phase number for breaker */
#define PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM (3)
/* breaker phase id */
#define PROTO_645_2007_EXT_BRK_PHASE_A 0
#define PROTO_645_2007_EXT_BRK_PHASE_B 1
#define PROTO_645_2007_EXT_BRK_PHASE_C 2
#define PROTO_645_2007_EXT_BRK_PHASE_ALL 3
#define PROTO_645_2007_EXT_BRK_PHASE_CNT 4
/* breaker energy measure data */
typedef struct _proto_645_ext_brk_measure_data {
/* voltage RMS, uint is 0.1V, bcd: XXX.X */
uint8_t v[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_V_LEN];
/* current RMS, uint is 0.1A, bcd: XXX.X */
uint8_t i[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_EXT_BRK_A_LEN];
/* three-phase sum active power, uint is 0.001 KW, BCD */
uint8_t all_p[PROTO_645_07_P_LEN];
/* active power, uint is 0.001 KW, bcd: XXX.XXX */
uint8_t p[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_07_P_LEN];
/* three-phase sum reactive power, uint is 0.001 Kvar, BCD */
uint8_t all_q[PROTO_645_07_P_LEN];
/* reactive power, uint is 0.001 Kvar, bcd: XXX.XXX */
uint8_t q[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_07_P_LEN];
/* three-phase sum apparent power, uint is 0.001 KVA, BCD */
uint8_t all_s[PROTO_645_07_P_LEN];
/* apparent power, uint is 0.001 KVA, bcd: XXX.XXX */
uint8_t s[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_07_P_LEN];
/* frequency, uint Hz, bcd: XX.XX */
uint8_t freq[PROTO_645_07_FREQ_LEN];
/* phase sequence, BIN: bit0-2 means phaseA/B/C, set "1" to
* indicate which phase the device belongs to */
uint8_t phase[PROTO_645_EXT_BRK_PHASE_SN_LEN];
/* three-phase power factor, uint is 0.01 KVA, BCD */
uint8_t all_pf[PROTO_645_07_PF_LEN];
/* power factor, uint is 0.01 bcd: XX.XX */
uint8_t pf[PROTO_645_2007_EXT_BRK_MAX_PHASE_NUM][PROTO_645_07_PF_LEN];
/* positive active total energy, uint is 1/ec kwh bcd */
uint8_t ept_pos[PROTO_645_07_ENERGY_DATA_LEN];
/* negative active total energy, uint is 1/ec kwh bcd */
uint8_t ept_neg[PROTO_645_07_ENERGY_DATA_LEN];
} proto_645_ext_brk_measure_data_t;
/* breaker energy measure data */
typedef struct _proto_645_ext_brk_measure_data2 {
/* year */
uint16_t tm_year;
/* month */
uint8_t tm_mon;
/* day */
uint8_t tm_mday;
/* hour */
uint8_t tm_hour;
/* minute */
uint8_t tm_min;
/* second */
uint8_t tm_sec;
/* power line frequency, uint is 0.01Hz */
uint16_t freq;
/* temperature, uint is 0.1 centigrade */
int16_t temperature;
/* voltage angle between phaseA and phaseB. unit: 1degrees */
int16_t angle_ua_ub;
/* voltage angle between phaseA and phaseC. unit: 1degrees */
int16_t angle_ua_uc;
/* voltage angle between phaseB and phaseC. unit: 1degrees */
int16_t angle_ub_uc;
/* power factor. unit: 0.001 */
int16_t p_factor[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* active power. unit: 0.000001KW */
int32_t p_p[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* reactive power. unit: 0.000001Kvar */
int32_t p_q[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* apparent power. unit: 0.000001KVA */
int32_t p_s[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* voltage rms. unit: 0.1V */
uint16_t u_rms[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* power angele(only phaseA/B/C). unit: 0.1degrees */
int16_t angle_u_i[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* current rms. unit: 0.00001A */
int32_t i_rms[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* positive active energy. unit: 0.01 kwh */
uint32_t e_p_pos[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* negative active energy. unit: 0.01 kwh */
uint32_t e_p_neg[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* positive reactive energy. unit: 0.01 kvarh */
uint32_t e_q_pos[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* negative reactive energy. unit: 0.01 kvarh */
uint32_t e_q_neg[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* positive apparent energy. unit: 0.01 kwh */
uint32_t e_s_pos[PROTO_645_2007_EXT_BRK_PHASE_CNT];
/* negative apparent energy. unit: 0.01 kwh */
uint32_t e_s_neg[PROTO_645_2007_EXT_BRK_PHASE_CNT];
} proto_645_ext_brk_measure_data2_t;
/* leakage protection status word switch status */
/* switch on status */
#define PROTO_645_EXT_BRK_LPWD_SWITCH_ON (0x00)
/* rsvd status */
#define PROTO_645_EXT_BRK_LPWD_RSVD (0x01)
/* reclosing status */
#define PROTO_645_EXT_BRK_LPWD_RECLOSING (0x02)
/* switch trip status */
#define PROTO_645_EXT_BRK_LPWD_SWITCH_TRIP (0x03)
/* switch normal status */
#define PROTO_645_EXT_BRK_LPWD_NORMAL (0x00)
/* breaker leakage protection status words */
typedef struct _proto_645_ext_brk_leak_protect_wd {
/* switch trip reason */
uint8_t warn_reason : 5,
/* switch status */
switch_sts : 2,
/* switch warn flag */
warn_flag : 1;
} proto_645_ext_brk_leak_protect_wd_t;
/* breaker 485 mode */
typedef struct _proto_645_ext_brk_485_mode {
/* 485 mode : 1 - slave mode, 0 - master mode */
uint8_t slave : 1,
/* baudrate: 1200bps */
bps_1200 : 1,
/* baudrate: 2400bps */
bps_2400 : 1,
/* baudrate: 4800bps */
bps_4800 : 1,
/* baudrate: 9600bps */
bps_9600 : 1,
/* baudrate: 115200bps */
bps_115200 : 1,
/* reserved for future */
rsvd : 2;
} proto_645_ext_brk_485_mode_t;
/* curve record start time structure layout */
typedef struct _proto_645_ext_brk_curve_rec_start {
/* min - BCD */
uint8_t min;
/* hour - BCD */
uint8_t hour;
/* day - BCD */
uint8_t day;
/* mon - BCD */
uint8_t mon;
} proto_645_ext_brk_curve_rec_start_t;
/* switch version information define */
typedef union _proto_645_ext_brk_switch_ver {
/* switch version */
uint16_t version;
struct {
/* revision version */
uint8_t revision;
/* minor version */
uint8_t minor: 4,
/* major version */
major: 4;
} sub_version;
} proto_645_ext_brk_switch_ver_t;
/* breaker 645 fw version */
typedef struct _proto_645_ext_brk_fw_version {
/* fw version : bcd code */
proto_645_ext_brk_switch_ver_t switch_ver;
/* fw version rsvd data */
uint8_t rsvd[30];
} proto_645_ext_brk_fw_version_t;
/* breaker calibration param */
typedef struct _proto_645_ext_brk_calibrat {
/* calibration voltage param unit: 0.1V */
uint16_t u;
/* calibration current param unit: 1A */
uint8_t i;
/* calibration power factor param value: 1 - 0.5, 2 - 1, 3 - -0.5 */
uint8_t pf;
/* rsvd data */
uint8_t rsvd[28];
} proto_645_ext_brk_calibrat_t;
/* breaker calibration result */
typedef struct _proto_645_ext_brk_calibrat_sts {
/* calibration result */
uint8_t result;
} proto_645_ext_brk_calibrat_sts_t;
/* breaker calibration result */
typedef struct _proto_645_ext_brk_erase_cmd {
/* user */
uint8_t user[4];
/* passcode */
uint8_t passcd[4];
/* data */
uint8_t data;
/* app xmodem block num */
uint16_t app_total_num;
/* crc16 */
uint16_t crc16;
/* rsvd data */
uint8_t rsvd[10];
} proto_645_ext_brk_erase_cmd_t;
#pragma pack(pop) /* restore the pack status */
#endif /* PROTO_645_BRK_EXT_H */