组态王历史数据的SQL数据库存储配置
在工业自动化领域,组态王(KingView)是一款广泛应用的组态软件,负责采集和监控现场设备数据。历史数据的存储与分析对于生产管理、设备维护和质量追溯至关重要。默认情况下,组态王将历史数据保存在本地文件中,这种方式在数据量较大或需要多用户共享时显得力不从心。将历史数据存储到SQL数据库中,能够实现数据的集中管理、高效查询和长期归档。本指南将详细讲解如何将组态王的历史数据存储到SQL数据库的完整配置过程。
一、准备工作
在开始配置之前,需要确保以下软硬件环境就绪:
- 组态王软件:已安装并正常运行,建议版本为KingView 6.55或更高版本。
- SQL数据库:SQL Server 2008及以上版本,或MySQL 5.7及以上版本。本指南以SQL Server为例进行说明。
- ODBC驱动:根据数据库类型选择对应的ODBC驱动程序。SQL Server使用SQL Server Native Client,MySQL使用MySQL ODBC Driver。
- 数据库管理工具:SQL Server Management Studio或Navicat,用于创建数据库和表结构。
二、创建SQL数据库和表结构
2.1 创建数据库
打开SQL Server Management Studio,连接到本地数据库实例。
执行以下SQL语句创建专用数据库:
CREATE DATABASE KingViewHistory
GO
2.2 创建历史数据表
切换到新建的KingViewHistory数据库,执行以下SQL语句创建历史数据表。组态王的历史数据通常包含时间戳、变量名、变量值三个核心字段:
CREATE TABLE HK_Data (
ID INT IDENTITY(1,1) PRIMARY KEY,
FieldName NVARCHAR(100) NOT NULL,
FieldValue FLOAT NOT NULL,
RecordTime DATETIME NOT NULL DEFAULT GETDATE()
)
GO
如果需要存储更多类型的数据,可以创建另一个表用于存储字符串类型的历史数据:
CREATE TABLE HK_DataString (
ID INT IDENTITY(1,1) PRIMARY KEY,
FieldName NVARCHAR(100) NOT NULL,
FieldValue NVARCHAR(500) NOT NULL,
RecordTime DATETIME NOT NULL DEFAULT GETDATE()
)
GO
创建索引以提高查询性能:
CREATE NONCLUSTERED INDEX IX_HK_Data_RecordTime ON HK_Data(RecordTime)
CREATE NONCLUSTERED INDEX IX_HK_Data_FieldName ON HK_Data(FieldName)
GO
三、配置ODBC数据源
ODBC(Open Database Connectivity)是组态王连接SQL数据库的桥梁,必须正确配置ODBC数据源才能实现数据存储。
3.1 打开ODBC数据源管理器
按下Win + R组合键,输入odbcad32,点击确定。
3.2 添加系统DSN
在用户DSN选项卡中,点击添加按钮。
3.3 选择驱动程序
在创建新数据源窗口中,找到SQL Server Native Client(或MySQL ODBC Driver),双击选择该驱动程序。
3.4 配置数据源名称
输入数据源名称:KingViewDB
输入服务器名称:如果连接本地数据库,填写(local)或localhost;如果连接远程服务器,填写服务器IP地址。
点击下一步。
3.5 身份验证设置
选择使用SQL Server身份验证。
输入登录名和密码(SA账户或具有相应权限的数据库账户)。
勾选连接SQL Server默认数据库,并选择前面创建的KingViewHistory数据库。
点击下一步,完成配置。
3.6 测试数据源
点击测试数据源按钮,确认连接成功。测试通过后,点击确定保存配置。
四、组态王中的配置
完成数据库和ODBC配置后,接下来在组态王软件中进行相应设置。
4.1 打开工程浏览器
双击组态王工程浏览器图标,打开需要配置历史数据的工程。
4.2 配置SQL访问管理器
在工程浏览器左侧目录树中,找到SQL访问管理器,双击打开配置界面。
4.3 添加ODBC数据源
在SQL访问管理器界面中,点击数据库配置按钮。
点击添加按钮,在数据源列表中选择前面配置的ODBC数据源KingViewDB。
输入访问数据库的用户名和密码,点击确定。
4.4 创建历史表模板
在SQL访问管理器中,点击表格模板配置。
点击新建按钮,创建名为HK_Data的表格模板。
添加以下字段:
| 字段名 | 数据类型 | 长度 | 描述 |
|---|---|---|---|
| ID | INTEGER | 10 | 主键自增 |
| FieldName | STRING | 100 | 变量名称 |
| FieldValue | REAL | 16 | 变量值 |
| RecordTime | DATETIME | 19 | 记录时间 |
点击保存按钮完成模板创建。
如需创建字符串类型模板,重复上述步骤,创建名为HK_DataString的表格模板,FieldValue字段类型改为STRING,长度设为500。
4.5 配置历史数据记录
在工程浏览器中,找到需要记录历史数据的变量。
双击变量,打开变量属性对话框。
勾选记录数据选项,点击设置按钮。
在历史数据记录设置窗口中,选择数据源为KingViewDB,选择表格模板为HK_Data。
设置记录方式:可选择变化时记录、定时记录或变化且定时记录。
- 变化时记录:仅当变量值发生变化时存储数据
- 定时记录:按照设定的时间间隔固定存储数据
- 变化且定时记录:结合上述两种方式,优先采用变化记录,必要时补充定时记录
点击确定保存设置。
五、验证配置效果
5.1 启动运行系统
在工程浏览器中,点击菜单栏的运行按钮,启动组态王运行系统。
5.2 触发数据记录
等待或手动操作使配置的变量值发生变化、定时时间到达,观察系统是否正常记录数据。
5.3 查询数据库
打开SQL Server Management Studio,执行以下查询语句验证数据是否成功写入:
SELECT TOP 100 * FROM KingViewHistory.dbo.HK_Data
ORDER BY RecordTime DESC
如果查询结果中显示变量名称、变量值和记录时间,说明配置成功。
六、常见问题与处理
6.1 ODBC连接失败
如果测试ODBC数据源时提示连接失败,检查以下几点:
- SQL Server服务是否已启动
- 用户名和密码是否正确
- 数据库实例名称是否填写正确
- 防火墙是否阻止了数据库端口(默认1433)
6.2 数据写入失败
如果组态王运行正常但数据库中无数据,排查以下原因:
- 表格模板字段与数据库表字段是否完全匹配
- 数据库用户是否具有写入权限
- ODBC数据源是否正确选择
- 变量是否已正确配置历史记录
6.3 数据量过大性能下降
当历史数据积累过多时,查询速度会明显下降。建议定期清理历史数据,或采用数据分区表、归档表等方式优化存储结构。
完成上述所有步骤后,组态王即可将历史数据自动存储到SQL数据库中。通过数据库管理工具,可以方便地对历史数据进行查询、统计和导出,为生产分析和决策提供可靠的数据支持。

暂无评论,快来抢沙发吧!