mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-04 21:35:09 +00:00
Compare commits
4 Commits
workstatio
...
a64ccfdb50
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a64ccfdb50 | ||
|
|
9bd6e83a8c | ||
|
|
3b16210b45 | ||
|
|
907a40b9d7 |
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
@@ -93,6 +92,4 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": []
|
"links": []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -257,7 +257,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
def auto_feeding4to3(
|
def auto_feeding4to3(
|
||||||
self,
|
self,
|
||||||
# ★ 修改点:默认模板路径
|
# ★ 修改点:默认模板路径
|
||||||
xlsx_path: Optional[str] = "/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx",
|
xlsx_path: Optional[str] = "/Users/sml/work/Unilab/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,
|
||||||
@@ -394,9 +394,13 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
return response
|
return response
|
||||||
# 等待完成报送
|
# 等待完成报送
|
||||||
result = self.wait_for_order_finish(order_code)
|
result = self.wait_for_order_finish(order_code)
|
||||||
|
print("\n" + "="*60)
|
||||||
|
print("实验记录本结果auto_feeding4to3")
|
||||||
|
print("="*60)
|
||||||
|
print(json.dumps(result, indent=2, ensure_ascii=False))
|
||||||
|
print("="*60 + "\n")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
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)
|
||||||
@@ -474,7 +478,7 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
- totalMass 自动计算为所有物料质量之和
|
- totalMass 自动计算为所有物料质量之和
|
||||||
- createTime 缺失或为空时自动填充为当前日期(YYYY/M/D)
|
- createTime 缺失或为空时自动填充为当前日期(YYYY/M/D)
|
||||||
"""
|
"""
|
||||||
default_path = Path("/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx")
|
default_path = Path("/Users/sml/work/Unilab/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx")
|
||||||
path = Path(xlsx_path) if xlsx_path else default_path
|
path = Path(xlsx_path) if xlsx_path else default_path
|
||||||
print(f"[create_orders] 使用 Excel 路径: {path}")
|
print(f"[create_orders] 使用 Excel 路径: {path}")
|
||||||
if path != default_path:
|
if path != default_path:
|
||||||
@@ -622,6 +626,9 @@ class BioyondCellWorkstation(BioyondWorkstation):
|
|||||||
return response
|
return response
|
||||||
# 等待完成报送
|
# 等待完成报送
|
||||||
result = self.wait_for_order_finish(order_code)
|
result = self.wait_for_order_finish(order_code)
|
||||||
|
print("实验记录本========================create_orders========================")
|
||||||
|
print(result)
|
||||||
|
print("========================")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# 2.7 启动调度
|
# 2.7 启动调度
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import os
|
|||||||
# BioyondCellWorkstation 默认配置(包含所有必需参数)
|
# BioyondCellWorkstation 默认配置(包含所有必需参数)
|
||||||
API_CONFIG = {
|
API_CONFIG = {
|
||||||
# API 连接配置
|
# API 连接配置
|
||||||
# "api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.1.143:44389"),#实机
|
# "api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.11.118:44389"),#实机
|
||||||
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.11.219:44388"),# 仿真机
|
"api_host": os.getenv("BIOYOND_API_HOST", "http://172.16.11.219: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")),
|
||||||
@@ -17,7 +17,7 @@ API_CONFIG = {
|
|||||||
"report_token": os.getenv("BIOYOND_REPORT_TOKEN", "CHANGE_ME_TOKEN"),
|
"report_token": os.getenv("BIOYOND_REPORT_TOKEN", "CHANGE_ME_TOKEN"),
|
||||||
|
|
||||||
# HTTP 服务配置
|
# HTTP 服务配置
|
||||||
"HTTP_host": os.getenv("BIOYOND_HTTP_HOST", "172.16.11.2"), # HTTP服务监听地址,监听计算机飞连ip地址
|
"HTTP_host": os.getenv("BIOYOND_HTTP_HOST", "172.16.10.148"), # HTTP服务监听地址,监听计算机飞连ip地址
|
||||||
"HTTP_port": int(os.getenv("BIOYOND_HTTP_PORT", "8080")),
|
"HTTP_port": int(os.getenv("BIOYOND_HTTP_PORT", "8080")),
|
||||||
"debug_mode": False,# 调试模式
|
"debug_mode": False,# 调试模式
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -634,6 +634,12 @@ class CoincellDeck(Deck):
|
|||||||
self.assign_child_resource(waste_tip_box, Coordinate(x=778.0, y=622.0, z=0))
|
self.assign_child_resource(waste_tip_box, Coordinate(x=778.0, y=622.0, z=0))
|
||||||
|
|
||||||
|
|
||||||
|
def YH_Deck(name=""):
|
||||||
|
cd = CoincellDeck(name=name)
|
||||||
|
cd.setup()
|
||||||
|
return cd
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
deck = create_coin_cell_deck()
|
deck = create_coin_cell_deck()
|
||||||
print(deck)
|
print(deck)
|
||||||
@@ -22,7 +22,7 @@ BIOYOND_PolymerReactionStation_Deck:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
YB_Deck11:
|
BIOYOND_YB_Deck:
|
||||||
category:
|
category:
|
||||||
- deck
|
- deck
|
||||||
class:
|
class:
|
||||||
@@ -34,3 +34,15 @@ YB_Deck11:
|
|||||||
init_param_schema: {}
|
init_param_schema: {}
|
||||||
registry_type: resource
|
registry_type: resource
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
|
CoincellDeck:
|
||||||
|
category:
|
||||||
|
- deck
|
||||||
|
class:
|
||||||
|
module: unilabos.devices.workstation.coin_cell_assembly.YB_YH_materials:YH_Deck
|
||||||
|
type: pylabrobot
|
||||||
|
description: BIOYOND PolymerReactionStation Deck
|
||||||
|
handles: []
|
||||||
|
icon: koudian.webp
|
||||||
|
init_param_schema: {}
|
||||||
|
registry_type: resource
|
||||||
|
version: 1.0.0
|
||||||
|
|||||||
@@ -16,9 +16,12 @@ electrode_colors = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ElectrodeSheetState(TypedDict):
|
class ElectrodeSheetState(TypedDict):
|
||||||
|
diameter: float # 直径 (mm)
|
||||||
|
thickness: float # 厚度 (mm)
|
||||||
mass: float # 质量 (g)
|
mass: float # 质量 (g)
|
||||||
material_type: str # 材料类型(铜、铝、不锈钢、弹簧钢等)
|
material_type: str # 材料类型(铜、铝、不锈钢、弹簧钢等)
|
||||||
color: str # 材料类型对应的颜色
|
color: str # 材料类型对应的颜色
|
||||||
|
info: Optional[str] # 附加信息
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeSheet(ResourcePLR):
|
class ElectrodeSheet(ResourcePLR):
|
||||||
@@ -27,18 +30,23 @@ class ElectrodeSheet(ResourcePLR):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
name: str = "极片",
|
name: str = "极片",
|
||||||
size_x=10,
|
size_x: float = 10,
|
||||||
size_y=10,
|
size_y: float = 10,
|
||||||
size_z=10,
|
size_z: float = 10,
|
||||||
category: str = "electrode_sheet",
|
category: str = "electrode_sheet",
|
||||||
model: Optional[str] = None,
|
model: Optional[str] = None,
|
||||||
|
**kwargs
|
||||||
):
|
):
|
||||||
"""初始化极片
|
"""初始化极片
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
name: 极片名称
|
name: 极片名称
|
||||||
|
size_x: 长度 (mm)
|
||||||
|
size_y: 宽度 (mm)
|
||||||
|
size_z: 高度 (mm)
|
||||||
category: 类别
|
category: 类别
|
||||||
model: 型号
|
model: 型号
|
||||||
|
**kwargs: 其他参数传递给父类
|
||||||
"""
|
"""
|
||||||
super().__init__(
|
super().__init__(
|
||||||
name=name,
|
name=name,
|
||||||
@@ -47,12 +55,14 @@ class ElectrodeSheet(ResourcePLR):
|
|||||||
size_z=size_z,
|
size_z=size_z,
|
||||||
category=category,
|
category=category,
|
||||||
model=model,
|
model=model,
|
||||||
|
**kwargs
|
||||||
)
|
)
|
||||||
self._unilabos_state: ElectrodeSheetState = ElectrodeSheetState(
|
self._unilabos_state: ElectrodeSheetState = ElectrodeSheetState(
|
||||||
diameter=14,
|
diameter=14,
|
||||||
thickness=0.1,
|
thickness=0.1,
|
||||||
mass=0.5,
|
mass=0.5,
|
||||||
material_type="copper",
|
material_type="copper",
|
||||||
|
color="#8b4513",
|
||||||
info=None
|
info=None
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -72,7 +82,7 @@ class ElectrodeSheet(ResourcePLR):
|
|||||||
def PositiveCan(name: str) -> ElectrodeSheet:
|
def PositiveCan(name: str) -> ElectrodeSheet:
|
||||||
"""创建正极壳"""
|
"""创建正极壳"""
|
||||||
sheet = ElectrodeSheet(name=name, size_x=12, size_y=12, size_z=3.0, model="PositiveCan")
|
sheet = ElectrodeSheet(name=name, size_x=12, size_y=12, size_z=3.0, model="PositiveCan")
|
||||||
sheet.load_state({"material_type": "aluminum", "color": electrode_colors["PositiveCan"]})
|
sheet.load_state({"diameter": 20.0, "thickness": 0.5, "mass": 0.5, "material_type": "aluminum", "color": electrode_colors["PositiveCan"], "info": None})
|
||||||
return sheet
|
return sheet
|
||||||
|
|
||||||
|
|
||||||
@@ -135,18 +145,23 @@ class Battery(Container):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
name: str = "电池",
|
name: str = "电池",
|
||||||
size_x=12,
|
size_x: float = 12,
|
||||||
size_y=12,
|
size_y: float = 12,
|
||||||
size_z=6,
|
size_z: float = 6,
|
||||||
category: str = "battery",
|
category: str = "battery",
|
||||||
model: Optional[str] = None,
|
model: Optional[str] = None,
|
||||||
|
**kwargs
|
||||||
):
|
):
|
||||||
"""初始化电池
|
"""初始化电池
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
name: 电池名称
|
name: 电池名称
|
||||||
|
size_x: 长度 (mm)
|
||||||
|
size_y: 宽度 (mm)
|
||||||
|
size_z: 高度 (mm)
|
||||||
category: 类别
|
category: 类别
|
||||||
model: 型号
|
model: 型号
|
||||||
|
**kwargs: 其他参数传递给父类
|
||||||
"""
|
"""
|
||||||
super().__init__(
|
super().__init__(
|
||||||
name=name,
|
name=name,
|
||||||
@@ -155,6 +170,7 @@ class Battery(Container):
|
|||||||
size_z=size_z,
|
size_z=size_z,
|
||||||
category=category,
|
category=category,
|
||||||
model=model,
|
model=model,
|
||||||
|
**kwargs
|
||||||
)
|
)
|
||||||
self._unilabos_state: BatteryState = BatteryState(
|
self._unilabos_state: BatteryState = BatteryState(
|
||||||
color=electrode_colors["Battery"],
|
color=electrode_colors["Battery"],
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from os import name
|
from os import name
|
||||||
from pylabrobot.resources import Deck, Coordinate, Rotation
|
from pylabrobot.resources import Deck, Coordinate, Rotation
|
||||||
|
|
||||||
from unilabos.resources.bioyond.warehouses import (
|
from unilabos.resources.bioyond.YB_warehouses import (
|
||||||
bioyond_warehouse_1x4x4,
|
bioyond_warehouse_1x4x4,
|
||||||
bioyond_warehouse_1x4x4_right, # 新增:右侧仓库 (A05~D08)
|
bioyond_warehouse_1x4x4_right, # 新增:右侧仓库 (A05~D08)
|
||||||
bioyond_warehouse_1x4x2,
|
bioyond_warehouse_1x4x2,
|
||||||
|
|||||||
Reference in New Issue
Block a user