news 2026/11/6 7:05:44

Intouch 2020R2与S7-1500 SIDIRECT通讯配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Intouch 2020R2与S7-1500 SIDIRECT通讯配置

简介:这份PDF面向具备一定自动化设备安装调试能力的技术人员与工控工程师,针对Intouch 2020R2 SP1与西门子1500PLC建立稳定通讯这一实际工程需求,梳理从软件设置到画面联动的完整配置路径。内容围绕博图侧的CPU型号选择、上位机通讯IP配置、变量表与DB块权限开放,以及SMC中Siemens SIDIRECT驱动的Port配置、Intouch通讯程序创建、访问名与标记名定义,直到动画链接建立与最终验证,均给出分步说明与注意事项。资源包共1个PDF文件,约1.42MB,以图文步骤形式呈现,便于按章节顺序对照现场操作,也方便在调试阶段快速定位环节。目前已有288人学习,适合需要将Intouch与S7-1500打通数据通道、减少试错成本的工程师参考,并可作为项目交付前的自查清单使用。

1. 上位机读不到数,八成不是 Intouch 的锅:先把这条通讯链路拆成四段

现场最让人难受的时刻,不是画面做不出来,而是画面做完了,数值全挂问号。排查半天发现 PLC 好好的、网线也通,问题卡在中间某一层没有打开。这份 Intouch 2020R2 SP1 与西门子 1500PLC 的通讯配置手册,讲的就是把这条路彻底打通:走 SIDIRECT 驱动加 S7 的 PUT/GET,不经过 OPC UA,也不用第三方网关中转,属于最短路径,但每一步都必须对。

它适合三类人:手上有 S7-1500 且上位机装的是 Intouch 2020R2 SP1、需要在半天内把几十个点位读上来的调试人员;接手别人做了一半的工程、访问名和标记名一团乱的人;以及想把配置流程固化成内部规范的人。整条链路其实只有四段——博图侧放开权限、SMC 里建连接和组、Intouch 里建工程、访问名和标记名把地址串起来。下面按这个顺序拆,每段都给出能直接照抄的参数。

2. 博图侧的四个开关:S7-1500 凭什么允许外部读写

很多人第一步就走到岔路上:在 Intouch 里反复改访问名,结果 PLC 那头根本没开权限。S7-1500 对外部读写是默认收紧的,必须放行四个地方,缺一个都只能读到问号。

2.1 硬件组态与 IP:先保证 ping 得通、网段一致

在博图里新建项目,添加实际 CPU 型号(例如 CPU 1511-1 PN),进入设备视图,双击 PROFINET 接口设 IP 地址和子网掩码。上位机网卡设成同网段另一个地址,两边不要用同一个 IP,也不要把 PLC 挂在 DHCP 上——现场断电重启后地址一变,SMC 里配好的连接就全废了。

这一步的验收标准很朴素:在上位机命令行里 ping 通了再往下走。

ping 192.168.0.10 -n 4 arp -a | findstr 192.168.0.10

-n 4是发四个包,主要看丢包率而不是看通不通;arp -a是确认 MAC 地址解析到的是 PLC 那块网口,而不是同网段里另一台设备。上位机如果有多块网卡(常见于同时接了办公网和工控网的笔记本),一定要确认走的是工控网那块,否则会出现“能 ping 通但驱动连不上”的情况。

参数按照现场习惯先固定下来,后面所有配置都按这张表填:

参数取值示例说明
PLC IP192.168.0.10与上位机同网段
子网掩码255.255.255.0两边必须一致
上位机 IP192.168.0.100不要与 PLC 冲突
机架号 Rack0S7-1500 单 CPU 固定为 0
槽号 Slot1无扩展模块时为 1

2.2 访问权限与 PUT/GET:无保护不等于允许远程读写

打开 CPU 属性,找到“防护与安全”,把访问级别设为完全访问(无密码)。这里有个常见误解:以为选了无保护就完事了。实际上 S7-1500 还有一道独立的开关,在“防护与安全 → 连接机制”里,必须勾上“允许来自远程对象的 PUT/GET 通信访问”。

原因在于 SIDIRECT 走的是 S7 通讯里的 PUT/GET 服务,属于非组态的服务器连接,跟 HMI 面板那种集成连接不是一回事。不勾这一项,用博图监视表能看到数据,Intouch 却一个字节都读不上来,而且报错信息往往很含糊,只提示连接失败。改完要重新编译并下载硬件组态,这个改动不是只下载程序块就能生效的,下载过程通常需要 CPU 停机重启,排计划时要留出时间窗口。

