现象:当程序运行时、电机本身会发出电流声音。 随着电压升高(12V、24V、48V、110V、600V)、 电流声音会增大。
客户推测这种现象是由 FAST 估算器(估算电机转子位置)导致的、需要关闭。 同时打开运动控制器和 FAST 估算器后、程序开始为控制器和估算器编写开关、而没有单独的控制
摘要:客户需要的是在程序中查找估算器开关的接口、或用于消除声音的参数
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
现象:当程序运行时、电机本身会发出电流声音。 随着电压升高(12V、24V、48V、110V、600V)、 电流声音会增大。
客户推测这种现象是由 FAST 估算器(估算电机转子位置)导致的、需要关闭。 同时打开运动控制器和 FAST 估算器后、程序开始为控制器和估算器编写开关、而没有单独的控制
摘要:客户需要的是在程序中查找估算器开关的接口、或用于消除声音的参数
1.定制的电路板? 或 TI EVM 板?
->定制芯片或开发板或批量生产芯片
您正在使用哪个实验?
-> 12b
是否有电流波形可以显示该问题?
->
user.h 中的任何设置? 如果可能、请移植 user.h。
->
#ifndef _user_H_
#define _USER_H_
/*-版权-, BSD
*版权所有(c) 2012、德州仪器(TI)公司
保留所有权利。
*
*以源代码和二进制形式重新分发和使用,有或没有
*修改,在以下条件允许的条件下
*满足:
*
**源代码的重新分发必须保留以上版权
*请注意,本条件清单和以下免责声明。
*
**二进制形式的再分发必须复制上述版权
*通知,本条件清单和下述免责声明在
*与分发一起提供的文档和/或其他材料。
*
**德州仪器公司名称或公司名称
*其贡献者可用于认可或推广派生的产品
*从本软件未经事先书面许可。
*
*本软件由版权持有者和贡献者"按原样"提供
本站明确声明不作出任何种类的所有明示或暗示的保证,包括但不限于关于适销性、适用于
*对特定产品的适销性和适用性的暗示保证
*免责声明。 在任何情况下,版权所有者或
*贡献者对任何直接、间接、偶然、特殊、
*示例性或后果性损害(包括但不限于:
*替代产品或服务的采购;使用、数据或利润的损失;
*或业务中断)然而造成和任何责任理论,
*无论是合同,严格的责任,或侵权(包括疏忽或
*其他)因使用本软件而产生的任何原因、
*即使被告知此类损害的可能性。
*-/版权-*/
//! \file src solutions/instaspin_motion/boards/hvkit_rev1p1/f28x/f2805xM/f2805xM/boards/user.h
//! \short 包含针对 CTRL、HAL 和 EST 模块的用户初始化数据的公共界面
//!
//! (C)版权所有2012、Texas Instruments、Inc.
//香港特别行政区政府
//包括
//模块
#include "sw/modules/types/sw/types.h" src
#include "sw/modules/motor/motor/microb/32b/motor.h" src
#include "sw/modules/est/statics/32b/est.h" src
#include "sw/modules/est/est/est_states.h" src
#include "sw/modules/est/vest/vest_Flux_states.h" src
#include "sw/modules/est/lss/est_ls_states.h" src
#include "sw/modules/est/rts/est_Rs_states.h" src
#include "sw/modules/ctrl/cms/ctrl/32b/ctrl_obj.h" src
//平台
#include "sw/modules/fast/userParams/32b/userParams.h" src
//!
//!
//! \defgroup 用户
//!
//@{
#ifdef _cplusplus
extern "C"{
#endif
//香港特别行政区政府
//定义
//! 简明电流和电压
//香港特别行政区政府
//! 简明定义 Iq 变量的满量程频率,Hz
//! 简述所有频率均根据对此值的比率转换为(pu)
//! 简述此值必须大于预期的电机最大速度
#ifndef QEP
#define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)// 800示例、用于8极6 krpm 电机的缓冲区可运行至10krpm (具有弱磁功能);Hz =(RPM * Poles)/ 120
#else
//#define USER_IQ_FULL_SCALE_FREQ_Hz (USER_MOTOR_NUM_POLE_PAIRS /0.008)//(4/0.008)= 500示例、其中包含8极6 kRPM 电机运行至6kRPM 的缓冲器;Hz =(RPM * Poles)/ 120
#define USER_IQ_FULL_SCALE_FREQ_Hz ((USER_MOTOR_MAX_SPEED_KRPM * 1000 * USER_MOTOR_NUM_POLE_PAIRS)* 1.5 / 60)
#endif
//! 简明定义系统内 IQ30电压变量的满量程值
//! 简述所有电压将根据与此值的比率转换为(pu)
//! \brief 警告:此值必须满足以下条件:USER_IQ_FULL_SCALE_VOLTAGE_V > 0.5 * USER_MOTOR_MAX_CURRENT * USER_MOTOR_Ls_d * USER_VOLTAGE_FILTER_POLE_rps、
//! \brief 警告:否则,该值可能会饱和并翻转,从而导致值不准确。
//! 警告:此值通常大于测得的最大 ADC 值、尤其是在高反电势电机的运行速度大于额定速度的情况下
//! \brief 警告:如果您知道反电动势常数的值并且知道由于磁场减弱正在以多速度运行,则请确保将此值设置为高于预期反电动势电压。
//! 简明如果反电动势计算可能超过这些限值、建议从大于 USER_ADC_FULL_SCALE_VOLTAGE_V 的值~3开始、并增加到4到5倍
//! \short 该值还用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7
#define USER_IQ_FULL_SCALE_VOLTAGE_V (330.0)
//! \short 定义 AD 转换器输入端的最大电压
//! 简略表示最大 ADC 输入(3.3V)和转换(0FFFh)的值
//! 简短硬件相关、此值应基于 ADC 输入的电压检测和换算系数
#define USER_ADC_FULL_SCALE_VOLTAGE_V (333.3)/* 200k + 2k */
//! 简明定义系统的电压换算系数
//! 简略编译时计算系统中使用的换算系数(比率)
#define USER_VOLTAGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V))
//! \short 定义 IQ 变量的满量程电流、a
//! 简述所有电流将根据与此值的比率转换为(pu)
//! 简短警告:此值必须大于预期的电机最大电流读数、否则读数会翻转为0、从而产生控制问题
#define USER_IQ_FULL_SCALE_CURRENT_A (USER_ADC_FULL_SCALE_CURRENT_A * 0.5)//
//! 简明定义 AD 转换器的最大电流
//! 简略表示最大 ADC 输入(3.3V)和转换(0FFFh)的值
//! 简短硬件相关、此值应基于 ADC 输入的电流感应和换算系数
#define USER_ADC_FULL_SCALE_CURRENT_A (110.0)// 3m 10k
//! 简明定义系统的当前换算系数
//! 简略编译时计算系统中使用的换算系数(比率)
#define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A))
//! 简明定义使用的电流传感器数
//! 由硬件功能定义
//! 简明可以是(2)或(3)
#define USER_NUM_CURRENT_SENSORS (3)// 3个在全速范围内实现最佳性能的首选设置,允许100%占空比
//! 简明定义电压(相)传感器的数量
//! 简明必须为(3)
#define USER_NUM_VOLTAGE_SENSORS (3 )//需要3
//! 简略 A、B 和 C 相的 ADC 电流偏移
//! 只需一次性使用硬件、但也可在运行时进行校准
//! 简在电路板初始校准后、应针对特定硬件更新这些值、以便在编译为二进制文件并加载到控制器后仍可使用这些值
#define I_A_offset (0.9889127016)
#define I_B_OFFSET (0.9892736077)
#define I_C_OFFSET (0.9981902838)
//! 简略 A、B 和 C 相的 ADC 电压偏移
//! 只需一次性使用硬件、但也可在运行时进行校准
//! 简在电路板初始校准后、应针对特定硬件更新这些值、以便在编译为二进制文件并加载到控制器后仍可使用这些值
#define V_A_offset (0.3306381106)
#define V_B_offset (0.3306101561)
#define V_C_OFFSET (0.3335448503)
//! 简明时钟和计时器
//香港特别行政区政府
//! 简明定义系统时钟频率,MHz
#if (crystal_OSC_FREQ_MHz == 8)
#define USER_SYSTEM_FREQ_MHz (56.0)
#else
#define USER_SYSTEM_FREQ_MHz (60.0)
#endif
//! 简明定义脉宽调制(PWM)频率(kHz)
//! 简明 PWM 频率可直接在此处设置为安全高达30KHz (某些情况下最大为60KHz)
//! 简明对于较高的 PWM 频率(对于低电感、高电流波纹电机、通常频率超过60KHz)、建议使用 ePWM 硬件
//! 简明和可调的 ADC SOC、用于抽取控制系统的 ADC 转换完成中断、或使用软件序列示例。
//! \short 否则、您将面临中断丢失和控制状态机时序中断的风险。
#define USER_PWM_FREQ_kHz (15.0)//30.0示例、8.0 - 30.0KHz 典型值;极低电感的高速电机可能需要45-80KHz
//! \short 定义允许的最大 Voltage 矢量(Vs)幅度。 该值设置输出的最大幅度
//! Id 和 Iq PI 电流控制器简介。 Id 和 Iq 电流控制器输出为 Vd 和 Vq。
//! 简而言之、Vs、Vd 和 Vq 之间的关系为:Vs = sqrt (Vd^2 + Vq^2)。 在该 FOC 控制器中、
//! 短 Vd 值设置为等于 USER_MAX_VS_MAG*USER_VD_MAG_FACTOR。 Vq = sqrt (USER_MAX_VS_MAG^2 - Vd^2)。
//! 简明对于波峰占空比 SQRT (3)/2 = 86.6%的纯正弦波、设置 USER_MAX_VS_MAG = 0.5。 这种情况下、不需要使用电流重构技术。
//! 简明对于峰值占空比为100%的纯正弦波、设置 USER_MAX_VS_MAG = 1/SQRT (3)= 0.5774。 这种情况下(Lab10a-x)、需要使用电流重构技术。
//! 简明设置 USER_MAX_VS_MAG = 2/3 = 0.6666来生成梯形电压波形。 这种情况下(Lab10a-x)、需要使用电流重构技术。
//! 简明对于空间矢量过调制、有关 SVM 生成器生成梯形波形的系统要求的详细信息、请参阅实验10。
#define USER_MAX_VS_MAG_PU (MATH_TWO_OVER_THIRE)//如果未使用电流重构技术,则设置为0.5。 有关详细信息、请查看 lab10a-x 中的 svgen_current 模块。
//! \brief 定义脉宽调制(PWM)期间(以微秒计)
//! 简略编译时间计算
#define USER_PWM_PERIOD_usec (1000.0/USER_PWM_FREQ_kHz)
//! \Brief 定义中断服务例程(ISR)频率(单位为 Hz)
//!
#define USER_ISR_FREQ_Hz ((float_t) USER_PWM_FREQ_kHz * 1000.0 /(float_t) USER_NUM_PWM_TICKS_PER_ISR_TICK)
//! \brief 定义中断服务程序(ISR)期间(以微秒为单位)
//!
#define USER_ISR_PERIOD_usec (USER_PWM_PERIOD_usec *(float_t) USER_NUM_PWM_TICKS_PER_ISR_TICK)
//! 简略抽取
//香港特别行政区政府
//! \short 定义每个 ISR 时钟节拍的 PWM 时钟节拍数
//! 注意:有效值仅为1、2或3
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)
//! 简明定义每个控制器时钟节拍(软件)的 ISR 节拍数(硬件)
//! 简明控制器时钟节拍(CTRL)是用于软件中所有定时的主时钟
//! 简报通常、PWM 频率触发(可由 ePWM 硬件抽取、以减少开销) ADC SOC
//! 简明 ADC SOC 触发 ADC 转换完成
//! 简明 ADC 转换完成触发 ISR
//! 简略介绍硬件 ISR 速率与软件控制速率之间的关系
//! 简而言之、通常需要对16KHz ISR 进行某种形式的抽取(ePWM 硬件、CURRENT 或 EST)、以确保中断完成并为后台任务留出时间
#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1)// 2示例,控制器时钟速率(CTRL)以 PWM/2运行;例如30KHz PWM、15KHz 控制
//! \short 定义每个电流控制器时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与电流控制器(FOC)速率之间的关系
#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)// 1典型的正向 FOC 电流控制器(IQ/ID/IPARK/SVPWM)以与 CTRL 相同的速率运行。
//! \short 定义每个估算器时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与估算器(FAST)速率之间的关系
//! 简明取决于所需的动态性能,FAST 提供低至1 KHz 的极好结果,而更多的动态或高速应用可能需要高达15 KHz 的性能。
#define USER_NUM_CTRL_TICKS_PER_EST_TICK (1)// 1典型 FAST 估算器以与 CTRL 相同的速率运行;
//! 简明定义每个速度控制器时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与速度环路速率之间的关系
#define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (15)// 15典型值以匹配 PWM、例如:15kHz PWM、控制器和电流环路、1KHz 速度环路
//! \short 定义每个轨迹时钟节拍的控制器时钟节拍数
//! 控制器时钟速率与轨迹环路速率之间的关系
//! 一般与速率相同
#define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)// 15典型值以匹配 PWM、例如:10kHz 控制器和电流环路、1KHz 速度环路、1KHz 轨迹
//! 简明定义控制器频率,Hz
//! 简略编译时间计算
#define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)
//! 简明定义估算器频率、Hz
//! 简略编译时间计算
#define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)
//! 简明定义轨迹频率、Hz
//! 简略编译时间计算
#define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)
//! \short 定义控制器执行期间,usec
//! 简略编译时间计算
#define USER_CTRL_PERIOD_usec (USER_ISR_PERIOD_usec * USER_NUM_ISR_TICKS_PER_CTRL_TICK)
//! \brief 定义控制器执行周期(秒)
//! 简略编译时间计算
#define USER_CTRL_PERIOD_sec ((float_t) USER_CTRL_PERIOD_usec/(float_t) 1000000.0)
//! 简略限制
//香港特别行政区政府
//! \Brief 定义要在 Id 参考值中应用的最大负电流
//! 简述仅用于弱磁、这是一个安全设置(例如、用于防止消磁)
//! 简明用户还必须注意、整体电流幅值[sqrt (Id^2 + Iq^2)]应保持在任何机器设计规格以下
#define USER_MAX_NEGATIVE_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)//-0.5 * USER_MOTOR_MAX_CURRENT 示例、可根据电机安全需求进行调整
//! \short 定义磁通积分器的低速限值、pu
//! \short 这是强制角对象处于活动状态时的速度范围(CW/CCW),但仅在启用时才适用。
//! \Brief 超出此速度时-或禁用时- ForcAngle 将永远不会激活、并且角度仅由 FAST 提供
#define USER_ZEROSPEEDLIMIT (0.5 / USER_IQ_FULL_SCALE_FREQ_Hz)// 0.002pu、1-5Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz
//! 简明定义力角频率、Hz
//! 简明强制角对象使用的定子矢量旋转频率
//! 短可为正或负
#define USER_FORCE_ANGLE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz)// 1.0典型的强制角启动速度
//! \brief 定义 PowerWarp 期间 Id 轨迹的最大电流斜率
//! 仅用于感应电机、可控制在 PowerWarp 控制下 Id 输入的变化速度
#define USER_MAX_CURRENT_SLOPE_POWERWARP (0.3* USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)// 0.3* RES_EST_CURRENT / IQ_FULL_SCALE_CURRENT / TRAJ_FREQ 典型值、产生1秒缓降
//! \brief 定义速度配置文件的起始最大加速度和减速度、Hz/s
//! 在运行时通过用户函数进行更新
//! 简明逆变器、电机、惯性和负载将限制实际加速能力
#define USER_MAX_ACCEL_Hzps (20.0)//默认值
//! 简明定义估算速度系统配置的最大加速度、Hz/s
//! 仅在电机识别期间使用(确认)
#define USER_MAX_ACCEL_EST_Hzps (2.0)// 2.0默认值,不要更改
//! \brief 定义估算期间 Id 轨迹的最大电流斜率
#define USER_MAX_CURRENT_SLOPE (USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz)// USER_MOTOR_RES_EST_CURRENT/USER_IQ_FULL_SCALE_CURRENT_A/USER_TRAJ_FREQ_Hz 默认值、不更改
//! \brief 定义要在额定磁通估算期间使用的 Id 额定电流的比例
//!
#define USER_IDRATED_FRACTION_FOR_RATED_FLUX (1.0)//默认值1.0、请勿更改
//! 简明定义在电感估算期间要使用的 Id 额定电流的比例
//!
#define USER_IDRATED_FRACTION_FOR_L_IDENT (1.0)//默认值1.0,不更改
//! \brief 定义估算期间要使用的 Id 额定增量
//!
#define USER_IDRATED_DELTA (0.00002)
//! 简明定义在电感估算期间要使用的 SpeedMax 的比例
//!
#define USER_SPEEDMAX_FRACTION_FOR_L_IDENT (1.0)// 1.0默认值,不要更改
//! 简明定义电感识别期间要使用的磁通分量
//!
#define USER_FLUX_FRACTION (1.0)//默认值1.0、不变
//! \brief 定义用于计算 Id 参考值的 PowerWarp 增益
//! 仅限感应电机
#define USER_POWERWARP_GAIN (1.0)//默认值1.0,不更改
//! 简明定义 R/L 估计频率、Hz
//! 简明用户较高的低电感电机值和较低的电感值
//! 电机简介。 这些值的范围为100至300Hz。
#define USER_R_OVER_L_EST_FREQ_Hz (100)// 100默认值
//! 短极点
//香港特别行政区政府
//! 简明定义模拟电压滤波器极点位置、Hz
//! \Brief 必须与 VPH 的硬件过滤器匹配
#define USER_VOLTAGE_FILTER_POLE_Hz (365.332937552)
//! 简明定义模拟电压滤波器极点位置 rad/s
//! 简略编译时间计算从 Hz 到 rad/s
#define USER_VOLTAGE_FILTER_POLE_rps (2.0 * MATH_PI * USER_VOLTAGE_FILTER_POLE_Hz)
//! 简明定义用于电压和电流失调估算的软件极点位置、rad/s
//! 不应更改默认值(20.0)的以下值
#define USER_OFFSET_POLE_rps (20.0)// 20.0默认值、不改变
//! 简明定义磁通估算的软件极点位置、rad/s
//! 不应更改默认值(100.0)
#define USER_FLUX_POLE_rps (100.0)// 100.0默认值、请勿更改
//! 简明定义方向滤波器的软件极点位置、rad/s
#define USER_DIRECTION_POLE_rps (6.0)//默认值6.0,请勿更改
//! 简明定义速度控制滤波器的软件极点位置、rad/s
#define USER_SPEED_POLE_rps (100.0)// 100.0默认值、不要更改
//! 简明定义直流母线滤波器的软件极点位置、rad/s
#define USER_DCBus_POLE_rps (100.0)// 100.0默认值、请勿更改
//! 简明定义估计器的收敛因子
//! 简明不更改 FAST 的默认值
#define USER_EST_KAPPAQ (1.5)// 1.5默认值,请勿更改
//香港特别行政区政府
//结束定义
//! 简略用户电机和 ID 设置
//香港特别行政区政府
//! \Brief 定义 SpinTAC Control 的默认带宽
//! 此值应通过调优过程进行 SpinTAC 控制来确定
//! 简明如果先前已识别带宽比例值
//! 简明将其乘以20以转换为带宽
#define USER_SYSTEM_BANDWIDTH(0.0)
//! \Brief 使用唯一的名称和 ID 编号来定义每个电机
// BLDC 和 SMPM 电机
#define EMB_MOTOR1 101
#define EMB_MOTOR2 102
#define EMB_MOTOR3 103
#define USER_MOTOREMB_MOTOR1
#if (user_motor == emb_motor1)//名称必须与电机#define 匹配
#define USER_MOTOR_TYPE MOTOR_MOTOR Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (8)
#define USER_MOTOR_RR (NULL)
#define USER_MOTOR_Rs (0.699750304)//(0.725775301)
#define USER_MOTOR_LS_d (0.005122542)//(0.005419016)
#define USER_MOTOR_Ls_q (USER_MOTOR_Ls_d)
#define USER_MOTOR_RATED_FLUX (1.055357337)//(1.058166146)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (4.5)
#define USER_MOTOR_IND_EST_CURRENT (-4.5)
#define USER_MOTOR_MAX_CURRENT (50.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20)
#define USER_MOTOR_ENCODER_LINES (1024.0)
#define USER_MOTOR_MAX_SPEED_KRPM (1.0)
#define USER_SYSTEM_INERTIA (0.4)
#define USER_SYSTEM_FRICTION (1.497169137)
#define USER_OFFSET_CALC (0.6)//计算时间(以秒为单位)
#define USER_RS_STATE_Step1 (1.0)
#define USER_RS_STATE_Step2 (0.2)
#define USER_RS_STATE_Step3 (0.6)
#define USER_RS_STATE_STEP_ALL (USER_RS_STATE_Step1 + USER_RS_STATE_Step2 + USER_RS_STATE_Step3)
#define USER_DEFAULT_SPEED_KRPM (0.5)
#define USER_ENCODER_REVERSE_DIR (QEP_DIR Swap_Not_Swapped)//ת λ ô Ӧ Ƕ
#define USER_MOTOR_Q_PULL_MM (2.0)//ǰ Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Q_push_length_mm (59.0)//ǰ Ż 쳤λ
#define USER_MOTOR_Z_pull_length_mm (2.0)//к Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Z_push_length_mm (59.0)//к Ż 쳤λ
#Elif (USER_MOTOR== EMB_MOTOR2)
#define USER_MOTOR_TYPE MOTOR_MOTOR Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (8)
#define USER_MOTOR_RR (NULL)
#define USER_MOTOR_Rs (0.042)
#define USER_MOTOR_LS_d (0.00014)
#define USER_MOTOR_Ls_q (USER_MOTOR_Ls_d)
#define USER_MOTOR_RATED_FLUX (0.084366381)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (10.0)
#define USER_MOTOR_IND_EST_CURRENT (-10.0)
#define USER_MOTOR_MAX_CURRENT (100.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20)
#define USER_MOTOR_ENCODER_LINES (1024.0)
#define USER_MOTOR_MAX_SPEED_KRPM (2.0)
#define USER_SYSTEM_INERTIA (0.616290271)
#define USER_SYSTEM_FRICTION (1.633763611)
#define USER_OFFSET_CALC (0.6)//计算时间(以秒为单位)
#define USER_RS_STATE_Step1 (1.0)
#define USER_RS_STATE_Step2 (0.2)
#define USER_RS_STATE_Step3 (0.6)
#define USER_RS_STATE_STEP_ALL (USER_RS_STATE_Step1 + USER_RS_STATE_Step2 + USER_RS_STATE_Step3)
#define USER_IPD_DUTY (0.08)
#define USER_DEFAULT_SPEED_KRPM (USER_MOTOR_MAX_SPEED_KRPM - 0.2)
#define USER_ENCODER_REVERSE_DIR (QEP_DIR Swap_Not_Swapped)//ת λ ô Ӧ Ƕ
#define USER_MOTOR_Q_PULL_MM (2.0)//ǰ Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Q_push_length_mm (59.0)//ǰ Ż 쳤λ
#define USER_MOTOR_Z_pull_length_mm (2.0)//к Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Z_push_length_mm (59.0)//к Ż 쳤λ
#Elif (USER_MOTOR== EMB_MOTOR3)
#define USER_MOTOR_TYPE MOTOR_MOTOR Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (8)
#define USER_MOTOR_RR (NULL)
#define USER_MOTOR_Rs (0.042)
#define USER_MOTOR_LS_d (0.00014)
#define USER_MOTOR_Ls_q (USER_MOTOR_Ls_d)
#define USER_MOTOR_RATED_FLUX (0.084366381)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (3.0)
#define USER_MOTOR_IND_EST_CURRENT (-3.0)
#define USER_MOTOR_MAX_CURRENT (30.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (20)
#define USER_MOTOR_ENCODER_LINES (1024.0)
#define USER_MOTOR_MAX_SPEED_KRPM (2.0)
#define USER_SYSTEM_INERTIA (0.616290271)
#define USER_SYSTEM_FRICTION (1.633763611)
#define USER_OFFSET_CALC (0.6)//计算时间(以秒为单位)
#define USER_RS_STATE_Step1 (1.0)
#define USER_RS_STATE_Step2 (0.2)
#define USER_RS_STATE_Step3 (0.6)
#define USER_RS_STATE_STEP_ALL (USER_RS_STATE_Step1 + USER_RS_STATE_Step2 + USER_RS_STATE_Step3)
#define USER_IPD_DUTY (0.08)
#define USER_DEFAULT_SPEED_KRPM (USER_MOTOR_MAX_SPEED_KRPM - 0.3)
#define USER_ENCODER_REVERSE_DIR (QEP_DIR Swap_Not_Swapped)//ת λ ô Ӧ Ƕ
#define USER_MOTOR_Q_PULL_MM (2.0)//ǰ Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Q_push_length_mm (59.0)//ǰ Ż 쳤λ
#define USER_MOTOR_Z_pull_length_mm (2.0)//к Ż λ ã ֵͳһΪ ֵ Ο Ƹ˺ˮƽλ Ϊ
#define USER_MOTOR_Z_push_length_mm (59.0)//к Ż 쳤λ
#else
#error 未指定电机类型
#endif
#ifndef user_motor
#ERROR 电机未在 user.h 中定义
#endif
#ifndef user_motor_type
#error 未在 user.h 中定义电机类型
#endif
#ifndef USER_MOTOR_NUM_POLE_PAIRS
#在 user.h 中未定义电机极对数
#endif
#ifndef USER_MOTOR_RR
#error 转子电阻在 user.h 中未定义
#endif
#ifndef USER_MOTOR_Rs
#error 定子电阻在 user.h 中未定义
#endif
#ifndef USER_MOTOR_Ls_d
#error user.h 中未定义直流定子电感
#endif
#ifndef USER_MOTOR_Ls_q
#error user.h 中未定义正交定子电感
#endif
#ifndef USER_MOTOR_RATED_FLUX
#error user.h 中未定义电机额定磁通
#endif
#ifndef USER_MOTOR_MAGNETIZING_CURRENT
#error 未在 user.h 中定义磁化电流
#endif
#ifndef USER_MOTOR_RES_EST_CURRENT
#error 电阻估算电流未在 user.h 中定义
#endif
#ifndef USER_MOTOR_IND_EST_CURRENT
#error 未在 user.h 中定义电感估算电流
#endif
#ifndef USER_MOTOR_MAX_CURRENT
#error user.h 中未定义最大电流
#endif
#ifndef USER_MOTOR_FLUX_EST_FREQ_Hz
#error 磁通估算频率未在 user.h 中定义
#endif
//香港特别行政区政府
//函数
//! 简明设置用户参数值
//! \param[in] pUserParams 指向用户参数结构的指针
extern void user_setParams (USER_Params * pUserParams);
//! 短查用户参数值中的错误
//! \param[in] pUserParams 指向用户参数结构的指针
extern void user_checkForErrors (USER_Params * pUserParams);
//! 获取用户参数中的错误代码
//! \param[in] pUserParams 指向用户参数结构的指针
//! 返回错误代码
extern USER_ErrorCode_e USER_getErrorCode (USER_Params * pUserParams);
//! 简明设置用户参数中的错误代码
//! \param[in] pUserParams 指向用户参数结构的指针
//! \param[in]错误代码
extern void USER_setErrorCode (USER_PARAMS *pUserParams、const USER_ErrorCode_e errorCode);
//! 简明使用正确的 Q 格式重新计算电感
//! \param[in]处理控制器(CTRL)句柄
extern void user_softwareUpdate1p6 (CTRL_Handle handle);
//! 简明更新 Id 和 Iq PI 增益
//! \param[in]处理控制器(CTRL)句柄
extern void user_calcPIgains (CTRL_Handle handle);
//! 简明计算将通过 Ld、Lq、Id 和 Iq 创建的转矩从标么值转换为 Nm 所需的换算系数
//! 返回换算系数、将通过(Ld - Lq)* Id * Iq 计算的转矩从标么值转换为 Nm、IQ24格式
extern _IQ user_compution_ Torque_Ls_Id_Iq_ o _ NM_SF (void);
//! 简明计算将通过磁通和 Iq 创建的转矩从标么值转换为 Nm 所需的换算系数
//! 将通过磁通* Iq 计算的转矩从标么值转换为 Nm 时所使用的换算系数、IQ24格式
extern _IQ user_compution_ Torque_Flux_Iq_ o _ NM_SF (void);
//! 简略计算将标么值转换为 Wb 所需的换算系数
//! 返回将磁通从标么值转换为 Wb 时所使用的换算系数、IQ24格式
extern _iq user_computeFlux_pu_to_wb_sf (void);
//! 简明计算将标么值转换为 V/Hz 所需的换算系数
//! 以 IQ24格式返回将磁通从标么值转换为 V/Hz 时所使用的换算系数
extern _IQ user_computeFlux_pu_to_VpHz_SF (void);
//! 简明根据作为参数发送的比例因子计算磁通(以 Wb 或 V/Hz 为单位)
//! \param[in]处理控制器(CTRL)句柄
//! \param[in] sf 将磁通从标么值转换为 Wb 或 V/Hz 时所使用的换算系数
//! 根据作为参数发送的比例因子、以 Wb 或 V/Hz 为单位返回磁通、采用 IQ24格式
extern _iq user_computeFlux (CTRL_handle、const _iq SF);
//! 短算以牛米为单位的扭矩
//! \param[in]处理控制器(CTRL)句柄
//! \param [in] Torque_Flux_sf 将通过(Ld - Lq)* Id * Iq 计算的扭矩从标么值转换为 Nm 时所使用的换算系数
//! \param [in] Torque_Ls_sf 将通过磁通* Iq 计算的扭矩从标么值转换为 Nm 时所使用的换算系数
//! 以 Nm 为单位返回扭矩、IQ24格式
extern _IQ user_computiesc参数 Torque_Nm (CTRL_Handle handle、const _Iq Torque_Flux_SF、const _Iq Torque_LS_sf);
//! 短时间计算 lbin 中的扭矩
//! \param[in]处理控制器(CTRL)句柄
//! param [in] Torque_Flux_sf 将通过(Ld - Lq)* Id * Iq 计算的扭矩从标么值转换为 lbin 的换算系数
//! param [in] Torque_Ls_SF 将磁通* Iq 中的扭矩从标么值转换为 lbin 时所用的换算系数
//! 以 lbin 格式返回扭矩、IQ24格式
extern _iq user_computeTorque_lbin (CTRL_Handle handle、const _iq Torque_Flux_sf、const _iq Torque_LS_sf);
#ifdef _cplusplus
}
#endif // extern "C"
//@}//分组
#endif //结束_user_H_定义
请提供更多详细信息、以帮助我们理解 您的问题。