在组态王6.55中实现历史数据自动保存到Excel,可通过历史数据查询功能结合VBA脚本或第三方工具实现,也可利用组态王自带的报表系统或数据导出插件。以下是详细步骤和注意事项:
方法一:利用组态王内置报表系统 + Excel导出
步骤1:配置历史数据记录
启用历史记录
打开组态王工程,进入 “数据库” → “数据词典”。
选择需要记录的变量(如温度、压力等),双击变量属性,在 “记录定义” 选项卡中勾选 “数据变化记录” 或 “定时记录”(如每1分钟记录一次)。
设置历史库路径(如
C:\Kingview\Project\History
),确保磁盘空间充足。创建历史数据报表
参数说明:报表名称、变量名、起始时间、结束时间、时间间隔(分钟)。
在开发界面中,选择 “工具” → “报表系统” → “新建报表”。
设计报表格式(如表格行数、列名对应变量名)。
使用报表函数
ReportSetHistData2()
查询历史数据:sql// 示例:查询变量“Tag1”从2024-01-01到2024-01-02的历史数据ReportSetHistData2("报表1", "Tag1", "2024-01-01 00:00:00", "2024-01-02 23:59:59", 1);
步骤2:设置报表自动导出到Excel
使用“报表导出”命令
进入 “数据库” → “命令语言” → “应用程序命令语言”。
在 “运行时” 或 “退出时” 选项卡中添加以下代码:
c// 示例:每天24:00自动导出报表if(Hour()==0 && Minute()==0 && Second()==0) {ReportExport("报表1", "C:\\Export\\History_Data_"+StrFromTime(Now(),1)+".xls");}
StrFromTime(Now(),1)
获取当前日期作为文件名后缀。在组态王运行界面中,通过 “特殊功能” → “报表操作” → “报表导出” 手动导出为Excel(.xls或.csv)。
自动化方案:通过 “命令语言” 编写脚本,定时触发导出:
注意事项
组态王6.55默认导出为Excel 97-2003格式(.xls),若需.xlsx需升级或使用第三方工具转换。
导出路径需有写入权限,避免因权限问题失败。
方法二:通过ODBC数据库接口 + Excel数据链接
步骤1:配置组态王ODBC历史库
设置ODBC数据源
打开Windows “控制面板” → “管理工具” → “ODBC数据源(32位)”。
添加 “System DSN”,选择组态王支持的数据库类型(如Microsoft Access或SQL Server)。
配置数据源名称(如
Kingview_History
),指向组态王历史库文件(如History.mdb
)。在组态王中关联ODBC
进入 “数据库” → “历史库配置”,选择已创建的ODBC数据源。
确保变量记录已写入ODBC库(检查数据词典中变量的“记录定义”选项)。
步骤2:Excel自动获取ODBC数据
使用Excel“数据”选项卡
在Excel中,选择 “数据” → “获取数据” → “自其他源” → “自ODBC”。
选择数据源
Kingview_History
,输入查询SQL(如查询Tag1
的历史数据):sqlSELECT * FROM History WHERE TagName='Tag1' AND Time >= #2024-01-01# AND Time <= #2024-01-02#
将查询结果加载到Excel表格中。
设置自动刷新
在Excel的 “数据” → “查询和连接” 中,右键查询结果,选择 “属性”。
勾选 “刷新频率”(如每30分钟刷新一次),并启用 “打开文件时刷新数据”。
方法三:使用第三方工具(如KingSCADA Datalink或自定义脚本)
方案1:KingSCADA Datalink插件
若组态王6.55支持Datalink插件(需确认版本兼容性),可直接配置插件将历史数据导出为Excel,支持定时任务和自定义格式。
方案2:Python脚本自动化
通过Python读取组态王历史库
使用
pyodbc
库连接组态王ODBC历史库,查询数据并写入Excel:python
import pyodbc import pandas as pd # 连接ODBC数据源 conn = pyodbc.connect('DSN=Kingview_History;UID=;PWD=') query = "SELECT * FROM History WHERE TagName='Tag1' AND Time BETWEEN ? AND ?" params = ('2024-01-01', '2024-01-02') # 读取数据并保存为Excel df = pd.read_sql(query, conn, params=params) df.to_excel("C:\\Export\\History_Data.xlsx", index=False) 设置Windows任务计划
将Python脚本保存为
.py
文件,通过Windows “任务计划程序” 设置定时执行(如每天凌晨导出)。
常见问题与解决
问题 | 可能原因 | 解决方案 |
---|---|---|
报表导出为Excel失败 | 路径无权限/Excel未安装 | 检查导出路径权限;确保系统安装Excel 2003或更高版本。 |
ODBC查询无数据 | 变量未记录/SQL语法错误 | 确认变量已启用历史记录;在Access中测试SQL语句是否正确。 |
Python脚本报错pyodbc 未安装 | 缺少依赖库 | 运行pip install pyodbc pandas openpyxl 安装所需库。 |
数据导出时间滞后 | 组态王历史库写入延迟 | 优化变量记录频率(如从1秒改为10秒),减少数据量。 |
最佳实践建议
数据量控制:若历史数据量大(如每秒记录),建议按天或小时分文件导出,避免单个Excel文件过大。
备份策略:在导出脚本中添加文件备份逻辑(如保留最近7天的数据,删除旧文件)。
异常处理:在命令语言或Python脚本中添加错误日志记录,便于排查导出失败原因。
升级考虑:组态王6.55版本较旧,若条件允许,升级到更高版本(如组态王7.5 SP3)可获得更稳定的历史数据导出功能。
通过以上方法,可实现组态王6.55历史数据自动、可靠地保存到Excel,满足生产报表或数据分析需求。