OPCReport

OPCReport

开源项目 开源工具包

OPC/数据库报表系统客户端,围绕SQL Server和OPC采集数据做组织架构、设备路径映射与报表展示,支持DevExpress报表组件。

核心特性

  • OPC数据采集
  • SQL Server
  • 组织架构映射
  • DevExpress报表
  • 数据可视化

产品介绍

OPCReport (OUK.ReportHost) 功能详细介绍

概述

OPCReport 是一套基于 OPC/数据库驱动的报表系统客户端,由 hehuolong 开发。核心架构为:SQL Server 数据库 + OPC DA/UA 采集服务 (Windows 服务) + WPF 报表查询客户端 (`OUK.ReportHost.exe`)。围绕组织架构、设备路径映射、报表模板展示三大核心,适用于工厂能源管理、生产报表、设备监控大屏等场景。遵循 MIT 许可证。

  • 主程序:`OUK.ReportHost.exe` (WPF 报表查询客户端)
  • 采集服务:`OUK.ReportDataMonitor.exe` (Windows 服务,OPC 订阅写入 SQL Server)
  • 公共库:`OUK.ReportCommon.dll` (实体/接口/工具)
  • 数据库:SQL Server 2008+ (含 `report.sql` 建表脚本、`初始化.sql` 基础数据)
  • 运行框架:.NET Framework 4.6.2+ (WPF/WinForms 混合、大量 DevExpress 控件)
  • 配置文件:`OUK.ReportHost.exe.config`、`OUK.ReportDataMonitor.exe.config`、`Log4net.config`

核心功能模块

1. OPC 数据采集服务 (`OUK.ReportDataMonitor.exe`)

  • 运行模式:Windows 服务 (`install`/`start`/`stop`/`uninstall` 命令行)
  • OPC 连接
  • OPC DA (COM/DCOM):`Opc.Ua.ClientControls`/`Opc.Ua.Core` 兼容层,支持本地/远程 OPC DA 2.05/3.0 服务器
  • OPC UA:`Opc.Ua.Client` 标准栈,支持 SecurityPolicy/Basic256Sha256、证书认证、订阅/监控项
  • 配置驱动
  • `OPCServer` (AppSetting):OPC 服务器 Endpoint URL (如 `opc.tcp://118.24.36.220:62547/DataAccessServer`)
  • `DeviceAccessPrefix` (AppSetting):设备地址前缀 (如 `ns=2;s=ArchestrA.FSGateway.2_Intouch_`)
  • 设备/标签映射:数据库表维护 (组织架构系统键 → 设备名 → OPC Item ID)
  • 采集策略
  • 订阅模式:OPC DA `Advise` / OPC UA `MonitoredItem` (数据变更推送)
  • 轮询兜底:订阅失败/不支持时降级定时轮询 (可配周期)
  • 批量写入:缓冲 N 条 (默认 100) 或 T 秒 (默认 5s) 批量 `INSERT` SQL Server
  • 容错与监控
  • 断线自动重连 (指数退避、最大间隔 5 分钟)
  • 心跳检测 (OPC DA `GetStatus` / OPC UA `KeepAlive`)
  • 采集统计:点数/秒、写入成功率、队列积压、错误分类
  • Windows 事件日志 + `log4net` 文件日志 (滚动/分级)

2. 组织架构与设备映射 (核心建模)

  • 三层架构
  • 一级组织 (系统键 `SystemKey`):如 `DSY` (电厂/车间/区域)
  • 二级组织:如 `S3` (机组/产线/工段)
  • 设备 (名称 `DeviceName`):如 `P11` (具体设备/测点组)
  • 映射规则 (强约束)
OPC 采集路径 = `DeviceAccessPrefix` + `SystemKey` + `_` + `二级组织` + `_` + `DeviceName` + `\` + `测点后缀`
例:`ns=2;s=ArchestrA.FSGateway.2_Intouch_DSY_S3_P11\Meas\Ia`
  • 管理界面:树形组织架构增删改、拖拽排序、设备关联 OPC Item 路径、批量导入导出 Excel

3. 报表查询客户端 (`OUK.ReportHost.exe`)

  • 报表分类
  • 实时看板:当前值、状态指示灯、趋势迷你图 (DevExpress Gauges/Charts)
  • 历史趋势:时间范围选择、多笔叠加、缩放/平移/导出 CSV/图片
  • 统计报表:日/月/年统计 (最大/最小/平均/累积/积分)、分组汇总、交叉表
  • 设备效率/OEE:可用性/性能/质量/综合 OEE、停机原因分析
  • 能耗分析:电/水/气/蒸汽分项、单耗、同比环比、成本核算
  • 自定义报表:DevExpress XtraReports 模板设计器 (绑定 SQL/存储过程/对象数据源)
  • 查询交互
  • 组织架构树筛选 (联动设备列表)
  • 时间范围选择器 (预设: 今日/昨日/本周/本月/自定义)
  • 多标签页对比、同屏多图表布局保存/恢复
  • 导出:PDF/Excel/Word/HTML/图片/CSV、打印预览/直打
  • 权限控制
  • 用户/角色/权限 (DevExpress XtraBars/Ribbon + 自研 RBAC)
  • 报表/组织/设备级可见性控制
  • 操作审计日志 (登录/查询/导出/打印/配置修改)

4. 数据库设计 (SQL Server)

核心表 说明
`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)

5. UI 技术栈 (DevExpress 重度依赖)

