{
  "node": {
    "id": "block:dynamic",
    "type": "Block",
    "label": "Dynamic profile",
    "properties": {
      "id": "dynamic",
      "name": "Dynamic profile",
      "kind": "protocol",
      "summary": "Replay a registered tabular duty profile.",
      "behavior": "profileId selects a known profile, passes is an integer from 1 to 1000 and scaleW is positive. This step replays the profile through the existing plant; it does not identify a new plant model.",
      "ports": [],
      "parameters": [
        {
          "key": "profileId",
          "label": "profileId",
          "unit": "identifier",
          "description": "Known registered profile identifier."
        },
        {
          "key": "passes",
          "label": "passes",
          "unit": "count",
          "description": "Integer 1 to 1000."
        },
        {
          "key": "scaleW",
          "label": "scaleW",
          "unit": "W",
          "description": "Positive profile power scale."
        }
      ],
      "equations": [],
      "example": {
        "title": "Replay a changing load",
        "text": "40 kW at 400 V needs about 100 A before losses; at 350 V it needs about 114 A.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench"
      },
      "limits": [
        "The selected profile determines regeneration. This is not an independent road-load or motor-efficiency model.",
        "Protocol dtS is 1e-6 to 60 s. CC and CP segments cannot share one protocol; CCCV charge must stand alone. Protocol samples use discharge-positive iPack."
      ],
      "evidence": [
        "js/test-protocol.js"
      ],
      "caseIds": [
        "drive-profile"
      ],
      "type": "dynamic",
      "implementationId": "dynamic",
      "url": "https://lemonergy.com/learn/glossary/blocks/dynamic/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/dynamic/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/drive-profile/0",
      "type": "usesBlock",
      "source": "workflow:drive-profile",
      "target": "block:dynamic",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Dynamic profile",
        "type": "dynamic",
        "role": "Replays selected power",
        "settings": [
          "profileId",
          "passes",
          "scaleW"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:drive-profile",
      "type": "Workflow",
      "label": "Replay a changing load",
      "properties": {
        "id": "drive-profile",
        "title": "Replay a changing load",
        "kind": "protocol",
        "summary": "Replay applies an existing governed profile.",
        "steps": [
          "Open Drive-cycle replay.",
          "Inspect profile and scale; compare current and SOC."
        ],
        "example": "40 kW at 400 V needs about 100 A before losses; at 350 V it needs about 114 A.",
        "observe": "Current rises as voltage falls under fixed power.",
        "limits": "The selected profile determines regeneration. This is not an independent road-load or motor-efficiency model.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    }
  ]
}
