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

📄 mototype.h

📁 基于c的电动机保护程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*************************************************************************************
* Copyright  2006 National ASIC Center, All right Reserved			         
*                                                                            
* FILE NAME:			MOTOType.h										         
* AUTHOR:				Steny.yz.X                                           
* Date of Creation:		2006/07/25                                        
*                                                                            
* DESCRIPTION:			基本类型及关键宏
*						                                                     
* NOTE:						 		                                         
*                                                                            
* FUNCTIONS LIST:       
*                       
*                       
*                       
*
* ----------------------------------------------------------------------------------- 
*                                                                            
* -----------------------------------------------------------------------------------       
*                                                                            
* MODIFICATION HISTORY                                                       
*     LastModify  2006/09/20                                                 
*************************************************************************************/ 
#ifndef _JD_TYPE_
#define _JD_TYPE_
//----------------------------------------------------------------------------------------------//

#include "hardware_reg.h"
#define U8 unsigned char

#ifndef TRUE
#define TRUE 1
#endif

#ifndef FALSE
#define FALSE 0
#endif
//#define SwitchValue(sel,  in,  a,  b, c)  (((sel) == (a)) ? (in) : (c))  //开关选择宏
#define MAX(a, b, c) (((((a) > (b)) ? (a) : (b)) ) > (c) ? ((((a) > (b)) ? (a) : (b)) ) : (c))
#define MIN(a, b, c) ((((a) < (b)) ? (a) : (b)) < (c) ? (((a) < (b)) ? (a) : (b)) : (c))
//#define PHASE_CMP(a) (((a) < 0) ? ((a) + 6.2831853071) : (a))
#define  Voltage_Average (*(JDInputsAdd+off_UA )+*(JDInputsAdd+off_UB )+*(JDInputsAdd+off_UC ))*0.333333333
 #define  Voltage_Max MAX(*(JDInputsAdd+off_UA ),*(JDInputsAdd+off_UB ),*(JDInputsAdd+off_UC ))
 #define  Voltage_Min MIN(*(JDInputsAdd+off_UA ),*(JDInputsAdd+off_UB ),*(JDInputsAdd+off_UC ))

 #define  Current_Average (*(JDInputsAdd+off_IA )+*(JDInputsAdd+off_IB )+*(JDInputsAdd+off_IC ))* 0.333333333
 #define  Current_Max MAX(*(JDInputsAdd+off_IA ),*(JDInputsAdd+off_IB ),*(JDInputsAdd+off_IC ))
 #define  Current_Min MIN(*(JDInputsAdd+off_IA ),*(JDInputsAdd+off_IB ),*(JDInputsAdd+off_IC ))


/****************无双口RAM测试模式*****************/
//#define DOUBLE_RAM_BASE 0x30100000
/*************************************************/

/****************正常模式*****************/
#define DOUBLE_RAM_BASE 0x24000000
/*****************************************/


#define DATASTAT_ADRESS (DOUBLE_RAM_BASE + 0x20)//状态寄存器地址,存放数据编号和校验和
#define INVERTIME_FLAG (DOUBLE_RAM_BASE + 0x40)//反时限是否计算标志
#define DOUBLE_RAM_INT_IN (DOUBLE_RAM_BASE + 0x7ffc)//双口RAM到CPU中断产生位
#define DOUBLE_RAM_INT_OUT (DOUBLE_RAM_BASE + 0x7ffe)//CPU到双口RAM中断产生位

#define SAMPLE_TICK 0.001//采样时间间隔
#define RECIPROCAL_SAMPLE_TICK 1000//采样时间间隔倒数

#define DATABAK_GROUP_COUNT	1920//采样数据的备份组数, 供画波形用

#ifndef __BOOL__INT__
#define __BOOL__INT__
typedef int BOOL;
#endif
		
#define     JDInputsAdd 	(float *)0x1fff0000
#define	    JDSettingAdd	    (float *)(0x1fff0000 + 0x200)
#define     StatusVarAdd	(BOOL *)(0x1fff0000 + 0x400)
#define     Channel_AdjustAdd  (double *)(0x1fff0000 + 0x600)

extern unsigned long        TMD_System_Clock;
/**************************时间节点结构体******************/
typedef struct
{
	unsigned long delaytick,holdtick, delaytime,holdtime, lastdelaytick, lastholdtick;
	BOOL  level;
}TJDTimingNode;
/*------------------------------------------------------------------*/




#define TimingNodePulse(node, in_level)  do\
			{\
				if(in_level >= 1)\
				{\
					if(((TJDTimingNode *)node)->lastdelaytick == 0) ((TJDTimingNode *)node)->lastdelaytick = TMD_System_Clock;\
					((TJDTimingNode *)node)->delaytick = TMD_System_Clock - ((TJDTimingNode *)node)->lastdelaytick ;\
					if (((TJDTimingNode *)node)->delaytick  >= ((TJDTimingNode *)node)->delaytime)\
					{\
						((TJDTimingNode *)node)->level = 1;\
						((TJDTimingNode *)node)->lastdelaytick = 0x0;\
					}\
				}\
				else\
				{\
					((TJDTimingNode *)node)->lastdelaytick = 0x0;\
					((TJDTimingNode *)node)->level = 0;\
				}\
			}while(0)

/*------------------------------------------------------------------*/


/********************************************************************
 *				反时限中计算剩余时间宏
 ********************************************************************/
#define CovertTimeRemain(new_settingtime, node)  do\
	{\
		if (((TJDTimingNode *)node)->delaytime != 0)\
		{\
			((TJDTimingNode *)node)->delaytime = (1.0 - (((TJDTimingNode *)node)->delaytick / ((TJDTimingNode *)node)->delaytime)\
										* new_settingtime);\
		}\
		else\
		{\
			((TJDTimingNode *)node)->delaytime = new_settingtime;\
		}\
	}while(0)
