PMSM程序解读

1.OpenPWM() ;和ClosePWM();的解析:
 在 void  HVDMC_Protection( void )中,
最后一步
// Clear any spurious OV trip
      EPwm1Regs.TZCLR.bit.OST = 1;
此处在软件层面,清除TZ的中断标志位,为了检测新的错误的产生
void ClosePWM(void) 
  {
    EALLOW;
    EPwm1Regs.TZFRC.bit.OST=1;
    EDIS;
}
此处用软件强制给中断标志位赋值,来使系统产生中断,从而关闭PWM。

问题:为什么要先清除标志位,然后再赋值来关断PWM?

    clarke1.As = _IQmpy((_IQmpy2(_IQ14toIQ(AdcMirror.ADCRESULT0+AdcMirror.ADCRESULT1+AdcMirror.ADCRESULT2+AdcMirror.ADCRESULT3)-offsetA)),_IQ(0.9090909*2.0));
    clarke1.Bs = _IQmpy((_IQmpy2(_IQ14toIQ(AdcMirror.ADCRESULT4+AdcMirror.ADCRESULT5+AdcMirror.ADCRESULT6+AdcMirror.ADCRESULT7)-offsetB)),_IQ(0.9090909*2.0));
   //12bit AD 看做Q12格式,4个12bit AD结果相加,看做Q14格式,相当于除以4    
offsetA =_IQmpy(K1,offsetA)  +_IQmpy(K2,_IQ14toIQ(AdcMirror.ADCRESULT0+AdcMirror.ADCRESULT1+AdcMirror.ADCRESULT2+AdcMirror.ADCRESULT3));
_IQ14toIQ:全局IQ等于24,为什么这里的IQ是等于12?  由于ADC的分辨率只有12位,所以此结果的寄存器高12位是有效的(此处只保留了高12位?)

1.clarke变换中的取值范围

而下面这段,是得到IU和IV

#ifdef DSP2833x_DEVICE_H

clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.

clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.

#endif                     // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)  

至于楼主问的3.0/3.3),是这样的:

基于同一个开发板,TI 提供了F2803X和F2833X的例程,而F2803X的ADC量程是3.3V,而F2833X的量程是3.0V,但在“HVPM_Sensorless-Settings.h”中BASE_CURRENT是针对ADC输入脚为3.3V时的最大电流,因此在用F2833X的时候要乘以(3.0/3.3)这个比例系数。

 clarke1.As = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT1)-offsetA); // Phase A curr.
AdcResult.ADCRESULT1是12位的AD,范围是0~4096,_IQ12toIQ,此处GLOBAL_Q=24,所以相当于除以4096(2^12),AdcResult.ADCRESULT1此时的范围是(0-1),在减去偏移offsetA=0.5,范围就是(-0.5-0.5)
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
这个*0.00024414的表示方法相当于除以12, (AdcMirror.ADCRESULT1)*0.00024414-offsetA出来的范围是(-0.5-0.5),乘以2,范围变成(-1-1)!!乘以0.909的原理如上。

2.
UgPU = _IQmpy(_IQ12toIQ(AdcMirror.ADCRESULT8)- offsetIg,_IQ(6.384922));    //标幺值为180V
IgPU = _IQmpy(_IQ12toIQ(AdcMirror.ADCRESULT9)- offsetIg,_IQ(1.8181818));  //标幺值为25A
UdcPU= _IQmpy(_IQ12toIQ(AdcMirror.ADCRESULT10),_IQ(6.8));     //标幺值为180V


怎么进行标幺的?
__IQmpy(((long) (AdcMirror.ADCRESULT8) << (24 - 12))- offsetIg,(long) ((6.384922) * 16777216.0L),24)  
#define   _IQ20toIQ(A) ((long) (A) << (GLOBAL_Q - 20))  此处转移的是小数点的位置? 

if(UdcPU > _IQ(1.33))//如果母线电压大于240V,转子回零标志置位


Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。  
            
电动机软起动是通过采用降压、补偿或变频等技术手段,实现电动机及机械负载的平滑起动,减少起动电流对电网的影响程度,使电网和机械系统得以保护。\


http://blog.sina.com.cn/s/blog_b3e232680102x5x1.html

https://e2echina.ti.com/question_answer/microcontrollers/c2000/f/56/t/99766

https://e2echina.ti.com/question_answer/microcontrollers/c2000/f/56/p/13402/80623#pi239031350=2

  • 1
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本
必过源码是一种用于控制永磁同步电机(PMSM)的程序代码。它是通过对电机的电流、速度和位置进行监测和控制,来实现对电机的精确控制和调节。 在必过源码中,首先需要通过传感器或者其他方式获取电机当前的状态信息,包括电流、速度和位置等参数。然后,根据预先设定的控制算法,通过调节电机的电流和转矩来实现对电机的精确控制。 必过源码通常包括以下几个主要部分: 1. 传感器数据的读取:通过接口或者传感器模块,将电机当前的状态信息传输给控制系统。 2. 控制算法:根据电机的状态信息和预设的目标值,进行计算和控制,调节电机的输出电流和转矩。 3. 反馈机制:通过实时监测电机的状态信息和输出,实现对控制过程的反馈调整,以确保电机的精确控制和稳定运行。 4. 输出控制信号:根据计算结果,以适当的方式输出控制信号,调节电机的电流、速度和位置等。 必过源码的编写需要具备一定的电机控制知识和编程能力。在实际应用中,可以根据具体的电机型号和应用需求,进行必过源码的修改和优化,以实现更好的电机控制效果和性能。 总之,必过源码是一种用于控制PMSM程序代码,通过对电机的状态信息进行监测和调节,实现对电机的精确控制和调节。编写必过源码需要掌握相关的电机控制知识和编程技巧,以满足具体应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值