找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

Flux电机有限元分析教程西莫团购入口 | 奖励入口当当网购物入口 | 奖励入口欢迎使用!西莫论坛App开放下载Motor-CAD电机多物理域设计教材购买入口 | 奖励入口
★新会员论坛须知★《西莫电机技术》第39期发售火热进行中Flux电机电磁阀有限元分析教程团购入口 | 奖励入口论坛微信公众平台欢迎入驻
西莫电机及相关产品供需交流群开放邀请★ 论坛VIP会员申请 ★Motor-CAD.MANATEE电磁热振动噪声教程 | 奖励入口西莫团队欢迎您的加盟!
宣传推广合作请联系QQ:25941174西莫电机论坛微信群正式开放Flux变压器与电抗器有限元分析团购入口 | 奖励入口西莫电机论坛技术版区QQ群汇总
查看: 82007|回复: 148

[求助] 【顶】TI例程PMSM3_1 level4 调试

 火... [复制链接]

该用户从未签到

发表于 2011-9-2 11:00 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
小弟在调试PMSM3_1的时候,前三步调试都OK,给电机发600转参考转速,电机能稳定运行,当准备调试第四步后,准备调试QEP模块,借鉴的是TI的QEP代码,将代码添加及运行之后发现电机是能正常运行的,但是电机转速不能实时显示?这是问题一
问题二在于DerectionQep这个变量发现一直在0~1之间变化,但是我给的是正转模式,不可能一直在0~1之间变化的,我能够确认我的硬件环境搭建是正确的,但是为何转速检测就不对了呢,而且转速在CCS上不能实时显示,需要定时刷新,反馈出来的转速PU值也有问题?
最后,不管level4调试后,直接进去level5调试,将各个模块弄好之后,给电机发600转速,一上电,电机就卡在那里,一直不懂,经检测PWM波形不对,有些IGBT上下桥臂都是导通的,不知道为什么?
我怀疑是转速检测有误导致了IQ电流输出有误,于是就形成了PWM波形不正确的问题?
但是,我采用的QEP代码是TI例程的,代码应该是正确的啊,但为何转速检测不行呢?
我只是将编码器脉冲改了下 其他都没变,因为我的编码器脉冲线程为1024的?
请高手能够及时帮助我 谢谢!
一直等待中~

评分

参与人数 1西莫币 +15 收起 理由
roccy + 15 多谢支持

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2011-9-2 15:09 | 显示全部楼层 来自: 中国江苏无锡
楼主把代码好好看看吧 不能全都套TI的吧
测试的方法 动动脑子就有了吧
你怀疑转速检测有问题 用一个检测仪器把转速量出来嘛
对照方针时看到的转速 看看不就知道有没有问题了 有问题 一步步反推 朝上找 一定找得到问题的
显示是标幺值 再建个变量 把标幺的反算回来不就好了
要定时刷新 一般编译软件都有实时监控功能吧 没有的话 用DA送出来 用串口送出来 用LED显示出来 都可以的吧

评分

参与人数 1西莫币 +15 收起 理由
roccy + 15 感谢您的参与

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-2 18:59 | 显示全部楼层 来自: 中国北京
很早前弄过这个例程,当时好像QEP出现过一些问题,最后发现是接地的问题。
仅供参考。

另外,最好先单独验证QEP输出的波形是否对,你可以转起来验证,也可以手来慢慢转,然后看QEP的编码。

遇到问题,最好的就是从根源慢慢找,总会找到的。

