第一范文网 - 专业文章范例文档资料分享平台

dsp30代码

来源:用户分享 时间:2025/9/20 17:21:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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代码 的文档
dsp30代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1sqcv57k9u7wp9920sys_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top