组态图概述

核心功能模块

组态图管理

  • 设备/物料配置管理:管理图中节点的参数配置
  • 层级关系管理:处理工作站包含子设备、物料耗材的父子关系
  • 物理连接关系:管理流体管路连接、AGV/机械臂/直线模组转运连接
  • 通信转接关系:处理IO设备通过IO板卡或PLC转为Modbus等通信协议

图形数据处理

  • 多格式支持:支持JSON和GraphML格式的组态图文件
  • 图形转换:提供节点链接数据的标准化处理
  • 资源初始化:将配置转换为可执行的资源实例

协议编译系统

  • 泵传输协议:基于图结构进行路径规划的流体传输
  • 分离协议:液液萃取和相分离控制
  • 清洗协议:容器清洗程序生成
  • 蒸发协议:旋转蒸发仪操作控制

设备抽象层

  • 设备注册表:统一管理不同厂家和类型的实验仪器
  • 通信中间件:基于ROS2的设备间通信
  • 动作映射:将设备驱动映射到标准动作指令

技术架构

系统启动流程

系统通过unilab命令启动,支持组态图文件或分离的设备/资源配置:

# 使用组态图启动  
unilab -g path/to/graph.json

配置文件结构

组态图采用节点-链接结构,包含设备层级关系和物理连接

用户场景

实验室配置场景

  • 流动化学实验室:单台电脑通过串口控制所有设备
  • 大型分布式实验室:多台工控机组成分布式系统

协议执行场景

系统将高级实验操作编译为具体设备指令序列,实现从"移液2000mL"到具体泵阀控制指令的转换。

接收“移液”动作,编译为一系列泵指令和阀指令

Goal received: {
    'from_vessel': 'flask_acetone', 
    'to_vessel': 'reactor', 
    'volume': 2000.0, 
    'flowrate': 100.0
}, running steps: 
[
{
    "device_id": "pump_reagents", 
    "action_name": "set_valve_position", 
    "action_kwargs": {"command": "3"}
}, 
{
    "device_id": "pump_reagents",   
    "action_name": "set_position", 
    "action_kwargs": {
        "position": 2000.0, 
        "max_velocity": 100.0
    }
}, 
{
    "device_id": "pump_reagents", 
    "action_name": "set_valve_position", 
    "action_kwargs": {"command": '5'}
}, 
{
    "device_id": "pump_reagents", 
    "action_name": "set_position", 
    "action_kwargs": {
        "position": 0.0, 
        "max_velocity": 100.0
    }
}
]

技术要求

支持的文件格式

  • JSON (node-link格式)
  • GraphML (yEd兼容)

通信协议

  • ROS2作为主要通信中间件
  • MQTT用于云端连接
  • HTTP用于Web界面

设备兼容性

  • Python类设备驱动
  • C#类设备驱动
  • 串口通信设备
  • Modbus协议设备

Was this page helpful?