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

📄 globals.c

📁 用C语言写的用于微新公司数字信号控制器30F6014的
💻 C
字号:
/**********************************************************************
 *	程序说明
 *  
 *  该文件包含所有的全局变量
 *
 **********************************************************************/

#include "defs.h"

volatile unsigned char run_state=0;
volatile unsigned char trip_state=0;

unsigned char sector=0;

unsigned int hold1_demand;			//首次锁存需求												
unsigned int hold2_demand;			//第二次锁存需求												
unsigned int ramp_start_speed;	//加速起始速度,单位RPM												
unsigned int ramp_speed_delta;	//加速结束速度,单位RPM												
unsigned int ramp_start_demand;	//加速起始需求												
unsigned int ramp_end_demand;		//加速结束需求												
unsigned int ramp_time;				  //加速时间												
unsigned int windmilling_demand;	//自转电流需求
unsigned int windmilling_decel_rate;
																	//换向周期自增,如果自转则给马达减速
unsigned int acquire1_enable_rate;
																	//采用方法1时使能记数率
unsigned int current_trip;			  //电流跳闸数值
unsigned int voltage_trip;			  //电压跳闸数值
unsigned int speed_trip;			    //速度跳闸数值,单位RPM

int voltage_demand;					// 电压需求数值
//不同的控制循环的增益
int wloop_p_gain;						
int wloop_i_gain;						
int iloop_p_gain;						
int iloop_i_gain;						
int iloop_d_gain;						
int vloop_p_gain;						
int vloop_i_gain;						
											
//位置极限
long pos_current_limit=3200000L;

// 负电流极限
long neg_current_limit=-3200000L;


long pos_duty_limit = FULL_DUTY*256L;
long neg_duty_limit = FULL_DUTY*-200L;

unsigned int upper_tol;
unsigned int lower_tol;

int current_demand=0;				

unsigned int parameter_mirror[32];

//中等和慢速软件计数器
volatile unsigned int slow_event_count=0;
volatile unsigned char medium_speed_event_count=0;

//反馈值变量
unsigned int vdc=0;
unsigned int ibus=0;
unsigned int vph=0;
unsigned int pot=0;
unsigned int vph_red=0;
unsigned int vph_yellow=0;
unsigned int vph_blue=0;
unsigned int vph_red_threshold=0;
unsigned int vph_yellow_threshold=0;
unsigned int vph_blue_threshold=0;

struct control_flags {		
				unsigned TORQUE_LIMIT : 1;
				unsigned VOLTS_LIMIT	: 1;
				unsigned DIR		: 1;
				unsigned ADCCONFIG: 1;
				unsigned ZERO_CROSS : 1;
				unsigned LEVEL		: 1;
				unsigned ACQUIRE1	: 1;
				unsigned SWAP	: 1;
				unsigned SENSORLESS : 1;
				unsigned	ACQUIRE2	: 1;
				unsigned ACQUIRE2_RED : 1;
				unsigned ACQUIRE2_YELLOW : 1;
				unsigned ACQUIRE2_BLUE : 1;
				unsigned LOCK1 : 1;
				unsigned LOCK2	: 1;
				unsigned RAMP	: 1;
};

volatile struct control_flags control_flags;

struct control_flags2	{
				unsigned AUTO_REACQUIRE	:	1;
				unsigned ROTATION_CHECK	:	1;
				unsigned WINDMILLING		:	1;
				unsigned RETRY_FLAG		:	1;
				unsigned D_TERM_DISABLE	:	1;
				unsigned ACQUIRE1_REQUEST :1;
				unsigned FALLING_EDGE	:	1;
				unsigned	CheckRX:1;
        		unsigned   	SendTX:1;
				unsigned 	ErrorMsg:1;
				unsigned	HelpMsg:1;
				unsigned 	NextIndex:1;
				unsigned	Fault:1;
				unsigned UNUSED			:	3;
								};

volatile struct control_flags2 control_flags2;

unsigned int previous_timestamps[] = {0,0,0};
//unsigned int edge_deltas[]= {0,0,0};

unsigned int adc_channel_config=0;

// new_PR2须是volatile,因为它需要在线更新
volatile unsigned int new_PR2=0x1800;

unsigned int ibus_offset=512;

// 初始时,设定周期测量防止过速跳闸
unsigned int period_measurement=1000;
unsigned int rpm=0;

//速度环需求
unsigned int speed_demand=500;
unsigned int stall_counter=0;
unsigned int phase_advance=0;

unsigned int latest_delta=1;
unsigned int previous_delta=1;

// 在TMR2中包含的时间数值
int commutation_time=1;


// 无刷公差检查
volatile unsigned int check_value=0;

volatile unsigned char check_counter=0;

volatile unsigned char acquire_counter=0;

unsigned int ramp_start_rate;
unsigned int ramp_end_rate;

unsigned int starting_timer;
int ramp_rate_delta;
int ramp_demand_delta;

volatile int stemp;

volatile unsigned int new_speed;

unsigned int filtered_rpm;
unsigned int filtered_vdc;
unsigned int filtered_ibus;
unsigned int filtered_pot;

unsigned char valid_switch_states=0xff;

unsigned char param=0;

unsigned int new_param_value=0;
unsigned int param_increment=1;
unsigned int max_param_value=1;
unsigned int min_param_value=1;

#ifdef DEVELOPMODE
unsigned char *RXPtr;
unsigned char InData[8];
unsigned char Index;
unsigned char *TXPtr;
unsigned char Tab;
#endif

unsigned int fault_count=0;

#ifdef DEBUG
	unsigned char indx=0;
#endif

⌨️ 快捷键说明

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