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

当前位置:首页 > dsp30代码

dsp30代码

  • 62 次阅读
  • 3 次下载
  • 2025/6/18 23:07:45

if( uGF.bit.Btn3Pressed ) {

// 按钮刚释放

uGF.bit.Btn3Pressed = 0;

uGF.bit.ChangeSpeed = !uGF.bit.ChangeSpeed; pinLED3 = uGF.bit.ChangeSpeed; LATGbits.LATG0 = 1; } }

// 按钮 4不具备任何功能

if(pinButton4) {

if( !uGF.bit.Btn4Pressed )

uGF.bit.Btn4Pressed = 1; }

else {

if( uGF.bit.Btn4Pressed ) {

// 按钮刚被释放

uGF.bit.Btn4Pressed = 0;

//*** 此处加入按钮 4功能的代码 } }

} // 显示和按钮查询代码结束

} // 电机运行循环结束

} //主循环结束

// 不应执行到此处 while(1){} }

//--------------------------------------------------------------------//

对 Id控制环、 Iq控制环和速度控制环中的每个控制环执行一次 PI迭代 void DoControl( void ) {

short i;

// 假定 ADC通道 0具有来自速度电位器( AN7)的有符号小数格式原始 A/D值

ReadSignedADC0( &ReadADCParm );

// 设定给定速度

if(uGF.bit.ChangeSpeed)

CtrlParm.qVelRef = ReadADCParm.qADValue/8; else

CtrlParm.qVelRef = ReadADCParm.qADValue/16;

if( uGF.bit.OpenLoop ) {

// 开环:强制旋转角、 Vd和 Vq

if( uGF.bit.ChangeMode ) {

// 改变为开环模式

uGF.bit.ChangeMode = 0; // 同步角度

OpenLoopParm.qAngFlux = CurModelParm.qAngFlux;

// 未使用 VqRef和 VdRef CtrlParm.qVqRef = 0; CtrlParm.qVdRef = 0; }

OpenLoopParm.qVelMech = CtrlParm.qVelRef;

// 为 CorrectPhase所需的给定值和符号 // 计算 1.15格式的转子磁通旋转角。

CurModelParm.qVelMech = EncoderParm.qVelMech; CurModel();

ParkParm.qVq = 0;

if( OpenLoopParm.qVelMech >= 0 ) i = OpenLoopParm.qVelMech; else

i = -OpenLoopParm.qVelMech;

uWork = i <<2;

if( uWork > 0x5a82 ) uWork = 0x5a82;

if( uWork < 0x1000 ) uWork = 0x1000;

ParkParm.qVd = uWork;

OpenLoop();

ParkParm.qAngle = OpenLoopParm.qAngFlux; }

else

// 闭环矢量控制 {

if( uGF.bit.ChangeMode ) {

// 改变为闭环模式

uGF.bit.ChangeMode = 0;

// 同步角度以及准备 qdImag

CurModelParm.qAngFlux = OpenLoopParm.qAngFlux; CurModelParm.qdImag = ParkParm.qId; }

// 根据电流模型计算角度

CurModelParm.qVelMech = EncoderParm.qVelMech;

CurModel();

ParkParm.qAngle = CurModelParm.qAngFlux;

// 计算弱磁控制模式的 qVdRef FdWeakening();

// 设定给定速度

// 如果应用运行在转矩模式,转速控制环将被忽略。

// 从电位器读取的转速给定值将直接用作转矩给定 VqRef。 #ifdefTORQUE_MODE

CtrlParm.qVqRef = CtrlParm.qVelRef;

#else

// 通过对比每一次转速计算中的中断数和速度计数采样数来确定是否可以获得新的转速信息。 //

// 如果可以获得新的转速信息,则计算新的转速值并执行 // 转速控制环。

if(EncoderParm.iVelCntDwn == EncoderParm.iIrpPerCalc) {

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

共分享92篇相关文档

文档简介:

if( uGF.bit.Btn3Pressed ) { // 按钮刚释放 uGF.bit.Btn3Pressed = 0; uGF.bit.ChangeSpeed = !uGF.bit.ChangeSpeed; pinLED3 = uGF.bit.ChangeSpeed; LATGbits.LATG0 = 1; } } // 按钮 4不具备任何功能 if(pinButton4) { if( !uGF.bit.Btn4Pressed ) uGF.bit.Btn4Pressed = 1; } else { if( uGF.bit.Btn4Pressed ) { // 按钮

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价: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