打印
[LKS32 软件]

无感开环强拖疑问

[复制链接]
1869|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
目前打算使用凌鸥的LKSMC086N8Q82015A芯片做国产替代,目的是驱动一个小风机(最高37000RPM,负载很小)


照着b站上的视频 《第8讲:预定位与开环强拖调试1》
主要配置如下

/*******************************************************************************
* 版权所有 (C)2019, LINKO SEMICONDUCTOR Co.ltd
*
* 文件名称: parameter.h
* 文件标识:
* 内容摘要: parameter config
* 其它说明: 无
* 当前版本: V1.0
* 作    者: Andrew kong, Howlet Li
* 完成日期: 2020年8月18日
*
*******************************************************************************/

/*------------------------------prevent recursive inclusion -------------------*/
#ifndef __PARAMETER_H
#define __PARAMETER_H

#include "basic.h"
#include "MC_Type.h"

/* -----------------------------Hardware Parameter---------------------------- */
#define ADC_SUPPLY_VOLTAGE             (3.6)               /* 单位: V  ADC基准电压,3.6或者2.4,大部分应用选择3.6 */
/*采样匹配电阻 1K欧, 200:10=(200/(10.4+2)=16.129 */
/*采样匹配电阻 40K欧, 200:10=(200/(10.4+40)=3.96825 */
#define AMPLIFICATION_GAIN             (16.129)            /* 运放放大倍数 */  
#define RSHUNT                         (0.010)              /* 单位: Ω  采样电阻阻值 */
#define VOLTAGE_SHUNT_RATIO            (1.0/(20.0 * 2 + 1.0)) /* 母线电压分压比 */
#define BEMF_SHUNT_RATIO               (1.0/(20.0 * 2 + 1.0)) /* 反电势电压分压比 */

#define CURRENT_SAMPLE_TYPE            CURRENT_SAMPLE_2SHUNT /* 电流采样方式选择 */

#define ROTOR_SENSOR_TYPE              ROTOR_SENSORLESS       /* 电机位置传感器类型选择 */

/* ------------------------------Rated Parameter------------------------------ */

#define U_RATED_VOLTAGE                (24)               /* 单位:V, 电机额定工作电压,设置为正常工作电压 */
#define U_RATED_CURRENT                (1.6)                /* 单位:A, 电机额定工作电流,相电流最大值 */
#define U_MAX_FREQ                     (600.0)            /* 单位:Hz,  电机最高运行转速 */

/* ------------------------------Motor Parameter------------------------------ */
#define U_MOTOR_PP                     (2.0)              /* 电机极对数 */
#define U_MOTOR_RS                     (2.0)              /* 单位: Ω 电机相电阻 */
#define U_MOTOR_LD                     (230.0)            /* 单位: uH 电机d轴电感 */
#define U_MOTOR_LQ                     (260.0)            /* 单位: uH 电机q轴电感 */

//#define U_MOTOR_PP                     (7.0)             /* 电机极对数 */
//#define U_MOTOR_RS                     (1.537)           /* 单位: Ω 电机相电阻 */
//#define U_MOTOR_LD                     (2269.0)          /* 单位: uH 电机d轴电感 */
//#define U_MOTOR_LQ                     (2500.0)          /* 单位: uH 电机q轴电感 */

/* 电机磁链常数 计算公式:Vpp/2/sqrt(3)/(2*PI)/f,其中Vpp为电压峰峰值,f为电频率 3.68V 25Hz
   此参数仅影响顺逆风启动的速度检测,角度估算不使用些参数 */
#define U_MOTOR_FLUX_CONST             (0.00687364598)      

/* ----------------------IPD 转子初始位置检测 脉冲注入时间设置---------------- */
#define SEEK_POSITION_STATUS           (FALSE)           /* 初始位置检测状态 TRUE 为使能, FALSE 为不使能 */
#define U_START_ANGLE_COMP             (0)               /* 单位:度 初始位置检测补偿角度 */

#define IPD_PLUS_TIME_SETTING          (150)             /* 脉冲注入时间宽度设置 单位us */
#define IPD_WAIT_TIME_SETTING          (200)             /* 脉冲空闲等待时间宽度设置 单位us */

#define IPD_PLUS_TIME_WIDTH            (u32)(IPD_PLUS_TIME_SETTING*(MCU_MCLK/1000000))   /* 脉冲注入时间宽度设置 单位clk */
#define IPD_PLUS_WAIT_TIME             (u32)(IPD_WAIT_TIME_SETTING*(MCU_MCLK/1000000))   /* 脉冲空闲等待时间宽度设置 单位clk */

/* -------------------------------HALL自学习设置------------------------------- */
#define HALL_LEARN_CURRENT_SETTINT     (1.0)              /* HALL自学习电流设定,单位: A */
#define HALL2SENSORLESS_ANGLE_VERIFY   (FALSE)            /* 使用无感角度验证有感角度, TRUE = 开启, FALSE = 关闭 */  
#define HALL_ANGLE_TYPE                (120)              /* hall安装角度60度或120度*/
/* ----------------------------direction check Parameter----------------------- */
#define CW                             (0)                /* 电机转向:顺时针 */
#define CCW                            (1)                /* 电机转向:逆时针*/

/* ------------------------------ADC校准相关参数设置---------------------------- */
#define CALIB_SAMPLES                  (512)              /* ADC偏置校准次数,不可修改 */
#define OFFSET_ERROR                   (3500)             /* ADC偏置误差阈值,不用修改 */

/* ----------------------------预驱自举电容预充电参数--------------------------- */
#define CHARGE_TIME                    (100)              /* 每相预充电时间,根据实际硬件参数修改 */

/* -------------------------------- 顺逆风检测模式选择------------------------------ */
#define DIR_BEMF_CHECK_STATUS          (FALSE)            /* 顺逆风检查状态 TRUE = 开启顺逆风检测, FALSE = 关闭顺逆风检测 */
#define BEMF_CHECK_MDE                  (0)               /* 反电动势做顺逆风,需反电动势电路,一般单电阻采样使用(双电阻可以使用)*/
#define DIR_CHECK_MDE                   (1)               /* 观测器做顺逆风,无需反电动势电路,一般双电阻采样使用(部分电机使用单电阻采样也可以使用改顺逆风检测,具体需要根据实际调试确认是否可以)*/
#define DIR_BEMF_CHECK_MODE         (BEMF_CHECK_MDE)      /* 顺逆风检测模式选择*/

/* -------------------------------- 顺逆风检测参数------------------------------ */
#define SPEED_TRACK_DELAYTIME          (500)              /* 单位: ms 顺逆风检测时间  */
#define SPEED_TRACK_ON_FREQ_THH        (25)               /* 单位: Hz 顺风切闭环频率 */
#define EBRK_ON_FREQ_THH               (50)               /* 单位: Hz 逆风刹车频率 */

#define MOTOR_STOP_CUR_THD             (120)              /* 电机停止检测电流阈值 */
#define MOTOR_STOP_CUR_DIF_THD         (12)               /* 电机停止检测电流差阈值 */

#define STOP_TIME                      (10)               /* 单位:ms 电机停止检测滤波时间,根据实际负载修改 */
#define STOP_DELAY_TIME                (200)              /* 单位: ms 电机停止后延迟时间,根据实际负载修改。修改依据:电机在判定为停止后还在转动就加大延迟时间 */

/* -------------------------------- 反电势检测参数------------------------------ */
#define BEMF_CHECK_TIME                (500)              /* 单位: ms 反电势检测时间  */
#define BEMF_CHECK_ANGLE_COMP          (0)                /* 单位: 度 反电动势检测补偿角度(范围0~180) 如果顺风高速切闭环相电流有突变,适当调整改参数直到启动电流平滑*/
#define BEMF_TRACK_FREQ                (30)               /* 单位: Hz 反电势检测频率,逆风等待转速 */
#define BEMF_TRACK_ON_FREQ_THH         (30)               /* 单位: Hz 顺风切闭环频率*/

#define BEMF_TRACK_VOLTAGE             (0.5)              /* 单位:V 顺逆风检测电压阈值  可根据Ke估算*/
#define BEMF_TIME                      (1000)             /* 单位: ms 反电势检测刹车时间 */
#define BEMF_DUTY                      FRAC16(0.05)       /* 刹车占空比 */

/*------------------------------------预定位参数---------------------------------*/
#define ALIGN_ANGLE                    (0)                /* 单位:度 预定位角度 */
#define U_START_CUR_SET_F              (0.5)              /* 单位: A 第一段定位电流 */
#define U_START_CUR_SET_S              (1.0)              /* 单位: A 第二段定位电流 */
#define DC_HOLDTIME_TIME_LENTH         (100)               /* 单位: ms 第一段定位时间 */
#define DC_HOLDTIME_TIME_LENTH_STAGE1  (100)               /* 单位: ms 第二段定位时间 */
#define DC_ALIGN_TOTAL_LENTH            \
       (DC_HOLDTIME_TIME_LENTH + DC_HOLDTIME_TIME_LENTH_STAGE1)/* 定位总时长 */

#define ALIGN_CURRENT_ACC              (0.1)              /* 单位: (1/8)A/ms  定位电流加速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */
#define ALIGN_CURRENT_DEC              (0.1)              /* 单位: (1/8)A/ms  定位电流减速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */

/*---------------------------------开环参数------------------------------------*/
#define OPEN_ANGLE_TAG_FREQ            (20.0)             /* 单位:Hz 开环拖动最终频率 */
#define FREQ_ACC                       (1)                /* 单位:(1/128)Hz/ms 开环拖动频率加速调整值 */
#define FREQ_DEC                       (1)                /* 单位:(1/128)Hz/ms 开环拖动频率减速调整值 */

#define OPEN_RUN_STATUS                (TRUE)             /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
  
#define MATCH_TIME                     (5)                /* 估算和给定电流匹配次数 */

/*---------------------- -----开环闭环切换过渡参数------------------------------*/
#define OPEN2CLOSE_RUN_COV_TIME        (30)               /* 开环闭环切换过渡时间:单位:mS */
#define OPEN2CLOSE_RUN_CURRENT_RAMP    (0.1)             /* 开环闭环切换过渡内,D,Q轴电流变化斜率。单位:A/ms */

/*-----------------------------------环路选择----------------------------------*/
#define CURRENT_LOOP                   (0)                /* 电流环 */
#define SPEED_LOOP                     (1)                /* 速度环 */
#define POWER_LOOP                     (2)                /* 功率环 */
#define CLOSE_LOOP                     (SPEED_LOOP)       /* 环路选择 */

/* ------------------------------观测器PLL PI参数----------------------------- */
#define PLL_KP_GAIN                    20                /* PLL_Kp 估算器Kp */
#define PLL_KI_GAIN                    10                 /* PLL_Ki 估算器Ki */

/*----------------------------------电流环参数---------------------------------*/
#define IQ_SET                         (0.5)              /* 单位:A IqRef,Iq给定值 */

#define VQMAX                          (6000)             /* Q轴最大输出限制,Q15格式,取值范围0~6000 */
#define VQMIN                          (-6000)            /* Q轴最小输出限制,Q15格式,取值范围0~-6000 */

#define VDMAX                          (6000)             /* D轴最大输出限制,Q15格式,取值范围0~6000 */
#define VDMIN                          (-6000)            /* D轴最小输出限制,Q15格式,取值范围0~6000 */

#define P_CURRENT_KP                   (200)             /* 电流环Kp,实际运用的Kp会根据这个值和电机参数计算出最终的Kp */
#define P_CURRENT_KI                   (100)             /* 电流环Ki,实际运用的Kp会根据这个值和电机参数计算出最终的Ki */

#define AUTO_FW_LIM                    ((s16)0)            /* 自动弱磁D轴电流限制,Q12格式,最大值 4096 */

#define TORQUE_MODE_CURRENT_CHANGE_ACC (0.1)              /* 单位:A/ms 电流加速调整值 */
#define TORQUE_MODE_CURRENT_CHANGE_DEC (0.1)              /* 单位:A/ms 电流减速调整值 */

/*----------------------------------速度环参数-------------------------------*/
#define POWER_LIMIT_STATUS             (FALSE)            /* 限功率状态, TRUE = 使能, FALSE = 不使能 */
#define POWER_LIMIT_VALUE              (20.0)             /* 单位:W   限制功率的大小 */
#define POWER_LIMIT_TIME               (5)                /* 单位:ms  速度环周期,  限功率计算周期 */
#define POWER_LIMIT_SPEED              (200)               /* 单位:Hz  限功率转速给定,根据实际应用来设置, */

#define SPEED_SET                      (60)               /* 单位:Hz  速度给定值 */
#define SPEED_LOOP_CNTR                (0)                /* 单位:ms  速度环路计算周期 */

#define CURR_TO_SPEED_TIME             (100)              /* Unit: ms 电流环切速度环时间 */
#define STATE04_WAITE_TIME             (100)              /* Unit: ms 速度变量初始化时间 */

#define P_ASR_KP                       (2000)             /* 速度环Kp */
#define P_ASR_KI                       (1000)              /* 速度环Ki */

#define IQMAX                          (6.0)              /* 单位:A, 速度环输出最大值 */
#define IQMIN                          (-6.0)             /* 单位:A, 速度环输出最小值 */

#define SPEED_RUN_ACC                  (0.05)              /* 单位 (1/128)Hz 速度加速调整值 */
#define SPEED_RUN_DEC                  (0.05)              /* 单位 (1/128)Hz 速度减速调整值 */

/*------------------------------------功率环参数-------------------------------*/
#define SPPED_LIMIT_STATUS             (FALSE)            /*  限转速状态, TRUE = 使能, FALSE = 不使能 */
#define SPEED_LIMIT_VALUE              (100.0)            /* 单位:Hz  限制转速的大小 */
#define SPEED_LIMIT_TIME               (5)                /* 单位:ms  功率环周期, 限转速计算周期 */
#define SPEED_LIMIT_POWER_VALUE        (30)               /* 单位:W   限转速功率给定 */

#define POWER_SET                      (30)               /* 单位:W  功率给定值 */
#define POWER_LOOP_CNTR                (1)                /* 单位:ms  功率环路计算周期 */
                                                                  
#define POWER_KP                       (3000)             /* 功率环Kp */
#define POWER_KI                       (1000)              /* 功率环Ki */

#define POWER_IQMAX                    (6.0)              /* 单位:A, 功率环输出最大值 */
#define POWER_IQMIN                    (-6.0)             /* 单位:A, 功率环输出最小值 */
                                                                  
#define POWER_RUN_ACC                  (2.0)              /* 单位 w 功率加速调整值 注意POWER_RUN_ACC和POWER_RUN_DEC不能太小,结合拟合参数设置,实际程序中的加减速值不能能小于0. */
#define POWER_RUN_DEC                  (2.0)              /* 单位 w 功率减速调整值 */

/*------------------------------------FaultDetection---------------------------*/
/* 过流检测参数 */
#define I_PH_OVERCURRENT_FAULT         (10.0)              /* 单位:A 软件过流检测设定值 */

/* 过欠压检测参数 */
#define U_DCB_OVERVOLTAGE_FAULT        (30.0)               /* 单位:V 过压检测设定值 */
#define U_DCB_OVERVOLTAGE_RECOVER      (28.5)               /* 单位:V 过压恢复设定值 */
#define U_DCB_UNDERVOLTAGE_FAULT       (20.0)               /* 单位:V 欠压检测设定值 */
#define U_DCB_UNDERVOLTAGE_RECOVER     (20.5)               /* 单位:V 欠压恢复设定值 */

/* 离水空转参数 */
#define I_PH_EMPTY_FAULT               (0.3)              /* 单位:A 空转检测电流设定值 */
#define SPEED_EMPTY_FAULT              (50.0)             /* 单位:Hz 空转检测转速设定值  */

/* 温度检测参数 */
#define TEMP_FAULT                     (150)              /* 过温检测设定值 */
#define TEMP_RECOVER                   (170)              /* 过温恢复设定值 */
#define TEMP_BREAK                     (4000)             /* NTC开路设定值 */
                                                                  
/* 堵转检测参数 */
#define SPEED_STALL_MAX_FAULT          (300.0)            /* 单位:Hz 堵转检测转速最大值 */
#define SPEED_STALL_MIN_FAULT          (10.0)             /* 单位:Hz 堵转检测转速最小值 */

#define I_PH_STALL_FAULT               (1.5)              /* 单位:A 堵转检测电流设定值 */

#define SPEED_STALL_FAULT              (20.0)             /* 单位:Hz 堵转检测转速设定值 */
#define IQ_STALL_FAULT                 (0.2)              /* 单位:A 堵转检测电流设定值 */

/* 二次启动检测参数 */
#define START_TIME_FAULT               (200)              /* 单位:5ms 开环之后1s内还不进入闭环就重启,1s这个时间根据实际应用调整 */

/* 缺相检测参数 */
#define I_PHASE_LOSS_FAULT             (3000)             /* 数字量,根据实际测试中struCurrentAmplitude.nPhA/struCurrentAmplitude.nPhB/struCurrentAmplitude.nPhC */
                                                          /* 的计算值来设定,在缺相和正常运行的中间取值。 */
/* 故障恢复时间 */
#define VOLT_FAULT_RECOVER_TIME        (2000)             /* 单位:ms  过欠压恢复时间 */
#define CURRENT_FAULT_RECOVER_TIME     (2000)             /* 单位:ms  过流恢复时间 */
#define STALL_FAULT_RECOVER_TIME       (2000)             /* 单位:ms  堵转恢复时间 */
#define PHASELOSS_FAULT_RECOVER_TIME   (2000)             /* 单位:ms  缺相恢复时间 */
#define TEMP_FAULT_RECOVER_TIME        (2000)             /* 单位:ms  过温恢复时间 */
#define START_FAULT_RECOVER_TIME       (1000)             /* 单位:ms  二次启动恢复时间 */
#define EMPTY_FAULT_RECOVER_TIME       (2000)             /* 单位:ms  离水空转恢复时间 */



#endif  /* __PARAMETER_H */

/************************ (C) COPYRIGHT LINKO SEMICONDUCTOR **********************/
/* -----------------------------------END OF FILE------------------------------- */


