【动手学电机驱动】 TI InstaSPIN-FOC(8)Lab07 在线测量定子电阻

TI InstaSPIN-FOC(1)电机驱动和控制测试平台
TI InstaSPIN-FOC(2)Lab01 闪灯实验
TI InstaSPIN-FOC(3)Lab03a 测量电压电流漂移量
TI InstaSPIN-FOC(4)Lab02b 电机参数辨识
TI InstaSPIN-FOC(5)Lab04 力矩控制
TI InstaSPIN-FOC(6)Lab05a 电流环控制
TI InstaSPIN-FOC(7)Lab05b 速度环控制
TI InstaSPIN-FOC(8)Lab07 在线电阻参数设置


LAUNCHXL-F28027F + BOOSTXL-DRV8301 提供了一个完整的电机驱动和控制评估平台,与 TI 公司的 InstaSPIN FOC配合使用,提供无传感器控制解决方案。本节基于 LAUNCHXL-F28027F + BOOSTXL-DRV8301 电机驱动和控制测试平台,介绍 Lab07 实验项目“在线测量定子电阻Rs”。


1. 项目介绍

1.1 Lab07 项目介绍

电机线圈的定子电阻 Rs,会根据线圈(也称为电机绕组)的工作温度而发生剧烈变化。电机在运行中由于多种原因可能导致温度升高,导致电机绕组的电阻增大,例如:线圈电流过大、电机外壳散热不良、操作环境恶劣。这种电阻与温度的关系取决于绕组本身使用的材料。
在本实验中,通过运行电机并启用 Rs Online 功能,来实现定子电阻 Rs 在线测量功能。

学习目标:

  • 运行 Rs 在线校准功能。
  • 查看电机运行时更新的 Rs 值。

2. Lab07 项目实验内容

2.1 硬件连接与设置

本项目使用 LAUNCHXL-F28027F + BOOSTXL-DRV8301 电机驱动和控制测试平台,相关的软件安装和配置,详见上节【动手学电机驱动】 TI InstaSPIN-FOC(1)电机驱动和控制测试平台

硬件连接与设置的步骤如下:

  1. 对于 F28027F 控制板,拆除 JP1、JP2 跳线帽,由驱动板提供 3.3V 电源。
  2. 对于 F28027F 控制板,将开关 S1 设置为 ON-ON-ON(向上),UART 开关 S4 设置为 OFF(向下)。
  3. 如下图所示,将 DRV8301 驱动板 插入 F28027F 控制板。注意:接线端子插头应朝向USB连接器。
  4. 将三相 PMSM 电机连接到 DRV8301 驱动板的 3-pin 接线端子 J11。电机连接标记为 A、B、C,但可以以任何顺序连接。
  5. 将直流电源连接到 DRV8301 驱动板的 2-pin 接线端子 J2,注意电源正负极不要接反(正极接 PVDD,负极接 GND)。推荐使用 24V/10A 直流稳压电源。
  6. 打开连接到 DRV8301 驱动板的直流稳压电源。

2.2 加载用户数据文件

1、打开 IDE 软件 CCStudio,从 MotorWare 导入例程项目,在 CCS 侧边栏 “Project Explorer” 选择本项目 “proj_lab07”。

C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\boards\boostxldrv8301_revB\f28x\f2802xF\projects

如果使用其它型号的 MCU 和驱动板,则参考以上路径规则,选择相应的项目路径。

扫描二维码关注公众号,回复: 17513599 查看本文章

2、鼠标选中本项目 “proj_lab07”,右键选择 “Properties” 打开属性窗口,添加包含文件 user.h:

Build – C2000 Compiler – Include Options – Add dir to #include search path (–include_path, -I)

添加 user.h 文件的路径:

C:\ti\motorware\motorware_1_01_00_18\sw\modules\hal\boards\boostxldrv8301_revB\f28x\f2802xF\src

注意:如果没有正确导入 user.h,构建项目或编译时将会报错。

在这里插入图片描述

3、检查用户数据文件 user.h。

在 CCS “Project Explorer” 选择本项目 “proj_lab02b” 激活(Active)后,打开 user.c 文件,在文件开头找到声明的包含文件 user.h(以高亮显示)。鼠标移动到高亮的包含文件上,按 F3 就自动打开用户数据文件 user.h。

(1)找到定义电机类型的段落,检查 “USER_MOTOR” 定义为 “My_Motor”。

(2)找到定义电机参数的段落 “#elif (USER_MOTOR == My_Motor)”,检查电机极对数、电机参数的值已修改为电机规格书的参数,或通过参数辨识得到的数值。

(3)定义驱动板电压电流偏移量的的段落,检查已修改为测量的偏移值。

4、配置仿真器。

从 “Project Explorer-proj_lab05b” 下找到 “TMS320F28027_xds100v2.ccxml” 并打开目标配置编辑器窗口,可以创建和修改目标配置文件。

