首页/新闻资讯/正文详情

Intouch与SQL Server数据对接及Excel报表实战

发布时间:2026/11/11 0:35:25 来源:云帆数科 栏目:资讯中心
Intouch与SQL Server数据对接及Excel报表实战
简介面向SCADA与工业自动化从业者的实操文档聚焦WonderWare Intouch 2014 R2平台与SQL Server 2012数据库的集成以及基于Excel的报表系统搭建适合需要打通HMI数据存储与报表展示环节的工程师参考。内容涵盖数据库登录方式与权限配置、新建库表、标记名字典中内存变量的建立、SQL访问管理器绑定列表、SQLConnect与SQLDisconnect连接脚本编写以及Excel报表模板与VBA引用设置、数据库文件附加恢复等模块形成从数据写入到报表呈现的完整链路。资源包共1个doc文件约2.48MB以图文步骤形式记录配置细节与脚本示例便于对照操作与排错。已有533人学习适合作为Intouch数据归档与报表开发的案头参考。1. 从一份工控现场笔记说起Intouch 写库与 Excel 报表到底怎么落地凌晨两点某产线的历史数据突然断档值班的人翻遍 Intouch 画面也找不到问题——数据在画面上跳得好好的数据库里却一条新记录都没有。这类现场问题十有八九卡在 Intouch 与 SQL Server 的对接环节而不是 HMI 本身。手上这份文档讲的正是 WonderWare Intouch 2014 R2IDE 平台把数据写进 SQL Server 2012、再用 Excel 做报表取数的完整链路外加数据库文件的备份与附加恢复。它适合正在做 SCADA 报表模块的自动化工程师、需要给产线补历史数据存储的现场实施人员也适合刚接手一套老 Intouch 项目、要搞清“数据到底怎么进库”的维护者。文档不是理论教材是一份按步骤能照着做的操作记录下面我把它拆成能复现的路径顺带把几个容易翻车的点标出来。2. 打通 Intouch 到 SQL Server 2012连接、标记与绑定列表Intouch 写库这件事本质是三层对齐数据库侧要有表、Intouch 侧要有标记、中间靠绑定列表把两者按列名和数据类型一一挂上。任何一层错位写入都会静默失败——这是这套方案最坑的地方它不报错只是数据不进库。所以这一章按“库→标记→绑定→脚本”的顺序推每一步都给出可核对的落点。2.1 数据库侧身份验证模式与登录名权限先解决“连得上”的问题。用 SQL Server Management Studio 进库在服务器属性里把身份验证改成“SQL Server 和 Windows 身份验证模式”否则后面 Intouch 用 SQL 账号连接会直接被拒。改完必须重启 SQL 服务才生效这一步很多人漏掉表现为连接字符串明明写对了却报登录失败。接着在“安全性→登录名”下新建或修改账号。常见做法是给报表和写库单独建一个账号只授予目标库的 db_datareader 和 db_datawriter不要图省事直接用 sa。文档示例里用了 sa现场能跑但权限过大一旦连接字符串泄露就是整库风险。新建登录名时在“常规”页设密码在“服务器角色”页按需勾选再到“用户映射”里把目标数据库勾上并指定角色这套流程走完账号才算真正可用。数据库和表建好后重点核对列名与数据类型。表里的列名要和后面 Intouch 绑定列表里的变量名严格对应数值列用 float 或 int、时间列用 datetime别用 nvarchar 存数值再指望它自动转——写入时类型不匹配SQLInsert 会失败且不留明显痕迹。2.2 标记名字典三个基础内存标记的用途Intouch 的标记名字典是整套逻辑的变量池。文档里建了三个关键标记各有明确分工标记名类型作用Connid1内存整型保存 SQLConnect 返回的连接号后续所有 SQL 函数都靠它定位连接GetDateTimeS内存消息存连接时刻的时间字符串便于排查连接时序NodeName内存消息存本机计算机名用于多站场景下判断“该由哪台机器写库”WSQLS内存离散写库完成标志位防止同一周期重复写入建标记时注意“内存”类型不参与 I/O 扫描只做内部运算别误建成 I/O 型去绑 PLC 地址。Connid1 必须是整型因为 SQLConnect 的第一个参数就是连接号输出位WSQLS 用离散型后面脚本里靠它做一次性写入的闸门。2.3 绑定列表列名与类型的双向对齐在左侧工具视图里打开 SQL 访问管理器进“绑定列表”。这里做的事是把 Intouch 变量映射到数据库表的列。规则只有一条但极容易错绑定列表里的变量名、顺序、数据类型必须和数据库表的列名、列顺序、列类型完全一致。差一个字母、顺序颠倒、int 对 float写入就失败。实操时建议先在 SSMS 里把目标表的列结构截图或导出再对着建绑定列表建完用一条手工 SQLInsert 试写一次确认库里能看到记录再往下走。绑定列表本身不产生数据它只是“翻译表”真正触发写入的是脚本里的 SQLInsert。2.4 连接与写入脚本SQLConnect、SQLInsert 与关闭时释放脚本分两处应用程序脚本的“运行时”负责连接和周期写入“关闭时”负责断开。先看连接与写入的核心逻辑下面这段是按文档思路整理的等价写法 应用程序脚本 - 运行时条件 $Second5为真时执行 GetNodeName(NodeName, 131); 取本机计算机名存入 NodeName IF NodeName OP_01 THEN 只让指定站写库避免多站重复写 IF $Minute 58 THEN 每小时最后两分钟触发一次汇总写入 IF WSQLS 0 THEN 本周期尚未写过才进入 SQLInsert(Connid1, TDays, TDays); 连接号, 表名, 绑定列表名 WSQLS 1; 置位锁住本周期 ENDIF; ELSE WSQLS 0; 非写入窗口复位标志为下个周期让路 ENDIF; ENDIF;逐行说清楚GetNodeName第二个参数 131 是取计算机名的模式码结果写进 NodeNameNodeName OP_01是站点过滤多台 HMI 都连同一个库时不加这层判断会重复插入$Minute 58是时间窗口按业务改成整点或班次边界WSQLS是防重入闸门没有它条件为真的每个扫描周期都会插一条一分钟能灌进几十条脏数据。SQLInsert三个参数依次是连接号、数据库表名、绑定列表名两个 TDays 一个是表一个是绑定列表名字可以不同但都要和实际对象对上。连接本身在更早的时机建立等价写法 应用程序脚本 - 运行时条件 $Second3为真时执行 SQLConnect(Connid1, providersqloledb;Data SourceOP_01;Initial CatalogYADC_BB;UserIDreport;Password******);连接字符串五段用分号隔开provider 固定 sqloledbData Source 是数据库所在计算机名Initial Catalog 是库名UserID 和 Password 是 2.1 里建的账号。任何一段写错Connid1 会拿到无效值后续 SQLInsert 全部失败。最后别忘了“关闭时”脚本加SQLDisconnect(Connid1);否则应用重启后旧连接可能残留表现为连不上或连接数耗尽。提示改完脚本先在 WindowMaker 里用“逻辑→验证”过一遍语法再切运行态观察 Connid1 是否变成有效连接号比直接上线试错省时间。3. Excel 报表系统模板、VBA 引用与取数链路数据进了库下一步是把它变成人看得懂的报表。这套方案用 Excel 做前端靠 VBA 连 SQL Server 取数好处是现场人员熟悉 Excel、模板改起来快代价是 VBA 引用和连接配置一旦错报错信息很含糊。这一章把模板搭建和取数脚本拆开讲。3.1 报表模板结构控制面板页与参数日报页模板分两个工作表。“控制面板”页放查询参数——起止时间、班次、设备号这类输入项以及一个“生成报表”按钮“参数日报”页是数据落地区表头固定数据区留空由 VBA 填充。这种分页设计的好处是参数和结果分离改查询条件不用动数据区格式。建模板时先把“参数日报”页的表头列名定死并且和数据库查询结果的列顺序一致VBA 里按列号回填时就不会错位。日期格式要在系统“日期和时间”设置里统一成 yyyy-MM-ddIntouch 写入的时间字符串和 Excel 查询条件都用这个格式否则会出现“查得到记录但日期对不上”的玄学问题。3.2 VBA 引用与 ADO 连接三处必须勾选的引用打开“参数日报”页右键“查看代码”进 VBA 编辑器在“工具→引用”里至少勾选三项Microsoft ActiveX Data Objects 库用于 ADO 连接、Microsoft Excel 对象库模板自身操作、以及 OLE 自动化相关库。少勾一个编译时就报“用户定义类型未定义”这是新手最常见的翻车点。连接串和 Intouch 侧保持同源避免两套账号两套配置 参数日报页 VBA按控制面板参数查询并回填 Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String Set conn New ADODB.Connection conn.ConnectionString ProviderSQLOLEDB;Data SourceOP_01; _ Initial CatalogYADC_BB;User IDreport;Password******; conn.Open sql SELECT LogTime, TagValue FROM TDays _ WHERE LogTime BETWEEN Sheets(控制面板).Range(B2).Value _ AND Sheets(控制面板).Range(B3).Value ORDER BY LogTime Set rs conn.Execute(sql) Sheets(参数日报).Range(A5).CopyFromRecordset rs 从第5行开始回填 rs.Close: conn.Close Set rs Nothing: Set conn Nothing逻辑说明连接串四段与 Intouch 一致Data Source 换成数据库服务器名SQL 用 BETWEEN 取时间区间参数来自控制面板 B2、B3 单元格CopyFromRecordset一次性把结果集灌进指定起始单元格比逐格赋值快一个量级。参数上要注意日期值拼进 SQL 字符串时若格式不是 yyyy-MM-ddSQL Server 会按本地化设置解析跨机器部署时结果可能不同稳妥做法是在 VBA 里用 Format 函数统一格式化后再拼。3.3 定时刷新与报表输出报表不需要实时常见做法是在控制面板放一个“刷新”按钮绑宏或在工作簿打开事件里触发一次查询。若要做成定时报表用 Application.OnTime 设定间隔但注意查询期间关闭屏幕刷新Application.ScreenUpdating False否则大数据量回填时界面会卡死。输出环节把“参数日报”页另存为独立工作簿或直接打印区域设好避免把控制面板页一起打出去。模板里预留的图表区可以绑到数据区数据一刷新图表跟着变这是 Excel 报表相对组态报表的实用之处。4. 数据库备份与附加恢复mdf/ldf 两文件的搬迁历史数据服务器迁移或灾备恢复时最直接的办法是搬数据库文件再附加。SQL Server 一个库对应两个文件数据文件 .mdf 和日志文件 .ldf文档里存在 E:\DataBase 下。恢复流程是整目录拷到目标机同路径再在 SSMS 里“附加”。操作要点拷贝前先在源库上做一次完整备份或脱机直接拷正在使用的 mdf 会得到不一致的文件目标机上“数据库→右键→附加”在“要附加的数据库”里点“添加”定位到 mdf 文件SSMS 会自动带出 ldf确认路径无误后确定。若提示“日志文件找不到”说明 ldf 没一起拷或路径变了可在附加界面删掉日志行让 SQL Server 重建但会丢失未提交事务生产库慎用。注意附加要求文件版本不高于目标实例版本低版本 SQL Server 附加不了高版本文件跨版本迁移要走备份还原或导出脚本别硬附加。5. 避坑排查五个让数据“看着在、其实没进库”的现场问题现象一画面数据正常库里一条记录没有。原因多半是绑定列表变量名或顺序与表列不一致SQLInsert 静默失败。解决在 SSMS 手工执行一条 INSERT 验证表结构再对照绑定列表逐列核对顺序也要一致。现象二同一时刻库里出现大量重复记录。原因是 WSQLS 闸门没生效或复位时机错条件为真的每个扫描周期都插一条。解决确认 WSQLS 在写入后立即置 1并在非写入窗口复位为 0同时检查多站是否都满足 NodeName 过滤条件。现象三连接字符串正确却登录失败。原因是改了身份验证模式没重启 SQL 服务或账号没做用户映射。解决重启服务到“登录名→属性→用户映射”确认目标库已勾选并给了 db_datawriter。现象四Excel 报表查询报“未找到提供程序”。原因是 VBA 引用没勾 ADO 库或 Office 位数与 Provider 不匹配。解决补勾引用64 位 Office 用 SQLOLEDB 一般可用若报错改用 MSOLEDBSQL 并装对应驱动。现象五附加数据库提示文件被占用。原因是源库还在运行、mdf 被锁。解决源库脱机或停服务后再拷目标机附加前确认没有同名库存在。6. 进阶把一次性写入改成可追溯的班次归档上面这套链路跑通后多数现场会想再进一步不再每小时插一条汇总而是按班次归档、能追溯每条记录的来源站和时间。我的做法是在 TDays 表加两列 SourceNode 和 ShiftID绑定列表里把 NodeName 挂到 SourceNode脚本里按$Hour算班次写进 ShiftID。这样报表按班次筛选时不用再猜数据属于哪一班。验证方法很直接连续跑两个班次用 SSMS 查SELECT SourceNode, ShiftID, COUNT(*) FROM TDays GROUP BY SourceNode, ShiftID每个组合的记录数应等于预期写入次数多一条少一条都说明闸门或时间窗口有问题。Excel 侧把班次作为控制面板的下拉参数查询语句加AND ShiftID ?报表就能按班次出。血泪经验是任何改动绑定列表或表结构的操作先在测试库上跑满一个完整班次再上生产因为这类问题不会立刻暴露往往第二天早上才发现昨晚的数据缺了一段。从那以后我每次动绑定列表前都强制走一遍“手工 INSERT 验证 单班次试跑 计数核对”三步宁可慢半小时也不留黑匣子。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