Id、Iq波形如下


UVW三相电流波形如下


示波器电流波形如下


开环角度和观测器角度波形如下



修改 KP和KI,发现电流超大,而且发生畸变
#define P_CURRENT_KP                   (2000)            
#define P_CURRENT_KI                   (1000)         

开环角度和观测器角度波形如下
   


Id、Iq波形如下


UVW三相电流波形如下


请问是哪里的参数不正确?还是硬件有问题?可能是那个地方有问题?或者我还要提供其他更详细信息

使用特权

评论回复
沙发
不闲不要钱|  楼主 | 2024-8-7 17:29 | 只看该作者
使用的是b站教程配套的工程  LKS08x_FOC_SensorLessV4.28.2 ,大佬们、FAE们帮帮忙

使用特权

评论回复
板凳
江南星语| | 2024-8-7 19:04 | 只看该作者
本帖最后由 江南星语 于 2024-8-7 19:08 编辑

可以在开环下,看一下相电流,id和iq,验证一下硬件和配置是否正确

使用特权

评论回复
地板
江南星语| | 2024-8-7 19:06 | 只看该作者
看着相电流还可以,说明大概率不是硬件问题;电角度那个波形,看着观测器角度不行,你修改一下锁相环pi参数

使用特权

评论回复
5
不闲不要钱|  楼主 | 2024-8-7 19:11 | 只看该作者
江南星语 发表于 2024-8-7 19:06
看着相电流还可以,说明大概率不是硬件问题;电角度那个波形,看着观测器角度不行,你修改一下锁相环pi参数 ...

多谢大佬指导,我看视频上说是先调 Id,Id跟随后再调观测器PI,现在感觉是Id是乱的,一点都不跟随。可以直接调观测器PI的?

使用特权

评论回复
6
江南星语| | 2024-8-7 19:14 | 只看该作者
得到idiq首先就需要电角度,电角度不对,iqid肯定不行

使用特权

评论回复
评论
不闲不要钱 2024-8-7 19:15 回复TA
好的,谢谢指导,我去试试 
7
不闲不要钱|  楼主 | 2024-8-7 19:35 | 只看该作者
江南星语 发表于 2024-8-7 19:14
得到idiq首先就需要电角度,电角度不对,iqid肯定不行

大佬,观测器PI调整有什么技巧吗?是调下面这些参数配合着调吗?
/*---------------------------------开环参数------------------------------------*/
#define OPEN_ANGLE_TAG_FREQ            (200.0)             /* 单位:Hz 开环拖动最终频率 */
#define FREQ_ACC                       (10)                /* 单位:(1/128)Hz/ms 开环拖动频率加速调整值 */
#define FREQ_DEC                       (10)                /* 单位:(1/128)Hz/ms 开环拖动频率减速调整值 */

/* ------------------------------观测器PLL PI参数----------------------------- */
#define PLL_KP_GAIN                    20                /* PLL_Kp 估算器Kp */
#define PLL_KI_GAIN                    10                 /* PLL_Ki 估算器Ki */

使用特权

评论回复
8
不闲不要钱|  楼主 | 2024-8-7 20:07 | 只看该作者
江南星语 发表于 2024-8-7 19:14
得到idiq首先就需要电角度,电角度不对,iqid肯定不行

大佬,我的观测器角度怎么感觉和给定角度倒过来了,是不是哪里反了?


使用特权

评论回复
9
江南星语| | 2024-8-7 22:42 | 只看该作者
先开环强拖,看看相电流和idiq对不对,不要进闭环

使用特权

评论回复
评论
不闲不要钱 2024-8-9 19:41 回复TA
大佬,阿尔法相加了个负号,Id电流和观测角度都会跟随了,但是观测角度和设定角度之间误差超出了范围 10.98°~ 98.87°,不知道行不行? 
10
不闲不要钱|  楼主 | 2024-8-7 23:19 | 只看该作者
江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环

#define OPEN_RUN_STATUS                (TRUE)             /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
上面的应该就是开环强拖吧

使用特权

评论回复
11
不闲不要钱|  楼主 | 2024-8-7 23:39 | 只看该作者
江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环

上面这些图对应的都是开环强拖的

使用特权

评论回复
12
不闲不要钱|  楼主 | 2024-8-8 08:34 | 只看该作者
还有一个疑惑,无论是SVPWM测试模式还是开环强拖,UVW三项顺序随便调都能转?怎么确定电机相序对不对?下面是 SVPWM测试模式的电流波形
#define SVPWM_MODE 1


使用特权

评论回复
13
不闲不要钱|  楼主 | 2024-8-8 09:14 | 只看该作者
本帖最后由 不闲不要钱 于 2024-8-8 09:20 编辑