TMS320F28027_xds100v2.ccxml 默认的仿真器(调试探针)的类型为:“XDS 100v2 USB Debug Probe”,目标板或器件(Board or Device)的类型为:“Experimenter’s Kit - Piccolo F28027”,都不需要改变。如果使用其它型号的仿真器或目标板,则在该页面修改相应的设置。


3.3 项目构建与加载

5、项目构建(“Build”)。

在 CCS “Project Explorer” 选择本项目 “proj_lab03” 激活(Active)后,通过菜单栏 Project – Build Project 构建(“Build”)项目。也可以点击工具栏上的锤子图标 “Build” 进行构建。

在 CCS 的控制台(Console)窗口栏,将显示构建过程,并最终显示 ”**** Build Finished ****“,说明构建项目成功。

在这里插入图片描述

6、项目调试(“Debug”),将程序烧录到 MCU。

注意:在本步骤之前,要USB 连接控制板套件,并给控制板套件通电,否则找不到目标板而加载失败。 相关步骤可以参见上节 “2.1 硬件连接与设置”。

通过菜单栏 Run-- Debug 开始调试(“Debug”)项目。也可以点击工具栏上的昆虫图标 “Debug” 开始调试。

“Debug” 过程中,弹出窗口显示调试进程,并将并将.out文件加载到目标(将程序烧录到 MCU)。 弹出窗口最后显示 "Finished“,说明调试完成和加载成功。

进入调试状态后,CCS透视图将自动变为 “CCS调试”视图布局。

7、加载脚本文件。

通过调用脚本 “proj_lab07.js”,添加适当的监视窗口变量。

loadJSFile “C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_foc\src\proj_lab07.js”

8、启用实时调试器。

点击工具栏上的实时模式图标(Enable silicon realtime mode),进入实时模式(Realtime mode)。该图标看起来像一个时钟。

9、执行目标程序。

点击工具栏上的 执行(Resume)图标,开始执行目标程序。该图标看起来像一个绿色按键。也可以通过菜单栏 Run-- Resume,或快捷键 F8,开始执行目标程序。

10、启用连续刷新。

点击工具栏上的 连续刷新(Resume)图标,在监视窗口上启用连续刷新。

在这里插入图片描述


3.4 项目运行与调试

11、启动电机。

在监视窗口中,检查 gMotorVars.UserErrorCode 的值:如果有错误则该变量值将显示具体的错误内容以供排查,如果没有错误则该变量值为 USER_ErrorCode_NoError,可以继续运行。

在监视窗口中,先将 “Flag_enableSys” 设为 1(True)驱动控制 使能,然后将 “Flag_Run_Identify” 设为 1(True)电机运行 使能。电机开始自动测量定子电阻 Rs。

在监视窗口中观察 gMotorVars.Rs_Ohm 和 gMotorVars.RsOnLine_Ohm 的变化。可以看到,Rs 和 Rs Online 的值相同,并趋于稳定,表明完成了在线测量定子电阻。
在这里插入图片描述

14、结束运行。

将变量 “Flag_Run_Identify” 设为 0(False),禁止电机运行。将 “Flag_enableSys” 设为 0(False),禁用驱动控制。

点击工具栏上的 断开(Terminate)图标,断开与所有硬件的连接并终止调试状态。该图标看起来像一个红色方块。也可以通过菜单栏 Run-- Terminate,断开连接并终止调试状态。

15、关闭电源,拆除 USB 连接。

关闭为 DRV8301 驱动板供电的 DC 24V 电源。
拆下连接 计算机(运行 CCS 的计算机) 与 F28027F 控制板的 USB 线缆 。


4. Lab07 程序解读

4.1 包含文件、变量和函数声明

本项目没有新的包含文件和定义新的全局变量。

以下函数是本试验项目涉及的新函数。这些函数都绑定在 runRsOnLine() 函数中,由主循环(main forever loop)调用。该函数包含以下估计器函数:
在这里插入图片描述

  • EST_getState,获取估计器状态,以确保在启用 RsOnLine 重新校准之前估计器正在运行。
  • EST_setFlage_enableRsOnLine,启用 RsOnLine 功能。生成一个新的可变 Id 引用来重新校准Rs。
  • EST_setRsOnLineId_mag_pu,用于设置 Id 引用中要生成的电流的缩放单位。
  • EST_setFlag_updateRs,用于设置估计器使用Rs在线值。建议仅在Rs在线值稳定时启用。
  • EST_setRsOnLineId_pu,用于在电机不运行时清除累积的参考 Id。
  • EST_setRsOnLine_pu,用于将Rs在线值初始化为零。
  • EST_setRsOnLine_qFmt,用 Rs Q-Format 的值初始化 RsOnline Q-Format 的值。
  • EST_getRs_qFmt,Rs 的 Q Format,用于在线初始化 Rs的Q-Format。

4.2 程序结构

