This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -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状态查询、定时任务监控和运行日志显示等核心功能。系统具有良好的可扩展性,开发者可以基于现有框架添加新的监控指标和告警规则,满足不断变化的监控需求。