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 格式
打开配置对话框
- 在 Watch 窗口中选中一个或多个整型变量
- 右键点击 → 选择「配置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 整型值写入目标设备:
- 在写入列输入物理值(如
3.5) - 系统自动转换为 IQ 值:
3.5 / 8.0 × 32768 = 14336 - 以 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