Python内置类型本质解析:从对象模型到类继承
Python内置类型本质解析:从对象模型到类继承

1. Python内置类型本质解析 在Python的世界里,一切皆对象。这句话你可能听过无数次,但今天我们要深入探讨一个容易被忽视的真相:那些看似基础的int、str、list等内置类型,实际上都是货真价实的类对象。这个认知将彻底改变你对Pyth… · 2026/11/10 19:50:51

DeepSeek API Key 获取与使用全指南
DeepSeek API Key 获取与使用全指南

1. DeepSeek API Key 获取全流程解析作为国内领先的大模型服务提供商,DeepSeek 的 API 服务正在成为开发者接入 AI 能力的热门选择。与 OpenAI API Key 的获取方式不同,DeepSeek 提供了更适合国内开发者的接入方案。下面我将详细介绍三种主流获取方式及其… · 2026/11/11 0:35:23

Navicat连接人大金仓:端口、编码与转储避坑指南
Navicat连接人大金仓:端口、编码与转储避坑指南

简介:面向需要连接与管理人大金仓数据库的开发、运维及数据迁移人员,这份docx文档以Navicat为工具,梳理从软件认知到日常操作的完整路径。内容依次覆盖Navicat简介与官网下载安装、创建连接、账号密码配置、连接成功后的对象浏览,… · 2026/11/8 15:20:10

