打印

同步机转子检测

[复制链接]
1089|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunwave|  楼主 | 2017-8-9 14:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面一段程序的功能是检测同步机转子位置,不知思路是什么?
void SynInitPosDetSetPwm(Uint Section)
{
        EALLOW;
        switch(Section)
        {
                case 0:                                                                        // A+, B-
                        EPwm1Regs.AQCSFRC.all = 0x08;      
                        EPwm2Regs.AQCSFRC.all = 0x02;
                        EPwm3Regs.AQCSFRC.all = 0x0A;      //1010?
                        break;

                case 1:                                                                        // A-, B+
                        EPwm1Regs.AQCSFRC.all = 0x02;
                        EPwm2Regs.AQCSFRC.all = 0x08;
                        EPwm3Regs.AQCSFRC.all = 0x0A;
                        break;

                case 2:                                                                        // B+, C-
                        EPwm1Regs.AQCSFRC.all = 0x0A;
                        EPwm2Regs.AQCSFRC.all = 0x08;
                        EPwm3Regs.AQCSFRC.all = 0x02;
                        break;

                case 3:                                                                        // B-, C+
                        EPwm1Regs.AQCSFRC.all = 0x0A;
                        EPwm2Regs.AQCSFRC.all = 0x02;
                        EPwm3Regs.AQCSFRC.all = 0x08;
                        break;

                case 4:                                                                        // A-, C+
                        EPwm1Regs.AQCSFRC.all = 0x02;
                        EPwm2Regs.AQCSFRC.all = 0x0A;
                        EPwm3Regs.AQCSFRC.all = 0x08;
                        break;

                case 5:                                                                        // A+, C-
                        EPwm1Regs.AQCSFRC.all = 0x08;
                        EPwm2Regs.AQCSFRC.all = 0x0A;
                        EPwm3Regs.AQCSFRC.all = 0x02;
                        break;

                case 6:                                                                        //恢复PWM模块的寄存器设置
                        EPwm1Regs.DBCTL.all         = 0x0007;  //OUT_MODE=11  POLSEL=01
                        EPwm1Regs.AQCTLA.all         = 0x0090;  //CAD=10 下降计数若比较相等,则Set: force EPWMxA output high;CAU=01 上升计数若比较相等,Clear: force EPWMxA output low
                        EPwm1Regs.AQCTLB.all         = 0x00;
                        EPwm1Regs.AQCSFRC.all        = 0x00;

                        EPwm2Regs.DBCTL.all         = 0x0007;
                        EPwm2Regs.AQCTLA.all         = 0x0090;
                        EPwm2Regs.AQCTLB.all         = 0x00;
                        EPwm2Regs.AQCSFRC.all         = 0x00;

                        EPwm3Regs.DBCTL.all         = 0x0007;
                        EPwm3Regs.AQCTLA.all         = 0x0090;
                        EPwm3Regs.AQCTLB.all         = 0x00;
                        EPwm3Regs.AQCSFRC.all         = 0x00;
                        break;

                default:                                                                //同步机初始位置角检测初始化寄存器
                        EPwm1Regs.AQCSFRC.all         = 0x0A;                //CSFB=2--EPWM1B=1  CSFA=2--EPWM1A=1
                        EPwm1Regs.DBCTL.all         = 0;                       
                        EPwm1Regs.AQCTLA.all         = 0x000C;        //PRD---Toggle EPWM1A
                        EPwm1Regs.AQCTLB.all         = 0x000C;   //PRD---Toggle EPWM1B

                        EPwm2Regs.AQCSFRC.all         = 0x0A;
                        EPwm2Regs.DBCTL.all         = 0;
                        EPwm2Regs.AQCTLA.all         = 0x000C;
                        EPwm2Regs.AQCTLB.all         = 0x000C;

                        EPwm3Regs.AQCSFRC.all         = 0x0A;
                        EPwm3Regs.DBCTL.all         = 0;
                        EPwm3Regs.AQCTLA.all         = 0x000C;
                        EPwm3Regs.AQCTLB.all         = 0x000C;
                        break;
        }
        EDIS;
}

相关帖子

沙发
zhangmangui| | 2017-8-9 20:29 | 只看该作者
不知道什么原理

使用特权

评论回复
板凳
sunwave|  楼主 | 2017-8-11 08:19 | 只看该作者
没人搞过吗?

使用特权

评论回复
地板
airwill| | 2017-8-11 20:09 | 只看该作者
没头没脑的问题, 硬件也不讲, 信号怎么过来的. 什么处理器.

就帖个代码, 谁来帮你猜谜呀?

使用特权

评论回复
5
sunwave|  楼主 | 2017-8-12 10:52 | 只看该作者
用的是TMS320F28035平台,我的本意也就是看看有没有刚好搞这个的,若搞过,一看这代码就明白了,若没搞过,就费劲了。

使用特权

评论回复
6
糖加牛奶| | 2017-8-18 08:26 | 只看该作者
高深啊

使用特权

评论回复
7
liu_yi_xf| | 2017-9-4 12:53 | 只看该作者
根据同步机转子位置,决定要触发那个管子。
转子位置分成6个扇区,对应程序里section的0-5
例如:case 0 //A+,B-。表示转子位置在该扇区里,要驱动A相上管和B相的下管。
没仔细看过这个程序,不过TI的controsuite里面例程都有详细的文档,看看那些文档很有帮助。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

154

帖子

5

粉丝