This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于RMP_CNTL的疑问

Other Parts Discussed in Thread: CONTROLSUITE

在《DMC MATH_v13.1.pdf》中的RMP_CNTL描述中,有如下设计举例

在例子中,目标值是1000,从最后的计算ramp time理解,爬升到目标值得时间等于TargetValue X Td。这是为什么呢?

爬升到目标值的时间t觉得应该等于(TargetValue/步进量)XTd

可是如果这样理解的话步进量又是多少呢?为什么文档里设定的步进量是_IQ(0.0000305)呢?这里的_IQ又是IQ的什么格式呢,是IQ多少呢?

  • 您好!
    _IQ(0.0000305)是Q15的最小单位即1/32768。
  • 是的,“爬升到目标值的时间t觉得应该等于(TargetValue/步进量)*Td”这样理解是对的,文档中目标值为1000,又用1000直接乘以Td,我理解为此时的步进量为单位1;但是如你所说,文档中给的程序例程用的步进量是_IQ(0.0000305),首先这个是在rmp_cntl.h的头文件里面有说明的 ,是Q15格式,所以在程序中显示的步进量为_IQ(0.0000305)。由以上分析,文档中的程序是从工程文件中直接搬过去的例程;而对于上图所举的例子只是告诉我们计算的方法,增量也就按“单位1”了。我是这样理解的,不知道能否解答你的疑惑。
    另外,我最近也在学习这方面的程序,不知道是否有时间互相交流一下?
  • 恩 可以 有问题咱们交流
    步进量是0.0000305

    我今天开始调试2.1高压套件的无传感28335例程
    调试LEVEL1的时候单步调试

    Speed_Ref = _IQ(0.15)
    这个作为rc1的给定

    初始化的时候DelayMAX = 5
    确实是进5次中断才有0.0000305的步进量

    也就是输入是0.15
    每隔500us增加0.0000305
    这样就能算出多长时间跟踪到给定值了
  • 你好,很高兴收到你的回复。
    我参考的是C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v1.7这份例程。
    我按照参考文档调试了level1,仿真输出波形也正常。
    下面这个帖子链接是我看level2时的一些疑问
    e2echina.ti.com/.../151045
    关于AD已经知道了是使用28335的内部AD,但是我借的开发板用的是AD7656,不知道你是否用过这款芯片?如果用过的话还希望能分享一下经验,谢谢!
  • 您好 请问您是不是之前问过我AD7656的MATLAB模型设计开发的那位朋友

    我去年年底在换工作 没顾上恢复

    今年春节前我买了一家叫M新动力的淘宝店铺的28035控制板 IR2136驱动板 48V200W4对极永磁同步电机 这家是基于2.1套件的例程修改的 开发板设计参考的官方套件 我在春节后一周内完成了速度和位置的代码学习

    我们这边做项目也不是用单独一个C2000 我们是C2000+FPGA的结构 数据采集是FPGA控制片外AD做的 算法需要用采集值的时候去FPGA对应的地址取数据就可以 和读寄存器是同样的过程

    如果您是28335并口控制外部AD 首先应该调试并口通信 这个不难 按照官方环境下的例程和AD芯片的时序要求配置并口就行了

  • 您好,我并不是您所说的那位朋友,我也是最近才学习这方面内容的,不过还是感谢您的回复。有问题的话还希望能够得到您的指导,感激不尽!
  • 好 我基本每天都上论坛发东西 之前停了一周 有别的项目 有问题咱们及时交流
  • PwmDacCh1 = _IQtoQ15(rg1.Out);
    PwmDacCh2 = _IQtoQ15(svgen_dq1.Tb);
    PwmDacCh3 = _IQtoQ15(svgen_dq1.Tc);
    PwmDacCh4 = _IQtoQ15(svgen_dq1.Tb-svgen_dq1.Tc);

    DlogCh1 =(int16)_IQtoQ15(svgen_dq1.Ta);
    DlogCh2 =(int16)_IQtoQ15(svgen_dq1.Tb);
    DlogCh3 =(int16)_IQtoQ15(svgen_dq1.Tc);
    DlogCh4 =(int16)_IQtoQ15(svgen_dq1.Tb-svgen_dq1.Tc);

    您好,关于这两段话,第一段是pwmdac输出加低通滤波用示波器看的;第二段是用Graph看波形的。
    我按照手册上的用Graph看svgen_dq1.Ta、svgen_dq1.Tb、svgen_dq1.Tc的波形都是马鞍波,svgen_dq1.Tb-svgen_dq1.Tc是正弦波;
    可我用示波器去看时,尽管我也加了低通滤波,但是发现这些量输出的还是方波。不知道是不是自己设计的RC滤波不合理,pwmdac的输出频率是50khz。请问这部分的滤波该如何设计才能用示波器看到Graph上的马鞍波
  • 你好
    请问你的PWMDAC和RC滤波器设置是按照官方文档作的吗?
    这个我没有观测过。
  • 您好,很抱歉没能及时回复你。问题已经解决。
  • 好的 请问您可以帮忙看看我在论坛发的马鞍波波形测试时设置和波形周期的疑问吗?
  • 您好!我在pc端上看不到您的回复,能发个链接吗?

  • 您好,不知道您是否了解这段程序:
    Measure phase currents, subtract the offset and normalize from (-0.5,+0.5) to (-1,+1).
    // Connect inputs of the CLARKE module and call the clarke transformation macro
    // ------------------------------------------------------------------------------
    #ifdef DSP2833x_DEVICE_H
    clarke1.As=((AdcMirror.ADCRESULT0)*0.00024414-0.5534)*2*0.909; // Phase A curr.
    clarke1.Bs=((AdcMirror.ADCRESULT1)*0.00024414-0.5546)*2*0.909; // Phase B curr.
    #endif // ((ADCmeas(q12)/2^12)-0.55)*2*(3.0/3.3)
    不清楚这个公式里面数字的具体含义,比如为什么减0.55,还要乘以2,(3/3.3)应该是因为满量程电压的问题吧?
    另外,我在手机上收到了您的提问并进行了回复,但是在PC端却无法显示,不知道您是否收到了我的回复?
    我的邮箱是duhan129@163.com有问题还希望能及时交流,谢谢!
  • 你的这段代码不是例程里的原始代码吧
    例程里的原始代码减去的offsetA和offsetB
    0到3V的采样范围,1.5V是零点,在归一化代码里1.5V对应0.5

    算法先执行offsetISR,这个函数里队相电流采样,用了低通滤波器,频率很低的低通滤波器,目的是得到一个稳定的偏差值。

    后面乘的0.909你说的对,是量程问题。因为2.1套件支持28035和28335。28035是0到3.3V的采样范围,而335是3V的,所以这里面有个0.909的系数

    乘以二是归一化的处理。开始我也不理解,TI的答复就是说是归一化的处理
    我问归一化不是应该是数值和基值得比值吗,这里就像是扩大了两倍
    TI的答复是后续的算法处理考虑这个乘2了。

    这几天有点忙