蓝翔电工证值不值得考?别怕考不过白交培训费
蓝翔电工证值不值得考?别怕考不过白交培训费

蓝翔电工证值不值得考?别怕考不过白交培训费 怕考不过白交培训费?很多人第一次接触蓝翔电工证时都会有这个顾虑。尤其是像你这样从事驻马店水利工程行业的,对电工证的需求很明确,但对考试流程、培训内容、报名要求却一知半解。蓝翔电工证作为国家应急管理… · 2026/11/11 0:34:46

低压初级维修电工证怎么考?学历不高怕报不上名?官方报名入口在这!
低压初级维修电工证怎么考?学历不高怕报不上名?官方报名入口在这!

低压初级维修电工证怎么考?学历不高怕报不上名?官方报名入口在这! 你是不是也这样,觉得自己学历不高,想着去考个低压初级维修电工证,结果一看报名条件就懵了?别急,今天就带你搞清楚低压初级维修电工证怎么考, 官方报名入口… · 2026/11/11 0:34:46

最牛逼的电工证怎么考才稳?实操考试心里没底怕挂科
最牛逼的电工证怎么考才稳?实操考试心里没底怕挂科

最牛逼的电工证怎么考才稳?实操考试心里没底怕挂科 实操考试心里没底怕挂科,你不是一个人。尤其是在郑州金水区从事公路工程的同行们, 上岗必备… · 2026/11/11 0:34:46

