PolarHub
  • Agents
  • MCP Servers
  • Skills
  • PolarBear
PolarHub © 2026
技能市场测试开发ICDConverter TIU
返回「测试开发」

ICDConverter TIU

by PolarHub·userskill

2下载测试开发

简介

面向航空电子 ICD Excel 文件的标准 Template 格式转换 Skill,支持协议帧分析、颜色编码识别、字段元数据索引、帧长度校验和 Excel 输出。

SKILL.md 详细内容

来自 USERSKILL · 4KB

ICD 文件格式转换器

概述

本技能用于将各厂商、各项目不同格式的航空电子系统接口控制文件(ICD, Interface Control Document)Excel, 统一转换为标准的 Template 格式,以便系统集成、数据库管理和后续工具链处理。

转换前必须执行的分析步骤

第1步:读取并理解源文件结构

  1. 使用 openpyxl 加载 Excel,检查所有 Sheet 名称
  2. 定位协议/帧结构所在的 Sheet(通常命名为"协议"、"协议(2)"、"帧定义"等)
  3. 定位字段元数据所在的 Sheet(通常命名为"数据格式"、"信号定义"等)
  4. 定位帧说明所在的 Sheet(通常命名为"帧说明"、"物理层"等,包含帧头格式、CRC算法、字节序等)

第2步:颜色编码识别(关键!)

许多 ICD 文件使用单元格背景色区分不同位宽的字段类型。必须使用 openpyxl 读取 cell.fill.fgColor.rgb 来识别:

常见颜色RGB 值含义
蓝色0000B0F0帧头/帧标识字段
橙色00FFC00016bit 数据字段
绿色0092D0501bit bool 字段
无色none / 00000000元数据/标签行

若文件未使用颜色编码,则从"数据格式"Sheet 的位宽列推断。

第3步:构建字段元数据索引

从"数据格式"Sheet 提取每个信号字段的元数据,建立查找字典:

field_meta[signal_name] = {
    'desc': 变量描述,
    'fmt':  数据类型(uint16/int16/bool),
    'width': 位宽(16/1),
    'freq': 信号频率,
    'note': 备注(含枚举信息)
}

第4步:逐行解析帧结构

遍历帧数据 Sheet 的每一行,根据颜色将每个单元格归类为:

  • 蓝色 → 帧头字段(16bit,标识帧类型)
  • 橙色 → 16bit 数据字段
  • 绿色 → 1bit bool 字段(含 Spare 预留位)

跳过元数据行("CRC校验"、"长度"、"备注"、"16bit"、"1bit"等文本标签)。

第5步:帧长度校验(必须执行!)

这是保证转换正确性的关键步骤:

  1. 累加所有字段的位宽:total_bits = sum(field.bit_width)
  2. 与声明的数据字数对比:expected_bits = stated_word_count × 16
  3. 差值必须为 0;若不足,使用 Spare 字段补齐到目标位数
if current_bit_offset < target_bits:
    padding = target_bits - current_bit_offset
    for i in range(padding):
        fields.append({'name': 'Spare', 'bit_width': 1, ...})

Template 输出规范

表头字段(18列,从左到右)

列号字段名说明
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 │
└──────────┴──────────┴──────────────────┴──────────┘
  • 物理帧头(2字节):如 0xA0 0x01,不计入数据字数
  • 帧标识(2字节):逻辑帧类型,已包含在数据字中
  • 数据字段:115 words = 230 bytes(含帧标识)
  • CRC校验(2字节):帧尾

校验区间计算

check_start = 物理帧头字节数 (通常为2)
check_end   = 物理帧头字节数 + 数据字节数 - 1

格式:"2,231" 表示校验从字节2到字节231(字节0-1是帧头,字节232-233是CRC)。

帧头数据处理

帧标识如 0xA001,按小端序输出时需字节交换:

  • 高字节 A0,低字节 01
  • 小端序输出:01 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 后,按用户需求依次执行:

  1. 转换为 .icd 文件:调用 icd_converter 工具
  2. 加入数据库:调用 add_icd_file_to_data_bases 工具

脚本使用

本技能捆绑了一个 Python 转换脚本 scripts/convert_icd.py,可作为转换模板使用。

python scripts/convert_icd.py <source.xlsx> <output_template.xlsx>

脚本需要根据具体 ICD 文件的 Sheet 结构和颜色编码进行调整。

相关 Skills(来自「测试开发」)

测试用例生成 Skills v2.0

包含 15 个子 Skill 的测试用例生成流水线,从产品说明书读取、需求分析、测试策略、正负向用例编写、质量审查到 Excel 输出。

50

Simulink HIL Modeling Standard

通用 Simulink HIL 建模、重构、迁移、评审和发布规范。用于设计 Plant/Control/IO/Bus/Fault/Monitor 架构,定义 Subsystem、Bus、ValueType、MonBus 和 Variant 接口,治理数据字典、参数、采样时间、多核任务、引用组件和初始化流程,检查 .slx/.mdl/.sldd/MATLAB Project,或为实时 HIL 模型生成合规报告、迁移方案、测试计划与发布证据。

37

ICDConverter AVIAGE Template

航空电子系统 ICD 接口控制文件(AVIAGE SYSTEMS 格式)转标准 Template 格式转换专家,适用于 ICD 转换、接口控制文件格式统一和帧结构解析。

2

ai-regression-testing

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.

0

angular-developer

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.

0

benchmark-methodology

>- 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.

0

给 Agent 的安装提示词

复制下方脚本发给 AI,Agent 会自动完成下载和解压

Download and install a skill. Follow these steps EXACTLY. If any step fails, STOP and report the error.

SKILL_NAME="icdconverter-tiu"
DOWNLOAD_URL="/downloads/userskills/ICDConverter_TIU_Skill.zip"
INSTALL_CMD="下载 ZIP 后解压到 Agent Skills 目录,并按 SKILL.md 配置 Python、pandas、openpyxl 和 ICD 转换脚本。"

STEP 1 - FIND SKILL DIRECTORY
[ -d "$HOME/.agents/skills" ] && echo "USER: $HOME/.agents/skills"
[ -d "$PWD/.agents/skills" ] && echo "PROJECT: $PWD/.agents/skills"
for d in "$HOME"/.*/skills; do [ -d "$d" ] && echo "USER: $d"; done
for d in "$PWD"/.*/skills; do [ -d "$d" ] && echo "PROJECT: $d"; done

Decide based on output (deduplicate lines first):
a) Only USER lines -> INSTALL_DIR="<that dir>/$SKILL_NAME"
b) Only PROJECT lines -> INSTALL_DIR="<that dir>/$SKILL_NAME"
c) Both USER and PROJECT -> ask the user to pick global install or project install.
d) Nothing found -> mkdir -p "$HOME/.agents/skills"; INSTALL_DIR="$HOME/.agents/skills/$SKILL_NAME"

STEP 2 - PREPARE
[ -f "$INSTALL_DIR/SKILL.md" ] && echo "EXISTS" || echo "NEW"
# If EXISTS, ask user whether to overwrite. If no, STOP.
mkdir -p "$INSTALL_DIR"

STEP 3 - DOWNLOAD
TMPDIR=$(mktemp -d)
curl -fSL -o "$TMPDIR/skill.zip" "$DOWNLOAD_URL" 2>/dev/null || wget -q -O "$TMPDIR/skill.zip" "$DOWNLOAD_URL"
# If both fail, try INSTALL_CMD as fallback: $INSTALL_CMD
# If still fail, STOP.

STEP 4 - EXTRACT & INSTALL
unzip -o "$TMPDIR/skill.zip" -d "$TMPDIR/ext" 2>/dev/null || python3 -m zipfile -e "$TMPDIR/skill.zip" "$TMPDIR/ext"
# If both fail, this is not a valid ZIP. STOP.

SKILL_PATH=$(find "$TMPDIR/ext" -maxdepth 2 -name "SKILL.md" -print | head -1)
if [ -n "$SKILL_PATH" ]; then
  cp -R "$(dirname "$SKILL_PATH")"/. "$INSTALL_DIR"/
else
  echo "FATAL: SKILL.md not found"; find "$TMPDIR/ext" -type f
fi

STEP 5 - VERIFY
head -5 "$INSTALL_DIR/SKILL.md"

DONE
Read "$INSTALL_DIR/SKILL.md" and follow its instructions to finish the user's task.
粘贴到 Claude / Cursor / Codex 等 Agent 后,会按步骤自动安装到 ~/.agents/skills/

自动安装

通过 PolarBear 协议从 ZIP 地址导入 Skill

Skill 压缩包地址
/downloads/userskills/ICDConverter_TIU_Skill.zip

polarbear://skills/download?name=icdconverter-tiu&url=%2Fdownloads%2Fuserskills%2FICDConverter_TIU_Skill.zip

手动安装

3 步完成

  1. 1

    下载 Skill 压缩包

    下载 ZIP
  2. 2

    将其解压到 Agent 的 Skills 目录

    ~/.agents/skills/icdconverter-tiu/
  3. 3

    重启或重新加载 Agent,让 Skill 可用

    重启 Agent 客户端,或刷新会话后即可调用此 Skill。

来源

平台
userskill
作者
PolarHub
Slug
icdconverter-tiu