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

//速度闭环PID计算程序

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

void Speed_Pid(void)

{

//DesiredSpeed = Motor_Speed/14;

if(Speed >= DesiredSpeed)    //计算偏差

{

SpeedError = Speed - DesiredSpeed;  //测量值大于给定值

Flags.Speed_error_dir = 1;          //偏差为负数

}

else

{

SpeedError = DesiredSpeed - Speed;  //给定值大于测量值

Flags.Speed_error_dir= 0;           //偏差为正负数

}

Txbuff[4] = SpeedError >>8; //将速度偏差值存入发送缓存

Txbuff[5] = SpeedError & 0x00FF;

//Speed = 0x0000;   //得到偏差后,将测量到得数据清空

if(Flags.Speed_error_dir ==0)    //偏差为正数,则积分数据和偏差相加

{

SpeedIntegral = SpeedIntegral + SpeedError;  //对偏差进行积分

}

else  //偏差为负数,则积分数据和偏差相减

{

if(SpeedIntegral>=SpeedError)  //积分大于偏差

{

SpeedIntegral = SpeedIntegral - SpeedError;

}

else //偏差大于积分

{

SpeedIntegral = SpeedError - SpeedIntegral;

}

}

if(SpeedIntegral >2000)  //积分限幅

{

SpeedIntegral = 2000;

}

Speed_PID = (SpeedError + SpeedIntegral*0 )/100;

Txbuff[8] = Speed_PID >>8;  //将电机速度PID数据存入发送缓存

Txbuff[9] = Speed_PID & 0x00FF;

这是速度环的代码

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

//电流闭环PID计算程序

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

void Current_Pid(void)

{

DesiredCurrent = Speed_PID;    //将速度环输出转换为电流环输入

if(Current >= DesiredCurrent)   //计算电流偏差

{

CurrentError = Current - DesiredCurrent;  //测量值大于给定值

Flags.Current_error_dir = 1;              //偏差为负

}

else

{

CurrentError = DesiredCurrent - Current;  //给定值大于测量值

Flags.Current_error_dir= 0;               //偏差为正

}

//Current = 0x0000;   //得到偏差后,将测量到的数据清空

if(Flags.Speed_error_dir ==0)    //根据偏差方向,决定积分数据和偏差是相加还是相减

{

CurrentIntegral = CurrentIntegral + CurrentError;  //对偏差进行积分

}

else

{

if(CurrentIntegral>=CurrentError)

{

CurrentIntegral = CurrentIntegral - CurrentError;

}

else

{

CurrentIntegral = CurrentError - CurrentIntegral;

}

}

if(CurrentIntegral >2000)  //积分限幅

{

CurrentIntegral = 2000;

}

Current_PID = (CurrentError + CurrentIntegral/20 )/20;

if(Flags.Speed_error_dir==0)

{

if(DutyCycle >= 65000)

{

DutyCycle = 65535;

}

else

{

DutyCycle = Current_PID + DutyCycle;    //电机加速

if(DutyCycle >=65000)

{

DutyCycle = 65535;

}

}

}

else                                        电机减速

{

if(DutyCycle >= Current_PID)

{

DutyCycle = DutyCycle - Current_PID;

}

else

{

DutyCycle = Current_PID - DutyCycle;

}

}

PDC1 = DutyCycle;

PDC2 = PDC1;

PDC3 = PDC1;

Txbuff[6] = DutyCycle >>8; //将电机占空比数据存入发送缓存

Txbuff[7] = DutyCycle & 0x00FF;

这是电流环的代码

bldc不同载波频率_BLDC的双闭环老调不好,求帮助相关推荐

  1. BLDC方波控制双闭环Simulink仿真模型

    BLDC双闭环Simulink仿真模型 无刷直流电机方波控制双闭环Simulink仿真模型包括速度PI模块.电流PI模块.受控电压源模块.逆变器模块.永磁同步电机模块.速度检测模块.母线电流检测模块和 ...

  2. BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真

    BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真 有整理好的文档,资料很详细,可以直接用,有参考资料, ID:3230671328383169 ...

  3. BLDC双闭环(速度PI+电流PI)simulink仿真模型

    查看全文请访问: BLDC双闭环仿真(速度PI+电流PI) 内容摘要: 利用simulink搭建了BLDC双闭环控制模型,该模型的主要特点是: 1.速度环和电流环均采用PI控制器: 2.速度环和电流环 ...

  4. 永磁同步电机转速电流双闭环PI参数整定

    为实现,的完全解耦,将耦合造成的影响降到最低,需要给电流环增加前馈补偿环节.目前传统的矢量控制常见的方法有控制和最大转矩电流比控制,前者主要适用于表贴式三相永磁同步电机,后者主要用于内置式三相永磁同步 ...

  5. 龙门吊matlab,龙门吊车重物防摆双闭环PID控制设计.doc

    龙门吊车重物防摆双闭环PID控制设计 专业班级: 姓 名: 学 号: 指导教师: 设计日期: 龙门吊车重物防摆双闭环PID控制设计 要求报告中包括控制结构图,仿真结构图以及MATLAB仿真结果 时间设 ...

  6. matlab直流电机双闭环控制系统设计,基于MATLAB的直流电机双闭环调速系统设计毕业论文.doc...

    摘 要 直流电机双闭环调速系统是一个复杂的自动控制系统,是目前直流调速系统中的主流设备,具有调速范围宽.平稳性好.稳速精度高等优点,在理论和实践方面都是比较成熟的系统,在拖动领域中发挥着极其重要的作用 ...

  7. matlab charl,基于MATLAB/Simulink的双闭环SPWM变频调速系统仿真.pdf

    <电气开关>f2008.No.6) 21 文章编号:1004-289X(2008)06-0021-04 基于 MATLAB/Simulink的双闭环 SPWM变频调速系统仿真 梁新兰 ,刘 ...

  8. MATLAB/Simulink当真,开环Buck、闭环Buck、双闭环Buck仿真;开环控制的半桥LLC谐振变换器,全桥LLC谐振变换器和电压闭环控制的半桥LLC

    MATLAB/Simulink当真,开环Buck.闭环Buck.双闭环Buck仿真;开环控制的半桥LLC谐振变换器,全桥LLC谐振变换器和电压闭环控制的半桥LLC,全桥LLC. 还有基于不同控制方式的 ...

  9. PWM/转速单闭环/转速电流双闭环电机控制Simulink仿真

    PWM/转速单闭环/转速电流双闭环电机控制Simulink仿真 实验室之前一直在用BBB板和ARM板通过驱动器控制电机,最近实验室新买了一台DSPACE平台,具有运行参数可视化.实时性高等特点,但由于 ...

  10. matlab限幅器无饱和怎么设置,基于MATLAB 的直流电动机双闭环调速系统的仿真研究...

    基于MATLAB 的直流电动机双闭环调速系统 的仿真研究 摘要:本文介绍了利用MATLAB 软件中的Simulink 组件对直流电动机双闭环调速系统进行仿真,获得了反映系统性能的曲线,并对仿真 结果进 ...

最新文章

  1. 并查集 HDOJ 1232 畅通工程
  2. UVA11624 Fire!(bfs)
  3. Android网络框架OK3,Android网络框架---OkHttp3
  4. http 请求 与其同步与异步请求的通透讲解
  5. 《HTML5实战》——A.2 常见的HTML5规范
  6. PocketSphinx语音识别系统声学模型的训练与使用
  7. 辅助出售网站源码_出售网站意味着出售社区
  8. Jenkins 利用HTML Publisher plugin实现HTML文档报告展示
  9. php 各种进制表示,常用的进制有哪些
  10. oracle数据恢复
  11. java只有jre_只安装了jre可以运行java程序吗
  12. 雾霾天出行,如何精确避开“雷区”?2016 SODA数据侠十强
  13. 什么是老毛子固件 padavan中文叫什么
  14. MIS系统(13)- 系统管理之权限管理
  15. 海马汽车经销商管理系统技术解析(七)投诉处理
  16. 神奇的主力成本线!居然能将主力成本运筹帷幄?!
  17. 【JavaEE】JavaScript(WebAPI)
  18. Windows c# 生成验证码图片
  19. java unicode 转换_Java unicode中文编码转换和反转
  20. Win10系统设置炫酷下拉关机(其实很简单啦!)

热门文章

  1. 泰勒公式系列之一多项式逼近
  2. SD卡插入笔记本时显示位置不可用无法访问介质受写入保护请问怎样才能修复???
  3. 中国银行实习笔试面试经验
  4. 填空什么的月牙_“一( )月牙”填什么量词
  5. 高通APQ8009w LTR303_ALS 光感(sensor)兼容模式调试
  6. DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
  7. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积用scanf输人数据,输出计算结
  8. 内网服务器使用代理上网
  9. 专访丨华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA
  10. MeGUI中文版x64版本使用说明