工业界为了让产品数据在企业内外流动得既精确又高效,发展出多种分类与编码方法。层次码依托树形结构逐级细分,特征组合码把每一位数字视为独立的属性开关,而复合码将两者优点缝合成灵活的混血方案。透过对典型系统(如 Opitz 9 位机械零件编码)、商业标准(如物流 CS 复合条码)以及企业物料主数据实践的拆解,可以看到编码选型会直接影响信息系统的可扩展性、检索效率与智能化程度。本文沿着定义 → 结构 → 例证 → 应用 → 选型思考
的逻辑展开,帮助读者掌握三种编码方式的本质差异与互补关系。
概念与历史脉络
分类编码在制造业中的角色
制造企业需要把几何形状、材料、工艺路线
等多源信息浓缩成短码,以便 ERP、PLM、MES 等系统调用。自 20 世纪 60 年代组技术(Group Technology, GT)兴起以来,层次、特征组合与复合三大结构逐步定型。(fztr.file.gkfz.net, Book118)
三种代码的定义
-
层次码 Hierarchical code:采用逐级限制的含义继承机制,上一层决定下一层取值的语义。(Mission Control, Tidjma)
-
特征组合码 Attribute-combination code:又称链式或矩阵式码,每一位或每一段代表单独属性,位与位之间没有依赖。Opitz 系统是经典代表。(CAD Journal, Scribd)
-
复合码 Composite / Hybrid code:把层次段与组合段拼接,或把一维条码与二维条码叠加实现多模态读取,兼具树状检索与属性检索优势。(Google Patents, fztr.oss-cn-beijing.aliyuncs.com)
层次码:信息树的数字化投影
结构特征
层次码以分类树为骨骼:从左到右(或从上到下)每跳一级都缩小语义范围。相同前缀天然聚成族
,方便仓库分区或 BOM 汇总。容量随分支指数增长,而码长却相对可控。(优快云 Blog)
实际例子
-
UNSPSC(联合国标准产品与服务分类)八位数字前四段各两位,对应
段-家族-类-货品
四层。(Mission Control) -
企业物料主数据:文章
主数据及编码
一文展示了用层次法给电机零件编号,顶层 01 代表电机,次层 03 代表定子,末层 007 代表某功率规格。(优快云 Blog)
优势与局限
-
优势:码短信息密度高;前缀检索能秒级锁定大族。
-
局限:树形锁死后难插空;所有分支需预先规划导致设计周期长。(fztr.file.gkfz.net)
特征组合码:属性开关矩阵
结构特征
每一位(或几位)绑定一组互斥取值,例如 0‒9
、A‒Z
甚至特殊符号。位与位之间相互独立,于是可以按任何维度切片筛选。(CAD Journal)
Opitz 9 位机械零件编码
位次 | 属性示例 | 典型取值 |
---|---|---|
1 | 外形 | 0:旋转体,1:箱体 … |
2 | 主尺寸 | 0:长/径比<0.5,1:0.5‒3 … |
3 | 次尺寸 | 0‒9 不同比例 |
4 | 端面形状 | 0:平端,1:阶梯 … |
5 | 孔特征 | 0:无孔,1:通孔 … |
6-9 | 工艺、材料、精度等扩展位 | 自定义 |
可执行示例
# opitz_encoder.py
SCHEMA = {
1: {"shaft": "0", "box": "1"},
2: {(0, 0.5): "0", (0.5, 3): "1"},
3: {(0, 0.25): "0", (0.25, 1): "1"},
4: {"flat": "0", "step": "1"},
5: {"none": "0", "through": "1"}
}
def encode(feature_dict):
code = []
code.append(SCHEMA[1][feature_dict["shape"]])
code.append(next(v for k, v in SCHEMA[2].items()
if k[0] <= feature_dict["l_d"] < k[1]))
code.append(next(v for k, v in SCHEMA[3].items()
if k[0] <= feature_dict["d_rel"] < k[1]))
code.append(SCHEMA[4][feature_dict["end"]])
code.append(SCHEMA[5][feature_dict["hole"]])
return "".join(code) + "0000" # 留出扩展位
if __name__ == "__main__":
part = {"shape": "shaft", "l_d": 0.8, "d_rel": 0.3,
"end": "flat", "hole": "through"}
print(encode(part)) # 输出 0 1 1 0 1 0000
实际环境中可把脚本嵌入 PLM 插件,自动生成零件码。
优势与局限
-
优势:新增属性只需占一位,不破坏旧码;容易用 SQL
LIKE '__1_0%'
做条件查询。 -
局限:位数增长快;独立位造成码串难以人工解读。(fztr.file.gkfz.net)
复合码:把树干与矩阵缝在一根绳上
结构特征
常见拼接方式:层次段 + 组合段
;或一维条码 + 二维矩阵码
(如物流 CS 码把 RSS-14 与 MicroPDF417 叠加)。(Google Patents)
例子
-
汽车零件号:
12-3456-A708
-
12
为系统层级代表底盘件。 -
3456
为流水号留给采购系统。 -
A708
为特征组合,A
材料牌号,7
表面硬度区间,08
年份与设计序列。
-
-
物流复合条码:上方一维条可被传统激光扫描枪快速读取 SKU,下方二维码为批次、有效期、冷链温度曲线等大数据。(Google Patents)
优势与局限
-
优势:前缀分族,后缀灵活;兼容老系统又透传新属性;扫码设备既可低成本(一维)也可高信息量(二维)。
-
局限:设计复杂度最高;过度拼接易导致码长与解码逻辑双膨胀。(fztr.oss-cn-beijing.aliyuncs.com)
三种编码方式的应用场景与选型
维度 | 层次码 | 特征组合码 | 复合码 |
---|---|---|---|
典型行业 | 大型 ERP 物料、图书分类 | 机械零件、刀具库 | 物流、医疗器械 |
查询模式 | 前缀批量/模糊 | 条件过滤/位匹配 | 多模式结合 |
扩展弹性 | △(受树形约束) | ◎(加位即可) | ○(取决于设计) |
人工可读性 | ◎ | △ | ○ |
◎ 高,○ 中,△ 低
结语
层次码像分形树干,一点点向外生长;特征组合码像多维布尔立方,把属性拆进坐标;复合码则像嫁接树,兼收并蓄。企业若追求易维护
与批量统计
可优先层次码;若强调灵活扩展
与工艺特征挖掘
更适合特征组合码;当多源数据
与多设备扫描
同时存在时,复合码给出了折中答案。理解三者本质与边界,可以让信息系统的编码策略与业务演进保持同频共振。