📄 csfu107.h
字号:
VARIABLE_DEFINE unsigned int RotateSpeed; //发电机转速,rpm
VARIABLE_DEFINE int OutputMetereData; //输出到数显表的数据
VARIABLE_DEFINE int RealDisplayData; //数显表实际显示的数据
VARIABLE_DEFINE unsigned int CurrMeterOutputDataType; //当前数显表输出的数据类型:0——功角,1-内电势绝对角,2-发电机转速
/**********end of 内电势角度测量相关变量及常量定义**********/
/**********与调节按钮相关的变量及常量定义**********/
VARIABLE_DEFINE unsigned int AddAngleFilterCnt; //ADD按钮的去抖计数器
VARIABLE_DEFINE unsigned int SubAngleFilterCnt; //SUB按钮的去抖计数器
VARIABLE_DEFINE unsigned int InitAngleLockCnt; //E补偿值清理后的延时计数器,补偿值清零后3秒内按钮调节无效
VARIABLE_DEFINE unsigned int AngleAdjustFinishCnt; //按钮调节完毕后的延时计数器,若连续5秒调节按钮无动作则将补偿值写入flash
VARIABLE_DEFINE unsigned int AngleAdjustFlag; //调节按钮更改E补偿值标志
VARIABLE_DEFINE unsigned int FastAngleAdjustFlag; //要求快速调节E补偿值标志
#define ADD_ANGLE_BUTTON (*GPIO_B_DR & 0x0001)
#define SUB_ANGLE_BUTTON (*GPIO_D_DR & 0x0001)
/**********end of 与调节按钮相关的变量及常量定义**********/
/**********与D/A操作相关变量及常量定义**********/
VARIABLE_DEFINE unsigned int DaValue; //内存中存储的DA值
VARIABLE_DEFINE unsigned int OutputDaValue; //实际输出的DA值
VARIABLE_DEFINE unsigned int InitDaFlag; //初始化DA输出的标志
VARIABLE_DEFINE unsigned int DaOutputFlag; //正在进行DA输出的标志
VARIABLE_DEFINE unsigned int DaOutputStep; //当前的DA输出步骤
VARIABLE_DEFINE unsigned int DaOutputJudgeFlag; //进行DA输出判断的标志,整周期后10ms时刻进行DA输出判断,避开上送串口报文时间
#define DA_FAULT_DETECT (*TMRC0_SCR & 0x0100)
#define SET_CLK_LOW if(!DaMode) {asm(BFCLR #0x0010, X:$13f2);} else {asm(MOVE #0x0000, X:$1127);}
#define SET_CLK_HIGH if(!DaMode) {asm(BFSET #0x0010, X:$13f2);} else {asm(MOVE #0x0005, X:$1127);}
#define SET_DATAIN_LOW if(!DaMode) {asm(BFCLR #0x0020, X:$13f2);} else {asm(MOVE #0x0000, X:$112f);}
#define SET_DATAIN_HIGH if(!DaMode) {asm(BFSET #0x0020, X:$13f2);} else {asm(MOVE #0x0005, X:$112f);}
#define SET_LATCH_LOW if(!DaMode) {asm(BFCLR #0x0040, X:$13f2);} else {asm(MOVE #0x0000, X:$1137);}
#define SET_LATCH_HIGH if(!DaMode) {asm(BFSET #0x0040, X:$13f2);} else {asm(MOVE #0x0005, X:$1137);}
#define SET_CLEAR_LOW if(!DaMode) {asm(BFCLR #0x0080, X:$13f2);} else {asm(MOVE #0x0000, X:$113f);}
#define SET_CLEAR_HIGH if(!DaMode) {asm(BFSET #0x0080, X:$13f2);} else {asm(MOVE #0x0005, X:$113f);}
/**********end of 与D/A操作相关变量及常量定义**********/
/**********与串口发送/接收相关的变量及常量定义**********/
#define REC_RCM3200_BUF_SIZE (9+1) //比实际报文长度加一,防止接收报文时出现错位死循环
VARIABLE_DEFINE unsigned int RecRcm3200Buf[REC_RCM3200_BUF_SIZE]; //RCM3200接收缓冲区
VARIABLE_DEFINE unsigned int RecRcm3200DataSize; //此次接收报文的数据长度
VARIABLE_DEFINE unsigned int *RecRcm3200BufPtr; //接收数据缓冲区写指针
VARIABLE_DEFINE unsigned int RecSci0Flag; //标识当前接收状态,1-报文接收中,0-还未找到报文头
VARIABLE_DEFINE unsigned int Sci0Data; //串口接收临时变量
VARIABLE_DEFINE unsigned int LastSci0Data; //SCI0上一次接收到的数据
VARIABLE_DEFINE unsigned int Sci0RecErrCounter; //Sci0接收错误计数器
VARIABLE_DEFINE unsigned int Sci0ResponsionFlag; //向RCM3200返回应答报文标志
#define SEND_RCM3200_QUEUE_DEPTH 6 //RCM3200发送数据队列的深度
#define SEND_RCM3200_QUEUE_LENGTH 23 //RCM3200发送数据队列中每帧报文的长度
typedef struct
{
unsigned int Data[SEND_RCM3200_QUEUE_LENGTH];
unsigned int DataLength; //Data数组中有效数据的实际长度
}Sci0SendBufQueueStruct;
VARIABLE_DEFINE Sci0SendBufQueueStruct SendRcm3200Queue[SEND_RCM3200_QUEUE_DEPTH];
VARIABLE_DEFINE Sci0SendBufQueueStruct *WriteSendRcm3200QueuePtr; //当前RCM3200发送数据队列的写指针
VARIABLE_DEFINE Sci0SendBufQueueStruct *ReadSendRcm3200QueuePtr; //当前RCM3200发送数据队列的读指针
VARIABLE_DEFINE unsigned int Sci0SendBuf[SEND_RCM3200_QUEUE_LENGTH]; //Sci0缓冲区数据指针
VARIABLE_DEFINE unsigned int *Sci0SendBufCurrPtr; //Sci0缓冲区当前发送数据指针
VARIABLE_DEFINE unsigned int *Sci0SendBufEndPtr; //Sci0缓冲区有效数据的尾指针
VARIABLE_DEFINE unsigned int Sci0SendFlag; //Sci0正在发送串口报文标志
#define METER_BUF_SIZE 11
VARIABLE_DEFINE unsigned int SendMeterBuf[METER_BUF_SIZE];
VARIABLE_DEFINE unsigned int *Sci1SendBufPtr; //Sci1缓冲区数据指针
VARIABLE_DEFINE unsigned int Sci1SendFlag; //Sci1正在发送串口报文标志
VARIABLE_DEFINE unsigned int ClockRecFinishCounter; //GPS时钟报文接收完毕计数值
VARIABLE_DEFINE unsigned int Sci1SwitchCounter; //Sci1发送/接收状态切换计数值
VARIABLE_DEFINE unsigned int InitMeterDisplayFlag; //上电后初始化数显表示数标志
/**********end of 与串口发送数据相关的变量及常量定义**********/
/**********装置状态变量及常量定义**********/
VARIABLE_DEFINE unsigned int MaskBit[16];
typedef union
{
struct
{
unsigned int b0:1;
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b4:1;
unsigned int b5:1;
unsigned int b6:1;
unsigned int b7:1;
unsigned int b8:1;
unsigned int b9:1;
unsigned int b10:1;
unsigned int b11:1;
unsigned int b12:1;
unsigned int b13:1;
unsigned int b14:1;
unsigned int b15:1;
}SingleBit;
struct
{
unsigned int b0:1;
unsigned int b1:1;
unsigned int b2:1;
unsigned int b3:1;
unsigned int b45:2;
unsigned int b67:2;
unsigned int b89:2;
unsigned int b1013:4;
unsigned int b1415:2;
}EspecialBit;
unsigned int Word;
}BitUInt;
VARIABLE_DEFINE BitUInt DetailErrInfo; //DSP上报的详细错误信息,对应串口报文的第1、2字节
#define EinErrFlag DetailErrInfo.SingleBit.b0 //bit0:键相脉冲信号异常,上送的内电势相量绝对角、发电机功角和发电机转速数据均无效
#define UinErrFlag DetailErrInfo.SingleBit.b1 //bit1:输入电压信号异常,上送发电机功角数据无效
#define DaErrFlag DetailErrInfo.SingleBit.b2 //bit2:DA回路硬件开路或发生其它故障
#define Sci0ErrFlag DetailErrInfo.SingleBit.b3 //bit3:与RCM3200的串口通信异常(巡检失败)
#define Sci1RecErrFlag DetailErrInfo.SingleBit.b4 //bit4:与GPS OEM板的串口通讯异常(连续20秒未收到有效报文或校验失败)
#define EAngleNoEffectFlag DetailErrInfo.SingleBit.b8 //bit8:此次发送的内电势相量绝对角无效,复制上一次的数据仅供参考(未得到新的有效的E,此时功角数据也无效)
#define PowerAngleNoEffectFlag DetailErrInfo.SingleBit.b9 //bit9:此次发送的功角值无效,复制上一次的数据仅供参考(未得到新的有效的U)
#define RotateSpeedNoEffectFlag DetailErrInfo.SingleBit.b10 //bit10:此次发送的发电机转速无效,复制上一次的数据仅供参考(未得到新的有效的E)
#define UploadDataType DetailErrInfo.EspecialBit.b1415 //bit15~14:报文17~18字节上送的数据类型,00——内电势补偿角,01——机端电压补偿角,10——内电势测量装置当前工作模式
VARIABLE_DEFINE BitUInt GpsStat; //GPS对时的状态,对应串口报文的第13、14字节
#define LeapSecFlag GpsStat.EspecialBit.b0 //1-闰秒发生的标志
#define LeapSecDir GpsStat.EspecialBit.b1 //闰秒特性:0-add,1-delete
#define SocErr GpsStat.EspecialBit.b3 //1-GPS串口对时丢失超过10秒
#define GpsLockStat GpsStat.EspecialBit.b45 //GPS卫星失锁时间:00——失锁时间<10秒,01——10秒<失锁时间<100秒,10——100秒<失锁时间<1000秒,11——失锁时间>1000秒
#define PpsSyncStat GpsStat.EspecialBit.b67 //PPS脉冲失锁时间:00——失锁时间<10秒,01——10秒<失锁时间<100秒,10——100秒<失锁时间<1000秒,11——失锁时间>1000秒
#define GpsLockErr GpsStat.EspecialBit.b89 //GPS锁星状况:00——not fix,01——2D fix,10——3D fix,
VARIABLE_DEFINE unsigned int PpsLedOnFlag; //用于控制前面板PPS指示灯
/**********end of 装置状态变量及常量定义**********/
/**********指示灯操作定义**********/
#define DEBUG1_LED_TURN_OFF asm(BFSET #0x0010, X:$13c1)
#define DEBUG1_LED_TURN_ON asm(BFCLR #0x0010, X:$13c1)
#define DEBUG2_LED_TURN_OFF asm(BFSET #0x0020, X:$13c1)
#define DEBUG2_LED_TURN_ON asm(BFCLR #0x0020, X:$13c1)
#define PULSE_LED_TURN_OFF asm(BFSET #0x0002, X:$13e1)
#define PULSE_LED_TURN_ON asm(BFCLR #0x0002, X:$13e1)
#define UIN_LED_TURN_OFF asm(BFSET #0x0004, X:$13e1)
#define UIN_LED_TURN_ON asm(BFCLR #0x0004, X:$13e1)
#define CLOCK_LED_TURN_OFF asm(BFSET #0x0008, X:$13e1)
#define CLOCK_LED_TURN_ON asm(BFCLR #0x0008, X:$13e1)
#define PPS_LED_TURN_OFF asm(BFSET #0x0010, X:$13e1)
#define PPS_LED_TURN_ON asm(BFCLR #0x0010, X:$13e1)
#define ALERT1_LED_TURN_OFF asm(BFSET #0x0020, X:$13e1)
#define ALERT1_LED_TURN_ON asm(BFCLR #0x0020, X:$13e1)
/**********end of 指示灯操作定义**********/
/*****测试用变量定义*****/
VARIABLE_DEFINE unsigned long InputPpsCounterRecBuf[32]; //输入PPS上升沿计数器值存储缓冲区,用于测试
VARIABLE_DEFINE unsigned long *InputPpsCounterRecBufPtr;
VARIABLE_DEFINE unsigned long OutputPpsCounterRecBuf[32]; //输出PPS上升沿计数器值存储缓冲区,用于测试
VARIABLE_DEFINE unsigned long *OutputPpsCounterRecBufPtr;
VARIABLE_DEFINE unsigned long Td3OverflowCounterRecBuf[32]; //TD3溢出时刻计数器值存储缓冲区,用于测试
VARIABLE_DEFINE unsigned long *Td3OverflowCounterRecBufPtr;
#define TEST_BUS_SIZE 60
VARIABLE_DEFINE int EAbsoluteAngleBuf[TEST_BUS_SIZE];
VARIABLE_DEFINE int *EAbsoluteAngleBufPtr;
VARIABLE_DEFINE unsigned int RotateSpeedBuf[TEST_BUS_SIZE];
VARIABLE_DEFINE unsigned int *RotateSpeedBufPtr;
VARIABLE_DEFINE int PowerAngleBuf[TEST_BUS_SIZE];
VARIABLE_DEFINE int *PowerAngleBufPtr;
VARIABLE_DEFINE unsigned int FirstTimes;
VARIABLE_DEFINE int LastPowerAngle;
VARIABLE_DEFINE int AngleDiff;
VARIABLE_DEFINE unsigned int Sci0RecBuf[50];
VARIABLE_DEFINE unsigned int *Sci0RecBufPtr;
VARIABLE_DEFINE unsigned int Sci1RecBuf[100];
VARIABLE_DEFINE unsigned int *Sci1RecBufPtr;
VARIABLE_DEFINE unsigned int IntFlag;
VARIABLE_DEFINE unsigned int iCounter;
VARIABLE_DEFINE unsigned int EErrorTimes;
VARIABLE_DEFINE unsigned int GpsReportMaxReachTime;
VARIABLE_DEFINE unsigned int GpsReportMinReachTime;
typedef struct
{
unsigned int ReachTime[20]; //GPS时钟报文到来时间
unsigned int FixStat[20]; //锁星状态
}GpsReachTimeStruct;
VARIABLE_DEFINE GpsReachTimeStruct GpsReachTime;
VARIABLE_DEFINE unsigned int GpsReachTimeWritePtr;
VARIABLE_DEFINE unsigned int GpsReachTimeErrorCnt;
/*****end of 测试用变量定义*****/
#endif /* _CSFU107_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -