SQLConnect
, SQLInsert
, SQLSelect
等函数直接执行SQL命令,历史数据通常先归档到Historian再转储到关系库。核心概念:Intouch本身不直接“输入”关系型数据库(如SQL Server, Oracle, MySQL),它需要借助中间件或特定的功能模块来实现与数据库的交互。
将Intouch(现为Aveva System Platform的一部分,但Intouch HMI仍广泛使用)中的数据“输入”到关系型数据库(如SQL Server, Oracle, MySQL)是一个常见的工业自动化需求,用于长期存储、高级分析、报表生成或与企业系统集成,理解其实现机制至关重要。
关键点:Intouch的定位与数据库交互
- 实时数据库 vs. 关系型数据库: Intouch的核心优势在于处理高速、实时、来自PLC/控制器的过程数据(通常存储在自身的“实时数据库”或通过I/O驱动访问),而SQL Server等关系型数据库擅长存储结构化历史数据、执行复杂查询和事务管理。
- Intouch的角色: Intouch主要作为人机界面和数据采集器,它不设计为直接执行大量的SQL
INSERT
操作到关系库,直接操作会消耗HMI资源,影响实时性能,且缺乏必要的健壮性(如连接中断处理、事务管理)。 - 标准解决方案: Wonderware/Aveva 提供了更强大、专用的历史数据存储和与关系库集成的组件:
- Wonderware Historian (现在Aveva Historian): 这是首选方案,Historian是高性能、专用的时间序列数据库,专门为存储海量过程数据而优化,Intouch可以通过标准的 SuiteLink 或 OPC DA/UA 协议将实时数据写入Historian,Historian 再通过其内置的 “Historian Client for Microsoft SQL Server” 或 “Historian Analytics” 等组件,高效、可靠地将数据归档、汇总或事件触发写入到SQL Server等关系库中,这是最符合工业标准、性能最佳、管理最方便的方式。
- ArchestrA IDE & Galaxy (System Platform): 在System Platform环境中,对象(如设备、区域)的属性值可以配置为自动记录到Historian,Platform的集成性使得数据流向关系库更顺畅(通常也经由Historian)。
如何在Intouch HMI层面实现数据写入关系库(备选/特定场景方案)
虽然不推荐作为主要手段(尤其对于高频、大量数据),但在特定场景(如低频事件记录、少量关键参数存档、小系统),可以通过Intouch脚本间接实现:
-
使用
SQLConnect()
,SQLInsert()
,SQLDisconnect()
函数 (Intouch 7.1 及以后版本):- 原理: Intouch内置了有限的VBScript SQL访问函数。
- 步骤:
- 配置ODBC数据源: 在运行Intouch View节点的计算机上,配置一个指向目标关系数据库的 系统DSN (ODBC Data Source Name),确保使用正确的驱动(如ODBC Driver for SQL Server)。
- 编写脚本: 在Intouch的脚本编辑器(通常是Window或Application脚本)中编写VBScript。
- 关键函数:
nConnID = SQLConnect("DSN=YourDSNName;UID=Username;PWD=Password")
:建立连接,返回连接句柄nConnID
。(务必安全存储密码,生产环境建议使用Windows集成身份验证或加密配置)nResult = SQLInsert(nConnID, "YourTableName", "Field1, Field2, ...", "Value1, Value2, ...")
:执行插入操作。ValueX
可以是字符串、数字或Intouch标记名(如{[.]TagName}
),需要严格匹配数据库表结构(字段名、数据类型、约束)。SQLDisconnect(nConnID)
:关闭连接。
- 触发脚本: 脚本需要在特定条件下触发,
- 按钮点击事件。
- 标记值改变事件(
OnChange
脚本)。 - 定时器事件(
QuickScript Timer
或Application
脚本中的定时器)。(注意:高频定时写入会严重影响HMI性能!)
- 优点: 无需额外软件(除了ODBC驱动),适用于简单、低频插入。
- 缺点:
- 性能差: 每条
SQLInsert
都是独立的数据库事务和网络请求,开销巨大,不适合高频数据。 - 健壮性差: 缺乏连接池、重试机制、事务批处理,网络闪断或数据库短暂不可用容易导致数据丢失或脚本错误。
- 安全性: 脚本中硬编码密码不安全(尽管有加密选项,管理仍复杂)。
- 维护难: SQL语句嵌入脚本,表结构变更时需修改多处脚本。
- 占用HMI资源: 消耗Intouch进程的CPU和内存,可能影响画面响应和实时数据更新。
- 性能差: 每条
-
使用第三方OPC-DB桥接软件:
- 原理: 部署一个独立的软件(如Matrikon OPC Data Manager, Kepware OPC-UA Gateway with Database Client, 或一些开源工具),该软件作为OPC客户端(DA或UA)从Intouch(作为OPC服务器)读取数据,然后作为数据库客户端将数据写入关系库。
- 配置:
- 在Intouch中启用并配置其内置的 OPC Server (DA 或 UA)。
- 在桥接软件中配置:
- OPC Client连接(指向Intouch OPC Server,订阅需要记录的标签)。
- 数据库连接(配置目标数据库连接信息)。
- 映射规则(定义如何将OPC标签值、时间戳、质量戳写入数据库表的特定列)。
- 写入策略(定时、变化死区、批量插入等)。
- 优点:
- 性能更好: 专用软件通常支持批量插入、缓存、重试机制,效率远高于Intouch脚本。
- 健壮性高: 独立进程运行,不影响Intouch HMI性能;具备错误处理和恢复能力。
- 灵活性: 映射规则配置灵活,支持复杂转换、过滤。
- 安全: 数据库凭据在专用软件中管理,更安全。
- 支持多种源和目标: 通常支持从多个OPC源采集并写入多种数据库。
- 缺点: 需要额外购买和部署软件,增加成本和维护点。
-
使用Wonderware/Aveva InSQL / Historian (再次强调,这是最佳实践):
- 如前所述,配置Intouch通过SuiteLink或OPC将数据写入Historian。
- 在Historian中配置存储。
- 使用Historian的 “ToRDB” (To Relational Database) 功能或 “Historian Client for SQL Server”:
- 可以配置将整个标签的历史数据按计划(如每小时、每天)批量迁移到关系库的镜像表中。
- 可以配置基于事件的插入(如当某个标签值变化或达到特定条件时,触发一条记录插入关系库的特定事件表)。
- 可以使用Historian Analytics进行复杂计算后再写入关系库。
- 优点: 高性能、高可靠性、厂商标配支持、与Wonderware/Aveva生态系统无缝集成、支持海量数据、提供丰富的查询和分析工具(如Historian Client, Information Server)。
- 缺点: 需要额外购买和部署Historian及相关许可证,成本较高,架构相对复杂。
选择哪种方案?关键考虑因素
因素 | Intouch SQL 脚本 | 第三方 OPC-DB 桥接 | Wonderware/Aveva Historian + ToRDB |
---|---|---|---|
数据量/频率 | 极低 (事件、少量点) | 中低 – 中 | 高 – 极高 (海量实时数据) |
性能影响(HMI) | 高 (严重影响) | 低 (独立进程) | 极低 (独立系统) |
可靠性/健壮性 | 低 | 中 – 高 | 非常高 |
实现复杂度 | 简单 (脚本) | 中等 (配置桥接软件) | 较高 (部署配置Historian) |
成本 | 低 (无额外软件) | 中等 (桥接软件许可) | 高 (Historian及相关许可) |
厂商支持/标准 | 有限 (非最佳实践) | 依赖第三方厂商 | Wonderware/Aveva 标准方案 |
长期维护/扩展 | 困难 | 中等 | 容易 (生态系统内) |
适用场景 | 低频事件记录、小测试 | 中小系统、预算有限 | 大中型系统、关键任务、高性能需求 |
总结与强烈建议
- 对于绝大多数工业应用,尤其是涉及持续、高频过程数据记录到关系型数据库的场景,强烈推荐使用 Wonderware/Aveva Historian 作为中间层,并利用其内置的 ToRDB 或类似功能写入关系库。 这是符合工业标准、性能最优、最可靠、最受支持的方式。
- Intouch 内置的 SQL 函数 (
SQLInsert
) 仅适用于非常低频、非关键、少量数据的插入。 务必意识到其对 HMI 性能和系统稳定性的潜在风险,并谨慎使用,切勿用于核心过程数据的连续记录。 - 第三方 OPC-DB 桥接软件是一个折中的方案, 在预算有限且无法上 Historian 的中小型项目中,比 Intouch 脚本更可靠高效,选择信誉良好、支持完善的第三方产品。
重要安全与性能提示
- 最小权限原则: 数据库账户仅授予执行插入操作所需的最小权限(通常是特定表的
INSERT
权限)。 - 安全连接: 尽可能使用加密连接(如ODBC over SSL/TLS, OPC UA)。
- 密码管理: 避免在Intouch脚本中硬编码明文密码,使用加密存储或(更佳)集成Windows身份验证(如果数据库支持)。
- 错误处理: 在脚本或桥接软件中实现完善的错误处理(连接失败、插入失败等),记录日志并考虑重试或报警机制。
- 网络考虑: 确保HMI、桥接软件/Historian、数据库服务器之间的网络稳定且带宽足够。
- 测试: 在生产环境部署前,务必在测试环境中充分验证所有方案的功能、性能和稳定性。
补充说明:历史数据迁移
如果需要将Intouch已有的历史数据(存储在.lgh
文件或早期InSQL中)迁移到新的关系库,通常需要使用专门的迁移工具或脚本,或者通过Historian的导入/导出功能间接实现,这不是实时的“输入”过程。
理解Intouch在数据流中的位置以及利用合适的工具(特别是Historian)是成功实现高效、可靠数据库集成的关键,避免让HMI承担不合适的数据库写入负担。
引用说明:
- Wonderware System Platform 2025 Documentation (Aveva 官方文档库 – 需登录) – 涵盖Intouch, Historian, System Platform架构与配置。
- Aveva Historian Administration Guide (最新版本) – 详细说明Historian配置、存储、ToRDB功能。
- InTouch HMI 2025 Help System (内置帮助文档) – 搜索
SQLConnect
,SQLInsert
,SQLDisconnect
函数说明及示例。 - Microsoft ODBC Data Source Administrator Documentation – 关于配置系统DSN。
- 《工业自动化系统集成技术与应用》(机械工业出版社) – 介绍工业数据集成模式与OPC、数据库技术应用(通用原理参考)。
- Kepware KEPServerEX Documentation / MatrikonOPC Data Manager Documentation – 第三方桥接软件配置示例(具体参考对应厂商文档)。
(具体函数名、配置路径可能因Intouch/Historian版本不同略有差异,请务必查阅对应版本的官方文档。)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/38334.html