mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-04 13:25:13 +00:00
fix bugs from new actions
This commit is contained in:
@@ -247,6 +247,142 @@ def generate_heat_chill_protocol(
|
||||
|
||||
return action_sequence
|
||||
|
||||
|
||||
def generate_heat_chill_to_temp_protocol(
|
||||
G: nx.DiGraph,
|
||||
vessel: str,
|
||||
temp: float = 25.0,
|
||||
time: float = 300.0,
|
||||
temp_spec: str = "",
|
||||
time_spec: str = "",
|
||||
pressure: str = "",
|
||||
reflux_solvent: str = "",
|
||||
stir: bool = False,
|
||||
stir_speed: float = 300.0,
|
||||
purpose: str = "",
|
||||
**kwargs # 🔧 接受额外参数,增强兼容性
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""
|
||||
生成加热/冷却操作的协议序列
|
||||
|
||||
Args:
|
||||
G: 设备图
|
||||
vessel: 加热容器名称(必需)
|
||||
temp: 目标温度 (°C)
|
||||
time: 加热时间 (秒)
|
||||
temp_spec: 温度规格(如 'room temperature', 'reflux')
|
||||
time_spec: 时间规格(如 'overnight', '2 h')
|
||||
pressure: 压力规格(如 '1 mbar'),不做特殊处理
|
||||
reflux_solvent: 回流溶剂名称,不做特殊处理
|
||||
stir: 是否搅拌
|
||||
stir_speed: 搅拌速度 (RPM)
|
||||
purpose: 操作目的
|
||||
**kwargs: 其他参数(兼容性)
|
||||
|
||||
Returns:
|
||||
List[Dict[str, Any]]: 加热操作的动作序列
|
||||
"""
|
||||
|
||||
debug_print("=" * 50)
|
||||
debug_print("开始生成加热冷却协议")
|
||||
debug_print(f"输入参数:")
|
||||
debug_print(f" - vessel: {vessel}")
|
||||
debug_print(f" - temp: {temp}°C")
|
||||
debug_print(f" - time: {time}s ({time / 60:.1f}分钟)")
|
||||
debug_print(f" - temp_spec: {temp_spec}")
|
||||
debug_print(f" - time_spec: {time_spec}")
|
||||
debug_print(f" - pressure: {pressure}")
|
||||
debug_print(f" - reflux_solvent: {reflux_solvent}")
|
||||
debug_print(f" - stir: {stir}")
|
||||
debug_print(f" - stir_speed: {stir_speed} RPM")
|
||||
debug_print(f" - purpose: {purpose}")
|
||||
debug_print(f" - 其他参数: {kwargs}")
|
||||
debug_print("=" * 50)
|
||||
|
||||
action_sequence = []
|
||||
|
||||
# === 参数验证 ===
|
||||
debug_print("步骤1: 参数验证...")
|
||||
|
||||
# 验证必需参数
|
||||
if not vessel:
|
||||
raise ValueError("vessel 参数不能为空")
|
||||
|
||||
if vessel not in G.nodes():
|
||||
raise ValueError(f"容器 '{vessel}' 不存在于系统中")
|
||||
|
||||
# 温度解析:优先使用 temp_spec,然后是 temp
|
||||
final_temp = temp
|
||||
if temp_spec:
|
||||
final_temp = parse_temp_spec(temp_spec)
|
||||
debug_print(f"温度解析: '{temp_spec}' → {final_temp}°C")
|
||||
|
||||
# 时间解析:优先使用 time_spec,然后是 time
|
||||
final_time = time
|
||||
if time_spec:
|
||||
final_time = parse_time_spec(time_spec)
|
||||
debug_print(f"时间解析: '{time_spec}' → {final_time}s ({final_time / 60:.1f}分钟)")
|
||||
|
||||
# 参数范围验证
|
||||
if final_temp < -50.0 or final_temp > 300.0:
|
||||
debug_print(f"温度 {final_temp}°C 超出范围,修正为 25°C")
|
||||
final_temp = 25.0
|
||||
|
||||
if final_time < 0:
|
||||
debug_print(f"时间 {final_time}s 无效,修正为 300s")
|
||||
final_time = 300.0
|
||||
|
||||
if stir_speed < 0 or stir_speed > 1500.0:
|
||||
debug_print(f"搅拌速度 {stir_speed} RPM 超出范围,修正为 300 RPM")
|
||||
stir_speed = 300.0
|
||||
|
||||
debug_print(f"✅ 参数验证通过")
|
||||
|
||||
# === 查找加热设备 ===
|
||||
debug_print("步骤2: 查找加热设备...")
|
||||
|
||||
try:
|
||||
heatchill_id = find_connected_heatchill(G, vessel)
|
||||
debug_print(f"设备配置: 加热设备 = {heatchill_id}")
|
||||
|
||||
except Exception as e:
|
||||
debug_print(f"❌ 设备查找失败: {str(e)}")
|
||||
raise ValueError(f"无法找到加热设备: {str(e)}")
|
||||
|
||||
# === 执行加热操作 ===
|
||||
debug_print("步骤3: 执行加热操作...")
|
||||
|
||||
heatchill_action = {
|
||||
"device_id": heatchill_id,
|
||||
"action_name": "heat_chill",
|
||||
"action_kwargs": {
|
||||
"vessel": vessel,
|
||||
"temp": final_temp,
|
||||
"time": final_time,
|
||||
"stir": stir,
|
||||
"stir_speed": stir_speed,
|
||||
"purpose": purpose or f"加热到 {final_temp}°C"
|
||||
}
|
||||
}
|
||||
|
||||
action_sequence.append(heatchill_action)
|
||||
|
||||
# === 总结 ===
|
||||
debug_print("=" * 50)
|
||||
debug_print(f"加热冷却协议生成完成")
|
||||
debug_print(f"总动作数: {len(action_sequence)}")
|
||||
debug_print(f"加热容器: {vessel}")
|
||||
debug_print(f"目标温度: {final_temp}°C")
|
||||
debug_print(f"加热时间: {final_time}s ({final_time / 60:.1f}分钟)")
|
||||
if pressure:
|
||||
debug_print(f"压力参数: {pressure} (已接收,不做特殊处理)")
|
||||
if reflux_solvent:
|
||||
debug_print(f"回流溶剂: {reflux_solvent} (已接收,不做特殊处理)")
|
||||
debug_print("=" * 50)
|
||||
|
||||
return action_sequence
|
||||
|
||||
|
||||
def generate_heat_chill_start_protocol(
|
||||
G: nx.DiGraph,
|
||||
vessel: str,
|
||||
|
||||
@@ -778,17 +778,17 @@ def generate_pump_protocol_with_rinsing(
|
||||
)
|
||||
|
||||
# 为每个动作添加唯一标识
|
||||
for i, action in enumerate(pump_action_sequence):
|
||||
if isinstance(action, dict):
|
||||
action['_protocol_id'] = protocol_id
|
||||
action['_action_sequence'] = i
|
||||
elif isinstance(action, list):
|
||||
for j, sub_action in enumerate(action):
|
||||
if isinstance(sub_action, dict):
|
||||
sub_action['_protocol_id'] = protocol_id
|
||||
sub_action['_action_sequence'] = f"{i}_{j}"
|
||||
|
||||
debug_print(f"📊 协议 {protocol_id} 生成完成,共 {len(pump_action_sequence)} 个动作")
|
||||
# for i, action in enumerate(pump_action_sequence):
|
||||
# if isinstance(action, dict):
|
||||
# action['_protocol_id'] = protocol_id
|
||||
# action['_action_sequence'] = i
|
||||
# elif isinstance(action, list):
|
||||
# for j, sub_action in enumerate(action):
|
||||
# if isinstance(sub_action, dict):
|
||||
# sub_action['_protocol_id'] = protocol_id
|
||||
# sub_action['_action_sequence'] = f"{i}_{j}"
|
||||
#
|
||||
# debug_print(f"📊 协议 {protocol_id} 生成完成,共 {len(pump_action_sequence)} 个动作")
|
||||
debug_print(f"🔓 释放执行锁")
|
||||
return pump_action_sequence
|
||||
|
||||
|
||||
@@ -372,6 +372,30 @@ class HeatChillProtocol(BaseModel):
|
||||
|
||||
return 300.0 # 默认5分钟
|
||||
|
||||
|
||||
class HeatChillStartProtocol(BaseModel):
|
||||
# === 必需参数 ===
|
||||
vessel: str = Field(..., description="加热容器名称")
|
||||
|
||||
# === 可选参数 - 温度相关 ===
|
||||
temp: float = Field(25.0, description="目标温度 (°C)")
|
||||
temp_spec: str = Field("", description="温度规格(如 'room temperature', 'reflux')")
|
||||
|
||||
# === 可选参数 - 其他XDL参数 ===
|
||||
pressure: str = Field("", description="压力规格(如 '1 mbar'),不做特殊处理")
|
||||
reflux_solvent: str = Field("", description="回流溶剂名称,不做特殊处理")
|
||||
|
||||
# === 可选参数 - 搅拌相关 ===
|
||||
stir: bool = Field(False, description="是否搅拌")
|
||||
stir_speed: float = Field(300.0, description="搅拌速度 (RPM)")
|
||||
purpose: str = Field("", description="操作目的")
|
||||
|
||||
|
||||
class HeatChillStopProtocol(BaseModel):
|
||||
# === 必需参数 ===
|
||||
vessel: str = Field(..., description="加热容器名称")
|
||||
|
||||
|
||||
class StirProtocol(BaseModel):
|
||||
# === 必需参数 ===
|
||||
vessel: str = Field(..., description="搅拌容器名称")
|
||||
@@ -608,7 +632,8 @@ __all__ = [
|
||||
"Point3D", "PumpTransferProtocol", "CleanProtocol", "SeparateProtocol",
|
||||
"EvaporateProtocol", "EvacuateAndRefillProtocol", "AGVTransferProtocol",
|
||||
"CentrifugeProtocol", "AddProtocol", "FilterProtocol",
|
||||
"HeatChillProtocol", "HeatChillStartProtocol", "HeatChillStopProtocol",
|
||||
"HeatChillProtocol",
|
||||
"HeatChillStartProtocol", "HeatChillStopProtocol",
|
||||
"StirProtocol", "StartStirProtocol", "StopStirProtocol",
|
||||
"TransferProtocol", "CleanVesselProtocol", "DissolveProtocol",
|
||||
"FilterThroughProtocol", "RunColumnProtocol", "WashSolidProtocol",
|
||||
|
||||
@@ -842,11 +842,15 @@ mock_heater:
|
||||
time: time
|
||||
vessel: vessel
|
||||
goal_default:
|
||||
pressure: ''
|
||||
purpose: ''
|
||||
reflux_solvent: ''
|
||||
stir: false
|
||||
stir_speed: 0.0
|
||||
temp: 0.0
|
||||
temp_spec: ''
|
||||
time: 0.0
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
@@ -866,22 +870,34 @@ mock_heater:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
pressure:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
reflux_solvent:
|
||||
type: string
|
||||
stir:
|
||||
type: boolean
|
||||
stir_speed:
|
||||
type: number
|
||||
temp:
|
||||
type: number
|
||||
temp_spec:
|
||||
type: string
|
||||
time:
|
||||
type: number
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- temp
|
||||
- time
|
||||
- temp_spec
|
||||
- time_spec
|
||||
- pressure
|
||||
- reflux_solvent
|
||||
- stir
|
||||
- stir_speed
|
||||
- purpose
|
||||
@@ -890,13 +906,16 @@ mock_heater:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: HeatChill_Result
|
||||
type: object
|
||||
required:
|
||||
@@ -1270,13 +1289,18 @@ mock_pump:
|
||||
volume: volume
|
||||
goal_default:
|
||||
amount: ''
|
||||
event: ''
|
||||
flowrate: 0.0
|
||||
from_vessel: ''
|
||||
rate_spec: ''
|
||||
rinsing_repeats: 0
|
||||
rinsing_solvent: ''
|
||||
rinsing_volume: 0.0
|
||||
solid: false
|
||||
through: ''
|
||||
time: 0.0
|
||||
to_vessel: ''
|
||||
transfer_flowrate: 0.0
|
||||
viscous: false
|
||||
volume: 0.0
|
||||
handles: []
|
||||
@@ -1334,8 +1358,14 @@ mock_pump:
|
||||
properties:
|
||||
amount:
|
||||
type: string
|
||||
event:
|
||||
type: string
|
||||
flowrate:
|
||||
type: number
|
||||
from_vessel:
|
||||
type: string
|
||||
rate_spec:
|
||||
type: string
|
||||
rinsing_repeats:
|
||||
maximum: 2147483647
|
||||
minimum: -2147483648
|
||||
@@ -1346,10 +1376,14 @@ mock_pump:
|
||||
type: number
|
||||
solid:
|
||||
type: boolean
|
||||
through:
|
||||
type: string
|
||||
time:
|
||||
type: number
|
||||
to_vessel:
|
||||
type: string
|
||||
transfer_flowrate:
|
||||
type: number
|
||||
viscous:
|
||||
type: boolean
|
||||
volume:
|
||||
@@ -1365,6 +1399,11 @@ mock_pump:
|
||||
- rinsing_volume
|
||||
- rinsing_repeats
|
||||
- solid
|
||||
- flowrate
|
||||
- transfer_flowrate
|
||||
- rate_spec
|
||||
- event
|
||||
- through
|
||||
title: PumpTransfer_Goal
|
||||
type: object
|
||||
result:
|
||||
@@ -2281,6 +2320,7 @@ mock_separator:
|
||||
goal_default:
|
||||
from_vessel: ''
|
||||
product_phase: ''
|
||||
product_vessel: ''
|
||||
purpose: ''
|
||||
repeats: 0
|
||||
separation_vessel: ''
|
||||
@@ -2291,7 +2331,10 @@ mock_separator:
|
||||
stir_time: 0.0
|
||||
through: ''
|
||||
to_vessel: ''
|
||||
vessel: ''
|
||||
volume: ''
|
||||
waste_phase_to_vessel: ''
|
||||
waste_vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
success: success
|
||||
@@ -2349,6 +2392,8 @@ mock_separator:
|
||||
type: string
|
||||
product_phase:
|
||||
type: string
|
||||
product_vessel:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
repeats:
|
||||
@@ -2371,8 +2416,14 @@ mock_separator:
|
||||
type: string
|
||||
to_vessel:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
volume:
|
||||
type: string
|
||||
waste_phase_to_vessel:
|
||||
type: string
|
||||
waste_vessel:
|
||||
type: string
|
||||
required:
|
||||
- purpose
|
||||
- product_phase
|
||||
@@ -2387,18 +2438,25 @@ mock_separator:
|
||||
- stir_time
|
||||
- stir_speed
|
||||
- settling_time
|
||||
- vessel
|
||||
- volume
|
||||
- product_vessel
|
||||
- waste_vessel
|
||||
title: Separate_Goal
|
||||
type: object
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: Separate_Result
|
||||
type: object
|
||||
required:
|
||||
@@ -3472,9 +3530,13 @@ mock_stirrer_new:
|
||||
stir_speed: stir_speed
|
||||
stir_time: stir_time
|
||||
goal_default:
|
||||
event: ''
|
||||
settling_time: 0.0
|
||||
stir_speed: 0.0
|
||||
stir_time: 0.0
|
||||
time: ''
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
success: success
|
||||
@@ -3493,13 +3555,25 @@ mock_stirrer_new:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
event:
|
||||
type: string
|
||||
settling_time:
|
||||
type: number
|
||||
stir_speed:
|
||||
type: number
|
||||
stir_time:
|
||||
type: number
|
||||
time:
|
||||
type: string
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- time
|
||||
- event
|
||||
- time_spec
|
||||
- stir_time
|
||||
- stir_speed
|
||||
- settling_time
|
||||
@@ -3508,13 +3582,16 @@ mock_stirrer_new:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: Stir_Result
|
||||
type: object
|
||||
required:
|
||||
|
||||
@@ -324,9 +324,13 @@ separator.homemade:
|
||||
stir_speed: stir_speed
|
||||
stir_time: stir_time,
|
||||
goal_default:
|
||||
event: ''
|
||||
settling_time: 0.0
|
||||
stir_speed: 0.0
|
||||
stir_time: 0.0
|
||||
time: ''
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
success: success
|
||||
@@ -345,13 +349,25 @@ separator.homemade:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
event:
|
||||
type: string
|
||||
settling_time:
|
||||
type: number
|
||||
stir_speed:
|
||||
type: number
|
||||
stir_time:
|
||||
type: number
|
||||
time:
|
||||
type: string
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- time
|
||||
- event
|
||||
- time_spec
|
||||
- stir_time
|
||||
- stir_speed
|
||||
- settling_time
|
||||
@@ -360,13 +376,16 @@ separator.homemade:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: Stir_Result
|
||||
type: object
|
||||
required:
|
||||
|
||||
@@ -377,11 +377,15 @@ heaterstirrer.dalong:
|
||||
time: time
|
||||
vessel: vessel
|
||||
goal_default:
|
||||
pressure: ''
|
||||
purpose: ''
|
||||
reflux_solvent: ''
|
||||
stir: false
|
||||
stir_speed: 0.0
|
||||
temp: 0.0
|
||||
temp_spec: ''
|
||||
time: 0.0
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
@@ -401,22 +405,34 @@ heaterstirrer.dalong:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
pressure:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
reflux_solvent:
|
||||
type: string
|
||||
stir:
|
||||
type: boolean
|
||||
stir_speed:
|
||||
type: number
|
||||
temp:
|
||||
type: number
|
||||
temp_spec:
|
||||
type: string
|
||||
time:
|
||||
type: number
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- temp
|
||||
- time
|
||||
- temp_spec
|
||||
- time_spec
|
||||
- pressure
|
||||
- reflux_solvent
|
||||
- stir
|
||||
- stir_speed
|
||||
- purpose
|
||||
@@ -425,13 +441,16 @@ heaterstirrer.dalong:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: HeatChill_Result
|
||||
type: object
|
||||
required:
|
||||
|
||||
@@ -318,6 +318,12 @@ virtual_column:
|
||||
goal_default:
|
||||
column: ''
|
||||
from_vessel: ''
|
||||
pct1: ''
|
||||
pct2: ''
|
||||
ratio: ''
|
||||
rf: ''
|
||||
solvent1: ''
|
||||
solvent2: ''
|
||||
to_vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
@@ -346,12 +352,30 @@ virtual_column:
|
||||
type: string
|
||||
from_vessel:
|
||||
type: string
|
||||
pct1:
|
||||
type: string
|
||||
pct2:
|
||||
type: string
|
||||
ratio:
|
||||
type: string
|
||||
rf:
|
||||
type: string
|
||||
solvent1:
|
||||
type: string
|
||||
solvent2:
|
||||
type: string
|
||||
to_vessel:
|
||||
type: string
|
||||
required:
|
||||
- from_vessel
|
||||
- to_vessel
|
||||
- column
|
||||
- rf
|
||||
- pct1
|
||||
- pct2
|
||||
- solvent1
|
||||
- solvent2
|
||||
- ratio
|
||||
title: RunColumn_Goal
|
||||
type: object
|
||||
result:
|
||||
@@ -1155,11 +1179,15 @@ virtual_heatchill:
|
||||
time: time
|
||||
vessel: vessel
|
||||
goal_default:
|
||||
pressure: ''
|
||||
purpose: ''
|
||||
reflux_solvent: ''
|
||||
stir: false
|
||||
stir_speed: 0.0
|
||||
temp: 0.0
|
||||
temp_spec: ''
|
||||
time: 0.0
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
@@ -1179,22 +1207,34 @@ virtual_heatchill:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
pressure:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
reflux_solvent:
|
||||
type: string
|
||||
stir:
|
||||
type: boolean
|
||||
stir_speed:
|
||||
type: number
|
||||
temp:
|
||||
type: number
|
||||
temp_spec:
|
||||
type: string
|
||||
time:
|
||||
type: number
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- temp
|
||||
- time
|
||||
- temp_spec
|
||||
- time_spec
|
||||
- pressure
|
||||
- reflux_solvent
|
||||
- stir
|
||||
- stir_speed
|
||||
- purpose
|
||||
@@ -1203,13 +1243,16 @@ virtual_heatchill:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: HeatChill_Result
|
||||
type: object
|
||||
required:
|
||||
@@ -2048,13 +2091,18 @@ virtual_pump:
|
||||
volume: volume
|
||||
goal_default:
|
||||
amount: ''
|
||||
event: ''
|
||||
flowrate: 0.0
|
||||
from_vessel: ''
|
||||
rate_spec: ''
|
||||
rinsing_repeats: 0
|
||||
rinsing_solvent: ''
|
||||
rinsing_volume: 0.0
|
||||
solid: false
|
||||
through: ''
|
||||
time: 0.0
|
||||
to_vessel: ''
|
||||
transfer_flowrate: 0.0
|
||||
viscous: false
|
||||
volume: 0.0
|
||||
handles: []
|
||||
@@ -2112,8 +2160,14 @@ virtual_pump:
|
||||
properties:
|
||||
amount:
|
||||
type: string
|
||||
event:
|
||||
type: string
|
||||
flowrate:
|
||||
type: number
|
||||
from_vessel:
|
||||
type: string
|
||||
rate_spec:
|
||||
type: string
|
||||
rinsing_repeats:
|
||||
maximum: 2147483647
|
||||
minimum: -2147483648
|
||||
@@ -2124,10 +2178,14 @@ virtual_pump:
|
||||
type: number
|
||||
solid:
|
||||
type: boolean
|
||||
through:
|
||||
type: string
|
||||
time:
|
||||
type: number
|
||||
to_vessel:
|
||||
type: string
|
||||
transfer_flowrate:
|
||||
type: number
|
||||
viscous:
|
||||
type: boolean
|
||||
volume:
|
||||
@@ -2143,6 +2201,11 @@ virtual_pump:
|
||||
- rinsing_volume
|
||||
- rinsing_repeats
|
||||
- solid
|
||||
- flowrate
|
||||
- transfer_flowrate
|
||||
- rate_spec
|
||||
- event
|
||||
- through
|
||||
title: PumpTransfer_Goal
|
||||
type: object
|
||||
result:
|
||||
@@ -2325,6 +2388,7 @@ virtual_rotavap:
|
||||
vessel: vessel
|
||||
goal_default:
|
||||
pressure: 0.0
|
||||
solvent: ''
|
||||
stir_speed: 0.0
|
||||
temp: 0.0
|
||||
time: 0.0
|
||||
@@ -2385,6 +2449,8 @@ virtual_rotavap:
|
||||
properties:
|
||||
pressure:
|
||||
type: number
|
||||
solvent:
|
||||
type: string
|
||||
stir_speed:
|
||||
type: number
|
||||
temp:
|
||||
@@ -2399,6 +2465,7 @@ virtual_rotavap:
|
||||
- temp
|
||||
- time
|
||||
- stir_speed
|
||||
- solvent
|
||||
title: Evaporate_Goal
|
||||
type: object
|
||||
result:
|
||||
@@ -2641,6 +2708,7 @@ virtual_separator:
|
||||
goal_default:
|
||||
from_vessel: ''
|
||||
product_phase: ''
|
||||
product_vessel: ''
|
||||
purpose: ''
|
||||
repeats: 0
|
||||
separation_vessel: ''
|
||||
@@ -2651,7 +2719,10 @@ virtual_separator:
|
||||
stir_time: 0.0
|
||||
through: ''
|
||||
to_vessel: ''
|
||||
vessel: ''
|
||||
volume: ''
|
||||
waste_phase_to_vessel: ''
|
||||
waste_vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
message: message
|
||||
@@ -2710,6 +2781,8 @@ virtual_separator:
|
||||
type: string
|
||||
product_phase:
|
||||
type: string
|
||||
product_vessel:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
repeats:
|
||||
@@ -2732,8 +2805,14 @@ virtual_separator:
|
||||
type: string
|
||||
to_vessel:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
volume:
|
||||
type: string
|
||||
waste_phase_to_vessel:
|
||||
type: string
|
||||
waste_vessel:
|
||||
type: string
|
||||
required:
|
||||
- purpose
|
||||
- product_phase
|
||||
@@ -2748,18 +2827,25 @@ virtual_separator:
|
||||
- stir_time
|
||||
- stir_speed
|
||||
- settling_time
|
||||
- vessel
|
||||
- volume
|
||||
- product_vessel
|
||||
- waste_vessel
|
||||
title: Separate_Goal
|
||||
type: object
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: Separate_Result
|
||||
type: object
|
||||
required:
|
||||
@@ -3149,6 +3235,180 @@ virtual_solenoid_valve:
|
||||
- valve_position
|
||||
- state
|
||||
type: object
|
||||
virtual_solid_dispenser:
|
||||
class:
|
||||
action_value_mappings:
|
||||
add_solid:
|
||||
feedback:
|
||||
current_status: status
|
||||
progress: progress
|
||||
goal:
|
||||
mass: mass
|
||||
mol: mol
|
||||
purpose: purpose
|
||||
reagent: reagent
|
||||
vessel: vessel
|
||||
goal_default:
|
||||
mass: ''
|
||||
mol: ''
|
||||
purpose: ''
|
||||
reagent: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
message: message
|
||||
return_info: return_info
|
||||
success: success
|
||||
schema:
|
||||
description: ROS Action AddSolid 的 JSON Schema
|
||||
properties:
|
||||
feedback:
|
||||
description: Action 反馈 - 执行过程中从服务器发送到客户端
|
||||
properties:
|
||||
current_status:
|
||||
type: string
|
||||
progress:
|
||||
type: number
|
||||
required:
|
||||
- current_status
|
||||
- progress
|
||||
title: AddSolid_Feedback
|
||||
type: object
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
mass:
|
||||
type: string
|
||||
mol:
|
||||
type: string
|
||||
purpose:
|
||||
type: string
|
||||
reagent:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- reagent
|
||||
- mass
|
||||
- mol
|
||||
- purpose
|
||||
title: AddSolid_Goal
|
||||
type: object
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: AddSolid_Result
|
||||
type: object
|
||||
required:
|
||||
- goal
|
||||
title: AddSolid
|
||||
type: object
|
||||
type: AddSolid
|
||||
auto-add_solid:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
mass: ''
|
||||
mol: ''
|
||||
purpose: ''
|
||||
reagent: ''
|
||||
vessel: main_reactor
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: add_solid的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-cleanup:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: cleanup的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-initialize:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: initialize的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser
|
||||
status_types:
|
||||
current_reagent: str
|
||||
dispensed_amount: float
|
||||
status: str
|
||||
total_operations: int
|
||||
type: python
|
||||
description: Virtual Solid Dispenser for Add Protocol Solid Reagents
|
||||
handles:
|
||||
- data_key: SolidIn
|
||||
data_source: handle
|
||||
data_type: resource
|
||||
description: 固体试剂进料口
|
||||
handler_key: SolidIn
|
||||
io_type: target
|
||||
label: SolidIn
|
||||
side: WEST
|
||||
- data_key: SolidOut
|
||||
data_source: executor
|
||||
data_type: resource
|
||||
description: 固体试剂出料口
|
||||
handler_key: SolidOut
|
||||
io_type: source
|
||||
label: SolidOut
|
||||
side: EAST
|
||||
icon: ''
|
||||
init_param_schema:
|
||||
config:
|
||||
properties:
|
||||
config:
|
||||
type: object
|
||||
device_id:
|
||||
type: string
|
||||
max_capacity:
|
||||
default: 100.0
|
||||
description: 最大加样容量 (g)
|
||||
type: number
|
||||
precision:
|
||||
default: 0.001
|
||||
description: 加样精度 (g)
|
||||
type: number
|
||||
required: []
|
||||
type: object
|
||||
data:
|
||||
properties:
|
||||
current_reagent:
|
||||
type: string
|
||||
dispensed_amount:
|
||||
type: number
|
||||
status:
|
||||
type: string
|
||||
total_operations:
|
||||
type: integer
|
||||
required:
|
||||
- status
|
||||
- current_reagent
|
||||
- dispensed_amount
|
||||
- total_operations
|
||||
type: object
|
||||
virtual_stirrer:
|
||||
class:
|
||||
action_value_mappings:
|
||||
@@ -3183,7 +3443,6 @@ virtual_stirrer:
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
|
||||
properties: {}
|
||||
required: []
|
||||
type: object
|
||||
@@ -3356,9 +3615,13 @@ virtual_stirrer:
|
||||
stir_speed: stir_speed
|
||||
stir_time: stir_time
|
||||
goal_default:
|
||||
event: ''
|
||||
settling_time: 0.0
|
||||
stir_speed: 0.0
|
||||
stir_time: 0.0
|
||||
time: ''
|
||||
time_spec: ''
|
||||
vessel: ''
|
||||
handles: []
|
||||
result:
|
||||
success: success
|
||||
@@ -3377,13 +3640,25 @@ virtual_stirrer:
|
||||
goal:
|
||||
description: Action 目标 - 从客户端发送到服务器
|
||||
properties:
|
||||
event:
|
||||
type: string
|
||||
settling_time:
|
||||
type: number
|
||||
stir_speed:
|
||||
type: number
|
||||
stir_time:
|
||||
type: number
|
||||
time:
|
||||
type: string
|
||||
time_spec:
|
||||
type: string
|
||||
vessel:
|
||||
type: string
|
||||
required:
|
||||
- vessel
|
||||
- time
|
||||
- event
|
||||
- time_spec
|
||||
- stir_time
|
||||
- stir_speed
|
||||
- settling_time
|
||||
@@ -3392,13 +3667,16 @@ virtual_stirrer:
|
||||
result:
|
||||
description: Action 结果 - 完成后从服务器发送到客户端
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
return_info:
|
||||
type: string
|
||||
success:
|
||||
type: boolean
|
||||
required:
|
||||
- return_info
|
||||
- success
|
||||
- message
|
||||
- return_info
|
||||
title: Stir_Result
|
||||
type: object
|
||||
required:
|
||||
@@ -4367,125 +4645,3 @@ virtual_vacuum_pump:
|
||||
required:
|
||||
- status
|
||||
type: object
|
||||
virtual_solid_dispenser:
|
||||
class:
|
||||
action_value_mappings:
|
||||
auto-cleanup:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: cleanup的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-initialize:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: initialize的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-add_solid:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
vessel: main_reactor
|
||||
reagent: ''
|
||||
mass: ''
|
||||
mol: ''
|
||||
purpose: ''
|
||||
handles: []
|
||||
result: {}
|
||||
schema:
|
||||
description: add_solid的参数schema
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
add_solid:
|
||||
feedback:
|
||||
current_status: status
|
||||
progress: progress
|
||||
goal:
|
||||
vessel: vessel
|
||||
reagent: reagent
|
||||
mass: mass
|
||||
mol: mol
|
||||
purpose: purpose
|
||||
goal_default:
|
||||
vessel: 'main_reactor'
|
||||
reagent: ''
|
||||
mass: ''
|
||||
mol: ''
|
||||
purpose: ''
|
||||
handles: []
|
||||
result:
|
||||
message: message
|
||||
success: success
|
||||
return_info: return_info
|
||||
schema:
|
||||
description: ROS Action AddSolid 的 JSON Schema
|
||||
type: object
|
||||
type: AddSolid
|
||||
module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser
|
||||
status_types:
|
||||
status: str
|
||||
current_reagent: str
|
||||
dispensed_amount: float
|
||||
total_operations: int
|
||||
type: python
|
||||
description: Virtual Solid Dispenser for Add Protocol Solid Reagents
|
||||
handles:
|
||||
- data_key: SolidIn
|
||||
data_source: handle
|
||||
data_type: resource
|
||||
description: 固体试剂进料口
|
||||
handler_key: SolidIn
|
||||
io_type: target
|
||||
label: SolidIn
|
||||
side: WEST
|
||||
- data_key: SolidOut
|
||||
data_source: executor
|
||||
data_type: resource
|
||||
description: 固体试剂出料口
|
||||
handler_key: SolidOut
|
||||
io_type: source
|
||||
label: SolidOut
|
||||
side: EAST
|
||||
icon: ''
|
||||
init_param_schema:
|
||||
config:
|
||||
properties:
|
||||
config:
|
||||
type: object
|
||||
device_id:
|
||||
type: string
|
||||
max_capacity:
|
||||
type: number
|
||||
default: 100.0
|
||||
description: 最大加样容量 (g)
|
||||
precision:
|
||||
type: number
|
||||
default: 0.001
|
||||
description: 加样精度 (g)
|
||||
required: []
|
||||
type: object
|
||||
data:
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
current_reagent:
|
||||
type: string
|
||||
dispensed_amount:
|
||||
type: number
|
||||
total_operations:
|
||||
type: integer
|
||||
required:
|
||||
- status
|
||||
- current_reagent
|
||||
- dispensed_amount
|
||||
- total_operations
|
||||
type: object
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -41,6 +41,7 @@ set(action_files
|
||||
"action/WashSolid.action"
|
||||
"action/Filter.action"
|
||||
"action/Add.action"
|
||||
"action/AddSolid.action"
|
||||
"action/Centrifuge.action"
|
||||
"action/Crystallize.action"
|
||||
"action/Purge.action"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
string from_vessel # 源容器的名称,即样品起始所在的容器(必需)
|
||||
string to_vessel # 目标容器的名称,分离后的样品要到达的容器(必需)
|
||||
string column # 所使用的柱子的名称(必需)
|
||||
string Rf # Rf值(可选)
|
||||
string rf # Rf值(可选)
|
||||
string pct1 # 第一种溶剂百分比(如 "40 %",可选)
|
||||
string pct2 # 第二种溶剂百分比(如 "50 %",可选)
|
||||
string solvent1 # 第一种溶剂名称(可选)
|
||||
|
||||
Reference in New Issue
Block a user