模块划分方法

根据SmartBalancer 4用户手册和技术文档内容,结合Qt架构设计原则,以下是系统化的功能模块划分方案:


1. 用户界面模块(UI Layer)

1.1 核心界面组件
  • 主控界面:实现Home Screen导航(分析/平衡/启停机测试等功能入口)
  • 动态仪表盘:实时传感器数据可视化(振动/位移/转速等参数的Live Data显示)
  • 专业图表控件:开发定制化Qt图表(极坐标图/Bode图/Nyquist图/频谱图/时域波形)
  • 多层级菜单系统:基于QTreeView的模板树形管理界面
1.2 专用交互组件
  • 平衡向导界面:分步式平衡操作流程(初始测量-试重-校正的向导式交互)
  • 测量参数面板:可折叠式参数设置区(频率范围/窗函数/谱线数等专业设置)
  • 结果对比视图:多窗口联动分析(支持四象限视图对比不同测量点数据)

2. 设备管理模块(Device Management)

2.1 硬件接口层
  • 传感器驱动:实现IEPE接口协议/激光测速仪通信
  • 多通道采集:基于QThread的6通道同步数据采集
  • 信号预处理:实时数字滤波(抗混叠滤波/重采样处理)
2.2 设备控制层
  • 功耗管理:电池状态监控/低功耗模式切换
  • 固件升级:USB-C固件更新流程(差分包校验/安全烧录)
  • 自检诊断:开机自检流程(传感器环路测试/存储校验)

3. 模板引擎模块(Template Engine)

3.1 机器模板系统
  • 层级建模工具:基于XML的机器树形结构建模(机组-机器-测点三级结构)
  • 运动学建模:轴承类型/传动比/故障频率计算引擎
  • 模板版本管理:支持模板克隆/差异比较/批量导出
3.2 任务模板系统
  • 测量策略配置:预置ISO 10816/API 670等标准模板
  • 智能参数推导:根据转速自动计算谱线数/采样率
  • 模板验证引擎:配置合规性检查(频带范围/传感器匹配)

4. 测量分析模块(Measurement & Analysis)

4.1 核心测量功能
  • 动态平衡系统:单/双平面影响系数法实现(含试重优化算法)
  • 启停机分析:阶次跟踪分析(支持共振点自动标记)
  • 包络解调分析:轴承故障特征频率提取算法
4.2 高级分析工具
  • 多维度诊断:振动烈度/峭度因子/相位分析联合诊断
  • 趋势预测:基于时频分析的故障预警模型
  • 自动报告生成:符合API 670标准的PDF报告生成器

5. 数据管理模块(Data Management)

5.1 实时数据处理
  • 环形缓冲区:基于QSharedMemory的实时数据缓存
  • 信号处理链:FFT/包络解调/阶次分析流水线处理
  • 数据压缩:振动波形有损/无损压缩存储
5.2 持久化存储
  • 测量数据库:SQLite关系型数据存储(测点/结果/事件关联)
  • 文件版本控制:测量数据差分备份机制
  • 云同步接口:支持OPC UA/MTConnect协议对接

6. 系统服务模块(System Services)

6.1 基础服务
  • 多语言引擎:动态语言切换(支持RTL语言布局)
  • 单位换算系统:公制/英制智能转换引擎
  • 日志系统:分级日志记录(操作日志/诊断日志)
6.2 安全服务
  • 权限管理:操作员/管理员分级权限控制
  • 数据加密:测量数据AES-256加密存储
  • 审计追踪:关键操作不可抵赖记录

7. 辅助工具模块(Utilities)

7.1 设备维护工具
  • 传感器校准:基于标准振动台的校准流程
  • 存储诊断:MicroSD卡健康状态监测
  • 诊断模式:原始信号直出测试接口
7.2 用户支持
  • AR辅助:基于图像识别的测点定位指引
  • 知识库系统:故障特征库与典型案例
  • 远程协助:WebRTC远程技术支持通道

模块交互架构

信号/槽
数据请求
硬件交互
原始数据
模板配置
模板数据
用户配置
全局设置
维护支持
UI Layer
Business Logic
Data Management
Device Management
Template Engine
System Services
Utilities

关键设计考量

  1. 跨平台支持:采用Qt抽象层实现Windows/Linux/嵌入式系统兼容
  2. 实时性保障:关键数据采集线程设置QThread::TimeCritical优先级
  3. 可扩展架构:通过插件机制支持振动分析算法扩展
  4. 大屏适配:响应式布局支持从7寸到15寸多种屏幕尺寸
  5. 军工级可靠:关键模块采用N-version programming设计

该架构充分考虑了手册中描述的IP65防护、多传感器支持、复杂分析功能等需求,同时遵循Qt最佳实践,确保在工业现场的可靠性和易用性。


