mcpField
L
LabJack T-series DAQ

LabJack T-series DAQ

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

关于 LabJack T-series DAQ

LabJack T-series DAQ 是面向 LabJack T4、T7/T7-Pro 和 T8 数据采集设备的 MCP 服务,通过 LJM 读取模拟量、热电偶和数字线,也可采集波形及设置输出。目前仅经模拟 LJM 后端测试,尚未在硬件上验证。

主要功能

  1. 01读取模拟输入与设备温度
  2. 02采集热电偶温度
  3. 03读取数字输入状态
  4. 04流式采集并保存波形
  5. 05设置 DAC 和数字输出

适用场景

  1. 01读取多个模拟通道并检查浮空输入
  2. 02以指定速率采集波形并计算统计值
  3. 03读取热电偶并跟踪温度变化
  4. 04设置 DAC 输出并检查回路读数

MCP 相关

该 MCP 服务向客户端提供 LabJack 设备信息、模拟与数字读数、热电偶和流式采集工具,并提供 DAC 与数字输出控制工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-labjack": {
"command": "uvx",
"args": [
"labmcp-labjack"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-labjack
需要配置的环境变量
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-labjack0.1.3

工具

12

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

此工具无需参数。

详细介绍

LabJack T-series 数据采集设备 — MCP 服务

让 AI Agent 通过 LabJack 官方 LJM 库读取模拟输入、流式传输波形、读取热电偶、检查数字线路,并在获得你的许可后设置 LabJack T4、T7/T7-Pro 和 T8 数据采集设备上的 DAC 和数字输出。

软件包labmcp-labjack
仪器LabJack T4、T7、T7-Pro、T8(及其 OEM 版本)
接口USB、以太网、WiFi(T7-Pro)
协议LJM 库 + T-series Modbus 寄存器映射(T-Series 数据手册、寄存器映射 ljm_constants.json、labjack-ljm Python 封装)
状态🧪 模拟:已通过模拟 LJM 后端测试,尚未在硬件上验证。报告硬件测试结果

无需硬件即可试用

uvx labmcp-labjack --simulate --check
uvx labmcp-labjack --simulate --option sim_model=T8 --check     # T4, T7, T7-Pro (default) or T8

模拟器将 2 V / 10 Hz 正弦波连接到 AIN0,将热敏电阻分压器(约 2.5 V)连接到 AIN1,将 DAC0 回接到 AIN2,将 LM34 冷端传感器连接到 AIN3;使用热电偶功能时,还会将约 37 °C 的热电偶连接到 AIN0-AIN3。其他输入均接地。

连接你的 LabJack

  1. 安装 LJM(原生库和 USB 驱动),请访问 labjack.com/support/software/installers/ljm。此服务会自动安装 labjack-ljm Python 软件包,但仍需安装该原生库。
  2. 关闭其他 LabJack 软件(Kipling、LJLogM、LJStreamM)。通过 USB 连接时,一个设备同一时间只能被一个进程占用。
  3. 测试连接:
    uvx labmcp-labjack --check                                  # first LabJack found
    uvx labmcp-labjack --address 470012345 --check              # by serial number
    uvx labmcp-labjack --address 192.168.1.207 --option connection_type=ETHERNET --check
    uvx labmcp-labjack --option device_type=T4 --check          # only open a T4
    
    --address 是 LJM 标识符:序列号、IP 地址、设备名称或 ANY(默认值)。

添加到你的 MCP 客户端

Claude Code

claude mcp add labjack -- uvx labmcp-labjack --address 470012345

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

{
  "mcpServers": {
    "labjack": {
      "command": "uvx",
      "args": ["labmcp-labjack", "--address", "470012345"]
    }
  }
}

添加 --read-only 以允许测量,但阻止 DAC 和数字输出工具(set_outputs_safe 仍可使用)。添加 --option safe_dio=FIO0,FIO1,使 set_outputs_safe 始终释放这些线路,即使其他程序已驱动它们。对于其他客户端,可使用 uvx labmcp config labjack --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。

工具

工具类型描述
get_command_log👁 读取返回最近发送给仪器的原始命令和收到的回复(最新记录在最后)。可用于调试和记录操作内容。
get_connection_info👁 读取报告当前连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前启用的安全限制。请先调用此工具。
get_device_info👁 读取识别已连接的 LabJack(型号、序列号、固件、连接),并列出其功能:模拟输入、有效输入范围、分辨率索引、DAC 范围、数字线路和流速率。配置通道前请调用此工具。
read_analog_inputs👁 读取通过命令—响应方式读取一个或多个模拟输入一次,并返回电压值。
read_device_temperature👁 读取读取 LabJack 的内部温度传感器(°C,精度约为 ±2 °C)和估算的环境气温。对于 T8,还会返回每个 AIN 端子旁的传感器读数。流正在运行时无法读取。
read_digital_inputs👁 读取报告数字 I/O 线路的逻辑电平和方向(输入/输出/模拟)。
read_thermocouple👁 读取使用 T7/T8 AIN 热电偶扩展功能(B、C、E、J、K、N、R、S、T 型)读取热电偶,并返回 °C、测得的电压和冷端温度。
reconnect🛑 安全关闭并重新打开与仪器的连接(例如,仪器断电重启或重新插拔线缆后)。
set_digital_output⚠️ 危险将数字线路设为输出,并驱动为高电平(3.3 V)或低电平(0 V)。
set_outputs_safe🛑 安全将输出置于安全状态:停止任何流,将 DAC0 和 DAC1 设为 0 V,并将此服务驱动过的所有数字线路(以及 safe_dio 选项中的线路)释放为输入;也可以用 dio_mode='low' 将它们驱动为低电平。完成操作或发现异常时请使用。
stream_analog👁 读取通过硬件定时,在一个或多个模拟输入上采集波形(LJM 流模式),并返回各通道统计数据及降采样波形;还可选择将全部数据保存为 CSV。
write_dac⚠️ 危险将模拟输出(DAC0/DAC1)设为直流电压。输出会保持该值,直到更改设置或调用 set_outputs_safe。

get_connection_info、get_command_log 和 reconnect 内置于每个 LabMCP 服务中。命令日志会记录每次 LJM 寄存器读取和写入。

安全限制

限制默认值含义
max_dac_voltage_v5 VAgent 可设置的最高 DAC 电压(硬件范围:T4/T7 为 0-5 V,T8 为 0-10 V)
max_stream_duration_s60 s硬件定时流的最长时长
max_scan_rate_hz10 000 Hz最高流扫描速率(仍受设备最大值限制)

启动时可覆盖,例如:--limit max_dac_voltage_v=2.5。发送任何内容前都会检查限制。流的总采样数也限制为 200 万。

示例提示词

  • “以 ±1 V 量程读取 AIN0-AIN3,并告诉我哪些通道看起来处于浮空状态。”
  • “以 5 kHz 对 AIN0 和 AIN1 采样 2 秒,给出每个通道的均方根值和峰峰值,并将数据保存到 ~/data/run12.csv。”
  • “每隔 10 秒读取 AIN2 上的 K 型热电偶,持续一分钟,并告诉我它是否仍在升温。”
  • “将 DAC0 设为 1.25 V,然后检查 AIN2 上的回环,并以毫伏为单位报告误差。”
  • “目前哪些数字线路设为输出?它们的电平是多少?”
  • “我们结束了——将所有输出恢复到安全状态。”

说明

  • 会强制执行型号差异。 有效输入范围(AIN#_RANGE)和分辨率索引取自 LabJack 的寄存器映射:T7 为 ±10/±1/±0.1/±0.01 V,索引为 0-8(T7-Pro 为 0-12,但 9-12 无法用于流式采集);T8 为 ±11 … ±0.018 V,索引为 0-16(所有输入共用一个索引);T4 为固定范围(AIN0-3 为 ±10 V,AIN4-11 为 0-2.5 V),索引为 0-5。DAC 范围:T4/T7 为 0-5 V,T8 为 0-10 V。
  • 设置会持久保留。 通过 read_analog_inputs 设置的范围、分辨率和差分设置会保留在设备上,直到更改设置或断电。省略的设置保持原样;每次读数都会报告测量所依据的参考端(GND、T7 的负输入端或 T8 的隔离端子)。
  • 读取数字线路不会改变其方向。 read_digital_inputs 使用 DIO_STATE/DIO_DIRECTION 位掩码。(读取 FIO3 之类的单线路寄存器会将该线路切换为输入。)
  • T4 灵活 I/O。 AIN4-AIN11 与 FIO4-EIO3 共用端子。当线路为数字输出时,服务会拒绝读取这些 AIN,因为读取操作会将其切换为模拟模式,并释放其当前驱动的对象。
  • set_outputs_safe 的默认值是 input,即 T 系列设备上电时的状态(带上拉的输入)。如果连接的继电器板会将带上拉的输入视为“开启”,请改用 dio_mode="low"。
  • 热电偶使用 AIN 扩展功能(AIN#_EF_INDEX 20-30)。当 cjc="internal" 时,CJC 寄存器会设为其文档规定的默认值 TEMPERATURE_DEVICE_K(地址 60052),T8 固件会将其映射到各通道自身的端子传感器(TEMPERATURE#_CAPTURE);cjc="lm34" 使用 LabJack 的 LM34 转换方式(55.56 K/V,255.37 K)。输入端开路时会返回 valid=false(设备报告 -9999)。
  • 流式采集遵循 LabJack 的 stream_basic.py 示例(内部时钟、无触发、自动稳定)。流式采集运行期间,设备会阻止命令-响应式模拟读取。跳过的扫描(缓冲区溢出)会被报告,并留空。set_outputs_safe 不会等待正在运行的流式采集:它会在下一次读取时停止采集(返回的部分结果中会包含 aborted: true)。流式采集的速度为每秒 1 次扫描或更快(以便及时停止),且至少会执行两次扫描;max_stream_duration_s 限制检查的就是这一实际时长。返回的波形会通过保留每个区块的最小值和最大值进行降采样,因此不会丢失短暂尖峰;save_path 必须指向一个新的 .csv 文件(绝不会覆盖已有文件,且会在开始流式采集前检查路径)。
  • **导入 LJM 封装库时,**如果缺少原生库,就会向 stdout 打印内容。服务会重定向导入输出,确保 MCP 标准输入输出通道不会受到干扰,并提供明确的安装提示。

硬件验证

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

评论

支持 Markdown

第一次接触 MCP?

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

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