无感开环强拖疑问
目前打算使用凌鸥的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) /* 单位: VADC基准电压,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三相电流波形如下
请问是哪里的参数不正确?还是硬件有问题?可能是那个地方有问题?或者我还要提供其他更详细信息
使用的是b站教程配套的工程LKS08x_FOC_SensorLessV4.28.2 ,大佬们、FAE们帮帮忙 本帖最后由 江南星语 于 2024-8-7 19:08 编辑
可以在开环下,看一下相电流,id和iq,验证一下硬件和配置是否正确 看着相电流还可以,说明大概率不是硬件问题;电角度那个波形,看着观测器角度不行,你修改一下锁相环pi参数 江南星语 发表于 2024-8-7 19:06
看着相电流还可以,说明大概率不是硬件问题;电角度那个波形,看着观测器角度不行,你修改一下锁相环pi参数 ...
多谢大佬指导,我看视频上说是先调 Id,Id跟随后再调观测器PI,现在感觉是Id是乱的,一点都不跟随。可以直接调观测器PI的? 得到idiq首先就需要电角度,电角度不对,iqid肯定不行 江南星语 发表于 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 */ 江南星语 发表于 2024-8-7 19:14
得到idiq首先就需要电角度,电角度不对,iqid肯定不行
大佬,我的观测器角度怎么感觉和给定角度倒过来了,是不是哪里反了?
先开环强拖,看看相电流和idiq对不对,不要进闭环 江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环
#define OPEN_RUN_STATUS (TRUE) /* 开环状态 TRUE = 开环运行, FALSE = 闭环运行 */
上面的应该就是开环强拖吧 江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环
上面这些图对应的都是开环强拖的{:cry:} 还有一个疑惑,无论是SVPWM测试模式还是开环强拖,UVW三项顺序随便调都能转?怎么确定电机相序对不对?下面是 SVPWM测试模式的电流波形
#define SVPWM_MODE 1
本帖最后由 不闲不要钱 于 2024-8-8 09:20 编辑
大佬们帮忙指导指导,指明一下方向也行,目前根据视频教程
第8讲:预定位与开环强拖调试1卡在开环强拖这里了,Id电流不跟随,观测器角度和开环角度反的
可能是哪里的问题?电流环PID没调好?相序有问题?还是其他参数不对?或者硬件有问题?希望大佬可以指导一下
开环强拖模式下
主要参数如下,测试的电流数据观测器数据保存在附件中
/*------------------------------------预定位参数---------------------------------*/
#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 电流减速调整值 */
江南星语 发表于 2024-8-7 22:42
先开环强拖,看看相电流和idiq对不对,不要进闭环
大佬,有时间帮忙指导一下{:lol:},卡住进行不下去了 修改参数,降低开环拖动最终频率为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 电流减速调整值 */
修改参数,观测器角度基本上会跟随给定角度了,但是Id电流还是乱窜,再调小 P_CURRENT_KPP_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 电流减速调整值 */
兄弟 代码能不能打包。。。 xionghaoyun 发表于 2024-8-9 08:46
兄弟 代码能不能打包。。。
有加密程序,发不了,感觉就是,某个地方反了{:dizzy:} 阿尔法相加了个负号
Id电流和观测角度都会跟随了,但是观测角度和设定角度之间误差超出了范围 10.98°~ 98.87°,不知道行不行
找到原因了,硬件版本和原理图的不一样
页:
[1]
2