a
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
# 设备状态监控
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp)
|
||||
- [appdevolview.h](file://h/appdevolview.h)
|
||||
- [appdevoldetaillistview.h](file://h/appdevoldetaillistview.h)
|
||||
- [appdevolgrlistview.h](file://h/appdevolgrlistview.h)
|
||||
- [appdevolacview.h](file://h/appdevolacview.h)
|
||||
- [DialPlcStatusShow.cpp](file://cpp/Views/DialPlcStatusShow.cpp)
|
||||
- [DialPlcStatusSetting.cpp](file://cpp/Views/DialPlcStatusSetting.cpp)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp)
|
||||
- [StateProcessor.cpp](file://cpp/Tools/StateProcessor.cpp)
|
||||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [项目结构](#项目结构)
|
||||
3. [核心组件](#核心组件)
|
||||
4. [架构概述](#架构概述)
|
||||
5. [详细组件分析](#详细组件分析)
|
||||
6. [依赖分析](#依赖分析)
|
||||
7. [性能考虑](#性能考虑)
|
||||
8. [故障排除指南](#故障排除指南)
|
||||
9. [结论](#结论)
|
||||
|
||||
## 简介
|
||||
本文档全面记录了GeomativeStudio中的设备实时状态监控系统,重点涵盖PLC状态查询、定时任务监控和运行日志显示功能。系统通过UI消息机制触发状态轮询,并在appdevolview中实现状态视图的数据刷新。文档详细描述了关键状态字段如m_bDevState、m_iPlcTimerInterval的含义与更新逻辑,为用户提供操作指南,为开发者提供扩展接口说明。
|
||||
|
||||
## 项目结构
|
||||
设备状态监控功能主要分布在cpp/Views和h目录下,以appdevolview为核心视图容器,包含多个子视图组件。系统通过分层架构实现状态监控,包括UI层、业务逻辑层和设备通信层。
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "UI层"
|
||||
appdevolview["appdevolview (主容器)"]
|
||||
appdevoldetaillistview["appdevoldetaillistview (详情列表)"]
|
||||
appdevolgrlistview["appdevolgrlistview (图形列表)"]
|
||||
appdevolacview["appdevolacview (活动状态)"]
|
||||
end
|
||||
subgraph "业务逻辑层"
|
||||
DevManager["DevManager (设备管理)"]
|
||||
StateProcessor["StateProcessor (状态处理)"]
|
||||
end
|
||||
subgraph "设备通信层"
|
||||
OperPLC["OperPLC (PLC操作)"]
|
||||
SComPort["SComPort (串口通信)"]
|
||||
end
|
||||
appdevolview --> appdevoldetaillistview
|
||||
appdevolview --> appdevolgrlistview
|
||||
appdevolview --> appdevolacview
|
||||
appdevolview --> DevManager
|
||||
DevManager --> StateProcessor
|
||||
DevManager --> OperPLC
|
||||
OperPLC --> SComPort
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L50)
|
||||
|
||||
**本节来源**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L1-L120)
|
||||
- [h](file://h#L1-L10)
|
||||
|
||||
## 核心组件
|
||||
设备状态监控系统的核心组件包括主视图容器CAppDevOLView及其三个子视图:设备详情列表视图、图形列表视图和活动状态视图。这些组件通过CSplitterWnd实现分屏布局,提供一体化的状态监控界面。
|
||||
|
||||
**本节来源**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L18-L120)
|
||||
- [appdevolview.h](file://h/appdevolview.h#L13-L54)
|
||||
|
||||
## 架构概述
|
||||
系统采用MVC架构模式,CAppDevOLView作为视图控制器,管理三个子视图的布局和显示。状态数据通过DevManager从底层设备获取,经由StateProcessor处理后更新到UI组件。
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant UI as "UI界面"
|
||||
participant View as "CAppDevOLView"
|
||||
participant Manager as "DevManager"
|
||||
participant PLC as "OperPLC"
|
||||
participant Device as "PLC设备"
|
||||
UI->>View : OnRemQueryPlcStatus消息
|
||||
View->>Manager : 请求PLC状态
|
||||
Manager->>PLC : 执行查询命令
|
||||
PLC->>Device : 发送查询指令
|
||||
Device-->>PLC : 返回状态数据
|
||||
PLC-->>Manager : 解析状态数据
|
||||
Manager-->>View : 返回设备状态
|
||||
View->>View : 更新m_bDevState等状态字段
|
||||
View->>UI : 刷新视图显示
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L68-L105)
|
||||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L15-L80)
|
||||
|
||||
## 详细组件分析
|
||||
|
||||
### 主视图容器分析
|
||||
CAppDevOLView是设备在线状态监控的主视图容器,负责创建和管理三个子视图的分屏布局。通过CSplitterWnd实现灵活的窗口分割,提供最佳的用户体验。
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class CAppDevOLView {
|
||||
+CView* m_pDevOLDetailListView
|
||||
+CView* m_pDevOLGRListView
|
||||
+CView* m_pDevOLACListView
|
||||
-CSplitterWnd m_firstSplitter
|
||||
-CSplitterWnd m_secondSplitter
|
||||
+Create() bool
|
||||
+OnSize() void
|
||||
+OnDraw() void
|
||||
}
|
||||
class CAppDevOLDetailListView {
|
||||
+int m_iRowCount
|
||||
-CListCtrl* m_pDetailList
|
||||
+OnInitialUpdate() void
|
||||
+OnDraw() void
|
||||
}
|
||||
class CAppDevOLGRListView {
|
||||
+OnInitialUpdate() void
|
||||
+OnRButtonDown() void
|
||||
+OnOpDevRefreshGR() void
|
||||
}
|
||||
class CAppDevOLACView {
|
||||
+OnInitialUpdate() void
|
||||
+OnDraw() void
|
||||
}
|
||||
CAppDevOLView --> CAppDevOLDetailListView : "包含"
|
||||
CAppDevOLView --> CAppDevOLGRListView : "包含"
|
||||
CAppDevOLView --> CAppDevOLACView : "包含"
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [appdevolview.h](file://h/appdevolview.h#L13-L54)
|
||||
- [appdevoldetaillistview.h](file://h/appdevoldetaillistview.h#L13-L53)
|
||||
- [appdevolgrlistview.h](file://h/appdevolgrlistview.h#L13-L52)
|
||||
- [appdevolacview.h](file://h/appdevolacview.h#L13-L51)
|
||||
|
||||
**本节来源**
|
||||
- [appdevolview.cpp](file://cpp/Views/appdevolview.cpp#L18-L120)
|
||||
- [appdevolview.h](file://h/appdevolview.h#L13-L54)
|
||||
|
||||
### 状态轮询机制分析
|
||||
系统通过UI消息OnRemQueryPlcStatus和OnRemGD10TimerTdRun触发状态轮询。当用户请求或定时器触发时,系统调用PLC状态查询接口,实现设备状态的实时监控。
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start([用户操作或定时器]) --> CheckMessage{"消息类型?"}
|
||||
CheckMessage --> |OnRemQueryPlcStatus| QueryPLC["调用PLC状态查询"]
|
||||
CheckMessage --> |OnRemGD10TimerTdRun| CheckInterval["检查m_iPlcTimerInterval"]
|
||||
CheckInterval --> Valid{"间隔有效?"}
|
||||
Valid --> |是| QueryPLC
|
||||
Valid --> |否| End
|
||||
QueryPLC --> SendCommand["发送PLC查询指令"]
|
||||
SendCommand --> ReceiveData["接收PLC响应数据"]
|
||||
ReceiveData --> ParseData["解析状态数据"]
|
||||
ParseData --> UpdateState["更新m_bDevState等字段"]
|
||||
UpdateState --> RefreshView["刷新appdevolview显示"]
|
||||
RefreshView --> End([完成])
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [DialPlcStatusShow.cpp](file://cpp/Views/DialPlcStatusShow.cpp#L1-L50)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp#L15-L100)
|
||||
|
||||
**本节来源**
|
||||
- [DialPlcStatusShow.cpp](file://cpp/Views/DialPlcStatusShow.cpp#L1-L50)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp#L15-L100)
|
||||
|
||||
## 依赖分析
|
||||
设备状态监控系统依赖于多个核心组件和工具类,形成完整的监控链条。系统通过清晰的依赖关系确保各组件职责分明,便于维护和扩展。
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
appdevolview --> DevManager
|
||||
DevManager --> StateProcessor
|
||||
DevManager --> OperPLC
|
||||
OperPLC --> SComPort
|
||||
DevManager --> TdManager
|
||||
appdevolview --> DialPlcStatusShow
|
||||
DialPlcStatusShow --> DialPlcStatusSetting
|
||||
StateProcessor --> FileOperTools
|
||||
DevManager --> IOManager
|
||||
style appdevolview fill:#f9f,stroke:#333
|
||||
style DevManager fill:#bbf,stroke:#333
|
||||
style OperPLC fill:#f96,stroke:#333
|
||||
```
|
||||
|
||||
**图示来源**
|
||||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L30)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp#L1-L20)
|
||||
- [StateProcessor.cpp](file://cpp/Tools/StateProcessor.cpp#L1-L15)
|
||||
|
||||
**本节来源**
|
||||
- [DevManager.cpp](file://cpp/Managers/DevManager.cpp#L1-L50)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp#L1-L30)
|
||||
|
||||
## 性能考虑
|
||||
系统在设计时充分考虑了性能因素,通过合理的更新频率控制和数据缓存机制,确保监控系统的高效运行。m_iPlcTimerInterval字段控制PLC状态查询的间隔,避免频繁查询导致的性能问题。
|
||||
|
||||
## 故障排除指南
|
||||
当设备状态显示异常时,应首先检查串口通信是否正常,然后验证PLC设备是否在线。可通过DialPlcStatusShow对话框手动触发状态查询,诊断通信问题。日志文件位于Install/Geomative Studio/LOG目录下,可用于分析历史问题。
|
||||
|
||||
**本节来源**
|
||||
- [DialPlcStatusShow.cpp](file://cpp/Views/DialPlcStatusShow.cpp#L10-L50)
|
||||
- [OperPLC.cpp](file://cpp/Tools/OperPLC.cpp#L45-L80)
|
||||
|
||||
## 结论
|
||||
GeomativeStudio的设备状态监控系统通过分层架构和模块化设计,实现了PLC状态查询、定时任务监控和运行日志显示等核心功能。系统具有良好的可扩展性,开发者可以基于现有框架添加新的监控指标和告警规则,满足不断变化的监控需求。
|
||||
Reference in New Issue
Block a user