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.

[参考译文] C2000WARE:SpinTac 移动和最大速度

Guru**** 2540720 points
Other Parts Discussed in Thread: DRV8312

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/597625/c2000ware-spintac-move-and-maximum-speed

器件型号:C2000WARE
主题中讨论的其他器件:DRV8312

大家好、

我使用 lab13b 在 Spintac Move 下运行电机、 但最大速度为1.2。

我的 user.h 中的定义

 #define USER_MOTOR_MAX_SPEED_KRPM      (5.0)

但在速度模式下、我可以 以最大速度运行电机。

可以帮帮我吗?

Alex

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的直流总线电压是多少? 它是否足以满足您尝试达到的速度? 请链接您的 user.h 以供我们查看

    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、

    我可以使用 proj_lab12b 以最大速度旋转电机。
    我的直流总线电压为44伏。
    这是我的 user.h

    #ifndef _USER_H_
    #define _USER_H_
    /*-版权所有-、BSD
    *版权所有(c) 2012、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *--/版权--*/

    //! \file solutions/instaspin_MOTION/boards/drv8312kit_revD/F28x/f2806xM/src/user.h
    //! \brief 包含用于 CTRL、HAL 和 EST 模块的用户初始化数据的公共接口
    //!
    //! (C)版权所有2012、Texas Instruments、Inc.


    秘书长的报告
    //包括

    //模块
    #include "sw/modules/types/src/types.h"
    #include "sw/modules/motor/src/32b/motor.h"
    #include "sw/modules/est/src/32b/est.h"
    #include "sw/modules/est/src/est_states.h"
    #include "sw/modules/est/src/est_Flux_States.h"
    #include "sw/modules/est/src/est_Ls_states.h"
    #include "sw/modules/est/src/est_rs_states.h"
    #include "sw/modules/ctrl/src/32b/ctrl_obj.h"


    //平台
    #include "sw/modules/fast/src/32b/userParams.h"

    //!
    //!
    //! 定义组用户用户
    //!
    //@


    #ifdef __cplusplus
    extern "C"{
    #endif

    秘书长的报告
    //定义


    //! 简要介绍电流和电压
    秘书长的报告
    //! \brief 定义 IQ 变量的满量程频率、Hz
    //! \brief 根据与该值的比率将所有频率转换为(pu)
    //! \brief 此值必须大于预期的电机最大速度
    ifndef QEP
    #define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)// 800示例、此示例具有缓冲器、用于8极6 krpm 电机在场强减弱时运行至10 krpm;Hz =(RPM *极)/ 120
    其他
    #define USER_IQ_FULL_SCALE_FREQ_Hz (USER_MOTOR_NUM_POLE_PAIRS / 0.008)//(4/0.008)= 500个示例、其中包含用于8极6 krpm 电机运行至6 krpm 的缓冲器;Hz =(RPM *极)/ 120
    #endif

    //! \brief 定义系统内 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 警告:否则,该值可能会饱和并翻转,从而导致值不准确
    //! \brief 警告:此值通常大于测得的最大 ADC 值、尤其是在高反电动势电机的运行速度高于额定速度时
    //! 简要警告:如果您知道反电动势常数的值、并且知道由于磁场减弱而以多种速度运行、请确保将此值设置为高于预期反电动势电压
    //! 简要建议从比 USER_ADC_FULL_SCALE_VOLTGE_V 大~3倍的值开始、如果 Bemf 计算可能超过这些限制、则增加到4-5倍
    //! \brief 此值也用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7
    #define USER_IQ_FULL_SCALE_VOLTAGE_V (44.0)//针对 drv8312_revd 典型用法和 Anaheim 电机的24.0示例

    //! \brief 定义 AD 转换器输入端的最大电压
    //! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
    //! 简要说明硬件相关、这应基于 ADC 输入的电压感应和缩放
    #define USER_ADC_FULL_SCALE_VOLTGE_V (66.32) // 66.32 drv8312_revd 电压调节

    //! \brief 定义系统的电压换算系数
    //! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
    #define USER_VOLTGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V))

    //! \brief 定义 IQ 变量 A 的满量程电流
    //! \brief 根据与该值的比率将所有电流转换为(pu)
    //! \brief 警告:此值必须大于预期的电机最大电流读数、否则读数将回滚至0、从而导致控制问题
    #define USER_IQ_FULL_SCALE_CURRENT_A (8.0)// ddrv8312_revd 典型用法的10.0示例

    //! \brief 定义 AD 转换器上的最大电流
    //! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
    //! 简要说明硬件相关、这应基于 ADC 输入的电流感应和缩放
    #define USER_ADC_FULL_SCALE_CURRENT_A (8.65) // 17.30 drv8312_revd 电流调节

    //! \brief 定义系统的当前换算系数
    //! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
    #define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A))

    //! \brief 定义使用的电流传感器数量
    //! 由硬件功能定义的\brief
    //! \brief 可以是(2)或(3)
    #define USER_NUM_CURRENT_SENSORS (3)//为在全速范围内实现最佳性能,可实现100%占空比

    //! \brief 定义电压(相位)传感器的数量
    //! 简要必须为(3)
    #define USER_NUM_VOLTGE_SENSORS (3)//需要3个

    //! 简要介绍 A、B 和 C 相的 ADC 电流偏移
    //! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
    //! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
    #define I_A_offset (-0.5407835841)
    #define I_B_OFFSET (-0.5454166532)
    #define I_C_OFFSET (-0.5403971672)

    //! 简要介绍 A、B 和 C 相的 ADC 电压偏移
    //! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
    //! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
    #define V_A_offset (0.4972865582)
    #define V_B_OFFSET (0.4930238724)
    #define V_C_OFFSET (0.4949936271)


    //! 简要介绍时钟和计时器
    秘书长的报告
    //! \brief 定义系统时钟频率、MHz
    #define USER_SYSTEM_FREQ_MHz (90.0)

    //! \brief 定义脉宽调制(PWM)频率、kHz
    //! 简单的 PWM 频率可直接在此处安全地设置为高达30KHz (在某些情况下最大值为60KHz)
    //! 简要对于更高的 PWM 频率(对于低电感、高电流纹波电机、典型值为60 KHz 以上)、建议使用 ePWM 硬件
    //! 简要介绍可调节的 ADC SOC、以抽取控制系统的 ADC 转换完成中断、或使用软件请求示例。
    //! \brief 否则,您可能会丢失中断并中断控制状态机的计时
    #define USER_PWM_FREQ_kHz (20.0)//30.0示例、典型值为8.0 - 30.0 KHz;极低电感、高速电机可能需要45-80 KHz

    //! \brief 定义允许的最大电压矢量(Vs)幅度。 该值设置的输出的最大幅度
    //! 简要介绍 ID 和 IQ PI 电流控制器。 Id 和 Iq 电流控制器输出为 Vd 和 Vq。
    //! 简要说明 Vs、Vd 和 VQ 之间的关系为:Vs = sqrt (Vd^2 + Vq^2)。 在该 FOC 控制器中
    //! \brief Vd 值设置为等于 USER_MAX_VS_MAG_USER_VD_MAG_FACTOR。 Vq = sqrt (USER_MAX_VS_MAG^2 - Vd^2)。
    //! \brief 对于 SQRT (3)/2 = 86.6%占空比时峰值为正弦波、将 USER_MAX_VS_MAG 设置为0.5。 这种情况不需要电流重构。
    //! 简要设置 USER_MAX_VS_MAG = 1/SQRT (3)= 0.5774、用于峰值为100%占空比的纯正弦波。 这种情况下(Lab10a-x)需要电流重构。
    //! \brief 设置 USER_MAX_VS_MAG = 2/3 = 0.6666以生成梯形电压波形。 这种情况下(Lab10a-x)需要电流重构。
    //! \brief 有关空间矢量过调制的信息,请参阅实验10以了解有关使 SVM 发生器能够一直运行到梯形的系统要求的详细信息。
    #define USER_MAX_VS_MAG_PU (0.5)//如果不使用电流重构技术,则设置为0.5。 有关更多信息、请查看 lab10a-x 中的模块 svgen_current。

    //! \brief 定义控制器句柄的地址
    //!
    #define USER_CTRL_Handle_ADDRESS (0x13C40)

    //! \brief 定义估算器句柄的地址
    //!
    #define USER_EST_Handle_ADDRESS (0x13840)

    //! \brief 定义直接电压(Vd)换算系数
    //!
    #define USER_VD_SF (0.95)

    //! \brief 定义脉宽调制(PWM)周期(单位为微秒)
    //! \brief 编译时间计算
    #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)


    //! \brief 抽取
    秘书长的报告
    //! \brief 定义每个 ISR 时钟节拍的 PWM 时钟节拍数
    //! 注意:有效值仅为1、2或3
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

    //! \brief 定义每个控制器时钟节拍(软件)的 ISR 节拍数(硬件)
    //! \brief 控制器时钟节拍(CTRL)是用于软件中所有时序的主时钟
    //! \brief 通常情况下、PWM 频率触发器(可由 ePWM 硬件抽取以减少开销) ADC SOC
    //! \brief ADC SOC 触发 ADC 转换完成
    //! \brief ADC 转换完成会触发 ISR
    //! \brief 这将硬件 ISR 速率与软件控制器速率相关联
    //! \brief 典型地想考虑16KHz ISR 上的某种形式的抽取(ePWM 硬件、电流或 EST)、以确保中断完成并为后台任务留出时间
    #define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) // 2示例、控制器时钟速率(CTRL)以 PWM/2运行;例如30KHz PWM、15KHz 控制

    //! \brief 定义每个电流控制器时钟节拍的控制器时钟节拍数
    //! \简要 说明控制器时钟速率与电流控制器(FOC)速率之间的关系
    #define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 1典型的正向 FOC 电流控制器(IQ/ID/IPark/SVPWM)以与 CTRL 相同的速率运行。

    //! \brief 定义每个估算器时钟节拍的控制器时钟节拍数
    //! 控制器时钟速率与估算器(FAST)速率之间的简要关系
    //! 简要取决于所需的动态性能、FAST 提供了低至1KHz 的良好结果、而更动态或更高速的应用可能需要高达15KHz 的频率
    #define USER_NUM_CTRL_TICKS_PER_EST_TICK (1) // 1个典型的 FAST 估算器以与 CTRL 相同的速率运行;

    //! \brief 定义每个速度控制器时钟节拍的控制器时钟节拍数
    //! 控制器时钟速率与速度环路速率之间的简要关系
    #define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (2)// 15 (典型值)以匹配 PWM、例如:15kHz PWM、控制器和电流环路、1KHz 速度环路

    //! \brief 定义每个轨迹时钟节拍的控制器时钟节拍数
    //! \控制器时钟速率与轨迹环路速率之间的简短关系
    //! \brief 通常与速度相同
    #define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)// 15 (典型值)以匹配 PWM、例如:10kHz 控制器和电流环路、1KHz 速度环路、1KHz 轨迹

    //! \brief 定义控制器频率、Hz
    //! \brief 编译时间计算
    #define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

    //! \brief 定义估算器频率、Hz
    //! \brief 编译时间计算
    #define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

    //! \brief 定义轨迹频率、Hz
    //! \brief 编译时间计算
    #define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

    //! \brief 定义控制器执行周期、单位为微秒
    //! \brief 编译时间计算
    #define USER_CTRL_PERIOD_USEC (USER_ISR_PERIOD_USEC * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

    //! \brief 定义控制器执行周期(秒)
    //! \brief 编译时间计算
    #define USER_CTRL_PERIOD_sec (((float_t) USER_CTRL_PERIOD_USEC/(float_t) 1000000.0)


    //! 简要限制
    秘书长的报告
    //! \brief 定义要在 Id 参考中应用的最大负电流
    //! \brief 仅用于磁场减弱、这是一个安全设置(例如防止退磁)
    //! 简要用户还必须注意、总电流幅度[sqrt (ID^2 + IQ^2)]应保持在任何机器设计规格以下
    #define USER_MAX_NEW_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)//-0.5 * USER_MOTOR_MAX_CURRENT 示例,进行调整以满足电机的安全需求

    //! \brief 定义磁通积分器的低速限值、pu
    //! \brief 这是 ForceAngle 对象处于活动状态的速度范围(CW/CCW),但仅当启用时
    //! \brief 超出此速度-或者如果已禁用- ForcAngle 将永远不会被激活,并且角度仅由 FAST 提供
    #define USER_ZEROSPEEDLIMIT (0.5/USER_IQ_FULL_SCALE_FREQ_Hz) // 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

    //! \brief 定义力角频率、Hz
    //! \brief ForceAngle 对象使用的定子矢量旋转频率
    //! \brief 可以是正的或负的
    #define USER_FORCE_ANGE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0典型强制角启动速度

    //! \brief 定义 PowerWarp 期间 Id 轨迹的最大电流斜率
    //! 简要介绍仅适用于感应电机、控制在 PowerWarp 控制下 Id 输入的变化速度
    #define USER_MAX_CURRENT_SLOW_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
    //! \brief 在运行时通过用户功能更新
    //! 简要介绍逆变器、电机、惯性和负载将限制实际加速能力
    #define USER_MAX_ACCEL_Hzps (20.0) //默认值20.0

    //! \brief 定义估算速度系统配置的最大加速度、Hz/s
    //! 仅在电机识别期间使用\brief (佣金)
    #define USER_MAX_ACCEL_EST_Hzps (5.0) //默认为5.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 定义在额定磁通估算期间要使用的 IdRated 比例
    //!
    #define USER_IDRATED_FRATE_TO_RATED_FLUX (1.0) //默认为1.0,请勿更改

    //! \brief 定义在电感估算期间要使用的 IdRated 比例
    //!
    #define USER_IDRATED_FRATE_TO_L_IDENT (1.0) //默认为1.0,请勿更改

    //! \brief 定义估算期间要使用的 IdRated 增量
    //!
    #define USER_IDRATED_DELTA (0.00002)

    //! \brief 定义在电感估算期间要使用的 SpeedMax 的小数
    //!
    #define USER_SPEEDMAX_分数_for_L_ident (1.0) //默认为1.0,请勿更改

    //! \brief 定义在电感识别期间使用的磁通比例
    //!
    #define USER_FLUX_FRA分数 (1.0) //默认为1.0,请勿更改

    //! \brief 定义用于计算 ID 参考的 PowerWarp 增益
    //! 仅限于感应电机
    #define USER_POWERWARP_GAIN (1.0) //默认为1.0,请勿更改

    //! \brief 定义 R/L 估算频率、Hz
    //! 简要介绍低电感电机的值较高、电感较高时的值较低
    //! 简要介绍电机。 这些值的范围为100Hz 至300Hz。
    #define USER_R_OVER L_EST_FREQ_Hz (300) //默认为300


    //! 简要说明极点
    秘书长的报告
    //! \brief 定义模拟电压滤波器极点位置、Hz
    //! \brief 必须与 VPH 的硬件过滤器相匹配
    #define USER_VOLTGE_FILTER_POLE_Hz (714.14)// 714.14、drv8312_revd 硬件的值

    //! \brief 定义模拟电压滤波器极点位置、rad/s
    //! \brief 编译时间计算从 Hz 到 rad/s
    #define USER_VOLTGE_FILTER_POLE_Rps (2.0 * MATH_PI * USER_VOLTGE_FILTER_POLE_Hz)

    //! \brief 定义用于电压和电流偏移估算的软件极点位置、rad/s
    //! 不应将\brief 从默认值(20.0)更改为
    #define USER_OFFSET_POLE_Rps (20.0)//默认值20.0、请勿更改

    //! \brief 定义磁通估算的软件极点位置、rad/s
    //! \brief 不应更改默认值(100.0)
    #define USER_FLUX_POLE_Rps (100.0)//默认值100.0,请勿更改

    //! \brief 定义方向滤波器的软件极点位置、rad/s
    #define USER_DIRECTION _pole (6.0)//默认为6.0,请勿更改

    //! \brief 定义速度控制滤波器的软件极点位置、rad/s
    #define USER_SPEED_POLE_Rps (100.0)//默认值100.0,请勿更改

    //! \brief 定义直流总线滤波器的软件极点位置、rad/s
    #define USER_DCBus_pole (100.0)//默认值100.0,请勿更改

    //! \brief 定义估算器的收敛因子
    //! \brief 不要更改 FAST 的默认值
    #define USER_EST_KAPPAQ (1.5)//默认为1.5,请勿更改

    秘书长的报告
    //结束定义


    //! 简要介绍用户电机和 ID 设置
    秘书长的报告

    //! \brief 定义 SpinTAC Control 的默认带宽
    //! \brief 此值应通过调整过程来确定 SpinTAC Control
    //! \brief 如果之前已确定带宽度值
    //! \brief 将其乘以20转换为带宽
    #define USER_SYSTEM_BANTANG带宽 (20.0)

    //! \brief 用唯一的名称和 ID 号定义每个电机
    // BLDC 和 SMPM 电机
    #define Estun_EMJ_04APB22 101.
    #define Anaheim_BLY172S 102.
    #define Teknic_M2310PLN04K 104.
    #define Wittenstein 网络 D_22 105.


    // IPM 电机
    //如果用户提供单独的 Ls-d、Ls-q
    //否则使用用户或识别的平均 Ls 视为 SPM
    #define Belt_Drive_垫 圈_IPM 201

    // ACIM 电机
    #define Marathing_5K33GN2A 301.

    //! \brief 取消注释编译时应包含的电机
    //! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用
    //! \brief 确定您的理想设置和参数后、请更新此处的电机部分、使其在二进制代码中可用
    //#define USER_MOTOR_Estun_EMJ_04APB22
    //#define USER_MOTOR_Teknic_M2310PLN04K
    //#define USER_MOTOR_Anaheim_BLY172S // drv8312套件中的电机,只使单个电机处于活动状态
    //#define USER_MOTOR_Belt_Drive_洗衣机_IPM
    //#define USER_MOTOR Marathing_5K33GN2A
    #define USER_MOTOR_Wittenstein 网络 D_22


    #if (USER_MOTOR== Estun_EMJ_04APB22) //名称必须与电机#define 相匹配
    #define USER_MOTOR_TYPE Motor_Type_Pm // Motor_Type_Pm (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI)
    #define USER_MOTOR_NUM_POLE_PAIRS (4) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
    #define USER_MOTOR_RR (空) //仅感应电机,否则为空
    #define USER_MOTOR_Rs (2.303403) // Y 等效电路中识别的相位到中性点电阻(欧姆、浮点)
    #define USER_MOTOR_LS_d (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_LS_q (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_RATed_VLUX (0.38) //确定转子和定子之间的总磁链(V/Hz)
    #define USER_MOTOR_磁 化电流(空) //仅感应电机,否则为空
    #define USER_MOTOR_RES_EST_CURRENT (1.0) //在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
    #define USER_MOTOR_IND_EST_CURRENT (-1.0) //在电机识别期间、用于 LS 估算的最大电流(负安培、浮点数)、只需足够的时间即可启用旋转
    #define USER_MOTOR_MAX_CURRENT (3.82) //严重:在 Id 和运行时使用、设置所提供速度 PI 控制器到 Iq 控制器的最大电流命令输出的限制
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) //在电机识别期间、最大指令速度(Hz、浮点)、额定电流~10%
    #define USER_MOTOR_ENCODER_LINES (2500.0) //电机正交编码器上的线数
    #define USER_MOTOR_MAX_SPEED_KRPM (3.0) //电机的最大速度
    #define USER_SYSTEM_INERTIA (0.02) //电机和系统的惯性、应通过 SpinTAC 速度识别进行估算
    #define USER_SYSTEM_FRICE (0.01) //电机和系统的摩擦、应通过 SpinTAC 速度识别进行估算

    #Elif (USER_MOTOR== Anaheim BLY172S)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (0.4110007)
    #define USER_MOTOR_LS_d (0.0007092811)
    #define USER_MOTOR_LS_q (0.0007092811)
    #define USER_MOTOR_RATed_VLUX (0.03279636)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (5.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (2000.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (4.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    #elif (USER_MOTOR== Teknic_M2310PLN04K)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (0.3918252)
    #define USER_MOTOR_LS_d (0.00023495)
    #define USER_MOTOR_LS_q (0.00023495)
    #define USER_MOTOR_RATed_VLUX (0.03955824)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-0.5)
    #define USER_MOTOR_MAX_CURRENT (7.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (1000.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (4.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    #Elif (USER_MOTOR==皮带驱动垫圈_IPM)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (2.832002)
    #define USER_MOTOR_LS_d (0.0115)
    #define USER_MOTOR_LS_q (0.0135)
    #define USER_MOTOR_RATed_VLUX (0.5022156)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (4.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    #Elif (USER_MOTOR== Marathing_5K33GN2A) //名称必须与电机#define 相匹配
    #define USER_MOTOR_TYPE Motor_Type_Induction // Motor_Type_PM (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI)
    #define USER_MOTOR_NUM_POLE_PAIRS (2) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
    #define USER_MOTOR_RR (5.508003) //在 Y 等效电路中确定相位到中性(欧姆、浮点数)
    #define USER_MOTOR_Rs (10.71121) //在 Y 等效电路中确定相位到中性(欧姆、浮点数)
    #define USER_MOTOR_LS_d (0.05296588) //对于感应、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_LS_q (0.05296588) //对于感应、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_RATed_VLUX (0.8165*2200/60.0)// sqrt (2/3)*额定电压(线路)/额定频率(Hz)
    #define USER_MOTOR_磁 化电流(1.378) //识别感应电机的磁化电流、否则为 NULL
    #define USER_MOTOR_RES_EST_CURRENT (0.5) //在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
    #define USER_MOTOR_IND_EST_CURRENT (空) //不用于感应
    #define USER_MOTOR_MAX_CURRENT (2.0) //严重:在 Id 和运行时使用、设置所提供速度 PI 控制器到 Iq 控制器的最大电流命令输出的限制
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (5.0) //在电机识别期间、最大指令速度(Hz、浮点)。 应始终使用5Hz 进行感应。
    #define USER_MOTOR_ENCODER_LINES (2048.0) //电机正交编码器上的线数
    #define USER_MOTOR_MAX_SPEED_KRPM (1.725) //电机的最大速度
    #define USER_SYSTEM_INERTIA (0.02) //电机和系统的惯性、应通过 SpinTAC 速度识别进行估算
    #define USER_SYSTEM_FRICE (0.01) //电机和系统的摩擦、应通过 SpinTAC 速度识别进行估算

    #Elif (USER_MOTOR=Wittenstein 网络 D_22)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (2.611)
    #define USER_MOTOR_LS_d (0.0007092811)
    #define USER_MOTOR_LS_q (0.0007092811)
    #define USER_MOTOR_RATed_VLUX (0.03279636)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (0.168)
    #define USER_MOTOR_IND_EST_CURRENT (-0.168)
    #define USER_MOTOR_MAX_CURRENT (1.9)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (16384.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (5.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    其他
    错误未指定电机类型
    #endif

    #ifndef USER_MOTOR
    user.h 中未定义#ERROR 电机
    #endif

    #ifndef USER_MOTOR_TYPE
    错误:user.h 中未定义电机类型
    #endif

    #ifndef USER_MOTOR_NUM_POLE_PAIRS
    user.h 中未定义电机极对的#ERROR 数量
    #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_RATGE_FLUX
    #ERROR user.h 中未定义电机的额定磁通
    #endif

    #ifndef USER_MOTOR_磁 化电流
    #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


    秘书长的报告
    //函数


    //! \brief 设置用户参数值
    //! \param[in] pUserParams 指向用户参数结构的指针
    extern void user_setParams (user_Params * pUserParams);


    //! \brief 检查用户参数值中的错误
    //! \param[in] pUserParams 指向用户参数结构的指针
    extern void USER_checkForErrors (USER_Params * pUserParams);


    //! \brief 获取用户参数中的错误代码
    //! \param[in] pUserParams 指向用户参数结构的指针
    //! 返回 错误代码
    extern USER_ErrorCode_e USER_getErrorCode (USER_Params * pUserParams);


    //! \brief 设置用户参数中的错误代码
    //! \param[in] pUserParams 指向用户参数结构的指针
    //! \param[in]错误代码
    extern void USER_setErrorCode (USER_Params * pUserParams、const USER_ErrorCode_e errorCode);


    //! \brief 使用正确的 Q 格式重新计算电感
    //! \param[in]句柄 控制器(CTRL)手柄
    extern void USER_softwareUpdate1p6 (CTRL_Handle handle);


    //! \brief 更新 Id 和 Iq PI 增益
    //! \param[in]句柄 控制器(CTRL)手柄
    extern void USER_calcPIGains (CTRL_Handle handle);


    //! \brief 计算将 Ld、Lq、Id 和 Iq 创建的转矩从标么值转换为 Nm 所需的换算系数
    //! 返回 将转矩从(LD - LQ)* Id * Iq 从标么值转换为 Nm 时所使用的换算系数、IQ24格式
    extern _iq user_computeTorte_LS_ID_IQ_pu_TO_NM_SF (void);


    //! \brief 计算将磁通和 Iq 生成的转矩从标么值转换为 Nm 所需的换算系数
    //! 返回 用于将磁通* Iq 中的转矩从标么值转换为 Nm 的换算系数、IQ24格式
    extern _iq user_computeTorte_Flux_IQ_pu_TO_Nm_SF (void);


    //! \brief 计算将标幺值转换为 Wb 所需的换算系数
    //! 返回 以 IQ24格式将磁通从标么值转换为 Wb 格式的磁通的换算系数
    extern _iq user_computeFlux_pu_TO_WB_SF (void);


    //! \brief 计算将标么值转换为 V/Hz 所需的换算系数
    //! 返回 以 IQ24格式将磁通从标么值转换为 V/Hz 的换算系数
    extern _iq user_computeFlux_pu_TO_VpHz_SF (void);


    //! \brief 根据作为参数发送的换算系数、以 WB 或 V/Hz 计算磁通
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in] SF 用于将磁通从标么值转换为 Wb 或 V/Hz 的换算系数
    //! 返回 以 iQ24格式显示的磁通量、取决于作为参数发送的换算系数
    extern _iq user_computeFlux (CTRL_Handle handle、const _IQ SF);


    //! \brief 以 Nm 为单位计算扭矩
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in]扭矩_磁通_SF 用于将转矩从(LD - LQ)* Id * Iq 从标么值转换为 Nm 的换算系数
    //! \param[in]扭矩_Ls_SF 用于将磁通* Iq 中的扭矩从标么值转换为 Nm 的换算系数
    //! 返回 以 Nm 为单位的扭矩、IQ24格式
    extern _iq user_computeTorte_Nm (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


    //! \brief 计算 lbin 中的扭矩
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in]扭矩_磁通_SF 将转矩从(LD - LQ)* Id * Iq 从标么值转换为 lbin 的换算系数
    //! \param[in]扭矩_Ls_SF 将磁通* Iq 中的扭矩从标么值转换为 lbin 的换算系数
    //! 返回 以 lbin 表示的扭矩、IQ24格式
    extern _iq user_computeTorte_lbin (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


    #ifdef __cplusplus

    #endif // extern "C"

    //@}//分组
    #endif //_user_H_定义结束
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、

    我的直流总线电压为44伏。 gMotorVars.VdcBus_kV 0.0433。
    我可以使用 lab12b 以最大速度旋转电机。

    我进行了一些测试:

    PosStepInt_MRev = 400 ->这将进行100圈。
    2、MaxVel_KRPM = 0.5
    3. RunPositionProfile = 1 ->开始移动
    4.使用 MaxAccel_krpmps 提高电机速度。
    5.当它达到速度0.5时,它保持速度。
    6、现在转弯了。
    6、电机速度会随着 MaxDecel_krpmps 的增加而降低。
    7、100圈完成

    MaxVel_krpm = 5.0时的相同测试。
    电机未达到速度5.0。
    它保持在1.2 A 的速度。
    为什么它没有达到速度5.0?

    是否有速度限制?

    谢谢 Alex
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的 user.h

    #ifndef _USER_H_
    #define _USER_H_
    /*-版权所有-、BSD
    *版权所有(c) 2012、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *--/版权--*/

    //! \file solutions/instaspin_MOTION/boards/drv8312kit_revD/F28x/f2806xM/src/user.h
    //! \brief 包含用于 CTRL、HAL 和 EST 模块的用户初始化数据的公共接口
    //!
    //! (C)版权所有2012、Texas Instruments、Inc.


    秘书长的报告
    //包括

    //模块
    #include "sw/modules/types/src/types.h"
    #include "sw/modules/motor/src/32b/motor.h"
    #include "sw/modules/est/src/32b/est.h"
    #include "sw/modules/est/src/est_states.h"
    #include "sw/modules/est/src/est_Flux_States.h"
    #include "sw/modules/est/src/est_Ls_states.h"
    #include "sw/modules/est/src/est_rs_states.h"
    #include "sw/modules/ctrl/src/32b/ctrl_obj.h"


    //平台
    #include "sw/modules/fast/src/32b/userParams.h"

    //!
    //!
    //! 定义组用户用户
    //!
    //@


    #ifdef __cplusplus
    extern "C"{
    #endif

    秘书长的报告
    //定义


    //! 简要介绍电流和电压
    秘书长的报告
    //! \brief 定义 IQ 变量的满量程频率、Hz
    //! \brief 根据与该值的比率将所有频率转换为(pu)
    //! \brief 此值必须大于预期的电机最大速度
    ifndef QEP
    #define USER_IQ_FULL_SCALE_FREQ_Hz (800.0)// 800示例、此示例具有缓冲器、用于8极6 krpm 电机在场强减弱时运行至10 krpm;Hz =(RPM *极)/ 120
    其他
    #define USER_IQ_FULL_SCALE_FREQ_Hz (USER_MOTOR_NUM_POLE_PAIRS / 0.008)//(4/0.008)= 500个示例、其中包含用于8极6 krpm 电机运行至6 krpm 的缓冲器;Hz =(RPM *极)/ 120
    #endif

    //! \brief 定义系统内 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 警告:否则,该值可能会饱和并翻转,从而导致值不准确
    //! \brief 警告:此值通常大于测得的最大 ADC 值、尤其是在高反电动势电机的运行速度高于额定速度时
    //! 简要警告:如果您知道反电动势常数的值、并且知道由于磁场减弱而以多种速度运行、请确保将此值设置为高于预期反电动势电压
    //! 简要建议从比 USER_ADC_FULL_SCALE_VOLTGE_V 大~3倍的值开始、如果 Bemf 计算可能超过这些限制、则增加到4-5倍
    //! \brief 此值也用于计算最小磁通值:USER_IQ_FULL_SCALE_VOLTAGE_V/USER_EST_FREQ_Hz/0.7
    #define USER_IQ_FULL_SCALE_VOLTAGE_V (44.0)//针对 drv8312_revd 典型用法和 Anaheim 电机的24.0示例

    //! \brief 定义 AD 转换器输入端的最大电压
    //! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
    //! 简要说明硬件相关、这应基于 ADC 输入的电压感应和缩放
    #define USER_ADC_FULL_SCALE_VOLTGE_V (66.32) // 66.32 drv8312_revd 电压调节

    //! \brief 定义系统的电压换算系数
    //! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
    #define USER_VOLTGE_SF ((float_t)((USER_ADC_FULL_SCALE_VOLTAGE_V)/(USER_IQ_FULL_SCALE_VOLTAGE_V))

    //! \brief 定义 IQ 变量 A 的满量程电流
    //! \brief 根据与该值的比率将所有电流转换为(pu)
    //! \brief 警告:此值必须大于预期的电机最大电流读数、否则读数将回滚至0、从而导致控制问题
    #define USER_IQ_FULL_SCALE_CURRENT_A (8.0)// ddrv8312_revd 典型用法的10.0示例

    //! \brief 定义 AD 转换器上的最大电流
    //! 简要介绍将由最大 ADC 输入(3.3V)和转换(0FFFh)表示的值
    //! 简要说明硬件相关、这应基于 ADC 输入的电流感应和缩放
    #define USER_ADC_FULL_SCALE_CURRENT_A (8.65) // 17.30 drv8312_revd 电流调节

    //! \brief 定义系统的当前换算系数
    //! 针对整个系统中使用的换算系数(比率)进行的编译时间简短计算
    #define USER_CURRENT_SF ((float_t)((USER_ADC_FULL_SCALE_CURRENT_A)/(USER_IQ_FULL_SCALE_CURRENT_A))

    //! \brief 定义使用的电流传感器数量
    //! 由硬件功能定义的\brief
    //! \brief 可以是(2)或(3)
    #define USER_NUM_CURRENT_SENSORS (3)//为在全速范围内实现最佳性能,可实现100%占空比

    //! \brief 定义电压(相位)传感器的数量
    //! 简要必须为(3)
    #define USER_NUM_VOLTGE_SENSORS (3)//需要3个

    //! 简要介绍 A、B 和 C 相的 ADC 电流偏移
    //! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
    //! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
    #define I_A_offset (-0.5407835841)
    #define I_B_OFFSET (-0.5454166532)
    #define I_C_OFFSET (-0.5403971672)

    //! 简要介绍 A、B 和 C 相的 ADC 电压偏移
    //! 简要说明与硬件相关的一次性、但校准也可以在运行时完成
    //! \brief 在初始电路板校准后,这些值应针对您的特定硬件进行更新,以便在编译二进制文件后可以加载到控制器中
    #define V_A_offset (0.4972865582)
    #define V_B_OFFSET (0.4930238724)
    #define V_C_OFFSET (0.4949936271)


    //! 简要介绍时钟和计时器
    秘书长的报告
    //! \brief 定义系统时钟频率、MHz
    #define USER_SYSTEM_FREQ_MHz (90.0)

    //! \brief 定义脉宽调制(PWM)频率、kHz
    //! 简单的 PWM 频率可直接在此处安全地设置为高达30KHz (在某些情况下最大值为60KHz)
    //! 简要对于更高的 PWM 频率(对于低电感、高电流纹波电机、典型值为60 KHz 以上)、建议使用 ePWM 硬件
    //! 简要介绍可调节的 ADC SOC、以抽取控制系统的 ADC 转换完成中断、或使用软件请求示例。
    //! \brief 否则,您可能会丢失中断并中断控制状态机的计时
    #define USER_PWM_FREQ_kHz (20.0)//30.0示例、典型值为8.0 - 30.0 KHz;极低电感、高速电机可能需要45-80 KHz

    //! \brief 定义允许的最大电压矢量(Vs)幅度。 该值设置的输出的最大幅度
    //! 简要介绍 ID 和 IQ PI 电流控制器。 Id 和 Iq 电流控制器输出为 Vd 和 Vq。
    //! 简要说明 Vs、Vd 和 VQ 之间的关系为:Vs = sqrt (Vd^2 + Vq^2)。 在该 FOC 控制器中
    //! \brief Vd 值设置为等于 USER_MAX_VS_MAG_USER_VD_MAG_FACTOR。 Vq = sqrt (USER_MAX_VS_MAG^2 - Vd^2)。
    //! \brief 对于 SQRT (3)/2 = 86.6%占空比时峰值为正弦波、将 USER_MAX_VS_MAG 设置为0.5。 这种情况不需要电流重构。
    //! 简要设置 USER_MAX_VS_MAG = 1/SQRT (3)= 0.5774、用于峰值为100%占空比的纯正弦波。 这种情况下(Lab10a-x)需要电流重构。
    //! \brief 设置 USER_MAX_VS_MAG = 2/3 = 0.6666以生成梯形电压波形。 这种情况下(Lab10a-x)需要电流重构。
    //! \brief 有关空间矢量过调制的信息,请参阅实验10以了解有关使 SVM 发生器能够一直运行到梯形的系统要求的详细信息。
    #define USER_MAX_VS_MAG_PU (0.5)//如果不使用电流重构技术,则设置为0.5。 有关更多信息、请查看 lab10a-x 中的模块 svgen_current。

    //! \brief 定义控制器句柄的地址
    //!
    #define USER_CTRL_Handle_ADDRESS (0x13C40)

    //! \brief 定义估算器句柄的地址
    //!
    #define USER_EST_Handle_ADDRESS (0x13840)

    //! \brief 定义直接电压(Vd)换算系数
    //!
    #define USER_VD_SF (0.95)

    //! \brief 定义脉宽调制(PWM)周期(单位为微秒)
    //! \brief 编译时间计算
    #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)


    //! \brief 抽取
    秘书长的报告
    //! \brief 定义每个 ISR 时钟节拍的 PWM 时钟节拍数
    //! 注意:有效值仅为1、2或3
    #define USER_NUM_PWM_TICKS_PER_ISR_TICK (3)

    //! \brief 定义每个控制器时钟节拍(软件)的 ISR 节拍数(硬件)
    //! \brief 控制器时钟节拍(CTRL)是用于软件中所有时序的主时钟
    //! \brief 通常情况下、PWM 频率触发器(可由 ePWM 硬件抽取以减少开销) ADC SOC
    //! \brief ADC SOC 触发 ADC 转换完成
    //! \brief ADC 转换完成会触发 ISR
    //! \brief 这将硬件 ISR 速率与软件控制器速率相关联
    //! \brief 典型地想考虑16KHz ISR 上的某种形式的抽取(ePWM 硬件、电流或 EST)、以确保中断完成并为后台任务留出时间
    #define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1) // 2示例、控制器时钟速率(CTRL)以 PWM/2运行;例如30KHz PWM、15KHz 控制

    //! \brief 定义每个电流控制器时钟节拍的控制器时钟节拍数
    //! \简要 说明控制器时钟速率与电流控制器(FOC)速率之间的关系
    #define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1) // 1典型的正向 FOC 电流控制器(IQ/ID/IPark/SVPWM)以与 CTRL 相同的速率运行。

    //! \brief 定义每个估算器时钟节拍的控制器时钟节拍数
    //! 控制器时钟速率与估算器(FAST)速率之间的简要关系
    //! 简要取决于所需的动态性能、FAST 提供了低至1KHz 的良好结果、而更动态或更高速的应用可能需要高达15KHz 的频率
    #define USER_NUM_CTRL_TICKS_PER_EST_TICK (1) // 1个典型的 FAST 估算器以与 CTRL 相同的速率运行;

    //! \brief 定义每个速度控制器时钟节拍的控制器时钟节拍数
    //! 控制器时钟速率与速度环路速率之间的简要关系
    #define USER_NUM_CTRL_TICKS_PER_SPEED_TICK (2)// 15 (典型值)以匹配 PWM、例如:15kHz PWM、控制器和电流环路、1KHz 速度环路

    //! \brief 定义每个轨迹时钟节拍的控制器时钟节拍数
    //! \控制器时钟速率与轨迹环路速率之间的简短关系
    //! \brief 通常与速度相同
    #define USER_NUM_CTRL_TICKS_PER_TRAJ_TICK (15)// 15 (典型值)以匹配 PWM、例如:10kHz 控制器和电流环路、1KHz 速度环路、1KHz 轨迹

    //! \brief 定义控制器频率、Hz
    //! \brief 编译时间计算
    #define USER_CTRL_FREQ_Hz (uint_least32_t)(USER_ISR_FREQ_Hz/USER_NUM_ISR_TICKS_PER_CTRL_TICK)

    //! \brief 定义估算器频率、Hz
    //! \brief 编译时间计算
    #define USER_EST_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_EST_TICK)

    //! \brief 定义轨迹频率、Hz
    //! \brief 编译时间计算
    #define USER_TRAJ_FREQ_Hz (uint_least32_t)(USER_CTRL_FREQ_Hz/USER_NUM_CTRL_TICKS_PER_TRAJ_TICK)

    //! \brief 定义控制器执行周期、单位为微秒
    //! \brief 编译时间计算
    #define USER_CTRL_PERIOD_USEC (USER_ISR_PERIOD_USEC * USER_NUM_ISR_TICKS_PER_CTRL_TICK)

    //! \brief 定义控制器执行周期(秒)
    //! \brief 编译时间计算
    #define USER_CTRL_PERIOD_sec (((float_t) USER_CTRL_PERIOD_USEC/(float_t) 1000000.0)


    //! 简要限制
    秘书长的报告
    //! \brief 定义要在 Id 参考中应用的最大负电流
    //! \brief 仅用于磁场减弱、这是一个安全设置(例如防止退磁)
    //! 简要用户还必须注意、总电流幅度[sqrt (ID^2 + IQ^2)]应保持在任何机器设计规格以下
    #define USER_MAX_NEW_ID_REF_CURRENT_A (-0.5 * USER_MOTOR_MAX_CURRENT)//-0.5 * USER_MOTOR_MAX_CURRENT 示例,进行调整以满足电机的安全需求

    //! \brief 定义磁通积分器的低速限值、pu
    //! \brief 这是 ForceAngle 对象处于活动状态的速度范围(CW/CCW),但仅当启用时
    //! \brief 超出此速度-或者如果已禁用- ForcAngle 将永远不会被激活,并且角度仅由 FAST 提供
    #define USER_ZEROSPEEDLIMIT (0.5/USER_IQ_FULL_SCALE_FREQ_Hz) // 0.002pu、1-5 Hz 典型值;Hz = USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz

    //! \brief 定义力角频率、Hz
    //! \brief ForceAngle 对象使用的定子矢量旋转频率
    //! \brief 可以是正的或负的
    #define USER_FORCE_ANGE_FREQ_Hz (2.0 * USER_ZEROSPEEDLIMIT * USER_IQ_FULL_SCALE_FREQ_Hz) // 1.0典型强制角启动速度

    //! \brief 定义 PowerWarp 期间 Id 轨迹的最大电流斜率
    //! 简要介绍仅适用于感应电机、控制在 PowerWarp 控制下 Id 输入的变化速度
    #define USER_MAX_CURRENT_SLOW_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
    //! \brief 在运行时通过用户功能更新
    //! 简要介绍逆变器、电机、惯性和负载将限制实际加速能力
    #define USER_MAX_ACCEL_Hzps (20.0) //默认值20.0

    //! \brief 定义估算速度系统配置的最大加速度、Hz/s
    //! 仅在电机识别期间使用\brief (佣金)
    #define USER_MAX_ACCEL_EST_Hzps (5.0) //默认为5.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 定义在额定磁通估算期间要使用的 IdRated 比例
    //!
    #define USER_IDRATED_FRATE_TO_RATED_FLUX (1.0) //默认为1.0,请勿更改

    //! \brief 定义在电感估算期间要使用的 IdRated 比例
    //!
    #define USER_IDRATED_FRATE_TO_L_IDENT (1.0) //默认为1.0,请勿更改

    //! \brief 定义估算期间要使用的 IdRated 增量
    //!
    #define USER_IDRATED_DELTA (0.00002)

    //! \brief 定义在电感估算期间要使用的 SpeedMax 的小数
    //!
    #define USER_SPEEDMAX_分数_for_L_ident (1.0) //默认为1.0,请勿更改

    //! \brief 定义在电感识别期间使用的磁通比例
    //!
    #define USER_FLUX_FRA分数 (1.0) //默认为1.0,请勿更改

    //! \brief 定义用于计算 ID 参考的 PowerWarp 增益
    //! 仅限于感应电机
    #define USER_POWERWARP_GAIN (1.0) //默认为1.0,请勿更改

    //! \brief 定义 R/L 估算频率、Hz
    //! 简要介绍低电感电机的值较高、电感较高时的值较低
    //! 简要介绍电机。 这些值的范围为100Hz 至300Hz。
    #define USER_R_OVER L_EST_FREQ_Hz (300) //默认为300


    //! 简要说明极点
    秘书长的报告
    //! \brief 定义模拟电压滤波器极点位置、Hz
    //! \brief 必须与 VPH 的硬件过滤器相匹配
    #define USER_VOLTGE_FILTER_POLE_Hz (714.14)// 714.14、drv8312_revd 硬件的值

    //! \brief 定义模拟电压滤波器极点位置、rad/s
    //! \brief 编译时间计算从 Hz 到 rad/s
    #define USER_VOLTGE_FILTER_POLE_Rps (2.0 * MATH_PI * USER_VOLTGE_FILTER_POLE_Hz)

    //! \brief 定义用于电压和电流偏移估算的软件极点位置、rad/s
    //! 不应将\brief 从默认值(20.0)更改为
    #define USER_OFFSET_POLE_Rps (20.0)//默认值20.0、请勿更改

    //! \brief 定义磁通估算的软件极点位置、rad/s
    //! \brief 不应更改默认值(100.0)
    #define USER_FLUX_POLE_Rps (100.0)//默认值100.0,请勿更改

    //! \brief 定义方向滤波器的软件极点位置、rad/s
    #define USER_DIRECTION _pole (6.0)//默认为6.0,请勿更改

    //! \brief 定义速度控制滤波器的软件极点位置、rad/s
    #define USER_SPEED_POLE_Rps (100.0)//默认值100.0,请勿更改

    //! \brief 定义直流总线滤波器的软件极点位置、rad/s
    #define USER_DCBus_pole (100.0)//默认值100.0,请勿更改

    //! \brief 定义估算器的收敛因子
    //! \brief 不要更改 FAST 的默认值
    #define USER_EST_KAPPAQ (1.5)//默认为1.5,请勿更改

    秘书长的报告
    //结束定义


    //! 简要介绍用户电机和 ID 设置
    秘书长的报告

    //! \brief 定义 SpinTAC Control 的默认带宽
    //! \brief 此值应通过调整过程来确定 SpinTAC Control
    //! \brief 如果之前已确定带宽度值
    //! \brief 将其乘以20转换为带宽
    #define USER_SYSTEM_BANTANG带宽 (20.0)

    //! \brief 用唯一的名称和 ID 号定义每个电机
    // BLDC 和 SMPM 电机
    #define Estun_EMJ_04APB22 101.
    #define Anaheim_BLY172S 102.
    #define Teknic_M2310PLN04K 104.
    #define Wittenstein 网络 D_22 105.


    // IPM 电机
    //如果用户提供单独的 Ls-d、Ls-q
    //否则使用用户或识别的平均 Ls 视为 SPM
    #define Belt_Drive_垫 圈_IPM 201

    // ACIM 电机
    #define Marathing_5K33GN2A 301.

    //! \brief 取消注释编译时应包含的电机
    //! \brief 然后、这些电机 ID 设置和电机参数可供控制系统使用
    //! \brief 确定您的理想设置和参数后、请更新此处的电机部分、使其在二进制代码中可用
    //#define USER_MOTOR_Estun_EMJ_04APB22
    //#define USER_MOTOR_Teknic_M2310PLN04K
    //#define USER_MOTOR_Anaheim_BLY172S // drv8312套件中的电机,只使单个电机处于活动状态
    //#define USER_MOTOR_Belt_Drive_洗衣机_IPM
    //#define USER_MOTOR Marathing_5K33GN2A
    #define USER_MOTOR_Wittenstein 网络 D_22


    #if (USER_MOTOR== Estun_EMJ_04APB22) //名称必须与电机#define 相匹配
    #define USER_MOTOR_TYPE Motor_Type_Pm // Motor_Type_Pm (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI)
    #define USER_MOTOR_NUM_POLE_PAIRS (4) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
    #define USER_MOTOR_RR (空) //仅感应电机,否则为空
    #define USER_MOTOR_Rs (2.303403) // Y 等效电路中识别的相位到中性点电阻(欧姆、浮点)
    #define USER_MOTOR_LS_d (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_LS_q (0.008464367)//对于 PM、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_RATed_VLUX (0.38) //确定转子和定子之间的总磁链(V/Hz)
    #define USER_MOTOR_磁 化电流(空) //仅感应电机,否则为空
    #define USER_MOTOR_RES_EST_CURRENT (1.0) //在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
    #define USER_MOTOR_IND_EST_CURRENT (-1.0) //在电机识别期间、用于 LS 估算的最大电流(负安培、浮点数)、只需足够的时间即可启用旋转
    #define USER_MOTOR_MAX_CURRENT (3.82) //严重:在 Id 和运行时使用、设置所提供速度 PI 控制器到 Iq 控制器的最大电流命令输出的限制
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) //在电机识别期间、最大指令速度(Hz、浮点)、额定电流~10%
    #define USER_MOTOR_ENCODER_LINES (2500.0) //电机正交编码器上的线数
    #define USER_MOTOR_MAX_SPEED_KRPM (3.0) //电机的最大速度
    #define USER_SYSTEM_INERTIA (0.02) //电机和系统的惯性、应通过 SpinTAC 速度识别进行估算
    #define USER_SYSTEM_FRICE (0.01) //电机和系统的摩擦、应通过 SpinTAC 速度识别进行估算

    #Elif (USER_MOTOR== Anaheim BLY172S)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (0.4110007)
    #define USER_MOTOR_LS_d (0.0007092811)
    #define USER_MOTOR_LS_q (0.0007092811)
    #define USER_MOTOR_RATed_VLUX (0.03279636)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (5.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (2000.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (4.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    #elif (USER_MOTOR== Teknic_M2310PLN04K)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (0.3918252)
    #define USER_MOTOR_LS_d (0.00023495)
    #define USER_MOTOR_LS_q (0.00023495)
    #define USER_MOTOR_RATed_VLUX (0.03955824)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-0.5)
    #define USER_MOTOR_MAX_CURRENT (7.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (1000.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (4.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    #Elif (USER_MOTOR==皮带驱动垫圈_IPM)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (2.832002)
    #define USER_MOTOR_LS_d (0.0115)
    #define USER_MOTOR_LS_q (0.0135)
    #define USER_MOTOR_RATed_VLUX (0.5022156)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (1.0)
    #define USER_MOTOR_IND_EST_CURRENT (-1.0)
    #define USER_MOTOR_MAX_CURRENT (4.0)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)

    #Elif (USER_MOTOR== Marathing_5K33GN2A) //名称必须与电机#define 相匹配
    #define USER_MOTOR_TYPE Motor_Type_Induction // Motor_Type_PM (全部同步:BLDC、PMSM、SMPM、IPM)或 Motor_Type_Induction (异步 ACI)
    #define USER_MOTOR_NUM_POLE_PAIRS (2) //对、而不是总极数。 仅用于根据转子 Hz 计算用户 RPM
    #define USER_MOTOR_RR (5.508003) //在 Y 等效电路中确定相位到中性(欧姆、浮点数)
    #define USER_MOTOR_Rs (10.71121) //在 Y 等效电路中确定相位到中性(欧姆、浮点数)
    #define USER_MOTOR_LS_d (0.05296588) //对于感应、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_LS_q (0.05296588) //对于感应、确定的平均定子电感(亨利、浮点数)
    #define USER_MOTOR_RATed_VLUX (0.8165*2200/60.0)// sqrt (2/3)*额定电压(线路)/额定频率(Hz)
    #define USER_MOTOR_磁 化电流(1.378) //识别感应电机的磁化电流、否则为 NULL
    #define USER_MOTOR_RES_EST_CURRENT (0.5) //在电机识别期间、用于 Rs 估算的最大电流(安培、浮点数)、10-20%额定电流
    #define USER_MOTOR_IND_EST_CURRENT (空) //不用于感应
    #define USER_MOTOR_MAX_CURRENT (2.0) //严重:在 Id 和运行时使用、设置所提供速度 PI 控制器到 Iq 控制器的最大电流命令输出的限制
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (5.0) //在电机识别期间、最大指令速度(Hz、浮点)。 应始终使用5Hz 进行感应。
    #define USER_MOTOR_ENCODER_LINES (2048.0) //电机正交编码器上的线数
    #define USER_MOTOR_MAX_SPEED_KRPM (1.725) //电机的最大速度
    #define USER_SYSTEM_INERTIA (0.02) //电机和系统的惯性、应通过 SpinTAC 速度识别进行估算
    #define USER_SYSTEM_FRICE (0.01) //电机和系统的摩擦、应通过 SpinTAC 速度识别进行估算

    #Elif (USER_MOTOR=Wittenstein 网络 D_22)
    #define USER_MOTOR_TYPE Motor_Type_Pm
    #define USER_MOTOR_NUM_POLE_PAIRS (4)
    #define USER_MOTOR_RR (空)
    #define USER_MOTOR_Rs (2.611)
    #define USER_MOTOR_LS_d (0.0007092811)
    #define USER_MOTOR_LS_q (0.0007092811)
    #define USER_MOTOR_RATed_VLUX (0.03279636)
    #define USER_MOTOR_磁 化电流(空)
    #define USER_MOTOR_RES_EST_CURRENT (0.168)
    #define USER_MOTOR_IND_EST_CURRENT (-0.168)
    #define USER_MOTOR_MAX_CURRENT (1.9)
    #define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0)
    #define USER_MOTOR_ENCODER_LINES (16384.0)
    #define USER_MOTOR_MAX_SPEED_KRPM (5.0)
    #define USER_SYSTEM_INERTIA (0.02)
    #define USER_SYSTEM_FRICE (0.01)

    其他
    错误未指定电机类型
    #endif

    #ifndef USER_MOTOR
    user.h 中未定义#ERROR 电机
    #endif

    #ifndef USER_MOTOR_TYPE
    错误:user.h 中未定义电机类型
    #endif

    #ifndef USER_MOTOR_NUM_POLE_PAIRS
    user.h 中未定义电机极对的#ERROR 数量
    #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_RATGE_FLUX
    #ERROR user.h 中未定义电机的额定磁通
    #endif

    #ifndef USER_MOTOR_磁 化电流
    #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


    秘书长的报告
    //函数


    //! \brief 设置用户参数值
    //! \param[in] pUserParams 指向用户参数结构的指针
    extern void user_setParams (user_Params * pUserParams);


    //! \brief 检查用户参数值中的错误
    //! \param[in] pUserParams 指向用户参数结构的指针
    extern void USER_checkForErrors (USER_Params * pUserParams);


    //! \brief 获取用户参数中的错误代码
    //! \param[in] pUserParams 指向用户参数结构的指针
    //! 返回 错误代码
    extern USER_ErrorCode_e USER_getErrorCode (USER_Params * pUserParams);


    //! \brief 设置用户参数中的错误代码
    //! \param[in] pUserParams 指向用户参数结构的指针
    //! \param[in]错误代码
    extern void USER_setErrorCode (USER_Params * pUserParams、const USER_ErrorCode_e errorCode);


    //! \brief 使用正确的 Q 格式重新计算电感
    //! \param[in]句柄 控制器(CTRL)手柄
    extern void USER_softwareUpdate1p6 (CTRL_Handle handle);


    //! \brief 更新 Id 和 Iq PI 增益
    //! \param[in]句柄 控制器(CTRL)手柄
    extern void USER_calcPIGains (CTRL_Handle handle);


    //! \brief 计算将 Ld、Lq、Id 和 Iq 创建的转矩从标么值转换为 Nm 所需的换算系数
    //! 返回 将转矩从(LD - LQ)* Id * Iq 从标么值转换为 Nm 时所使用的换算系数、IQ24格式
    extern _iq user_computeTorte_LS_ID_IQ_pu_TO_NM_SF (void);


    //! \brief 计算将磁通和 Iq 生成的转矩从标么值转换为 Nm 所需的换算系数
    //! 返回 用于将磁通* Iq 中的转矩从标么值转换为 Nm 的换算系数、IQ24格式
    extern _iq user_computeTorte_Flux_IQ_pu_TO_Nm_SF (void);


    //! \brief 计算将标幺值转换为 Wb 所需的换算系数
    //! 返回 以 IQ24格式将磁通从标么值转换为 Wb 格式的磁通的换算系数
    extern _iq user_computeFlux_pu_TO_WB_SF (void);


    //! \brief 计算将标么值转换为 V/Hz 所需的换算系数
    //! 返回 以 IQ24格式将磁通从标么值转换为 V/Hz 的换算系数
    extern _iq user_computeFlux_pu_TO_VpHz_SF (void);


    //! \brief 根据作为参数发送的换算系数、以 WB 或 V/Hz 计算磁通
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in] SF 用于将磁通从标么值转换为 Wb 或 V/Hz 的换算系数
    //! 返回 以 iQ24格式显示的磁通量、取决于作为参数发送的换算系数
    extern _iq user_computeFlux (CTRL_Handle handle、const _IQ SF);


    //! \brief 以 Nm 为单位计算扭矩
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in]扭矩_磁通_SF 用于将转矩从(LD - LQ)* Id * Iq 从标么值转换为 Nm 的换算系数
    //! \param[in]扭矩_Ls_SF 用于将磁通* Iq 中的扭矩从标么值转换为 Nm 的换算系数
    //! 返回 以 Nm 为单位的扭矩、IQ24格式
    extern _iq user_computeTorte_Nm (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


    //! \brief 计算 lbin 中的扭矩
    //! \param[in]句柄 控制器(CTRL)手柄
    //! \param[in]扭矩_磁通_SF 将转矩从(LD - LQ)* Id * Iq 从标么值转换为 lbin 的换算系数
    //! \param[in]扭矩_Ls_SF 将磁通* Iq 中的扭矩从标么值转换为 lbin 的换算系数
    //! 返回 以 lbin 表示的扭矩、IQ24格式
    extern _iq user_computeTorte_lbin (CTRL_Handle handle、const _IQ Torture_Flux_SF、const _IQ Torture_Ls_SF);


    #ifdef __cplusplus

    #endif // extern "C"

    //@}//分组
    #endif //_user_H_定义结束
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Alex、

    如果您增加位置阶跃、速度是否也会增加?

    如果您增加 AccelLimit 和 DecelLimit、该怎么办?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Adam:

    度假回来
    感谢您的回复。

    我已将位置阶跃设置为最大值、但速度不会增加。
    当我将 MaxAccel_krpmps 和 MaxDecel_krpmps 设置为更高的值(4.0)时
    当 MaxVel_krpm = 5.0时、我可以使电机旋转高达5.0。

    当我将 MaxAccel_krpmps 和 MaxDecel_krpmps 设置为较低的值(0.2)以获得
    斜坡最大速度约为1.2。
    当电机以1.2旋转时、现在电机将执行以下操作。
    它每秒停止并连续旋转。
    在 I 之后、电机斜降、然后停止。

    我不知道哪个上下文将 MaxAccel_krpmps / MaxDecel_krpmps 更改为 MaxVel_kRPM。
    当(MaxAccel_krpmps / MaxDecel_krpmps)
    具有较低的斜坡值。
    我知道位置阶跃值必须足够大才能达到速度。

    您能解释一下吗?

    谢谢 Adam、

    Alex
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SpinTAC Move 是基于约束的系统配置生成器、因此更改其中一个限值将影响整体系统配置。  因此、无法保证系统配置将达到您的最大速度、加速度或减速度。  

    根据您的位置阶跃、当您降低加速度时、这将限制最大速度、因为系统配置发生器需要能够根据您的限制将速度减至0速度、而不会超过位置阶跃。  因此、当加速度降低时、最大速度会降低、这一点我并不感到意外。  以较低的加速度获得较高速度的唯一方法是增加位置阶跃。  但即使如此、根据配置文件的结构、位置阶跃也需要大幅增加。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Adam:

    我很清楚、我的结束位置必须足够大、以便完全可以达到我的结束速度。
    我已将结束位置设置为非常高的值、但电机没有达到我设置的速度(MaxVel_KRPM)。
    当我将 MaxAccel_krpmps 设置为更高的值时、我可以达到速度。

    您能解释一下为什么它不起作用吗?

    谢谢 Alex
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Alex、

    在进行运动规划时进行位置控制时、所有约束都会被约束。  最大速度取决于加速度和结束位置。  由于您的行程范围有限、因此在不超过目标的情况下达到速度的能力有限。  如果您使用 st 曲线或 s 曲线、则考虑急动会进一步影响该曲线。

    此外、为了使系统配置发生器尽可能通用、同时考虑到所有各种限制、可以降低最大理论速度、以简化系统配置计算中涉及的复杂数学运算。  实际最大速度(除其他系统配置限制外)在 SpinTAC 位置移动下的 msg 结构中可用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Adam:

    这里是我的测量值、

    我将 PosStepInt_mrev 设置为一个较大的值、以便可以达到结束速度。
    我的端速 MaxVel_KRPM 设置为5000。
    然后、我进行一些位置移动、并展示我真正达到的最终速度。
    我更改的唯一值是 MaxAccel_krpmps。

    MaxAccel_krpmps SPEED_KRPM
    0.2. 1700
    0.4. 2300
    0.5. 26600
    0.6. 2900
    0.7. 3100
    0.8. 3200
    0.9. 3400
    1.0 3500
    1.1. 3600
    1.5 3900
    2.0 4400
    2.5. 4700
    3.0 5000


    你说这是正常的。 ?
    是否还有另一种可能以较低的加速度获得较高的内速?

    谢谢 Adam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、这看起来正常。 随着加速度的增加、您可以获得更高的速度。

    您使用的是 PosStepInt_mrev?

    是否将 MaxAccel_krpmps 和 MaxDecel_krpmps 设置为相同?

    由于您受到终端位置的限制、因此以较低的加速度获得更高速度的唯一方法是增加位置目标。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Adam:

    这里是我的测量值、

    我将 PosStepInt_mrev 设置为大约(10000)的大值、以便可以达到结束速度。
    我的端速 MaxVel_KRPM 设置为5000。
    然后、我进行一些位置移动、并展示我真正达到的最终速度。
    我更改的唯一值是 MaxAccel_krpmps。

    MaxAccel_krpmps Speed_krpm
    0.2 1700
    0.42300
    0.5 2600
    0.6 2900
    0.7 3100
    0.8 3200
    0.9 3400
    1.0 3500
    1.1 3600
    1.5 3900
    2.0 4400
    2.5 4700
    3.0 5000


    你说这是正常的。 ?
    是否还有另一种可能以较低的加速度获得较高的内速?

    谢谢 Adam