顺带说一句,DB 块本身也有访问属性。如果某个 DB 在属性里把“可从 HMI 访问”关掉了,即使 CPU 级别放开了,这个块依然读不到。新项目一般默认是开的,接手别人的项目就要逐个看。

2.3 取消优化块访问:地址必须是绝对地址

这是最容易遗漏的一条。打开要给上位机用的 DB 块,右键属性,把“优化的块访问”取消勾选,然后编译。不取消会怎样?PLC 自己按最优方式排布变量,不暴露稳定的字节偏移,上位机按DB100.DBD0去读,读回来的可能是另一个变量的值,甚至半个浮点数——数值看起来像乱码,排查起来特别费时间。

取消优化之后,每个变量都有确定的偏移量,可以在 DB 的偏移量列里直接看到。数据类型和字节占用要心里有数:

PLC 类型占用字节Intouch 里对应地址写法示例
Bool1 bitDiscreteDB100.DBX8.0
Byte / USInt1IntegerDB100.DBB9
Int / Word2IntegerDB100.DBW10
DInt / DWord4Integer(长整型)DB100.DBD12
Real4RealDB100.DBD16
String依长度Message按驱动文档写

血泪经验是:给上位机单独建一个 DB,比如统一用 DB100,从头到尾只用非优化块,按 4 字节对齐排布。这样偏移量好看、好算、好维护,后面批量生成标记名也方便。别把上位机的点分散在十几个工艺 DB 里,改一次工艺就要全表复核。

2.4 变量表与地址地图:先定表,再画图

到这一步不要急着打开 Intouch。我一般的做法是先出一张地址地图,用表格把位号、地址、类型、读写属性、量程、单位全部确定下来,多方确认后再动上位机。

位号地址类型读写说明
TIC101_PVDB100.DBD0Real只读温度实测
TIC101_SPDB100.DBD4Real读写温度设定
P101_RUNDB100.DBX8.0Bool读写泵运行反馈
P101_FLTDB100.DBX8.1Bool只读泵故障
FQ201_TOTALDB100.DBD12DInt只读累计流量

这张表的直接价值是:写标记名的时候不用来回切换窗口找地址,也不会出现两个位号指到同一个偏移的低级错误。间接价值更大——后面要做画面、做报警、做历史趋势,都从这张表派生。只读的点一定要标出来,配置标记名时就可以不勾“允许写”,减少不必要的写请求,对通讯负载有帮助。

3. SMC 里的三段配置:从 Port 到 Device Group 再到 Activate

博图改完了,转到上位机。Intouch 2020R2 SP1 这一代的西门子驱动不再在工程内部配置,而是放在 System Platform Management Console(SMC)里统一管理。第一次接触会觉得这个工具层级很深,其实只要认准一条路径走到底。

3.1 驱动装没装对,先看 Port 节点在不在

安装 Intouch 2020R2 SP1 时,安装向导里有一页是设备集成组件(Device Integration),Siemens SIDIRECT 必须在勾选列表里。如果当时没勾,SMC 里根本不会出现西门子节点,后面所有步骤都无从谈起——这是最容易被临时取消安装搞坏的地方。

确认方式:开始菜单里找到 AVEVA 程序组,打开 System Platform Management Console,在左侧依次展开:

Operations Integration Server Manager └ Default Group └ Local └ Operations Integration Supervisory Servers └ Siemens - SIDIRECT └ Configuration └ Port

如果Local下面没有Siemens - SIDIRECT这一项,回去补装驱动组件,别在这个界面上反复折腾。装完驱动建议重启一次机器,驱动是以后台服务形式注册的,不重启有时节点出不来。

3.2 Add Legacy Connection:IP、机架号、槽号

在Port上右键,选择 Add Legacy Connection。弹出的对话框里三个字段最关键:PLC 的 IP 地址、机架号、槽号。连接名可以随便取,比如PLC1,但它只是这一层的标识,不参与 Intouch 的地址引用,别和后面 Device Group 的名字搞混。

机架号和槽号不要凭空猜测。回博图,在设备组态里选中 CPU 那一行,能直接看到机架和槽位编号。S7-1500 单 CPU 一般是机架 0、槽 1;如果是 S7-300 那种带电源和接口模块的,常见是机架 0、槽 2。填错的表现是连接一直处于重连状态,日志里反复出现连接超时,看不出“参数错了”这种明确提示。

