📄 globals.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 + -