阜新电工证培训多少钱?学历不高怕报不上名?看完这篇全明白
阜新电工证培训多少钱?学历不高怕报不上名?看完这篇全明白

阜新电工证培训多少钱?学历不高怕报不上名?看完这篇全明白 你是不是也这样想, 学历不高怕报不上名 ,想着去考个电工证,结果一看条件,差点放弃?其实不然,很多在一线干活的朋友,学历不高,但照样能考,关键在于你有没有找对门路。… · 2026/11/11 0:34:46

低压电工证印章怎么考?上岗必备这些干货别错过
低压电工证印章怎么考?上岗必备这些干货别错过

低压电工证印章怎么考?上岗必备这些干货别错过 怕考不过白交培训费?低压电工证印章是很多电工从业者上岗必备的资质,但很多人因为不了解考试流程、复习重点和题型分布,最后还是竹篮打水一场空。作为在应急管理领域摸爬滚打多年的从业者,我深知备考低压电… · 2026/11/11 0:34:46

广电工程施工电工证实操考试心里没底怕挂科?良心建议帮你稳过
广电工程施工电工证实操考试心里没底怕挂科?良心建议帮你稳过

广电工程施工电工证实操考试心里没底怕挂科?良心建议帮你稳过 实操考试心里没底怕挂科?这是很多准备报考 广电工程施工电工证 的学员最担心的问题。尤其是对于刚毕业的工程类学生来说,这不仅是第一次接触这类考试,更是关系到未来职业发展的关键一步。如… · 2026/11/11 0:33:46

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/10 2:16:10

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43

_中职电工证最新政策解读
_中职电工证最新政策解读

中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52

昆明电工证培训价格值不值得考?老电工告诉你真相
昆明电工证培训价格值不值得考?老电工告诉你真相

昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52

特种电缆张工网上查询全攻略:外省证如何转过来
特种电缆张工网上查询全攻略:外省证如何转过来

特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码