几个参数的含义值得说清楚:

字段填什么填错的后果
IP AddressPLC 的实际 IP连接超时、反复重连
Rack0(S7-1500 常规)无法建立 S7 连接
Slot1(单 CPU)同上,报连接被拒绝
Port 号默认 102改过端口要同步改这里

3.3 Device Group:Topic 名就是 Intouch 的 Topic

连接建好后,在它下面找到 Device Group,右键空白处选择 Add,在 Name 里填一个组名,比如PLC。这个组名有一个硬性约束——它必须和后面 Intouch 访问名里的 Topic Name 完全一致,大小写敏感,不能有中文和空格。所以命名时就按“上位机侧要引用的标识”来考虑,别随手打成组1。

然后点右上角保存图标。这一步极其重要,很多人配置完发现 Activate 之后配置没了,就是因为没保存。保存之后,在OI.SIDIR.1上右键,选择 Activate,状态指示变成运行中,SMC 侧就算通了。

这里还有个隐性依赖:驱动本身是 Windows 服务,如果服务没设成自动启动,机器重启后 SMC 界面看着正常,实际通讯已经断了。我一般会在服务管理器里把与 DAServer 相关的服务改成自动,并确认当前是运行状态。另外现场如果有防火墙策略,S7 通讯用的 102 端口要放行,本机测试时可以先临时关掉防火墙验证一次,确认是端口问题再回头加规则,比对着现象猜快得多。

4. 上位机三件套:通讯程序、访问名、标记名怎么串起来

SMC 通了只是把路修好,还没通车。Intouch 侧要做三件事:建工程、建访问名、建标记名,顺序不能乱,因为后一步要引用前一步的名字。

4.1 新建 Intouch 应用:模板别选错

打开 Intouch HMI Application Manager,在空白处右键新建,模板选“独立型带符号库”。这个模板自带基础符号库,做常规工艺画面够用,也不用额外挂接系统平台。工程名可以叫通讯之类的业务名,但存储路径要注意——别放在桌面或者带中文的深层目录里,某些组件对路径字符敏感,出问题时很难定位。

建好之后双击打开,进入 WindowMaker。先新建一个窗口,命名成main之类,作为最小验证画面。此时不要急着画工艺图,先放两个控件:一个数值显示,一个输入框。目标只有一个——验证读写是否正常。

4.2 访问名:Application / Topic / Protocol 三个字段对准

在 WindowMaker 里打开访问名(Access Name)配置,新建一条。四个字段是核心:

字段填什么说明
Node Name留空或本机计算机名本机驱动时留空即可
Application NameDASIDIRECT西门子 SIDIRECT 驱动的应用名
Topic NamePLC必须与 SMC 里 Device Group 名一致
ProtocolSuiteLink优先选它,DDE 已属淘汰路线

Application Name 这一项容易填错。有人把 SMC 里的连接名PLC1填到这里,结果怎么都不通。这里填的是驱动应用名,不是连接实例名。Protocol 选 DDE 在老系统里能凑合跑,但刷新慢、丢包多,点位一多就明显拖后腿,能选 SuiteLink 就选。

访问名不要用中文,也不要带空格。改完保存,重启一下 WindowMaker 让配置生效。

4.3 标记名:地址写法和数据类型必须对齐

新建标记名,类型选对,访问名选上面建的那条,Item Name 填 PLC 侧的绝对地址。地址写法按前面那张类型表来,几个典型例子:

DB100.DBD0 Real 温度实测 DB100.DBW10 Int 整型参数 DB100.DBX8.0 Bool 泵运行 M0.0 Bool 位存储器 I0.1 Bool 输入点 QW2 Int 输出字

两个高频翻车点。第一,把 Real 建成 Integer 类型,运行后看到的是一个巨大的整数,看着像数据溢出,其实是解析方式错了,改类型就行。第二,Bool 写成DB100.DBW8.0,多打一个 W,地址非法,读回来一直是 0。写地址的时候慢一点,比事后查半天划算。

只读的点把“允许写”取消掉。这不只是规范问题,写入请求在 S7 的 PUT/GET 里是独立事务,无谓的写会挤占通讯带宽,点位多的时候能明显感觉到刷新变慢。

4.4 动画链接:先验证再美化

双击画面上的数值控件,打开动画,选“值显示”,表达式填标记名。再给输入框加一个“用户输入”,关联到设定值那个标记。运行起来,先在 PLC 侧用监视表改一个数,看画面上是否跟着变;再在画面上改设定值,回监视表看是否写进去了。

这一来一回跑通,整条链路才算真正闭环。开发态(WindowMaker 编辑界面)里标记名显示的是静态值,不会实时刷新,别在这里判断通讯好坏,一定要进运行态(WindowViewer)看。等最小验证窗口通了,再去批量做工艺画面和报警,效率高很多。

5. 避坑清单:五个让我返工的现场问题

下面这几条都是实际调试中遇到过、并且每一条都让人多花过半天以上的。按“现象 → 原因 → 解决”整理,遇到类似症状可以直接对照。

5.1 Activate 之后状态一直不运行

现象:SMC 里点 Activate,OI.SIDIR.1状态一直是停止或红色,Intouch 里所有标记名读回来是问号。

原因:Port 下只建了 Legacy Connection,没建 Device Group,或者建完忘了点保存。驱动激活时读不到完整的配置树,起不来。

解决:按“Connection → Device Group → 保存 → Activate”的顺序重新走一遍。养成习惯:每次改完配置先点保存图标,再激活。另外确认一下服务里驱动进程确实在跑,没跑就是注册问题,重装驱动组件。

5.2 读到的是乱码一样的大整数

现象:Real 类型的点位,画面上显示成一个上亿的整数,改成 Integer 也不对。

原因:DB 块还勾着“优化的块访问”,变量没有固定偏移,地址指到了别的数据中间;或者 Intouch 标记名类型选错,把 Real 建成了 Integer。

解决:先回博图取消优化访问、编译、下载;再核对标记名类型与 PLC 类型一一对应。两个都要查,只改一个可能还是错的。下载后偏移量可能整体变化,把标记名地址全表复核一遍,别只改出问题的那一个。

5.3 能读不能写,或者写完立刻被覆盖

现象:监视数值正常,画面上改设定值,PLC 侧看不到变化,或者一闪就回到原值。

原因:CPU 的“允许来自远程对象的 PUT/GET 通信访问”没勾;或者 DB 属性里“可从 HMI 访问”被关掉了;还有一种情况是 PLC 程序里有逻辑每个扫描周期把设定值重新赋值。

解决:前两条改配置重新下载。第三条要跟做程序的人对一下,确认这个地址到底是谁在写。这类问题在联调阶段最常见,两边都以为对方在改。

5.4 机架号槽号照默认填,始终连不上

现象:IP 能 ping 通,SMC 里连接状态反复重连,日志只有超时。

原因:机架号或槽号与博图里的实际组态不一致。不同 CPU 系列默认值不同,照搬网上教程的 0/2 就可能踩空。

解决:回博图设备组态,选中 CPU 查看机架与槽位编号,按实际值填。填完保存再激活一次,光改不激活不生效。

5.5 本机测试正常,换台机器或重启后断连

现象:调试时一切正常,交付后客户重启一次电脑,通讯全断,SMC 打开看配置还在。

原因:驱动服务被设成了手动启动,重启后没起来;或者新机器的防火墙拦了 102 端口。

解决:把相关服务改成自动启动并立即启动;在新机器上先临时关防火墙验证,确认后按端口加放行规则。交付前做一次冷启动测试,这个动作我一直坚持做,能省掉大量售后电话。

6. 进阶:用 CSV 批量生成标记名,再用心跳字判断通讯死活

点位上了五十个以后,逐个手敲标记名是不现实的,错一个地址就要查半天。我的做法是拿 Intouch 自带的 DB Dump 先导出一个空库,拿到官方表头,再用脚本按地址地图批量生成,最后走导入。表头的列名千万不要自己猜,不同版本列顺序和名称会有差异,照导出的样例来最稳。

import csv DUMP = "tag_dump.csv" # 从 Intouch DB Dump 导出的空库,只取表头 with open(DUMP, newline="", encoding="gbk") as f: header = next(csv.reader(f)) points = [ # 位号, Item Name, Intouch 类型 ("TIC101_PV", "DB100.DBD0", "Real"), ("TIC101_SP", "DB100.DBD4", "Real"), ("P101_RUN", "DB100.DBX8.0", "Discrete"), ("FQ201_TOTAL", "DB100.DBD12", "Integer"), ] rows = [] for tag, item, ttype in points: row = dict.fromkeys(header, "") # 其余列留空,避免导入报错 row["Tagname"] = tag row["Type"] = ttype row["AccessName"] = "S7_1500" # 与 Intouch 访问名严格一致 row["ItemName"] = item row["Comment"] = "auto" rows.append(row) with open("tag_import.csv", "w", newline="", encoding="gbk") as f: w = csv.DictWriter(f, fieldnames=header) w.writeheader() w.writerows(rows)