控件套件 用途 许可证风险
`DevExpress.XtraCharts`/`Gauges` 图表/仪表盘 同上
`DevExpress.XtraReports`/`ReportDesigner` 报表设计/预览/导出 同上
`DevExpress.XtraBars`/`Ribbon`/`Docking` 主界面/菜单/停靠面板 同上
`DevExpress.XtraEditors`/`Layout`/`NavBar` 编辑器/布局/导航栏 同上
`DevExpress.Data`/`DataAccess`/`Utils`/`Printing` 核心数据/打印/工具 同上
关键提示:DevExpress 组件为商业付费控件,本包包含的 DLL 仅供演示/内部测试使用。商业分发/部署到生产环境必须购买合法授权,否则构成侵权。

部署步骤 (基于 `版本说明.txt`)

1. 环境准备

  • SQL Server 2008 R2 / 2012 / 2014 / 2016 / 2019 / 2022
  • .NET Framework 4.6.2 或更高 (Windows 10/11 自带 4.8)

2. 数据库部署


-- 1. 执行 report.sql 创建数据库、表、视图、存储过程、索引
-- 2. 执行 初始化.sql 插入基础组织架构、设备模板、报表模板、默认用户(admin/123456)

3. 数据采集服务部署


cd OUK.ReportDataMonitor.exe 目录

REM 安装为 Windows 服务
OUK.ReportDataMonitor.exe install

REM 修改配置
notepad OUK.ReportDataMonitor.exe.config
  
  
  

REM 启动服务
OUK.ReportDataMonitor.exe start
REM 或在 services.msc 中启动 "OUKReportDataMonitor"

4. 报表客户端部署


REM 修改配置
notepad OUK.ReportHost.exe.config
  

REM 运行
OUK.ReportHost.exe

依赖与第三方库许可证 (关键)

许可证 分发风险
EntityFramework / EntityFramework.SqlServer / EntityFramework.Extended Apache-2.0 / MIT
Opc.Ua.* (OPC Foundation) MIT (标准库) / 双许可 低 (确认使用 MIT 版本)
log4net / NPOI / SharpZipLib / Newtonsoft.Json / NetMQ / AutoMapper Apache-2.0 / MIT / BSD
BouncyCastle.Crypto MIT
System.ValueTuple / Immutable / Buffers / Net.Http.Headers MIT

适用场景

场景 适配度
生产日报/月报自动化 ⭐⭐⭐⭐⭐ DevExpress 报表设计器所见即所得
设备 OEE/效率分析 ⭐⭐⭐⭐ 透视表+图表+自定义 SQL
多厂区集中监控大屏 ⭐⭐⭐ 实时看板+多标签页+全屏模式
现有 ArchestrA/InTouch/Historian 用户 ⭐⭐⭐⭐⭐ 地址前缀映射天然兼容

产品明细图

OPCReport
OPCReport
OPCReport
OPCReport
OPCReport
OPCReport
OPCReport

详细使用教程

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. 数据库部署

  1. 打开 SQL Server Management Studio
  2. 执行 `report.sql` 创建数据库、表、视图、存储过程、索引
  3. 执行 `初始化.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 模板设计器

查询交互

  1. 左侧 组织架构树 筛选,联动设备列表
  2. 顶部 时间范围选择器(今日/昨日/本周/本月/自定义)
  3. 多标签页对比、同屏多图表布局保存/恢复
  4. 导出: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` 返回上一级

常用操作流程

场景一:工厂能源监控报表

  1. 安装 SQL Server,执行数据库脚本
  2. 部署数据采集服务为 Windows 服务,配置 OPC 服务器地址
  3. 在组织架构中添加设备(设置正确的 SystemKey 和 DeviceName)
  4. 启动报表客户端,登录(默认 admin/123456)
  5. 在组织架构树中选择目标组织
  6. 选择时间范围查看实时看板或历史趋势
  7. 导出报表为 PDF/Excel

场景二:设备 OEE 分析

  1. 确保数据采集服务正常运行,设备数据已入库
  2. 在报表客户端选择 OEE 报表类型
  3. 选择目标设备和时间范围
  4. 查看可用性/性能/质量三个维度数据
  5. 分析停机原因报表
  6. 导出 Excel 进行详细分析

场景三:自定义报表设计

  1. 打开报表设计器(DevExpress XtraReports)
  2. 选择数据源(SQL/存储过程/对象)
  3. 设计报表布局
  4. 保存报表模板
  5. 在查询界面选择该模板进行查询

故障排查

现象 可能原因 解决方案
OPC 采集异常 OPC 服务器不可达/地址前缀错误 检查 OPC 服务器 Endpoint URL 和 DeviceAccessPrefix
报表不显示数据 设备未正确映射/时间范围不对 检查组织架构映射是否正确,调整时间范围
采集服务无法安装 权限不足 以管理员身份运行 cmd
DevExpress 控件异常 商业授权未生效 确认已购买合法 DevExpress 授权
权限不足 用户角色权限不够 联系管理员分配权限

系统使用规范

  1. 组织架构的 `系统键` 必须与 OPC 设备路径对应
  2. 设备名称必须与 OPC 设备路径对应
  3. OPC 采集路径格式:`DeviceAccessPrefix + SystemKey + "_" + 二级组织 + "_" + DeviceName + "\" + 测点后缀`
  4. 例:采集路径 `ArchestrA.FSGateway.2_Intouch_DSY_S3_P11\Meas\Ia` 对应系统键 `DSY`、二级组织 `S3`、设备名称 `P11`

注意事项

  1. 数据库脚本:首次部署必须先执行 `report.sql` 再执行 `初始化.sql`
  2. 服务依赖:采集服务必须先启动,报表客户端才能获取到实时数据
  3. 默认密码:首次登录使用 admin/123456,登录后建议修改密码
  4. .NET Framework:确保系统安装 .NET Framework 4.6.2 或更高版本

技术栈

ASP.NET Core DevExpress OPC UA Entity Framework NPOI

相关产品

×