mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-14 13:14:39 +00:00
Compare commits
4 Commits
fa9b2a08f2
...
f5446c6480
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f5446c6480 | ||
|
|
a98d25c16d | ||
|
|
80b9589973 | ||
|
|
4d4bbcbae8 |
@@ -19,6 +19,7 @@ from unilabos.devices.workstation.bioyond_studio.config import (
|
||||
)
|
||||
from unilabos.devices.workstation.workstation_http_service import WorkstationHTTPService
|
||||
from unilabos.resources.bioyond.decks import BIOYOND_YB_Deck
|
||||
from unilabos.resources.graphio import resource_bioyond_to_plr
|
||||
from unilabos.utils.log import logger
|
||||
from unilabos.registry.registry import lab_registry
|
||||
|
||||
@@ -257,7 +258,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
||||
def auto_feeding4to3(
|
||||
self,
|
||||
# ★ 修改点:默认模板路径
|
||||
xlsx_path: Optional[str] = "/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx",
|
||||
xlsx_path: Optional[str] = "/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx",
|
||||
# ---------------- WH4 - 加样头面 (Z=1, 12个点位) ----------------
|
||||
WH4_x1_y1_z1_1_materialName: str = "", WH4_x1_y1_z1_1_quantity: float = 0.0,
|
||||
WH4_x2_y1_z1_2_materialName: str = "", WH4_x2_y1_z1_2_quantity: float = 0.0,
|
||||
@@ -394,10 +395,13 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
||||
order_code = response.get("data", {}).get("orderCode")
|
||||
if not order_code:
|
||||
logger.error("上料任务未返回有效 orderCode!")
|
||||
return response
|
||||
# 等待完成报送
|
||||
return {"api_response": response, "order_finish": None}
|
||||
# 等待完成报送
|
||||
result = self.wait_for_order_finish(order_code)
|
||||
return result
|
||||
return {
|
||||
"api_response": response,
|
||||
"order_finish": result
|
||||
}
|
||||
|
||||
|
||||
def auto_batch_outbound_from_xlsx(self, xlsx_path: str) -> Dict[str, Any]:
|
||||
@@ -477,7 +481,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
||||
- totalMass 自动计算为所有物料质量之和
|
||||
- createTime 缺失或为空时自动填充为当前日期(YYYY/M/D)
|
||||
"""
|
||||
default_path = Path("/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx")
|
||||
default_path = Path("/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx")
|
||||
path = Path(xlsx_path) if xlsx_path else default_path
|
||||
print(f"[create_orders] 使用 Excel 路径: {path}")
|
||||
if path != default_path:
|
||||
@@ -623,7 +627,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
||||
if not order_code:
|
||||
logger.error("上料任务未返回有效 orderCode!")
|
||||
return response
|
||||
# 等待完成报送
|
||||
# 等待完成报送
|
||||
result = self.wait_for_order_finish(order_code)
|
||||
return result
|
||||
|
||||
@@ -1165,137 +1169,94 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
||||
})
|
||||
return final_result
|
||||
|
||||
def _fetch_bioyond_materials(
|
||||
self,
|
||||
*,
|
||||
filter_keyword: Optional[str] = None,
|
||||
type_mode: int = 2,
|
||||
) -> List[Dict[str, Any]]:
|
||||
query: Dict[str, Any] = {
|
||||
"typeMode": type_mode,
|
||||
"includeDetail": True,
|
||||
}
|
||||
if filter_keyword:
|
||||
query["filter"] = filter_keyword
|
||||
|
||||
response = self._post_lims("/api/lims/storage/stock-material", query)
|
||||
raw_materials = response.get("data")
|
||||
if not isinstance(raw_materials, list):
|
||||
raw_materials = []
|
||||
|
||||
try:
|
||||
resource_bioyond_to_plr(
|
||||
raw_materials,
|
||||
type_mapping=self.bioyond_config.get("material_type_mappings", MATERIAL_TYPE_MAPPINGS),
|
||||
deck=self.deck,
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.warning(f"转换奔曜物料到 PLR 失败: {exc}", exc_info=True)
|
||||
|
||||
def run_bioyond_cell_workflow(config: Dict[str, Any]) -> BioyondCellWorkstation:
|
||||
"""按照统一配置执行奔曜配液与转运工作流。
|
||||
return raw_materials
|
||||
|
||||
Args:
|
||||
config: 统一的工作流配置。字段示例:
|
||||
{
|
||||
"lab_registry": {"setup": True},
|
||||
"deck": {"setup": True},
|
||||
"workstation": {"config": {...}},
|
||||
"update_push_ip": True,
|
||||
"samples": [
|
||||
{"name": "...", "board_type": "...", "bottle_type": "...", "location_code": "...", "warehouse_name": "..."}
|
||||
],
|
||||
"scheduler": {"start": True, "log": True},
|
||||
"operations": {
|
||||
"auto_feeding4to3": {"enabled": True},
|
||||
"create_orders": {"excel_path": "...", "log": True},
|
||||
"transfer_3_to_2_to_1": {"enabled": True, "log": True},
|
||||
"transfer_1_to_2": {"enabled": True, "log": True}
|
||||
},
|
||||
"keep_alive": False,
|
||||
"keep_alive_interval": 1
|
||||
}
|
||||
|
||||
Returns:
|
||||
执行完毕的 `BioyondCellWorkstation` 实例。
|
||||
"""
|
||||
|
||||
if config.get("lab_registry", {}).get("setup", True):
|
||||
lab_registry.setup()
|
||||
|
||||
deck_config = config.get("deck")
|
||||
if isinstance(deck_config, dict):
|
||||
deck = BIOYOND_YB_Deck(**deck_config)
|
||||
elif deck_config is None:
|
||||
deck = BIOYOND_YB_Deck(setup=True)
|
||||
else:
|
||||
deck = deck_config
|
||||
|
||||
workstation_kwargs = dict(config.get("workstation", {}))
|
||||
if "deck" not in workstation_kwargs:
|
||||
workstation_kwargs["deck"] = deck
|
||||
ws = BioyondCellWorkstation(**workstation_kwargs)
|
||||
|
||||
if config.get("update_push_ip", True):
|
||||
ws.update_push_ip()
|
||||
|
||||
for sample_cfg in config.get("samples", []):
|
||||
ws.create_sample(**sample_cfg)
|
||||
|
||||
scheduler_cfg = config.get("scheduler", {})
|
||||
if scheduler_cfg.get("start", True):
|
||||
result = ws.scheduler_start()
|
||||
if scheduler_cfg.get("log", True):
|
||||
logger.info(result)
|
||||
|
||||
operations_cfg = config.get("operations", {})
|
||||
|
||||
auto_feeding_cfg = operations_cfg.get("auto_feeding4to3", {})
|
||||
if auto_feeding_cfg.get("enabled", True):
|
||||
result = ws.auto_feeding4to3()
|
||||
if auto_feeding_cfg.get("log", True):
|
||||
logger.info(result)
|
||||
|
||||
create_orders_cfg = operations_cfg.get("create_orders")
|
||||
if create_orders_cfg:
|
||||
excel_path = create_orders_cfg.get("excel_path")
|
||||
if not excel_path:
|
||||
raise ValueError("create_orders 需要提供 excel_path。")
|
||||
result = ws.create_orders(Path(excel_path))
|
||||
if create_orders_cfg.get("log", True):
|
||||
logger.info(result)
|
||||
|
||||
transfer_321_cfg = operations_cfg.get("transfer_3_to_2_to_1", {})
|
||||
if transfer_321_cfg.get("enabled", True):
|
||||
result = ws.transfer_3_to_2_to_1()
|
||||
if transfer_321_cfg.get("log", True):
|
||||
logger.info(result)
|
||||
|
||||
transfer_12_cfg = operations_cfg.get("transfer_1_to_2", {})
|
||||
if transfer_12_cfg.get("enabled", True):
|
||||
result = ws.transfer_1_to_2()
|
||||
if transfer_12_cfg.get("log", True):
|
||||
logger.info(result)
|
||||
|
||||
if config.get("keep_alive", False):
|
||||
interval = config.get("keep_alive_interval", 1)
|
||||
while True:
|
||||
time.sleep(interval)
|
||||
|
||||
return ws
|
||||
def run_feeding_stage(self) -> Dict[str, List[Dict[str, Any]]]:
|
||||
self.create_sample(
|
||||
board_type="配液瓶(小)板",
|
||||
bottle_type="配液瓶(小)",
|
||||
location_code="B01",
|
||||
name="配液瓶",
|
||||
warehouse_name="手动堆栈"
|
||||
)
|
||||
self.create_sample(
|
||||
board_type="5ml分液瓶板",
|
||||
bottle_type="5ml分液瓶",
|
||||
location_code="B02",
|
||||
name="分液瓶",
|
||||
warehouse_name="手动堆栈"
|
||||
)
|
||||
self.scheduler_start()
|
||||
self.auto_feeding4to3(
|
||||
xlsx_path="/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx"
|
||||
)
|
||||
feeding_materials = self._fetch_bioyond_materials()
|
||||
return {"feeding_materials": feeding_materials}
|
||||
|
||||
def run_liquid_preparation_stage(
|
||||
self,
|
||||
feeding_materials: Optional[List[Dict[str, Any]]] = None,
|
||||
) -> Dict[str, List[Dict[str, Any]]]:
|
||||
result = self.create_orders(
|
||||
xlsx_path="/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx"
|
||||
)
|
||||
filter_keyword = self.bioyond_config.get("mixing_material_filter") or None
|
||||
materials = result.get("materials")
|
||||
if materials is None:
|
||||
materials = self._fetch_bioyond_materials(filter_keyword=filter_keyword)
|
||||
return {
|
||||
"feeding_materials": feeding_materials or [],
|
||||
"liquid_materials": materials,
|
||||
}
|
||||
|
||||
def run_transfer_stage(
|
||||
self,
|
||||
liquid_materials: Optional[List[Dict[str, Any]]] = None,
|
||||
) -> Dict[str, List[Dict[str, Any]]]:
|
||||
self.transfer_3_to_2_to_1(
|
||||
source_wh_id="3a19debc-84b4-0359-e2d4-b3beea49348b",
|
||||
source_x=1,
|
||||
source_y=1,
|
||||
source_z=1,
|
||||
)
|
||||
transfer_materials = self._fetch_bioyond_materials()
|
||||
return {
|
||||
"liquid_materials": liquid_materials or [],
|
||||
"transfer_materials": transfer_materials,
|
||||
}
|
||||
if __name__ == "__main__":
|
||||
workflow_config = {
|
||||
"deck": {"setup": True},
|
||||
"update_push_ip": True,
|
||||
"samples": [
|
||||
{
|
||||
"name": "配液瓶",
|
||||
"board_type": "配液瓶(小)板",
|
||||
"bottle_type": "配液瓶(小)",
|
||||
"location_code": "E01",
|
||||
},
|
||||
{
|
||||
"name": "分液瓶",
|
||||
"board_type": "5ml分液瓶板",
|
||||
"bottle_type": "5ml分液瓶",
|
||||
"location_code": "D01",
|
||||
},
|
||||
],
|
||||
"operations": {
|
||||
"auto_feeding4to3": {"enabled": True, "log": True},
|
||||
"create_orders": {
|
||||
"excel_path": "/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx",
|
||||
"log": True,
|
||||
},
|
||||
"transfer_3_to_2_to_1": {"enabled": True, "log": True},
|
||||
"transfer_1_to_2": {"enabled": True, "log": True},
|
||||
},
|
||||
"keep_alive": True,
|
||||
}
|
||||
run_bioyond_cell_workflow(workflow_config)
|
||||
|
||||
# 1. location code
|
||||
# 2. 实验文件
|
||||
# 3. material template file
|
||||
|
||||
deck = BIOYOND_YB_Deck(setup=True)
|
||||
w = BioyondCellWorkstation(deck=deck, address="172.16.28.102", port="502", debug_mode=False)
|
||||
feeding = w.run_feeding_stage()
|
||||
liquid = w.run_liquid_preparation_stage(feeding.get("feeding_materials"))
|
||||
transfer = w.run_transfer_stage(liquid.get("liquid_materials"))
|
||||
while True:
|
||||
time.sleep(1)
|
||||
# re=ws.scheduler_stop()
|
||||
|
||||
@@ -8,8 +8,8 @@ import os
|
||||
# BioyondCellWorkstation 默认配置(包含所有必需参数)
|
||||
API_CONFIG = {
|
||||
# API 连接配置
|
||||
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.1.143:44389"),#实机
|
||||
# "api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.7.149:44388"),# 仿真机
|
||||
# "api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.1.143:44389"),#实机
|
||||
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.11.219:44388"),# 仿真机
|
||||
"api_key": os.getenv("BIOYOND_API_KEY", "8A819E5C"),
|
||||
"timeout": int(os.getenv("BIOYOND_TIMEOUT", "30")),
|
||||
|
||||
@@ -17,7 +17,7 @@ API_CONFIG = {
|
||||
"report_token": os.getenv("BIOYOND_REPORT_TOKEN", "CHANGE_ME_TOKEN"),
|
||||
|
||||
# HTTP 服务配置
|
||||
"HTTP_host": os.getenv("BIOYOND_HTTP_HOST", "172.16.2.140"), # HTTP服务监听地址,监听计算机飞连ip地址
|
||||
"HTTP_host": os.getenv("BIOYOND_HTTP_HOST", "172.16.11.2"), # HTTP服务监听地址,监听计算机飞连ip地址
|
||||
"HTTP_port": int(os.getenv("BIOYOND_HTTP_PORT", "8080")),
|
||||
"debug_mode": False,# 调试模式
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import csv
|
||||
import inspect
|
||||
import json
|
||||
@@ -139,12 +138,11 @@ class CoinCellAssemblyWorkstation(WorkstationBase):
|
||||
time.sleep(2)
|
||||
if not modbus_client.client.is_socket_open():
|
||||
raise ValueError('modbus tcp connection failed')
|
||||
self.nodes = BaseClient.load_csv(os.path.join(os.path.dirname(__file__), 'coin_cell_assembly_a.csv'))
|
||||
self.nodes = BaseClient.load_csv(os.path.join(os.path.dirname(__file__), 'coin_cell_assembly_1105.csv'))
|
||||
self.client = modbus_client.register_node_list(self.nodes)
|
||||
else:
|
||||
print("测试模式,跳过连接")
|
||||
self.nodes, self.client = None, None
|
||||
|
||||
""" 工站的配置 """
|
||||
|
||||
self.success = False
|
||||
@@ -986,6 +984,31 @@ class CoinCellAssemblyWorkstation(WorkstationBase):
|
||||
#self.success = True
|
||||
#return self.success
|
||||
|
||||
def run_packaging_workflow(self, workflow_config: Dict[str, Any]) -> "CoinCellAssemblyWorkstation":
|
||||
config = workflow_config or {}
|
||||
|
||||
qiming_params = config.get("qiming") or {}
|
||||
if qiming_params:
|
||||
self.qiming_coin_cell_code(**qiming_params)
|
||||
|
||||
if config.get("init", True):
|
||||
self.func_pack_device_init()
|
||||
if config.get("auto", True):
|
||||
self.func_pack_device_auto()
|
||||
if config.get("start", True):
|
||||
self.func_pack_device_start()
|
||||
|
||||
packaging_config = config.get("packaging") or {}
|
||||
bottle_num = packaging_config.get("bottle_num")
|
||||
if bottle_num is not None:
|
||||
self.func_pack_send_bottle_num(bottle_num)
|
||||
|
||||
allpack_params = packaging_config.get("command") or {}
|
||||
if allpack_params:
|
||||
self.func_allpack_cmd(**allpack_params)
|
||||
|
||||
return self
|
||||
|
||||
def fun_wuliao_test(self) -> bool:
|
||||
#找到data_init中构建的2个物料盘
|
||||
liaopan3 = self.deck.get_resource("\u7535\u6c60\u6599\u76d8")
|
||||
@@ -1199,96 +1222,34 @@ class CoinCellAssemblyWorkstation(WorkstationBase):
|
||||
"""移液枪头库存 (数量, INT16)"""
|
||||
inventory, read_err = self.client.register_node_list(self.nodes).use_node('REG_DATA_TIPS_INVENTORY').read(1)
|
||||
return inventory
|
||||
|
||||
|
||||
'''
|
||||
|
||||
def run_coin_cell_packaging_workflow(config: Dict[str, Any]) -> CoinCellAssemblyWorkstation:
|
||||
"""根据统一配置顺序执行扣电池装配工作流。
|
||||
|
||||
Args:
|
||||
config: 统一的工作流配置。字段示例:
|
||||
{
|
||||
"deck": {"setup": True, "name": "coin_cell_deck"},
|
||||
"workstation": {"address": "...", "port": "...", "debug_mode": False},
|
||||
"qiming": {...},
|
||||
"init": True,
|
||||
"auto": True,
|
||||
"start": True,
|
||||
"packaging": {
|
||||
"bottle_num": 16,
|
||||
"command": {...}
|
||||
}
|
||||
}
|
||||
|
||||
Returns:
|
||||
执行完毕的 `CoinCellAssemblyWorkstation` 实例。
|
||||
"""
|
||||
|
||||
deck_config = config.get("deck")
|
||||
if isinstance(deck_config, Deck):
|
||||
deck = deck_config
|
||||
elif isinstance(deck_config, dict):
|
||||
deck = CoincellDeck(**deck_config)
|
||||
elif deck_config is None:
|
||||
deck = CoincellDeck(setup=True, name="coin_cell_deck")
|
||||
else:
|
||||
raise ValueError("deck 配置需为 Deck 实例或 dict。")
|
||||
|
||||
workstation_config = dict(config.get("workstation", {}))
|
||||
workstation_config.setdefault("deck", deck)
|
||||
workstation = CoinCellAssemblyWorkstation(**workstation_config)
|
||||
|
||||
qiming_params = config.get("qiming", {})
|
||||
if qiming_params:
|
||||
workstation.qiming_coin_cell_code(**qiming_params)
|
||||
|
||||
if config.get("init", True):
|
||||
workstation.func_pack_device_init()
|
||||
if config.get("auto", True):
|
||||
workstation.func_pack_device_auto()
|
||||
if config.get("start", True):
|
||||
workstation.func_pack_device_start()
|
||||
|
||||
packaging_config = config.get("packaging", {})
|
||||
bottle_num = packaging_config.get("bottle_num")
|
||||
if bottle_num is not None:
|
||||
workstation.func_pack_send_bottle_num(bottle_num)
|
||||
|
||||
allpack_params = packaging_config.get("command", {})
|
||||
if allpack_params:
|
||||
workstation.func_allpack_cmd(**allpack_params)
|
||||
|
||||
return workstation
|
||||
def run_coin_cell_assembly_workflow(self):
|
||||
self.qiming_coin_cell_code(
|
||||
fujipian_panshu=1,
|
||||
fujipian_juzhendianwei=0,
|
||||
gemopanshu=0,
|
||||
gemo_juzhendianwei=0,
|
||||
lvbodian=True,
|
||||
battery_pressure_mode=True,
|
||||
battery_pressure=4200,
|
||||
battery_clean_ignore=False,
|
||||
)
|
||||
self.func_pack_device_init()
|
||||
self.func_pack_device_auto()
|
||||
self.func_pack_device_start()
|
||||
self.func_pack_send_bottle_num(1)
|
||||
self.func_allpack_cmd(elec_num = 1, elec_use_num = 1, elec_vol=50, assembly_type=7, assembly_pressure=4200, file_path="/Users/sml/work")
|
||||
self.func_pack_send_finished_cmd()
|
||||
self.func_pack_device_stop()
|
||||
# 物料转换
|
||||
return self
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
workflow_config = {
|
||||
"deck": {"setup": True, "name": "coin_cell_deck"},
|
||||
"workstation": {
|
||||
"address": "172.16.28.102",
|
||||
"port": "502",
|
||||
"debug_mode": False,
|
||||
},
|
||||
"qiming": {
|
||||
"fujipian_panshu": 1,
|
||||
"fujipian_juzhendianwei": 2,
|
||||
"gemopanshu": 3,
|
||||
"gemo_juzhendianwei": 4,
|
||||
"lvbodian": False,
|
||||
"battery_pressure_mode": False,
|
||||
"battery_pressure": 4200,
|
||||
"battery_clean_ignore": False,
|
||||
},
|
||||
"packaging": {
|
||||
"bottle_num": 16,
|
||||
"command": {
|
||||
"elec_num": 16,
|
||||
"elec_use_num": 16,
|
||||
"elec_vol": 50,
|
||||
"assembly_type": 7,
|
||||
"assembly_pressure": 4200,
|
||||
"file_path": "/Users/calvincao/Desktop/work/Uni-Lab-OS-hhm",
|
||||
},
|
||||
},
|
||||
}
|
||||
run_coin_cell_packaging_workflow(workflow_config)
|
||||
deck = CoincellDeck(setup=True, name="coin_cell_deck")
|
||||
w = CoinCellAssemblyWorkstation(deck=deck, address="172.16.28.102", port="502", debug_mode=False)
|
||||
w.run_coin_cell_assembly_workflow()
|
||||
|
||||
|
||||
@@ -821,6 +821,126 @@ bioyond_cell:
|
||||
title: resource_tree_transfer参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_feeding_stage:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles:
|
||||
input: []
|
||||
output:
|
||||
- data_key: feeding_materials
|
||||
data_source: executor
|
||||
data_type: resource
|
||||
handler_key: feeding_materials
|
||||
label: Feeding Materials
|
||||
placeholder_keys: {}
|
||||
result:
|
||||
properties:
|
||||
feeding_materials:
|
||||
type: array
|
||||
required:
|
||||
- feeding_materials
|
||||
type: object
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties: {}
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: run_feeding_stage参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_liquid_preparation_stage:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles:
|
||||
input:
|
||||
- data_key: feeding_materials
|
||||
data_source: handle
|
||||
data_type: resource
|
||||
handler_key: feeding_materials
|
||||
label: Feeding Materials
|
||||
output:
|
||||
- data_key: liquid_materials
|
||||
data_source: executor
|
||||
data_type: resource
|
||||
handler_key: liquid_materials
|
||||
label: Liquid Materials
|
||||
placeholder_keys: {}
|
||||
result:
|
||||
properties:
|
||||
feeding_materials:
|
||||
type: array
|
||||
liquid_materials:
|
||||
type: array
|
||||
required:
|
||||
- liquid_materials
|
||||
type: object
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
feeding_materials:
|
||||
type: array
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: run_liquid_preparation_stage参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_transfer_stage:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles:
|
||||
input:
|
||||
- data_key: liquid_materials
|
||||
data_source: handle
|
||||
data_type: resource
|
||||
handler_key: liquid_materials
|
||||
label: Liquid Materials
|
||||
output:
|
||||
- data_key: transfer_materials
|
||||
data_source: executor
|
||||
data_type: resource
|
||||
handler_key: transfer_materials
|
||||
label: Transfer Materials
|
||||
placeholder_keys: {}
|
||||
result:
|
||||
properties:
|
||||
liquid_materials:
|
||||
type: array
|
||||
transfer_materials:
|
||||
type: array
|
||||
required:
|
||||
- transfer_materials
|
||||
type: object
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
liquid_materials:
|
||||
type: array
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: run_transfer_stage参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-scheduler_continue:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
@@ -1112,9 +1232,9 @@ bioyond_cell:
|
||||
device_id: String
|
||||
type: python
|
||||
config_info: []
|
||||
description: ''
|
||||
description: 配液工站
|
||||
handles: []
|
||||
icon: benyao2.webp
|
||||
icon: ''
|
||||
init_param_schema:
|
||||
config:
|
||||
properties:
|
||||
|
||||
@@ -79,7 +79,7 @@ coincellassemblyworkstation_device:
|
||||
elec_num: null
|
||||
elec_use_num: null
|
||||
elec_vol: 50
|
||||
file_path: C:\Users\67484\Desktop
|
||||
file_path: /Users/sml/work
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
@@ -103,7 +103,7 @@ coincellassemblyworkstation_device:
|
||||
default: 50
|
||||
type: integer
|
||||
file_path:
|
||||
default: C:\Users\67484\Desktop
|
||||
default: /Users/sml/work
|
||||
type: string
|
||||
required:
|
||||
- elec_num
|
||||
@@ -332,7 +332,7 @@ coincellassemblyworkstation_device:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
file_path: D:\coin_cell_data
|
||||
file_path: /Users/sml/work
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
@@ -343,7 +343,7 @@ coincellassemblyworkstation_device:
|
||||
goal:
|
||||
properties:
|
||||
file_path:
|
||||
default: D:\coin_cell_data
|
||||
default: /Users/sml/work
|
||||
type: string
|
||||
required: []
|
||||
type: object
|
||||
@@ -477,6 +477,52 @@ coincellassemblyworkstation_device:
|
||||
title: qiming_coin_cell_code参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_coin_cell_assembly_workflow:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties: {}
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: run_coin_cell_assembly_workflow参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_packaging_workflow:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
workflow_config: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
workflow_config:
|
||||
type: object
|
||||
required:
|
||||
- workflow_config
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: run_packaging_workflow参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
module: unilabos.devices.workstation.coin_cell_assembly.coin_cell_assembly:CoinCellAssemblyWorkstation
|
||||
status_types:
|
||||
data_assembly_coin_cell_num: int
|
||||
@@ -500,20 +546,22 @@ coincellassemblyworkstation_device:
|
||||
sys_status: str
|
||||
type: python
|
||||
config_info: []
|
||||
description: ''
|
||||
description: 扣电工站
|
||||
handles: []
|
||||
icon: koudian.webp
|
||||
icon: ''
|
||||
init_param_schema:
|
||||
config:
|
||||
properties:
|
||||
address:
|
||||
default: 172.21.32.111
|
||||
default: 172.16.28.102
|
||||
type: string
|
||||
config:
|
||||
type: object
|
||||
debug_mode:
|
||||
default: false
|
||||
type: boolean
|
||||
deck:
|
||||
type: object
|
||||
type: string
|
||||
port:
|
||||
default: '502'
|
||||
type: string
|
||||
|
||||
@@ -654,6 +654,31 @@ liquid_handler:
|
||||
title: iter_tips参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: string
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-set_group:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
@@ -6170,6 +6195,31 @@ liquid_handler.prcxi:
|
||||
title: move_to参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-run_protocol:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
|
||||
@@ -5,6 +5,73 @@ neware_battery_test_system:
|
||||
- battery_test
|
||||
class:
|
||||
action_value_mappings:
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: string
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-print_status_summary:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties: {}
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: print_status_summary参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-test_connection:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default: {}
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties: {}
|
||||
required: []
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: test_connection参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
debug_resource_names:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
@@ -320,28 +387,24 @@ neware_battery_test_system:
|
||||
config:
|
||||
properties:
|
||||
devtype:
|
||||
default: '27'
|
||||
type: string
|
||||
ip:
|
||||
default: 127.0.0.1
|
||||
type: string
|
||||
machine_id:
|
||||
default: 1
|
||||
type: integer
|
||||
port:
|
||||
default: 502
|
||||
type: integer
|
||||
size_x:
|
||||
default: 50.0
|
||||
default: 50
|
||||
type: number
|
||||
size_y:
|
||||
default: 50.0
|
||||
default: 50
|
||||
type: number
|
||||
size_z:
|
||||
default: 20.0
|
||||
default: 20
|
||||
type: number
|
||||
timeout:
|
||||
default: 20
|
||||
type: integer
|
||||
required: []
|
||||
type: object
|
||||
|
||||
@@ -45,6 +45,31 @@ virtual_centrifuge:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
centrifuge:
|
||||
feedback:
|
||||
current_speed: current_speed
|
||||
@@ -335,6 +360,31 @@ virtual_column:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
run_column:
|
||||
feedback:
|
||||
current_status: current_status
|
||||
@@ -732,6 +782,31 @@ virtual_filter:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
filter:
|
||||
feedback:
|
||||
current_status: current_status
|
||||
@@ -1358,6 +1433,31 @@ virtual_heatchill:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
heat_chill:
|
||||
feedback:
|
||||
status: status
|
||||
@@ -2358,6 +2458,31 @@ virtual_rotavap:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
evaporate:
|
||||
feedback:
|
||||
current_device: current_device
|
||||
@@ -2690,6 +2815,31 @@ virtual_separator:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
separate:
|
||||
feedback:
|
||||
current_status: status
|
||||
@@ -3600,6 +3750,31 @@ virtual_solenoid_valve:
|
||||
title: is_closed参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-reset:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
@@ -4177,6 +4352,31 @@ virtual_solid_dispenser:
|
||||
title: parse_mol_string参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser
|
||||
status_types:
|
||||
current_reagent: str
|
||||
@@ -4278,6 +4478,31 @@ virtual_stirrer:
|
||||
title: initialize参数
|
||||
type: object
|
||||
type: UniLabJsonCommandAsync
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
start_stir:
|
||||
feedback:
|
||||
status: status
|
||||
@@ -4995,6 +5220,31 @@ virtual_transfer_pump:
|
||||
title: is_full参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-post_init:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
goal_default:
|
||||
ros_node: null
|
||||
handles: {}
|
||||
placeholder_keys: {}
|
||||
result: {}
|
||||
schema:
|
||||
description: ''
|
||||
properties:
|
||||
feedback: {}
|
||||
goal:
|
||||
properties:
|
||||
ros_node:
|
||||
type: object
|
||||
required:
|
||||
- ros_node
|
||||
type: object
|
||||
result: {}
|
||||
required:
|
||||
- goal
|
||||
title: post_init参数
|
||||
type: object
|
||||
type: UniLabJsonCommand
|
||||
auto-pull_plunger:
|
||||
feedback: {}
|
||||
goal: {}
|
||||
|
||||
@@ -1,16 +1,3 @@
|
||||
YB_qiang_tou:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_qiang_tou
|
||||
type: pylabrobot
|
||||
description: YB_qiang_tou
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_20ml_fenyeping:
|
||||
category:
|
||||
- yb3
|
||||
@@ -37,6 +24,19 @@ YB_5ml_fenyeping:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_jia_yang_tou_da:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da
|
||||
type: pylabrobot
|
||||
description: YB_jia_yang_tou_da
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_pei_ye_da_Bottle:
|
||||
category:
|
||||
- yb3
|
||||
@@ -63,14 +63,14 @@ YB_pei_ye_xiao_Bottle:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_jia_yang_tou_da:
|
||||
YB_qiang_tou:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_qiang_tou
|
||||
type: pylabrobot
|
||||
description: YB_jia_yang_tou_da
|
||||
description: YB_qiang_tou
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
@@ -80,6 +80,7 @@ YB_ye_Bottle:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
- YB_bottle
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_ye_Bottle
|
||||
type: pylabrobot
|
||||
@@ -88,4 +89,4 @@ YB_ye_Bottle:
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
@@ -11,71 +11,6 @@ YB_100ml_yeti:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
# YB_1BottleCarrier:
|
||||
# category:
|
||||
# - yb3
|
||||
# - YB_bottle_carriers
|
||||
# class:
|
||||
# module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1BottleCarrier
|
||||
# type: pylabrobot
|
||||
# description: YB_1BottleCarrier
|
||||
# handles: []
|
||||
# icon: ''
|
||||
# init_param_schema: {}
|
||||
# registry_type: resource
|
||||
# version: 1.0.0
|
||||
YB_gaonianye:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_gaonianye
|
||||
type: pylabrobot
|
||||
description: YB_gaonianye
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_peiyepingdaban:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingdaban
|
||||
type: pylabrobot
|
||||
description: YB_peiyepingdaban
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_6StockCarrier:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6StockCarrier
|
||||
type: pylabrobot
|
||||
description: YB_6StockCarrier
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_6VialCarrier:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6VialCarrier
|
||||
type: pylabrobot
|
||||
description: YB_6VialCarrier
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_20ml_fenyepingban:
|
||||
category:
|
||||
- yb3
|
||||
@@ -102,40 +37,27 @@ YB_5ml_fenyepingban:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_peiyepingxiaoban:
|
||||
YB_6StockCarrier:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingxiaoban
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6StockCarrier
|
||||
type: pylabrobot
|
||||
description: YB_peiyepingxiaoban
|
||||
description: YB_6StockCarrier
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_shi_pei_qi_kuai:
|
||||
YB_6VialCarrier:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_shi_pei_qi_kuai
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6VialCarrier
|
||||
type: pylabrobot
|
||||
description: YB_shi_pei_qi_kuai
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_qiang_tou_he:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_qiang_tou_he
|
||||
type: pylabrobot
|
||||
description: YB_qiang_tou_he
|
||||
description: YB_6VialCarrier
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
@@ -154,19 +76,19 @@ YB_gao_nian_ye_Bottle:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
# YB_jia_yang_tou_da:
|
||||
# category:
|
||||
# - yb3
|
||||
# - YB_bottle_carriers
|
||||
# class:
|
||||
# module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da
|
||||
# type: pylabrobot
|
||||
# description: YB_jia_yang_tou_da
|
||||
# handles: []
|
||||
# icon: ''
|
||||
# init_param_schema: {}
|
||||
# registry_type: resource
|
||||
# version: 1.0.0
|
||||
YB_gaonianye:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_gaonianye
|
||||
type: pylabrobot
|
||||
description: YB_gaonianye
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_jia_yang_tou_da_Carrier:
|
||||
category:
|
||||
- yb3
|
||||
@@ -180,14 +102,53 @@ YB_jia_yang_tou_da_Carrier:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_ye_100ml_Bottle:
|
||||
YB_peiyepingdaban:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_ye_100ml_Bottle
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingdaban
|
||||
type: pylabrobot
|
||||
description: YB_ye_100ml_Bottle
|
||||
description: YB_peiyepingdaban
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_peiyepingxiaoban:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingxiaoban
|
||||
type: pylabrobot
|
||||
description: YB_peiyepingxiaoban
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_qiang_tou_he:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_qiang_tou_he
|
||||
type: pylabrobot
|
||||
description: YB_qiang_tou_he
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_shi_pei_qi_kuai:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_shi_pei_qi_kuai
|
||||
type: pylabrobot
|
||||
description: YB_shi_pei_qi_kuai
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
@@ -206,3 +167,16 @@ YB_ye:
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
YB_ye_100ml_Bottle:
|
||||
category:
|
||||
- yb3
|
||||
- YB_bottle_carriers
|
||||
class:
|
||||
module: unilabos.resources.bioyond.YB_bottles:YB_ye_100ml_Bottle
|
||||
type: pylabrobot
|
||||
description: YB_ye_100ml_Bottle
|
||||
handles: []
|
||||
icon: ''
|
||||
init_param_schema: {}
|
||||
registry_type: resource
|
||||
version: 1.0.0
|
||||
|
||||
Reference in New Issue
Block a user