{
  "node": {
    "id": "block:signal-step",
    "type": "Block",
    "label": "Physical signal step",
    "properties": {
      "id": "signal-step",
      "name": "Physical signal step",
      "kind": "studio",
      "summary": "A typed physical signal that changes once at an authored time.",
      "behavior": "The output equals before for t < atS and after from t = atS. Declare the signal quantity to match the receiving port; dimensionless is the default.",
      "ports": [
        {
          "name": "out",
          "direction": "output",
          "unit": "declared signal quantity",
          "description": "Observed result from the solved component or sampled controller."
        }
      ],
      "parameters": [
        {
          "key": "before",
          "label": "Before",
          "unit": "declared signal",
          "default": 0,
          "min": -1000000000000,
          "max": 1000000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "after",
          "label": "After",
          "unit": "declared signal",
          "default": 1,
          "min": -1000000000000,
          "max": 1000000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "atS",
          "label": "At S",
          "unit": "s",
          "default": 1,
          "min": 0,
          "max": 1000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        }
      ],
      "equations": [
        "out(t) = before for t < atS; after otherwise"
      ],
      "example": {
        "title": "Supply an outage load",
        "text": "An ideal 10 kWh usable budget supplies 3 kW for 3.33 h before losses and limits.",
        "url": "https://design.lemonergy.com/cosim.html?example=charging-v2h",
        "label": "Open the Studio example"
      },
      "limits": [
        "No islanding switches, smart-panel circuits or protection coordination are simulated."
      ],
      "evidence": [
        "js/charging-control.js",
        "js/charging-scenarios.js",
        "docs/CHARGING_BLOCKS_SPEC.md",
        "js/physical-network.js"
      ],
      "caseIds": [
        "outage-support"
      ],
      "type": "signal-step",
      "implementationId": "signal-step",
      "url": "https://lemonergy.com/learn/glossary/blocks/signal-step/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/signal-step/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/outage-support/0",
      "type": "usesBlock",
      "source": "workflow:outage-support",
      "target": "block:signal-step",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Physical signal step",
        "type": "signal-step",
        "role": "Asserts outage",
        "settings": [
          "before / after",
          "atS"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:outage-support",
      "type": "Workflow",
      "label": "Supply an outage load",
      "properties": {
        "id": "outage-support",
        "title": "Supply an outage load",
        "kind": "studio",
        "summary": "V2H illustrates outage-triggered dispatch and reserve.",
        "steps": [
          "Set outage time, load and reserve.",
          "Compare reserve with departure target."
        ],
        "example": "An ideal 10 kWh usable budget supplies 3 kW for 3.33 h before losses and limits.",
        "observe": "Reserve can hold while departure target is unmet.",
        "limits": "No islanding switches, smart-panel circuits or protection coordination are simulated.",
        "url": "https://design.lemonergy.com/cosim.html?example=charging-v2h",
        "label": "Open the Studio example",
        "evidence": [
          "js/charging-control.js",
          "js/charging-scenarios.js",
          "docs/CHARGING_BLOCKS_SPEC.md"
        ]
      }
    }
  ]
}
