instaSPIN-FOC-Lab01b-硬件完整性的开环控制

Lab01b-硬件完整性的开环控制

摘要
该实验室实现了标量电压/频率控制来测试硬件的完整性,即用于硬件抽象层 (HAL) 设置的 PWM 和 ADC 模块。该实验室与德州仪器 (TI)
的硬件兼容,旨在用于定制硬件验证。

介绍
在实验 1b 中,我们展示了一个没有 FAST 估计器的示例。相反,我们利用角度生成器模块来根据电机⽬标频率生成角度,并使用伏特/赫兹曲线生成输出命令电压来驱动电机。⽬的是通过这种标量伏/赫兹控制来测试 InstaSPIN‑FOC 模块,其中模块包括 PWM、ADC、CLARK、PARK 和 SVGEN。

(一)原理

为了实现更好的动态性能,需要应用更复杂的控制方案来控制ACI或PM电机。在 V/Hz 控制中,定子电压频率比通常基于这些变量的额定值。典型的 V/Hz 曲线如图 3 所示。基本上,V/Hz 曲线有以下三个速度范围:

  1. 在0‑fc Hz 时,需要电压,因此定子电阻上的电压降不能忽略,必须通过增加Vs 来补偿。因此,V/Hz 曲线不是线性的。截止频率(fc)和合适的定子电压可以通过 Rs ≠ 0 的稳态等效电路来分析计算。

  2. 在fc‑frate Hz 下,它遵循恒定的V/Hz 关系。

  3. 在较高的额定频率下,无法满足恒定的Vs/f 比,因为为了避免定子绕组处的绝缘击穿,定子电压将被限制在额定值。因此,所产生的气隙磁通将会减少,这将不可避免地导致产生的扭矩相应地减少。该区域通常称为“弱磁区”。为了避免这种情况,在此类频率下也违反了恒定 V/Hz 原则。

在这里插入图片描述
在本实验中,通过对频率施加下限来修改配置文件,如图 4 所示。这种方法对于风扇和鼓风机驱动器等低端速度响应并不重要的应用来说是可以接受的。由于额定电压(也是最大电压)以额定频率施加到电机,因此仅需要额定最小和最大频率信息来实现该配置文件。

允许命令频率低于最小频率fmin,同时输出电压在最小值Vmin 处饱和。此外,当命令频率高于最大频率fmax 时,输出电压在最大值Vmax 处饱和。
在这里插入图片描述
在本实验中,斜坡发生器模块用于根据电机⽬标频率生成角度。其中一个变量称StepAngleMax,用于确定斜坡信号的最小周期(1/频率)。向Angle_pu变量添加固定步长值会导致Angle_pu中的值以恒定速率循环。
在这里插入图片描述
在结束限制处, Angle_pu中的值简单地环绕并继续到下一个模值由步长给出。对于给定的步长,斜坡输出的频率(以 Hz 为单位)由下式给出:
在这里插入图片描述
其中fs是采样环路频率(以 Hz 为单位), N = 自动包装器变量Angle_pu 中的全局 Q 值。

对于 IQmath 实现,对于给定基数,每单位的最大步长 StepAngleMax频率、 fb和定义的 GLOBAL_Q 数计算如下:
在这里插入图片描述
同样,通过使用 _IQ() 函数将浮点数转换为 _IQ 数,StepAngleMax 也可以计算为
在这里插入图片描述
其中Ts是采样周期(秒)。

(二)PWMDAC观察波形

该模块将任何软件变量转换为 C2000 MCU 的 EPWMxA/B 中的 PWM 信号。因此,它可用于通过外部 RC 低通滤波器查看 PWMxA、PWMxB 引脚输出处的由变量表示的信号。

硬件原理图:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

步骤1,在proj_lab01b.c中声明该PWMDAC模块的对象。

//PWMDAC变量
HAL_DacData_t gDacData;

按照步骤 2a 监视 SVGEN 的 PWM 输出。

步骤 2a,在 proj_lab01b.c 和 hal.c 中为每个 PWMDAC 通道设置正确偏移增益

// 设置DAC参数
  gDacData.ptrData[0] = &gPwmData.Tabc.value[0];
  gDacData.ptrData[1] = &gPwmData.Tabc.value[1];
  gDacData.ptrData[2] = &gPwmData.Tabc.value[2];
  gDacData.ptrData[3] = &gAdcData.V.value[0];

  HAL_setDacParameters(halHandle, &gDacData);
  
