mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-18 21:41:16 +00:00
Merge branch 'workstation_dev_YB3' into fix/yb3-material-names-and-model
This commit is contained in:
38
new_cellconfig3c.json
Normal file
38
new_cellconfig3c.json
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "bioyond_cell_workstation",
|
||||||
|
"name": "配液分液工站",
|
||||||
|
"children": [
|
||||||
|
],
|
||||||
|
"parent": null,
|
||||||
|
"type": "device",
|
||||||
|
"class": "bioyond_cell",
|
||||||
|
"config": {
|
||||||
|
"protocol_type": [],
|
||||||
|
"station_resource": {}
|
||||||
|
},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "BatteryStation",
|
||||||
|
"name": "扣电工作站",
|
||||||
|
"children": [
|
||||||
|
"coin_cell_deck"
|
||||||
|
],
|
||||||
|
"parent": null,
|
||||||
|
"type": "device",
|
||||||
|
"class": "coincellassemblyworkstation_device",
|
||||||
|
"position": {
|
||||||
|
"x": 600,
|
||||||
|
"y": 400,
|
||||||
|
"z": 0
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"debug_mode": false,
|
||||||
|
"protocol_type": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": []
|
||||||
|
}
|
||||||
99
test/resources/test copy.json
Normal file
99
test/resources/test copy.json
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
"typeId": "3a190c8b-3284-af78-d29f-9a69463ad047",
|
||||||
|
"code": "",
|
||||||
|
"barCode": "",
|
||||||
|
"name": "test",
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}",
|
||||||
|
"quantity": "",
|
||||||
|
"details": [
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)11",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)21",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 2,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)12",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 1,
|
||||||
|
"y": 2,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)22",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 2,
|
||||||
|
"y": 2,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)13",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 1,
|
||||||
|
"y": 3,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)23",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 2,
|
||||||
|
"y": 3,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)14",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 1,
|
||||||
|
"y": 4,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb",
|
||||||
|
"code": "",
|
||||||
|
"name": "配液瓶(小)24",
|
||||||
|
"quantity": "1",
|
||||||
|
"x": 2,
|
||||||
|
"y": 4,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "",
|
||||||
|
"parameters": "{}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
148
test/resources/test.json
Normal file
148
test/resources/test.json
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fb-d7dc-9e96-7a3ad6e50219",
|
||||||
|
"typeName": "配液瓶(小)板",
|
||||||
|
"code": "0001-00093",
|
||||||
|
"barCode": "",
|
||||||
|
"name": "test",
|
||||||
|
"quantity": 2.0,
|
||||||
|
"lockQuantity": 0.0,
|
||||||
|
"unit": "块",
|
||||||
|
"status": 1,
|
||||||
|
"isUse": false,
|
||||||
|
"locations": [
|
||||||
|
{
|
||||||
|
"id": "3a19deae-2c7a-36f5-5e41-02c5b66feaea",
|
||||||
|
"whid": "3a19deae-2c79-05a3-9c76-8e6760424841",
|
||||||
|
"whName": "手动堆栈",
|
||||||
|
"code": "1",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1,
|
||||||
|
"quantity": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-1daa-71fa-146cb1ccb930",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-4f38-4c48-68486c391c42",
|
||||||
|
"code": "0001-00093 - 05",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 1,
|
||||||
|
"y": 3,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-3659-ea61-cd587da9e131",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-018f-93e5-c49343d37758",
|
||||||
|
"code": "0001-00093 - 08",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 2,
|
||||||
|
"y": 4,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-3f94-de83-979d2646e313",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-9987-c0ef-4b7cbad49e6b",
|
||||||
|
"code": "0001-00093 - 01",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 1,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-8c35-6b25-913b11dbaf4e",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-9a83-865b-0c26ea5e8cc4",
|
||||||
|
"code": "0001-00093 - 03",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 1,
|
||||||
|
"y": 2,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-b41f-e968-64953bfddccd",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-daf7-9d64-e5ec8d3ae0e2",
|
||||||
|
"code": "0001-00093 - 07",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 1,
|
||||||
|
"y": 4,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-c20f-c26e-b1bb2cdc3bca",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-673b-ac83-aaaf71287f1f",
|
||||||
|
"code": "0001-00093 - 06",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 2,
|
||||||
|
"y": 3,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-cf21-059c-fde361d82b6f",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-25b1-e736-6b0d8dac0fae",
|
||||||
|
"code": "0001-00093 - 02",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 2,
|
||||||
|
"y": 1,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3a1d4c14-a9fc-d732-2b93-9b2bd2bf581b",
|
||||||
|
"detailMaterialId": "3a1d4c14-a9fc-7f5d-b6b6-8bcb2e15f320",
|
||||||
|
"code": "0001-00093 - 04",
|
||||||
|
"name": "配液瓶(小)",
|
||||||
|
"quantity": "1",
|
||||||
|
"lockQuantity": "0",
|
||||||
|
"unit": "个",
|
||||||
|
"x": 2,
|
||||||
|
"y": 2,
|
||||||
|
"z": 1,
|
||||||
|
"associateId": null,
|
||||||
|
"typeName": "配液瓶(小)",
|
||||||
|
"typeId": "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -9,6 +9,7 @@ from unilabos.ros.nodes.resource_tracker import ResourceTreeSet
|
|||||||
from unilabos.registry.registry import lab_registry
|
from unilabos.registry.registry import lab_registry
|
||||||
|
|
||||||
from unilabos.resources.bioyond.decks import BIOYOND_PolymerReactionStation_Deck
|
from unilabos.resources.bioyond.decks import BIOYOND_PolymerReactionStation_Deck
|
||||||
|
from unilabos.resources.bioyond.decks import YB_Deck
|
||||||
|
|
||||||
lab_registry.setup()
|
lab_registry.setup()
|
||||||
|
|
||||||
@@ -16,6 +17,8 @@ lab_registry.setup()
|
|||||||
type_mapping = {
|
type_mapping = {
|
||||||
"加样头(大)": ("YB_jia_yang_tou_da_1X1_carrier", "3a190ca0-b2f6-9aeb-8067-547e72c11469"),
|
"加样头(大)": ("YB_jia_yang_tou_da_1X1_carrier", "3a190ca0-b2f6-9aeb-8067-547e72c11469"),
|
||||||
"液": ("YB_1BottleCarrier", "3a190ca1-2add-2b23-f8e1-bbd348b7f790"),
|
"液": ("YB_1BottleCarrier", "3a190ca1-2add-2b23-f8e1-bbd348b7f790"),
|
||||||
|
"配液瓶(小)板": ("YB_6x_SmallSolutionBottleCarrier", "3a190c8b-3284-af78-d29f-9a69463ad047"),
|
||||||
|
"配液瓶(小)": ("YB_pei_ye_xiao_Bottler", "3a190c8c-fe8f-bf48-0dc3-97afc7f508eb"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -56,10 +59,10 @@ def bioyond_materials_liquidhandling_2() -> list[dict]:
|
|||||||
def test_resourcetreeset_from_plr() -> list[dict]:
|
def test_resourcetreeset_from_plr() -> list[dict]:
|
||||||
# 直接加载 bioyond_materials_reaction.json 文件
|
# 直接加载 bioyond_materials_reaction.json 文件
|
||||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
json_path = os.path.join(current_dir, "YB_materials_info.json")
|
json_path = os.path.join(current_dir, "test.json")
|
||||||
with open(json_path, "r", encoding="utf-8") as f:
|
with open(json_path, "r", encoding="utf-8") as f:
|
||||||
materials = json.load(f)
|
materials = json.load(f)
|
||||||
deck = BIOYOND_PolymerReactionStation_Deck("test_deck")
|
deck = YB_Deck("test_deck")
|
||||||
output = resource_bioyond_to_plr(materials, type_mapping=type_mapping, deck=deck)
|
output = resource_bioyond_to_plr(materials, type_mapping=type_mapping, deck=deck)
|
||||||
print(output)
|
print(output)
|
||||||
# print(deck.summary())
|
# print(deck.summary())
|
||||||
|
|||||||
Binary file not shown.
@@ -112,7 +112,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
|
|
||||||
return {"status": "received"}
|
return {"status": "received"}
|
||||||
|
|
||||||
def wait_for_order_finish(self, order_code: str, timeout: int = 1800) -> Dict[str, Any]:
|
def wait_for_order_finish(self, order_code: str, timeout: int = 36000) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
等待指定 orderCode 的 /report/order_finish 报送。
|
等待指定 orderCode 的 /report/order_finish 报送。
|
||||||
Args:
|
Args:
|
||||||
@@ -253,7 +253,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
def auto_feeding4to3(
|
def auto_feeding4to3(
|
||||||
self,
|
self,
|
||||||
# ★ 修改点:默认模板路径
|
# ★ 修改点:默认模板路径
|
||||||
xlsx_path: Optional[str] = "unilabos\\devices\\workstation\\bioyond_studio\\bioyond_cell\\样品导入模板.xlsx",
|
xlsx_path: Optional[str] = "C:/ML/GitHub/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx",
|
||||||
# ---------------- WH4 - 加样头面 (Z=1, 12个点位) ----------------
|
# ---------------- WH4 - 加样头面 (Z=1, 12个点位) ----------------
|
||||||
WH4_x1_y1_z1_1_materialName: str = "", WH4_x1_y1_z1_1_quantity: float = 0.0,
|
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,
|
WH4_x2_y1_z1_2_materialName: str = "", WH4_x2_y1_z1_2_quantity: float = 0.0,
|
||||||
@@ -393,72 +393,6 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 3.30 自动化上料(老版本)
|
|
||||||
def auto_feeding4to3_from_xlsx(self, xlsx_path: str) -> Dict[str, Any]:
|
|
||||||
"""
|
|
||||||
根据固定模板解析 Excel:
|
|
||||||
- 四号手套箱加样头面 (2-13行, 3-7列)
|
|
||||||
- 四号手套箱原液瓶面 (15-23行, 3-9列)
|
|
||||||
- 三号手套箱人工堆栈 (26-40行, 3-7列)
|
|
||||||
"""
|
|
||||||
path = Path(xlsx_path)
|
|
||||||
if not path.exists():
|
|
||||||
raise FileNotFoundError(f"未找到 Excel 文件:{path}")
|
|
||||||
|
|
||||||
try:
|
|
||||||
df = pd.read_excel(path, sheet_name=0, header=None, engine="openpyxl")
|
|
||||||
except Exception as e:
|
|
||||||
raise RuntimeError(f"读取 Excel 失败:{e}")
|
|
||||||
|
|
||||||
items: List[Dict[str, Any]] = []
|
|
||||||
|
|
||||||
# 四号手套箱 - 加样头面(2-13行, 3-7列)
|
|
||||||
for _, row in df.iloc[1:13, 2:7].iterrows():
|
|
||||||
item = {
|
|
||||||
"sourceWHName": "四号手套箱堆栈",
|
|
||||||
"posX": int(row[2]),
|
|
||||||
"posY": int(row[3]),
|
|
||||||
"posZ": int(row[4]),
|
|
||||||
"materialName": str(row[5]).strip() if pd.notna(row[5]) else "",
|
|
||||||
"quantity": float(row[6]) if pd.notna(row[6]) else 0.0,
|
|
||||||
}
|
|
||||||
if item["materialName"]:
|
|
||||||
items.append(item)
|
|
||||||
|
|
||||||
# 四号手套箱 - 原液瓶面(15-23行, 3-9列)
|
|
||||||
for _, row in df.iloc[14:23, 2:9].iterrows():
|
|
||||||
item = {
|
|
||||||
"sourceWHName": "四号手套箱堆栈",
|
|
||||||
"posX": int(row[2]),
|
|
||||||
"posY": int(row[3]),
|
|
||||||
"posZ": int(row[4]),
|
|
||||||
"materialName": str(row[5]).strip() if pd.notna(row[5]) else "",
|
|
||||||
"quantity": float(row[6]) if pd.notna(row[6]) else 0.0,
|
|
||||||
"materialType": str(row[7]).strip() if pd.notna(row[7]) else "",
|
|
||||||
"targetWH": str(row[8]).strip() if pd.notna(row[8]) else "",
|
|
||||||
}
|
|
||||||
if item["materialName"]:
|
|
||||||
items.append(item)
|
|
||||||
|
|
||||||
# 三号手套箱人工堆栈(26-40行, 3-7列)
|
|
||||||
for _, row in df.iloc[25:40, 2:7].iterrows():
|
|
||||||
item = {
|
|
||||||
"sourceWHName": "三号手套箱人工堆栈",
|
|
||||||
"posX": int(row[2]),
|
|
||||||
"posY": int(row[3]),
|
|
||||||
"posZ": int(row[4]),
|
|
||||||
"materialType": str(row[5]).strip() if pd.notna(row[5]) else "",
|
|
||||||
"materialId": str(row[6]).strip() if pd.notna(row[6]) else "",
|
|
||||||
"quantity": 1 # 默认数量1
|
|
||||||
}
|
|
||||||
if item["materialId"] or item["materialType"]:
|
|
||||||
items.append(item)
|
|
||||||
|
|
||||||
response = self._post_lims("/api/lims/order/auto-feeding4to3", items)
|
|
||||||
self._wait_for_response_orders(response, "auto_feeding4to3_from_xlsx")
|
|
||||||
return response
|
|
||||||
|
|
||||||
def auto_batch_outbound_from_xlsx(self, xlsx_path: str) -> Dict[str, Any]:
|
def auto_batch_outbound_from_xlsx(self, xlsx_path: str) -> Dict[str, Any]:
|
||||||
"""
|
"""
|
||||||
3.31 自动化下料(Excel -> JSON -> POST /api/lims/storage/auto-batch-out-bound)
|
3.31 自动化下料(Excel -> JSON -> POST /api/lims/storage/auto-batch-out-bound)
|
||||||
@@ -523,7 +457,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
})
|
})
|
||||||
|
|
||||||
response = self._post_lims("/api/lims/storage/auto-batch-out-bound", items)
|
response = self._post_lims("/api/lims/storage/auto-batch-out-bound", items)
|
||||||
self._wait_for_response_orders(response, "auto_batch_outbound_from_xlsx")
|
self.wait_for_response_orders(response, "auto_batch_outbound_from_xlsx")
|
||||||
return response
|
return response
|
||||||
|
|
||||||
# 2.14 新建实验
|
# 2.14 新建实验
|
||||||
@@ -630,7 +564,12 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
response = self._post_lims("/api/lims/order/orders", orders)
|
response = self._post_lims("/api/lims/order/orders", orders)
|
||||||
print(response)
|
print(response)
|
||||||
# 等待任务报送成功
|
# 等待任务报送成功
|
||||||
order_code = response.get("data", {}).get("orderCode")
|
data_list = response.get("data", [])
|
||||||
|
if data_list:
|
||||||
|
order_code = data_list[0].get("orderCode")
|
||||||
|
else:
|
||||||
|
order_code = None
|
||||||
|
|
||||||
if not order_code:
|
if not order_code:
|
||||||
logger.error("上料任务未返回有效 orderCode!")
|
logger.error("上料任务未返回有效 orderCode!")
|
||||||
return response
|
return response
|
||||||
@@ -963,13 +902,179 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
logger.error(f"✗ 执行失败: {e}")
|
logger.error(f"✗ 执行失败: {e}")
|
||||||
return {"success": False, "error": str(e)}
|
return {"success": False, "error": str(e)}
|
||||||
|
|
||||||
|
def create_material(
|
||||||
|
self,
|
||||||
|
material_name: str,
|
||||||
|
type_id: str,
|
||||||
|
warehouse_name: str,
|
||||||
|
location_name_or_id: Optional[str] = None
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
"""创建单个物料并可选入库。
|
||||||
|
Args:
|
||||||
|
material_name: 物料名称(会优先匹配配置模板)。
|
||||||
|
type_id: 物料类型 ID(若为空则尝试从配置推断)。
|
||||||
|
warehouse_name: 需要入库的仓库名称;若为空则仅创建不入库。
|
||||||
|
location_name_or_id: 具体库位名称(如 A01)或库位 UUID,由用户指定。
|
||||||
|
Returns:
|
||||||
|
包含创建结果、物料ID以及入库结果的字典。
|
||||||
|
"""
|
||||||
|
material_name = (material_name or "").strip()
|
||||||
|
|
||||||
|
resolved_type_id = (type_id or "").strip()
|
||||||
|
# 优先从 SOLID_LIQUID_MAPPINGS 中获取模板数据
|
||||||
|
template = SOLID_LIQUID_MAPPINGS.get(material_name)
|
||||||
|
if not template:
|
||||||
|
raise ValueError(f"在配置中未找到物料 {material_name} 的模板,请检查 SOLID_LIQUID_MAPPINGS。")
|
||||||
|
material_data: Dict[str, Any]
|
||||||
|
material_data = deepcopy(template)
|
||||||
|
# 最终确保 typeId 为调用方传入的值
|
||||||
|
if resolved_type_id:
|
||||||
|
material_data["typeId"] = resolved_type_id
|
||||||
|
material_data["name"] = material_name
|
||||||
|
# 生成唯一编码
|
||||||
|
def _generate_code(prefix: str) -> str:
|
||||||
|
normalized = re.sub(r"\W+", "_", prefix)
|
||||||
|
normalized = normalized.strip("_") or "material"
|
||||||
|
return f"{normalized}_{datetime.now().strftime('%Y%m%d%H%M%S')}"
|
||||||
|
if not material_data.get("code"):
|
||||||
|
material_data["code"] = _generate_code(material_name)
|
||||||
|
if not material_data.get("barCode"):
|
||||||
|
material_data["barCode"] = ""
|
||||||
|
# 处理数量字段类型
|
||||||
|
def _to_number(value: Any, default: float = 0.0) -> float:
|
||||||
|
try:
|
||||||
|
if value is None:
|
||||||
|
return default
|
||||||
|
if isinstance(value, (int, float)):
|
||||||
|
return float(value)
|
||||||
|
if isinstance(value, str) and value.strip() == "":
|
||||||
|
return default
|
||||||
|
return float(value)
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
return default
|
||||||
|
material_data["quantity"] = _to_number(material_data.get("quantity"), 1.0)
|
||||||
|
material_data["warningQuantity"] = _to_number(material_data.get("warningQuantity"), 0.0)
|
||||||
|
unit = material_data.get("unit") or "个"
|
||||||
|
material_data["unit"] = unit
|
||||||
|
if not material_data.get("parameters"):
|
||||||
|
material_data["parameters"] = json.dumps({"unit": unit}, ensure_ascii=False)
|
||||||
|
# 补充子物料信息
|
||||||
|
details = material_data.get("details") or []
|
||||||
|
if not isinstance(details, list):
|
||||||
|
logger.warning("details 字段不是列表,已忽略。")
|
||||||
|
details = []
|
||||||
|
else:
|
||||||
|
for idx, detail in enumerate(details, start=1):
|
||||||
|
if not isinstance(detail, dict):
|
||||||
|
continue
|
||||||
|
if not detail.get("code"):
|
||||||
|
detail["code"] = f"{material_data['code']}_{idx:02d}"
|
||||||
|
if not detail.get("name"):
|
||||||
|
detail["name"] = f"{material_name}_detail_{idx:02d}"
|
||||||
|
if not detail.get("unit"):
|
||||||
|
detail["unit"] = unit
|
||||||
|
if not detail.get("parameters"):
|
||||||
|
detail["parameters"] = json.dumps({"unit": detail.get("unit", unit)}, ensure_ascii=False)
|
||||||
|
if "quantity" in detail:
|
||||||
|
detail["quantity"] = _to_number(detail.get("quantity"), 1.0)
|
||||||
|
material_data["details"] = details
|
||||||
|
create_result = self._post_lims("/api/lims/storage/material", material_data)
|
||||||
|
# 解析创建结果中的物料 ID
|
||||||
|
material_id: Optional[str] = None
|
||||||
|
if isinstance(create_result, dict):
|
||||||
|
data_field = create_result.get("data")
|
||||||
|
if isinstance(data_field, str):
|
||||||
|
material_id = data_field
|
||||||
|
elif isinstance(data_field, dict):
|
||||||
|
material_id = data_field.get("id") or data_field.get("materialId")
|
||||||
|
inbound_result: Optional[Dict[str, Any]] = None
|
||||||
|
location_id: Optional[str] = None
|
||||||
|
# 按用户指定位置入库
|
||||||
|
if warehouse_name and material_id and location_name_or_id:
|
||||||
|
try:
|
||||||
|
location_ids, position_names = self._load_warehouse_locations(warehouse_name)
|
||||||
|
position_to_id = {name: loc_id for name, loc_id in zip(position_names, location_ids)}
|
||||||
|
target_location_id = position_to_id.get(location_name_or_id, location_name_or_id)
|
||||||
|
if target_location_id:
|
||||||
|
location_id = target_location_id
|
||||||
|
inbound_result = self.storage_inbound(material_id, target_location_id)
|
||||||
|
else:
|
||||||
|
inbound_result = {"error": f"未找到匹配的库位: {location_name_or_id}"}
|
||||||
|
except Exception as exc:
|
||||||
|
logger.error(f"获取仓库 {warehouse_name} 位置失败: {exc}")
|
||||||
|
inbound_result = {"error": str(exc)}
|
||||||
|
return {
|
||||||
|
"success": bool(isinstance(create_result, dict) and create_result.get("code") == 1 and material_id),
|
||||||
|
"material_name": material_name,
|
||||||
|
"material_id": material_id,
|
||||||
|
"warehouse": warehouse_name,
|
||||||
|
"location_id": location_id,
|
||||||
|
"location_name_or_id": location_name_or_id,
|
||||||
|
"create_result": create_result,
|
||||||
|
"inbound_result": inbound_result,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def create_sample(
|
||||||
|
self,
|
||||||
|
name: str,
|
||||||
|
board_type: str,
|
||||||
|
bottle_type: str,
|
||||||
|
location_code: str
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
"""创建配液板物料并自动入库。
|
||||||
|
Args:
|
||||||
|
material_name: 物料名称,支持 "5ml分液瓶板"/"5ml分液瓶"、"配液瓶(小)板"/"配液瓶(小)"。
|
||||||
|
quantity: 主物料与明细的数量,默认 1。
|
||||||
|
location_code: 库位编号,例如 "A01",将自动映射为 "手动堆栈" 下的 UUID。
|
||||||
|
"""
|
||||||
|
carrier_type_id = MATERIAL_TYPE_MAPPINGS[board_type][1]
|
||||||
|
bottle_type_id = MATERIAL_TYPE_MAPPINGS[bottle_type][1]
|
||||||
|
location_id = WAREHOUSE_MAPPING["手动堆栈"]["site_uuids"][location_code]
|
||||||
|
|
||||||
|
# 新建小瓶
|
||||||
|
details = []
|
||||||
|
for y in range(1, 5):
|
||||||
|
for x in range(1, 3):
|
||||||
|
details.append({
|
||||||
|
"typeId": bottle_type_id,
|
||||||
|
"code": "",
|
||||||
|
"name": str(bottle_type) + str(x) + str(y),
|
||||||
|
"quantity": "1",
|
||||||
|
"x": x,
|
||||||
|
"y": y,
|
||||||
|
"z": 1,
|
||||||
|
"unit": "个",
|
||||||
|
"parameters": json.dumps({"unit": "个"}, ensure_ascii=False),
|
||||||
|
})
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"typeId": carrier_type_id,
|
||||||
|
"code": "",
|
||||||
|
"barCode": "",
|
||||||
|
"name": name,
|
||||||
|
"unit": "块",
|
||||||
|
"parameters": json.dumps({"unit": "块"}, ensure_ascii=False),
|
||||||
|
"quantity": "1",
|
||||||
|
"details": details,
|
||||||
|
}
|
||||||
|
# print("xxx:",data)
|
||||||
|
create_result = self._post_lims("/api/lims/storage/material", data)
|
||||||
|
sample_uuid = create_result.get("data")
|
||||||
|
|
||||||
|
final_result = self._post_lims("/api/lims/storage/inbound", {
|
||||||
|
"materialId": sample_uuid,
|
||||||
|
"locationId": location_id,
|
||||||
|
})
|
||||||
|
return final_result
|
||||||
|
|
||||||
|
|
||||||
# --------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
lab_registry.setup()
|
lab_registry.setup()
|
||||||
ws = BioyondCellWorkstation()
|
ws = BioyondCellWorkstation()
|
||||||
|
ws.create_sample(name="test", board_type="配液瓶(小)板", bottle_type="配液瓶(小)", location_code="B01")
|
||||||
# logger.info(ws.scheduler_stop())
|
# logger.info(ws.scheduler_stop())
|
||||||
# logger.info(ws.scheduler_start())
|
# logger.info(ws.scheduler_start())
|
||||||
|
|
||||||
@@ -980,8 +1085,8 @@ if __name__ == "__main__":
|
|||||||
# result = ws.create_and_inbound_materials()
|
# result = ws.create_and_inbound_materials()
|
||||||
|
|
||||||
# 继续后续流程
|
# 继续后续流程
|
||||||
# logger.info(ws.auto_feeding4to3()) #搬运物料到3号箱
|
logger.info(ws.auto_feeding4to3()) #搬运物料到3号箱
|
||||||
# # 使用正斜杠或 Path 对象来指定文件路径
|
# # # 使用正斜杠或 Path 对象来指定文件路径
|
||||||
# excel_path = Path("unilabos\\devices\\workstation\\bioyond_studio\\bioyond_cell\\2025092701.xlsx")
|
# excel_path = Path("unilabos\\devices\\workstation\\bioyond_studio\\bioyond_cell\\2025092701.xlsx")
|
||||||
# logger.info(ws.create_orders(excel_path))
|
# logger.info(ws.create_orders(excel_path))
|
||||||
# logger.info(ws.transfer_3_to_2_to_1())
|
# logger.info(ws.transfer_3_to_2_to_1())
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -8,7 +8,8 @@ import os
|
|||||||
# BioyondCellWorkstation 默认配置(包含所有必需参数)
|
# BioyondCellWorkstation 默认配置(包含所有必需参数)
|
||||||
API_CONFIG = {
|
API_CONFIG = {
|
||||||
# API 连接配置
|
# API 连接配置
|
||||||
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.10.169:44388"),
|
# "api_host": os.getenv("BIOYOND_API_HOST", "http://172.21.32.65:44389"),#实机
|
||||||
|
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.10.169:44388"),# 仿真机
|
||||||
"api_key": os.getenv("BIOYOND_API_KEY", "8A819E5C"),
|
"api_key": os.getenv("BIOYOND_API_KEY", "8A819E5C"),
|
||||||
"timeout": int(os.getenv("BIOYOND_TIMEOUT", "30")),
|
"timeout": int(os.getenv("BIOYOND_TIMEOUT", "30")),
|
||||||
|
|
||||||
|
|||||||
BIN
unilabos/devices/workstation/coin_cell_assembly.zip
Normal file
BIN
unilabos/devices/workstation/coin_cell_assembly.zip
Normal file
Binary file not shown.
@@ -892,12 +892,25 @@ class CoinCellAssemblyWorkstation(WorkstationBase):
|
|||||||
self.success = True
|
self.success = True
|
||||||
return self.success
|
return self.success
|
||||||
|
|
||||||
|
def qiming_coin_cell_code(self, fujipian_panshu:int, fujipian_juzhendianwei:int=0, gemopanshu:int=0, gemo_juzhendianwei:int=0, lvbodian:bool=True, battery_pressure_mode:bool=True, battery_pressure:int=4000, battery_clean_ignore:bool=False) -> bool:
|
||||||
|
self.success = False
|
||||||
|
self.client.use_node('REG_MSG_NE_PLATE_NUM').write(fujipian_panshu)
|
||||||
|
self.client.use_node('REG_MSG_NE_PLATE_MATRIX').write(fujipian_juzhendianwei)
|
||||||
|
self.client.use_node('REG_MSG_SEPARATOR_PLATE_NUM').write(gemopanshu)
|
||||||
|
self.client.use_node('REG_MSG_SEPARATOR_PLATE_MATRIX').write(gemo_juzhendianwei)
|
||||||
|
self.client.use_node('COIL_ALUMINUM_FOIL').write(not lvbodian)
|
||||||
|
self.client.use_node('REG_MSG_PRESS_MODE').write(not battery_pressure_mode)
|
||||||
|
# self.client.use_node('REG_MSG_ASSEMBLY_PRESSURE').write(battery_pressure)
|
||||||
|
self.client.use_node('REG_MSG_BATTERY_CLEAN_IGNORE').write(battery_clean_ignore)
|
||||||
|
self.success = True
|
||||||
|
|
||||||
|
return self.success
|
||||||
|
|
||||||
def func_allpack_cmd(self, elec_num, elec_use_num, elec_vol:int=50, assembly_type:int=7, assembly_pressure:int=4200, file_path: str="D:\\coin_cell_data") -> bool:
|
def func_allpack_cmd(self, elec_num, elec_use_num, elec_vol:int=50, assembly_type:int=7, assembly_pressure:int=4200, file_path: str="C:\\Users\\67484\\Desktop") -> bool:
|
||||||
elec_num, elec_use_num, elec_vol, assembly_type, assembly_pressure = int(elec_num), int(elec_use_num), int(elec_vol), int(assembly_type), int(assembly_pressure)
|
elec_num, elec_use_num, elec_vol, assembly_type, assembly_pressure = int(elec_num), int(elec_use_num), int(elec_vol), int(assembly_type), int(assembly_pressure)
|
||||||
summary_csv_file = os.path.join(file_path, "duandian.csv")
|
summary_csv_file = os.path.join(file_path, "duandian.csv")
|
||||||
# 如果断点文件存在,先读取之前的进度
|
# 如果断点文件存在,先读取之前的进度
|
||||||
|
|
||||||
if os.path.exists(summary_csv_file):
|
if os.path.exists(summary_csv_file):
|
||||||
read_status_flag = True
|
read_status_flag = True
|
||||||
with open(summary_csv_file, 'r', newline='', encoding='utf-8') as csvfile:
|
with open(summary_csv_file, 'r', newline='', encoding='utf-8') as csvfile:
|
||||||
@@ -1217,8 +1230,10 @@ class CoinCellAssemblyWorkstation(WorkstationBase):
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# 简单测试
|
# 简单测试
|
||||||
workstation = CoinCellAssemblyWorkstation()
|
workstation = CoinCellAssemblyWorkstation()
|
||||||
|
workstation.qiming_coin_cell_code(fujipian_panshu=1, fujipian_juzhendianwei=2, gemopanshu=3, gemo_juzhendianwei=4, lvbodian=False, battery_pressure_mode=False, battery_pressure=4200, battery_clean_ignore=False)
|
||||||
print(f"工作站创建成功: {workstation.deck.name}")
|
print(f"工作站创建成功: {workstation.deck.name}")
|
||||||
print(f"料盘数量: {len(workstation.deck.children)}")
|
print(f"料盘数量: {len(workstation.deck.children)}")
|
||||||
|
|||||||
@@ -43,21 +43,22 @@ REG_DATA_ELECTROLYTE_USE_NUM,INT16,,,,hold_register,10000,
|
|||||||
UNILAB_SEND_FINISHED_CMD,BOOL,,,,coil,8730,
|
UNILAB_SEND_FINISHED_CMD,BOOL,,,,coil,8730,
|
||||||
UNILAB_RECE_FINISHED_CMD,BOOL,,,,coil,8530,
|
UNILAB_RECE_FINISHED_CMD,BOOL,,,,coil,8530,
|
||||||
REG_DATA_ASSEMBLY_TYPE,INT16,,,,hold_register,10018,ASSEMBLY_TYPE7or8
|
REG_DATA_ASSEMBLY_TYPE,INT16,,,,hold_register,10018,ASSEMBLY_TYPE7or8
|
||||||
COIL_ALUMINUM_FOIL,BOOL,,,,coil,8340,
|
COIL_ALUMINUM_FOIL,BOOL,,使用铝箔垫,,coil,8340,
|
||||||
REG_MSG_NE_PLATE_MATRIX,INT16,,负极片矩阵点位,,hold_register,440,
|
REG_MSG_NE_PLATE_MATRIX,INT16,,负极片矩阵点位,,hold_register,440,
|
||||||
REG_MSG_SEPARATOR_PLATE_MATRIX,INT16,,隔膜矩阵点位,,hold_register,450,
|
REG_MSG_SEPARATOR_PLATE_MATRIX,INT16,,隔膜矩阵点位,,hold_register,450,
|
||||||
REG_MSG_TIP_BOX_MATRIX,INT16,,移液枪头矩阵点位,,hold_register,480,
|
REG_MSG_TIP_BOX_MATRIX,INT16,,移液枪头矩阵点位,,hold_register,480,
|
||||||
REG_MSG_NE_PLATE_NUM,INT16,,负极片盘数,,hold_register,443,
|
REG_MSG_NE_PLATE_NUM,INT16,,负极片盘数,,hold_register,443,
|
||||||
REG_MSG_SEPARATOR_PLATE_NUM,INT16,,隔膜盘数,,hold_register,453,
|
REG_MSG_SEPARATOR_PLATE_NUM,INT16,,隔膜盘数,,hold_register,453,
|
||||||
|
REG_MSG_PRESS_MODE,BOOL,,压制模式(false:压力检测模式,True:距离模式),,coil,8360,电池压制模式
|
||||||
,,,,,,,
|
,,,,,,,
|
||||||
,BOOL,,视觉对位(false:使用,true:忽略),,coil,8300,视觉对位
|
,BOOL,,视觉对位(false:使用,true:忽略),,coil,8300,视觉对位
|
||||||
,BOOL,,复检(false:使用,true:忽略),,coil,8310,视觉复检
|
,BOOL,,复检(false:使用,true:忽略),,coil,8310,视觉复检
|
||||||
,BOOL,,手套箱_左仓(false:使用,true:忽略),,coil,8320,手套箱左仓
|
,BOOL,,手套箱_左仓(false:使用,true:忽略),,coil,8320,手套箱左仓
|
||||||
,BOOL,,手套箱_右仓(false:使用,true:忽略),,coil,8420,手套箱右仓
|
,BOOL,,手套箱_右仓(false:使用,true:忽略),,coil,8420,手套箱右仓
|
||||||
,BOOL,,真空检知(false:使用,true:忽略),,coil,8350,真空检知
|
,BOOL,,真空检知(false:使用,true:忽略),,coil,8350,真空检知
|
||||||
,BOOL,,压制模式(false:压力检测模式,True:距离模式),,coil,8360,电池压制模式
|
|
||||||
,BOOL,,电解液添加模式(false:单次滴液,true:二次滴液),,coil,8370,滴液模式
|
,BOOL,,电解液添加模式(false:单次滴液,true:二次滴液),,coil,8370,滴液模式
|
||||||
,BOOL,,正极片称重(false:使用,true:忽略),,coil,8380,正极片称重
|
,BOOL,,正极片称重(false:使用,true:忽略),,coil,8380,正极片称重
|
||||||
,BOOL,,正负极片组装方式(false:正装,true:倒装),,coil,8390,正负极反装
|
,BOOL,,正负极片组装方式(false:正装,true:倒装),,coil,8390,正负极反装
|
||||||
,BOOL,,压制清洁(false:使用,true:忽略),,coil,8400,压制清洁
|
,BOOL,,压制清洁(false:使用,true:忽略),,coil,8400,压制清洁
|
||||||
,BOOL,,物料盘摆盘方式(false:水平摆盘,true:堆叠摆盘),,coil,8410,负极片摆盘方式
|
,BOOL,,物料盘摆盘方式(false:水平摆盘,true:堆叠摆盘),,coil,8410,负极片摆盘方式
|
||||||
|
REG_MSG_BATTERY_CLEAN_IGNORE,BOOL,,忽略电池清洁(false:使用,true:忽略),,coil,8460,
|
||||||
|
@@ -22,7 +22,7 @@
|
|||||||
],
|
],
|
||||||
"parent": null,
|
"parent": null,
|
||||||
"type": "device",
|
"type": "device",
|
||||||
"class": "bettery_station_registry",
|
"class": "coincellassemblyworkstation_device",
|
||||||
"position": {
|
"position": {
|
||||||
"x": 600,
|
"x": 600,
|
||||||
"y": 400,
|
"y": 400,
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ bioyond_cell:
|
|||||||
WH4_x5_y1_z1_5_quantity: 0.0
|
WH4_x5_y1_z1_5_quantity: 0.0
|
||||||
WH4_x5_y2_z1_10_materialName: ''
|
WH4_x5_y2_z1_10_materialName: ''
|
||||||
WH4_x5_y2_z1_10_quantity: 0.0
|
WH4_x5_y2_z1_10_quantity: 0.0
|
||||||
xlsx_path: unilabos/devices/workstation/bioyond_cell/样品导入模板.xlsx
|
xlsx_path: unilabos\devices\workstation\bioyond_studio\bioyond_cell\material_template.xlsx
|
||||||
handles: {}
|
handles: {}
|
||||||
placeholder_keys: {}
|
placeholder_keys: {}
|
||||||
result: {}
|
result: {}
|
||||||
@@ -463,7 +463,7 @@ bioyond_cell:
|
|||||||
default: 0.0
|
default: 0.0
|
||||||
type: number
|
type: number
|
||||||
xlsx_path:
|
xlsx_path:
|
||||||
default: unilabos/devices/workstation/bioyond_cell/样品导入模板.xlsx
|
default: unilabos\devices\workstation\bioyond_studio\bioyond_cell\material_template.xlsx
|
||||||
type: string
|
type: string
|
||||||
required: []
|
required: []
|
||||||
type: object
|
type: object
|
||||||
@@ -498,6 +498,99 @@ bioyond_cell:
|
|||||||
title: auto_feeding4to3_from_xlsx参数
|
title: auto_feeding4to3_from_xlsx参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
auto-create_and_inbound_materials:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
material_names: null
|
||||||
|
type_id: 3a190ca0-b2f6-9aeb-8067-547e72c11469
|
||||||
|
warehouse_name: 粉末加样头堆栈
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
material_names:
|
||||||
|
type: string
|
||||||
|
type_id:
|
||||||
|
default: 3a190ca0-b2f6-9aeb-8067-547e72c11469
|
||||||
|
type: string
|
||||||
|
warehouse_name:
|
||||||
|
default: 粉末加样头堆栈
|
||||||
|
type: string
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: create_and_inbound_materials参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-create_material:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
location_name_or_id: null
|
||||||
|
material_name: null
|
||||||
|
type_id: null
|
||||||
|
warehouse_name: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
location_name_or_id:
|
||||||
|
type: string
|
||||||
|
material_name:
|
||||||
|
type: string
|
||||||
|
type_id:
|
||||||
|
type: string
|
||||||
|
warehouse_name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- material_name
|
||||||
|
- type_id
|
||||||
|
- warehouse_name
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: create_material参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-create_materials:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
mappings: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
mappings:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- mappings
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: create_materials参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
auto-create_orders:
|
auto-create_orders:
|
||||||
feedback: {}
|
feedback: {}
|
||||||
goal: {}
|
goal: {}
|
||||||
@@ -523,6 +616,43 @@ bioyond_cell:
|
|||||||
title: create_orders参数
|
title: create_orders参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
auto-create_sample:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
board_type: null
|
||||||
|
bottle_type: null
|
||||||
|
location_code: null
|
||||||
|
name: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
board_type:
|
||||||
|
type: string
|
||||||
|
bottle_type:
|
||||||
|
type: string
|
||||||
|
location_code:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- board_type
|
||||||
|
- bottle_type
|
||||||
|
- location_code
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: create_sample参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
auto-order_list_v2:
|
auto-order_list_v2:
|
||||||
feedback: {}
|
feedback: {}
|
||||||
goal: {}
|
goal: {}
|
||||||
@@ -576,6 +706,84 @@ bioyond_cell:
|
|||||||
title: order_list_v2参数
|
title: order_list_v2参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
auto-process_order_finish_report:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
report_request: null
|
||||||
|
used_materials: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
report_request:
|
||||||
|
type: string
|
||||||
|
used_materials:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- report_request
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: process_order_finish_report参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-process_sample_finish_report:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
report_request: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
report_request:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- report_request
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: process_sample_finish_report参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-process_step_finish_report:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
report_request: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
report_request:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- report_request
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: process_step_finish_report参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
auto-report_material_change:
|
auto-report_material_change:
|
||||||
feedback: {}
|
feedback: {}
|
||||||
goal: {}
|
goal: {}
|
||||||
@@ -622,6 +830,27 @@ bioyond_cell:
|
|||||||
title: scheduler_continue参数
|
title: scheduler_continue参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
auto-scheduler_reset:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: scheduler_reset参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
auto-scheduler_start:
|
auto-scheduler_start:
|
||||||
feedback: {}
|
feedback: {}
|
||||||
goal: {}
|
goal: {}
|
||||||
@@ -778,6 +1007,62 @@ bioyond_cell:
|
|||||||
title: transfer_3_to_2_to_1参数
|
title: transfer_3_to_2_to_1参数
|
||||||
type: object
|
type: object
|
||||||
type: UniLabJsonCommand
|
type: UniLabJsonCommand
|
||||||
|
auto-update_push_ip:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
ip: null
|
||||||
|
port: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
ip:
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
type: string
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: update_push_ip参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-wait_for_order_finish:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
order_code: null
|
||||||
|
timeout: 1800
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
order_code:
|
||||||
|
type: string
|
||||||
|
timeout:
|
||||||
|
default: 1800
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- order_code
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: wait_for_order_finish参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
auto-wait_for_transfer_task:
|
auto-wait_for_transfer_task:
|
||||||
feedback: {}
|
feedback: {}
|
||||||
goal: {}
|
goal: {}
|
||||||
|
|||||||
584
unilabos/registry/devices/coin_cell_workstation.yaml
Normal file
584
unilabos/registry/devices/coin_cell_workstation.yaml
Normal file
@@ -0,0 +1,584 @@
|
|||||||
|
coincellassemblyworkstation_device:
|
||||||
|
category:
|
||||||
|
- coin_cell_workstation
|
||||||
|
class:
|
||||||
|
action_value_mappings:
|
||||||
|
auto-change_hole_sheet_to_2:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
hole: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
hole:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- hole
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: change_hole_sheet_to_2参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommandAsync
|
||||||
|
auto-fill_plate:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: fill_plate参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommandAsync
|
||||||
|
auto-fun_wuliao_test:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: fun_wuliao_test参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_allpack_cmd:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
assembly_pressure: 4200
|
||||||
|
assembly_type: 7
|
||||||
|
elec_num: null
|
||||||
|
elec_use_num: null
|
||||||
|
elec_vol: 50
|
||||||
|
file_path: D:\coin_cell_data
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
assembly_pressure:
|
||||||
|
default: 4200
|
||||||
|
type: integer
|
||||||
|
assembly_type:
|
||||||
|
default: 7
|
||||||
|
type: integer
|
||||||
|
elec_num:
|
||||||
|
type: string
|
||||||
|
elec_use_num:
|
||||||
|
type: string
|
||||||
|
elec_vol:
|
||||||
|
default: 50
|
||||||
|
type: integer
|
||||||
|
file_path:
|
||||||
|
default: D:\coin_cell_data
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- elec_num
|
||||||
|
- elec_use_num
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_allpack_cmd参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_get_csv_export_status:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_get_csv_export_status参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_device_auto:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_device_auto参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_device_init:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_device_init参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_device_start:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_device_start参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_device_stop:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_device_stop参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_get_msg_cmd:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
file_path: D:\coin_cell_data
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
file_path:
|
||||||
|
default: D:\coin_cell_data
|
||||||
|
type: string
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_get_msg_cmd参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_send_bottle_num:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
bottle_num: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
bottle_num:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- bottle_num
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_send_bottle_num参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_send_finished_cmd:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_send_finished_cmd参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_pack_send_msg_cmd:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
assembly_pressure: null
|
||||||
|
assembly_type: null
|
||||||
|
elec_use_num: null
|
||||||
|
elec_vol: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
assembly_pressure:
|
||||||
|
type: string
|
||||||
|
assembly_type:
|
||||||
|
type: string
|
||||||
|
elec_use_num:
|
||||||
|
type: string
|
||||||
|
elec_vol:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- elec_use_num
|
||||||
|
- elec_vol
|
||||||
|
- assembly_type
|
||||||
|
- assembly_pressure
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_pack_send_msg_cmd参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_read_data_and_output:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
file_path: D:\coin_cell_data
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
file_path:
|
||||||
|
default: D:\coin_cell_data
|
||||||
|
type: string
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_read_data_and_output参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-func_stop_read_data:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default: {}
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties: {}
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: func_stop_read_data参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
auto-modify_deck_name:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
resource_name: null
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
resource_name:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- resource_name
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: modify_deck_name参数
|
||||||
|
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-qiming_coin_cell_code:
|
||||||
|
feedback: {}
|
||||||
|
goal: {}
|
||||||
|
goal_default:
|
||||||
|
battery_clean_ignore: false
|
||||||
|
battery_pressure: 4000
|
||||||
|
battery_pressure_mode: true
|
||||||
|
fujipian_juzhendianwei: 0
|
||||||
|
fujipian_panshu: null
|
||||||
|
gemo_juzhendianwei: 0
|
||||||
|
gemopanshu: 0
|
||||||
|
lvbodian: true
|
||||||
|
handles: {}
|
||||||
|
placeholder_keys: {}
|
||||||
|
result: {}
|
||||||
|
schema:
|
||||||
|
description: ''
|
||||||
|
properties:
|
||||||
|
feedback: {}
|
||||||
|
goal:
|
||||||
|
properties:
|
||||||
|
battery_clean_ignore:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
battery_pressure:
|
||||||
|
default: 4000
|
||||||
|
type: integer
|
||||||
|
battery_pressure_mode:
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
fujipian_juzhendianwei:
|
||||||
|
default: 0
|
||||||
|
type: integer
|
||||||
|
fujipian_panshu:
|
||||||
|
type: integer
|
||||||
|
gemo_juzhendianwei:
|
||||||
|
default: 0
|
||||||
|
type: integer
|
||||||
|
gemopanshu:
|
||||||
|
default: 0
|
||||||
|
type: integer
|
||||||
|
lvbodian:
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- fujipian_panshu
|
||||||
|
type: object
|
||||||
|
result: {}
|
||||||
|
required:
|
||||||
|
- goal
|
||||||
|
title: qiming_coin_cell_code参数
|
||||||
|
type: object
|
||||||
|
type: UniLabJsonCommand
|
||||||
|
module: unilabos.devices.workstation.coin_cell_assembly.coin_cell_assembly:CoinCellAssemblyWorkstation
|
||||||
|
status_types:
|
||||||
|
data_assembly_coin_cell_num: int
|
||||||
|
data_assembly_pressure: int
|
||||||
|
data_assembly_time: float
|
||||||
|
data_axis_x_pos: float
|
||||||
|
data_axis_y_pos: float
|
||||||
|
data_axis_z_pos: float
|
||||||
|
data_coin_cell_code: str
|
||||||
|
data_coin_num: int
|
||||||
|
data_electrolyte_code: str
|
||||||
|
data_electrolyte_volume: int
|
||||||
|
data_glove_box_o2_content: float
|
||||||
|
data_glove_box_pressure: float
|
||||||
|
data_glove_box_water_content: float
|
||||||
|
data_open_circuit_voltage: float
|
||||||
|
data_pole_weight: float
|
||||||
|
request_rec_msg_status: bool
|
||||||
|
request_send_msg_status: bool
|
||||||
|
sys_mode: str
|
||||||
|
sys_status: str
|
||||||
|
type: python
|
||||||
|
config_info: []
|
||||||
|
description: ''
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema:
|
||||||
|
config:
|
||||||
|
properties:
|
||||||
|
address:
|
||||||
|
default: 172.21.32.111
|
||||||
|
type: string
|
||||||
|
debug_mode:
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
deck:
|
||||||
|
type: object
|
||||||
|
port:
|
||||||
|
default: '502'
|
||||||
|
type: string
|
||||||
|
required: []
|
||||||
|
type: object
|
||||||
|
data:
|
||||||
|
properties:
|
||||||
|
data_assembly_coin_cell_num:
|
||||||
|
type: integer
|
||||||
|
data_assembly_pressure:
|
||||||
|
type: integer
|
||||||
|
data_assembly_time:
|
||||||
|
type: number
|
||||||
|
data_axis_x_pos:
|
||||||
|
type: number
|
||||||
|
data_axis_y_pos:
|
||||||
|
type: number
|
||||||
|
data_axis_z_pos:
|
||||||
|
type: number
|
||||||
|
data_coin_cell_code:
|
||||||
|
type: string
|
||||||
|
data_coin_num:
|
||||||
|
type: integer
|
||||||
|
data_electrolyte_code:
|
||||||
|
type: string
|
||||||
|
data_electrolyte_volume:
|
||||||
|
type: integer
|
||||||
|
data_glove_box_o2_content:
|
||||||
|
type: number
|
||||||
|
data_glove_box_pressure:
|
||||||
|
type: number
|
||||||
|
data_glove_box_water_content:
|
||||||
|
type: number
|
||||||
|
data_open_circuit_voltage:
|
||||||
|
type: number
|
||||||
|
data_pole_weight:
|
||||||
|
type: number
|
||||||
|
request_rec_msg_status:
|
||||||
|
type: boolean
|
||||||
|
request_send_msg_status:
|
||||||
|
type: boolean
|
||||||
|
sys_mode:
|
||||||
|
type: string
|
||||||
|
sys_status:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- sys_status
|
||||||
|
- sys_mode
|
||||||
|
- request_rec_msg_status
|
||||||
|
- request_send_msg_status
|
||||||
|
- data_assembly_coin_cell_num
|
||||||
|
- data_assembly_time
|
||||||
|
- data_open_circuit_voltage
|
||||||
|
- data_axis_x_pos
|
||||||
|
- data_axis_y_pos
|
||||||
|
- data_axis_z_pos
|
||||||
|
- data_pole_weight
|
||||||
|
- data_assembly_pressure
|
||||||
|
- data_electrolyte_volume
|
||||||
|
- data_coin_num
|
||||||
|
- data_coin_cell_code
|
||||||
|
- data_electrolyte_code
|
||||||
|
- data_glove_box_pressure
|
||||||
|
- data_glove_box_o2_content
|
||||||
|
- data_glove_box_water_content
|
||||||
|
type: object
|
||||||
|
registry_type: device
|
||||||
|
version: 1.0.0
|
||||||
@@ -1,527 +1 @@
|
|||||||
reaction_station.bioyond:
|
{}
|
||||||
category:
|
|
||||||
- work_station
|
|
||||||
- reaction_station_bioyond
|
|
||||||
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: object
|
|
||||||
required:
|
|
||||||
- ros_node
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: post_init参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
auto-process_web_workflows:
|
|
||||||
feedback: {}
|
|
||||||
goal: {}
|
|
||||||
goal_default:
|
|
||||||
json_str: null
|
|
||||||
handles: {}
|
|
||||||
placeholder_keys: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: ''
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
json_str:
|
|
||||||
type: string
|
|
||||||
volume:
|
|
||||||
description: 分液公式(μL)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- volume
|
|
||||||
- assign_material_name
|
|
||||||
- time
|
|
||||||
- torque_variation
|
|
||||||
- titration_type
|
|
||||||
- temperature
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: drip_back参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
drip_back:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
titration_type: titration_type
|
|
||||||
torque_variation: torque_variation
|
|
||||||
volume: volume
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
temperature: ''
|
|
||||||
time: ''
|
|
||||||
titration_type: ''
|
|
||||||
torque_variation: ''
|
|
||||||
volume: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 滴回去
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称(不能为空)
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
description: 观察时间(分钟)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- file_path
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: load_bioyond_data_from_file参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
liquid_feeding_beaker:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
titration_type: titration_type
|
|
||||||
torque_variation: torque_variation
|
|
||||||
volume: volume
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
temperature: ''
|
|
||||||
time: ''
|
|
||||||
titration_type: ''
|
|
||||||
torque_variation: ''
|
|
||||||
volume: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 液体进料烧杯
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
description: 观察时间(分钟)
|
|
||||||
type: string
|
|
||||||
titration_type:
|
|
||||||
description: 是否滴定(1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
torque_variation:
|
|
||||||
description: 是否观察 (1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
volume:
|
|
||||||
description: 分液公式(μL)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- volume
|
|
||||||
- assign_material_name
|
|
||||||
- time
|
|
||||||
- torque_variation
|
|
||||||
- titration_type
|
|
||||||
- temperature
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: liquid_feeding_beaker参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
liquid_feeding_solvents:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
solvents: solvents
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
titration_type: titration_type
|
|
||||||
torque_variation: torque_variation
|
|
||||||
volume: volume
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
solvents: ''
|
|
||||||
temperature: '25.00'
|
|
||||||
time: '360'
|
|
||||||
titration_type: '1'
|
|
||||||
torque_variation: '2'
|
|
||||||
volume: ''
|
|
||||||
handles:
|
|
||||||
input:
|
|
||||||
- data_key: solvents
|
|
||||||
data_source: handle
|
|
||||||
data_type: object
|
|
||||||
handler_key: solvents
|
|
||||||
io_type: source
|
|
||||||
label: Solvents Data From Calculation Node
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 液体投料-溶剂。可以直接提供volume(μL),或通过solvents对象自动从additional_solvent(mL)计算volume。
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称
|
|
||||||
type: string
|
|
||||||
solvents:
|
|
||||||
description: '溶剂信息对象(可选),包含: additional_solvent(溶剂体积mL), total_liquid_volume(总液体体积mL)。如果提供,将自动计算volume'
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
default: '25.00'
|
|
||||||
description: 温度设定(°C),默认25.00
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
default: '360'
|
|
||||||
description: 观察时间(分钟),默认360
|
|
||||||
type: string
|
|
||||||
titration_type:
|
|
||||||
default: '1'
|
|
||||||
description: 是否滴定(1=否, 2=是),默认1
|
|
||||||
type: string
|
|
||||||
torque_variation:
|
|
||||||
default: '2'
|
|
||||||
description: 是否观察 (1=否, 2=是),默认2
|
|
||||||
type: string
|
|
||||||
volume:
|
|
||||||
description: 分液量(μL)。可直接提供,或通过solvents参数自动计算
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- assign_material_name
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: liquid_feeding_solvents参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
liquid_feeding_titration:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
titration_type: titration_type
|
|
||||||
torque_variation: torque_variation
|
|
||||||
volume_formula: volume_formula
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
temperature: ''
|
|
||||||
time: ''
|
|
||||||
titration_type: ''
|
|
||||||
torque_variation: ''
|
|
||||||
volume_formula: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 液体进料(滴定)
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
description: 观察时间(分钟)
|
|
||||||
type: string
|
|
||||||
titration_type:
|
|
||||||
description: 是否滴定(1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
torque_variation:
|
|
||||||
description: 是否观察 (1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
volume_formula:
|
|
||||||
description: 分液公式(μL)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- volume_formula
|
|
||||||
- assign_material_name
|
|
||||||
- time
|
|
||||||
- torque_variation
|
|
||||||
- titration_type
|
|
||||||
- temperature
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: liquid_feeding_titration参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
liquid_feeding_vials_non_titration:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
titration_type: titration_type
|
|
||||||
torque_variation: torque_variation
|
|
||||||
volume_formula: volume_formula
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
temperature: ''
|
|
||||||
time: ''
|
|
||||||
titration_type: ''
|
|
||||||
torque_variation: ''
|
|
||||||
volume_formula: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 液体进料小瓶(非滴定)
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
description: 观察时间(分钟)
|
|
||||||
type: string
|
|
||||||
titration_type:
|
|
||||||
description: 是否滴定(1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
torque_variation:
|
|
||||||
description: 是否观察 (1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
volume_formula:
|
|
||||||
description: 分液公式(μL)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- volume_formula
|
|
||||||
- assign_material_name
|
|
||||||
- time
|
|
||||||
- torque_variation
|
|
||||||
- titration_type
|
|
||||||
- temperature
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: liquid_feeding_vials_non_titration参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
process_and_execute_workflow:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
task_name: task_name
|
|
||||||
workflow_name: workflow_name
|
|
||||||
goal_default:
|
|
||||||
task_name: ''
|
|
||||||
workflow_name: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 处理并执行工作流
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
task_name:
|
|
||||||
description: 任务名称
|
|
||||||
type: string
|
|
||||||
workflow_name:
|
|
||||||
description: 工作流名称
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- workflow_name
|
|
||||||
- task_name
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: process_and_execute_workflow参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
reactor_taken_in:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
cutoff: cutoff
|
|
||||||
temperature: temperature
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
cutoff: ''
|
|
||||||
temperature: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 反应器放入 - 将反应器放入工作站,配置物料名称、粘度上限和温度参数
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称
|
|
||||||
type: string
|
|
||||||
cutoff:
|
|
||||||
description: 粘度上限
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- cutoff
|
|
||||||
- temperature
|
|
||||||
- assign_material_name
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: reactor_taken_in参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
reactor_taken_out:
|
|
||||||
feedback: {}
|
|
||||||
goal: {}
|
|
||||||
goal_default: {}
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 反应器取出 - 从工作站中取出反应器,无需参数的简单操作
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties: {}
|
|
||||||
required: []
|
|
||||||
type: object
|
|
||||||
result:
|
|
||||||
properties:
|
|
||||||
code:
|
|
||||||
description: 操作结果代码(1表示成功,0表示失败)
|
|
||||||
type: integer
|
|
||||||
return_info:
|
|
||||||
description: 操作结果详细信息
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: reactor_taken_out参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
solid_feeding_vials:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
assign_material_name: assign_material_name
|
|
||||||
material_id: material_id
|
|
||||||
temperature: temperature
|
|
||||||
time: time
|
|
||||||
torque_variation: torque_variation
|
|
||||||
goal_default:
|
|
||||||
assign_material_name: ''
|
|
||||||
material_id: ''
|
|
||||||
temperature: ''
|
|
||||||
time: ''
|
|
||||||
torque_variation: ''
|
|
||||||
handles: {}
|
|
||||||
result: {}
|
|
||||||
schema:
|
|
||||||
description: 固体进料小瓶 - 通过小瓶向反应器中添加固体物料,支持多种粉末类型(盐、面粉、BTDA)
|
|
||||||
properties:
|
|
||||||
feedback: {}
|
|
||||||
goal:
|
|
||||||
properties:
|
|
||||||
assign_material_name:
|
|
||||||
description: 物料名称(用于获取试剂瓶位ID)
|
|
||||||
type: string
|
|
||||||
material_id:
|
|
||||||
description: 粉末类型ID,1=盐(21分钟),2=面粉(27分钟),3=BTDA(38分钟)
|
|
||||||
type: string
|
|
||||||
temperature:
|
|
||||||
description: 温度设定(°C)
|
|
||||||
type: string
|
|
||||||
time:
|
|
||||||
description: 观察时间(分钟)
|
|
||||||
type: string
|
|
||||||
torque_variation:
|
|
||||||
description: 是否观察 (1=否, 2=是)
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- assign_material_name
|
|
||||||
- material_id
|
|
||||||
- time
|
|
||||||
- torque_variation
|
|
||||||
- temperature
|
|
||||||
type: object
|
|
||||||
result: {}
|
|
||||||
required:
|
|
||||||
- goal
|
|
||||||
title: solid_feeding_vials参数
|
|
||||||
type: object
|
|
||||||
type: UniLabJsonCommand
|
|
||||||
module: unilabos.devices.workstation.bioyond_studio.reaction_station:BioyondReactionStation
|
|
||||||
protocol_type: []
|
|
||||||
status_types:
|
|
||||||
all_workflows: dict
|
|
||||||
bioyond_status: dict
|
|
||||||
station_info: dict
|
|
||||||
workstation_status: dict
|
|
||||||
type: python
|
|
||||||
config_info: []
|
|
||||||
description: Bioyond反应站
|
|
||||||
handles: []
|
|
||||||
icon: reaction_station.webp
|
|
||||||
init_param_schema:
|
|
||||||
config:
|
|
||||||
properties:
|
|
||||||
config:
|
|
||||||
type: object
|
|
||||||
deck:
|
|
||||||
type: string
|
|
||||||
required: []
|
|
||||||
type: object
|
|
||||||
data:
|
|
||||||
properties:
|
|
||||||
all_workflows:
|
|
||||||
type: object
|
|
||||||
bioyond_status:
|
|
||||||
type: object
|
|
||||||
station_info:
|
|
||||||
type: object
|
|
||||||
workstation_status:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- bioyond_status
|
|
||||||
- all_workflows
|
|
||||||
- station_info
|
|
||||||
- workstation_status
|
|
||||||
type: object
|
|
||||||
version: 1.0.0
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,58 +1,7 @@
|
|||||||
YB_fen_ye_5ml_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_5ml_Bottle
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_fen_ye_5ml_Bottle
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_fen_ye_20ml_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_20ml_Bottle
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_fen_ye_20ml_Bottle
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_pei_ye_xiao_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_pei_ye_xiao_Bottle
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_pei_ye_xiao_Bottle
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_pei_ye_da_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_pei_ye_da_Bottle
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_pei_ye_da_Bottle
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_Pipette_Tip:
|
YB_Pipette_Tip:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_Pipette_Tip
|
module: unilabos.resources.bioyond.YB_bottles:YB_Pipette_Tip
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -62,4 +11,55 @@ YB_Pipette_Tip:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
YB_fen_ye_20ml_Bottle:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_20ml_Bottle
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_fen_ye_20ml_Bottle
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
YB_fen_ye_5ml_Bottle:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottles:YB_fen_ye_5ml_Bottle
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_fen_ye_5ml_Bottle
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
YB_pei_ye_da_Bottle:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottles:YB_pei_ye_da_Bottle
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_pei_ye_da_Bottle
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
YB_pei_ye_xiao_Bottle:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottles:YB_pei_ye_xiao_Bottle
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_pei_ye_xiao_Bottle
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
|||||||
@@ -1,59 +1,7 @@
|
|||||||
|
|
||||||
YB_6StockCarrier:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
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
|
|
||||||
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_1BottleCarrier:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
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_1GaoNianYeBottleCarrier:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1GaoNianYeBottleCarrier
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_1GaoNianYeBottleCarrier
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_1Bottle100mlCarrier:
|
YB_1Bottle100mlCarrier:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1Bottle100mlCarrier
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1Bottle100mlCarrier
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -63,49 +11,36 @@ YB_1Bottle100mlCarrier:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
YB_1BottleCarrier:
|
||||||
YB_6x5ml_DispensingVialCarrier:
|
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x5ml_DispensingVialCarrier
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1BottleCarrier
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
description: YB_6x5ml_DispensingVialCarrier
|
description: YB_1BottleCarrier
|
||||||
handles: []
|
handles: []
|
||||||
icon: ''
|
icon: ''
|
||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
YB_1GaoNianYeBottleCarrier:
|
||||||
YB_6x20ml_DispensingVialCarrier:
|
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x20ml_DispensingVialCarrier
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1GaoNianYeBottleCarrier
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
description: YB_6x20ml_DispensingVialCarrier
|
description: YB_1GaoNianYeBottleCarrier
|
||||||
handles: []
|
handles: []
|
||||||
icon: ''
|
icon: ''
|
||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
YB_6x_SmallSolutionBottleCarrier:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x_SmallSolutionBottleCarrier
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_6x_SmallSolutionBottleCarrier
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_4x_LargeSolutionBottleCarrier:
|
YB_4x_LargeSolutionBottleCarrier:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_4x_LargeSolutionBottleCarrier
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_4x_LargeSolutionBottleCarrier
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -115,23 +50,75 @@ YB_4x_LargeSolutionBottleCarrier:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
YB_6StockCarrier:
|
||||||
YB_jia_yang_tou_da_1X1_carrier:
|
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_jia_yang_tou_da_1X1_carrier
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6StockCarrier
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
description: YB_jia_yang_tou_da_1X1_carrier
|
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_6x20ml_DispensingVialCarrier:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x20ml_DispensingVialCarrier
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_6x20ml_DispensingVialCarrier
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
YB_6x5ml_DispensingVialCarrier:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x5ml_DispensingVialCarrier
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_6x5ml_DispensingVialCarrier
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
YB_6x_SmallSolutionBottleCarrier:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6x_SmallSolutionBottleCarrier
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_6x_SmallSolutionBottleCarrier
|
||||||
handles: []
|
handles: []
|
||||||
icon: ''
|
icon: ''
|
||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
YB_AdapterBlock:
|
YB_AdapterBlock:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_AdapterBlock
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_AdapterBlock
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -141,10 +128,10 @@ YB_AdapterBlock:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
YB_TipBox:
|
YB_TipBox:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_TipBox
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_TipBox
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -154,36 +141,10 @@ YB_TipBox:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
YB_ye_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
class:
|
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_ye_Bottle
|
|
||||||
type: pylabrobot
|
|
||||||
description: YB_ye_Bottle
|
|
||||||
handles: []
|
|
||||||
icon: ''
|
|
||||||
init_param_schema: {}
|
|
||||||
registry_type: resource
|
|
||||||
version: 1.0.0
|
|
||||||
|
|
||||||
YB_ye_100ml_Bottle:
|
|
||||||
category:
|
|
||||||
- yb3
|
|
||||||
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
|
|
||||||
|
|
||||||
YB_gao_nian_ye_Bottle:
|
YB_gao_nian_ye_Bottle:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_gao_nian_ye_Bottle
|
module: unilabos.resources.bioyond.YB_bottles:YB_gao_nian_ye_Bottle
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -193,10 +154,10 @@ YB_gao_nian_ye_Bottle:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
|
||||||
YB_jia_yang_tou_da:
|
YB_jia_yang_tou_da:
|
||||||
category:
|
category:
|
||||||
- yb3
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
class:
|
class:
|
||||||
module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da
|
module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da
|
||||||
type: pylabrobot
|
type: pylabrobot
|
||||||
@@ -206,3 +167,42 @@ YB_jia_yang_tou_da:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
YB_jia_yang_tou_da_1X1_carrier:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottle_carriers:YB_jia_yang_tou_da_1X1_carrier
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_jia_yang_tou_da_1X1_carrier
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
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
|
||||||
|
YB_ye_Bottle:
|
||||||
|
category:
|
||||||
|
- yb3
|
||||||
|
- YB_bottle_carriers
|
||||||
|
class:
|
||||||
|
module: unilabos.resources.bioyond.YB_bottles:YB_ye_Bottle
|
||||||
|
type: pylabrobot
|
||||||
|
description: YB_ye_Bottle
|
||||||
|
handles: []
|
||||||
|
icon: ''
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
|||||||
Reference in New Issue
Block a user