建议先不考虑level 5和IGBT波形,专心QEP
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-3 09:40 | 显示全部楼层 来自: 中国浙江杭州
各位,谢谢了,其实有个问题:
就是编码器出来的是A、B、Z三相脉冲,这三相脉冲就直接连接到QEP1、QEP2、CAP3就行了,但是有个问题 编码器出来的地也要接到控制板上QEP接口的地吗?
我现在调试是连着的?
其实我是这么采集转速的,我用的是多摩川的旋转变压器,采用其输出脉冲的模式A/B/Z脉冲来输入到控制板QEP中来进行转速采集的
用手动转 电机  用示波器看看是否QEP1引脚那里有没有方波脉冲是不是?
还有一个问题,琁变除了A/B/Z三相脉冲外,还有一个方向信号,这个信号也要接到QEP的接插件上吗/
在CCS怎么能够实时地显示转速PU值。看变量窗口 这个好像实时性不高。
希望能尽快帮助我,谢谢
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-3 10:53 | 显示全部楼层 来自: 中国重庆
请问你是怎么具体调试的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-3 13:08 | 显示全部楼层 来自: 中国浙江杭州
什么怎么调试的,我有驱动板,是可以用开关来控制电压输入的,然后利用旋变输出A/B/Z三相脉冲信号接入到QEP1/QEP2/CAP3中,然后点运行,但是发现转速检测不正确,同时在CCS上夜看不到是否能进入到CAP3中断中,同时DirectionQEP这个变量 一直在0~1之间变化。但是给定的电机是正转,不可能一直在变化的。目前所以的QEP代码基于TI的,我也看了N遍 程序应该没有多大问题,数据格式也看过了 就是找不到原因。同时,在CCS变量窗口上想看反馈的实际转速 却是0 Q0格式的,到底为什么呢?我确认A/B/Z脉冲都已经接入到QEP中了,但就是找不到原因。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-3 13:24 | 显示全部楼层 来自: 中国江苏无锡
旋变 多摩川的多数是一对极的 这个要注意 解码芯片出来的信号 首先要确认信号的质量 有时候会有干扰影响
方向信号应该不用了 AB信号可以表示的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-4 11:17 | 显示全部楼层 来自: 中国北京
...那个,多摩川的旋变,如果是指的磁阻式旋转变压器的话,还真没见有一对极的。不知道什么样子?是椭圆型转子的那个吗?
椭圆型的那个定子,代表有两个凸起,或者叫lobe

如果你用旋变的话,就不再是编码器的地了,你肯定用了AD12XX或者AU6XX芯片,把芯片的板子的地和DSP板子的地连一起,这个很重要。

然后还是先验证RDC (Resolver to Digital Converter)这块电路没有问题,自己手转,看A,B信号是否正常,以及能否出Z。
这些验证完以后,再次确认硬件平台无误以后,再验证QEP的结果。
旋变芯片产生的方向信号请忽略。
DirectionQEP信号也可以忽略。

一个很重要的问题,电机具体是怎么转的,不管软件里面如何显示的,电机到底转了没?是不是你手动转的?还是在电流驱动下转的?
另外,帮忙说下LEVEL 4到底是哪个调试,记得LEVEL 3是电流环吧,4是转速环吗?多谢。

另外,CCS没法很好的实时显示变量,即使实用实施模式,而且上高压直流母线以后,实时模式有一定的概率出故障,会导致管子直通,烧过三个控制器,其中一个用了灭火器。如果可能就用CAN。如果不可能,就手转慢点儿。。。

评分

参与人数 1西莫币 +15 收起 理由
roccy + 15 感谢您的参与

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-5 10:04 | 显示全部楼层 来自: 中国浙江杭州
首先,谢谢大家,在这里给我回复!
就像lyftcl所说的,已经确认过了 RDC (Resolver to Digital Converter)这块电路没有问题,自己手转看A,B信号有脉冲信号 正常,也能出Z脉冲;
同时,将解码板脉冲输出的地和DSP板上的地已经连在一起了,然后用示波器显示 A/B/Z脉冲信号都出现了,然后将A/B/Z分别接到DSP的QEP1/QEP2/CAP3 。然后再level4调试 level4 是电流闭环 转速开环 主要检测QEP模块和转速检测,前期几个步骤都调试OK了,现在就是QEP的问题
有个问题,琁变解码板连出来的A/B/Z/GND/DIR(方向)中的DIR还要不要连到DSP端?
然后给电机发转速指令,电机稳定运行,用TI的QEP程序但就是不能检测出电机转速,转速反馈出来也不是正确的?是不是由于琁转变压器与电机A相绕组的偏移角度 设置问题还是什么问题?
请各位帮忙
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 11:38 | 显示全部楼层 来自: 中国北京
DIR不需要连接到DSP端.
不是旋变的偏差问题(叫做旋变安装误差),这个只会影响转矩,不会影响转速检测。
我饭后看一下TI那个程序,稍侯再回复。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 12:58 | 显示全部楼层 来自: 中国北京
刚看了TI的那个历程,LEVEL 4是给个假速度指令,然后运转的。那样就好办了。
你现在已经明确了是QEP或者SPEED_FR的问题,所以针对假速度信号和真速度信号做对比。
先看EvaRegs.T2CNT,再看qep1.RawTheta的数值是否合理,然后看qep1.ElecTheta和 speed1.ElecTheta
这里有很重要的一点:你的电机是几对极的,旋变几对极的?旋变极对数必须是电机极对数的最小公约数。
如果不满足此点的话,换电机或者换旋变。
如果满足了最小公约数的关系,看上面speed1.ElecTheta和qep1.RawTheta之间是否满足了这个极对数比的关系。
如果以上都没问题的话,开始调试speed模块。
自己建一个变量叫什么OldElecTheta,别忘记在.h里面声明,然后把ElecTheta的数值每次赋值给OldElecTheta,自己通过Watch Window来观察数值是否正常。然后看Tmp1,这个是内部量,要引出来看。
我记得以前帮同事调过一段这个程序,最后发现是他Q格式之间转换有问题,所以最后输出的结果就永远是0了。

