{
  "SafetyRequirement": {
    "type": "customtype",
    "types": [
      "customtype"
    ],
    "reference": "model/profile.sbdl:12"
  },
  "Sensor": {
    "type": "customtype",
    "types": [
      "customtype"
    ],
    "reference": "model/profile.sbdl:20"
  },
  "SafetyAction": {
    "type": "customtype",
    "types": [
      "customtype"
    ],
    "reference": "model/profile.sbdl:31"
  },
  "sys_req_1": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_normal_ride"
      }
    ],
    "child": [
      {
        "identifier": "req_capacity"
      },
      {
        "identifier": "req_door_obstruction"
      },
      {
        "identifier": "req_levelling"
      },
      {
        "identifier": "req_dispatch"
      }
    ],
    "description": "The elevator system shall transport passengers between floors safely and efficiently",
    "reference": "model/generated/requirements.sbdl:2"
  },
  "req_capacity": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "cabin"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "description": "The cabin shall carry a rated load of 630 kg (8 persons)",
    "reference": "model/generated/requirements.sbdl:3"
  },
  "req_door_obstruction": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "function": [
      {
        "identifier": "func_door_reopen"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "description": "The door system shall detect an obstruction and reopen within 250 ms",
    "reference": "model/generated/requirements.sbdl:4"
  },
  "req_levelling": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "drive_system"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "description": "The cabin shall level within 10 mm of the floor sill",
    "reference": "model/generated/requirements.sbdl:5"
  },
  "req_dispatch": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "dispatcher"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "test": [
      {
        "identifier": "UT::test_call_order"
      }
    ],
    "description": "The dispatcher shall minimise average waiting time using collective control",
    "reference": "model/generated/requirements.sbdl:6"
  },
  "sys_req_3": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "user_interface"
      }
    ],
    "child": [
      {
        "identifier": "req_door_hold"
      },
      {
        "identifier": "req_display"
      }
    ],
    "description": "The elevator system shall provide accessible and intuitive passenger interaction",
    "reference": "model/generated/requirements.sbdl:7"
  },
  "req_door_hold": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_3"
      }
    ],
    "description": "The doors shall stay open for a configurable dwell time (default 4 s) after a call",
    "reference": "model/generated/requirements.sbdl:8"
  },
  "req_display": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "display"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_3"
      }
    ],
    "description": "The cabin display shall show the current floor and direction of travel at all times",
    "reference": "model/generated/requirements.sbdl:9"
  },
  "arch_doc": {
    "type": "definition",
    "types": [
      "definition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      },
      {
        "identifier": "cabin"
      },
      {
        "identifier": "drive_system"
      },
      {
        "identifier": "control_system"
      },
      {
        "identifier": "shaft"
      },
      {
        "identifier": "user_interface"
      },
      {
        "identifier": "power_supply"
      }
    ],
    "description": "This document describes the subsystems of the office elevator. The SBDL statements in it define the subsystems for the model; their descriptions are taken from the prose around them, so the document and the model cannot disagree.",
    "reference": "doc/Architecture.docx:3"
  },
  "elevator_system": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "requirement": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_normal_ride"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "state": [
      {
        "identifier": "state_idle"
      },
      {
        "identifier": "state_doors_opening"
      },
      {
        "identifier": "state_boarding"
      },
      {
        "identifier": "state_doors_closing"
      },
      {
        "identifier": "state_in_motion"
      },
      {
        "identifier": "state_travelling"
      },
      {
        "identifier": "state_levelling"
      },
      {
        "identifier": "state_fault"
      }
    ],
    "transition": [
      {
        "identifier": "tr_idle_to_opening"
      },
      {
        "identifier": "tr_opening_to_boarding"
      },
      {
        "identifier": "tr_boarding_to_closing"
      },
      {
        "identifier": "tr_closing_to_boarding"
      },
      {
        "identifier": "tr_closing_to_travelling"
      },
      {
        "identifier": "tr_travelling_to_levelling"
      },
      {
        "identifier": "tr_levelling_to_opening"
      },
      {
        "identifier": "tr_motion_to_fault"
      },
      {
        "identifier": "tr_fault_to_idle"
      }
    ],
    "SafetyRequirement": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_model"
      }
    ],
    "child": [
      {
        "identifier": "cabin"
      },
      {
        "identifier": "drive_system"
      },
      {
        "identifier": "control_system"
      },
      {
        "identifier": "shaft"
      },
      {
        "identifier": "user_interface"
      },
      {
        "identifier": "power_supply"
      }
    ],
    "description": "The office elevator serves eight floors with a single cabin and a traction drive. It is decomposed into six subsystems, described below.",
    "reference": "doc/Architecture.docx:7"
  },
  "cabin": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_capacity"
      }
    ],
    "child": [
      {
        "identifier": "door_system"
      },
      {
        "identifier": "lighting"
      },
      {
        "identifier": "emergency_phone"
      },
      {
        "identifier": "display"
      },
      {
        "identifier": "load_sensor"
      }
    ],
    "description": "The cabin carries up to eight passengers. It holds the doors, the lighting, the display and the emergency phone, and rests on a load cell.",
    "reference": "doc/Architecture.docx:10"
  },
  "drive_system": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "related": [
      {
        "identifier": "control_system",
        "stereotype": "compose"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_levelling"
      }
    ],
    "event": [
      {
        "identifier": "evt_cabin_travels"
      },
      {
        "identifier": "evt_cabin_arrives"
      },
      {
        "identifier": "halt_cabin"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "child": [
      {
        "identifier": "motor"
      },
      {
        "identifier": "counterweight"
      },
      {
        "identifier": "brake"
      },
      {
        "identifier": "speed_governor"
      }
    ],
    "description": "The traction motor, counterweight, holding brake and speed governor move the cabin and hold it in place.",
    "reference": "doc/Architecture.docx:12"
  },
  "control_system": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "interface": [
      {
        "identifier": "can_bus"
      }
    ],
    "child": [
      {
        "identifier": "dispatcher"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "description": "A software controller with two independent parts: the dispatcher that schedules calls, and the safety monitor that supervises every sensor and can stop the cabin on its own.",
    "reference": "doc/Architecture.docx:16",
    "stereotype": "software"
  },
  "shaft": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "child": [
      {
        "identifier": "guide_rails"
      },
      {
        "identifier": "limit_switches"
      },
      {
        "identifier": "position_sensor"
      }
    ],
    "description": "The shaft structure with its guide rails, overtravel limit switches and the absolute position encoder.",
    "reference": "doc/Architecture.docx:19"
  },
  "user_interface": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "requirement": [
      {
        "identifier": "sys_req_3"
      }
    ],
    "child": [
      {
        "identifier": "floor_call_panel"
      },
      {
        "identifier": "cabin_panel"
      },
      {
        "identifier": "overload_indicator"
      }
    ],
    "description": "All passenger-facing controls and indicators: hall call panels on each landing, the cabin panel and the overload indicator.",
    "reference": "doc/Architecture.docx:22"
  },
  "power_supply": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "elevator_system"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_power_loss"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_mains_interruption"
      }
    ],
    "event": [
      {
        "identifier": "cut_power"
      }
    ],
    "child": [
      {
        "identifier": "ups"
      }
    ],
    "description": "Mains distribution and the uninterruptible supply that keeps the safety functions and lighting alive when the mains fail.",
    "reference": "doc/Architecture.docx:25",
    "stereotype": "electrical"
  },
  "brake_independence": {
    "type": "definition",
    "types": [
      "definition"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      },
      {
        "identifier": "dispatcher"
      }
    ],
    "requirement": [
      {
        "identifier": "req_safety_brake"
      }
    ],
    "description": "The dispatcher never commands the brake: only the safety monitor does, over a hard-wired circuit. This keeps the safety function independent of scheduling software.",
    "reference": "doc/Architecture.docx:29"
  },
  "uc_normal_ride": {
    "type": "usecase",
    "types": [
      "usecase"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "requirement": [
      {
        "identifier": "sys_req_1"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      },
      {
        "identifier": "func_door_reopen"
      }
    ],
    "actor": "Passenger",
    "description": "Passenger calls the elevator, boards, selects a floor and is transported",
    "reference": "model/behaviour.sbdl:19"
  },
  "func_normal_ride": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_call_registered"
      },
      {
        "identifier": "evt_doors_open"
      },
      {
        "identifier": "evt_passenger_boards"
      },
      {
        "identifier": "evt_destination_selected"
      },
      {
        "identifier": "evt_close_doors"
      },
      {
        "identifier": "evt_cabin_dispatched"
      },
      {
        "identifier": "evt_cabin_travels"
      },
      {
        "identifier": "evt_cabin_arrives"
      },
      {
        "identifier": "evt_doors_open_arrival"
      },
      {
        "identifier": "evt_passenger_exits"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_normal_ride"
      }
    ],
    "realisation": [
      {
        "identifier": "Dispatcher_register_call"
      }
    ],
    "input": "hall call",
    "output": "passenger at destination floor",
    "description": "End-to-end passenger transport cycle",
    "reference": "model/behaviour.sbdl:26"
  },
  "func_door_reopen": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_door_obstruction"
      }
    ],
    "event": [
      {
        "identifier": "evt_obstruction_detected"
      },
      {
        "identifier": "evt_door_reopen"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_normal_ride"
      }
    ],
    "description": "Obstruction handling while the doors close",
    "reference": "model/behaviour.sbdl:36"
  },
  "uc_emergency_stop": {
    "type": "usecase",
    "types": [
      "usecase"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "requirement": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "actor": "Safety Monitor",
    "description": "The safety monitor detects a fault and brings the cabin to a safe stop",
    "reference": "model/behaviour.sbdl:43"
  },
  "evt_call_registered": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "dispatcher"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_idle_to_opening"
      }
    ],
    "output": "target floor",
    "description": "A hall call is registered by the dispatcher",
    "reference": "model/behaviour.sbdl:55"
  },
  "evt_doors_open": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_opening_to_boarding"
      }
    ],
    "description": "Cabin doors open at the call floor",
    "reference": "model/behaviour.sbdl:61"
  },
  "evt_passenger_boards": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "load_sensor"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "description": "Passenger enters; the load sensor confirms boarding",
    "reference": "model/behaviour.sbdl:66"
  },
  "evt_destination_selected": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "cabin_panel"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "output": "destination floor",
    "description": "Passenger presses a destination button",
    "reference": "model/behaviour.sbdl:71"
  },
  "evt_close_doors": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_boarding_to_closing"
      }
    ],
    "child": [
      {
        "identifier": "evt_doors_locked",
        "stereotype": "condition"
      }
    ],
    "alternative": "evt_door_reopen",
    "condition": "door opening clear",
    "description": "Doors close after the dwell time",
    "reference": "model/behaviour.sbdl:79",
    "stereotype": "condition"
  },
  "evt_doors_locked": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_obstruction_sensor"
      }
    ],
    "parent": [
      {
        "identifier": "evt_close_doors",
        "stereotype": "condition"
      }
    ],
    "return_control": "true",
    "description": "Door lock confirmed",
    "reference": "model/behaviour.sbdl:85"
  },
  "evt_obstruction_detected": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_obstruction_sensor"
      }
    ],
    "function": [
      {
        "identifier": "func_door_reopen"
      }
    ],
    "description": "The light curtain reports an obstruction while closing",
    "reference": "model/behaviour.sbdl:88"
  },
  "evt_door_reopen": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "function": [
      {
        "identifier": "func_door_reopen"
      }
    ],
    "transition": [
      {
        "identifier": "tr_closing_to_boarding"
      }
    ],
    "description": "Doors reopen and the dwell time restarts",
    "reference": "model/behaviour.sbdl:93"
  },
  "evt_cabin_dispatched": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "dispatcher"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_closing_to_travelling"
      }
    ],
    "child": [
      {
        "identifier": "evt_brake_released",
        "stereotype": "parallel"
      },
      {
        "identifier": "evt_motor_energised",
        "stereotype": "parallel"
      }
    ],
    "control_only": "true",
    "description": "Dispatcher commands the cabin towards the target floor",
    "reference": "model/behaviour.sbdl:100",
    "stereotype": "parallel"
  },
  "evt_brake_released": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "brake"
      }
    ],
    "parent": [
      {
        "identifier": "evt_cabin_dispatched",
        "stereotype": "parallel"
      }
    ],
    "description": "Holding brake released",
    "reference": "model/behaviour.sbdl:105"
  },
  "evt_motor_energised": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "motor"
      }
    ],
    "parent": [
      {
        "identifier": "evt_cabin_dispatched",
        "stereotype": "parallel"
      }
    ],
    "description": "Traction motor energised",
    "reference": "model/behaviour.sbdl:106"
  },
  "evt_cabin_travels": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "drive_system"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "child": [
      {
        "identifier": "evt_position_monitored",
        "stereotype": "loop"
      }
    ],
    "condition": "target floor not reached",
    "description": "Cabin moves along the shaft",
    "reference": "model/behaviour.sbdl:110",
    "stereotype": "loop"
  },
  "evt_position_monitored": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "position_sensor"
      }
    ],
    "parent": [
      {
        "identifier": "evt_cabin_travels",
        "stereotype": "loop"
      }
    ],
    "return_control": "true",
    "description": "Position sensor reports the cabin location to the safety monitor",
    "reference": "model/behaviour.sbdl:115"
  },
  "evt_cabin_arrives": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "drive_system"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_travelling_to_levelling"
      }
    ],
    "output": "floor reached",
    "description": "Cabin decelerates and levels at the destination floor",
    "reference": "model/behaviour.sbdl:122"
  },
  "evt_doors_open_arrival": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "transition": [
      {
        "identifier": "tr_levelling_to_opening"
      }
    ],
    "description": "Cabin doors open at the destination floor",
    "reference": "model/behaviour.sbdl:129",
    "custom:copy-source": "evt_doors_open"
  },
  "evt_passenger_exits": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "load_sensor"
      }
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "description": "Passenger leaves the cabin",
    "reference": "model/behaviour.sbdl:131"
  },
  "state_idle": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_idle_to_opening"
      },
      {
        "identifier": "tr_fault_to_idle"
      }
    ],
    "description": "Cabin stationary at a floor, doors closed, awaiting a call",
    "reference": "model/behaviour.sbdl:145"
  },
  "state_doors_opening": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_idle_to_opening"
      },
      {
        "identifier": "tr_opening_to_boarding"
      },
      {
        "identifier": "tr_levelling_to_opening"
      }
    ],
    "description": "Cabin doors opening",
    "reference": "model/behaviour.sbdl:146"
  },
  "state_boarding": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_opening_to_boarding"
      },
      {
        "identifier": "tr_boarding_to_closing"
      },
      {
        "identifier": "tr_closing_to_boarding"
      }
    ],
    "description": "Doors fully open; passengers board or alight",
    "reference": "model/behaviour.sbdl:147"
  },
  "state_doors_closing": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_boarding_to_closing"
      },
      {
        "identifier": "tr_closing_to_boarding"
      },
      {
        "identifier": "tr_closing_to_travelling"
      }
    ],
    "description": "Cabin doors closing",
    "reference": "model/behaviour.sbdl:148"
  },
  "state_in_motion": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_motion_to_fault"
      }
    ],
    "child": [
      {
        "identifier": "state_travelling"
      },
      {
        "identifier": "state_levelling"
      }
    ],
    "description": "Cabin moving between floors",
    "reference": "model/behaviour.sbdl:149"
  },
  "state_travelling": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "parent": [
      {
        "identifier": "state_in_motion"
      }
    ],
    "transition": [
      {
        "identifier": "tr_closing_to_travelling"
      },
      {
        "identifier": "tr_travelling_to_levelling"
      }
    ],
    "description": "Cabin travelling at rated speed",
    "reference": "model/behaviour.sbdl:151"
  },
  "state_levelling": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "parent": [
      {
        "identifier": "state_in_motion"
      }
    ],
    "transition": [
      {
        "identifier": "tr_travelling_to_levelling"
      },
      {
        "identifier": "tr_levelling_to_opening"
      }
    ],
    "description": "Cabin decelerating and aligning with the floor sill",
    "reference": "model/behaviour.sbdl:152"
  },
  "state_fault": {
    "type": "state",
    "types": [
      "state"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "transition": [
      {
        "identifier": "tr_motion_to_fault"
      },
      {
        "identifier": "tr_fault_to_idle"
      }
    ],
    "color": "red",
    "description": "A safety fault is detected; the cabin is stopped and the alarm is active",
    "reference": "model/behaviour.sbdl:154"
  },
  "tr_idle_to_opening": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_call_registered"
      }
    ],
    "state": [
      {
        "identifier": "state_idle"
      },
      {
        "identifier": "state_doors_opening"
      }
    ],
    "description": "Call received",
    "reference": "model/behaviour.sbdl:156"
  },
  "tr_opening_to_boarding": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_doors_open"
      }
    ],
    "state": [
      {
        "identifier": "state_doors_opening"
      },
      {
        "identifier": "state_boarding"
      }
    ],
    "description": "Doors fully open",
    "reference": "model/behaviour.sbdl:157"
  },
  "tr_boarding_to_closing": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_close_doors"
      }
    ],
    "state": [
      {
        "identifier": "state_boarding"
      },
      {
        "identifier": "state_doors_closing"
      }
    ],
    "description": "Dwell time elapsed",
    "reference": "model/behaviour.sbdl:158"
  },
  "tr_closing_to_boarding": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_door_reopen"
      }
    ],
    "state": [
      {
        "identifier": "state_doors_closing"
      },
      {
        "identifier": "state_boarding"
      }
    ],
    "description": "Obstruction: doors reopen",
    "reference": "model/behaviour.sbdl:159"
  },
  "tr_closing_to_travelling": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_cabin_dispatched"
      }
    ],
    "state": [
      {
        "identifier": "state_doors_closing"
      },
      {
        "identifier": "state_travelling"
      }
    ],
    "description": "Doors locked, cabin dispatched",
    "reference": "model/behaviour.sbdl:160"
  },
  "tr_travelling_to_levelling": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_cabin_arrives"
      }
    ],
    "state": [
      {
        "identifier": "state_travelling"
      },
      {
        "identifier": "state_levelling"
      }
    ],
    "description": "Approaching the floor",
    "reference": "model/behaviour.sbdl:161"
  },
  "tr_levelling_to_opening": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_doors_open_arrival"
      }
    ],
    "state": [
      {
        "identifier": "state_levelling"
      },
      {
        "identifier": "state_doors_opening"
      }
    ],
    "description": "Levelled: open the doors",
    "reference": "model/behaviour.sbdl:162"
  },
  "tr_motion_to_fault": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "fault_detected"
      }
    ],
    "state": [
      {
        "identifier": "state_in_motion"
      },
      {
        "identifier": "state_fault"
      }
    ],
    "description": "Fault while in motion",
    "reference": "model/behaviour.sbdl:163"
  },
  "tr_fault_to_idle": {
    "type": "transition",
    "types": [
      "transition"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "event": [
      {
        "identifier": "fault_cleared"
      }
    ],
    "state": [
      {
        "identifier": "state_fault"
      },
      {
        "identifier": "state_idle"
      }
    ],
    "description": "Fault cleared by maintenance",
    "reference": "model/behaviour.sbdl:164"
  },
  "sys_req_2": {
    "type": "SafetyRequirement",
    "types": [
      "SafetyRequirement",
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "elevator_system"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_emergency_stop"
      }
    ],
    "child": [
      {
        "identifier": "req_safety_brake"
      },
      {
        "identifier": "req_limit_switch"
      },
      {
        "identifier": "req_emergency_power"
      },
      {
        "identifier": "req_overload"
      }
    ],
    "reference": "model/safety.sbdl:11",
    "standard": "EN 81-20",
    "description": "The elevator system shall comply with EN 81-20"
  },
  "req_safety_brake": {
    "type": "SafetyRequirement",
    "types": [
      "SafetyRequirement",
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "brake"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "definition": [
      {
        "identifier": "brake_independence"
      },
      {
        "identifier": "safety_monitor_design"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "test": [
      {
        "identifier": "UT::test_stop_sequence"
      }
    ],
    "reference": "model/safety.sbdl:17",
    "standard": "EN 81-20 5.6.2",
    "description": "The safety brake shall engage within 100 ms of an overspeed or free-fall detection"
  },
  "req_limit_switch": {
    "type": "SafetyRequirement",
    "types": [
      "SafetyRequirement",
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "limit_switches"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "test": [
      {
        "identifier": "UT::test_fault_cleared"
      }
    ],
    "reference": "model/safety.sbdl:24",
    "standard": "EN 81-20 5.12.2",
    "description": "Limit switches shall cut drive power on overtravel in either direction"
  },
  "req_emergency_power": {
    "type": "SafetyRequirement",
    "types": [
      "SafetyRequirement",
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "ups"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_power_loss"
      }
    ],
    "reference": "model/safety.sbdl:31",
    "standard": "EN 81-20 5.10.4",
    "description": "The UPS shall sustain safety-critical functions for at least 1 hour after a mains failure"
  },
  "req_overload": {
    "type": "SafetyRequirement",
    "types": [
      "SafetyRequirement",
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "load_sensor"
      }
    ],
    "parent": [
      {
        "identifier": "sys_req_2"
      }
    ],
    "reference": "model/safety.sbdl:38",
    "standard": "EN 81-20 5.12.1.2",
    "description": "The cabin shall not depart when the load exceeds the rated capacity"
  },
  "fm_door_no_open": {
    "type": "fmea:mode",
    "types": [
      "fmea:mode"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_door_obstruction"
      }
    ],
    "fmea:effect": [
      {
        "identifier": "fe_passenger_trapped"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_door_sensor_check"
      }
    ],
    "fmea:action-detection": [
      {
        "identifier": "fa_det_door_timeout"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_door_motor_failure"
      }
    ],
    "detectability": "3",
    "detectability_post": "1",
    "description": "Cabin door fails to open at a floor",
    "reference": "model/safety.sbdl:54"
  },
  "fe_passenger_trapped": {
    "type": "fmea:effect",
    "types": [
      "fmea:effect"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "severity": "8",
    "description": "Passenger is unable to leave or enter the cabin",
    "reference": "model/safety.sbdl:65"
  },
  "fc_door_motor_failure": {
    "type": "fmea:cause",
    "types": [
      "fmea:cause"
    ],
    "aspect": [
      {
        "identifier": "door_motor"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "fmea:control": [
      {
        "identifier": "fc_ctrl_door_motor_maintenance"
      },
      {
        "identifier": "fc_ctrl_monthly_door_test"
      }
    ],
    "fmea:action-control": [
      {
        "identifier": "fa_ctrl_redundant_door_sensor"
      }
    ],
    "occurrence": "3",
    "occurrence_post": "1",
    "description": "Door drive motor failure or mechanical jam",
    "reference": "model/safety.sbdl:70"
  },
  "fc_ctrl_door_motor_maintenance": {
    "type": "fmea:control",
    "types": [
      "fmea:control"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_door_motor_failure"
      }
    ],
    "description": "Scheduled preventive maintenance on the door drive motor",
    "reference": "model/safety.sbdl:80"
  },
  "fa_ctrl_redundant_door_sensor": {
    "type": "SafetyAction",
    "types": [
      "SafetyAction",
      "fmea:action-control",
      "fmea:action-detection"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_door_motor_failure"
      }
    ],
    "reference": "model/safety.sbdl:87",
    "due": "2027-Q1",
    "owner": "Mechanical engineering",
    "description": "Add a redundant door position sensor to detect a motor stall"
  },
  "fd_door_sensor_check": {
    "type": "fmea:detection",
    "types": [
      "fmea:detection"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "description": "Door position sensor confirms open/closed status on every cycle (The door system shall detect an obstruction and reopen within 250 ms)",
    "reference": "model/safety.sbdl:94"
  },
  "fa_det_door_timeout": {
    "type": "SafetyAction",
    "types": [
      "SafetyAction",
      "fmea:action-control",
      "fmea:action-detection"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "reference": "model/safety.sbdl:99",
    "owner": "Controls engineering",
    "description": "Report a door-open timeout alarm to the building management system"
  },
  "fm_overspeed": {
    "type": "fmea:mode",
    "types": [
      "fmea:mode"
    ],
    "aspect": [
      {
        "identifier": "drive_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_safety_brake"
      }
    ],
    "fmea:effect": [
      {
        "identifier": "fe_overspeed_effect"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_speed_governor"
      }
    ],
    "fmea:action-detection": [
      {
        "identifier": "fa_det_speed_log"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_brake_failure"
      }
    ],
    "detectability": "2",
    "detectability_post": "1",
    "description": "Cabin exceeds its rated speed during travel",
    "reference": "model/safety.sbdl:107"
  },
  "fe_overspeed_effect": {
    "type": "fmea:effect",
    "types": [
      "fmea:effect"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "severity": "10",
    "description": "Risk of cabin impact at the shaft end; potential passenger injury",
    "reference": "model/safety.sbdl:118"
  },
  "fc_brake_failure": {
    "type": "fmea:cause",
    "types": [
      "fmea:cause"
    ],
    "aspect": [
      {
        "identifier": "brake"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "fmea:control": [
      {
        "identifier": "fc_ctrl_brake_inspection"
      }
    ],
    "fmea:action-control": [
      {
        "identifier": "fa_ctrl_dual_brake"
      }
    ],
    "occurrence": "2",
    "occurrence_post": "1",
    "description": "Electromechanical brake fails to hold under regenerative conditions",
    "reference": "model/safety.sbdl:123"
  },
  "fc_ctrl_brake_inspection": {
    "type": "fmea:control",
    "types": [
      "fmea:control"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_brake_failure"
      }
    ],
    "description": "Annual brake inspection and load test per the EN 81-20 schedule",
    "reference": "model/safety.sbdl:133"
  },
  "fa_ctrl_dual_brake": {
    "type": "SafetyAction",
    "types": [
      "SafetyAction",
      "fmea:action-control",
      "fmea:action-detection"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_brake_failure"
      }
    ],
    "reference": "model/safety.sbdl:137",
    "due": "2027-Q3",
    "owner": "Electrical engineering",
    "description": "Introduce a dual-redundant brake circuit with independent power supplies"
  },
  "fd_speed_governor": {
    "type": "fmea:detection",
    "types": [
      "fmea:detection"
    ],
    "aspect": [
      {
        "identifier": "speed_governor"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "test": [
      {
        "identifier": "UT::test_stop_sequence"
      }
    ],
    "description": "Centrifugal speed governor trips the safety gear on overspeed",
    "reference": "model/safety.sbdl:144"
  },
  "fa_det_speed_log": {
    "type": "SafetyAction",
    "types": [
      "SafetyAction",
      "fmea:action-control",
      "fmea:action-detection"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_overspeed"
      }
    ],
    "reference": "model/safety.sbdl:150",
    "owner": "Controls engineering",
    "description": "Continuous speed logging with anomaly alerts to the maintenance system"
  },
  "fm_power_loss": {
    "type": "fmea:mode",
    "types": [
      "fmea:mode"
    ],
    "aspect": [
      {
        "identifier": "power_supply"
      }
    ],
    "requirement": [
      {
        "identifier": "req_emergency_power"
      }
    ],
    "fmea:effect": [
      {
        "identifier": "fe_power_loss_effect"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_ups_monitor"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_mains_interruption"
      }
    ],
    "detectability": "1",
    "detectability_post": "1",
    "description": "Mains power lost while the cabin is between floors",
    "reference": "model/safety.sbdl:158"
  },
  "fe_power_loss_effect": {
    "type": "fmea:effect",
    "types": [
      "fmea:effect"
    ],
    "fmea:mode": [
      {
        "identifier": "fm_power_loss"
      }
    ],
    "severity": "6",
    "description": "Cabin halts between floors; passengers may be trapped until rescue (UPS sustains a controlled descent to the nearest floor)",
    "reference": "model/safety.sbdl:168"
  },
  "fc_mains_interruption": {
    "type": "fmea:cause",
    "types": [
      "fmea:cause"
    ],
    "aspect": [
      {
        "identifier": "power_supply"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_power_loss"
      }
    ],
    "fmea:control": [
      {
        "identifier": "fc_ctrl_ups_present"
      }
    ],
    "fmea:action-control": [
      {
        "identifier": "fa_ctrl_auto_rescue"
      },
      {
        "identifier": "fa_ctrl_bms_integration",
        "stereotype": "*weak"
      }
    ],
    "occurrence": "4",
    "occurrence_post": "2",
    "description": "Unplanned mains supply interruption",
    "reference": "model/safety.sbdl:173"
  },
  "fc_ctrl_ups_present": {
    "type": "fmea:control",
    "types": [
      "fmea:control"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_mains_interruption"
      }
    ],
    "description": "UPS sustains a controlled descent to the nearest floor",
    "reference": "model/safety.sbdl:183"
  },
  "fa_ctrl_auto_rescue": {
    "type": "SafetyAction",
    "types": [
      "SafetyAction",
      "fmea:action-control",
      "fmea:action-detection"
    ],
    "fmea:cause": [
      {
        "identifier": "fc_mains_interruption"
      }
    ],
    "reference": "model/safety.sbdl:187",
    "due": "2026-Q4",
    "owner": "Systems engineering",
    "description": "Automatic rescue drive: on power loss the UPS moves the cabin to the nearest floor and opens the doors"
  },
  "fd_ups_monitor": {
    "type": "fmea:detection",
    "types": [
      "fmea:detection"
    ],
    "aspect": [
      {
        "identifier": "ups"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_power_loss"
      }
    ],
    "description": "UPS self-test and mains voltage monitoring with continuous reporting",
    "reference": "model/safety.sbdl:194"
  },
  "SafetyMonitor": {
    "type": "realisation",
    "types": [
      "realisation"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "definition": [
      {
        "identifier": "safety_monitor_design"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "description": "The safety monitor realises the design decision recorded in model/elevator.sbdl",
    "reference": "src/controller.cpp:27"
  },
  "func_emergency_stop": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "requirement": [
      {
        "identifier": "req_safety_brake"
      },
      {
        "identifier": "req_limit_switch"
      }
    ],
    "event": [
      {
        "identifier": "fault_detected"
      },
      {
        "identifier": "engage_brake"
      },
      {
        "identifier": "cut_power"
      },
      {
        "identifier": "halt_cabin"
      },
      {
        "identifier": "raise_alarm"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_emergency_stop"
      }
    ],
    "realisation": [
      {
        "identifier": "SafetyMonitor"
      }
    ],
    "description": "Safety interlock: bring the cabin to a safe stop",
    "reference": "src/controller.cpp:31"
  },
  "fault_detected": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "transition": [
      {
        "identifier": "tr_motion_to_fault"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "output": "fault reason",
    "description": "Safety monitor detects an out-of-tolerance condition (overspeed, overload, overtravel)",
    "reference": "src/controller.cpp:49"
  },
  "engage_brake": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "brake"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "description": "Brake circuit is opened: the electromechanical brake engages",
    "reference": "src/controller.cpp:56"
  },
  "cut_power": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "power_supply"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "description": "Drive power is cut; the UPS sustains the safety and lighting circuits",
    "reference": "src/controller.cpp:62"
  },
  "halt_cabin": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "drive_system"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "description": "Cabin comes to a full stop",
    "reference": "src/controller.cpp:68"
  },
  "raise_alarm": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "emergency_phone"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      }
    ],
    "description": "Audible and visual alarm; the emergency phone is enabled",
    "reference": "src/controller.cpp:74"
  },
  "func_return_to_service": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "event": [
      {
        "identifier": "fault_cleared"
      }
    ],
    "description": "Return to service after a fault",
    "reference": "src/controller.cpp:78"
  },
  "fault_cleared": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "transition": [
      {
        "identifier": "tr_fault_to_idle"
      }
    ],
    "function": [
      {
        "identifier": "func_return_to_service"
      }
    ],
    "description": "Maintenance clears the fault and returns the system to service",
    "reference": "src/controller.cpp:81"
  },
  "Dispatcher_register_call": {
    "type": "realisation",
    "types": [
      "realisation"
    ],
    "function": [
      {
        "identifier": "func_normal_ride"
      }
    ],
    "description": "The dispatcher's call registration realises the first step of the normal ride",
    "reference": "src/controller.cpp:98"
  },
  "UT::test_stop_sequence": {
    "type": "test",
    "types": [
      "test"
    ],
    "requirement": [
      {
        "identifier": "req_safety_brake"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_speed_governor"
      }
    ],
    "description": "The brake engages before power is cut and the cabin halts",
    "reference": "src/controller_test.cpp:16"
  },
  "UT::test_fault_cleared": {
    "type": "test",
    "types": [
      "test"
    ],
    "requirement": [
      {
        "identifier": "req_limit_switch"
      }
    ],
    "description": "A cleared fault returns the monitor to service",
    "reference": "src/controller_test.cpp:23"
  },
  "UT::test_call_order": {
    "type": "test",
    "types": [
      "test"
    ],
    "requirement": [
      {
        "identifier": "req_dispatch"
      }
    ],
    "description": "Calls are served in the order received",
    "reference": "src/controller_test.cpp:31"
  },
  "fc_ctrl_monthly_door_test": {
    "type": "fmea:control",
    "types": [
      "fmea:control"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_door_motor_failure"
      }
    ],
    "description": "Monthly door obstruction test: block the light curtain while closing and confirm the doors reopen",
    "reference": "README.md:63"
  },
  "maintenance_manual": {
    "type": "definition",
    "types": [
      "definition"
    ],
    "aspect": [
      {
        "identifier": "door_system"
      }
    ],
    "description": "Maintenance manual, section 4: periodic tests",
    "reference": "README.md:72"
  },
  "elevator_model": {
    "type": "group",
    "types": [
      "group"
    ],
    "child": [
      {
        "identifier": "elevator_system"
      }
    ],
    "description": "Office Elevator model, compiled 2026-09-27T22:48:31 with SBDL 1.27.12 (DSL 26.6)",
    "reference": "model/elevator.sbdl:28"
  },
  "door_system": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "cabin"
      }
    ],
    "requirement": [
      {
        "identifier": "req_door_obstruction"
      },
      {
        "identifier": "req_door_hold"
      }
    ],
    "function": [
      {
        "identifier": "func_door_reopen"
      }
    ],
    "event": [
      {
        "identifier": "evt_doors_open"
      },
      {
        "identifier": "evt_close_doors"
      },
      {
        "identifier": "evt_door_reopen"
      },
      {
        "identifier": "evt_doors_open_arrival"
      }
    ],
    "fmea:mode": [
      {
        "identifier": "fm_door_no_open"
      }
    ],
    "fmea:control": [
      {
        "identifier": "fc_ctrl_monthly_door_test"
      }
    ],
    "definition": [
      {
        "identifier": "maintenance_manual"
      }
    ],
    "child": [
      {
        "identifier": "door_motor"
      },
      {
        "identifier": "door_obstruction_sensor"
      }
    ],
    "description": "Cabin door mechanism and sensors",
    "reference": "model/elevator.sbdl:42",
    "custom:rated_cycles": [
      "2000000",
      "cycles"
    ]
  },
  "door_motor": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "door_system"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_door_motor_failure"
      }
    ],
    "description": "Door drive motor and belt",
    "reference": "model/elevator.sbdl:47",
    "stereotype": "electrical"
  },
  "door_obstruction_sensor": {
    "type": "Sensor",
    "types": [
      "Sensor",
      "aspect"
    ],
    "parent": [
      {
        "identifier": "door_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_doors_locked"
      },
      {
        "identifier": "evt_obstruction_detected"
      }
    ],
    "reference": "model/elevator.sbdl:48",
    "accuracy": [
      "5",
      "mm"
    ],
    "range": [
      "2000",
      "mm"
    ],
    "description": "Infrared light curtain across the door opening"
  },
  "lighting": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "cabin"
      }
    ],
    "description": "Cabin interior lighting",
    "reference": "model/elevator.sbdl:55",
    "stereotype": "electrical"
  },
  "emergency_phone": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "cabin"
      }
    ],
    "event": [
      {
        "identifier": "raise_alarm"
      }
    ],
    "description": "In-cabin emergency communication device",
    "reference": "model/elevator.sbdl:56",
    "stereotype": "safety"
  },
  "display": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "cabin"
      }
    ],
    "requirement": [
      {
        "identifier": "req_display"
      }
    ],
    "description": "Floor indicator display inside cabin",
    "reference": "model/elevator.sbdl:57",
    "stereotype": "electrical"
  },
  "load_sensor": {
    "type": "Sensor",
    "types": [
      "Sensor",
      "aspect"
    ],
    "parent": [
      {
        "identifier": "cabin"
      }
    ],
    "event": [
      {
        "identifier": "evt_passenger_boards"
      },
      {
        "identifier": "evt_passenger_exits"
      }
    ],
    "SafetyRequirement": [
      {
        "identifier": "req_overload"
      }
    ],
    "reference": "model/elevator.sbdl:58",
    "range": [
      "1000",
      "kg"
    ],
    "description": "Load cell under the cabin floor"
  },
  "motor": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "drive_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_motor_energised"
      }
    ],
    "description": "Traction motor unit",
    "reference": "model/elevator.sbdl:64",
    "stereotype": "electrical"
  },
  "counterweight": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "drive_system"
      }
    ],
    "description": "Counterweight assembly balancing the cabin",
    "reference": "model/elevator.sbdl:65"
  },
  "brake": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "interface": [
      {
        "identifier": "brake_circuit"
      }
    ],
    "parent": [
      {
        "identifier": "drive_system"
      }
    ],
    "event": [
      {
        "identifier": "evt_brake_released"
      },
      {
        "identifier": "engage_brake"
      }
    ],
    "SafetyRequirement": [
      {
        "identifier": "req_safety_brake"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "fc_brake_failure"
      }
    ],
    "description": "Electromechanical holding and safety brake",
    "reference": "model/elevator.sbdl:66",
    "stereotype": "safety"
  },
  "speed_governor": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "related": [
      {
        "identifier": "brake",
        "stereotype": "controls"
      }
    ],
    "parent": [
      {
        "identifier": "drive_system"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_speed_governor"
      }
    ],
    "description": "Centrifugal governor that trips the safety gear on overspeed",
    "reference": "model/elevator.sbdl:71",
    "stereotype": "safety"
  },
  "dispatcher": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "control_system"
      }
    ],
    "requirement": [
      {
        "identifier": "req_dispatch"
      }
    ],
    "definition": [
      {
        "identifier": "brake_independence"
      }
    ],
    "event": [
      {
        "identifier": "evt_call_registered"
      },
      {
        "identifier": "evt_cabin_dispatched"
      }
    ],
    "color": "orange",
    "description": "Floor call scheduling and cabin dispatch logic",
    "reference": "model/elevator.sbdl:77",
    "stereotype": "software"
  },
  "safety_monitor": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "interface": [
      {
        "identifier": "brake_circuit"
      },
      {
        "identifier": "can_bus"
      }
    ],
    "parent": [
      {
        "identifier": "control_system"
      }
    ],
    "definition": [
      {
        "identifier": "brake_independence"
      },
      {
        "identifier": "safety_monitor_design"
      }
    ],
    "usecase": [
      {
        "identifier": "uc_emergency_stop"
      }
    ],
    "realisation": [
      {
        "identifier": "SafetyMonitor"
      }
    ],
    "function": [
      {
        "identifier": "func_emergency_stop"
      },
      {
        "identifier": "func_return_to_service"
      }
    ],
    "event": [
      {
        "identifier": "fault_detected"
      },
      {
        "identifier": "engage_brake"
      },
      {
        "identifier": "cut_power"
      },
      {
        "identifier": "halt_cabin"
      },
      {
        "identifier": "raise_alarm"
      },
      {
        "identifier": "fault_cleared"
      }
    ],
    "color": "orange",
    "description": "Real-time safety interlock monitoring",
    "reference": "model/elevator.sbdl:78",
    "stereotype": "software"
  },
  "guide_rails": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "shaft"
      }
    ],
    "description": "Vertical guide rails for cabin travel",
    "reference": "model/elevator.sbdl:85"
  },
  "limit_switches": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "shaft"
      }
    ],
    "SafetyRequirement": [
      {
        "identifier": "req_limit_switch"
      }
    ],
    "description": "Top and bottom overtravel limit switches",
    "reference": "model/elevator.sbdl:86",
    "stereotype": "safety"
  },
  "position_sensor": {
    "type": "Sensor",
    "types": [
      "Sensor",
      "aspect"
    ],
    "interface": [
      {
        "identifier": "can_bus"
      }
    ],
    "parent": [
      {
        "identifier": "shaft"
      }
    ],
    "event": [
      {
        "identifier": "evt_position_monitored"
      }
    ],
    "reference": "model/elevator.sbdl:87",
    "accuracy": [
      "1",
      "mm"
    ],
    "range": [
      "60000",
      "mm"
    ],
    "description": "Absolute cabin position encoder on the guide rail"
  },
  "floor_call_panel": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "user_interface"
      }
    ],
    "description": "Hall call buttons on each floor landing",
    "reference": "model/elevator.sbdl:95"
  },
  "cabin_panel": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "user_interface"
      }
    ],
    "event": [
      {
        "identifier": "evt_destination_selected"
      }
    ],
    "description": "Destination floor selection buttons inside the cabin",
    "reference": "model/elevator.sbdl:96"
  },
  "overload_indicator": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "user_interface"
      }
    ],
    "description": "Passenger overload warning indicator",
    "reference": "model/elevator.sbdl:97",
    "stereotype": "safety"
  },
  "ups": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "parent": [
      {
        "identifier": "power_supply"
      }
    ],
    "SafetyRequirement": [
      {
        "identifier": "req_emergency_power"
      }
    ],
    "fmea:detection": [
      {
        "identifier": "fd_ups_monitor"
      }
    ],
    "description": "Uninterruptible power supply for safety functions",
    "reference": "model/elevator.sbdl:99",
    "stereotype": "electrical"
  },
  "can_bus": {
    "type": "interface",
    "types": [
      "interface"
    ],
    "aspect": [
      {
        "identifier": "control_system"
      },
      {
        "identifier": "safety_monitor"
      }
    ],
    "Sensor": [
      {
        "identifier": "position_sensor"
      }
    ],
    "description": "CAN bus carrying sensor readings and drive commands",
    "reference": "model/elevator.sbdl:102",
    "stereotype": "port"
  },
  "brake_circuit": {
    "type": "interface",
    "types": [
      "interface"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      },
      {
        "identifier": "brake"
      }
    ],
    "description": "Hard-wired safety circuit commanding the brake",
    "reference": "model/elevator.sbdl:106"
  },
  "safety_monitor_design": {
    "type": "definition",
    "types": [
      "definition"
    ],
    "aspect": [
      {
        "identifier": "safety_monitor"
      }
    ],
    "requirement": [
      {
        "identifier": "req_safety_brake"
      }
    ],
    "realisation": [
      {
        "identifier": "SafetyMonitor"
      }
    ],
    "description": "The safety monitor evaluates every sensor frame independently of the dispatcher and can command the brake circuit on its own",
    "reference": "model/elevator.sbdl:113"
  }
}