// 设置每个通道的PWMDAC参数,保证输出波形
void HAL_setDacParameters(HAL_Handle handle, HAL_DacData_t *pDacData)
{
	HAL_Obj *obj = (HAL_Obj *)handle;

    pDacData->PeriodMax = PWMDAC_getPeriod(obj->pwmDacHandle[PWMDAC_Number_1]);

	pDacData->offset[0] = _IQ(0.5);
	pDacData->offset[1] = _IQ(0.5);
	pDacData->offset[2] = _IQ(0.0);
	pDacData->offset[3] = _IQ(0.0);

	pDacData->gain[0] = _IQ(1.0);
	pDacData->gain[1] = _IQ(1.0);
	pDacData->gain[2] = _IQ(1.0);
	pDacData->gain[3] = _IQ(1.0);

	return;
}  // end of HAL_setDacParameters() function

步骤 3a,连接 PWMDAC 模块的输入。(在mainISR中断函数中)

// 连接 PWMDAC 模块的输入。
  gDacData.value[0] = (*gDacData.ptrData[0]); 	//
  gDacData.value[1] = (*gDacData.ptrData[1]); 	//
  gDacData.value[2] = (*gDacData.ptrData[2]); 	//
  gDacData.value[3] = (*gDacData.ptrData[3]); 	//

  HAL_writeDacData(halHandle,&gDacData);

在lab01b中,我们将项⽬相关的变量连接到PWMDAC模块;BOOSTXL-DRV8305EVM套件 + F28069M ControlCard 组合的输出波形DAC 如图所示:

Ch1‑> PWMDAC1:B 相 SVGEN 输出
Ch2‑> PWMDAC2:A 相 SVGEN 输出

在这里插入图片描述

按照步骤 2b 监控 ADC 采样的 Angel_gen、电流和电压。

步骤 2b,在 proj_lab01b.c 和 hal.c 中为每个 PWMDAC 通道设置正确的偏移和增益

// 设置DAC参数
  gDacData.ptrData[0] = &angle_gen.Angle_pu;
  gDacData.ptrData[2] = &gAdcData.I.value[0];
  gDacData.ptrData[1] = &gPwmData.Tabc.value[0];
  gDacData.ptrData[3] = &gAdcData.V.value[0];

  HAL_setDacParameters(halHandle, &gDacData);
  
// 设置每个通道的PWMDAC参数,保证输出波形
void HAL_setDacParameters(HAL_Handle handle, HAL_DacData_t *pDacData)
{
	HAL_Obj *obj = (HAL_Obj *)handle;

    pDacData->PeriodMax = PWMDAC_getPeriod(obj->pwmDacHandle[PWMDAC_Number_1]);

	pDacData->offset[0] = _IQ(0.0);
	pDacData->offset[1] = _IQ(0.5);
	pDacData->offset[2] = _IQ(0.0);
	pDacData->offset[3] = _IQ(0.0);

	pDacData->gain[0] = _IQ(1.0);
	pDacData->gain[1] = _IQ(1.0);
	pDacData->gain[2] = _IQ(1.0);
	pDacData->gain[3] = _IQ(1.0);

	return;
}  // end of HAL_setDacParameters() function

注意: pDacData->offset[0] = _IQ(0.0); 已做出修改

如上,我们将相关变量连接到 PWMDAC 模块,并监控输出波形,如图所示
Ch1‑>PWMDAC1:angel_gen模块的角度输出
Ch2‑> PWMDAC3:A 相 PWM 输出

在这里插入图片描述

(三)DATALOG观察波形

数据记录模块可用于存储数据并绘制图表。使用 CCS 中的图形工具,可以实现虚拟示波器来监控支持数据记录的项⽬的输入/输出波形。

设置和使用图形窗口

按照以下步骤以及图所示菜单中的说明设置图形窗口

步骤 1. 在 CCS 菜单中单击Tools->Graph->Dual time。单击“导入”按钮,然后从
“…\sw\solutions\instaspin_foc\src\proj_lab01b_d1&d2_1.graphProp”
中选择适当的single or dual time文件。

步骤2. 在CCS 菜单中单击Tools->Graph->Single time。单击“导入”按钮,然后从
“…\sw\solutions\instaspin_foc\src\proj_lab01b_d3_1.graphProp”
中选择适当的single or dual time文件。
在这里插入图片描述
请注意,下图中的Auto Scale (GraphA)和Auto Scale (GraphB)值设置为 false。这使得可以选择 GraphA 和 GraphB 的最大 Y 值和最小 Y 值。然后选择确定。图表将导入 CCS。在工作区中按照您喜欢的方式排列窗口。

使用图表时,有多种更新窗口的方法。必须为每个Graph A 和 B 选择这些。
在这里插入图片描述按此按钮可使用写入数据数组的当前值刷新当前图形窗口。每次收到新数据时都需要按下此按钮以显示新图表。

