☰
Intouch 2020R2 SP1 与 S7-1500 通讯配置及排错指南
2026/10/28 5:49:54 网站建设 项目流程

简介:面向具备自动化设备安装调试基础、需要打通上位机与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是一台具体 PLC(IP + 机架槽号),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 侧改动额外许可寻址方式更适合的场景
SIDIRECT(S7 通讯)开 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 能正常建应用
SMC(System 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 选型与以太网参数

新建项目、添加 CPU(1511、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 端口通,这两件事要分开测。有些交换机开了端口隔离或者 ACL,ping 得通但 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 通常为 0
Slot1CPU 在设备视图中的槽位,1500 一般为 1
Port102S7 通讯标准端口,不要改

机架号和槽号是新人最容易填错的两个格子。找法是从博图里打开设备视图,看 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/24"

Test-NetConnection看的是TcpTestSucceeded是否为 True,它比 ping 更接近真实情况,因为 ping 走的是 ICMP,和 S7 的 TCP 连接是两回事。Get-NetRoute用来确认InterfaceIndex是不是接 PLC 的那块网卡,双网卡机器上路由走错,表现就是时通时不通,非常折磨人。

5.2 现象:整数能读,浮点读出来是乱码,位读不到

原因是类型不匹配。PLC 里是 REAL,Intouch 里建了 I/O Integer,读回来的是把 4 个字节当 2 字节解释的结果;位变量用了DBD前缀,读的是一个双字而不是一个布尔。解决方法是回到 3.4 的地址台账,逐条核对类型和前缀:Real 用DBD,Int 用DBW,Bool 用DBX加位号,三者的字节宽度不能混。

还有一种情况是浮点值看起来“差不多但差得离谱”,那是字节序或者偏移差了 2 字节,常见于手工推算地址时把上一个变量的宽度算错。遇到这种,别改公式,直接回博图看偏移量列。

5.3 现象:今天配好能用,重启电脑后通讯全断

原因多半是服务没设成自动启动,或者 SMC 里的配置没有落到“开机自动激活”的状态。解决分两步:一是把 SIDIRECT 相关服务的启动类型改成自动;二是在 SMC 里确认配置已保存并处于激活状态,有些版本需要重新 Activate 一次才会在重启后恢复。

顺带提一句,PLC 侧如果改过 IP 或者换过 CPU,SMC 里那条 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 侧强制改值,看画面是否跟随;然后断电重启一次上位机,确认服务自启和配置持久化;最后拔一次网线,看恢复后数值能不能自己回来。这三步走完,才算真的收工。从那以后我每次交底前都强制走一遍这套验证,宁可多花二十分钟,也不想在半夜接到“画面全是问号”的电话。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询