ZHDU154 July   2026 TMS320F28P550SJ , TMS320F28P551SD , TMS320F28P551SG , TMS320F28P650DK

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2库声明
  6. 3库架构
    1. 3.1 后台处理
    2. 3.2 前台处理
    3. 3.3 数据传输机制
  7. 4计量计算
  8. 5配置和数据结构
  9. 6校准模块
  10. 7用户特定的配置
    1. 7.1 DEBUG 模式
      1. 7.1.1 调试模式的函数
      2. 7.1.2 如何配置 DEBUG 模式参数
    2. 7.2 ADC 模式
      1. 7.2.1 使用片上 ADC
      2. 7.2.2 两点校准
        1. 7.2.2.1 步骤 1 — 偏移校准(零输入点)
        2. 7.2.2.2 步骤 2 — 增益校准(满量程点)
      3. 7.2.3 使用外部 ADC
    3. 7.3 模式切换
    4. 7.4 THD 算法选择
      1. 7.4.1 方法 1 — 基于 PLL(未定义 HARMONICS_SUPPORT 宏时的默认值)
      2. 7.4.2 方法 2 — Goertzel DFT(HARMONICS_SUPPORT 和 USE_GOERTZEL_THD 宏均已定义时)
      3. 7.4.3 方法 3 — 2048 点实数 FFT(已定义 HARMONICS_SUPPORT 宏但未定义 USE_GOERTZEL_THD 宏时)
    5. 7.5 拓扑选择
    6. 7.6 启用功能
    7. 7.7 系统参数
    8. 7.8 每相位比例因子
  11. 8运行示例
    1. 8.1 访问每个相位的参数
    2. 8.2 访问系统总测量值
    3. 8.3 访问相位状态标志

库声明

该库作为参考代码提供,用于演示德州仪器 (TI) C2000 微控制器上的计量算法概念。该库并非可直接投入生产的解决方案,未经实质性修改和验证,不得用于发布产品。

代码默认以 DEBUG 模式提供,为计量引擎提供软件生成的、数学上完美的正弦波。此默认值为有意设置,因为 DEBUG 模式允许用户验证算法并探索测量输出而无需硬件。但是,DEBUG 模式无法让用户了解系统使用真实模数转换器 (ADC) 输入、真实电流互感器、真实分压器或真实市电信号时的表现。

下面列出了在库可与功率测量系统配合使用之前,需要针对用户硬件进行特定工程工作的领域:

  • ADC 配置 — 必须在系统配置 (SysConfig) 菜单中配置片上 ADC,以匹配所用电路板的通道分配、采样率、触发源和采集窗口。默认配置针对特定的 LaunchPad™ 开发套件引脚排列;除非同时修改 .syscfg 文件和 adc_config.h 文件,否则该配置不适用于定制电路板。
  • 模拟前端缩放 — template.h 模板中 PHASE_x_VOLTAGE_SCALE_FACTOR 和 PHASE_x_CURRENT_SCALE_FACTOR 字段的值均为占位符。必须根据实际使用的硬件得出以下值列表:
    • 分压器分压比
    • 电流互感器
    • 分流电阻器
    • 运算放大器 (op-amp) 增益
    • ADC 基准电压
    使用不正确的比例因子会产生在数字上看似合理但不正确的读数。
  • ADC 校准 — 必须按照节 7.2.2 中所述在实际硬件上执行两点校准(直流偏移和增益)。
  • 相位校正 — 电流互感器和模拟滤波器级在电压和电流测量路径之间引入相移。该相移直接影响有功功率和功率因数的精度。
  • 外部 ADC 支持 — 如果设计使用外部 Σ-Δ 或逐次逼近型寄存器 (SAR) ADC,而不是片上 ADC,则必须完全重写 ADC_readMetrologyData() 函数才能与 ADC 驱动程序连接。库架构支持重写此函数,但 adc_config.c 文件中的任何内容均无法直接用于不同的 ADC。
  • ISR 时序 — 计量后台任务必须精确地以每秒 SAMPLE_RATE 次采样的速率执行。默认使用 CPUTimer0 任务。如果系统使用不同的计时器、直接存储器存取 (DMA) 触发器或 ADC 转换结束中断,则必须相应地更改 metrology_main_file.c 文件中的中断服务例程 (ISR) 接线。

所有默认值均未根据真实硬件基准进行验证。这些值的存在是为了让 DEBUG 模式演示生成在数字上合理的输出。将 template.h 模板和 adc_config.h 文件中的每个数字视为起点,而不是规格。