请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8069万M 主题中讨论的其他部件: DRV8305
您好,
我正在为基于实验室05b的TMS320F2.8069万M和DRV8305的定制PCB开发固件。
此电动机驱动器控制低电感三相BLDC。 适用于航空航天位置控制应用。
最新版本和印刷电路板刷新了我目前拥有的固件,能够在低速和高速以及低负载和高负载下对电机进行预控制。 但是,尽管我尽了最大努力,我仍无法使速度控制器的当前限制功能正常工作。 这是该项目的一项强烈要求。
以下是对可能发生的情况的描述:
每当驱动程序达到 USER_MOTOR_MAX_CURRENT设置的直流电流限制或接近此限制时,它就会停止响应 gMotorVars.SpeedRef_Krpm的速度命令,并尝试以尽可能快的速度旋转电机,大大超过USER_J1.h中设置的电流限制 只有重置控制器才能解决此问题。
从内部来看,IQ电流控制器似乎达到其饱和限值,因为当前反馈与当前设定点不具有相同的符号。 以下是出现问题时控制器PID的屏幕截图:
我不知道是什么原因造成了这个问题,但我已经诚实地尝试了我能做的纠正方法。
以下是我的用户标题的实例部分:
#define user_IQ) FULL磅秤_voltage_V (28.0)// 28.0 设置为Vbus //! \brief定义AD转换器输入端的最大电压 //! \볲 뛌 将由最大ADC输入(3.3V)和转换(0FFFh)//表示的值 ! \brief硬件相关,这应基于电压感应和对ADC输入#define user_ADC_FULL比例电压_V的缩放 (31.13)// BOOSTXL-DRV8305EVM = 44.30 V //! \brief定义IQ变量的满刻度电流,a //! 简明所有电流均根据与此值的比率转换为(PU) //! \brief警告:此值必须大于您所期望的来自电机的最大电流读数,否则读数将滚动到0,从而导致出现控制问题 #define user_IQ) FULL _scale _current_A (25.0)// BOOSTXL-DRV8305EVM = 24.0 A //#define USER_IQ) FULL Scale Current_A (24.0)// BOOSTXL-DRV8305EVM = 24.0 a //! \brief定义AD转换器的最大电流 //! \볲 뛌 将由最大ADC输入(3.3V)和转换(0FFFh)//表示的值 ! \brief硬件相关,这应基于电流感应和对ADC输入#define user_ADC_FULL比例电流A的缩放 (33.0)// BOOSTXL-DRV8305EVM = 47.14 a //! \brief定义所使用的电流传感器数量 //! \brief由存在的硬件功能定义 //! \brief可能是(2)或(3) #define user_NUM_CURRENT_SENSORS (3)// 3首选设置,可在全速范围内实现最佳性能,允许100 % 占空比 //! \brief定义电压(相位)传感器的数量 //! \brief必须是(3) #define user_NUM_voltage_sensors (3)// 3必填 //! \A,B和C相位的短ADC电流偏移 //! \简短的一次性硬件相关,但校准也可以在运行时完成 //! \brief在初始板校准后,应针对特定硬件更新这些值,以便在编译为要加载到控制器的二进制文件后可以使用这些值 #define I_A_offset (0.6584013104) #define I_B_offset (0.6607482433) #define I_C_offset (0.6591419578) //! \A,B和C相位的简短ADC电压偏移 //! \简短的一次性硬件相关,但校准也可以在运行时完成 //! \brief在初始板校准后,应针对特定硬件更新这些值,以便在编译为要加载到控制器的二进制文件后可以使用这些值 #define V_A_offset (0.4978313446) #define V_B_offset (0.4975547791) #define V_C_offset (0.4955942035) //! 钟表和计时器简介 //****************************************************************************************** #define user_PWM_FREQ_kHz (30.0)// 30.0 示例,8.0 - 30.0 KHz (典型);极低电感,高速电机 #define USER_MAX_VS_MAG_PU可能需要45-80 KHz (0.5)//如果未使用当前重建技术,则设置为0.5。 有关更多信息,请查看lab10a-x中的模块svgen_current。 //! *简短抽取/ /****************** //! \brief定义每个ISR时钟周期的PWM时钟周期数 //! 注:有效值仅为1,2或3 #define user_NUM_PWM_TICK_Per_ISR_TICK (1) //! \brief定义每个控制器时钟周期(软件)的ISR周期数(硬件) //! \brief控制器时钟周期(CTRL)是软件中用于所有计时 的主时钟//! \brief通常,PWM频率触发器(可以被ePWM硬件抽取以减少开销) ADC SOC //! \brief ADC SOC触发ADC转换完成 //! \볲 뛌 ADC转换完成会触发ISR //! \brief这将硬件ISR速率与软件控制器速率相联系 //! \brief通常要考虑在16KHz ISR上进行某种形式的小数位数(ePWM硬件,当前或EST),以确保中断完成并留出时间用于后台任务 #define user_NUM_ISR_TICK_PER_CTRL_TICK_TICK (2) // 2示例,控制器时钟频率(CTRL)以PWM运行/2;例如30 KHz PWM,15 KHz控制 //! \brief定义每个当前控制器时钟嘀嗒 信号的控制器时钟嘀嗒信号数//! 控制器时钟频率与当前控制器(FOC)速率的简短关系 #define user_NUM_CTRL_TICS_per当前_tick (1) // 1个典型的正向FOC电流控制器(IQ/ID/IPark/SVPWM)以与CTRL相同的速率运行。 //! \brief定义每个估计器时钟嘀嗒信号 的控制器时钟嘀嗒信号数//! \控制器时钟频率与估算器(快速)速率的简短关系 //! \brief取决于所需的动态性能,FAST可提供低至1 KHz的良好结果,而更动态或高速的应用程序可能需要高达15 KHz #define user_NUM_CTRL_TICS_PL_PLATS_PRE_EST_TICK (1) // 1个典型的快速估算器以与CTRL相同的速率运行; //! \brief定义每个速度控制器时钟嘀嗒 信号的控制器时钟嘀嗒信号数//! 简要控制器时钟频率与速度环路速率的关系 #define user_NUM_CTRL_TICS_PER_SPEED _TICK (15)// 15典型匹配PWM,例如:15kHz PWM,控制器和电流环路,1KHz速度环路 //! \brief定义每个轨迹的控制器时钟嘀嗒信号数。时钟嘀嗒 信号//! \控制器时钟频率与轨迹环路速率的简短关系 //! \brief通常与速度 率#define user_NUM_CTRL_TICS_PER_TRAJ_TICK (15)// 15相同,通常与PWM匹配,例如:10kHz控制器和电流回路,1KHz速度回路,1 KHz轨迹 //! *限制简介 //! \brief定义要在ID引用 //中应用的最大负电流。 简明仅用于场弱化,这是一个安全设置(例如,防止消磁) //! \brief用户还必须注意,整体电流大小[sqrt(ID^2 + IQ^2)]应保持在低于任何机器设计规格 #define USER_MAX_NOLIC_ID_REF_CURRENT_A (0.5 * USER_MOTOR_MAX_CURRENT)//-MOTOR_MAX_CURRENT示例:0.5 * USER_MOTOR_MAX_CURRENT,调整以满足马达的安全需求 //! \brief定义R/L估计频率,赫兹 //! \brief用户,低电感电动机的值较高,高电感电动机的值较低 //! \brief电机。 这些值的范围为100至300 Hz。 #define user_R_over,L_EST_FREQ_Hz (300) // 300默认 //! \brief为通量积分器PU //定义低速限值。 \brief这是处于活动状态的ForceAngle对象的速度范围(CW/CCW),但仅当启用 //! 在此速度之外的\brief -或如果已禁用,则ForcAngle将从不处于活动状态,并且仅由FAST #define USER_ZEROSPEEDLIMIT (0.5 / USER_IQ_FILL_Scale_FREQ_Hz)提供角度。 // 0.002 PU,1-5 Hz (典型);Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL,Scale_FREQ_Hz //! \brief定义力角度频率,Hz //! \\n力角对象使用的定子矢量旋转的简短频率 //! \brief可以是正数或负 数#define user_force_angle_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL _Scale_FREQ_Hz) // 1.0 典型力角启动速度 //! *「极杆 」/「极杆」/「杆杆杆」/「杆杆」/「杆 //! \brief定义模拟电压滤波器极位置,赫兹 //! \brief必须与VPH的硬件过滤器 #define user_voltage_filter_pole_Hz (357.0)// BOOSTXL-DRV8305 = 344.62 Hz //! \볲 뛌 user motor & ID settings //************************************************************************************************** //! \brief使用唯一的名称和ID号定义每个电机 // BLDC和SMPM电机 #define Estun_EMJ_04APB22 101 #define Anaheim_BLY172S 102 #Define Teknic_M2310PLN04K 104 // ipm motors //如果用户提供单独的LS-d,LS-q //或者将其视为SPM与用户或确定的平均LS #define Belet_Drive_Washer_IPM 201 #定义Anaheim_显著 202 // ACIM电机 #define Marathon_5K33GN2A 301 #define user_motor Maxon_EC22 #Elif (user_motor == Maxon_EC22) #define user_motor_type motor_Type_pm #define user_motor_NUM_pole_pairs (1) #define user_motor_rr (空) #define user_motor_Rs (0.43) #define user_motor_ls_d (0.00011737140144) #define user_motor_ls_q (0.00011737140144) #define user_motor_rated流量 (0.0535185114) #define user_motor_magniting_current (空) #define user_motor_RES_EST_current (0.2) #define user_motor_IND_EST_current (0.2) #define user_motor_MAX_current (0.5) #define user_motor_fluone_EST_FREQ_Hz (20.0) 对此有何想法? 我认为这在某种程度上是一个单位规模问题,但我的用户参数没有发现任何问题
感谢你的帮助。
-Nicolas de Maubeuge