Skip to content

支持阿尔泰科技DAM3000M系列控制仪表#240

Closed
newtontech wants to merge 6 commits intodeepmodeling:mainfrom
newtontech:feat/issue-237-altai-dam-support
Closed

支持阿尔泰科技DAM3000M系列控制仪表#240
newtontech wants to merge 6 commits intodeepmodeling:mainfrom
newtontech:feat/issue-237-altai-dam-support

Conversation

@newtontech
Copy link
Copy Markdown

概述

本PR实现了对阿尔泰科技DAM3000M系列控制仪表的支持,解决了 #237 提出的需求。

新增功能

1. DAM3060V - 4通道模拟输出模块

  • 支持4通道独立电压输出控制
  • 支持4种输出范围模式:
    • -10V ~ 10V
    • -5V ~ 5V
    • 0V ~ 10V
    • 0V ~ 5V
  • 提供标准接口:
    • set_analog_output(channel, voltage): 设置输出电压
    • set_output_range_mode(channel, range_code): 设置输出范围
    • get_range_mode(channel): 获取当前量程范围

2. DAM3151 - 32通道模拟输入模块

  • 支持32通道同步数据采集
  • 支持电压和电流两种测量模式
  • 支持12种测量范围:
    • 电压: -10V10V, -5V5V, -1V1V, -500mV500mV, -150mV150mV, 0V10V, 0V5V, 1V5V
    • 电流: -20mA20mA, 0mA20mA, 4mA20mA, 0mA22mA
  • 提供标准接口:
    • measure_all_channels(): 测量所有通道
    • measure_channel(channel): 测量单个通道
    • set_measurement_range_mode(channel, range_code): 设置测量范围
    • get_range_mode(channel): 获取当前量程范围

3. 设备基类 (DAMDeviceBase)

  • 封装DLL调用细节
  • 支持设备句柄共享(同一串口)
  • 提供通用的读写寄存器接口
  • 实现上下文管理器模式

技术实现

目录结构

unilabos/devices/altai_dam/
├── __init__.py          # 模块导出
├── dam_base.py          # 设备基类
├── dam3060v.py          # DAM3060V实现
└── dam3151.py           # DAM3151实现

设计特点

  1. 封装良好: 隐藏DLL调用细节,提供简洁的Python API
  2. 类型安全: 使用类型注解,提高代码可读性
  3. 错误处理: 完善的参数检查和异常处理
  4. 资源管理: 支持上下文管理器,自动释放资源
  5. 句柄共享: 同一串口的设备共享句柄,提高效率

使用示例

DAM3060V - 设置电压输出

from unilabos.devices.altai_dam import DAM3060V

# 创建设备实例 (COM4, 9600 bps, 设备ID=1)
with DAM3060V(com_id=4, baud_rate=3, device_id=1) as device:
    # 设置通道0输出范围为 -5V ~ 5V
    device.set_output_range_mode(0, 8)
    
    # 设置通道0输出 2.5V
    device.set_analog_output(0, 2.5)
    
    # 设置通道1输出范围为 0V ~ 10V
    device.set_output_range_mode(1, 14)
    
    # 设置通道1输出 5.0V
    device.set_analog_output(1, 5.0)

DAM3151 - 测量数据采集

from unilabos.devices.altai_dam import DAM3151

# 创建设备实例 (COM4, 9600 bps, 设备ID=5)
with DAM3151(com_id=4, baud_rate=3, device_id=5) as device:
    # 设置通道0为 -20mA ~ 20mA 电流测量
    device.set_measurement_range_mode(0, 10)
    
    # 设置通道1为 -5V ~ 5V 电压测量
    device.set_measurement_range_mode(1, 8)
    
    # 测量所有通道
    measurements = device.measure_all_channels()
    print(f"通道0电流: {measurements[0]} mA")
    print(f"通道1电压: {measurements[1]} V")
    
    # 测量单个通道
    current = device.measure_channel(0)
    print(f"通道0电流: {current} mA")

测试计划

  • 单元测试:设备初始化和参数验证
  • 集成测试:实际硬件通信测试
  • 性能测试:多通道并发采集测试
  • 稳定性测试:长时间运行测试

依赖说明

  • 系统要求: Windows系统(DLL限制)
  • DLL文件: 需要将 DAM3000M_64.dll 放置在工作目录或指定路径

文档

  • 使用文档
  • API参考文档
  • 示例代码

相关Issue

Fixes #237

注意事项

  1. 本实现仅支持Windows系统(DLL限制)
  2. 需要配合阿尔泰官方DLL使用
  3. 建议在实际使用前进行充分测试

致谢

参考了 ART-CONTROL-Python-Interface 的实现思路。

OpenClaw Bot and others added 6 commits February 28, 2026 04:50
- Add i18n module with gettext-based translation system
- Support English (en_US) and Chinese (zh_CN) languages
- Add translation files (.po/.mo) for both languages
- Integrate i18n into main.py, banner_print.py
- Add language switching via environment variable or code
- Add comprehensive tests for i18n functionality
- Add documentation for i18n usage

Resolves deepmodeling#32
@newtontech
Copy link
Copy Markdown
Author

Closing in favor of #243 which removes i18n changes and only contains Altai DAM device support.

@newtontech newtontech closed this Mar 14, 2026
newtontech pushed a commit to newtontech/Uni-Lab-OS that referenced this pull request Mar 14, 2026
- DAM3060V: 4-channel analog output module
- DAM3151: 32-channel analog input module
- DAMDeviceBase: Base class for device encapsulation

Fixes deepmodeling#237
(Rebased from PR deepmodeling#240, removed unrelated i18n changes)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

支持阿尔泰科技DAM3000M系列控制仪表

1 participant