OPCReport 详细使用教程
概述
OPCReport(OUK.ReportHost)是一套基于 OPC/数据库驱动的报表系统客户端,由 hehuolong 开发。核心架构为:SQL Server 数据库 + OPC DA/UA 采集服务(Windows 服务)+ WPF 报表查询客户端。围绕组织架构、设备路径映射、报表模板展示三大核心,适用于工厂能源管理、生产报表、设备监控大屏等场景。遵循 MIT 许可证。
- 主程序:`OUK.ReportHost.exe`(WPF 报表查询客户端)
- 采集服务:`OUK.ReportDataMonitor.exe`(Windows 服务)
- 数据库:SQL Server 2008+
- 运行框架:.NET Framework 4.6.2+(WPF/WinForms 混合)
重要:本系统依赖 DevExpress 商业控件(v15.1/v17.1),商业部署需购买合法授权。
快速开始
1. 环境准备
| 组件 |
版本要求 |
说明 |
| .NET Framework |
4.6.2 或更高 |
Win10/11 自带 4.8 |
2. 数据库部署
- 打开 SQL Server Management Studio
- 执行 `report.sql` 创建数据库、表、视图、存储过程、索引
- 执行 `初始化.sql` 插入基础组织架构、设备模板、报表模板、默认用户(admin/123456)
3. 数据采集服务部署
cd OPCReport 目录
REM 安装为 Windows 服务
OUK.ReportDataMonitor.exe install
REM 修改配置文件
notepad OUK.ReportDataMonitor.exe.config
关键配置项:
启动服务:
OUK.ReportDataMonitor.exe start
REM 或在 services.msc 中启动 "OUKReportDataMonitor"
4. 报表客户端部署
REM 修改配置
notepad OUK.ReportHost.exe.config
REM 运行
OUK.ReportHost.exe
默认配置与采集服务相同的数据库连接字符串。
核心功能详解
组织架构与设备映射
三层架构映射:
| 层级 |
说明 |
示例 |
| 二级组织 |
机组/产线/工段 |
`S3` |
| 设备(DeviceName) |
具体设备/测点组 |
`P11` |
OPC 采集路径规则:
采集路径 = DeviceAccessPrefix + SystemKey + "_" + 二级组织 + "_" + DeviceName + "\" + 测点后缀
例:ns=2;s=ArchestrA.FSGateway.2_Intouch_DSY_S3_P11\Meas\Ia
在组织架构中必须确保:
- 系统键 = `DSY`
- 二级组织 = `S3`
- 设备名称 = `P11`
OPC 数据采集服务
- 运行模式:Windows 服务(install/start/stop/uninstall 命令行管理)
- OPC DA:支持本地/远程 OPC DA 2.05/3.0 服务器
- OPC UA:支持 SecurityPolicy/Basic256Sha256、证书认证、订阅/监控项
- 采集策略:
- 订阅模式:OPC DA Advise / OPC UA MonitoredItem(数据变更推送)
- 轮询兜底:订阅失败时降级定时轮询
- 批量写入:缓冲 N 条(默认 100)或 T 秒(默认 5s)批量 INSERT SQL Server
- 容错:断线自动重连(指数退避、最大间隔 5 分钟)、心跳检测
报表查询客户端
报表分类
| 报表类型 |
功能 |
| 历史趋势 |
时间范围选择、多笔叠加、缩放/平移/导出 CSV/图片 |
| 统计报表 |
日/月/年统计(最大/最小/平均/累积/积分)、分组汇总、交叉表 |
| 设备效率/OEE |
可用性/性能/质量/综合 OEE、停机原因分析 |
| 能耗分析 |
电/水/气/蒸汽分项、单耗、同比环比、成本核算 |
| 自定义报表 |
DevExpress XtraReports 模板设计器 |
查询交互
- 左侧 组织架构树 筛选,联动设备列表
- 顶部 时间范围选择器(今日/昨日/本周/本月/自定义)
- 多标签页对比、同屏多图表布局保存/恢复
- 导出:PDF/Excel/Word/HTML/图片/CSV、打印预览/直打
权限控制
- 用户/角色/权限(DevExpress XtraBars/Ribbon + 自研 RBAC)
- 报表/组织/设备级可见性控制
- 操作审计日志(登录/查询/导出/打印/配置修改)
数据库设计
| 核心表 |
说明 |
| `Org_Device` |
设备信息(Id, OrgId, Name, DeviceType, AccessPath, Enabled) |
| `Data_RealTime` |
实时值缓存(DeviceTag, Value, Quality, Timestamp) |
| `Data_History` |
历史归档(DeviceTag, Value, Quality, Timestamp,分区表/按月分表) |
| `Report_Template` |
报表模板(Id, Name, Category, LayoutXml, DataSourceConfig) |
| `Sys_User` / `Sys_Role` / `Sys_Permission` |
用户权限体系 |
| `Sys_AuditLog` |
操作审计(UserId, Module, Action, Detail, Ip, Time) |
部署步骤汇总
完整部署流程
REM ==== 第一步:数据库部署 ====
REM 在 SQL Server Management Studio 中执行 report.sql 和 初始化.sql
REM ==== 第二步:数据采集服务 ====
cd OPCReport 目录
OUK.ReportDataMonitor.exe install
REM 编辑 OUK.ReportDataMonitor.exe.config 配置数据库和 OPC 参数
OUK.ReportDataMonitor.exe start
REM ==== 第三步:报表客户端 ====
REM 编辑 OUK.ReportHost.exe.config 配置数据库连接
OUK.ReportHost.exe
配置文件说明
| 文件 |
说明 |
| `OUK.ReportDataMonitor.exe.config` |
采集服务配置(数据库连接、OPC服务器地址、设备前缀) |
| `Log4net.config` |
log4net 日志配置 |
| `OUK.ReportHost.exe` |
主程序(AppName 设置为"万达茂报表系统") |
键盘快捷键
| 快捷键 |
功能 |
| `Ctrl+P` |
打印报表 |
| `Ctrl+E` |
导出 |
| `Ctrl+S` |
保存布局 |
| `F5` |
刷新数据 |
| `F1` |
帮助 |
| `Esc` |
关闭弹窗 |
| `Alt+Left` |
返回上一级 |
常用操作流程
场景一:工厂能源监控报表
- 安装 SQL Server,执行数据库脚本
- 部署数据采集服务为 Windows 服务,配置 OPC 服务器地址
- 在组织架构中添加设备(设置正确的 SystemKey 和 DeviceName)
- 启动报表客户端,登录(默认 admin/123456)
- 在组织架构树中选择目标组织
- 选择时间范围查看实时看板或历史趋势
- 导出报表为 PDF/Excel
场景二:设备 OEE 分析
- 确保数据采集服务正常运行,设备数据已入库
- 在报表客户端选择 OEE 报表类型
- 选择目标设备和时间范围
- 查看可用性/性能/质量三个维度数据
- 分析停机原因报表
- 导出 Excel 进行详细分析
场景三:自定义报表设计
- 打开报表设计器(DevExpress XtraReports)
- 选择数据源(SQL/存储过程/对象)
- 设计报表布局
- 保存报表模板
- 在查询界面选择该模板进行查询
故障排查
| 现象 |
可能原因 |
解决方案 |
| OPC 采集异常 |
OPC 服务器不可达/地址前缀错误 |
检查 OPC 服务器 Endpoint URL 和 DeviceAccessPrefix |
| 报表不显示数据 |
设备未正确映射/时间范围不对 |
检查组织架构映射是否正确,调整时间范围 |
| 采集服务无法安装 |
权限不足 |
以管理员身份运行 cmd |
| DevExpress 控件异常 |
商业授权未生效 |
确认已购买合法 DevExpress 授权 |
| 权限不足 |
用户角色权限不够 |
联系管理员分配权限 |
系统使用规范
- 组织架构的 `系统键` 必须与 OPC 设备路径对应
- 设备名称必须与 OPC 设备路径对应
- OPC 采集路径格式:`DeviceAccessPrefix + SystemKey + "_" + 二级组织 + "_" + DeviceName + "\" + 测点后缀`
- 例:采集路径 `ArchestrA.FSGateway.2_Intouch_DSY_S3_P11\Meas\Ia` 对应系统键 `DSY`、二级组织 `S3`、设备名称 `P11`
注意事项
- 数据库脚本:首次部署必须先执行 `report.sql` 再执行 `初始化.sql`
- 服务依赖:采集服务必须先启动,报表客户端才能获取到实时数据
- 默认密码:首次登录使用 admin/123456,登录后建议修改密码
- .NET Framework:确保系统安装 .NET Framework 4.6.2 或更高版本