云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > dsp30代码

dsp30代码

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 11:04:33

// 设置所需参数

// 选取定标值为 8倍速度和电流标称值

// 在定标时使用 8倍电机标称机械转速(单位为 RPM) MotorParm.iScaleMechRPM = diNomRPM*8;

// 极对数

MotorParm.iPoles = diPoles ;

//由 dsPIC正交编码配置检测的每转编码器计数值。 //

MotorParm.iCntsPerRev = diCntsPerRev;

// 以秒为单位的转子时间常数

MotorParm.fRotorTmConst = dfRotorTmConst;

// 基本循环周期(单位为秒)。( PWM中断周期)

MotorParm.fLoopPeriod = dLoopInTcy * dTcy; //循环周期(以周期为单位) * 秒 /周期

// 编码器转速中断周期(单位为秒)。

MotorParm.fVelIrpPeriod = MotorParm.fLoopPeriod;

// 每次转速计算的 vel中断数。

MotorParm.iIrpPerCalc = diIrpPerCalc; // 以循环为单位

// 电机的定标机械速度(单位为转 /秒)

MotorParm.fScaleMechRPS = MotorParm.iScaleMechRPM/60.0;

// 定标后的电机磁通转速(单位为转 /秒) //通过该值定标后的所有无量纲磁通转速。

MotorParm.fScaleFluxRPS = MotorParm.iPoles*MotorParm.fScaleMechRPS;

// 磁通矢量每转一周的最小周期时间(单位为秒)

MotorParm.fScaleFluxPeriod = 1.0/MotorParm.fScaleFluxRPS;

//在最大磁通转速时的每个 LoopTime的转数系数

MotorParm.fScaleFracRevPerLoop = MotorParm.fLoopPeriod * MotorParm.fScaleFluxRPS;

// 定标后的电机磁通转速(单位为弧度 /秒)

// 通过该值定标后的所有无量纲转速(单位为弧度 /秒)。 MotorParm.fScaleFluxSpeed = 6.283 * MotorParm.fScaleFluxRPS;

// iScaleMechRPM时的编码器计数频率

MotorParm.lScaleCntRate = MotorParm.iCntsPerRev * (MotorParm.iScaleMechRPM/60.0);

// ============= 开环 ======================

OpenLoopParm.qKdelta = 32768.0 * 2 * MotorParm.iPoles * MotorParm.fLoopPeriod *

MotorParm.fScaleMechRPS;

OpenLoopParm.qVelMech = dqOL_VelMech; CtrlParm.qVelRef = OpenLoopParm.qVelMech;

InitOpenLoop();

// ============= 编码器 ===============

if( InitEncoderScaling() ) // 出错 return True;

// ============= ADC - 测量电流和电位器 ======================

// 定标常数:由校准或硬件设计决定。 ReadADCParm.qK = dqK;

MeasCurrParm.qKa = dqKa; MeasCurrParm.qKb = dqKb;

// 初始偏移量

InitMeasCompCurr( 450, 730 );

// ============= 电流模型 ===============

if(InitCurModelScaling()) // 出错 return True;

// ============= 弱磁 =============== // 恒转矩范围的弱磁常数

FdWeakParm.qK1 = dqK1; // 磁通给定值

// ============= PI D项 =============== PIParmD.qKp = dDqKp; PIParmD.qKi = dDqKi; PIParmD.qKc = dDqKc;

PIParmD.qOutMax = dDqOutMax;

PIParmD.qOutMin = -PIParmD.qOutMax;

InitPI(&PIParmD);

// ============= PI Q项 =============== PIParmQ.qKp = dQqKp; PIParmQ.qKi = dQqKi; PIParmQ.qKc = dQqKc;

PIParmQ.qOutMax = dQqOutMax;

PIParmQ.qOutMin = -PIParmQ.qOutMax;

InitPI(&PIParmQ);

// ============= PI Qref项 =============== PIParmQref.qKp = dQrefqKp; PIParmQref.qKi = dQrefqKi; PIParmQref.qKc = dQrefqKc;

PIParmQref.qOutMax = dQrefqOutMax;

PIParmQref.qOutMin = -PIParmQref.qOutMax;

InitPI(&PIParmQref);

// ============= SVGen =============== // 将 PWM周期设定为循环时间

SVGenParm.iPWMPeriod = dLoopInTcy;

// ============= TIMER #1 ====================== PR1 = 0xFFFF;

T1CONbits.TON = 1;

T1CONbits.TCKPS = 1; // 预分频比为 8时 => 一个单位为 1.08504 uS

搜索更多关于: dsp30代码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

// 设置所需参数 // 选取定标值为 8倍速度和电流标称值 // 在定标时使用 8倍电机标称机械转速(单位为 RPM) MotorParm.iScaleMechRPM = diNomRPM*8; // 极对数 MotorParm.iPoles = diPoles ; //由 dsPIC正交编码配置检测的每转编码器计数值。 // MotorParm.iCntsPerRev = diCntsPerRev; // 以秒为单位的转子时间常数 MotorParm.fRotorTmConst = dfRotorTmConst; // 基本循环

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com