在这里插入图片描述每次数据数组收到新数据时,按下此按钮即可启用自动图形更新。

在这里插入图片描述每次停止调试会话时刷新图表。

在这里插入图片描述重置当前图形窗口以自动适应数据数组的新比例。

步骤 3a。连接数据记录模块的输入; SVGEN 输出的数据记录图如图 7 所示

// 连接数据记录模块的输入
  datalog.iptr[0] = &gPwmData.Tabc.value[0];		// datalogBuff[0]
  datalog.iptr[1] = &gPwmData.Tabc.value[1];		// datalogBuff[1]
  datalog.iptr[2] = &gPwmData.Tabc.value[2];		// datalogBuff[2]

  datalog.Flag_EnableLogData = true;
  datalog.Flag_EnableLogOneShot = false;

在这里插入图片描述
步骤 3b。 连接数据记录模块的输入;查看 ADC 角度和采样电流/电压的数据记录图,如图 9 所示。

  datalog.iptr[0] = &angle_gen.Angle_pu;		// datalogBuff[0]
  datalog.iptr[1] = &gAdcData.I.value[0];		// datalogBuff[1]
  datalog.iptr[2] = &gAdcData.V.value[0];		// datalogBuff[2]

在这里插入图片描述

(四)程序介绍

项⽬文件

angle_gen.c定义角度生成器模块例程
vs_freq.c定义伏特/赫兹配置文件模块例程

头文件

Angle_gen.h包含角度生成器模块例程的公共接口
vs_freq.h包含伏特/赫兹模块例程的公共接口
hal.h设备设置和外围驱动程序。包含 HAL 对象。
ctrl.h包含与 CTRL 对象相关的各种函数的公共接口、对象和函数定义。
ctrl_obj.h定义 CTRL 对象的结构
user.h包含 CTRL、HAL 和 EST 模块的电机控制初始化数据

全局对象

CTRL_HandlectrlHandle控制器对象 (CTRL) 的句柄。控制器对象实现所有 FOC 算法并调用 FAST 观察器函数。
MOTOR_Vars_tgMotorVars实施 InstaSPIN 不需要,但在项⽬中需要此结构。包含所有要打开的标志和变量,调整 InstaSPIN。
ANGLE_GEN_Handleangle_genHandle角度生成器结构的句柄。
ANGLE_GEN_Objangle_gen角度生成器结构的对象。
VS_FREQ_Handlevs_freqHandleVolts/Hertz Profile 结构体的句柄
VS_FREQ_Objvs_freqVolts/Hertz Profile 结构体的对象

mainISR程序框图
mainISR调用运行 FOC 的非常关键的、与时间相关的函数。 Lab01b 的框图如图10所示。
在这里插入图片描述

(五)具体步骤

头文件的修改

  1. 打开 user_j1.h
  2. 对电机参数做出如下修改:
#define USER_MOTOR_FREQ_LOW             (10.0)          // Hz - suggested to set to 10% of rated motor frequency
#define USER_MOTOR_FREQ_HIGH            (100.0)         // Hz - suggested to set to 100% of rated motor frequency
#define USER_MOTOR_FREQ_MAX             (100.0)         // Hz - suggested to set to 120% of rated motor frequency
#define USER_MOTOR_VOLT_MIN             (3.0)           // Volt - suggested to set to 15% of rated motor voltage
#define USER_MOTOR_VOLT_MAX             (18.0)          // Volt - suggested to set to 100% of rated motor voltage

将变量添加到监视窗口

  1. 从调试器菜单“View‑>Scripting Console”中选择脚本工具。
  2. 脚本控制台窗口将出现在调试器中的某个位置。
  3. 单击脚本工具右上角的图标在这里插入图片描述打开脚本。
  4. 选择文件“sw\solutions\instaspin_foc\src\proj_lab01b.js”。
  5. 现在,适当的电机变量会自动填充到观察窗口中,如下所示
  6. 变量应如图 12 所示
  • 注意数字格式。
  • 例如,如果“gMotorVars.Flag_enableSys”显示为字符,则鼠标右键单击它并选择“Number Format -> Decimal”
  • 对于“Q‑Value(24)”格式,右键单击该值后选择“Q-Values->Q-Value(24)"
    在这里插入图片描述

步骤 1. 断开电机,打开 EVM 套件电源,启动lab,并按照 PWMDAC 和 DATALOG 模块指令监控来自 SVGEN 的一些信号。

  • 启用实时调试器在这里插入图片描述

  • 单击运行按钮在这里插入图片描述

  • 在监视窗口上启用连续刷新在这里插入图片描述

  • 将变量“gMotorVars.Flag_enableSys”设置为 1

  • 将变量“gMotorVars.Flag_Run_Identify”设置为 1

