August 23, 2025 作者 nevstop-lab1 分钟
本文整理自知乎专栏原文,并将图片等资源本地化以便站内稳定访问。 原文链接:https://zhuanlan.zhihu.com/p/1942689627426264231
在 2025 年 7 月 23 日的 Webinar 中,我们通过一个具体的 DAQ 实例,深入讲解了其背后的设计思路与实现方法,对比分析了 CSM 与 DQMH 的差异,并着重说明了 CSM 在团队协作与模块复用方面的显著优势。本文是对该次 Webinar 的简要介绍。如需查看完整 PPT,可在以下地址下载:
假设我们在日常工作中,接到了这样的一个场景:
对于这类需求,我们可以很容易地将模块划分成下图所示的架构。你可以选择成熟的框架(例如 DQMH 或 CSM)作为程序的骨架,也可以使用 QMH 这类较为简单的 LabVIEW 模板。但架构师在实际设计中,还需要预先考虑实施过程中可能出现的潜在问题,才能确保项目按设想的方式分工协作,代码实现简洁清晰,功能模块易于组装整合,交付后便于维护,并且能够应对未来的功能扩展。

在本次 Webinar 中,我们主要分析了 CSM 框架的以下几项特性,它们分别针对了一些实际可能遇到的问题进行了设计与优化。

CSM 具备一套完善且独特的消息机制,具有以下特点:
这样可以应对以下常见问题:


CSM 更加注重高内聚的模块设计,具体体现在:
这种设计使得 DAQ/Algorithm/Logging 等模块更容易替换和复用。模块协作由外部调度逻辑实现,各模块通过虚拟总线通信,不依赖 LabVIEW 图形化连线,从而显著提升独立性与可复用性。

CSM 提供了丰富的附加功能和扩展接口,便于实现更多定制化需求:
这些功能可有效应对以下问题:
总而言之,CSM 能够帮助架构师更灵活地设计系统架构,在实际开发中,所绘制的模块图能够更少遇到细节问题。CSM 模块的接口定义也可以完全通过文本描述,方便设计与归档。如果用一个词来形容 CSM 带来的感受,那就是:自由。


与 DQMH 相比,实现相同功能时,CSM 所需 VI 数量显著减少。使用 CSM 框架时,一个 VI 即可包含模块全部接口和顶层逻辑,即使刚接触的开发者也能直观理解其逻辑、运行和调试过程。

开发人员在使用 CSM 进行模块实现之前,需要了解以下基本信息:
熟悉这些规则后,开发人员即可基于需求设计状态机并实现模块功能。本质上,每个模块的实现即编写一个符合特定要求的 VI。与 DQMH 或 Actor Framework(AF)相比,CSM 对模块开发人员更简单易用。

CSM 内置了实用调试工具,支持从多个维度调试模块,且无需编写额外代码。需求文档中通常会定义一些典型消息,通过调试工具发送这些消息即可测试模块功能,让模块在集成到整个系统之前先完成充分自验证。
CSM 能够有效帮助架构师减少实现细节对整体架构的冲击,从而在设计中获得更高自由度。

CSM 高度内聚的通信机制使得模块更容易被分解和复用。同时,CSM 采用隐藏式框架设计,将框架复杂性封装于后台,开发者可见代码几乎全部为业务逻辑,显著降低了学习和使用门槛。这两大特点使不同经验水平的工程师能够更高效协同工作,也有利于团队沉淀可复用模块、减少重复开发。

欢迎通过 VIPM 下载 CSM-Continuous-Measurement-and-Logging 示例程序,以便更直观地理解文中内容。欢迎大家留言交流讨论。