1. Dewesoft平台架构与开发环境搭建

Dewesoft X/X3 是一套面向高通道数、高采样率测试场景的数据采集与分析软件平台。要在此基础上做自动化与数据管理开发,第一步不是急着写脚本,而是先弄清它的分层结构、硬件抽象方式,以及外部程序究竟通过哪些接口与它对话。理解这三件事,后续的 SDK 调用、许可证配置和脚本运行才有稳定的落脚点。

一、Dewesoft X/X3 的软件架构

从开发者视角看,Dewesoft X/X3 可以划分为四层。最底层是硬件抽象层(DAQ HAL),它把 SIRIUS、MINITAUR、KRYPTON、DS 系列等不同采集硬件的通道、量程、激励、计数器、CAN 等能力统一成软件可识别的逻辑通道。中间是数据引擎层,负责采样调度、时间同步、实时运算(数学通道、滤波、FFT、阶次分析)与数据缓冲。再往上是应用与配置层,即用户在 X/X3 界面中建立的通道设置、传感器标定、显示页面、记录规则和报警逻辑,这些配置最终以 .dxd 工程文件形式保存。最上层是接口与扩展层,包括 Dewesoft SDK、.NET API、Python 接口、DCOM/自动化接口以及导出与数据管理组件。

关键认识是:工程文件 .dxd 是配置的载体,而 SDK/API 是运行时与配置的操控入口。自动化脚本通常做两件事——按模板生成或修改配置,以及在采集过程中读取数据、触发记录、导出结果。因此开发环境搭建的核心,是让外部程序能够稳定地“看到”Dewesoft 的通道与状态。

Dewesoft X/X3 分层架构与开发接口关系 接口与扩展层 Dewesoft SDK | .NET API | Python 接口 | DCOM 自动化 | 数据导出组件 应用与配置层 通道设置 | 传感器标定 | 显示页面 | 记录规则 | 报警逻辑 → 工程文件 .dxd 数据引擎层 采样调度 | 时间同步 | 数学通道 | 滤波 / FFT / 阶次 | 数据缓冲 硬件抽象层 DAQ HAL SIRIUS | MINITAUR | KRYPTON | DS 系列 → 统一逻辑通道 外部程序操控入口 开发闭环: 配置模板(.dxd) → 脚本加载/修改 → 启动采集 → 读取通道数据 → 触发记录 → 导出结果

二、DAQ 硬件抽象层的作用

硬件抽象层是自动化脚本能“通用”的前提。假设同一套测试脚本既要跑在 8 通道 SIRIUS 上,又要跑在 16 通道 MINITAUR 上,如果脚本直接操作硬件寄存器,移植成本极高。HAL 把物理通道映射为逻辑通道,脚本只需按逻辑通道名或索引访问,例如 AI1、Counter1、CAN1.Signal_A。量程、耦合方式(DC/AC/IEPE)、采样率、激励电压等参数也通过统一属性暴露。

实际开发中要特别注意两点:一是通道命名必须与工程模板一致,脚本按名称查找通道时,名称不匹配会直接返回空;二是采样率与通道组绑定,同一采集卡上的通道通常共享采样时钟,跨卡同步依赖同步线或 IEEE 1588,脚本读取时间戳时应确认同步状态,否则多卡数据会出现固定偏移。

三、开发工具链与接口选择

Dewesoft 提供多种开发入口,选择取决于任务性质:

  • Dewesoft SDK:面向深度集成,可访问底层数据流、自定义处理模块,适合做实时算法嵌入。
  • .NET API:适合 Windows 桌面工具、测试序列管理、与现有 C# 测试框架集成,调用工程、通道、记录控制较方便。
  • Python 接口:适合数据分析、批量后处理、快速原型,配合 NumPy/Pandas 做结果统计与报告生成。
  • DCOM 自动化:适合已有 VBA、LabVIEW 或旧脚本体系,通过 COM 对象控制 Dewesoft 启动、加载工程、开始/停止记录。

对初学者,建议先用 Python 或 .NET 跑通“加载工程—启动采集—读取一个通道—停止—导出”的最小闭环,再逐步扩展。开发机需安装与 Dewesoft 版本匹配的 SDK/API 运行时,并确认目标框架(如 .NET Framework 4.8 或 .NET 6+)与接口程序集一致。

四、许可证配置

Dewesoft 的许可证决定可用通道数、插件(如 CAN、视频、阶次)和自动化接口权限。配置时通常需要:确认加密狗或软授权已识别;在 Dewesoft 的 License Manager 中导入授权文件;核对已启用选项是否包含所需的 SDK/API 与插件。若脚本调用返回“权限不足”或“功能未授权”,优先检查许可证而非代码。开发环境与现场设备应使用一致的授权级别,避免脚本在开发机通过、在现场失败。

五、第一个自动化脚本运行示例

下面给出一个 Python 风格的示例流程(参数为教学示例,实际名称以本机工程为准)。假设已有一个模板工程 demo_basic.dxd,其中包含逻辑通道 AI1,采样率 10 kHz。

# 示例:加载工程并读取 AI1 的实时值(教学示例,非实测结果)
import dewesoft_api as ds          # 假设的接口模块名

app = ds.Application()
app.LoadSetup(r"C:\Test\demo_basic.dxd")   # 加载工程模板
app.StartAcquisition()                      # 启动采集

ch = app.GetChannel("AI1")                  # 按逻辑通道名获取
print("采样率:", ch.SampleRate)             # 预期 10000
for i in range(5):
    print("AI1 =", ch.Value)                # 读取当前值
    app.Wait(0.1)

app.StopAcquisition()
app.ExportData(r"C:\Test\out.csv", channels=["AI1"])
app.Quit()

运行后应观察:工程是否被正确加载(通道列表出现 AI1)、采集是否进入运行状态、打印值是否随信号变化、导出文件是否生成且行数与记录时长匹配。若 GetChannel 返回空,先核对通道名;若采集无法启动,检查硬件连接与许可证;若导出为空,检查记录是否真正触发。这个最小闭环跑通,就说明开发环境、接口权限与工程模板三者已经对齐,可以进入后续的自动化序列与数据管理开发。