Intouch 2020R2 SP1 与 S7-1500 通讯配置及排错指南
发布时间:2026/10/28 5:50:22 锦皓数字建站

简介面向具备自动化设备安装调试基础、需要打通上位机与PLC通讯的工程技术人员这份《Intouch2020R2SP1与西门子1500PLC通讯配置手册》聚焦实际项目中的联调环节系统梳理从PLC侧到Intouch侧的完整配置流程。内容围绕博图软件设置、SMC配置、创建Intouch通讯程序、访问名与标记名配置以及动画链接建立等关键步骤展开并穿插安全操作提醒与注意事项便于读者理解各环节的衔接关系。资源包为1个PDF文件大小约1.42MB单文件结构适合随身查阅或打印成册按目录顺序即可对照现场操作。该手册已有287人学习适合在项目调试前快速熟悉通讯链路搭建思路也可作为排查通讯异常、核对参数设置时的参考资料帮助减少反复试错提升配置效率与系统运行的稳定性。1. Intouch 2020R2 SP1 连 S7-1500八成的通讯故障锅不在驱动上现场最典型的一幕是这样的Intouch 2020R2 SP1 的画面已经画完西门子 S7-1500 也在正常跑切到运行态标记名全打成问号。工程师把 SMC 里的连接删了建、建了删重装驱动、换网线、改 IP一下午过去了还是问号。这类 Intouch 与 S7-1500 的通讯配置真正决定成败的往往是三处静态设置PLC 侧的 PUT/GET 授权与 DB 块访问方式、SMC 里 Legacy Connection 的机架槽号与 Topic 命名、Intouch 访问名与 Topic 的对应关系。这份《Intouch2020R2SP1 与西门子 1500PLC 通讯配置手册》走的就是这条主线——博图设置、SMC 配置、通讯程序、访问名、标记名、动画链接六段从 PLC 内部的一个 DB 偏移量一路拉到画面上跳动的数字。适合手上正有一套 1500 Intouch 要联调、又不想在驱动层反复试错的自控工程师也适合第一次独立做上位机对接、需要一份能照着抄的参数的同行。2. 拆开这条链路SIDIRECT 的四层结构与选型边界2.1 一个模拟量从 DB 块到画面刷新的完整路径把通讯拆开看一个温度值要走完五跳。第一跳在 PLC 内部DB100 里偏移 0 的 REAL 变量被程序每个扫描周期刷新第二跳是以太网S7 通讯跑在 ISO-on-TCP 上默认端口 102帧里带着“读 DB100 从第 0 字节开始的 4 个字节”这样的请求第三跳是上位机上的 OI Server也就是 SMC 树里那个Siemens - SIDIRECT节点它负责把请求翻译成 S7 报文、把返回值还原成数值第四跳是 Intouch 的访问名它指向 OI Server 里的某个 Topic第五跳才是标记名和动画链接WindowViewer 按更新周期去取这个值画到矩形填充或者数值显示上。SMC 的树形结构和这条路径是一一对应的Port是协议端口层Legacy Connection是一台具体 PLCIP 机架槽号Device Group/Topic 是这台 PLC 下面的一组数据Item 才是最终的 DB 地址字符串。搞清这四层的归属排错时就能判断问题出在哪一层——是端口没通、连接没激活、Topic 名字对不上还是 Item 地址写错。很多人一上来就怀疑驱动其实是第四层和第五层没对齐。还要注意一个不写在界面上的事实SIDIRECT 走的是绝对地址读取它不认识你在博图里起的符号名只认 DB 号加字节偏移。这意味着 PLC 程序里一次无心的变量插入就可能让整张地址表错位而画面上不会有任何报错只会安静地显示错误的值。这种“静默错误”比通讯中断更难查后面第 5 章会专门讲。2.2 为什么这套组合优先 SIDIRECT而不是 OPC UA 或 Modbus TCP接线方式不止一种选哪个取决于你在 PLC 侧愿意付出多少改动成本。SIDIRECT 的优势是改动最小不用在 PLC 里加任何通讯程序块不用额外授权只要打开 PUT/GET 权限、把对应 DB 的“优化的块访问”取消掉就能读写。它本质上就是让上位机扮演一个 S7 客户端和博图在线监控用的是同一套服务。OPC UA 看起来更现代但在 1500 上要开服务器、配安全策略、处理证书部分型号还要运行时许可联调面一下子变大。它真正的价值在跨系统——给 MES、给数据平台、给多品牌混用的产线做统一入口而不是一台 HMI 连一台 PLC 这种点对点场景。Modbus TCP 则是另一条路需要在 PLC 侧写MB_SERVER之类的映射程序把要通讯的数据搬进固定寄存器区等于把地址表重编一遍点多了维护成本很高。方案PLC 侧改动额外许可寻址方式更适合的场景SIDIRECTS7 通讯开 PUT/GET、DB 取消优化访问无DB 号 绝对偏移单台 HMI 对接单台 1500点数几百到几千OPC UA开服务器、配安全策略与证书视 CPU 型号与固件而定节点/符号跨系统集成、上层平台取数Modbus TCP写服务端映射程序、重建寄存器表无寄存器地址多品牌设备混用、第三方仪表选 SIDIRECT 的边界也要说清楚它依赖非优化 DB意味着你在博图里放弃了一部分 DB 结构灵活性它只走 IPv4 的 102 端口跨网段要提前在防火墙上放行它的连接数是有限的1500 对 PUT/GET 的并发连接有上限多台上位机同时连同一台 PLC 时要算一算别到现场才发现第三台连不上。这几点在项目前期定方案时就要想好事后改的成本远高于一开始选对。2.3 版本与组件清单先对齐再动手动手之前先把清单核对一遍比配到一半发现驱动不认 1500 强得多。SIDIRECT 是很老的驱动产品线早期版本只支持 S7-300/400能连 1500 的版本需要确认过。判断方法很简单打开 SMC如果Operations Integration Supervisory Servers下面能看到Siemens - SIDIRECT这一项说明驱动已注册成功看不到就是没装或者装错版本此时在 Intouch 里怎么配都不会通。组件在这条链路里的角色核对点Intouch 2020R2 SP1HMI 组态与运行时Application Manager 能正常建应用SMCSystem Platform Management Console管理 OI Server 与连接配置树里能看到 SIDIRECT 节点Siemens SIDIRECT DA Server实际发 S7 报文的服务Windows 服务列表里处于运行状态博图PLC 硬件组态与 DB 定义能在线监控、能看 DB 偏移量上位机操作系统承载上述软件与 PLC 同网段、102 端口可达安装顺序上常见做法是先装 Intouch 再装驱动装完重启一次让服务注册生效。有些现场图省事装完不重启就去开 SMC结果树里空着一块以为是版本问题其实只是服务没起来。我一般会在装完后先看一眼服务列表把 SIDIRECT 相关服务的启动类型设成自动省得后面每次开机都要手动拉一次。3. 博图侧四个开关少勾一个SMC 里怎么配都不通3.1 CPU 选型与以太网参数新建项目、添加 CPU1511、1513、1515 按实际型号选进设备组态点开 CPU 的 PROFINET 接口 X1设 IP 地址和子网掩码。示例里用192.168.0.10 / 255.255.255.0上位机设成同网段的192.168.0.100之类。这一步没什么技巧但有两个细节常被忽略一是上位机如果是双网卡接 PLC 的那块网卡必须和 PLC 同网段而且不要让办公网的默认路由把它盖掉二是改完 IP 一定要重新下载硬件组态只在离线项目里改PLC 里的实际地址不会变。验证方法很直接在上位机命令行里 ping 一下 PLC 的 IP。ping 通只说明三层可达不代表 102 端口通这两件事要分开测。有些交换机开了端口隔离或者 ACLping 得通但 S7 报文过不去这种情况在集成度高的现场并不罕见。3.2 保护等级与“允许来自远程对象的 PUT/GET 通信访问”右键 CPU → 属性 → 防护与安全 → 访问级别这里是决定“外部能不能读你”的总闸。调试阶段常把访问级别设为完全访问无保护但这只是省事不是必须。真正关键的是下面那个勾选框允许来自远程对象的 PUT/GET 通信访问。这个勾不勾直接决定 SIDIRECT 能不能拿到数据——不勾的时候连接能建、Activate 也能成功但一读就是空值非常容易误判成驱动问题。设置项调试期建议投运后建议访问级别完全访问无保护按现场规范收紧保留必要权限PUT/GET 通信访问勾选保持勾选仅对受控网段开放通讯端口102 默认不变靠网络层隔离投运后要不要把访问级别收回去取决于现场的网络边界。如果上位机和 PLC 在同一个受控的自动化网段里保持 PUT/GET 开启是常规做法如果这条网络还要接办公网那就该在交换机或路由层做隔离而不是靠关权限来兜底。权限一关通讯立刻断这种“安全措施”最后往往被现场改回来。3.3 DB 块必须取消“优化的块访问”这是最容易翻车的一步。S7-1500 新建 DB 时默认勾选“优化的块访问”这种 DB 内部按符号组织没有固定的绝对偏移博图里看到的偏移量列是空的。SIDIRECT 这类按绝对地址读的驱动面对优化 DB 完全无从下手——它能连上但读不到任何东西或者读出来是垃圾值。操作是右键目标 DB → 属性 → 取消勾选“优化的块访问” → 确定 → 编译整个 PLC → 下载。三步里“下载”这一步不能省只编译不下载PLC 里跑的还是旧结构地址表对不上。取消优化之后DB 编辑器里会多出“偏移量”列这才是你要抄进 Intouch 的数字。有个副作用要提前知道取消优化会把该 DB 的布局重新排一遍原来算好的偏移可能整体位移。如果这个 DB 已经被别的系统引用过改之前先把旧偏移量导出来对比别直接覆盖。项目里我一般要求所有要通讯的 DB 从建立第一天就取消优化避免后期返工。3.4 用偏移地址核对别拿符号名当地址用打开取消优化后的 DB看偏移量列把每个要通讯的变量记成“DB 号 偏移 类型”三件套。类型必须和 Intouch 里的标记名类型对上Real 对应 4 字节、Int 对应 2 字节、Bool 对应位。下面这张表就是我从项目里随手摘的一段地址台账的样式实际做项目时建议用表格维护几百个点靠脑子记一定会错。变量含义数据类型DB 号偏移量Item 写法参考出口温度Real1000DB100.DBD0主管压力Real1004DB100.DBD4循环泵运行Bool1008.0DB100.DBX8.0启动次数Int10010DB100.DBW10位地址的偏移写法要格外小心偏移量列显示的8.0表示第 8 字节的第 0 位写 Item 时不能写成DB100.DBD8那是把 4 个字节当一个浮点数读得到的值毫无意义。同理一个 Int 占 2 字节紧跟其后的下一个变量偏移就是 12 而不是 11逐条核对比凭经验推算可靠。4. SMC 与访问名连接参数、Topic 与标记名地址一次对齐4.1 层级路径与 Legacy Connection从开始菜单打开 AVEVA 的 System Platform Management Console依次展开Operations Integration Server Manager Default Group Local Operations Integration Supervisory Servers Siemens - SIDIRECT Configuration Port。在Port上右键选Add Legacy Connection弹出的配置窗口里填连接名、PLC 的 IP、机架号、槽号。连接名可以随意起但建议用英文、不带空格和特殊字符比如PLC1500_LINE1。中文名在部分版本的日志里会显示成乱码排错时反而添乱。这个名字本身不参与通讯只是给人看的标签真正决定连哪台设备的是 IP 和机架槽号。4.2 连接参数逐项对照参数填什么说明Name自定义如PLC1500_LINE1仅作标识建议英文IP AddressPLC 的实际 IP与博图硬件组态一致Rack0S7-1500 通常为 0Slot1CPU 在设备视图中的槽位1500 一般为 1Port102S7 通讯标准端口不要改机架号和槽号是新人最容易填错的两个格子。找法是从博图里打开设备视图看 CPU 所在的那一行对应的槽号S7-1500 的 CPU 固定占槽 1机架号 0。填成 0/2 或者 1/1 的后果是连接建得起来但读不到数据日志里往往只有一句笼统的连接失败看不出是槽号错了。血泪经验是这两个数字不要凭记忆填每次都在博图里现看一眼。4.3 Device Group、保存与 Activate 的顺序连接建好后在Device Group上右键空白处选Add输入组名比如PLC。这个组名就是后面 Intouch 访问名里要填的 Topic Name两处必须一模一样大小写敏感度取决于版本稳妥起见全用大写或全用小写。顺序上有个坑先保存再激活。点右上角的保存图标把配置落盘然后在树上右键OI.SIDIR.1选Activate。反过来先 Activate 再改配置改动不会生效改完连接参数后正确姿势是Deactivate→ 改 → 保存 →Activate少一步都会出现“配置看起来是对的但就是不生效”的玄学现象。激活成功后节点图标状态会变这时候可以顺手在 OI Server 的测试界面里读一个已知地址验证链路是否真的通了。这一步能省掉后面在 Intouch 里反复怀疑自己的时间。4.4 Intouch 访问名三要素Application、Topic、Node打开 Intouch 的 Application Manager新建一个应用选“独立型带符号库”的模板命名后进入 WindowMaker。访问名在Special Access Names里配置三个字段决定一切。字段填什么常见错误Name自定义如ACC_PLC用了中文或空格Application NameSIDIRECT驱动注册名填成了安装路径或 exe 名Topic NameSMC 里建的 Device Group 名如PLC与 SMC 里的名字大小写不一致Node Name留空本机双机部署时误留空Application Name 填的是驱动在系统里注册的名字不是文件路径。填错了运行时日志里会出现打开会话失败的记录但画面上只是一片问号不会告诉你原因。Node Name 在本机部署时留空即可如果是远程 OI Server 部署这里要填那台机器的机器名或 IP这也是很多“单机好使、换到服务器就断”的根因。4.5 标记名地址的四段结构与动画链接标记名在 Tagname Dictionary 里新建先选类型I/O Discrete、I/O Integer、I/O Real再挂上刚才建的访问名最后在 Item 里填地址字符串。地址由“区域 DB 号 偏移 类型前缀”几段拼成常见写法就是 3.4 表格里那几种DB100.DBD0双字/浮点、DB100.DBW10字、DB100.DBX8.0位。不同版本的 SIDIRECT 对分隔符和类型前缀的容忍度不完全一样权威定义在驱动安装目录的帮助文件里搜索 Item Name Syntax 就能找到。拿不准的时候最省事的做法是先只建一个标记名切到运行态看它有没有值一个点通了剩下的复制改偏移就行。一个都不通就别批量建了问题在访问名或 SMC 那一层。动画链接是最后一步在窗口里放一个文本对象或矩形双击打开动画选“值显示”或“填充”表达式里选刚才的标记名设好范围和颜色保存切到 WindowViewer。数值开始跟着 PLC 变化这条链路才算真正打通。如果数值显示的是?说明取数失败如果显示0但从头到尾不动多半是地址对上了但 PLC 里那个变量本身没在刷新。5. 排查记录五个现象、五个原因照着对5.1 现象SMC 里 Activate 成功Intouch 全是问号原因通常不在驱动而在访问名和标记名的对应关系上Application Name 写错、Topic Name 与 SMC 里的组名不一致、Item 地址格式不被当前驱动版本接受三者占绝大多数。解决顺序是从下往上查——先在 SMC 的 OI Server 里直接读一个已知地址这一层通了再回到 Intouch 查访问名最后查 Item 字符串。如果连端口都不确定通不通别猜直接测# 先确认 PLC 的 S7 通讯端口是否可达102 不通就别在 Intouch 里折腾了 Test-NetConnection -ComputerName 192.168.0.10 -Port 102 -InformationLevel Detailed # 双网卡机器常见问题确认去往 PLC 网段的路由走的是哪块网卡 Get-NetRoute -DestinationPrefix 192.168.0.0/24Test-NetConnection看的是TcpTestSucceeded是否为 True它比 ping 更接近真实情况因为 ping 走的是 ICMP和 S7 的 TCP 连接是两回事。Get-NetRoute用来确认InterfaceIndex是不是接 PLC 的那块网卡双网卡机器上路由走错表现就是时通时不通非常折磨人。5.2 现象整数能读浮点读出来是乱码位读不到原因是类型不匹配。PLC 里是 REALIntouch 里建了 I/O Integer读回来的是把 4 个字节当 2 字节解释的结果位变量用了DBD前缀读的是一个双字而不是一个布尔。解决方法是回到 3.4 的地址台账逐条核对类型和前缀Real 用DBDInt 用DBWBool 用DBX加位号三者的字节宽度不能混。还有一种情况是浮点值看起来“差不多但差得离谱”那是字节序或者偏移差了 2 字节常见于手工推算地址时把上一个变量的宽度算错。遇到这种别改公式直接回博图看偏移量列。5.3 现象今天配好能用重启电脑后通讯全断原因多半是服务没设成自动启动或者 SMC 里的配置没有落到“开机自动激活”的状态。解决分两步一是把 SIDIRECT 相关服务的启动类型改成自动二是在 SMC 里确认配置已保存并处于激活状态有些版本需要重新 Activate 一次才会在重启后恢复。顺带提一句PLC 侧如果改过 IP 或者换过 CPUSMC 里那条 Legacy Connection 的 IP 也要同步改改完按 4.3 的顺序 Deactivate → 改 → 保存 → Activate。现场换备件后通讯断十有八九是这一步漏了。5.4 现象能读不能写写进去的值下一秒就变回去原因不在通讯在 PLC 程序。写下去的值被程序里某个每个扫描周期都执行的赋值语句覆盖了或者这个 DB 变量在程序里是输出结果而不是输入设定。解决方法是让写操作和程序逻辑错开要么把设定值单独放一个 DB 区域程序只读不写要么在程序里加条件避免无条件覆盖。还有一种情况是 DB 属性里设了只读或者写保护这种在下载时不会有提示只有写的时候才发现。查的时候先看程序再看 DB 属性最后才怀疑驱动。5.5 现象偶发闪断画面数值偶尔跳 0这是最难复现的一类。常见原因有三个一是 1500 对 PUT/GET 的并发连接数有限多台上位机加上编程软件在线监控同时连连接被挤掉二是网络里有环或者交换机质量差丢包导致的超时重连三是更新周期设得太短100ms 一个点乘以几百个点负载压不住。对应的处理把不参与调试的在线监控断掉、把更新周期从 100ms 放宽到 500ms、把上位机和 PLC 单独划到一个交换机上。这几条改完还断就该抓包看是哪个方向先断的而不是继续在软件里调参数了。6. 批量标记名与心跳位让通讯状态自己说话点位超过一百个手工在 Tagname Dictionary 里一条条敲就是纯粹的体力活而且必错。Intouch 自带 DBDump 和 DBLoad 两个工具可以把整个标记名字典导出成 CSV改完再导回去。我的做法是先手工建三五个通得过的点用 DBDump 导出来看列结构再按同样的列结构把地址台账批量填进去DBLoad 一次导入。自己维护的地址台账长这样用一份 CSV 存着既是导入源也是后期查错的对照表tagname,type,access_name,item,comment TEMP_DB100_0,IOReal,ACC_PLC,DB100.DBD0,1#加热器出口温度 PRESS_DB100_4,IOReal,ACC_PLC,DB100.DBD4,1#主管压力 RUN_DB100_8_0,IODiscrete,ACC_PLC,DB100.DBX8.0,1#循环泵运行 COUNT_DB100_10,IOInteger,ACC_PLC,DB100.DBW10,1#启动次数这四列里item是唯一会随博图改动而变化的部分其余三列基本固定。所以要重新下载 DB 时只需要更新这一列再重新 DBLoad工作量从半天压到十分钟。注意 BDDump 的原始列远比这多导入前要按原始列结构对齐别直接拿这份精简版去喂 DBLoad。再往上走一步是做通讯健康度自检。在 PLC 的 DB 里留一个 INT 变量程序里每秒加一、溢出回绕Intouch 侧用一个 I/O Integer 标记名读它再配一段条件脚本值超过五秒没变化就置一个离散报警位。这个心跳位比任何“通讯正常”的静态提示都可靠因为它验证的是整条链路在动而不只是连接存在。我把这个习惯带到了每一个项目里画面上永远有一个不起眼的小方块在闪它一停值班的人比我先知道。点位抽查也建议做成固定动作新配完先抽三个点一个 Real、一个 Int、一个 Bool在 PLC 侧强制改值看画面是否跟随然后断电重启一次上位机确认服务自启和配置持久化最后拔一次网线看恢复后数值能不能自己回来。这三步走完才算真的收工。从那以后我每次交底前都强制走一遍这套验证宁可多花二十分钟也不想在半夜接到“画面全是问号”的电话。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。