以下是基于SmartBalancer 4用户手册的模块划分、分层架构设计及类/接口规划方案,结合Qt框架特性实现工业级振动分析系统的完整架构:


分层架构设计

表现层
业务逻辑层
数据层
硬件抽象层
设备驱动层

1. 表现层(Presentation Layer)

1.1 主控界面模块
  • 类组成
    • MainWindow:主窗口框架管理
    • DashboardWidget:多参数仪表盘
    • NavigationDock:侧边导航栏
    • StatusBar:IP65状态指示条
  • 核心接口
    class IMainWindow {
    public:
        virtual void switchApplicationMode(ApplicationMode mode) = 0;
        virtual void updateLiveData(const SensorDataSet& data) = 0;
        virtual void showAlarm(AlarmLevel level, const QString& message) = 0;
    };
    
1.2 专业图表模块
  • 类组成
    • PolarPlot:平衡极坐标图
    • BodePlotWidget:波特图分析
    • SpectrumAnalyzer:FFT频谱视图
    • TimeWaveform:时域波形控件
  • 核心接口
    class IVibrationPlot {
    public:
        virtual void setFrequencyRange(double min, double max) = 0;
        virtual void updatePlotData(const VibrationData& data) = 0;
        virtual void enableCursorTracking(bool enable) = 0;
    };
    

2. 业务逻辑层(Business Logic Layer)

2.1 平衡计算引擎
  • 类组成
    • UnbalanceCalculator:影响系数法核心算法
    • RotorModel:转子动力学模型
    • WeightOptimizer:配重优化求解器
  • 核心接口
    class IBalancingEngine {
    public:
        virtual BalancingResult calculateInitialUnbalance(const SensorData& data) = 0;
        virtual CorrectionWeight computeCorrection(const TrialRunData& trial) = 0;
        virtual bool validateRigidRotor(const RotorParameters& params) = 0;
    };
    
2.2 信号处理模块
  • 类组成
    • FFTProcessor:快速傅里叶变换
    • EnvelopeDetector:包络解调分析
    • OrderTracking:阶次分析引擎
  • 核心接口
    class ISignalProcessor {
    public:
        virtual SpectrumData performFFT(const TimeSeries& rawData) = 0;
        virtual EnvelopeData extractEnvelope(const AccelerationData& data) = 0;
        virtual OrderAnalysisResult trackOrders(const CoastDownData& data) = 0;
    };
    

3. 数据层(Data Layer)

3.1 测量数据管理
  • 类组成
    • MeasurementDatabase:SQLite数据库接口
    • DataCache:环形缓冲区管理
    • ReportGenerator:PDF报告生成
  • 核心接口
    class IDataManager {
    public:
        virtual bool saveMeasurement(const MachineTemplate& temp, const MeasurementData& data) = 0;
        virtual QList<MeasurementRecord> loadHistoryData(const QDateTime& from, const QDateTime& to) = 0;
        virtual void exportToPDF(const ReportConfig& config) = 0;
    };
    
3.2 模板管理系统
  • 类组成
    • TemplateParser:XML模板解析器
    • KinematicModeler:运动学建模工具
    • TemplateValidator:配置合规检查
  • 核心接口
    class ITemplateSystem {
    public:
        virtual MachineTemplate loadTemplate(const QString& path) = 0;
        virtual bool validateTemplate(const MachineTemplate& temp) = 0;
        virtual void createNewTemplate(const MachineProfile& profile) = 0;
    };
    

4. 硬件抽象层(Hardware Abstraction Layer)

4.1 传感器接口
  • 类组成
    • SensorDriver:IEPE传感器驱动
    • LaserRpmSensor:激光测速仪控制
    • TemperatureProbe:温度探头接口
  • 核心接口
    class ISensorInterface {
    public:
        virtual bool initSensor(SensorType type, int channel) = 0;
        virtual SensorReading readData(int channel) = 0;
        virtual bool performSelfTest() = 0;
    };
    
4.2 设备控制模块
  • 类组成
    • PowerManager:电池管理系统
    • FirmwareUpdater:固件升级控制
    • DeviceDiagnostics:硬件自检系统
  • 核心接口
    class IDeviceController {
    public:
        virtual BatteryStatus getBatteryInfo() = 0;
        virtual void enterLowPowerMode() = 0;
        virtual UpdateResult updateFirmware(const QByteArray& image) = 0;
    };
    

5. 基础设施层(Infrastructure Layer)

