mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-06 06:25:06 +00:00
Update work_station.yaml (#60)
* Update work_station.yaml * Checklist里面有XDL跟protocol之间没对齐的问题,工作量有点大找时间写完
This commit is contained in:
@@ -40,4 +40,183 @@
|
|||||||
AdjustPH 写完了 <AdjustPH pH="8.0" reagent="hydrochloric acid" vessel="main_reactor"/>
|
AdjustPH 写完了 <AdjustPH pH="8.0" reagent="hydrochloric acid" vessel="main_reactor"/>
|
||||||
Recrystallize 写完了 <Recrystallize ratio="?" solvent1="dichloromethane" solvent2="methanol" vessel="filter" volume="?"/>
|
Recrystallize 写完了 <Recrystallize ratio="?" solvent1="dichloromethane" solvent2="methanol" vessel="filter" volume="?"/>
|
||||||
TakeSample <TakeSample id="a" vessel="rotavap"/>
|
TakeSample <TakeSample id="a" vessel="rotavap"/>
|
||||||
Hydrogenate <Hydrogenate temp="45 °C" time="?" vessel="main_reactor"/>
|
Hydrogenate <Hydrogenate temp="45 °C" time="?" vessel="main_reactor"/>
|
||||||
|
4. 参数对齐
|
||||||
|
|
||||||
|
class PumpTransferProtocol(BaseModel):
|
||||||
|
from_vessel: str
|
||||||
|
to_vessel: str
|
||||||
|
volume: float
|
||||||
|
amount: str = ""
|
||||||
|
time: float = 0
|
||||||
|
viscous: bool = False
|
||||||
|
rinsing_solvent: str = "air" <Transfer from_vessel="main_reactor" to_vessel="rotavap"/>
|
||||||
|
rinsing_volume: float = 5000
|
||||||
|
rinsing_repeats: int = 2
|
||||||
|
solid: bool = False
|
||||||
|
flowrate: float = 500
|
||||||
|
transfer_flowrate: float = 2500
|
||||||
|
|
||||||
|
class SeparateProtocol(BaseModel):
|
||||||
|
purpose: str
|
||||||
|
product_phase: str
|
||||||
|
from_vessel: str
|
||||||
|
separation_vessel: str
|
||||||
|
to_vessel: str
|
||||||
|
waste_phase_to_vessel: str
|
||||||
|
solvent: str
|
||||||
|
solvent_volume: float <Separate product_phase="bottom" purpose="wash" solvent="water" vessel="separator" volume="?"/>
|
||||||
|
through: str
|
||||||
|
repeats: int
|
||||||
|
stir_time: float
|
||||||
|
stir_speed: float
|
||||||
|
settling_time: float
|
||||||
|
|
||||||
|
|
||||||
|
class EvaporateProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
pressure: float
|
||||||
|
temp: float <Evaporate solvent="ethanol" vessel="rotavap"/>
|
||||||
|
time: float
|
||||||
|
stir_speed: float
|
||||||
|
|
||||||
|
|
||||||
|
class EvacuateAndRefillProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
gas: str <EvacuateAndRefill gas="nitrogen" vessel="main_reactor"/>
|
||||||
|
repeats: int
|
||||||
|
|
||||||
|
class AddProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
reagent: str
|
||||||
|
volume: float
|
||||||
|
mass: float
|
||||||
|
amount: str
|
||||||
|
time: float
|
||||||
|
stir: bool
|
||||||
|
stir_speed: float <Add reagent="ethanol" vessel="main_reactor" volume="2.7 mL"/>
|
||||||
|
viscous: bool
|
||||||
|
purpose: str
|
||||||
|
|
||||||
|
class CentrifugeProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
speed: float
|
||||||
|
time: float 自创的
|
||||||
|
temp: float
|
||||||
|
|
||||||
|
class FilterProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
filtrate_vessel: str
|
||||||
|
stir: bool <Filter vessel="filter"/>
|
||||||
|
stir_speed: float
|
||||||
|
temp: float
|
||||||
|
continue_heatchill: bool
|
||||||
|
volume: float
|
||||||
|
|
||||||
|
class HeatChillProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
temp: float
|
||||||
|
time: float <HeatChill pressure="1 mbar" temp_spec="room temperature" time="?" vessel="main_reactor"/>
|
||||||
|
<HeatChill temp_spec="room temperature" time_spec="overnight" vessel="main_reactor"/>
|
||||||
|
stir: bool
|
||||||
|
stir_speed: float
|
||||||
|
purpose: str
|
||||||
|
|
||||||
|
class HeatChillStartProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
temp: float 疑似没有
|
||||||
|
purpose: str
|
||||||
|
|
||||||
|
class HeatChillStopProtocol(BaseModel):
|
||||||
|
vessel: str 疑似没有
|
||||||
|
|
||||||
|
class StirProtocol(BaseModel):
|
||||||
|
stir_time: float
|
||||||
|
stir_speed: float <Stir time="0.5 h" vessel="main_reactor"/>
|
||||||
|
settling_time: float
|
||||||
|
|
||||||
|
class StartStirProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
stir_speed: float 疑似没有
|
||||||
|
purpose: str
|
||||||
|
|
||||||
|
class StopStirProtocol(BaseModel):
|
||||||
|
vessel: str 疑似没有
|
||||||
|
|
||||||
|
class TransferProtocol(BaseModel):
|
||||||
|
from_vessel: str
|
||||||
|
to_vessel: str
|
||||||
|
volume: float
|
||||||
|
amount: str = ""
|
||||||
|
time: float = 0
|
||||||
|
viscous: bool = False <Transfer from_vessel="main_reactor" to_vessel="rotavap"/>
|
||||||
|
rinsing_solvent: str = ""
|
||||||
|
rinsing_volume: float = 0.0
|
||||||
|
rinsing_repeats: int = 0
|
||||||
|
solid: bool = False
|
||||||
|
|
||||||
|
class CleanVesselProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
solvent: str
|
||||||
|
volume: float
|
||||||
|
temp: float
|
||||||
|
repeats: int = 1 <CleanVessel vessel="centrifuge"/>
|
||||||
|
|
||||||
|
class DissolveProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
solvent: str
|
||||||
|
volume: float <Dissolve mass="2.9 g" mol="0.12 mol" reagent="magnesium" vessel="main_reactor"/>
|
||||||
|
amount: str = ""
|
||||||
|
temp: float = 25.0
|
||||||
|
time: float = 0.0
|
||||||
|
stir_speed: float = 0.0
|
||||||
|
|
||||||
|
class FilterThroughProtocol(BaseModel):
|
||||||
|
from_vessel: str
|
||||||
|
to_vessel: str
|
||||||
|
filter_through: str
|
||||||
|
eluting_solvent: str = ""
|
||||||
|
eluting_volume: float = 0.0 疑似没有
|
||||||
|
eluting_repeats: int = 0
|
||||||
|
residence_time: float = 0.0
|
||||||
|
|
||||||
|
class RunColumnProtocol(BaseModel):
|
||||||
|
from_vessel: str
|
||||||
|
to_vessel: str <RunColumn Rf="?" column="column" from_vessel="rotavap" pct1="40 %" pct2="50 %" solvent1="ethyl acetate" solvent2="hexane" to_vessel="rotavap"/>
|
||||||
|
column: str
|
||||||
|
|
||||||
|
class WashSolidProtocol(BaseModel):
|
||||||
|
vessel: str
|
||||||
|
solvent: str
|
||||||
|
volume: float
|
||||||
|
filtrate_vessel: str = ""
|
||||||
|
temp: float = 25.0 <WashSolid filtrate_vessel="rotavap" solvent="formic acid" vessel="main_reactor" volume="?"/>
|
||||||
|
stir: bool = False
|
||||||
|
stir_speed: float = 0.0
|
||||||
|
time: float = 0.0
|
||||||
|
repeats: int = 1
|
||||||
|
|
||||||
|
class AdjustPHProtocol(BaseModel):
|
||||||
|
vessel: str = Field(..., description="目标容器")
|
||||||
|
ph_value: float = Field(..., description="目标pH值") # 改为 ph_value
|
||||||
|
reagent: str = Field(..., description="酸碱试剂名称")
|
||||||
|
# 移除其他可选参数,使用默认值 <新写的,没问题>
|
||||||
|
|
||||||
|
class ResetHandlingProtocol(BaseModel):
|
||||||
|
solvent: str = Field(..., description="溶剂名称") <新写的,没问题>
|
||||||
|
|
||||||
|
class DryProtocol(BaseModel):
|
||||||
|
compound: str = Field(..., description="化合物名称") <新写的,没问题>
|
||||||
|
vessel: str = Field(..., description="目标容器")
|
||||||
|
|
||||||
|
class RecrystallizeProtocol(BaseModel):
|
||||||
|
ratio: str = Field(..., description="溶剂比例(如 '1:1', '3:7')")
|
||||||
|
solvent1: str = Field(..., description="第一种溶剂名称") <新写的,没问题>
|
||||||
|
solvent2: str = Field(..., description="第二种溶剂名称")
|
||||||
|
vessel: str = Field(..., description="目标容器")
|
||||||
|
volume: float = Field(..., description="总体积 (mL)")
|
||||||
|
|
||||||
|
class HydrogenateProtocol(BaseModel):
|
||||||
|
temp: str = Field(..., description="反应温度(如 '45 °C')")
|
||||||
|
time: str = Field(..., description="反应时间(如 '2 h')") <新写的,没问题>
|
||||||
|
vessel: str = Field(..., description="反应容器")
|
||||||
@@ -2355,6 +2355,381 @@ workstation:
|
|||||||
title: initialize_device参数
|
title: initialize_device参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
AdjustPHProtocol:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
vessel: vessel
|
||||||
|
ph_value: ph_value
|
||||||
|
reagent: reagent
|
||||||
|
goal_default:
|
||||||
|
vessel: ''
|
||||||
|
ph_value: 7.0
|
||||||
|
reagent: ''
|
||||||
|
handles:
|
||||||
|
input:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: Vessel
|
||||||
|
label: Vessel
|
||||||
|
- data_key: reagent
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: reagent
|
||||||
|
label: Reagent
|
||||||
|
output:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: executor
|
||||||
|
data_type: resource
|
||||||
|
handler_key: VesselOut
|
||||||
|
label: Vessel
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ROS Action AdjustPH 的 JSON Schema
|
||||||
|
properties:
|
||||||
|
feedback:
|
||||||
|
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- progress
|
||||||
|
title: AdjustPH_Feedback
|
||||||
|
type: object
|
||||||
|
goal:
|
||||||
|
description: Action 目标 - 从客户端发送到服务器
|
||||||
|
properties:
|
||||||
|
vessel:
|
||||||
|
type: string
|
||||||
|
ph_value:
|
||||||
|
type: number
|
||||||
|
reagent:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- vessel
|
||||||
|
- ph_value
|
||||||
|
- reagent
|
||||||
|
title: AdjustPH_Goal
|
||||||
|
type: object
|
||||||
|
result:
|
||||||
|
description: Action 结果 - 完成后从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
return_info:
|
||||||
|
type: string
|
||||||
|
success:
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- success
|
||||||
|
- message
|
||||||
|
- return_info
|
||||||
|
title: AdjustPH_Result
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: AdjustPH
|
||||||
|
type: object
|
||||||
|
type: AdjustPH
|
||||||
|
ResetHandlingProtocol:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
solvent: solvent
|
||||||
|
goal_default:
|
||||||
|
solvent: ''
|
||||||
|
handles:
|
||||||
|
input:
|
||||||
|
- data_key: solvent
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: solvent
|
||||||
|
label: Solvent
|
||||||
|
output: []
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ROS Action ResetHandling 的 JSON Schema
|
||||||
|
properties:
|
||||||
|
feedback:
|
||||||
|
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- progress
|
||||||
|
title: ResetHandling_Feedback
|
||||||
|
type: object
|
||||||
|
goal:
|
||||||
|
description: Action 目标 - 从客户端发送到服务器
|
||||||
|
properties:
|
||||||
|
solvent:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- solvent
|
||||||
|
title: ResetHandling_Goal
|
||||||
|
type: object
|
||||||
|
result:
|
||||||
|
description: Action 结果 - 完成后从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
return_info:
|
||||||
|
type: string
|
||||||
|
success:
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- success
|
||||||
|
- message
|
||||||
|
- return_info
|
||||||
|
title: ResetHandling_Result
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: ResetHandling
|
||||||
|
type: object
|
||||||
|
type: ResetHandling
|
||||||
|
DryProtocol:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
compound: compound
|
||||||
|
vessel: vessel
|
||||||
|
goal_default:
|
||||||
|
compound: ''
|
||||||
|
vessel: ''
|
||||||
|
handles:
|
||||||
|
input:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: Vessel
|
||||||
|
label: Vessel
|
||||||
|
output:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: executor
|
||||||
|
data_type: resource
|
||||||
|
handler_key: VesselOut
|
||||||
|
label: Vessel
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ROS Action Dry 的 JSON Schema
|
||||||
|
properties:
|
||||||
|
feedback:
|
||||||
|
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- progress
|
||||||
|
title: Dry_Feedback
|
||||||
|
type: object
|
||||||
|
goal:
|
||||||
|
description: Action 目标 - 从客户端发送到服务器
|
||||||
|
properties:
|
||||||
|
compound:
|
||||||
|
type: string
|
||||||
|
vessel:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- compound
|
||||||
|
- vessel
|
||||||
|
title: Dry_Goal
|
||||||
|
type: object
|
||||||
|
result:
|
||||||
|
description: Action 结果 - 完成后从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
return_info:
|
||||||
|
type: string
|
||||||
|
success:
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- success
|
||||||
|
- message
|
||||||
|
- return_info
|
||||||
|
title: Dry_Result
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: Dry
|
||||||
|
type: object
|
||||||
|
type: Dry
|
||||||
|
HydrogenateProtocol:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
temp: temp
|
||||||
|
time: time
|
||||||
|
vessel: vessel
|
||||||
|
goal_default:
|
||||||
|
temp: ''
|
||||||
|
time: ''
|
||||||
|
vessel: ''
|
||||||
|
handles:
|
||||||
|
input:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: Vessel
|
||||||
|
label: Vessel
|
||||||
|
output:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: executor
|
||||||
|
data_type: resource
|
||||||
|
handler_key: VesselOut
|
||||||
|
label: Vessel
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ROS Action Hydrogenate 的 JSON Schema
|
||||||
|
properties:
|
||||||
|
feedback:
|
||||||
|
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- progress
|
||||||
|
title: Hydrogenate_Feedback
|
||||||
|
type: object
|
||||||
|
goal:
|
||||||
|
description: Action 目标 - 从客户端发送到服务器
|
||||||
|
properties:
|
||||||
|
temp:
|
||||||
|
type: string
|
||||||
|
time:
|
||||||
|
type: string
|
||||||
|
vessel:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- temp
|
||||||
|
- time
|
||||||
|
- vessel
|
||||||
|
title: Hydrogenate_Goal
|
||||||
|
type: object
|
||||||
|
result:
|
||||||
|
description: Action 结果 - 完成后从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
return_info:
|
||||||
|
type: string
|
||||||
|
success:
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- success
|
||||||
|
- message
|
||||||
|
- return_info
|
||||||
|
title: Hydrogenate_Result
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: Hydrogenate
|
||||||
|
type: object
|
||||||
|
type: Hydrogenate
|
||||||
|
RecrystallizeProtocol:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
ratio: ratio
|
||||||
|
solvent1: solvent1
|
||||||
|
solvent2: solvent2
|
||||||
|
vessel: vessel
|
||||||
|
volume: volume
|
||||||
|
goal_default:
|
||||||
|
ratio: ''
|
||||||
|
solvent1: ''
|
||||||
|
solvent2: ''
|
||||||
|
vessel: ''
|
||||||
|
volume: 0.0
|
||||||
|
handles:
|
||||||
|
input:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: Vessel
|
||||||
|
label: Vessel
|
||||||
|
- data_key: solvent
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: solvent1
|
||||||
|
label: Solvent 1
|
||||||
|
- data_key: solvent
|
||||||
|
data_source: handle
|
||||||
|
data_type: resource
|
||||||
|
handler_key: solvent2
|
||||||
|
label: Solvent 2
|
||||||
|
output:
|
||||||
|
- data_key: vessel
|
||||||
|
data_source: executor
|
||||||
|
data_type: resource
|
||||||
|
handler_key: VesselOut
|
||||||
|
label: Vessel
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ROS Action Recrystallize 的 JSON Schema
|
||||||
|
properties:
|
||||||
|
feedback:
|
||||||
|
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
progress:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- progress
|
||||||
|
title: Recrystallize_Feedback
|
||||||
|
type: object
|
||||||
|
goal:
|
||||||
|
description: Action 目标 - 从客户端发送到服务器
|
||||||
|
properties:
|
||||||
|
ratio:
|
||||||
|
type: string
|
||||||
|
solvent1:
|
||||||
|
type: string
|
||||||
|
solvent2:
|
||||||
|
type: string
|
||||||
|
vessel:
|
||||||
|
type: string
|
||||||
|
volume:
|
||||||
|
type: number
|
||||||
|
required:
|
||||||
|
- ratio
|
||||||
|
- solvent1
|
||||||
|
- solvent2
|
||||||
|
- vessel
|
||||||
|
- volume
|
||||||
|
title: Recrystallize_Goal
|
||||||
|
type: object
|
||||||
|
result:
|
||||||
|
description: Action 结果 - 完成后从服务器发送到客户端
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
return_info:
|
||||||
|
type: string
|
||||||
|
success:
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- success
|
||||||
|
- message
|
||||||
|
- return_info
|
||||||
|
title: Recrystallize_Result
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: Recrystallize
|
||||||
|
type: object
|
||||||
|
type: Recrystallize
|
||||||
module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode
|
module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode
|
||||||
status_types: {}
|
status_types: {}
|
||||||
type: ros2
|
type: ros2
|
||||||
|
|||||||
Reference in New Issue
Block a user