| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- /******************************************************************************
- 版权所有:
- 文件名称: sys.h
- 文件版本: 01.01
- 创建作者: xxxxxx
- 创建日期: 2014-12-29
- 功能说明:
- 其它说明:
- 修改记录:
- */
- #ifndef _SYS_H
- #define _SYS_H
- /*------------------------------- 头文件 --------------------------------------
- */
- #include "SOE.h"
- /*------------------------------- 宏定义 --------------------------------------
- */
- #define INTER_PASSWORD 321
- #define PASS_WORD 1234 // 万能密码
- #define INIT_PASSWORD 0000
- //#ifndef GD_AREA_DONGGUAN //东莞局要求8个数字+字母,其他地区默认4个密码
- //#define PASSWORD_4_STR // 密码四位数
- //#endif
- #ifdef GD_AREA_TEST_2020
- #define PASSWORD_LEN 6
- #define INIT_PASSWORD_STR "000000"
- #define INTER_PASSWORD_STR "032100"
- #define PASS_WORD_STR "FUSION" // 万能密码
- #else
- #define INIT_PASSWORD_STR "Z0000000"
- #define PASSWORD_LEN 8
- #define INTER_PASSWORD_STR "03210000"
- #define PASS_WORD_STR "FUSIONOK" // 万能密码
- #endif
- #define PASSWORD_STR_ZERO "00000000"
- #define INTER_PASSWORD_STR_4 "0321"
- #define PASS_WORD_STR_4 "1234" // 万能密码
- #define INIT_PASSWORD_STR_4 "0000"
- #define PASSWORD_STR_ZERO_4 "0000"
- /**************eeprom空间分配*******************************
- 每个保存在eeprom中的信息都有装置类型及crc校验 10个字节
- 密码4字节+8 =12
- 通道系数 8*8+8=72
- 压板 4+8=12
- 装置参数 40*4+10=168
- 测控参数 40*4+10=168
- 内部定值 40*4+10=168
- 装置配置 1*4+10=12
- 定值区信息 10+10=18
- 每个定值区占240个字节+8个字节校验码 6个区共1488 (2K)
- SOE 512个,
- 操作信息 512个
- 每个SOE占28个字节,共计28*512=14k
- */
- #define EEP_SET_BASE (64*1024)
- #define EEP_PRJNAME_ADDR (0+EEP_SET_BASE) // 下载参数保存区域
- #define EEP_PASSWORD_ADDR (64+EEP_SET_BASE) //密码保存 10字节
- #define EEP_PASSWORD2_ADDR (64+12+EEP_SET_BASE) //密码保存 10字节
- #define EEP_UEUQ_ADDR (96+EEP_SET_BASE) //电压合格率 保存地址 16+2 18个字节
- #define EEP_EQUIP_PARA_ADDR (128+EEP_SET_BASE) //装置参数 128字节:(1024-128)/4=224pcs
- #define EEP_CSTSET_ADDR (1024+EEP_SET_BASE) //内部定值:800/4=200pcs
- #define EEP_SETGROUP_ADDR (1024+800+EEP_SET_BASE) // 定值索引:(1024-800)/4=56pcs
- #if defined GD_AREA_ZHONGSHAN_2020 || defined GD_AREA_ZHONGSHAN_2020_ZC
- #define EEP_PUB_ADDR ((2*1024)+EEP_SET_BASE) //公共定值开始位置
- #define EEP_SET_ADDR ((5*1024)+EEP_SET_BASE) //开关定值开始位置(此值于中山新增备用定值后更改)
- #elif defined GD_AREA_ECZD_2020
- #define EEP_PUB_ADDR ((2*1024)+EEP_SET_BASE) //公共定值开始位置
- #define EEP_SET_ADDR ((4*1024)+EEP_SET_BASE) //开关定值开始位置
- #else
- #define EEP_PUB_ADDR ((2*1024)+EEP_SET_BASE) //公共定值开始位置
- #define EEP_SET_ADDR ((3*1024)+EEP_SET_BASE) //开关定值开始位置
- #endif
- //系统运行信息保存,占用256字节
- #define EEP_SYSTEM_DATA_START ((63*1024)+EEP_SET_BASE)
- #define EEP_SYSTEM_DATA_END (256+EEP_SYSTEM_DATA_START)
- #define EEP_SYSTEM_DATA_SIZE (EEP_SYSTEM_DATA_END - EEP_SYSTEM_DATA_START)
- #ifdef SOE_PARA_ALL_SAVE
- #define EEP_SOE_BASE (128*1024)
- #define EEP_SOE_ADDR (0*1024+EEP_SOE_BASE) // 从0开始32空间
- #define EEP_OPERATE_ADDR (64*1024+EEP_SOE_BASE) // 从32开始14k空间
- #define EEP_VIP_ADDR (96*1024+EEP_SOE_BASE) // 从32开始14k空间
- #else
- #define EEP_SOE_BASE (0*1024)
- #define EEP_SOE_ADDR (0*1024) // 从0开始32空间
- #define EEP_OPERATE_ADDR (32*1024) // 从32开始14k空间
- #define EEP_VIP_ADDR (48*1024) // 从32开始14k空间
- #endif
- #define IECTABLE_ADDR (96+EEP_SET_BASE) //从64k开始1k空间
- #ifdef ADD_DEBUG_RECORD_FUN
- #ifdef SOE_PARA_ALL_SAVE
- #define EEP_OTHER_DATA_SAVE_BASE (256*1024) //256k开始位置用于存储其他的数据
- #else
- #define EEP_OTHER_DATA_SAVE_BASE (128*1024) //128k开始位置用于存储其他的数据
- #endif
- #define EEP_DEBUG_RECORD_ADDR (0*1024+EEP_OTHER_DATA_SAVE_BASE) //预留32K用于存储调试记录包括全参数或者非全参数
- #else
- #define EEP_DEBUG_RECORD_ADDR EEP_VIP_ADDR //若无定义调试记录则默认显示关键记录
- #endif
- #ifdef METERING_ENERGY
- #define EEP_DD_DATA (260+EEP_SYSTEM_DATA_START)
- #endif
- #define TEST_MASK_BIT(object, mask) (((object) & (mask))?true:false)
- #define TEST_BIT(object, bit) (((object>>bit)&1)>0?true:false)
- //系统错误标志位(System Error Register)
- //
- #define SER_RAMERR (1 << 0) //RAM错误
- #define SER_ROMERR (1 << 1 ) //ROM错误
- #define SER_EEPERR (1 << 3 ) //EEP错误
- #define SER_SETERR (1 << 5 ) //定值错误
- #define SER_EQUIPPARAERR (1 << 6 ) //装置参数错误
- #define SER_CSTSETERR (1 << 8 ) //内部定值错误
- #define SER_FACTORERR (1 << 10 ) //通道系数错误
- #define SER_DIERR (1 << 11 ) //开入错误
- #define SER_DOERR (1 << 12) //开出错误
- #define SER_ADERR (1 << 13 ) //AD错误
- #define SER_FLASHERR (1<<14) //FLASH闪存错误
- #define SER_EQUIPCFG (1<<15) //装置配置错误
- // 告警信息定义
- #define GER_ZEROSHIFT (1<<0) //零漂越限
- #define GER_PTDX (1<<1) //PT断线
- #define GER_PTNEG (1<<2) //PT反序
- #define GER_TZSB (1<<3) //跳闸失败
- #define GER_THWCN (1<<4) //弹簧未储能
- #define GER_LXGJ (1 << 5) //零序告警
- #define GER_TWYL (1 << 6) //跳位有流
- #define GER_BSHZGJ (1 << 7) //大电流闭锁合闸告警
- #define GER_UOVER (1 << 8)
- #define GER_ULOW (1 << 9)
- #define GER_IOVER (1 << 10)
- #define GER_ILOW (1 << 11)
- #define GER_U0GJ (1 << 12)
- //遥控操作命令码
- enum EREMOTEOPCODE
- {
- RCODE_OPERATE=0x5A, // 合
- RCODE_RESET=0xA5 // 分
- };
- enum
- {
- YK_VAL_HZ=1,
- YK_VAL_TZ,
- YK_TYPE_SEL,
- YK_TYPE_EXE,
- YK_TYPE_CANCEL,
- };
- //遥控操作顺序
- enum
- {
- YK_STATUS_NONE=0, //没有遥控操作
- YK_STATUS_SEL, //遥控选择
- YK_STATUS_EXE, //遥控执行
- YK_STATUS_TIMEOUT, //遥控超时
- };
- /*------------------------------ 类型结构 -------------------------------------
- */
- typedef struct EVENT_SHOW
- {
- EVENT_STRUCT tEv;
- BYTE namestr[24];
- BYTE valuestr[24];
- BYTE str[8][24];
- WORD wCurrent;
- WORD wNumber;
- WORD wIndex;
- WORD year;
- WORD month;
- WORD day;
- WORD hour;
- WORD min;
- WORD sec;
- WORD ms;
- short sParaCur;
- short sParaNum;
- }EVENT_SHOW;
- typedef union SET_VALUE
- {
- float ff;
- uint32_t tt; // 注意64位的long为64位,32位系统为32位
- }SET_VALUE;
- typedef struct EQUIP_INF
- {
- WORD wType; // 保护类型码
- WORD wVerH; // 软件版本号
- WORD wVerL; // 软件的发布号及特殊版本号,高字节为发布号,低字节为特殊版本号
- WORD wCrc; // 保存信息的校验码
- WORD wdescCrc; // set_desc.bin文件的CRC
- }EQUIP_INF;
- //遥控操作结构
- typedef struct REMOTEYKSTATUS
- {
- BYTE yk_st;//操作顺序,1选择或2执行、3撤消
- BYTE no;//编号
- BYTE val;
- BYTE owner;
- WORD wMaster; //主站编号或ID
- DWORD dTStart;//遥控选择的开始时间
- }REMOTEYKSTATUS;
- #pragma pack(1)
- typedef struct SYSTEM_DATA
- {
- BYTE bWriteFlag; //写数据标志
- BYTE bWriteLock; //写数据锁
- WORD wSwTzCount; //开关故障跳闸次数
- WORD wSwHzCount; //开关合闸次数
- DWORD dwDD[8]; // 8个电度值
- float fwDD[8];
- WORD res[92]; //!!!备用(92*2)字节
- WORD wCrc; //校验码
- }SYSTEM_DATA;//此结构体不允许超过 EEP_SYSTEM_DATA_SIZE->256字节
- #pragma pack()
- #if defined FUNC_DRIVE || defined FUNC_DRIVE_JY
- typedef struct YK_DRIVE
- {
- bool b_drive_on; //不停电传动功能标志
- bool b_fa_drive; //FA模式允许传动功能
- bool b_err; //装置异常
- bool b_warning; //装置告警
- bool b_drive_soe; //用于判断传动功能SOE
- bool bTz_Doing; //传动功能跳闸中
- bool bHz_Doing; //传动功能合闸中
- bool bQuit; //退出传动软压板标志
- bool b_drive_process; //传动功能进行中
- #ifdef FUNC_DRIVE_PULSE
- bool b_set_pulse; //设置分合闸脉宽标志
- bool b_unset_pulse; //恢复分合闸脉宽标志
- #endif
- TIMERELAY tQDTime_hz; //合闸时间继电器
- TIMERELAY tQDTime_fz; //分闸时间继电器
- TIMERELAY tQDTime_fz_end; //分闸结束传动时间继电器
- TIMERELAY tQDTime_hz_end; //合闸结束传动时间继电器
-
- #ifdef FUNC_DRIVE_JY
- bool b_bh_reclose; //启动重合闸
- bool b_drive_on_check; //重新传动检测
- bool b_fa_reclose; //FA分段模式再次合闸
- bool b_clear_bs; //需等合闸拒动SOE时间标志
- bool b_drive_success; //用于判断传动成功
- bool b_drive_success_again; //用于判断补发合闸后传动成功
- TIMERELAY tDriveUa1Time; //UA1持续时间
- TIMERELAY tDriveUa2Time; //UA2持续时间
- TIMERELAY tDriveU0Time; //U0持续时间
- TIMERELAY tDriveITime; //I持续时间
- TIMERELAY tDriveI0Time; //I0持续时间
- TIMERELAY tDriveFaBSTime; //等合闸拒动SOE时间
- TIMERELAY tDriveAgainTime; //再次传动时间
- #endif
- }YK_DRIVE;
- #endif
- /*------------------------------ 变量声明 -------------------------------------
- */
- extern volatile DWORD dTCounter; //系统定时器
- extern DWORD g_dw_led[]; // 灯状态
- extern DWORD g_dw_ledsave[]; // 灯状态
- extern bool bTestMode;
- extern bool bMaintain;
- extern bool bMaintain_test;//测试模式,如开入开出测试,避免受应用影响,顺利完成测试
- extern unsigned short m_CodeCrc;
- #if defined FUNC_DRIVE || defined FUNC_DRIVE_JY
- extern YK_DRIVE gb_drive;
- #endif
- /*------------------------------ 函数声明 -------------------------------------
- */
- void SystemInit(void);
- int Get_Code_CRC(void);
- void Delayms(DWORD dT,DWORD count);
- void SignalReset(int rstsw,bool blnk);
- void ResetHzLed(int rstsw);
- char *RmtCtrl_Err(int err_code);
- int RemoteCtrl(BYTE,BYTE,BYTE,WORD);
- void CtrlPolling(void);
- void ResetRctrl(WORD wID);
- void AppPolling(void);
- int send_rmt_yc(u8 *buf);
- int send_rmt_dd(u8 *buf);
- int send_rmt_yx(u8 *buf);
- int send_rmt_yk(u8 *buf);
- char *get_comm_name(int index);
- char *get_yk_owner(u8 owner);
- int bat_begin_time(void);
- bool check_fault(void);
- void clear_tfd_fault(void);
- #ifdef FUNC_RESET_EQU
- extern bool gb_ResetEqu;
- extern void equ_PowerRest(void);
- #endif
- #endif //_SYS_H
- /*------------------------------ 文件结束 -------------------------------------
- */
|