2. AAS基础
Asset Administration Shell(资产管理壳,简称AAS)是工业4.0参考架构模型(RAMI 4.0)中实现“资产数字化代理”的核心载体。它把一个物理或逻辑资产(设备、传感器、PLC、软件、甚至一条产线)封装成标准化的数字表示,使不同厂商、不同平台之间能够以统一语义交换信息。在互操作测试与平台集成中,AAS既是被测对象,也是集成接口的语义基础。
一、元模型与信息模型:从抽象规则到具体实例
AAS的元模型(Metamodel)定义了“可以描述什么”以及“如何描述”的抽象规则,它由IEC 63278系列标准规范。元模型中的核心元素包括:Asset(资产)、AssetAdministrationShell(壳本身)、Submodel(子模型)、SubmodelElement(子模型元素)、ConceptDescription(概念描述)以及Identifier(标识符)。元模型规定了这些元素之间的包含、引用和类型约束关系。
信息模型(Information Model)则是元模型在具体场景中的实例化。例如,一台电机的AAS信息模型可能包含“技术参数”子模型、“运行状态”子模型和“维护记录”子模型;每个子模型内又包含Property、Operation、Event等子模型元素。元模型是“语法”,信息模型是“语义内容”,二者共同保证AAS既可被机器解析,又可被业务理解。
二、标识符与命名空间:互操作的“身份证”与“地址系统”
AAS中每一个可被引用的对象都必须拥有全局唯一标识符。标准支持两类标识符:IRI(Internationalized Resource Identifier)和IRDI(International Registration Data Identifier)。IRI适合互联网环境,例如 https://example.com/aas/motor-001;IRDI则继承自IEC 61360体系,常用于工业标准数据字典,例如 0173-1#02-AAA123#001。
命名空间(Namespace)解决的是“同名不同物”和“同物不同名”的问题。通过为不同厂商、不同标准组织分配独立的命名空间前缀,AAS可以在全局范围内无歧义地引用概念描述。例如,aas: 映射到 https://admin-shell.io/,而某企业自定义的 myco: 映射到 https://mycompany.com/aas/ns/。在互操作测试中,命名空间冲突是导致语义解析失败的高频原因之一。
三、AAS信息模型的关键构成要素
| 元素 | 作用 | 互操作测试关注点 |
|---|---|---|
| AssetAdministrationShell | 壳的根对象,持有全局唯一id、资产引用和子模型引用 | id是否唯一、assetRef是否可解析、子模型引用是否完整 |
| Submodel | 按主题组织的语义容器,如技术参数、运行状态 | semanticId是否符合标准、kind是Instance还是Template |
| SubmodelElement | 子模型内的具体数据或操作,如Property、Operation | valueType是否匹配、idShort是否唯一、引用是否可达 |
| ConceptDescription | 为元素提供标准语义定义和数据规范 | semanticId是否指向有效CDD、单位与数据类型是否一致 |
| Identifier | 全局唯一标识,支持IRI和IRDI两种形式 | 格式合法性、命名空间映射是否正确、是否重复 |
四、典型场景:电机AAS的建模与集成
假设某产线需要集成一台第三方电机。电机厂商提供其AAS包,包含:壳标识符 https://motor-vendor.com/aas/motor-42,子模型“技术参数”引用标准语义ID https://admin-shell.io/ZVEI/TechnicalData/Submodel/1/2,子模型元素“额定功率”的valueType为xs:double,单位为kW。平台集成时,测试人员需要验证:壳标识符是否与资产数据库一致、子模型语义ID是否可解析、属性值类型是否与平台数据模型匹配。若命名空间未正确注册,平台可能将“额定功率”解析为未知概念,导致集成失败。
五、常见误区与复盘
- 误区一:把元模型当信息模型。元模型是规则,信息模型是实例。测试时不能只验证“结构合法”,还要验证“语义正确”。
- 误区二:标识符只用idShort。idShort仅在子模型内局部唯一,不能替代全局标识符。跨系统引用必须使用IRI或IRDI。
- 误区三:忽略命名空间版本。同一概念在不同版本中语义可能变化,命名空间应包含版本信息,如
.../1/2。 - 误区四:子模型引用悬空。壳引用了子模型,但子模型未随包分发或URL不可达,导致集成时解析失败。
# AAS标识符与命名空间检查示例(伪代码)
shell_id = "https://motor-vendor.com/aas/motor-42"
assert is_valid_iri(shell_id)
assert shell_id not in existing_ids
ns_map = {
"aas": "https://admin-shell.io/",
"myco": "https://mycompany.com/aas/ns/"
}
semantic_id = "aas:ZVEI/TechnicalData/Submodel/1/2"
resolved = resolve_namespace(semantic_id, ns_map)
assert resolved is not None
理解AAS的定义、元模型、信息模型、标识符与命名空间,是后续进行AAS互操作测试和平台集成的先决条件。只有语义层对齐,接口层的数据交换才有意义。