CN104333287A - 一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 - Google Patents
一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 Download PDFInfo
- Publication number
- CN104333287A CN104333287A CN201410624554.9A CN201410624554A CN104333287A CN 104333287 A CN104333287 A CN 104333287A CN 201410624554 A CN201410624554 A CN 201410624554A CN 104333287 A CN104333287 A CN 104333287A
- Authority
- CN
- China
- Prior art keywords
- time
- width modulation
- implementation
- pulse width
- code segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提出了一种DSP矢量控制系统脉宽调制策略代码执行时间测量方法,具体涉及一种基于DSP的电机矢量控制系统中,脉宽调制方法代码实时执行时间的测量方法,其特征是:可以在电机控制系统运行的情况下实时测量代码段的执行时间;电机矢量控制系统稳态运行条件下,通过设定一电角度变化步长,可以对脉宽调制方法代码段在单个电角度周期内各个电角度值下的执行时间进行测量;无需其他外围设备,利用DSP本身的资源实现整个测量过程。本发明提出的方法具有测量结果精确、实时性好、测量方法简单等优点。
Description
技术领域
本发明涉及电机控制领域,尤其是利用DSP控制器自身的资源实现基于DSP的电机矢量控制系统脉宽调制策略代码执行时间的实时测量。
背景技术
在电机矢量控制系统中,脉宽调制技术是实现整个控制过程中的重要一环,国内外的众多学者都对脉宽调制技术进行了研究,提出了不同的脉宽调制方式。在使用DSP实现电机的矢量控制算法时,可以采用不同的脉宽调制调制方式。实际应用中,为了提高DSP的执行效率,在实现相同控制效果的前提下,希望脉宽调制算法代码段的执行时间尽量短。因此,为了比较不同脉宽调制方法的执行效率,需要对DSP控制系统中脉宽调制方法代码段执行时间进行精确测量。电机矢量控制系统中,脉宽调制方法的作用是根据给定的参考电压矢量计算得出逆变器的三相桥臂占空比,进而控制逆变器的开关管动作,使实际电压矢量逼近参考电压矢量。在基于DSP的矢量控制系统中,脉宽调制算法用到的输入变量有四个:直轴参考电压Udref、交轴参考电压Uqref、转子电角度θ、逆变器直流母线电压Udc。在电机矢量控制系统稳态运行时,直轴参考电压Udref、交轴参考电压Uqref、逆变器直流母线电压Udc近似处于稳定值,转子电角度随转子位置变化,则转子电角度成为影响脉宽调制算法代码段执行时间的重要因素,因此,需要对脉宽调制算法代码段执行时间在一个电角度周期内(0到2π)进行测量。现有的测量DSP代码段执行时间的方法为:在CCS软件中,在某段代码的起始和结束位置处设置断点,给定一初始状态,单步运行来测量代码段的执行机器周期数。但是,上述方法存在以下缺点,第一、不能在电机矢量控制系统实际运行的情况下,对所测代码段的执行时间进行实时测量;第二、不能连续测量,需要每次更改给定条件然后单次测量,测量过程繁琐。如果想要对电机矢量控制系统脉宽调制算法在0到2π电角度周期内的执行时间进行测量,则需选定一步长,进行多次测量,测量过程耗时,并且不能完全模拟电机实际运行状况。
综上所述,目前亟需一种可以在基于DSP的电机矢量控制系统实时运行的条件下,对代码段的执行时间进行精确测量的方法,尤其是一种电机矢量控制系统处于稳态运行时,脉宽调制方法代码段在一个电角度周期内(0到2π)执行时间的测量方法。
发明内容
发明目的:本发明的目的是提出一种基于DSP的电机矢量控制系统处于稳态运行时,脉宽调制方法代码段在单个电角度周期内(0到2π)执行时间的测量方法。
技术方案:本发明的一种DSP矢量控制系统脉宽调制策略代码执行时间测量方法,通过利用DSP本身的内部资源,实现在单个电角度周期内对电机矢量控制系统脉宽调制策略代码段执行时间的测量。首先,在程序中对所测程序段的开始位置与结束位置处对GPIOx口输出电平进行取反,通过对捕获模块CAPy的配置,实现对GPIOx口输出的的周期方波信号中代表代码段执行时间的电平持续时间进行捕获测量,达到代码段单次运行的执行时间;利用电机矢量控制系统电机稳态运行转速n、电机极对数p、开关频率f1计算出单个电角度周期内脉宽调制策略代码段执行时间采样点数M1,从而可以在电机稳态运行时,对影响调制算法代码段执行时间的转子电角度值在0到2π范围内进行全面计算。具体步骤如下:
1)对DSP的捕获模块CAPy进行初始化,使之工作于捕获状态;
2)对DSP的GPIOx口进行配置,使其工作在输出电平可控的状态,可以使用#define预处理宏定义命令,定义GPIOx口为T_flag;
3)对DSP中需要测量执行时间的代码段进行设置,在电机矢量控制系统中,在脉宽调制算法代码段的开头处配置GPIOx口输出低电平,即T_flag=0,在脉宽调制算法代码段的结尾处配置GPIOx口输出高电平,即T_flag=1,则GPIOx口输出的周期方波信号中,每周期中低电平的时间即为脉宽调制算法代码段的执行时间;
4)将GPIOx口输出的信号接入到捕获模块CAPy,通过CAPy模块先后对GPIOx口输出的周期方波信号的下降沿和上升沿进行捕获,并在捕获中断服务程序中,计算GPIOx口输出的周期方波信号每周期的低电平时间值,用机器周期数表示,所述的捕获中断频率配置与GPIOx口输出的周期方波信号频率相同;
5)根据电机矢量控制系统的开关频率f1,即系统主控制中断的频率、电机稳态运行的转速n、电机的极对数p,算出单个电角度周期内,即转子电角度0到2π范围内,脉宽调制算法代码段执行时间测量的采样点数M1。其中,单个电角度周期的时间T为:T=60/np,则所述单个电角度周期内脉宽调制算法代码段执行时间测量的采样点数M1的计算式为:M1=T*f1=60*f1/np;
6)步骤5)所述单个电角度周期内脉宽调制算法代码段执行时间测量的采样点数的计算式是在矢量控制系统中每个开关周期内都进行一次代码段执行时间测量的前提下得到的,由于开关周期相对于电角度周期值要小很多,为了减少单个电角度周期内代码执行时间的采样点数,在主控制中断中设置一分频系数K,即K个开关周期才进行一次脉宽调制算法代码段执行时间的测量,则单个电角度周期内,所述脉宽调制算法代码段执行时间测量的采样点数M2为:M2=M1/K,则对脉宽调制方法代码段执行时间进行测量所选取的转子电角度变化步长为:S=2π/M2;
所述在主控制中断中设置分频系数K的具体方法为:定义一计数变量count,一标志变量Cap_F,两者初始化均为0,在脉宽调制算法代码段的开头处,设置Cap_F=0,count++,只有当count==K时,配置GPIOx口输出低电平,即T_flag=0。在给T_flag赋0之前,给Cap_F赋1,即Cap_F=1,给count赋0,即count=0;在脉宽调制算法的结尾处,设置判断语句,只有当Cap_F==1时,GPIOx口输出高电平,即T_flag=1,这样便可以设置捕获中断每K个开关周期进行一次脉宽调制策略代码段执行时间计算;
7)定义两个数组Time[M2]和Posn[M2],在CAPy的捕获中断服务程序中设置一标志位Time_Cap,定义一时间计算次数计数变量Cap_count,当Time_Cap==1时,捕获中断开始进行代码执行时间的计算,并对计算次数进行计数,即Cap_count++,将代码执行时间存入变量Time[Cap_count],同时记录下此次脉宽调制算法计算所用的电角度值θ,存入变量Posn[Cap_count]。当采样点数达到目标值M2后,则停止代码执行时间的计算以及Cap_count值的更新;
所述数组Time[M2]、Posn[M2],标志位Time_Cap,计数变量Cap_count的初始值均为0。
有益效果:本发明适用于基于DSP的电机矢量控制系统中,能够在电机稳态运行的状态下,实现单个电角度周期内对脉宽调制算法代码段的执行时间进行测量。具体到本发明的技术方案,具有以下优点:
1、可在电机运行的状态下实时测量。在电机矢量控制系统实时运行的情况下,对代码段的时间进行测量,从而更能反映实际运行中代码段的执行效率。对电机矢量控制系统,可实现单个电角度周期内脉宽调制方法代码段执行时间的测量,从而可评估转子电角度值与代码段执行时间的关系。
2、测量方法简单,无需其他外围设备。整个测量过程只需要一台DSP控制器,利用DSP自身的资源实现整个测量过程,无需借助其他设备。
3、测量结果精确,测量结果用机器周期数表示,精确到单个机器周期。
附图说明
图1是程序中对所测代码段进行相关设置的流程图;
图2是捕获模块捕获中断服务程序流程图;
图3是具体实施例永磁电机矢量控制系统SVPWM调制策略代码段执行时间测量结果。
具体实施方式
下面结合具体实施例和附图来详细说明本发明。
具体举例来说:基于DSP28355搭建永磁电机矢量控制系统实验平台,DSP28335的主频为150MHz,脉宽调制算法采用传统七段式SVPWM调制方式,永磁电机的极对数p=4,控制系统的开关频率为4kHz,给定稳态运行状态为:转速n=300r/min,负载转矩TL=10N.m。定义GPIO11口为T_flag,在SVPWM调制方式的程序开头处设置GPIO11口输出低电平,即T_flag=0,在SVPWM调制方式的程序结束处设置GPIO11口输出高电平,即T_flag=1,设定脉宽调制算法代码段执行时间在单个电角度周期内(0到2π)的测量点数为25个,则电角度变化步长为2π/25≈0.25,可计算分频系数K=8,采用上述设置后,程序的流程图如图1所示。配置捕获模块1,即eCAP1工作于捕获模式,对捕捉事件1(CEVT1)和捕捉事件2(CEVT2)进行配置,在下降沿(FE)触发捕捉事件1,在上升沿(RE)触发捕捉事件2。配置eCAP控制寄存器2,在连续模式下,捕捉事件2之后返回,同时配置eCAP1中断使能寄存器(ECEINT),允许捕捉事件2作为中断源,则eCAP1模块捕获中断的频率与GPIO11口输出的周期方波信号的频率相同。eCAP1捕获中断的中断服务程序流程图如图2所示。当开始捕获的标志位Time_cap==1时,开始对GPIO11口输出的周期方波信号中的下降沿和上升沿分别进行捕获,并计算出低电平的持续时间,将时间值存入数组Time[25],同时将此次脉宽调制算法计算所用的转子电角度θ值存入数组Posn[25],从而实现在单个电角度周期内(0到2π)对脉宽调制算法代码段的执行时间的测量。具体步骤如下:
1)对DSP28335的捕获模块eCAP1进行初始化,使之工作于捕获状态;
2)对DSP28335的GPIO11口进行配置,使其工作在输出电平可控的状态,使用#define预处理宏定义命令,定义GPIO11口为T_flag;
3)对DSP28335中脉宽调制算法代码段进行相关设置,在脉宽调制算法代码段的开头处配置GPIO11口输出低电平,即T_flag=0,在脉宽调制算法代码段的结尾处配置GPIO11口输出高电平,即T_flag=1,则GPIO11输出的周期方波信号中,每周期中低电平的时间即为脉宽调制算法代码段的执行时间;
4)将GPIO11输出的信号接入到捕获模块eCAP1,通过eCAP1模块先后对GPIO11输出的周期方波信号的下降沿和上升沿进行捕获,并在捕获中断服务程序中计算GPIO11输出的周期方波信号每周期的低电平时间值,用机器周期数表示,所述的捕获中断频率配置与GPIO11输出周期方波信号频率相同;
5)根据电机矢量控制系统的开关频率f1=4kHz,电机稳态运行的转速n=300r/min,电机的极对数p=4,算出单个电角度周期内,即转子电角度0到2π范围内,脉宽调制算法代码段执行时间测量的采样点数M1。其中,电角度周期的时间T为:T=60/np=50ms,则所述脉宽调制算法代码段执行时间测量的采样点数M1的计算式为:M1=T*f1=200;
6)为了减少单个电角度周期内代码执行时间的采样点数,在主控制中断中设置一分频系数K=8,即8个开关周期才进行一次脉宽调制算法代码段执行时间的测量,则单个电角度周期内,所述脉宽调制算法代码段执行时间测量的采样点数M2为:M2=M1/8=25,则对脉宽调制方法代码段执行时间进行测量所选取的转子电角度(弧度值)变化步长为:S=2π/25≈0.25;
所述在主控制中断中设置分频系数K=8的具体方法为:定义一计数变量count,一标志变量Cap_F,两者初始化均为0,在脉宽调制算法代码段的开头处,设置Cap_F=0,count++,只有当count==K(K=8)时,配置GPIO11口输出低电平,即T_flag=0。在给T_flag赋0之前,给Cap_F赋1,即Cap_F=1,给count赋0,即count=0;在脉宽调制算法的结尾处,设置判断语句,只有当Cap_F==1时,GPIO11口输出高电平,即T_flag=1,这样便可以设置捕获中断每8个开关周期进行一次脉宽调制策略代码段执行时间计算;
7)定义两个数组Time[25]和Posn[25],在eCAP1的捕获中断服务程序中设置一标志位Time_Cap,定义一时间计算次数计数变量Cap_count,当Time_Cap==1时,捕获中断开始进行代码执行时间的计算,并对计算次数进行计数,即Cap_count++,将代码执行时间存入变量Time[Cap_count],同时记录下此次脉宽调制算法计算所用的电角度值θ,存入变量Posn[Cap_count]。当采样点数达到目标值25后,则停止代码执行时间的计算以及Cap_count值的更新,中断服务程序的流程图如图2所示。本实施例中,M2=25;
所述数组Time[25]、Posn[25],标志位Time_Cap,计数变量Cap_count的初始值均为0。在基于DSP28335的永磁电机矢量控制系统中,给定一稳态运行状态,给定转速n=300r/min,负载转矩TL=10N.m,在系统进入稳态运行后,给Time_Cap赋1,即eCAP1捕获中断开始对脉宽调制算法代码段的执行时间进行测量,测量结果如图3所示。由于程序中的三角函数采用查表法计算,精度为电角度弧度值的小数点后一位,因此作图中只对转子电角度值精确到小数点后一位。
以上所述仅为本发明的一种实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。
Claims (2)
1.一种数字信号处理DSP控制器代码实时执行时间的测量方法,其在电机矢量控制系统处于稳态运行的情况下,对转子电角度在0到2π范围内变化时相应脉宽调制算法代码段的执行时间进行测量,所述稳态运行条件是指电机的转速为稳定值,电机的负载转矩为稳定值,所述测量方法包含以下步骤:
1)对DSP的捕获模块CAPy进行初始化,使之工作于捕获状态;
2)对DSP的GPIOx口进行配置,使其工作在输出电平可控的状态,使用#define预处理宏定义命令,定义GPIOx口为T_flag;
3)对DSP中需要测量执行时间的代码段进行设置;
在电机矢量控制系统中,在脉宽调制算法代码段的开头处配置GPIOx口输出低电平,即T_flag=0,在脉宽调制算法代码段的结尾处配置GPIOx口输出高电平,即T_flag=1,则GPIOx口输出的周期方波信号中,每周期中低电平的时间即为脉宽调制算法代码段的执行时间;
4)将GPIOx口输出的信号接入到捕获模块CAPy,通过CAPy模块先后对GPIOx口输出的周期方波信号的下降沿和上升沿进行捕获,并在捕获中断中,计算GPIOx口输出的周期方波信号每周期的低电平时间值,用机器周期数表示,所述的捕获中断频率配置与GPIOx口输出的周期方波信号频率相同;
5)根据电机矢量控制系统的开关频率f1,即系统主控制中断的频率、电机稳态运行的转速n、电机的极对数p,算出单个电角度周期内,即转子电角度0到2π范围内,脉宽调制算法代码段执行时间测量的采样点数M1,其中,单个电角度周期的时间T为:T=60/np,则所述单个电角度周期内脉宽调制算法代码段执行时间测量的采样点数M1的计算式为:M1=T*f1=60*f1/np;
6)步骤5)所述单个电角度周期内脉宽调制算法代码段执行时间测量的采样点数的计算式是在矢量控制系统中每个开关周期内都进行一次代码段执行时间测量的前提下得到的,由于开关周期相对于电角度周期值要小很多,为了减少单个电角度周期内代码执行时间的采样点数,在主控制中断中设置一分频系数K,即K个开关周期才进行一次脉宽调制算法代码段执行时间的测量,则单个电角度周期内,所述脉宽调制算法代码段执行时间测量的采样点数M2为:M2=M1/K,则对脉宽调制方法代码段执行时间进行测量所选取的转子电角度变化步长为:S=2π/M2;
所述在主控制中断中设置分频系数K的具体方法为:定义一计数变量count,一标志变量Cap_F,两者初始化均为0,在脉宽调制算法代码段的开头处,设置Cap_F=0,count++,只有当count==K时,配置GPIOx口输出低电平,即T_flag=0。在给T_flag赋0之前,给Cap_F赋1,即Cap_F=1,给count赋0,即count=0;在脉宽调制算法的结尾处,设置判断语句,只有当Cap_F==1时,GPIOx口输出高电平,即T_flag=1,这样便可以设置捕获中断每K个开关周期进行一次脉宽调制策略代码段执行时间计算;
7)定义两个数组Time[M2]和Posn[M2],在CAPy的捕获中断服务程序中设置一标志位Time_Cap,定义一时间计算次数计数变量Cap_count,当Time_Cap==1时,捕获中断开始进行代码执行时间的计算,并对计算次数进行计数,即Cap_count++,将代码执行时间存入变量Time[Cap_count],同时记录下此次脉宽调制算法计算所用的电角度值θ,存入变量Posn[Cap_count],当采样点数达到目标值M2后,则停止代码执行时间的计算以及Cap_count值的更新;
所述数组Time[M2]、Posn[M2],标志位Time_Cap,计数变量Cap_count的初始值均为0。
2.根据权利要求1所述的基于DSP代码实时执行时间的测量方法,其中对DSP中需要测量执行时间的代码段进行设置时,电机矢量控制系统中脉宽调制算法代码段的开头处配置GPIOx口输出高电平,即T_flag=1,在脉宽调制算法代码段的结尾处配置GPIOx口输出低电平,即T_flag=0,则GPIOx口输出的周期方波信号中,每周期中高电平的时间即为脉宽调制算法代码段的执行时间,捕获模块CAPy则配置为先后对GPIOx口输出的周期方波信号的上升沿和下降沿进行捕获,获取高电平持续时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410624554.9A CN104333287B (zh) | 2014-11-07 | 2014-11-07 | 一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410624554.9A CN104333287B (zh) | 2014-11-07 | 2014-11-07 | 一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104333287A true CN104333287A (zh) | 2015-02-04 |
CN104333287B CN104333287B (zh) | 2016-09-07 |
Family
ID=52407958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410624554.9A Active CN104333287B (zh) | 2014-11-07 | 2014-11-07 | 一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104333287B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108803406A (zh) * | 2018-04-04 | 2018-11-13 | 山东大学 | 用于动力电池测试与模拟仪器的任务分层控制系统及方法 |
CN111342721A (zh) * | 2020-03-31 | 2020-06-26 | 浙江众邦机电科技有限公司 | 一种永磁同步电机的控制方法、装置及相关组件 |
CN113327412A (zh) * | 2021-08-04 | 2021-08-31 | 深圳宇凡微电子有限公司 | 无线信号解码方法、装置、设备及系统 |
-
2014
- 2014-11-07 CN CN201410624554.9A patent/CN104333287B/zh active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108803406A (zh) * | 2018-04-04 | 2018-11-13 | 山东大学 | 用于动力电池测试与模拟仪器的任务分层控制系统及方法 |
CN111342721A (zh) * | 2020-03-31 | 2020-06-26 | 浙江众邦机电科技有限公司 | 一种永磁同步电机的控制方法、装置及相关组件 |
CN113327412A (zh) * | 2021-08-04 | 2021-08-31 | 深圳宇凡微电子有限公司 | 无线信号解码方法、装置、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104333287B (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101174811B (zh) | 一种采用空间矢量脉冲宽度调制的电机控制方法和装置 | |
CN103701382B (zh) | 一种基于fpga的永磁同步电机电流环带宽扩展装置 | |
CN103345245B (zh) | 多功能电机控制策略测试实验装置及其应用 | |
CN105680742A (zh) | 一种无刷直流电机无位置传感器转子位置识别系统及方法 | |
WO2017107645A1 (zh) | 相电流信号采样方法和装置、电机控制器及电动汽车 | |
CN102624276A (zh) | 一种新颖的交流伺服逆变器死区效应补偿的方法 | |
CN102315814A (zh) | 一种基于霍尔位置传感器的电机矢量控制方法 | |
CN110011576A (zh) | Bldc电机foc控制方法、装置及控制器、存储介质 | |
CN102075131A (zh) | 同步电动机容错运行时低速及零速转子位置观测方法及装置 | |
CN109239635B (zh) | 一种永磁同步电机旋变零位标定系统及标定方法 | |
CN105449639B (zh) | 基于永磁同步电机驱动器的电压保护控制方法及装置 | |
CN103856132A (zh) | 一种交流伺服永磁同步电机控制系统 | |
CN104333287A (zh) | 一种dsp矢量控制系统脉宽调制策略代码执行时间测量方法 | |
CN101635552B (zh) | 一种两相步进电机的驱动器及驱动控制方法 | |
CN110609230A (zh) | 一种永磁同步电机的功率级模拟驱动系统及方法 | |
CN105958891A (zh) | 一种基于dsp+cpld的开关磁阻电机运动控制方法 | |
CA2587717A1 (en) | Computing method of motor model, motor simulation method, motor simulation apparatus, motor-model computing program, simulation method and simulation program | |
CN106384557A (zh) | 一种方波驱动永磁型无刷直流电机模拟系统 | |
CN203457094U (zh) | 一种交流伺服永磁同步电机控制系统 | |
CN105048512A (zh) | 永磁同步电机并网运行控制方法、系统及准同步控制器 | |
CN106292634A (zh) | 开关型功率放大装置及模拟变流控制方法 | |
CN106652694A (zh) | 一种正弦波永磁同步电机模拟系统 | |
Dufour et al. | Real-time simulation on FPGA of a permanent magnet synchronous machine drive using a finite-element based model | |
CN103532457A (zh) | 一种基于硬件的磁场定向控制(foc)装置和方法 | |
CN202737796U (zh) | 一种无刷直流电机无位置传感器控制装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |