8.1 KiB
设备状态监控
**本文档引用的文件** - [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)目录
简介
本文档全面记录了GeomativeStudio中的设备实时状态监控系统,重点涵盖PLC状态查询、定时任务监控和运行日志显示功能。系统通过UI消息机制触发状态轮询,并在appdevolview中实现状态视图的数据刷新。文档详细描述了关键状态字段如m_bDevState、m_iPlcTimerInterval的含义与更新逻辑,为用户提供操作指南,为开发者提供扩展接口说明。
项目结构
设备状态监控功能主要分布在cpp/Views和h目录下,以appdevolview为核心视图容器,包含多个子视图组件。系统通过分层架构实现状态监控,包括UI层、业务逻辑层和设备通信层。
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
图示来源
本节来源
核心组件
设备状态监控系统的核心组件包括主视图容器CAppDevOLView及其三个子视图:设备详情列表视图、图形列表视图和活动状态视图。这些组件通过CSplitterWnd实现分屏布局,提供一体化的状态监控界面。
本节来源
架构概述
系统采用MVC架构模式,CAppDevOLView作为视图控制器,管理三个子视图的布局和显示。状态数据通过DevManager从底层设备获取,经由StateProcessor处理后更新到UI组件。
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 : 刷新视图显示
图示来源
详细组件分析
主视图容器分析
CAppDevOLView是设备在线状态监控的主视图容器,负责创建和管理三个子视图的分屏布局。通过CSplitterWnd实现灵活的窗口分割,提供最佳的用户体验。
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 : "包含"
图示来源
本节来源
状态轮询机制分析
系统通过UI消息OnRemQueryPlcStatus和OnRemGD10TimerTdRun触发状态轮询。当用户请求或定时器触发时,系统调用PLC状态查询接口,实现设备状态的实时监控。
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([完成])
图示来源
本节来源
依赖分析
设备状态监控系统依赖于多个核心组件和工具类,形成完整的监控链条。系统通过清晰的依赖关系确保各组件职责分明,便于维护和扩展。
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
图示来源
本节来源
性能考虑
系统在设计时充分考虑了性能因素,通过合理的更新频率控制和数据缓存机制,确保监控系统的高效运行。m_iPlcTimerInterval字段控制PLC状态查询的间隔,避免频繁查询导致的性能问题。
故障排除指南
当设备状态显示异常时,应首先检查串口通信是否正常,然后验证PLC设备是否在线。可通过DialPlcStatusShow对话框手动触发状态查询,诊断通信问题。日志文件位于Install/Geomative Studio/LOG目录下,可用于分析历史问题。
本节来源
结论
GeomativeStudio的设备状态监控系统通过分层架构和模块化设计,实现了PLC状态查询、定时任务监控和运行日志显示等核心功能。系统具有良好的可扩展性,开发者可以基于现有框架添加新的监控指标和告警规则,满足不断变化的监控需求。