这样调试下来,应该能找到问题的,而且遇到问题一般也是这样从最根本一步一步来的顺序的,这是一位我很佩服的顾问教我的第一点。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 13:01 | 显示全部楼层 来自: 中国北京
还有一点,如果看到椭圆型转子的多摩川旋变,不要以为这是一对极的。这是两对极的。。。
尽管当时多摩川最大的代理艾尔特口口声声说这是一对极的。。。
这样的旋变,我们这用了不少了,所以椭圆转子是两对极的信息,还是可以保证的。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-5 13:03 | 显示全部楼层 来自: 中国浙江杭州
电机位置检测:
#include "DSP28_Device.h"
#include "f28xqep.h"
#include "f28xbmsk.h"

void  F28X_EV1_QEP_Init(QEP *p)
{

          EvaRegs.CAPCON.all = 0x9004;     /*设置捕捉单元 */
          EvaRegs.T2CON.all = 0x9872;    /*设置捕捉定时器*/
          EvaRegs.T2PR = p->         
    EvaRegs.EVAIFRC.bit.CAP3INT = 1;                             /*清除CAP3标志*/
          EvaRegs.EVAIMRC.bit.CAP3INT = 1;                     /*使能CAP3中断*/
          GpioMuxRegs.GPAMUX.all |= 0x0700;                    /*配置捕捉单元的引脚*/
}   


void F28X_EV1_QEP_Calc(QEP *p)
{
     long tmp;

     p->dir_QEP = 0x4000&EvaRegs.GPTCONA.all;
     p->dir_QEP = p->dir_QEP>>14;
     
     p->theta_raw = EvaRegs.T2CNT + p->cal_angle;
     
     tmp = (long)(p->theta_raw*p->mech_scaler);                  /* Q0*Q26 = Q26 */
     tmp &= 0x03FFF000;
     p->theta_mech = (int)(tmp>>11);                                 /* Q26 -> Q15 */
     p->theta_mech &= 0x7FFF;
             
     p->theta_elec = p->pole_pairs*p->theta_mech;                  /* Q0*Q15 = Q15 */
     p->theta_elec &= 0x7FFF;
     
}

void F28X_EV1_QEP_Isr(QEP *p)
{

     p->QEP_cnt_idx = EvaRegs.T2CNT;
     EvaRegs.T2CNT = 0;
     p->index_sync_flag = 0x00F0;

}



//    TMS320F2812电动机位置检测  QEP电路初始化参数及函数定义
//    文件名称:F28XQEP.H
//******************************************************************************
#ifndef __F28X_QEP_H__
#define __F28X_QEP_H__

#include "f28xbmsk.h"
/*                 初始化T2CON和CAPCON                 */
#define QEP_CAP_INIT_STATE    0x9004
#define QEP_TIMER_INIT_STATE (FREE_RUN_FLAG +          \
                          TIMER_DIR_UPDN +         \
                          TIMER_CLK_PRESCALE_X_1 + \
                          TIMER_ENABLE_BY_OWN +    \
                          TIMER_ENABLE +           \
                          TIMER_CLOCK_SRC_QEP +    \
                          TIMER_COMPARE_LD_ON_ZERO)

/*  定义QEP (正交编码电路) 驱动的对象 */
typedef struct {int theta_elec;             /* 输出: 电动机电角度(Q15)                                                  */
                int theta_mech;            /* 输出: 电动机机械角度(Q15)                                                  */
                int dir_QEP;              /* 输出: 电动机转动方向 (Q0)                                                */
                int QEP_cnt_idx;         /* 变量: 编码器计数(Q0)                                                  */
                int theta_raw;             /* 变量: 定时器2得出的角度(Q0)                             */
                int mech_scaler;           /* 参数: 0.9999/计数最大值,计数最大值 = 4000 (Q26)         */
                int pole_pairs;            /* 参数: 极对数(Q0)                                                          */
                int cal_angle;             /* 参数: 编码器和相之间的角度偏移量 (Q0)                        */
                int index_sync_flag;        /* 输出: Index sync status (Q0)                                               */
                void (*init)();             /* 初始化函数指针                                                         */
                void (*calc)();             /* 计算函数指针                                                               */
                void (*isr)();              /* 中断程序指针                                                                   */
                }  QEP;

