AAS (IEC 63278) 개요
IEC 63278 Asset Administration Shell(AAS) 국제 표준과 Caffeine Framework의 통합을 소개합니다.
IEC 63278 표준이란?
Asset Administration Shell(AAS) 은 Industry 4.0에서 물리적 자산(장비, 센서, 제품 등)을 디지털 세계에서 표현하기 위한 국제 표준입니다. IEC 63278 시리즈로 정의되며, 독일 Plattform Industrie 4.0에서 주도하고 있습니다.
핵심 목적
- 상호운용성(Interoperability): 제조사, 프로토콜, 시스템에 관계없이 자산 정보를 표준화된 형태로 교환
- 디지털 트윈(Digital Twin): 물리적 자산의 디지털 표현을 수명 주기 전체에 걸쳐 관리
- 의미적 식별(Semantic Identification): ECLASS, IEC CDD 등 국제 사전을 통해 데이터에 의미를 부여
- 벤더 중립(Vendor Neutral): JSON, XML, AASX 등 개방형 포맷으로 데이터 교환
디지털 트윈과의 관계
디지털 트윈은 물리적 자산의 가상 복제본이라는 포괄적 개념이고, AAS는 이를 표준화된 데이터 구조로 구현하는 구체적 방법론입니다. AAS는 디지털 트윈의 "봉투(Envelope)"로서, 자산의 정체성(Identity), 구조(Structure), 의미(Semantics)를 표준화합니다.
AAS 핵심 구조
IEC 63278은 계층적 데이터 모델을 정의합니다. 모든 AAS는 다음 4가지 핵심 요소로 구성됩니다.
Shell (AssetAdministrationShell)
AAS의 최상위 컨테이너입니다. 자산의 글로벌 고유 식별자(Global Asset ID) 와 메타데이터를 포함하며, 하나 이상의 Submodel을 참조합니다.
public interface IAssetAdministrationShell
{
string Id { get; }
string IdShort { get; }
AssetInformation AssetInformation { get; }
IReadOnlyList<ISubmodelReference> Submodels { get; }
}
Submodel
자산의 특정 측면(Aspect)을 구조화된 데이터로 표현합니다. 예를 들어, Nameplate(명판)은 제조사 정보를, TechnicalData(기술 데이터)는 장비 사양을 담습니다.
public interface ISubmodel
{
string Id { get; }
string IdShort { get; }
SemanticId? SemanticId { get; }
IReadOnlyList<ISubmodelElement> SubmodelElements { get; }
}
SubmodelElement
Submodel 내부의 개별 데이터 항목입니다. Property, SubmodelElementCollection, Blob, File 등 다양한 타입을 지원합니다.
ConceptDescription
데이터 항목의 의미(Semantics) 를 정의합니다. ECLASS IRDI, IEC CDD 등 국제 사전의 개념을 참조하여 데이터의 정확한 의미를 전달합니다.
Caffeine과 AAS
Caffeine Framework는 IEC 63278 AAS 표준을 네이티브로 통합하여, IIoT 엣지 플랫폼의 장비 데이터를 국제 표준 형태로 변환하고 교환할 수 있도록 지원합니다.
주요 기능
| 기능 | 설명 |
|---|---|
| 장비 매니페스트 → AAS 자동 변환 | 기존 Caffeine 장비 정의를 AAS Shell로 변환 |
| 서브모델 자동 빌드 | 태그 정의 기반으로 Nameplate, TechnicalData 등 자동 생성 |
| IEC 63278-1 JSON 직렬화 | 표준 호환 JSON 포맷으로 직렬화/역직렬화 |
| AASX 패키지 지원 | AASX 파일 Import/Export |
| REST/gRPC API | AAS Repository, Registry API 제공 |
| SemanticId 자동 매핑 | 태그 타입에서 ECLASS IRDI 자동 결정 |
| RAG 파이프라인 통합 | AAS 문서를 AI 기반 RAG로 검색/분석 |
활성화 방법
// Program.cs
services.AddCaffeineAas()
.AddSubmodelProvider<NameplateSubmodelProvider>()
.AddSemanticIdMapper<EclassSemanticIdMapper>()
.WithAasxPackageSupport();
지원 Submodel 유형
Caffeine은 IEC 63278 및 IDTA(Industrial Digital Twin Association) 표준 서브모델 템플릿을 기본 지원합니다.
| Submodel | IDTA 번호 | 설명 | 자동 생성 |
|---|---|---|---|
| Nameplate | IDTA 02006-2-0 | 제조사, 모델명, 시리얼 번호 등 명판 정보 | O |
| TechnicalData | IDTA 02003-1-2 | 장비 기술 사양 (최대 온도, 압력 등) | O |
| OperationalData | IDTA 02016-1-0 | 실시간 운영 데이터 (현재 온도, 압력, 유량) | O |
| AlarmCondition | - | 경보 조건 및 이력 | O |
| Documentation | IDTA 02004-1-2 | 매뉴얼, 인증서 등 첨부 문서 | 수동 |
| MaintenanceHistory | - | 유지보수 이력 및 예정 작업 | O |
SemanticId 매핑
Caffeine은 태그의 물리량 타입을 ECLASS IRDI(International Registration Data Identifier)로 자동 매핑합니다. 이를 통해 AAS 데이터의 의미를 국제적으로 통용되는 표준으로 전달합니다.
기본 매핑 테이블
| Caffeine 태그 타입 | ECLASS IRDI | 물리량 | 단위 |
|---|---|---|---|
Temperature | 0173-1#02-AAI835#001 | 온도 | degC |
Pressure | 0173-1#02-AAI836#001 | 압력 | Pa |
Flow | 0173-1#02-AAI837#001 | 유량 | L/min |
Voltage | 0173-1#02-AAI838#001 | 전압 | V |
Current | 0173-1#02-AAI839#001 | 전류 | A |
Humidity | 0173-1#02-AAI840#001 | 습도 | %RH |
Speed | 0173-1#02-AAI841#001 | 속도 | rpm |
Position | 0173-1#02-AAI842#001 | 위치 | mm |
Weight | 0173-1#02-AAI843#001 | 중량 | kg |
커스텀 매핑
기본 매핑 외에 자체 ECLASS 매핑을 추가할 수 있습니다.
public interface ISemanticIdMapper
{
SemanticId? Map(string tagType);
bool CanMap(string tagType);
}
여러 매퍼를 체이닝하여 우선순위 기반으로 매핑할 수 있습니다.
services.AddCaffeineAas()
.AddSemanticIdMapper<CustomSemanticIdMapper>() // 우선순위 1
.AddSemanticIdMapper<EclassSemanticIdMapper>(); // 우선순위 2 (폴백)
Graceful Degradation
Caffeine의 AAS 기능은 선택적(Opt-in) 으로 설계되어 있습니다. AAS 모듈을 활성화하지 않아도 기존 태그 수집, 알람, 히스토리 등 모든 기능이 100% 정상 동작합니다.
동작 방식
| AAS 설정 상태 | 태그 수집 | 알람 | 히스토리 | AAS API | AAS 변환 |
|---|---|---|---|---|---|
| 미활성화 | 정상 | 정상 | 정상 | 404 반환 | 미동작 |
| 활성화 | 정상 | 정상 | 정상 | 정상 | 정상 |
| AAS 서비스 장애 | 정상 | 정상 | 정상 | 503 반환 | 재시도 |
- AAS 모듈이 등록되지 않은 경우, AAS 관련 API 엔드포인트는
404 Not Found를 반환합니다. - AAS 서비스에 일시적 장애가 발생해도 핵심 데이터 수집 파이프라인은 영향을 받지 않습니다.
- AAS 변환 실패 시 원본 태그 데이터는 보존되며, 변환만 건너뜁니다.
아키텍처 레이어
Caffeine AAS는 Clean Architecture 원칙에 따라 계층적으로 설계되어 있습니다.
레이어별 역할
| 레이어 | 프로젝트 | 역할 |
|---|---|---|
| Core | Caffeine.Core | AAS 관련 인터페이스 정의 (IAasRepository, ISubmodelProvider, ISemanticIdMapper 등) |
| Domain | Caffeine.Aas | AAS 도메인 모델, 엔티티, 값 객체, 변환기 (Converter) |
| Application | Caffeine.Aas.Rag | RAG 파이프라인 (문서 인제스트, 벡터 검색, LLM 연동) |
| Presentation | Caffeine.Engine | REST/gRPC API 엔드포인트, AAS Controller |
의존성 규칙
- Core: 어떤 외부 프로젝트도 참조하지 않음 (최하위 계층)
- Aas: Core만 참조
- Aas.Rag: Core + Aas 참조
- Engine/Admin: 모든 계층 참조 가능 (Composition Root)
다음 단계
- AAS 시작하기 -- 단계별 설정 및 사용 가이드
- AAS 핸즈온 랩 -- 반도체 CVD 장비를 AAS로 모델링하는 실전 튜토리얼
- AAS API 레퍼런스 -- REST/gRPC API 상세 문서