5.1 系统服务
  • 类组成
    • UnitConverter:单位换算引擎
    • Localization:多语言支持
    • SecurityManager:数据加密服务
  • 核心接口
    class ISystemService {
    public:
        virtual double convertUnit(QuantityType type, double value, UnitSystem from, UnitSystem to) = 0;
        virtual void switchLanguage(Language lang) = 0;
        virtual QByteArray encryptData(const QByteArray& raw) = 0;
    };
    
5.2 日志与诊断
  • 类组成
    • DataLogger:分级日志记录
    • FaultDetector:异常诊断
    • AuditTrail:操作审计
  • 核心接口
    class IDiagnostic {
    public:
        virtual void logEvent(LogLevel level, const QString& message) = 0;
        virtual FaultAnalysis analyzeVibration(const SpectrumData& data) = 0;
        virtual QList<AuditRecord> getAuditTrail() = 0;
    };
    

模块统计表

层级模块名称类数量核心接口示例
表现层主控界面4IMainWindow
表现层专业图表5IVibrationPlot
业务层平衡计算3IBalancingEngine
业务层信号处理3ISignalProcessor
数据层数据管理3IDataManager
数据层模板系统3ITemplateSystem
硬件层传感器3ISensorInterface
硬件层设备控制3IDeviceController
基础层系统服务3ISystemService
基础层日志诊断3IDiagnostic

