by PolarHub·userskill
面向航空电子 ICD Excel 文件的标准 Template 格式转换 Skill,支持协议帧分析、颜色编码识别、字段元数据索引、帧长度校验和 Excel 输出。
本技能用于将各厂商、各项目不同格式的航空电子系统接口控制文件(ICD, Interface Control Document)Excel, 统一转换为标准的 Template 格式,以便系统集成、数据库管理和后续工具链处理。
许多 ICD 文件使用单元格背景色区分不同位宽的字段类型。必须使用 openpyxl 读取 cell.fill.fgColor.rgb 来识别:
| 常见颜色 | RGB 值 | 含义 |
|---|---|---|
| 蓝色 | 0000B0F0 | 帧头/帧标识字段 |
| 橙色 | 00FFC000 | 16bit 数据字段 |
| 绿色 | 0092D050 | 1bit bool 字段 |
| 无色 | none / 00000000 | 元数据/标签行 |
若文件未使用颜色编码,则从"数据格式"Sheet 的位宽列推断。
从"数据格式"Sheet 提取每个信号字段的元数据,建立查找字典:
field_meta[signal_name] = {
'desc': 变量描述,
'fmt': 数据类型(uint16/int16/bool),
'width': 位宽(16/1),
'freq': 信号频率,
'note': 备注(含枚举信息)
}
遍历帧数据 Sheet 的每一行,根据颜色将每个单元格归类为:
跳过元数据行("CRC校验"、"长度"、"备注"、"16bit"、"1bit"等文本标签)。
这是保证转换正确性的关键步骤:
total_bits = sum(field.bit_width)expected_bits = stated_word_count × 16if current_bit_offset < target_bits:
padding = target_bits - current_bit_offset
for i in range(padding):
fields.append({'name': 'Spare', 'bit_width': 1, ...})
| 列号 | 字段名 | 说明 |
|---|---|---|
| 1 | 序号 | 帧编号,从1递增 |
| 2 | 帧名称 | 格式:{项目}_Frame_{帧标识} |
| 3 | 帧长度(Bytes) | 物理帧总长度 = 物理帧头(2B) + 数据 + CRC(2B) |
| 4 | 帧类型 | 默认 AutoSyncFields |
| 5 | 字段名 | 同帧内重名追加 _2、_3 |
| 6 | 数据类型 | uint16 / int16 / bool |
| 7 | 字节序 | 默认 小端序 |
| 8 | 起始位 | 字段在帧内的起始位偏移 |
| 9 | 位长度 | 16 或 1 |
| 10 | 转换系数 | 默认 1,0 |
| 11 | 值范围 | 留空 |
| 12 | 是否帧头 | 帧头字段填"是" |
| 13 | 帧头数据 | 小端序字节交换输出(如 0xA001 → 01 A0) |
| 14 | 校验方式 | 根据帧说明填写(如 CRC-16-XMODEM) |
| 15 | 校验区间 | 起始字节,结束字节(从0开始,不含帧头和CRC) |
| 16 | 过滤条件 | 留空 |
| 17 | 枚举信息 | bool字段的有意义映射(格式:0:正常;1:故障) |
| 18 | 字段描述 | 从元数据提取 |
| 规则项 | 默认值 | 适用条件 |
|---|---|---|
| 帧类型 | AutoSyncFields | 未明确规定时 |
| 字节序 | 小端序 | 未明确规定时 |
| 转换系数 | 1,0 | 未明确规定时 |
| 数据类型 | uint16 | 无法从元数据推断时 |
同一帧中,"序号"、"帧名称"、"帧长度(Bytes)"、"帧类型"、"校验方式"、"校验区间" 这几列纵向合并单元格。
航空电子 ICD 通常使用三层帧结构:
┌──────────┬──────────┬──────────────────┬──────────┐
│ 物理帧头 │ 帧标识 │ 数据字段 │ CRC校验 │
│ 0xA0 0x01│ (16bit) │ (混合16bit+1bit) │ (16bit) │
│ 2 Bytes │ 2 Bytes │ N Bytes │ 2 Bytes │
└──────────┴──────────┴──────────────────┴──────────┘
0xA0 0x01,不计入数据字数check_start = 物理帧头字节数 (通常为2)
check_end = 物理帧头字节数 + 数据字节数 - 1
格式:"2,231" 表示校验从字节2到字节231(字节0-1是帧头,字节232-233是CRC)。
帧标识如 0xA001,按小端序输出时需字节交换:
A0,低字节 0101 A0(低字节在前)def process_frame_header(hex_str):
val = int(hex_str, 16)
high = (val >> 8) & 0xFF
low = val & 0xFF
return f"{low:02X} {high:02X}" # 小端序
同一帧内出现多次的同名字段,第1次保持原名,第2次起追加 _2、_3:
def deduplicate(fields):
counts = {}
for f in fields:
name = f['name']
if name in counts:
counts[name] += 1
f['name'] = f"{name}_{counts[name]}"
else:
counts[name] = 1
从"数据格式"Sheet 的备注列提取 bool 字段的枚举含义。常见格式:
1(True):故障\n0(False):正常 → 1:故障;0:正常1(True):地面\n0(False):空中 → 1:地面;0:空中1(True):激活\n0(False):未激活 → 1:激活;0:未激活生成 Template.xlsx 后,按用户需求依次执行:
icd_converter 工具add_icd_file_to_data_bases 工具本技能捆绑了一个 Python 转换脚本 scripts/convert_icd.py,可作为转换模板使用。
python scripts/convert_icd.py <source.xlsx> <output_template.xlsx>
脚本需要根据具体 ICD 文件的 Sheet 结构和颜色编码进行调整。
包含 15 个子 Skill 的测试用例生成流水线,从产品说明书读取、需求分析、测试策略、正负向用例编写、质量审查到 Excel 输出。
通用 Simulink HIL 建模、重构、迁移、评审和发布规范。用于设计 Plant/Control/IO/Bus/Fault/Monitor 架构,定义 Subsystem、Bus、ValueType、MonBus 和 Variant 接口,治理数据字典、参数、采样时间、多核任务、引用组件和初始化流程,检查 .slx/.mdl/.sldd/MATLAB Project,或为实时 HIL 模型生成合规报告、迁移方案、测试计划与发布证据。
航空电子系统 ICD 接口控制文件(AVIAGE SYSTEMS 格式)转标准 Template 格式转换专家,适用于 ICD 转换、接口控制文件格式统一和帧结构解析。
Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code.
Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.
>- Use after competitive-platform-analysis has produced a tiered competitor set. Scores each competitor across nine weighted dimensions (positioning, voice, visual craft, offer packaging, evidence, enterprise-readiness, thought leadership, pricing, client's strategic tension) with explicit 1–5 rubrics and a tension-plot. Precedes competitive-report-structure.