
简介这份资源面向工业自动化工程师、HMI组态初学者及希望系统掌握InTouch的技术人员围绕Wonderware过程可视化组态软件的应用技术展开通过配套实例帮助读者理解界面设计、数据通信、脚本编程与历史数据记录等核心环节。压缩包为7z格式共2203个文件约3.05MB文件类型以ini、cic、dit、x、dat、cfg、ndx、dbf、win、wbk等为主涵盖工程配置、标签定义、窗口画面、数据记录与备份文件另有bmp图形、tag标签、symbol符号库及少量exe、xls、csv等辅助文件基本覆盖一个完整InTouch工程所需的各类组件。目前已有353人学习下载。资源中的范例可帮助读者对照模拟生产线监控界面、设备故障诊断流程与自动化报表生成等场景理解变量标签配置、报警阈值设置、Script逻辑控制及历史趋势回放的具体做法适合作为从入门到进阶的实操参考。1. 过程可视化组态软件InTouch应用技术实例从画面卡顿到数据不丢的落地路径很多做产线自动化的朋友第一次接触 InTouch都是被同一个场景逼的现场有 PLC、有仪表、有变频器数据都在跑但操作工还在拿对讲机喊数、拿纸质表格抄数。老板要一块大屏要历史曲线要报警弹窗要能回查三个月前的温度。这时候 InTouch 这类过程可视化组态软件就上场了。它的核心价值不是画得好看而是把现场设备的数据稳定地采上来、存下去、显示出来并且在异常时能第一时间告诉人。这篇笔记不讲空泛概念只讲一个可复现的最小实例用 InTouch 搭一套「温度压力」监控画面打通采集、报警、历史存储和回查。适合刚接手组态项目的新手也适合想复盘参数边界的熟手。2. 先想清楚 InTouch 的工程结构标记名、访问名、画面各管什么InTouch 的工程不是一上来就拖控件的。它的数据流有一条清晰的链路现场设备 → 通信驱动 → 访问名Access Name→ 标记名Tag Name→ 画面/脚本/报警/历史。很多人画面做得漂亮但数据不动问题基本都出在这条链路的前半段。理解这条链路比记住某个按钮在哪更重要。2.1 标记名不是变量名它是和现场点位绑定的契约标记名是 InTouch 里最核心的概念。它分两种内存标记名Memory Tag和 I/O 标记名I/O Tag。内存标记名只在 InTouch 内部用比如中间计算值、画面切换标志I/O 标记名才和现场设备点位对应。I/O 标记名必须绑定一个访问名访问名再指向具体的通信驱动和 PLC 地址。常见做法是先规划点位表再批量建标记名。点位表至少要有这几列标记名、数据类型、访问名、PLC 地址、工程单位、量程下限、量程上限、是否记录历史、报警限值。这张表在 Excel 里维护好后面导入或手动建都靠它。字段示例说明标记名TIC_101_PV建议带设备位号和参数类型数据类型Real温度用实数状态用离散访问名PLC1指向通信驱动配置PLC 地址40001保持寄存器地址工程单位℃画面显示用量程下限0用于百分比填充和报警判断量程上限200同上记录历史是决定是否进历史库报警限值高 150 / 高高 170分级报警这张表看起来笨但它能避免后面 80% 的返工。我见过一个项目标记名建了 3000 多个结果访问名配错了一个字母整条线数据全断排查了一整夜。血泪经验点位表先定稿再动手建标记名。2.2 访问名配置通信驱动的三个必调参数访问名是 InTouch 和通信驱动之间的桥梁。以常见的 Modbus TCP 驱动为例新建访问名时要填访问名、节点名或 IP、应用程序名驱动名、主题名Topic。其中主题名最容易翻车它必须和驱动里配置的 Topic 完全一致大小写敏感。; 访问名配置示例以 Modbus TCP 为例 AccessName PLC1 NodeName 192.168.1.10 ; PLC 的 IP Application MODBUSTCP ; 驱动应用程序名 Topic PLC1_TOPIC ; 必须和驱动内 Topic 一致逻辑说明InTouch 通过 Application 找到驱动通过 NodeName 找到设备通过 Topic 找到驱动内部的一组寄存器映射。参数说明NodeName 填 IP 或主机名Application 填驱动注册名不同驱动不一样Topic 是驱动里手动建的名字随便起但必须两边一致。失败时先看驱动状态灯再看 InTouch 的访问名诊断最后用驱动自带的测试工具读一个寄存器能读通再回 InTouch。2.3 画面不是画出来的是绑出来的画面里的控件本身不存数据它只是标记名的显示层。一个温度显示本质是一个文本控件绑定了 TIC_101_PV并设置了显示格式。一个趋势曲线本质是历史趋势控件绑定了若干标记名。一个报警弹窗本质是报警控件绑定了报警组。新手常犯的错是在画面里直接写死数值或者用脚本去改控件属性而不是改标记名。正确做法是所有动态都通过标记名驱动。画面切换、按钮动作、数值输入全部落到标记名上。这样脚本才可维护报警和历史才生效。3. 动手搭一个最小实例温度压力监控画面从零跑通这一章给一个能照着做的实例。目标一个画面显示温度 TIC_101_PV 和压力 PIC_101_PV温度超过 150℃ 触发高报警两个值都存历史能查最近一小时的曲线。假设通信驱动已经配好PLC 地址已经确认。3.1 建标记名I/O 与内存的分配清单先建 I/O 标记名。温度 TIC_101_PV类型 Real访问名 PLC1地址 40001量程 0~200记录历史报警高限 150。压力 PIC_101_PV类型 Real访问名 PLC1地址 40002量程 0~1.6记录历史报警高限 1.2。再建两个内存标记名AlarmAck离散报警确认、CurveTime整型曲线时间范围。-- 标记名定义伪 SQL 表示实际在 InTouch 标记名字典里建 INSERT INTO Tags (TagName, Type, AccessName, Address, Min, Max, LogHistory, HiLimit) VALUES (TIC_101_PV, Real, PLC1, 40001, 0, 200, 1, 150), (PIC_101_PV, Real, PLC1, 40002, 0, 1.6, 1, 1.2); INSERT INTO Tags (TagName, Type, AccessName, Address, Min, Max, LogHistory, HiLimit) VALUES (AlarmAck, Discrete, , , 0, 1, 0, 0), (CurveTime, Integer, , , 0, 1440, 0, 0);逻辑说明I/O 标记名必须填访问名和地址内存标记名访问名留空。LogHistory 为 1 表示进历史库历史库的采集周期在历史配置里单独设。参数说明Min/Max 影响画面百分比填充和报警死区HiLimit 是报警触发值实际项目还要设死区和延时避免抖动。3.2 画面绑定文本、趋势、报警三个控件的配置新建一个画面放三个控件。第一个是文本控件绑 TIC_101_PV显示格式##.# ℃。第二个是历史趋势控件绑 TIC_101_PV 和 PIC_101_PV时间跨度绑 CurveTime默认 60 分钟。第三个是报警控件绑报警组显示当前报警和确认按钮。// 画面脚本示例按钮点击时切换曲线时间范围 // 假设按钮名为 btn_1h趋势控件名为 trend_1 btn_1h.OnClick function() { CurveTime 60; // 单位分钟 trend_1.TimeSpan CurveTime; trend_1.Update(); // 强制刷新趋势 };逻辑说明脚本不直接改趋势控件的内部数据而是改标记名 CurveTime再让趋势控件读这个标记名。参数说明TimeSpan 单位是分钟Update 是刷新方法不同版本可能叫法不同以实际函数列表为准。失败时看脚本编辑器有没有报错再看趋势控件的时间范围是否真的变了。3.3 报警配置高限、死区、延时三个参数怎么设报警在标记名属性里配。温度高限 150死区设 2延时设 3 秒。死区的作用是报警触发后值要降到 148 以下才恢复避免在 150 附近反复跳。延时的作用是值连续超过 150 达到 3 秒才真正报警避免尖峰误报。参数建议值作用高限150触发值死区2防止抖动延时3 秒过滤尖峰报警组HighAlarm画面报警控件绑定用确认方式手动操作工确认后消失配置完保存运行画面。如果报警不弹先看标记名的报警是否启用再看报警组是否被报警控件绑定最后看报警优先级和显示过滤。常见坑是报警组建了但没绑到控件或者报警被过滤掉了。3.4 历史存储采集周期和存储周期别搞混历史配置里有两个周期容易混采集周期Sample Period和存储周期Storage Period。采集周期是多久采一次值存储周期是多久写一次盘。常见做法是采集 1 秒存储 10 秒或变化存储。如果两个都设 1 秒历史库会膨胀得很快。; 历史配置示例 HistoryProvider 本地历史库 SamplePeriod 1000 ; 毫秒采集周期 StoragePeriod 10000 ; 毫秒存储周期 StorageMode 变化存储 ; 值变化超过死区才存 Deadband 0.5 ; 存储死区逻辑说明采集周期决定曲线精度存储周期决定磁盘占用。变化存储能大幅减少数据量。参数说明Deadband 是存储死区小于这个变化量不存。失败时看历史库服务是否启动再看标记名的 LogHistory 是否勾选最后用历史趋势控件查一个已知时间段。4. 避坑与排查InTouch 实例里最容易翻车的五个点这一章全是踩坑记录每条按现象、原因、解决写。新手照着做能省很多时间。4.1 现象画面数值不动但驱动测试能读到值原因访问名的 Topic 和驱动里的 Topic 不一致或者标记名的地址格式不对。解决打开访问名诊断看通信状态用驱动自带测试工具读同一个地址确认地址是十进制还是十六进制Modbus 地址常有 40001 和 0 基址的差异。4.2 现象报警一直弹操作工确认了又弹原因死区太小或没设值在限值附近抖动或者报警确认方式设成了自动。解决加大死区加延时确认方式改手动检查报警组是否被多个控件重复绑定。4.3 现象历史曲线查不到数据但实时值正常原因标记名没勾 LogHistory或者历史库服务没启动或者存储周期设得太大。解决逐个检查标记名历史属性看历史库服务状态把存储周期改小做测试用历史查询工具直接查标记名。4.4 现象画面切换很卡脚本执行慢原因画面里绑了太多 I/O 标记名或者脚本里写了死循环或者趋势控件绑了太多点。解决把不显示的标记名从画面移除脚本里避免 While 死循环趋势控件一次不超过 8 个点用画面缓存和预加载。4.5 现象工程换一台电脑就打不开或数据源报错原因访问名里的 IP 或主机名变了或者驱动没装或者历史库路径是绝对路径。解决换机前导出访问名和标记名清单驱动版本保持一致历史库路径用相对路径或重新配置工程文件整体拷贝不要只拷画面。5. 进阶技巧用脚本做数据回查和导出让 InTouch 不止于画面最后一章讲一个具体技巧用 InTouch 脚本把历史数据按时间段查出来导出成 CSV方便做报表或外部分析。这个技巧在项目验收和月度报表时特别有用。5.1 历史查询的脚本框架InTouch 提供历史查询函数常见做法是用 SQL 查询历史库或者用内置的历史趋势导出。下面是一个脚本框架假设历史库支持标准查询。-- 历史查询示例查 TIC_101_PV 在指定时间段的值 SELECT TagName, DateTime, Value FROM History WHERE TagName TIC_101_PV AND DateTime 2025-01-01 08:00:00 AND DateTime 2025-01-01 09:00:00 ORDER BY DateTime ASC;逻辑说明查询结果可以逐行写入 CSV 文件。参数说明时间格式要和历史库一致TagName 要和标记名完全一致如果数据量大加 LIMIT 或分页。失败时看历史库是否支持 SQL 查询或者改用内置导出函数。5.2 导出 CSV 的脚本片段// 导出 CSV 脚本示例 var fso new ActiveXObject(Scripting.FileSystemObject); var file fso.CreateTextFile(D:\\Export\\history.csv, true); file.WriteLine(TagName,DateTime,Value); // 假设 rs 是查询结果集 while (!rs.EOF) { file.WriteLine(rs(TagName) , rs(DateTime) , rs(Value)); rs.MoveNext(); } file.Close();逻辑说明用文件系统对象写 CSV逐行输出。参数说明路径要提前建好否则报错编码建议用 UTF-8 或 GBK看 Excel 打开是否乱码大数据量时分批写避免内存爆。失败时看文件路径权限再看结果集是否为空。5.3 一个我常用的验证习惯每次做完历史导出我会先手动查一个已知时间段比如整点前后 5 分钟确认条数和数值对得上再跑全量导出。这个习惯帮我抓过好几次时间格式错位和时区偏移的问题。InTouch 的历史库时间戳有时是本地时间有时是 UTC导出前一定确认清楚。希望帮到你。本文还有配套的精品资源点击获取