IQ 数据格式

本文档介绍 EmeyeStudio 的 IQ 数据格式支持功能,用于将整型变量的原始 IQ 值转换为物理值进行显示和编辑。

功能概述

IQ 格式是无 FPU(浮点运算单元)芯片进行浮点运算的主要方式。在电机控制等嵌入式领域,大量变量以 IQ 整型存储,但实际代表的是物理量(如电流、电压、转速)。

EmeyeStudio 的 IQ 格式支持功能可以:
- 将 IQ 整型值自动转换为物理值显示
- 在 Watch 窗口和波形图中显示物理值
- 以物理值编辑,自动转换为 IQ 整型写入目标设备
- 保存 IQ 配置到工程和数据文件

适用场景

场景 说明
电机控制调试 观察相电流、母线电压等 IQ 变量的物理值
参数标定 以物理值(如 3.5A)而非 IQ 值(如 14336)进行写入
ADC 归一化 无符号 UQ 格式表示的 ADC 采样值

适用变量类型

IQ 格式仅适用于整型变量

变量类型 字节大小 常见 Q 格式
int8_t 1 字节 Q7
uint8_t 1 字节 UQ8
int16_t 2 字节 Q15
uint16_t 2 字节 UQ16
int32_t 4 字节 Q24, Q31
uint32_t 4 字节 UQ32

注意:float、double、指针、结构体等非整型变量不支持 IQ 格式配置,右键菜单中不会出现"配置IQ格式"选项。

转换原理

有符号 Q 格式

底数范围 [-1, 1),转换公式:

浮点值 = IQ值 / 2^qFormat
物理值 = 浮点值 × 物理标幺值

示例(Q15, 物理标幺值 8A):
- IQ 原始值:12345
- 浮点值:12345 / 32768 = 0.37674
- 物理值:0.37674 × 8 = 3.014 A

无符号 UQ 格式

底数范围 [0, 1),转换公式:

浮点值 = UQ值 / 2^qFormat
物理值 = 浮点值 × 物理标幺值

示例(UQ16, 物理标幺值 3.3V):
- UQ 原始值:50000
- 浮点值:50000 / 65536 = 0.76294
- 物理值:0.76294 × 3.3 = 2.518 V

配置 IQ 格式

打开配置对话框

  1. 在 Watch 窗口中选中一个或多个整型变量
  2. 右键点击 → 选择「配置IQ格式」(多选时显示为「批量配置IQ格式」)

提示:只有整型变量才会显示此菜单项。

配置对话框说明

配置项 说明 示例
启用IQ格式转换 勾选后启用转换
格式类型 有符号Q 或 无符号UQ 有符号Q
Q格式位数 小数位数,范围由变量字节大小决定 15
物理标幺值 量程幅值,必须大于0 8.0
物理单位 显示用的单位文本 A

Q格式位数范围

变量字节大小 有符号Q范围 无符号UQ范围
1 字节 Q1 ~ Q7 UQ1 ~ UQ8
2 字节 Q1 ~ Q15 UQ1 ~ UQ16
4 字节 Q1 ~ Q31 UQ1 ~ UQ32

预览区

对话框底部实时显示转换预览,帮助确认配置正确:

预览:
  IQ值 12345 → 浮点值 0.37674 → 物理值 3.014 A

有效范围显示

对话框会显示当前配置下的物理值有效范围:

有效范围: -8.000 A ~ 7.9998 A

应用到同类型变量

勾选「应用到同类型变量」后,配置将自动应用到工程中所有相同 C 类型和字节大小的整型变量。例如,配置一个 int16_t 变量的 Q15 格式后,所有 int16_t 变量都会应用相同的配置。

Watch 窗口显示

显示模式切换

Watch 窗口标题栏提供显示模式切换下拉框:

模式 说明 示例(Q15, 8A)
物理值(默认) 显示物理值 + 单位 3.014 A
浮点值 显示 IQ 底数浮点值 0.37674
原始值 显示 IQ 整型原始值 12345