/*                定义一个QEP_handle                        */
typedef QEP *QEP_handle;
#define QEP_DEFAULTS { 0x0, 0x0,0x0,0x0,0x0,16776,2,-2365,0x0,  \
                (void (*)(long))F28X_EV1_QEP_Init,            \
                (void (*)(long))F28X_EV1_QEP_Calc,                    \
                (void (*)(long))F28X_EV1_QEP_Isr }
void F28X_EV1_QEP_Init(QEP_handle);
void F28X_EV1_QEP_Calc(QEP_handle);
void F28X_EV1_QEP_Isr(QEP_handle);

#endif /*  __F28X_QEP_H__ */
上面为QEP 头文件
我在主函数里面 我问过旋转变压器产商 它们的解码板 输出的是1024个脉冲,因此QEP脉冲为4*1024=4096
里面的偏移角 cal_angle 我随便设的
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-5 13:04 | 显示全部楼层 来自: 中国浙江杭州
谢谢你们了 领导一直要求的紧,我等会下去调试一下,哎!没办法啊
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-5 15:54 | 显示全部楼层 来自: 中国浙江杭州
lyftcl   哥  等你呢 怎么样了,一直等你的回复呢~
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 17:25 | 显示全部楼层 来自: 中国北京
那个MechScaler的16776哪里来的,很像2^26/4000 -1啊,但是你不是1024线的吗?
为什么按1000线的来计算,感觉16776应该变成16384.

对,你写了。。。/* 参数: 0.9999/计数最大值,计数最大值 = 4000 (Q26)
看来确实是这里有个问题,4000还是4096,需要明确下。

其他的应该没什么问题了,因为很久不用开发板,都给同事用了,所以程序没有上机调,就大致看了看,应该没其他的问题了。

就是,这里的PolePairs其实,并不是PolePairs,而是PolePairsRatio=Motor PolePairs/Resolver PolePairs,一般Encoder的PolePairs=1,所以,就直接是PolePairs=Motor PolePairs了。

另外,再确认下,你使用的旋变到底是不是一对极的,别相信代理商的,哪怕发信给TAMAGAWA之后,自己也要再验证一遍。解码板是1024的不错,但是并不意味着旋变是一对极的。
如果真的是一对极的旋变的话,希望能发个图上来,因为很想看一下到底什么样子。

呃。。。公司网络坏了。。。快下班了才发成。。。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-5 19:22 | 显示全部楼层 来自: 中国广东深圳
兄弟真厉害,我level1都没通过,电机就在原位不停地抖动,不解啊,求解啊
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-6 00:06 | 显示全部楼层 来自: 中国北京
LEVEL 1的问题估计楼主最清楚···问他·
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-9-6 09:54 | 显示全部楼层 来自: 中国浙江杭州
多摩川解码板AU6802N1.JPG 旋转变压器.JPG 谢谢 lyftcl  百忙之中给我回复,我等会按照你的思路再调一下,如果实在不行,我能否将程序发给你邮箱,让你帮我看一下,我的邮箱是cj_212121@126.com
现在来解决下一些问题:
1、关于MechScaler数值,因此解码板是1024 所以MechScaler=1/4*1024 再转化成Q30格式,我检查过了是对的,上面那个是笔误,以前的数据。
2、关于电机极对数的问题,问过电机厂家 它们说是4对极,还有Tmp1,这个是内部量,怎么引出来,是不是再设个变量进行赋值,麻烦您告诉我一下,谢谢!
3、下面是旋转变压器和解码板示意图
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2011-9-6 10:08 | 显示全部楼层 来自: 中国江苏无锡
旋变是不是一对极 拉个反电动式出来 手动转一下看看不就行了
enconder没有极数概念的 TI的例程应该是针对光编写的 所以没考虑旋变的问题
“里面的偏移角 cal_angle 我随便设的”
这个偏移角不能随便设吧 与实际不符的话会影响电机启动吧
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

西莫电机论坛微信公众平台欢迎您的关注!

QQ|Archiver|手机版|小黑屋|西莫电机圈 ( 浙ICP备10025899号-3|浙公网安备:33028202000436号 )

GMT+8, 2024-12-23 11:20 , Processed in 0.091377 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表