大佬们帮忙指导指导,指明一下方向也行,目前根据视频教程
第8讲:预定位与开环强拖调试1卡在开环强拖这里了,Id电流不跟随,观测器角度和开环角度反的
可能是哪里的问题?电流环PID没调好?相序有问题?还是其他参数不对?或者硬件有问题?希望大佬可以指导一下
开环强拖模式下
主要参数如下,测试的电流数据观测器数据保存在附件中
lksscope数据.rar (3.35 MB)


/*------------------------------------预定位参数---------------------------------*/
#define ALIGN_ANGLE                    (0)                /* 单位:度 预定位角度 */
#define U_START_CUR_SET_F              (0.5)              /* 单位: A 第一段定位电流 */
#define U_START_CUR_SET_S              (1.0)              /* 单位: A 第二段定位电流 */
#define DC_HOLDTIME_TIME_LENTH         (100)               /* 单位: ms 第一段定位时间 */
#define DC_HOLDTIME_TIME_LENTH_STAGE1  (100)               /* 单位: ms 第二段定位时间 */
#define DC_ALIGN_TOTAL_LENTH            \
       (DC_HOLDTIME_TIME_LENTH + DC_HOLDTIME_TIME_LENTH_STAGE1)/* 定位总时长 */

#define ALIGN_CURRENT_ACC              (0.1)              /* 单位: (1/8)A/ms  定位电流加速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */
#define ALIGN_CURRENT_DEC              (0.1)              /* 单位: (1/8)A/ms  定位电流减速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */

/*---------------------------------开环参数------------------------------------*/
#define OPEN_ANGLE_TAG_FREQ            (100.0)             /* 单位:Hz 开环拖动最终频率 */
#define FREQ_ACC                       (5)                /* 单位:(1/128)Hz/ms 开环拖动频率加速调整值 */
#define FREQ_DEC                       (5)                /* 单位:(1/128)Hz/ms 开环拖动频率减速调整值 */

#define OPEN_RUN_STATUS                (TRUE)             /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
  
#define MATCH_TIME                     (5)                /* 估算和给定电流匹配次数 */

/*---------------------- -----开环闭环切换过渡参数------------------------------*/
#define OPEN2CLOSE_RUN_COV_TIME        (30)               /* 开环闭环切换过渡时间:单位:mS */
#define OPEN2CLOSE_RUN_CURRENT_RAMP    (0.1)             /* 开环闭环切换过渡内,D,Q轴电流变化斜率。单位:A/ms */

/*-----------------------------------环路选择----------------------------------*/
#define CURRENT_LOOP                   (0)                /* 电流环 */
#define SPEED_LOOP                     (1)                /* 速度环 */
#define POWER_LOOP                     (2)                /* 功率环 */
#define CLOSE_LOOP                     (SPEED_LOOP)       /* 环路选择 */

/* ------------------------------观测器PLL PI参数----------------------------- */
#define PLL_KP_GAIN                    40                /* PLL_Kp 估算器Kp */
#define PLL_KI_GAIN                    20                 /* PLL_Ki 估算器Ki */

/*----------------------------------电流环参数---------------------------------*/
#define IQ_SET                         (0.5)              /* 单位:A IqRef,Iq给定值 */

#define VQMAX                          (6000)             /* Q轴最大输出限制,Q15格式,取值范围0~6000 */
#define VQMIN                          (-6000)            /* Q轴最小输出限制,Q15格式,取值范围0~-6000 */

#define VDMAX                          (6000)             /* D轴最大输出限制,Q15格式,取值范围0~6000 */
#define VDMIN                          (-6000)            /* D轴最小输出限制,Q15格式,取值范围0~6000 */

#define P_CURRENT_KP                   (500)             /* 电流环Kp,实际运用的Kp会根据这个值和电机参数计算出最终的Kp */
#define P_CURRENT_KI                   (200)             /* 电流环Ki,实际运用的Kp会根据这个值和电机参数计算出最终的Ki */

#define AUTO_FW_LIM                    ((s16)0)            /* 自动弱磁D轴电流限制,Q12格式,最大值 4096 */

#define TORQUE_MODE_CURRENT_CHANGE_ACC (0.1)              /* 单位:A/ms 电流加速调整值 */
#define TORQUE_MODE_CURRENT_CHANGE_DEC (0.1)              /* 单位:A/ms 电流减速调整值 */

使用特权

评论回复
14
不闲不要钱|  楼主 | 2024-8-8 15:36 | 只看该作者
江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环

大佬,有时间帮忙指导一下,卡住进行不下去了

使用特权

评论回复
15
不闲不要钱|  楼主 | 2024-8-8 18:35 | 只看该作者
修改参数,降低开环拖动最终频率为10Hz(但是电机是高速风机37000rpm,之前用st方案是要强拖到几千转的,这会不会太低?),发现上电时有一定几率观测器角度能跟随


不跟随的如下


/*------------------------------------预定位参数---------------------------------*/
#define ALIGN_ANGLE                    (0)                /* 单位:度 预定位角度 */
#define U_START_CUR_SET_F              (0.1)              /* 单位: A 第一段定位电流 */
#define U_START_CUR_SET_S              (0.2)              /* 单位: A 第二段定位电流 */
#define DC_HOLDTIME_TIME_LENTH         (50)               /* 单位: ms 第一段定位时间 */
#define DC_HOLDTIME_TIME_LENTH_STAGE1  (50)               /* 单位: ms 第二段定位时间 */
#define DC_ALIGN_TOTAL_LENTH            \
       (DC_HOLDTIME_TIME_LENTH + DC_HOLDTIME_TIME_LENTH_STAGE1)/* 定位总时长 */

#define ALIGN_CURRENT_ACC              (0.1)              /* 单位: (1/8)A/ms  定位电流加速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */
#define ALIGN_CURRENT_DEC              (0.1)              /* 单位: (1/8)A/ms  定位电流减速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */

/*---------------------------------开环参数------------------------------------*/
#define OPEN_ANGLE_TAG_FREQ            (10.0)             /* 单位:Hz 开环拖动最终频率 */
#define FREQ_ACC                       (2)                /* 单位:(1/128)Hz/ms 开环拖动频率加速调整值 */
#define FREQ_DEC                       (2)                /* 单位:(1/128)Hz/ms 开环拖动频率减速调整值 */

#define OPEN_RUN_STATUS                (TRUE)             /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
  
#define MATCH_TIME                     (5)                /* 估算和给定电流匹配次数 */

/*---------------------- -----开环闭环切换过渡参数------------------------------*/
#define OPEN2CLOSE_RUN_COV_TIME        (30)               /* 开环闭环切换过渡时间:单位:mS */
#define OPEN2CLOSE_RUN_CURRENT_RAMP    (0.1)             /* 开环闭环切换过渡内,D,Q轴电流变化斜率。单位:A/ms */

/*-----------------------------------环路选择----------------------------------*/
#define CURRENT_LOOP                   (0)                /* 电流环 */
#define SPEED_LOOP                     (1)                /* 速度环 */
#define POWER_LOOP                     (2)                /* 功率环 */
#define CLOSE_LOOP                     (SPEED_LOOP)       /* 环路选择 */

/* ------------------------------观测器PLL PI参数----------------------------- */
#define PLL_KP_GAIN                    50                /* PLL_Kp 估算器Kp */
#define PLL_KI_GAIN                    10                 /* PLL_Ki 估算器Ki */

/*----------------------------------电流环参数---------------------------------*/
#define IQ_SET                         (0.2)              /* 单位:A IqRef,Iq给定值 */

#define VQMAX                          (6000)             /* Q轴最大输出限制,Q15格式,取值范围0~6000 */
#define VQMIN                          (-6000)            /* Q轴最小输出限制,Q15格式,取值范围0~-6000 */

#define VDMAX                          (6000)             /* D轴最大输出限制,Q15格式,取值范围0~6000 */
#define VDMIN                          (-6000)            /* D轴最小输出限制,Q15格式,取值范围0~6000 */

#define P_CURRENT_KP                   (500)             /* 电流环Kp,实际运用的Kp会根据这个值和电机参数计算出最终的Kp */
#define P_CURRENT_KI                   (250)             /* 电流环Ki,实际运用的Kp会根据这个值和电机参数计算出最终的Ki */

#define AUTO_FW_LIM                    ((s16)0)            /* 自动弱磁D轴电流限制,Q12格式,最大值 4096 */

#define TORQUE_MODE_CURRENT_CHANGE_ACC (0.05)              /* 单位:A/ms 电流加速调整值 */
#define TORQUE_MODE_CURRENT_CHANGE_DEC (0.05)              /* 单位:A/ms 电流减速调整值 */



使用特权

评论回复
16
不闲不要钱|  楼主 | 2024-8-8 20:11 | 只看该作者
修改参数,观测器角度基本上会跟随给定角度了,但是Id电流还是乱窜,再调小 P_CURRENT_KP  P_CURRENT_KI,电机就只抖动,不转了。