提示:显示模式切换仅影响已配置 IQ 格式的变量,未配置 IQ 的变量始终显示原始值。

值列显示

变量 物理值模式 浮点值模式 原始值模式
g_phaseCurrentA (Q15, 8A) 3.014 A 0.37674 12345
g_busVoltage (Q15, 14V) 14.0 V 0.87500 28672
g_counter (未配置IQ) 100 100 100

写入功能

写入流程

启用 IQ 格式后,在 Watch 窗口的「写入」列输入物理值,系统自动转换为 IQ 整型值写入目标设备:

  1. 在写入列输入物理值(如 3.5
  2. 系统自动转换为 IQ 值:3.5 / 8.0 × 32768 = 14336
  3. 以 IQ 整型值写入目标设备

范围校验

如果输入的物理值超出 IQ 可表示的范围,系统会在日志中输出警告,但仍然允许写入(用户可能有意为之)。

波形显示

Y 轴物理值

启用 IQ 格式后,波形图的 Y 轴自动显示物理值刻度。数据在发布前已自动转换,所有订阅者(波形图、Watch 窗口等)自动获得正确的物理值。

Tooltip 显示

鼠标悬停在波形数据点上时,Tooltip 会显示物理单位:

g_phaseCurrentA: 3.0140 A

数据存储

工程文件

IQ 配置随工程变量保存在 .project JSON 文件中:

{
    "symbolName": "g_phaseCurrentA",
    "iqConfig": {
        "enabled": true,
        "isSigned": true,
        "qFormat": 15,
        "physicalBase": 8.0,
        "physicalUnit": "A"
    }
}

采集数据文件

IQ 配置随采集数据保存在 .xcpdata 文件的通道元数据中(V5 格式)。加载含 IQ 配置的数据文件时,Y 轴自动按物理值显示。

向后兼容

场景 处理方式
旧工程文件(无 iqConfig) IQ 配置默认为未启用,不影响现有行为
旧 .xcpdata 文件(V4 及以下) 按原始值显示
新工程文件 正常读写 IQ 配置
新 .xcpdata 文件(V5) 正常读写 IQ 配置

常见配置示例

电机相电流(Q15)

配置项
格式类型 有符号Q
Q格式位数 15
物理标幺值 8.0
物理单位 A
有效范围 -8.000 A ~ 7.9998 A

ADC 采样值(UQ16)

配置项
格式类型 无符号UQ
Q格式位数 16
物理标幺值 3.3
物理单位 V
有效范围 0 V ~ 3.2999 V

电机转速(Q24)

配置项
格式类型 有符号Q
Q格式位数 24
物理标幺值 10000.0
物理单位 rpm
有效范围 -10000 rpm ~ 9999.999 rpm

常见问题

Q: 右键菜单没有"配置IQ格式"选项

原因:只有整型变量支持 IQ 格式。float、double、指针、结构体等类型不会显示此选项。

解决方案:确认变量为整型(int8_t/uint8_t/int16_t/uint16_t/int32_t/uint32_t)。

Q: 物理值显示不正确

可能原因
- Q格式位数配置错误
- 有符号/无符号选择错误
- 物理标幺值设置不正确

解决方案
1. 打开配置对话框,检查预览区的转换结果
2. 确认 Q 格式位数与目标设备程序中的定义一致
3. 确认物理标幺值与目标设备的量程幅值一致

Q: 切换显示模式后波形图没有变化

说明:显示模式切换仅影响 Watch 窗口的值列显示。波形图的 Y 轴始终按 IQ 配置显示物理值,不受显示模式切换影响。

Q: 写入值与预期不符

可能原因:输入的是 IQ 整型值而非物理值。

解决方案:启用 IQ 格式后,写入列应输入物理值(如 3.5 表示 3.5A),系统会自动转换为 IQ 整型值。

Q: 如何取消 IQ 格式配置

操作:打开配置对话框,取消勾选「启用IQ格式转换」,点击确定即可。变量将恢复显示原始整型值。

相关文档


本文档最后更新时间:2026-06-03