--- id: wiki-2026-0508-data-twins title: Data Twins (Digital Twins) category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Digital Twin, Cyber-Physical Twin, Virtual Replica] duplicate_of: none source_trust_level: A confidence_score: 0.88 verification_status: applied tags: [digital-twin, iot, simulation, industry-4-0, modeling] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: Python/C++ framework: Azure Digital Twins / Omniverse / Modelica --- # Data Twins (Digital Twins) ## 매 한 줄 > **"매 digital twin 의 핵심: live data binding + physics-aware simulation + bidirectional sync"**. 매 2002 Michael Grieves 의 PLM 컨셉 으로 시작, 매 NASA Apollo 13 의 ground simulation 이 ancestor. 매 2026 현재 NVIDIA Omniverse, Azure Digital Twins, AWS IoT TwinMaker, 매 LLM-grounded 산업 simulation 으로 manufacturing / smart-city / healthcare 의 mainstream. ## 매 핵심 ### 매 3 fidelity levels - **Descriptive twin**: 매 static data + dashboard. - **Predictive twin**: 매 ML / physics simulation — 매 forecast. - **Prescriptive twin**: 매 optimize + actuate back to physical asset. ### 매 components - **Sensor layer**: 매 IoT (MQTT, OPC UA, CAN bus). - **Time-series store**: 매 InfluxDB, Timescale, AWS Timestream. - **Twin graph**: 매 ontology (DTDL, asset hierarchy). - **Simulation kernel**: 매 Modelica, Omniverse PhysX, OpenFOAM. - **Closed-loop controller**: 매 actuator command back. ### 매 응용 1. Manufacturing (Siemens, GE Predix — turbine twin). 2. Smart city (Singapore Virtual Singapore, Shanghai twin). 3. Healthcare (heart twin for surgery planning). 4. Supply chain (warehouse / fleet simulation). 5. Building / HVAC optimization (BIM + live sensor). ## 💻 패턴 ### DTDL (Digital Twins Definition Language) ```json { "@context": "dtmi:dtdl:context;3", "@id": "dtmi:com:example:Turbine;1", "@type": "Interface", "displayName": "Turbine", "contents": [ { "@type": "Telemetry", "name": "rpm", "schema": "double" }, { "@type": "Telemetry", "name": "tempC", "schema": "double" }, { "@type": "Property", "name": "model", "schema": "string" }, { "@type": "Command", "name": "shutdown" } ] } ``` ### Azure Digital Twins (Python SDK) ```python from azure.digitaltwins.core import DigitalTwinsClient from azure.identity import DefaultAzureCredential client = DigitalTwinsClient(url, DefaultAzureCredential()) twin = { "$metadata": {"$model": "dtmi:com:example:Turbine;1"}, "rpm": 3500.0, "tempC": 78.5, "model": "T-900" } client.upsert_digital_twin("turbine-42", twin) # Query for t in client.query_twins("SELECT * FROM digitaltwins WHERE tempC > 80"): print(t) ``` ### MQTT ingestion → twin update ```python import paho.mqtt.client as mqtt, json def on_message(client, userdata, msg): data = json.loads(msg.payload) update_twin(data["device_id"], {"rpm": data["rpm"]}) c = mqtt.Client() c.on_message = on_message c.connect("broker.local", 1883) c.subscribe("plant/+/telemetry") c.loop_forever() ``` ### Physics simulation (FMU via Modelica) ```python from fmpy import simulate_fmu result = simulate_fmu("turbine.fmu", start_time=0, stop_time=60, step_size=0.01, input=[("inlet_pressure", input_signal)]) ``` ### NVIDIA Omniverse (USD asset twin) ```python import omni.usd from pxr import UsdGeom, Gf stage = omni.usd.get_context().get_stage() turbine = UsdGeom.Xform.Define(stage, "/World/Turbine") turbine.AddRotateYOp().Set(Gf.Vec3f(0, rpm * dt * 6, 0)) # live RPM ``` ### Anomaly-driven actuation (closed loop) ```python def control_loop(twin): if twin.tempC > 95: send_command(twin.id, "reduce_load", value=20) log(f"Twin {twin.id} thermal protection triggered") ``` ### LLM-augmented twin Q&A ```python import anthropic client = anthropic.Anthropic() def ask_twin(twin_state, question): return client.messages.create( model="claude-opus-4-7-20260101", max_tokens=512, system="You are an expert in industrial twin diagnostics.", messages=[{"role": "user", "content": f"State: {twin_state}\nQ: {question}"}] ).content[0].text ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Asset monitoring only | Descriptive (dashboard) | | Predictive maintenance | Predictive (ML on telemetry) | | Autonomous operation | Prescriptive (closed-loop) | | 3D / VR walkthrough | Omniverse / USD | | Cloud-managed | Azure Digital Twins / AWS TwinMaker | | Edge constraints | Local twin + sync (KubeEdge) | **기본값**: 매 industrial use 의 Azure Digital Twins + DTDL ontology, 매 3D viz 의 Omniverse. ## 🔗 Graph - 부모: [[Cyber-Physical Systems]] - 변형: [[Predictive Maintenance]] - Adjacent: [[클라우드_인프라_및_IaC_운영_표준|IoT]] · [[Edge Computing]] · [[Time Series]] ## 🤖 LLM 활용 **언제**: 매 twin schema (DTDL) drafting, 매 anomaly explanation, 매 operator natural-language query, 매 simulation scenario generation. **언제 X**: 매 hard-real-time control loop — 매 LLM latency 의 unfit. 매 deterministic control 은 PID / MPC. ## ❌ 안티패턴 - **Twin = dashboard 의 단순 rebrand**: 매 simulation / closed-loop 없으면 그냥 monitoring. - **No data quality validation**: 매 garbage sensor → garbage twin. - **Twin without versioning**: 매 schema drift / model evolution 의 disaster. - **Tight coupling to vendor**: 매 vendor lock — 매 DTDL / OPC UA 같은 standards 사용. - **Ignoring security**: 매 closed-loop = attacker 의 actuation = physical damage. - **One twin for everything**: 매 hierarchical decomposition (asset → system → plant) 의 사용. ## 🧪 검증 / 중복 - Verified (Grieves 2002, NASA twin paradigm, Microsoft DTDL spec, ISO 23247, NVIDIA Omniverse docs 2025). - 신뢰도 B+ (terminology / scope 의 industry variation). ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — Digital twin patterns + Omniverse / DTDL |