以下框图显示了InstaSPIN 的程序结构,并以红色显示了启用 Rs Online 的函数调用。此外,红色表示来自 FAST 的 Id 引用,该引用允许 Rs Online 在启用时工作。

在这里插入图片描述

在 Lab07 项目中的状态机如下图所示,以允许从 forever loop 中进入 Rs Online 功能。

在这里插入图片描述


4.3 程序运行

构建proj_lab07,连接到目标并加载.out文件。

  1. 通过调用脚本“proj_lab07.js”添加相应的监视窗口变量。
  2. 启用实时调试器。
  3. 单击运行按钮。
  4. 在监视窗口上启用连续刷新。
    一旦电机开始运行,电流就会看起来好像有低频分量。
    这意味着 Rs Online 正在运行,Id 参考值正在被算法修改。

在 Rs Online 运行时,示波器的显示如下图所示。此时 Rs Online 的最大振幅为 0.5A。

在这里插入图片描述

  1. 在监视窗口,将变量 gMotorVars.RsOnLineCurrent_A 修改为 1.0 (Q-Value24),来改变测量 Rs Online 所用的最大振幅。

示波器的显示如下图所示,此时 Rs Online 的最大振幅为 1.0A。

在这里插入图片描述

  1. 完成实验后,将gMotorVars.Flag_Run_Identify 标志设为 0,以关闭电机。

4.3 例程分析

在程序 Proj_lab07.c 的主函数 main() 中的轮循逻辑(forever loop)中,当驱动控制使能时,运行 runRsOnLine() 程序在线测量定子电阻 Rs:

void main(void)
{
    
    
。。。

for(;;)
  {
    
    
    // Waiting for enable system flag to be set
    while(!(gMotorVars.Flag_enableSys));

    // Enable the Library internal PI.  Iq is referenced by the speed PI now
    CTRL_setFlag_enableSpeedCtrl(ctrlHandle, true);

    // loop while the enable system flag is true
    while(gMotorVars.Flag_enableSys)
      {
    
    
        // enable/disable the use of motor parameters being loaded from user.h
        CTRL_setFlag_enableUserMotorParams(ctrlHandle,gMotorVars.Flag_enableUserParams);

        // enable/disable Rs recalibration during motor startup
        EST_setFlag_enableRsRecalc(obj->estHandle,gMotorVars.Flag_enableRsRecalc);

        // enable/disable automatic calculation of bias values
        CTRL_setFlag_enableOffset(ctrlHandle,gMotorVars.Flag_enableOffsetcalc);

        。。。

        // run Rs online
        runRsOnLine(ctrlHandle);

        // update CPU usage
        updateCPUusage();

      } // end of while(gFlag_enableSys) loop

  } // end of for(;;) loop

。。。
} // end of main() function

runRsOnLine() 程序的内容如下:

void runRsOnLine(CTRL_Handle handle)
{
    
    
  CTRL_Obj *obj = (CTRL_Obj *)handle;

  // execute Rs OnLine code
  if(gMotorVars.Flag_Run_Identify == true)
    {
    
    
      if(EST_getState(obj->estHandle) == EST_State_OnLine)
        {
    
    
    	  float_t RsError_Ohm = gMotorVars.RsOnLine_Ohm - gMotorVars.Rs_Ohm;

          EST_setFlag_enableRsOnLine(obj->estHandle,true);
          EST_setRsOnLineId_mag_pu(obj->estHandle,_IQmpy(gMotorVars.RsOnLineCurrent_A,_IQ(1.0/USER_IQ_FULL_SCALE_CURRENT_A)));

          if(abs(RsError_Ohm) < (gMotorVars.Rs_Ohm * 0.05))
            {
    
    
              EST_setFlag_updateRs(obj->estHandle,true);
            }
        }
      else
        {
    
    
          EST_setRsOnLineId_mag_pu(obj->estHandle,_IQ(0.0));
          EST_setRsOnLineId_pu(obj->estHandle,_IQ(0.0));
          EST_setRsOnLine_pu(obj->estHandle, EST_getRs_pu(obj->estHandle));
          EST_setFlag_enableRsOnLine(obj->estHandle,false);
          EST_setFlag_updateRs(obj->estHandle,false);
          EST_setRsOnLine_qFmt(obj->estHandle,EST_getRs_qFmt(obj->estHandle));
        }
    }

  return;
} // end of runRsOnLine() function

5. Lab07 项目总结

在很多应用中,电机发热的温升会导致电机中的定子电阻发生变化。
本项目介绍 InstaSPIN 的 Rs Online 功能。通过 Rs Online 功能,电机定子电阻 Rs 可以在电机运行时更新。如果电阻值因温度变化而上升或下降,可以实时更新 Rs在线值供估计器使用。


推荐从 TI 官网下载 【InstaSPIN 实验项目用户手册】(InstaSPIN Projects and Labs User’s Guide),进行学习。

猜你喜欢

转载自blog.csdn.net/youcans/article/details/143202646
TI