{ "nodes": [ { "id": "CleanVesselTestStation", "name": "容器清洗测试工作站", "children": [ "transfer_pump_cleaner", "heatchill_1", "flask_water", "flask_ethanol", "flask_acetone", "flask_waste", "reactor", "flask_buffer", "flask_sample", "flask_air" ], "parent": null, "type": "device", "class": "workstation", "position": { "x": 620.6111111111111, "y": 171, "z": 0 }, "config": { "protocol_type": ["CleanVesselProtocol", "TransferProtocol", "AddProtocol"] }, "data": {} }, { "id": "transfer_pump_cleaner", "name": "清洗转移泵", "children": [], "parent": "CleanVesselTestStation", "type": "device", "class": "virtual_transfer_pump", "position": { "x": 520.6111111111111, "y": 300, "z": 0 }, "config": { "port": "VIRTUAL", "max_volume": 50.0, "transfer_rate": 10.0 }, "data": { "status": "Idle", "current_volume": 0.0, "max_volume": 50.0, "transfer_rate": 10.0, "from_vessel": "", "to_vessel": "", "progress": 0.0, "transferred_volume": 0.0, "current_status": "Ready" } }, { "id": "heatchill_1", "name": "加热冷却器", "children": [], "parent": "CleanVesselTestStation", "type": "device", "class": "virtual_heatchill", "position": { "x": 650.1111111111111, "y": 478, "z": 0 }, "config": { "port": "VIRTUAL", "max_temp": 150.0, "min_temp": -20.0 }, "data": { "status": "Idle", "current_temp": 25.0, "target_temp": 25.0, "vessel": "", "purpose": "", "progress": 0.0, "current_status": "Ready" } }, { "id": "flask_water", "name": "水溶剂瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 100, "y": 428, "z": 0 }, "config": { "max_volume": 2000.0 }, "data": { "liquid": [ { "name": "water", "volume": 1500.0, "concentration": 100.0 } ] } }, { "id": "flask_ethanol", "name": "乙醇溶剂瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 250, "y": 428, "z": 0 }, "config": { "max_volume": 2000.0 }, "data": { "liquid": [ { "name": "ethanol", "volume": 1500.0, "concentration": 99.5 } ] } }, { "id": "flask_acetone", "name": "丙酮溶剂瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 400, "y": 428, "z": 0 }, "config": { "max_volume": 2000.0 }, "data": { "liquid": [ { "name": "acetone", "volume": 1800.0, "concentration": 99.9 } ] } }, { "id": "flask_waste", "name": "废液瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 550, "y": 428, "z": 0 }, "config": { "max_volume": 5000.0 }, "data": { "liquid": [] } }, { "id": "reactor", "name": "反应器", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 698.1111111111111, "y": 428, "z": 0 }, "config": { "max_volume": 1000.0 }, "data": { "liquid": [ { "name": "residue", "volume": 50.0, "concentration": 100.0 } ] } }, { "id": "flask_buffer", "name": "缓冲液瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 850, "y": 428, "z": 0 }, "config": { "max_volume": 2000.0 }, "data": { "liquid": [ { "name": "buffer", "volume": 1000.0, "concentration": 10.0 } ] } }, { "id": "flask_sample", "name": "样品瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 1000, "y": 428, "z": 0 }, "config": { "max_volume": 500.0 }, "data": { "liquid": [] } }, { "id": "flask_air", "name": "空气瓶", "children": [], "parent": "CleanVesselTestStation", "type": "container", "class": null, "position": { "x": 950, "y": 300, "z": 0 }, "config": { "max_volume": 2000.0 }, "data": { "liquid": [] } } ], "links": [ { "source": "transfer_pump_cleaner", "target": "flask_water", "type": "physical", "port": { "transfer_pump_cleaner": "1", "flask_water": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_ethanol", "type": "physical", "port": { "transfer_pump_cleaner": "2", "flask_ethanol": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_acetone", "type": "physical", "port": { "transfer_pump_cleaner": "3", "flask_acetone": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_waste", "type": "physical", "port": { "transfer_pump_cleaner": "4", "flask_waste": "top" } }, { "source": "transfer_pump_cleaner", "target": "reactor", "type": "physical", "port": { "transfer_pump_cleaner": "5", "reactor": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_buffer", "type": "physical", "port": { "transfer_pump_cleaner": "6", "flask_buffer": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_sample", "type": "physical", "port": { "transfer_pump_cleaner": "7", "flask_sample": "top" } }, { "source": "transfer_pump_cleaner", "target": "flask_air", "type": "physical", "port": { "transfer_pump_cleaner": "8", "flask_air": "top" } }, { "source": "heatchill_1", "target": "reactor", "type": "physical", "port": { "heatchill_1": "heating_element", "reactor": "bottom" } }, { "source": "heatchill_1", "target": "flask_sample", "type": "physical", "port": { "heatchill_1": "heating_element", "flask_sample": "bottom" } } ] }