mcpField
A
Alicat Mass Flow & Pressure Controller

Alicat Mass Flow & Pressure Controller

本地服务
github.com科研与教育235 周前更新

关于 Alicat Mass Flow & Pressure Controller

面向 Alicat 流量计和控制器的 MCP 服务,通过 ASCII 串口协议读取流量、压力与温度,并提供设定点、校准气体及阀门控制。适用于实验室仪器操作;目前仅经模拟器测试,尚未在硬件上验证。

主要功能

  1. 01读取流量、压力和温度
  2. 02设置流量或压力设定点
  3. 03切换气体校准
  4. 04记录读数序列
  5. 05保持或关闭阀门

适用场景

  1. 01监测流量稳定性与压力漂移
  2. 02调整控制器目标流量
  3. 03更换气体校准后读取数据
  4. 04紧急停止气体流动

MCP 相关

向 MCP 客户端提供读取仪器信息、记录数据及控制 Alicat 设备的工具。支持只读模式和设定点安全限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-alicat": {
"command": "uvx",
"args": [
"labmcp-alicat"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-alicat
需要配置的环境变量
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilabmcp-alicat0.1.2

工具

14

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Alicat 质量流量与压力控制器 — MCP 服务

让 AI Agent 通过 Alicat 文档所述的 ASCII 串行协议,读取 Alicat Scientific 质量流量计、控制器和压力控制器的气体流量、压力与温度,设置流量或压力设定值,切换气体校准、归零,以及保持或关闭阀门。

软件包labmcp-alicat
仪器质量流量控制器(MC、MCR、MCS、MCE、MCV、MCW、...)、质量流量计(M、MS、MW、...)、压力控制器和压力表(PC、PCD、P)、液体流量设备(L、LC):任何采用 RS-232/RS-485 ASCII 串行接口的 Alicat 设备(不包括 Modbus/Profibus/EtherNet/IP 版本)
接口RS-232、RS-485(每个端口最多支持 26 台设备,单元 ID 为 A-Z)、USB(虚拟 COM 端口)、通过串行转以太网桥接器连接的以太网
协议Alicat ASCII 串行(串行通信入门指南,Rev. 2,Feb 2023;操作手册 DOC-MANUAL-MPL,Rev. 2,“Digital Control”)
状态🧪 模拟:已通过线级 Alicat 模拟器测试,尚未在硬件上验证。报告硬件测试结果

无需硬件即可试用

uvx labmcp-alicat --simulate --check

模拟器使用固件 10v20 的 MC-500SCCM-D,气体为 N2,并模拟一阶流量响应、微小的传感器零点偏移(使用 tare_flow 去除)和逼真的数据帧。

连接仪器

  1. 仪器设置:出厂设置为单元 ID A、19200 波特率、8 个数据位、无校验位、1 个停止位、无流控(MENU → SETUP → RS-232 Serial / RS-485 Serial)。如果多台设备共用一个 RS-485 端口,请为每台设备设置不同的单元 ID。设备必须处于轮询模式(使用字母 ID,而不是 @ 流式传输)。
  2. **控制器:**将 MENU → CONTROL → Setpoint Setup → Setpoint Source 设为 Serial/Front Panel。如果设定值来源为模拟信号,控制器会静默忽略串行设定值(get_device_info 会对此发出警告)。
  3. 查找端口:uvx labmcp ports
  4. 测试连接:
    uvx labmcp-alicat --address /dev/ttyUSB0 --check                   # Linux
    uvx labmcp-alicat --address /dev/tty.usbserial-XXXX --check        # macOS
    uvx labmcp-alicat --address COM4 --check                           # Windows
    uvx labmcp-alicat --address COM4 --option unit_id=B --check        # device B on a shared bus
    uvx labmcp-alicat --address tcp://192.168.1.60:4001 --check        # serial-to-Ethernet bridge
    
    非默认波特率需写入地址:serial://COM4?baudrate=115200。

添加到 MCP 客户端

Claude Code

claude mcp add alicat -- uvx labmcp-alicat --address /dev/ttyUSB0

Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、……)

{
  "mcpServers": {
    "alicat": {
      "command": "uvx",
      "args": ["labmcp-alicat", "--address", "/dev/ttyUSB0", "--limit", "max_setpoint=200"]
    }
  }
}

添加 --read-only 可允许读取流量,但会阻止设置设定值、更换气体、归零和保持阀门(close_valve 仍可用)。如果一条总线上连接多台设备,请为每个单元 ID 添加一个服务条目(--option unit_id=A、--option unit_id=B、……)。对于其他客户端,可使用 uvx labmcp config alicat --address /dev/ttyUSB0 --client vscode 生成配置片段。

工具

工具类型描述
close_valve🛑 安全停止流动:将流量设定值设为 0,并保持所有阀门关闭(Alicat HC)。可随时安全调用。对于压力控制器,压力设定值保持不变,阀门保持关闭,从而锁住当前压力。
get_command_log👁 读取返回最近发送给仪器的原始命令和收到的回复(最新的排在最后)。可用于调试和记录已执行的操作。
get_connection_info👁 读取报告已连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限值。请先调用此工具。
get_device_info👁 读取报告型号、序列号、固件、校准日期、设备是否为控制器、每个数据帧字段的单位、设定值满量程和设定值来源。
hold_valve🎛 控制将控制器的阀门冻结在当前位置(HLD):闭环控制停止,因此如果上游压力发生变化,流量会漂移。使用 resume_control 解除冻结,或使用 close_valve 完全关闭。
list_gases👁 读取列出此质量流量设备上安装的气体(编号和简称),供 set_gas 使用。液体和仅测量压力的设备没有气体列表。
log_flow_series👁 读取记录数据帧时间序列(例如,用于检查流量稳定性、设定值变化后的稳定过程或压力漂移)。返回每个数据点,以及质量流量(或非流量设备的主要测量量)的平均值/标准差/最小值/最大值。
read_flow👁 读取读取实时数据帧:质量流量、体积流量、压力、温度、设定值(控制器)、当前气体和任何状态代码;每项均使用设备的工程单位。
reconnect🛑 安全关闭并重新打开与仪器的连接(例如,仪器断电后重新通电或重新插拔线缆后)。
resume_control⚠️ 危险取消任何阀门冻结,并恢复对当前设定值的闭环控制。如果设定值不为 0,流量将立即恢复(请先使用 read_flow 检查)。
set_flow_setpoint⚠️ 危险更改控制器设定值:启动、更改或停止气体流量(或在压力控制器上设定目标压力)。设为 0 会停止流动,并关闭流量控制器上的阀门。负值仅适用于双向控制器。流量计、超过 max_setpoint 限值或超过设备满量程时,操作会被拒绝。
set_gas🎛 控制选择质量流量设备使用的气体校准(Gas Select)。这会改变流量的计算方式,因此请在设定值为 0 时操作。只有设备上已安装的气体才可使用(参见 list_gases);腐蚀性气体需要防腐型(S 系列)硬件。
tare_flow🎛 控制对流量读数去皮(归零)。仅限设备内无流量时操作:关闭上游,或将控制器设定值设为 0,并使管路处于正常工作压力。若设定值不为 0 或仍测得显著流量,操作会被拒绝。
tare_pressure🎛 控制对压力读数去皮。要求无流量,且设备与大气相通(表压设备);或无流量且工艺管路未加压(仅适用于绝压、配备气压计的设备)。

get_connection_info、get_command_log 和 reconnect 是每个 LabMCP 服务内置的工具。

安全限制

限制默认值含义
max_setpoint100(设备单位)Agent 可发送的最大设定值幅度,以控制器自身的设定值单位计(SCCM、SLPM、PSIA 等,参见 get_device_info)。超过设备满量程的设定值也会被拒绝。
max_series_duration_s600 sAgent 可启动的最长记录序列时长(绝不超过 850 s,因此序列总能在一次工具调用内完成)

在启动时覆盖,例如 --limit max_setpoint=500。默认值 100 刻意设得较为保守:对于 500 SCCM 的控制器,这会将 Agent 的上限设为 100 SCCM,直到你调高该值。

示例提示词

  • “这是什么控制器?它设定的气体是什么?单位和满量程是多少?”
  • “将 N2 流量设为 50 SCCM,每隔 0.5 s 记录一次,持续 30 s,并告诉我稳定到 1% 范围内花了多长时间。”
  • “将控制器切换为 CO2,然后将设定值依次升至 0 → 20 → 40 → 60 SCCM,每个步骤保持 2 分钟,并总结每个步骤的平均流量和压力。”
  • “气体关闭时,流量读数为 0.8 SCCM。关闭阀门,然后将流量传感器去皮。”
  • “生物反应器的通气好像出了问题:立即停止流量。”

备注

  • 数据帧解析。 连接时,服务会向设备请求其数据帧定义(??D*),并根据该定义解析每次轮询,因此字段名称、顺序和工程单位均来自设备本身(支持解析 6v+ 列式表格和较旧的 6v 前表格)。如果设备不响应 ??D*,则会根据 Serial Primer(第 8 页)和手册中的默认布局按位置解析数据帧;每条读数中的 layout_source 会注明使用了哪种方法。
  • 设定值在固件 9v00+ 上使用 LS,在较旧固件上使用 S。每次更改后都会检查回复:如果控制器报告的请求设定值与所设不同(超出范围、单向设备上的负值,或设定值来源为模拟信号),工具会报错并说明设备当前使用的值。
  • close_valve 会将流量设定值设为 0(流量控制器会因此关闭阀门),然后发送 HC(保持阀门关闭,固件 5v07+),并确认回复中有 HLD。对于压力控制器,它只发送 HC,因为根据零压力控制设置,0 压力设定值可能会打开阀门(Serial Primer 第 17 页)。resume_control(C)会解除保持状态;由于流量会从当前设定值重新开始,因此此操作被标记为危险操作。
  • 必须在无流量时执行调零。若流量控制器的设定值不为 0,或设备读数仍超过满量程的 2%,tare_flow 和 tare_pressure 会拒绝执行。它们无法检测所有不安全情况(例如流量计中仍有少量实际流量),因此仍应先关闭气体。表压调零时,端口必须与大气相通;绝压调零则需要气压计选项且管路未加压。
  • log_flow_series 的 save_path 必须是一个新的 .csv 文件:~ 会被展开,不存在的文件夹会自动创建,并且绝不会覆盖现有文件。路径会在开始记录前检查。
  • 气体选择在 10v05+ 上使用 GS(不会保存为上电默认气体,除非使用 save_as_power_up),较旧固件上使用 G。只能选择设备上已安装的气体;list_gases 会显示这些气体。
  • 安全防护: 单位 ID 后跟数字(例如 A49408)是 Alicat 的旧式整数设定值命令。驱动程序会拒绝发送此类命令。
  • 流量计和压力计会静默忽略控制器命令;如果设备的数据帧中没有设定值,服务会拒绝对其使用控制器工具。
  • 不支持:GP 固件设备(需要在单位 ID 后发送 $$)、流式模式(@)、Modbus/Profibus/EtherNet/IP 变体、累加器、批处理、PID 调节以及 COMPOSER 混合物创建。
  • 帧布局和回复格式已与开源项目 alicatlib 和驱动程序 numat/alicat 发布的、在真实 5v12 至 10v20 设备上捕获的回复进行交叉核对。

硬件验证

型号固件接口验证者日期
暂无: 成为首位验证者

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。