Project Entity

Project · 프로젝트 · Projekt
IRI (semanticId)
https://dualsoftdev.github.io/aas-semantics/entity/Project/1/0

설명 / Description / Beschreibung

한국어
DualSoft ds2 프로젝트의 최상위 엔티티 (활성/패시브 시스템 모음 + 메타데이터).
English
Root entity of a DualSoft ds2 project (collection of active/passive systems + metadata).
Deutsch
Wurzelentität eines DualSoft ds2 Projekts (Sammlung aktiver/passiver Systeme + Metadaten).

다이어그램 / Diagram

전체 구조 / Overview — 이 엔티티가 DS 안에서 위치

Project ★ TokenSpec Recipe · #1 DsSystem ApiDef ApiDef TAG Flow Work Call ApiCall Call₂ Work₂ Write Read Write Read DsSystem Work Call ApiCall ApiDef → DsSystem DsSystem Work Call ApiCall ApiDef → DsSystem ArrowWork ArrowCall Tag-Pair Bus ★ Project

엔티티 상세 / Entity Detail — 내부 구조 · 동작

📦 Project — DS 모델 루트 컨테이너 DsEntity 루트 · 모든 시스템·디바이스·토큰 사양을 보유 Project (root) METADATA name: "MyFactory" author: "ahn@dualsoft.com" version: "1.2.0" dateTime: 2026-04-29T00:00 ENTITY ID 컬렉션 activeSystemIds[*] → DsSystem passiveSystemIds[*] → Device tokenSpecs[*] #1 RecipeA "Steel Door" #2 RecipeB "Aluminum Panel" IDTA 표준 SM (별도 SM 으로 직렬화) Nameplate · HandoverDocumentation TechnicalData (시뮬결과는 SeqSim 으로 이전) activeSystemIds ⚙ Active Systems 제어 흐름을 주도 — Flow 보유 Cell-A Cell-B DsSystem (Active role) passiveSystemIds 🔧 Passive Devices Active 가 호출 — APIs 노출 Cylinder1 Robot1 Sensor1 DsSystem (Passive role) 📂 AAS Export Promaker → AASX 패키징 SequenceModel → Project · Systems · Flows · Works · Calls SequenceSimulation → SystemProperties/SimulationResult + KPIs SequenceMonitoring · Logging → Runtime state · Events SequenceMaintenance · HMI · Quality · Cost → 도메인 별 전용 SM IDTA 표준 SM (외부 템플릿) Nameplate · HD · TechnicalData ★ ds2 v2026: 시뮬결과는 SeqSim 으로 이동 ★ ID 체인: Project.activeSystemIds[i] → DsSystem.id (referential integrity)
상속 체인 / Inheritance: DsEntity

F# 타입 정의 / Type Definition

type Project [<JsonConstructor>] internal (name) =
    inherit DsEntity(name)

    member val ActiveSystemIds       = ResizeArray<Guid>() with get, set
    member val PassiveSystemIds      = ResizeArray<Guid>() with get, set

    member val Nameplate             : Nameplate option             = None
    member val HandoverDocumentation : HandoverDocumentation option = None
    member val TechnicalData         : TechnicalData option         = None
    member val SimulationResult      : SimulationScenario option    = None

    member val TokenSpecs = ResizeArray<TokenSpec>()
    member val Author     : string         = ""
    member val DateTime   : DateTimeOffset = DateTimeOffset.Now
    member val Version    : string         = "1.0.0" 

필드 / Fields

FieldTypeDefaultAAS fieldDescription
IdGuidGuid.NewGuid()Guid전역 고유 식별자 (자동 생성)
Namestring(생성자 인자)Name엔티티 이름
ActiveSystemIdsResizeArray<Guid>[]ActiveSystemIds (Skip)활성 (능동) 시스템 Id 리스트
PassiveSystemIdsResizeArray<Guid>[]PassiveSystemIds (Skip)패시브 (디바이스) 시스템 Id 리스트
NameplateNameplate optionNoneNameplate (Skip)별도 SM (IDTA 02006) 으로 직렬화
HandoverDocumentationHandoverDocumentation optionNoneHandoverDocumentation (Skip)별도 SM (IDTA 02004) 으로 직렬화
TechnicalDataTechnicalData optionNoneTechnicalData (Skip)별도 SM (IDTA 02003) 으로 직렬화 — 시뮬 결과는 포함하지 않음
SimulationResultSimulationScenario optionNoneSimulationResult (Skip)SequenceSimulation/SystemProperties/SimulationResult 로 직렬화되는 시뮬 KPI 박제
TokenSpecsResizeArray<TokenSpec>[]TokenSpecs토큰 유형 카탈로그
Authorstring""Author프로젝트 작성자
DateTimeDateTimeOffsetDateTimeOffset.NowDateTime마지막 수정 시각
Versionstring"1.0.0"Version프로젝트 버전 (semver)

관계 / Relationships

예제 (F#) / Example

let project = Project("MyFactory")
project.Author  <- "ahn@dualsoft.com"
project.Version <- "1.2.0"
project.ActiveSystemIds.Add(cellA.Id)
project.PassiveSystemIds.Add(cylinder.Id)

AAS 매핑 / AAS Mapping

Project.* 필드는 SequenceModel 서브모델 안의 'Project' SubmodelElementCollection 에 매핑. Nameplate / HandoverDocumentation / TechnicalData 는 IDTA 표준 서브모델로 분리되고, SimulationResult 는 SequenceSimulation/SystemProperties/SimulationResult SMC 로 emit.

원본 코드 / Source files

AAS ConceptDescription 메타

idShort: Project
dataType: STRING