/*------------------------------------预定位参数---------------------------------*/
#define ALIGN_ANGLE                    (0)                /* 单位:度 预定位角度 */
#define U_START_CUR_SET_F              (0.1)              /* 单位: A 第一段定位电流 */
#define U_START_CUR_SET_S              (0.2)              /* 单位: A 第二段定位电流 */
#define DC_HOLDTIME_TIME_LENTH         (50)               /* 单位: ms 第一段定位时间 */
#define DC_HOLDTIME_TIME_LENTH_STAGE1  (50)               /* 单位: ms 第二段定位时间 */
#define DC_ALIGN_TOTAL_LENTH            \
       (DC_HOLDTIME_TIME_LENTH + DC_HOLDTIME_TIME_LENTH_STAGE1)/* 定位总时长 */

#define ALIGN_CURRENT_ACC              (0.1)              /* 单位: (1/8)A/ms  定位电流加速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */
#define ALIGN_CURRENT_DEC              (0.1)              /* 单位: (1/8)A/ms  定位电流减速调整值  初始位置检测使能后给到最大值,不能超过30,否则数据会溢出。 */

/*---------------------------------开环参数------------------------------------*/
#define OPEN_ANGLE_TAG_FREQ            (50.0)             /* 单位:Hz 开环拖动最终频率 */
#define FREQ_ACC                       (3)                /* 单位:(1/128)Hz/ms 开环拖动频率加速调整值 */
#define FREQ_DEC                       (3)                /* 单位:(1/128)Hz/ms 开环拖动频率减速调整值 */

#define OPEN_RUN_STATUS                (TRUE)             /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
  
#define MATCH_TIME                     (5)                /* 估算和给定电流匹配次数 */

/*---------------------- -----开环闭环切换过渡参数------------------------------*/
#define OPEN2CLOSE_RUN_COV_TIME        (30)               /* 开环闭环切换过渡时间:单位:mS */
#define OPEN2CLOSE_RUN_CURRENT_RAMP    (0.1)             /* 开环闭环切换过渡内,D,Q轴电流变化斜率。单位:A/ms */

/*-----------------------------------环路选择----------------------------------*/
#define CURRENT_LOOP                   (0)                /* 电流环 */
#define SPEED_LOOP                     (1)                /* 速度环 */
#define POWER_LOOP                     (2)                /* 功率环 */
#define CLOSE_LOOP                     (SPEED_LOOP)       /* 环路选择 */

/* ------------------------------观测器PLL PI参数----------------------------- */
#define PLL_KP_GAIN                    55                /* PLL_Kp 估算器Kp */
#define PLL_KI_GAIN                    0                 /* PLL_Ki 估算器Ki */

/*----------------------------------电流环参数---------------------------------*/
#define IQ_SET                         (0.2)              /* 单位:A IqRef,Iq给定值 */

#define VQMAX                          (6000)             /* Q轴最大输出限制,Q15格式,取值范围0~6000 */
#define VQMIN                          (-6000)            /* Q轴最小输出限制,Q15格式,取值范围0~-6000 */

#define VDMAX                          (6000)             /* D轴最大输出限制,Q15格式,取值范围0~6000 */
#define VDMIN                          (-6000)            /* D轴最小输出限制,Q15格式,取值范围0~6000 */

#define P_CURRENT_KP                   (500)             /* 电流环Kp,实际运用的Kp会根据这个值和电机参数计算出最终的Kp */
#define P_CURRENT_KI                   (250)             /* 电流环Ki,实际运用的Kp会根据这个值和电机参数计算出最终的Ki */

#define AUTO_FW_LIM                    ((s16)0)            /* 自动弱磁D轴电流限制,Q12格式,最大值 4096 */

#define TORQUE_MODE_CURRENT_CHANGE_ACC (0.05)              /* 单位:A/ms 电流加速调整值 */
#define TORQUE_MODE_CURRENT_CHANGE_DEC (0.05)              /* 单位:A/ms 电流减速调整值 */


使用特权

评论回复
17
xionghaoyun| | 2024-8-9 08:46 | 只看该作者
兄弟 代码能不能打包。。。

使用特权

评论回复
18
不闲不要钱|  楼主 | 2024-8-9 13:58 | 只看该作者
xionghaoyun 发表于 2024-8-9 08:46
兄弟 代码能不能打包。。。

有加密程序,发不了,感觉就是,某个地方反了

使用特权

评论回复
19
不闲不要钱|  楼主 | 2024-8-9 19:40 | 只看该作者
阿尔法相加了个负号


Id电流和观测角度都会跟随了,但是观测角度和设定角度之间误差超出了范围 10.98°~ 98.87°,不知道行不行

使用特权

评论回复
20
不闲不要钱|  楼主 | 2024-8-14 20:13 | 只看该作者
找到原因了,硬件版本和原理图的不一样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

69

帖子

1

粉丝