/*------------------------------------------------------------------*/

/********************************************************************
 *				报告输出宏				add by Steny.Yz.X 2007-1-12
 ********************************************************************/
#define ReportOut(errnum) do\
{\
		if (errorlinker.last_error == errnum)\
		{\
			errorlinker.tailIndex--;\
		}\
		read_time(&RrrTime[errorlinker.tailIndex]);\
		errorlinker.last_error = errorlinker.KeepTable[errorlinker.tailIndex].error = errnum;\
		errorlinker.tailIndex = (errorlinker.tailIndex + 1) % 100;\
		if ((errorlinker.tailIndex) == errorlinker.headIndex)\
		{\
			errorlinker.headIndex = (errorlinker.headIndex + 1) % 100;\
		}\
}while(0)
/*------------------------------------------------------------------*/

//********************************************************************
 //					系统设置数据结构体
 //********************************************************************/
typedef struct
{
	int 
		StartSingal,
		SaveLoadNum,
		ControlWay,  
		CommunicateAdd,
		CheckoutWay;
	float	  
		CurrentRating,
		VoltageRating,
		CT;
	int	
		year;
	volatile U8
		month,
		date,
		hour,
		minute,
		second,
		day;          

	int 
		D1,  
		D2,
		D3,
		D4,
		D5,
		D6,
		D7,
		D8;
		   

}_SystemSetting;


//********************************************************************
 //					输入量结构体
 //********************************************************************/
typedef struct
{
float		 

/***************abc三相I、U保护***************************/
                 IA,                                    /*有效值,根据Real ^2+ Imag ^2计算 */
                 IA_Real,                               /*fft的一次谐波,实部为有效值在X轴上投影,*/
                 IA_Imag,                               /*fft的一次谐波,虚部为有效值在Y轴上投影,2者之商可求角度*/
                 UA,
                 UA_Real,
                 UA_Imag,
                 IA_Phase,
                 UA_Phase,

                 IB,                                    /*同IA*/
                 IB_Real,
                 IB_Imag,
                 UB,
                 UB_Real,
                 UB_Imag,
                 IB_Phase,
                 UB_Phase,

                 IC,                                    /*同IA*/
                 IC_Real,
                 IC_Imag,
                 UC,
                 UC_Real,
                 UC_Imag,
                 IC_Phase,
                 UC_Phase,

                 
/*************************零序*****************************/
                 I0,                                    /*同Ia*/
                 I0_Real,
                 I0_Imag,
                
                 

/*************************负序*******************************/
                 I2,                                    /*SQRT(Re^2+Im^2)*/
                 I2_Real,                               /*(Ia+alpha^2*Ib+alpha*Ic)*/
                 I2_Imag,
                 

/************************************************************/
                

                                            /*Ia频率*/

                 InverTime_Setting_K,                  /*反时限整定系数K*/
                 ZeroSeq_InverTime_Setting_K,           /*零序反时限整定系数K*/

/*****************正序***************************************************************/

                 I1,                               //     /*有效值,根据Real ^2+ Imag ^2计算 */
                 I1_Real,                               /*fft的一次谐波,实部为有效值在X轴上投影,*/
                 I1_Imag;                               /*fft的一次谐波,虚部为有效值在Y轴上投影,2者之商可求角度*/
                
           int DI[4];     

}_JDInputs;
/*------------------------------------------------------------------*/

/********************************************************************
					输入结构体中每个量的偏移
 ********************************************************************/
enum		
{
				 
/***************abc三相I、U保护***************************/
                 off_IA,                                    /*有效值,根据Real ^2+ Imag ^2计算 */
                 off_IA_Real,                               /*fft的一次谐波,实部为有效值在X轴上投影,*/
                 off_IA_Imag,                               /*fft的一次谐波,虚部为有效值在Y轴上投影,2者之商可求角度*/
                 off_UA,
                 off_UA_Real,
                 off_UA_Imag,
                 off_IA_Phase,
                 off_UA_Phase,

                 off_IB,                                    /*同IA*/
                 off_IB_Real,
                 off_IB_Imag,
                 off_UB,
                 off_UB_Real,
                 off_UB_Imag,
                 off_IB_Phase,
                 off_UB_Phase,

                 off_IC,                                    /*同IA*/
                 off_IC_Real,
                 off_IC_Imag,
                 off_UC,
                 off_UC_Real,
                 off_UC_Imag,
                 off_IC_Phase,
                 off_UC_Phase,

                 
/*************************零序*****************************/
                 off_I0,                                    /*同Ia*/
                 off_I0_Real,
                 off_I0_Imag,
                 
/*************************负序*******************************/
                 off_I2,                                    /*SQRT(Re^2+Im^2)*/
                 off_I2_Real,                               /*(Ia+alpha^2*Ib+alpha*Ic)*/
                 off_I2_Imag,
                 
/************************************************************/
                 
                 
                 off_InverTime_Setting_K,                  /*反时限整定系数K*/
                 off_ZeroSeq_InverTime_Setting_K,           /*零序反时限整定系数K*/
/*****************正序***************************************************************/

                 off_I1,                                    /*有效值,根据Real ^2+ Imag ^2计算 */
                 off_I1_Real,                               /*fft的一次谐波,实部为有效值在X轴上投影,*/
                 off_I1_Imag,                               /*fft的一次谐波,虚部为有效值在Y轴上投影,2者之商可求角度*/
                 off_DI
                 
};



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -