关于 Alicat Mass Flow & Pressure Controller
面向 Alicat 流量计和控制器的 MCP 服务,通过 ASCII 串口协议读取流量、压力与温度,并提供设定点、校准气体及阀门控制。适用于实验室仪器操作;目前仅经模拟器测试,尚未在硬件上验证。
主要功能
- 01读取流量、压力和温度
- 02设置流量或压力设定点
- 03切换气体校准
- 04记录读数序列
- 05保持或关闭阀门
适用场景
- 01监测流量稳定性与压力漂移
- 02调整控制器目标流量
- 03更换气体校准后读取数据
- 04紧急停止气体流动
MCP 相关
向 MCP 客户端提供读取仪器信息、记录数据及控制 Alicat 设备的工具。支持只读模式和设定点安全限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx labmcp-alicatLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
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 去除)和逼真的数据帧。
连接仪器
- 仪器设置:出厂设置为单元 ID A、19200 波特率、8 个数据位、无校验位、1 个停止位、无流控(MENU → SETUP → RS-232 Serial / RS-485 Serial)。如果多台设备共用一个 RS-485 端口,请为每台设备设置不同的单元 ID。设备必须处于轮询模式(使用字母 ID,而不是
@流式传输)。 - **控制器:**将 MENU → CONTROL → Setpoint Setup → Setpoint Source 设为 Serial/Front Panel。如果设定值来源为模拟信号,控制器会静默忽略串行设定值(
get_device_info会对此发出警告)。 - 查找端口:
uvx labmcp ports - 测试连接:
非默认波特率需写入地址: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 bridgeserial://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_setpoint | 100(设备单位) | Agent 可发送的最大设定值幅度,以控制器自身的设定值单位计(SCCM、SLPM、PSIA 等,参见 get_device_info)。超过设备满量程的设定值也会被拒绝。 |
max_series_duration_s | 600 s | Agent 可启动的最长记录序列时长(绝不超过 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 设备上捕获的回复进行交叉核对。
硬件验证
| 型号 | 固件 | 接口 | 验证者 | 日期 |
|---|---|---|---|---|
| 暂无: 成为首位验证者 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。