ZHCAD05 august   2023 AM2631 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 主要系统技术规格
  5. 2AM263x 概述
    1. 2.1 AM263x 控制卡和牵引系统框架
  6. 3运行 TIDM-02014 牵引逆变器的指南
    1. 3.1 软件设置
      1. 3.1.1 Code Composer Studio 工程
      2. 3.1.2 软件结构
    2. 3.2 创建实时调试接口
      1. 3.2.1 确认 CCS 特性
      2. 3.2.2 创建目标配置文件
      3. 3.2.3 添加串行命令监视器软件
      4. 3.2.4 启动实时调试
    3. 3.3 运行代码
      1. 3.3.1 工程设置
      2. 3.3.2 运行应用程序
    4. 3.4 从 ADC 采样并通过 CCS 读取样本
      1. 3.4.1 寄存和启用中断
      2. 3.4.2 添加日志代码,以固定速率读取图中样本
      3. 3.4.3 在表达式和图形窗口中读取 ADC 样本
    5. 3.5 生成空间矢量 PWM 和在开环中驱动电机
      1. 3.5.1 设置 SVPWM 发生器输入
      2. 3.5.2 在图形窗口中读取 SVPWM 占空比
      3. 3.5.3 逆变器上电并在开环中旋转电机
    6. 3.6 以模拟速度闭合电流环路
      1. 3.6.1 添加变换和读取开环中的 Id-Iq
      2. 3.6.2 添加控制器,以闭合电流环路
      3. 3.6.3 读取 Id-Iq,以闭合电流环路
    7. 3.7 添加软件旋转变压器数字转换器
      1. 3.7.1 为旋转变压器硬件生成激励
      2. 3.7.2 添加旋转变压器软件
      3. 3.7.3 读取旋转变压器软件输出
  7. 4代码迁移的简要指南
    1. 4.1 SDK 资源概览
    2. 4.2 从 C28 迁移代码
    3. 4.3 从 AM24 迁移代码
  8. 5总结
  9. 6参考文献

设置 SVPWM 发生器输入

SVPWM 发生器的输入为 Vd 和 Vq。需要调用以下行来赋值。Motor1 是存储在 TCM 中的结构。在程序文件中可找到有关其定义的更多详情。按住 Ctrl 键简单地左键点击 几次变量名称,有助于追踪它的定义位置。代码逻辑与 TIDM-02014 的 C28 程序相同。Vd 和 Vq 是实际值,而不是标幺值。

  1. motor1.Vout_dq_V[0] = VdTesting;
  2. motor1.Vout_dq_V[1] = VqTesting;

以下行生成电机转速和电机角度。第 1 行至第 4 行设置斜坡控制器 rc1 和斜坡发生器 rg1。SpdRef 是 0 和 1 之间的标幺值。在第 5 行和第 6 行中,生成的 omega 和 theta 分配给 motor1。第 7 行将 theta 限制在 0 到 TWO_PI 的范围内。文件中定义了 TWO_PI 值。按住 Ctrl 键简单地左键点击几次变量名称,有助于追踪它的定义位置。值得注意的是,在启动硬件中断之前,需要相应地初始化 rc1、rg1 和 motor1。

  1. rc1.TargetValue = SpdRef;
  2. rampControl(&rc1);
  3. rg1.Freq = rc1.SetpointValue;
  4. rampGen(&rg1);
  5. motor1.omega_e = rg1.Freq * BASE_FREQ * TWO_PI;
  6. motor1.theta_e = rg1.Out * TWO_PI;
  7. theta_limiter(&(motor1.theta_e));

接下来的几行将输入送到 SVPWM 发生器,并保持标幺值输出。第 1 行将输入限制在一定范围内。第 2 行是 Park 逆变换。在 CMSIS DSP 库和其他地方可找到相似的函数。角度信息已经包含在 motor1 的结构中。第 3 行是 SVPWM 发生器。逻辑与 TIDM-02014 的 C28 程序相同。以前的 C28 库中还有其他实现方式。值得注意的是,此版本中有实际值到标幺值的转换。第 4 行将标幺值输出限制在一定范围内。

  1. dq_limiter_run(&motor1);
  2. ipark_run(&motor1);
  3. SVGEN_run(&motor1, &pwm1);
  4. PWM_clamp(&pwm1);

SVPWM 生成后,标幺值输出通过下面第 1 行中的函数传递到 EPWM 计数器比较。第 2 行提供有关设置 EPWM0 计数器比较的详情。EPWM_setCounterCompareValue 是设置计数器比较值的 SDK API 的名称。对于向上/向下模式或中心线模式,此处计算该值。

  1. TRINV_HAL_setPwmOutput(&pwm1);
  2. EPWM_setCounterCompareValue(CONFIG_EPWM0_BASE_ADDR, EPWM_COUNTER_COMPARE_A,(uint16_t)((pwm->inv_half_prd * pwm->Vabc_pu[0]) +pwm->inv_half_prd));