PGA411软件调试问题



现在主要问题是:

   1、我们需要在电机控制的每次FOC计算周期(中断周期125us),要快速访问到旋变的状态数据是否可用,直接IO可以访问的故障状态只有SFAULT总故障,无法知道信号的恶化和丢失等具体状态。

   2、相较于AD2S1200的LOT和DOS信号可以IO快速访问,我们希望在PGA411上有类似这样的访问方法。

  • PGA411的IO访问故障只有fault。 也可借助于EVM GUI software可以帮助查一些register 的fault等。www.ti.com/.../slau658.pdf
  • AD2S120X系列是在SPI里面复用了两个空余的BIT,进行LOT和DOS快速访问的。

    PGA411-Q1目前无法在SPI 通信中,插入错误状态BIT,告知MCU,出现的Fault具体内容是什么:因为PGA411-Q1本身提供的故障检测太多,SPI帧也放不下;加上SPI协议内容已经固定,无法修改。

    目前针对这个问题,解决建议如下,你可以看看是否能够帮助解决问题:
    1. 使用PGA411-Q1 FAULT IO进行总的错误检测,在FAULT高电平,出现错误时,对状态寄存器1,3,4进行读取(因为只有DEV-STAT1/3/4包含主要的错误信息)。
    2. 因为PGA411-Q1默认情况下,一旦出现错误,fault引脚高电平,会停止内部Tracking loop的工作,所以需要将Table-4使用所有有Override功能的寄存器。(Override的作用是:当该故障出现时,PGA411报警,但是不关闭Tracking loop和激励源,角度仍然可以读取;主要针对短时快速的噪声)。
    3. SPI的时钟频率是最高8MHz,读取状态寄存器需要64个时钟周期,使用流水线,则需要32个时钟周期。在SCLK 1MHz时,读取3个寄存器,最快要128个时钟周期,比125us中断要长,所以需要2MHz的SPI时钟频率。(加上CRC校验时间,实际SPI时间要更长)

    所以,在正常工作时,不读取故障状态寄存器,125us基本是没问题的。如果FAULT高电平,则读取状态寄存器,而且SPI时钟要足够高,同时使用流水线的方式进行通信。

    Thanks.
  • 非常感谢你的答复。

    1、关于125us时间的问题,125us是我们一次电机FOC控制的时间,角度速度的读取都在这个时间,大量的调节控制算法全在这个里面,我们能接受故障读取处理的时间约在10us左右。125us还不能全占满了,占满了的话,系统在125us中断外需要处理的很多工作无法正常(如调试CAN数据获取,和其它控制通讯等),所以125us能使用80us是极限能接受的情况。
    a、现在8M SCLK下,32bit的时钟周期占时为4us,加上CRC校验数据就位总计需耗时10us;连读3寄存器需要耗时4*10us=40us。(多个故障分别分析判断处理的时间暂时未算,这个时间也不少。 )
    b、现在120M主频下,IO读取角度和速度时间(含PRD Even parity时间)各为4us,总计8us。
    c、我们的FOC算法,在不同模式处理时间长短不同,占时较长的模式时间约占70--80us。
    d、如果在1ms中断中来获取PGA411故障状态,由于125us中断原因,1ms中断中故障读取时间长,在一个1ms周期无法完成,需要2-3ms才能完成,电机IGBT过流超过1ms会爆管。
    所以这个SPI故障读取时间对我们来说实在是太长。
    2、对于PGA411:
    a、在sin,cos信号有接线松脱,故障报出要有及时性,不然电机高速运转,出现此情况会出问题。
    b、在sin、cos信号有干扰,能否读到介于故障和正常之间的状态,这样便于发出warning,而不是一下子就是fault。
  • 如果是sin,cos相关的报警,都集中在DEV_STAT1,可以只检测单个寄存器实现。

    另外,芯片是通过检测电压加上一端时间的滤波的机理实现故障检测,调节有限制,假设噪声时间比较长,那是办法将干扰和真实情况区分开。目前方法是拉低FAULTRES做Fault置位,如果持续发生x次,则判断真实。类似平均滤波。