{
  "node": {
    "id": "block:v2v-converter",
    "type": "Block",
    "label": "Conserving vehicle-to-vehicle converter",
    "properties": {
      "id": "v2v-converter",
      "name": "Conserving vehicle-to-vehicle converter",
      "kind": "studio",
      "summary": "One conserving converter linking donor and recipient electrical islands.",
      "behavior": "The donor supplies the recipient power and converter losses. Donor reserve, recipient target, voltage envelopes, current limits, permissions and temperature signals limit transfer together. Both islands require an electrical reference.",
      "ports": [
        {
          "name": "donorP",
          "direction": "conserving",
          "unit": "V, A",
          "description": "Electrical terminal: potential and charge-conserving current."
        },
        {
          "name": "donorN",
          "direction": "conserving",
          "unit": "V, A",
          "description": "Electrical terminal: potential and charge-conserving current."
        },
        {
          "name": "recipientP",
          "direction": "conserving",
          "unit": "V, A",
          "description": "Electrical terminal: potential and charge-conserving current."
        },
        {
          "name": "recipientN",
          "direction": "conserving",
          "unit": "V, A",
          "description": "Electrical terminal: potential and charge-conserving current."
        },
        {
          "name": "command",
          "direction": "input",
          "unit": "W",
          "description": "Requested power; this does not bypass voltage, current, SOC or permission limits."
        },
        {
          "name": "donorSoc",
          "direction": "input",
          "unit": "fraction",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "recipientSoc",
          "direction": "input",
          "unit": "fraction",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "enable",
          "direction": "input",
          "unit": "dimensionless",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "donorBmsPermit",
          "direction": "input",
          "unit": "dimensionless",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "recipientBmsPermit",
          "direction": "input",
          "unit": "dimensionless",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "donorTemperature",
          "direction": "input",
          "unit": "K",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "recipientTemperature",
          "direction": "input",
          "unit": "K",
          "description": "Typed signal input; its quantity must match the connected output."
        },
        {
          "name": "donorPower",
          "direction": "output",
          "unit": "W",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "recipientPower",
          "direction": "output",
          "unit": "W",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "loss",
          "direction": "output",
          "unit": "W",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "donorCurrent",
          "direction": "output",
          "unit": "A",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "recipientCurrent",
          "direction": "output",
          "unit": "A",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "donorVoltage",
          "direction": "output",
          "unit": "V",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "recipientVoltage",
          "direction": "output",
          "unit": "V",
          "description": "Observed result from the solved component or sampled controller."
        },
        {
          "name": "allowed",
          "direction": "output",
          "unit": "0 or 1",
          "description": "Observed result from the solved component or sampled controller."
        }
      ],
      "parameters": [
        {
          "key": "powerW",
          "label": "Power W",
          "unit": "W recipient DC",
          "default": 3000,
          "min": 0,
          "max": 1000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "donorCapacityAh",
          "label": "Donor Capacity Ah",
          "unit": "Ah",
          "default": 100,
          "min": 1e-06,
          "max": 1000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "recipientCapacityAh",
          "label": "Recipient Capacity Ah",
          "unit": "Ah",
          "default": 100,
          "min": 1e-06,
          "max": 1000000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "donorReserveSoc",
          "label": "Donor Reserve Soc",
          "unit": "fraction",
          "default": 0.2,
          "min": 0,
          "max": 1,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "recipientTargetSoc",
          "label": "Recipient Target Soc",
          "unit": "fraction",
          "default": 0.8,
          "min": 0,
          "max": 1,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "donorMinimumVoltageV",
          "label": "Donor Minimum Voltage V",
          "unit": "V",
          "default": 250,
          "min": 0.01,
          "max": 1000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "donorVoltageDroopOhm",
          "label": "Donor Voltage Droop Ohm",
          "unit": "ohm near minimum-voltage envelope",
          "default": 0.01,
          "min": 1e-06,
          "max": 1000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "recipientVoltageLimitV",
          "label": "Recipient Voltage Limit V",
          "unit": "V",
          "default": 420,
          "min": 0.01,
          "max": 1000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "donorCurrentA",
          "label": "Donor Current A",
          "unit": "A",
          "default": 32,
          "min": 0,
          "max": 1000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "recipientCurrentA",
          "label": "Recipient Current A",
          "unit": "A",
          "default": 32,
          "min": 0,
          "max": 1000000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "efficiency",
          "label": "Efficiency",
          "unit": "fraction",
          "default": 0.9,
          "min": 0.01,
          "max": 1,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "boundaryTimeS",
          "label": "Boundary Time S",
          "unit": "s",
          "default": 1,
          "min": 0.001,
          "max": 3600,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "minTemperatureK",
          "label": "Min Temperature K",
          "unit": "K",
          "default": 273.15,
          "min": 1,
          "max": 1000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        },
        {
          "key": "maxTemperatureK",
          "label": "Max Temperature K",
          "unit": "K",
          "default": 318.15,
          "min": 1,
          "max": 1000,
          "description": "Configured model parameter; the default is an initial editor value, not an operating recommendation."
        }
      ],
      "equations": [
        "P_donor = P_recipient / eta",
        "P_loss = P_donor - P_recipient"
      ],
      "example": {
        "title": "Transfer between two batteries",
        "text": "5 kW delivered at 90% efficiency needs about 5.56 kW from the donor and produces about 0.56 kW loss.",
        "url": "https://design.lemonergy.com/cosim.html?example=charging-v2v",
        "label": "Open the Studio example"
      },
      "limits": [
        "The example assumes hardware compatibility; it does not establish connector or communication compatibility."
      ],
      "evidence": [
        "js/charging-control.js",
        "js/charging-scenarios.js",
        "docs/CHARGING_BLOCKS_SPEC.md",
        "js/physical-network.js",
        "rust-core/src/charging_control.rs"
      ],
      "caseIds": [
        "v2v"
      ],
      "type": "v2v-converter",
      "implementationId": "v2v-converter",
      "url": "https://lemonergy.com/learn/glossary/blocks/v2v-converter/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/v2v-converter/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/v2v/1",
      "type": "usesBlock",
      "source": "workflow:v2v",
      "target": "block:v2v-converter",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 1,
        "name": "Conserving vehicle-to-vehicle converter",
        "type": "v2v-converter",
        "role": "Enforces both batteries’ limits",
        "settings": [
          "donorP / donorN",
          "recipientP / recipientN",
          "donorReserveSoc / recipientTargetSoc",
          "efficiency"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:v2v",
      "type": "Workflow",
      "label": "Transfer between two batteries",
      "properties": {
        "id": "v2v",
        "title": "Transfer between two batteries",
        "kind": "studio",
        "summary": "Conserving conversion couples donor and recipient.",
        "steps": [
          "Inspect donor reserve and recipient target.",
          "Compare energy drawn and delivered."
        ],
        "example": "5 kW delivered at 90% efficiency needs about 5.56 kW from the donor and produces about 0.56 kW loss.",
        "observe": "Both islands have references and energy flows.",
        "limits": "The example assumes hardware compatibility; it does not establish connector or communication compatibility.",
        "url": "https://design.lemonergy.com/cosim.html?example=charging-v2v",
        "label": "Open the Studio example",
        "evidence": [
          "js/charging-control.js",
          "js/charging-scenarios.js",
          "docs/CHARGING_BLOCKS_SPEC.md"
        ]
      }
    }
  ]
}