关键设计特点

  1. Qt特性深度整合

    • 使用QCustomPlot实现高性能振动图表
    • 采用QStateMachine实现平衡流程状态管理
    • 通过QAbstractItemModel实现测量数据模型
  2. 工业级可靠性

    • 关键数据采集使用QSerialPort的异步IO
    • 信号处理线程设置QThread::HighPriority
    • 实现看门狗定时器防止界面冻结
  3. 扩展性设计

    • 通过插件机制加载分析算法(.so/dll
    • 使用桥接模式分离硬件接口与业务逻辑
    • 采用策略模式实现多平衡算法切换

该架构严格遵循DIN ISO 10816标准,满足IP65防护要求,可扩展支持API 670规范,通过模块化设计确保在恶劣工业环境下的长期稳定运行。


模板引擎与数据管理模块的深度解耦设计

1. 模板数据结构设计(领域模型)
// 机器模板元数据
struct MachineTemplateMeta {
    QString uuid;          // 唯一标识符
    QString name;          // 模板名称
    ApplicationMode mode;  // 关联应用模式 (平衡/分析/启停机)
    QDateTime createTime;
    QVersionNumber version;
    QMap<QString, QVariant> extendedProps; // 厂商扩展属性
};

// 机器层级结构
class MachineNode : public QObject {
    Q_ENUM(NodeType)
public:
    enum NodeType { Train, Machine, MeasurementPoint };
    
    NodeType type;
    QString name;
    QVector<MachineNode*> children;
    QJsonObject config; // 节点配置(轴承类型/传动比等)
    
    // 运动学计算接口
    virtual double calculateSpeedRatio() const = 0;
};
2. 存储架构设计
SQLite Database
Template Metadata
System Templates
File System
Template1.sbt
Template2.sbt
Binary Data
JSON Configuration
Resource Files
  • 数据库存储

    • templates 表:存储模板元数据
    • template_files 表:文件路径索引
    • dependency 表:模板依赖关系
  • 文件存储

    • .sbt 文件结构:
      TemplatePackage/
      ├── manifest.json       # 元数据描述
      ├── structure.xml       # 机器层级定义
      ├── config/
      │   ├── bearing.conf    # 轴承配置
      │   └── gearbox.conf    # 齿轮箱配置
      └── resources/
          └── diagram.svg     # 机器示意图
      
3. 模板引擎核心实现
class TemplateEngine : public QObject {
    Q_OBJECT
public:
    explicit TemplateEngine(IDataManager* dataManager, QObject* parent = nullptr);
    
    // 模板生命周期管理
    Q_INVOKABLE MachineTemplate loadTemplate(const QUuid& templateId);
    Q_INVOKABLE bool saveCurrentTemplate();
    Q_INVOKABLE void createDerivedTemplate(const QUuid& baseTemplateId);
    
    // 动态配置接口
    void updateKinematicModel(const KinematicParams& params);
    void validateTemplateCompliance(ComplianceStandard standard);
    
signals:
    void templateLoaded(const MachineTemplate&);
    void validationError(TemplateError error);
    
private:
    IDataManager* m_dataManager;
    TemplatePackage m_currentPackage;
    MachineModelBuilder m_modelBuilder;
};
4. 数据管理接口设计
class IDataManager {
public:
    // 模板元数据操作
    virtual QList<MachineTemplateMeta> listTemplates(ApplicationFilter filter) = 0;
    virtual QUuid registerTemplate(const MachineTemplateMeta& meta) = 0;
    
    // 二进制数据存取
    virtual QByteArray loadTemplateBlob(const QUuid& templateId) = 0;
    virtual bool saveTemplateBlob(const QUuid& templateId, const QByteArray& data) = 0;
    
    // 版本控制
    virtual QList<TemplateVersion> getVersionHistory(const QUuid& templateId) = 0;
    virtual bool rollbackToVersion(const QUuid& templateId, int version) = 0;
    
    // 依赖管理
    virtual bool checkDependencies(const QUuid& templateId) = 0;
    virtual QList<QUuid> getDependentTemplates(const QUuid& templateId) = 0;
};
5. 模板-应用联动机制
用户界面 模板引擎 数据管理 应用程序 用户双击模板 loadTemplateBlob(templateId) 返回模板二进制数据 解析结构定义 createApplicationContext(mode) 初始化专用界面组件 注入机器层级树控件 用户修改配置 增量保存修改 用户界面 模板引擎 数据管理 应用程序
6. 关键技术实现点
  1. 模板热加载机制

    // 使用Qt插件系统动态加载模板组件
    QLibrary lib(templateLibPath);
    auto createWidget = lib.resolve("createConfigurationWidget");
    if (createWidget) {
        auto* configWidget = reinterpret_cast<QWidget*(*)(MachineNode*)>(createWidget)(rootNode);
        configWidget->show();
    }
    
  2. 版本化存储策略

    // 使用Git-like增量存储
    void TemplateVersionControl::commitChanges(const QString& diff) {
        auto snapshot = createSnapshot();
        m_gitEngine.commit(QString("Template update %1").arg(QDateTime::currentDateTime().toString()),
                          diff,
                          snapshot);
    }
    
  3. 配置实时同步

    // 使用Shared Memory实现多进程配置同步
    QSharedMemory sharedConfig("template_config");
    if (sharedConfig.create(sizeof(ConfigData))) {
        ConfigData* data = static_cast<ConfigData*>(sharedConfig.data());
        memcpy(data, &currentConfig, sizeof(ConfigData));
    }
    
  4. 合规性验证引擎

    class TemplateValidator {
    public:
        bool validateISO10816(const MachineTemplate& temp) {
            // 实现ISO 10816-3标准验证逻辑
            // 包括振动烈度计算、频带检查等
        }
        
        bool checkSafetyCompliance(SafetyStandard std) {
            // 安全规范检查(如IP65配置验证)
        }
    };
    
7. 模块交互边界控制
  1. 接口隔离原则

    • 模板引擎仅通过IDataManager接口访问存储
    • 应用程序通过ITemplateConsumer接口获取配置
    class ITemplateConsumer {
    public:
        virtual void applyTemplateConfig(const MachineTemplate&) = 0;
        virtual void onTemplateModified(const TemplateDelta& changes) = 0;
    };
    
  2. 变更通知机制

    // 使用Qt信号槽实现跨模块通知
    connect(m_templateEngine, &TemplateEngine::templateLoaded,
            m_appController, &AppController::handleNewTemplate);
            
    connect(m_dataManager, &IDataManager::templateUpdated,
            m_templateEngine, &TemplateEngine::reloadDependencies);
    
  3. 沙箱化操作

    // 在独立进程中执行模板解析
    QProcess* sandboxProcess = new QProcess;
    sandboxProcess->start("template_sandbox", {templatePath});
    connect(sandboxProcess, &QProcess::finished, [](int exitCode) {
        // 处理沙箱执行结果
    });
    
8. 性能优化策略
  1. 懒加载设计

    class LazyLoadedTemplate {
    public:
        MachineNode* getRootNode() {
            if (!m_loaded) {
                loadFromDisk();
                m_loaded = true;
            }
            return m_rootNode;
        }
    };
    
  2. 内存缓存池

    TemplateCache& cache = TemplateCache::instance();
    auto template = cache.get(templateId);  // 使用LRU策略
    
  3. 批量操作优化

    m_dataManager->beginBatchOperation();
    foreach (const auto& tpl, modifiedTemplates) {
        m_dataManager->saveTemplateBlob(tpl.id, tpl.data);
    }
    m_dataManager->commitBatchOperation(); // 使用事务提交
    

该设计方案实现了:

  • 模板与数据的物理分离:元数据在数据库,二进制包在文件系统
  • 逻辑解耦:通过接口和消息机制降低模块间依赖
  • 可扩展性:支持动态加载模板组件
  • 安全性:沙箱机制隔离高风险操作
  • 性能保障:懒加载+缓存+批量处理三重优化

实际开发中需结合Qt的QAbstractItemModel实现模板树形展示,利用QFileSystemWatcher监控模板文件变化,通过QDataStream实现版本化序列化,最终达成工业级可靠性要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值