步骤 2. 关闭 EVM 套件的电源,然后按照 PWMDAC 和 DATALOG 模块指令更改配置设置以监控来自 ANGEL_GEN 和 ADC 的一些信号。

  • 将变量“gMotorVars.Flag_Run_Identify”设置为 0 以关闭电机的 PWM。
  • 关闭实时控制并停止调试器。
  • 关闭 EVM 套件电源

步骤 3. 连接电机,打开 EVM 套件电源

  • 再次启用实时调试器
  • 将变量“gMotorVars.Flag_enableSys”和“gMotorVars.Flag_Run_Identify”设置为等于 1
  • 将变量“gMotorVars.SpeedRef_krpm”设置为不同的值,以确保电机仍然运行。

步骤 4. 如果完成实验,请参阅上面的步骤 2 关闭 EVM 套件的电源。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: instaspin-focinstaspin-motion是两个被德州仪器公司(TI)推出的专业运动控制软件包。其中instaspin-foc主要用于控制电机的运转,而instaspin-motion则涉及控制整个系统的运动,并支持多种类型的控制器和编码器。 instaspin-foc软件包提供了一种简单且高效的方法来控制交流电机的转速和位置。它能够自动调整电机的转矩和速度,并且可以应用于多种不同的电机类型,从无传感器的电机到光学或磁性编码器修辞感器的电机。 instaspin-motion软件包由四个部分组成,分别为:控制电机驱动器、读取编码器反馈、控制运动路径和确定运动参数。它支持多种类型的编码器,例如:光学、磁性、霍尔和电感式编码器等,并允许通过使用TI的控制器来执行高级运动控制。 对于使用instaspin-focinstaspin-motion软件包的用户,本指南提供了详细的指导和教程,以帮助他们快速掌握这两个软件包的使用方法。通过实例和操作步骤的讲解,用户能够清晰地了解每个软件包的功能和特点,快速理解其工作原理和操作流程,进而灵活地应用于不同的场景中,以满足其动力控制和运动控制的需求。 ### 回答2: InstaSPIN-FOCInstaSPIN-MOTION用户指南是伟大的资源,可以帮助用户轻松地使用Texas Instruments(TI)设计的MCS™电机控制器。 InstaSPIN-FOC是一种基于磁场定向的矢量控制技术,可用于控制交流电机,包括永磁同步电机(PMSM)和感应电动机(IM)。它的设计目的是简化控制器发流程,并加速系统性能的调整和优化。与之类似,InstaSPIN-MOTION是一种基于运动控制的技术,可用于控制各种类型的电机,包括直流电机、步进电机和伺服电机等。它具有自动调谐功能,可以快速地适应仪表和工业应用中的变化电气负载。用户指南提供了大量的资料,包括如何设置驱动器、如何使用代码和如何解决问题的详细说明。此外,用户指南还提供了示例代码、使用步骤和设计要点等方面的详细信息,以支持用户更高效地发MCS™电机控制器。总之,InstaSPIN-FOCInstaSPIN-MOTION用户指南是非常有价值的指南,对于需要从事电机控制器设计的工程师和技术人员是一个重要的参考资料。 ### 回答3: 随着电机控制技术的不断发展,Texas Instrument公司推出了两款电机控制软件,分别是instaspin-focinstaspin-motion。这两款软件都是由TI公司推出的一款基于闭环控制的电机算法。 instaspin-foc是一个用于感应电机的高级动画和控制器。它提供了一个良好的性能和高效的控制,允许工程师通过现有的基础硬件来实现感应电机控制,包括使用直接转换量测量DC电机驱动器。instaspin-foc提供了更快的发周期和更少时间的工程师在调试和测试时。 instaspin-motion是一种综合性电机控制软件,它提供了许多丰富的特性和功能,包括磁场定位,流量观测,动态扭矩控制等等。instaspin-motion为发人员提供了一个简单易用的平台,他们可以通过该软件轻松地发和定制符合他们控制要求的应用程序。发人员只需要选择所需控制方法,然后设置相应的参数,该软件即可自动完成剩余的工作,从而提高了发效率。 instaspin-focinstaspin-motion都是成熟的电机控制软件,能够在半导体和制造行业中广泛应用。这两款软件都有详细的使用指南,可以帮助发人员轻松入门,快速上手使用。同时,发人员也可以通过TI公司提供的技术支持、工具和社区来获取帮助和分享经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值