编码用gbk是因为 DB Dump 默认跟随本地代码页,用 UTF-8 导进去中文注释会变乱码,这一点很容易被忽略。dict.fromkeys(header, "")保证所有列都填了空值,缺列会直接导入失败。

通讯是否真的在线,不能只看画面上数字有没有变化——工艺稳定时数值本来就不变。稳妥的办法是在 PLC 里做一个每秒自增的字,比如DB100.DBD60,上位机侧挂一个条件脚本比对两次采样:

IF hb_now <> hb_last THEN comm_ok = 1; hb_last = hb_now; ELSE comm_ok = 0; ENDIF;

脚本里hb_now是那个自增字,hb_last是内部记忆标记,comm_ok挂到画面角落的一个小指示灯上。三行逻辑,比任何日志都直观,客户自己就能看出通讯断没断。

从那以后我每次交付前都强制走一遍“冷启动 + 心跳验证”:断电重启上位机,等服务起来,看心跳灯是否在十秒内变绿。这一步做与不做,后面的维护体验完全不一样。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 7:04:31

休闲零食渠道竞争的本质:从流量争夺到用户触点深度运营

简介&#xff1a;本资源为国泰君安证券发布的《休闲零食行业深度研究&#xff1a;休闲零食空间大&#xff0c;百舸千帆看谁牛》专业研报&#xff0c;面向食品行业从业者、消费领域投资者、券商/基金研究员及商学院师生&#xff0c;聚焦解决“行业增长逻辑、竞争格局演化与核心标…

作者头像 李华
网站建设 2026/11/6 7:02:37

MySQL商业辅助决策系统架构设计与优化实践

1. 项目背景与核心价值商业辅助决策系统是现代企业数字化转型中的关键基础设施。记得三年前我参与某零售企业的数据中台建设时&#xff0c;他们最头疼的问题就是各个业务系统的数据孤岛现象——销售数据在ERP里&#xff0c;客户行为数据在CRM中&#xff0c;供应链数据又躺在另一…

作者头像 李华
网站建设 2026/11/6 7:02:37

WebSocket+asyncio实现高并发直播弹幕采集系统

1. 直播弹幕数据采集的价值与挑战在直播生态中&#xff0c;弹幕数据就像直播间的脉搏&#xff0c;实时反映着观众的情绪波动和互动热度。与传统评论数据相比&#xff0c;弹幕具有两个独特优势&#xff1a;一是毫秒级的实时性&#xff0c;主播的每个动作都能立即引发弹幕反应&am…

作者头像 李华
网站建设 2026/11/6 7:00:59

NoSQL数据库核心解析与实战选型指南

1. 非关系型数据库概述&#xff1a;打破传统的数据存储范式在互联网应用爆炸式增长的今天&#xff0c;传统关系型数据库(RDBMS)开始显露出诸多局限性。作为一名从业十余年的系统架构师&#xff0c;我见证了NoSQL数据库从边缘技术到主流选择的演进过程。非关系型数据库(NoSQL)并…

作者头像 李华
网站建设 2026/11/6 7:00:38

Agent大协议家族:重塑分布式服务通信新范式

1. 协议江湖的新玩家&#xff1a;Agent大协议家族登场在分布式系统架构演进的道路上&#xff0c;服务治理始终是开发者们最头疼的难题之一。去年我在为某跨国电商平台设计微服务架构时&#xff0c;就曾深陷服务发现和通信协议的泥潭。直到接触了这组被称为"Agent大协议&qu…

作者头像 李华
网站建设 2026/11/6 7:00:38

ABAP开发从SAPGui迁移Eclipse的版本管理解决方案

1. 从SAPGui到Eclipse&#xff1a;ABAP开发者的版本管理困境作为一名有十年SAP开发经验的ABAPer&#xff0c;我深刻理解从SAPGui迁移到Eclipse ADT时的阵痛。SAPGui中的临时版本功能就像老朋友的约定——你在开发系统里对任何对象&#xff08;类、函数组、报表&#xff09;做修…

作者头像 李华