ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Intouch对接S7-1500:SIDIRECT三层通讯配置与排查

Intouch对接S7-1500:SIDIRECT三层通讯配置与排查

简介:《Intouch2020R2SP1与西门子1500PLC通讯配置手册》面向具备基本自动化设备安装调试能力的技术人员与工控工程师,针对上位机 Intouch 2020R2 SP1 与西门子 S7-1500 PLC 建立稳定通讯这一实际问题,给出可落地的配置指引。资源包为单个 PDF 文档,大小约 1.42MB,共 1 个文件,篇幅紧凑、便于随查随用。文档按实施顺序组织,依次覆盖博图软件侧的 CPU 型号选择与 IP 地址配置、变量表与 DB 块权限设置及优化块访问的处理,SMC(System Platform Management Console)中 Siemens SIDIRECT 驱动与 Port 的添加,Intouch 通讯程序的创建、访问名与标记名配置,直至建立动画链接,形成从底层通讯到画面联动的完整闭环。文中对 PUT/GET 通信访问、无保护权限等关键环节配合截图说明,并单列安全信息与注意事项,提醒调试前断电、核查工作区,降低误操作导致的调试失败与设备风险。目前已有 288 人学习,适合现场调试与项目交付时对照查阅。

1. 从 HMI 到 S7-1500:三层配置一条链路

现场最尴尬的不是程序报错,而是 HMI 画面数值一动不动、操作工在等、产线在停,而你打开 SMC 一看连接状态还是绿的。Intouch 2020R2 SP1 对接 S7-1500 这条链路本身不复杂,但它横跨三层:博途里的 CPU 属性与 DB 块、SMC 控制台里的 SIDIRECT 驱动与连接实例、Intouch 里的访问名与标记名。任何一层少一个勾选,链路就是断的,而且报错信息往往指不到真正出问题的地方。这份 Intouch 与 S7-1500 通讯配置手册就是按这三层顺序排下来的:博途设置、SMC 配置、通讯程序创建、访问名、标记名、动画链接。它适合手上有 1500、想在一两天内把上位画面跑起来的人,也适合已经配通、但说不清每个参数为什么这么填的人。

2. 博途侧的三个开关:优化块访问、PUT/GET、机架槽号

先把 PLC 这边弄对,因为后面 SMC 和 Intouch 的所有参数都是从这里推导出来的。博途里跟这条件链路直接相关的只有三处,但每一处漏掉都会让故障表现得很“玄学”——连接看着是通的,数据就是不对。

2.1 DB 块为什么要取消“优化的块访问”

S7-1500 新建 DB 块时,默认勾选“优化的块访问”。这种块只保留符号名,不保证变量在内存里有固定偏移,编译器可以按访问频次重排。对 S7-1500 内部程序来说这是好事,性能更好、改结构不用管地址。但 SIDIRECT 这类 OI 驱动走的是绝对地址:它拿到的是“DB 号 + 数据类型 + 字节偏移”这样一个定位串,然后按这个偏移去内存里取数。

优化块没有稳定偏移,驱动按老偏移去读,读到的可能是别的变量,也可能是填充字节。表现就是:连接正常、质量戳正常,数值却是乱的或者一直为 0。这是我在现场遇到最多的一类“通讯配通了但数据不对”的问题。

操作路径是:项目树里右键目标 DB 块 → 属性 → 属性页里取消勾选“优化的块访问” → 确定 → 重新编译并下载。下载完成后 DB 会按标准访问重建,此时变量才拥有从 0 开始的固定字节偏移。

提示:取消优化访问之后,DB 块的最大尺寸和访问性能都会受一点影响,对一般 HMI 读写量来说可以忽略。真正要留神的是后续改结构——在标准 DB 里插一个变量,后面所有变量的偏移都会往后挪,Intouch 里已经写好的地址会集体失效。

所以我在做项目时有个习惯:DB 块的结构先定稿再下载,尤其是通讯用的那块 DB,单独建一个,只放需要给上位机读写的变量,不和生产逻辑混在一起。这样以后改工艺逻辑,通讯地址不会跟着漂。

取消优化之后还要注意数据类型对齐。BOOL 在标准 DB 里是打包存放的,8 个 BOOL 占一个字节,所以写地址时要写成字节偏移加位号的形式;INT 占 2 字节,DINT 和 REAL 占 4 字节,并且要 4 字节对齐。如果前一个变量是 INT 占了 0~1,你直接放一个 REAL,编译器会在 2~3 补两个空字节,REAL 实际从 4 开始。偏移算错,读出来的就是一个完全不相干的浮点数。

2.2 CPU 属性里的“允许来自远程对象的 PUT/GET 通信访问”

这个勾选项藏在 CPU 属性的“保护与安全 → 连接机制”里。它的含义是:允许外部设备通过 S7 协议的 PUT/GET 服务访问本 CPU 的数据区。SIDIRECT 读写 DB 走的就是这条路,不勾选,连接阶段就会被 CPU 拒绝。

配套的还有“访问级别”。默认可能是“完全访问(无保护)”,也可能被前一个工程师改成了读写保护。如果设了保护又没给密码,上位机同样连不上。调试阶段我一般先确认这里是“完全访问(无保护)”,等整套系统调完,再按现场的安全要求决定是否需要收紧。

注意:这两个选项改完必须重新编译硬件组态并下载,只改不下载等于没改。我见过有人改完属性直接去 SMC 里点 Activate,然后对着红图标查了两小时。

判断有没有生效,不用猜。打开博途的在线监控,把 DB 里某个变量强制作个变化,如果 Intouch 那边跟着动,说明读写链路是通的;如果博途里能看到值变、Intouch 里不动,问题就在上位机侧,不用再回头折腾 PLC。

2.3 机架号与槽号从哪看

SMC 里加连接时要填两个数字:机架号(Rack)和槽号(Slot)。这两个值不是背出来的,是看出来的。在博途的设备视图里,CPU 摆在哪个位置,那就是它的机架和槽。

常见对应关系大致是这样:S7-1500 单机架系统,CPU 一般位于 0 号机架 1 号槽;S7-300 常见的是 0 号机架 2 号槽;分布式 IO 上的 CPU 模块多为 0 号机架 1 号槽。不要照抄别人项目里的数字,尤其是从 300 迁移到 1500 的项目,槽号经常忘记改。

控制器类型机架号槽号说明
S7-1500 单机架01设备视图里 CPU 所在槽位
S7-300 主机架02CPU 通常在第 2 槽
分布式站上的 CPU01以设备概览的槽号列为准

填错的表现很有辨识度:SMC 里那个连接实例一直是未连接状态,点 Activate 之后日志里出现连接建立失败的记录,而 PLC 那边完全没反应。此时先别怀疑网络,先回去核这两个数字。

博途这一层做完,PLC 已经具备被上位机读写的能力了。接下来是把 SMC 这边的驱动和连接实例搭起来。

3. SMC 控制台配置:从 Add Legacy Connection 到 Activate

SMC 是这条链路的中间层,很多人的误区是把它当成“装完就完事”的软件。实际上 Intouch 并不直接跟 PLC 说话,它通过访问名指向 SIDIRECT 驱动,驱动再去连 SMC 里配好的那个连接实例。SMC 没配好或者没激活,Intouch 那边再怎么配都是空转。

3.1 驱动安装与 Port 节点的层级关系

顺序不能反:先装 SIDIRECT 驱动,再打开 SMC。驱动没装,SMC 的树里根本不会出现 SIDIRECT 这个分支,你会在控制台里找不到入口,然后怀疑自己装错了版本。

装好之后从开始菜单打开 System Platform Management Console,在左侧逐级展开:

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

这几个层级的关系要理清,不然参数会填串。Port 是驱动对外的一个通讯端口实例,可以理解成“一张网卡上的一组连接”;Port 下面挂的是 Legacy Connection,一个连接对应一台 PLC;连接下面挂的是 Device Group,一个组对应上位机的一个主题(Topic)。

Intouch 的访问名里要填的那个 Topic,就是这里 Device Group 的名字。两边必须一字不差,包括大小写,这是后面排查章节里反复会提到的一点。

3.2 Add Legacy Connection 的参数含义

在 Port 节点上单击右键,选 Add Legacy Connection。弹出的对话框里需要填四项关键内容:

参数填什么说明
Name自定义,如 PLC1只影响 SMC 内部显示,不参与 Intouch 寻址
IP AddressPLC 的实际 IP必须与博途里 CPU 的 PROFINET 接口地址一致
Rack机架号见 2.3 节,1500 通常为 0
Slot槽号见 2.3 节,1500 通常为 1

Name 可以随意命名,默认名字也能用,但项目里 PLC 多于一台时建议按用途起名,比如 Line1_PLC、Packing_PLC,后期排查时一眼能对上。IP 地址建议在博途里复制粘贴,手工敲错一位数字的现象并不少见,而且这种错误在网络层看不出来,ping 得通但连不上。

填完之后先别急着保存,回到树里确认这个连接实例确实挂在 Port 下面,而不是被误加到了别的节点上。SMC 的右键菜单在不同节点上内容不一样,点错层级加出来的东西位置是错的,虽然界面上看着像那么回事。

3.3 Device Group 与激活状态怎么确认

连接建好后,在它下面右键空白处选 Add,新建一个 Device Group,Name 里填组名,比如 PLC。这个组名就是 Intouch 访问名里的 Topic,建议用短、纯英文、无空格的名字。填完点右上角的保存图标。

保存只是把配置写进项目文件,还没生效。真正让它跑起来的是下一步:右键那个 OI.SIDIR.1 节点,选 Activate。激活成功后节点图标会变,日志窗口里能看到连接建立的过程记录。

提示:SMC 依赖后台服务运行。机器重启之后,如果服务没设成自动启动,之前激活的实例会回到未激活状态,表现就是“昨天还好好的,今天一开机全断了”。我一般会把相关服务设成自动,并在开机后先看一眼 SMC 的状态再开 Intouch。

另一个容易忽略的点是:改了连接参数(比如换了 PLC 的 IP)之后,必须先 Deactivate 再重新 Activate,直接改完保存是不生效的。这个操作顺序在手册里通常只有一句话,但漏掉它的人非常多。

到这一步,PLC 侧和中间层都通了。剩下的是 Intouch 工程本身——访问名、标记名、画面链接,这三样是给操作工看的最后一公里。

4. Intouch 侧三件套:访问名、标记名、动画链接

Intouch 这边的配置逻辑很清晰:访问名告诉系统“去哪台设备、通过哪个驱动、读哪个主题”,标记名告诉系统“读这个主题里的哪个地址、按什么数据类型解释”,动画链接告诉系统“这个值显示在画面哪个位置”。三样缺一,画面上就是空白或者问号。

4.1 新建工程与模板选择

从开始菜单打开 Intouch Application Manager,在空白处右键新建,模板选“独立型带符号库”那一项。这个模板自带符号库,做画面时能直接拖阀门、泵、管道这些图元,省掉大量画图时间。如果选了最精简的模板,后面要手动挂符号库,反而麻烦。

工程名和存储路径这一栏要克制。全英文、无空格、放在本地磁盘的短路径下,比如D:\HMI\Comm。中文工程名和带空格的路径在某些环节会出问题,尤其是工程需要迁移或者被备份工具处理的时候。这是血泪经验,不是理论洁癖——我见过工程在开发机上好好的,拷到现场机器上打不开,最后查出来是路径里有个中文目录。

创建完成后双击工程进入 WindowMaker,在窗口空白处右键新建一个窗口,给窗口起个名字,比如 Main。窗口的尺寸按实际屏幕分辨率来设,不要随手拉一个默认大小,后期排版会很难受。

4.2 访问名(Access Name)填什么

在 WindowMaker 的特别菜单里打开访问名配置,新建一条。这是整条链路里参数最集中、也最容易填错的地方:

字段填什么说明
名称PLC1Intouch 内部引用名,标记名里会用到
节点名留空本机运行时留空即可
应用程序名SIDIRECT驱动名,不是 SMC 里的连接名
主题名PLC必须等于 SMC 里 Device Group 的 Name
协议SuiteLink 优先不通时再退到 DDE 试

这里最容易错的是“应用程序名”和“主题名”这两个。很多人把应用程序名填成了 SMC 里那个连接实例的名字,结果 Intouch 找不到驱动;也有人把主题名填成了连接名,而不是 Device Group 名。判断依据很简单:应用程序名对应的是驱动本身,主题名对应的是驱动下面挂的那个组。

协议选择上,优先用 SuiteLink。它比 DDE 稳定,支持更长的字符串和更好的错误反馈。只有在老系统或者特殊环境下才退到 DDE。如果 SuiteLink 连不上而 DDE 能连上,说明驱动注册或者服务状态有问题,应该去修那个根因,而不是长期用 DDE 凑合。

4.3 标记名地址语法与数据类型对齐

标记名在标记名字典里建。关键字段是名称、类型、访问名、地址。地址的写法跟 PLC 里的绝对地址一一对应,常见形式如下:

PLC 侧变量Intouch 类型地址写法示例
DB1 中偏移 0 的 BOOLDiscreteDB1,BIT,0.0
DB1 中偏移 2 的 INTIntegerDB1,INT,2
DB1 中偏移 4 的 DINTIntegerDB1,DINT,4
DB1 中偏移 8 的 REALRealDB1,REAL,8
DB1 中的字符串Message按驱动帮助里的字符串语法填

偏移是字节偏移,不是第几个变量。这一点必须记牢。上面表格里 INT 在偏移 2、DINT 在偏移 4,就是因为前面的 BOOL 占了一个字节、INT 占了两个字节,并且 DINT 需要 4 字节对齐,中间补了空位。如果按“第几个变量”去数,地址一定对不上。

地址语法的具体格式以驱动自带的帮助文档为准,不同版本的 SIDIRECT 在字符串和数组的写法上略有差异。我一般先在标记名字典里建一个测试标记,连上之后用博途的监控表改值,确认读到的位置是对的,再批量往下建。

4.4 动画链接与在线验证

标记名建好之后回到窗口,放一个文本对象,右键选动画 → 值显示,关联刚才的标记名,设置好小数位和范围。再放一个按钮,动画 → 动作,配一个写入动作,用来验证下行通道。

验证要双向做。先在博途的监控表里改 PLC 里的值,看 Intouch 画面是否跟着变,这一步验的是上行读取;再在 Intouch 里点按钮写值,回博途监控表看变量是否变化,这一步验的是下行写入。两个方向都通,才算这条链路真正可用。只验一个方向就交付,很容易在上线后才发现写不进去。

5. 通讯不通时的排查顺序:五类高频翻车点

这条链路的故障有个共同特点:现象长得都差不多,画面不动、数值为 0、问号,但根因分散在三个层里。下面这五条是我在现场反复遇到的,按“现象 → 原因 → 解决”列出来,遇到问题可以对着走一遍。

5.1 五个具体踩坑记录

现象一:SMC 里连接图标正常,Intouch 画面全是问号。原因:访问名里的主题名和 SMC 里 Device Group 的名字不一致,或者大小写不同。Intouch 找不到对应主题,标记名就取不到值。 解决:把两边名字逐字符比对,统一成短英文名;改完之后在 Intouch 里重新打开一次运行环境,让访问名重新加载。

现象二:SMC 里连接一直是未连接,Activate 也不成功。原因:三种可能——机架号槽号填错、CPU 属性里没勾“允许来自远程对象的 PUT/GET 通信访问”、或者本机和 PLC 之间的 102 端口被防火墙拦了。 解决:先 ping 通确认网络,再用端口检测工具测 102 端口是否可达,然后回博途核对机架槽号和那个勾选项。三项按顺序排掉,不要跳着查。

现象三:连接是通的,读上来的数值明显不对,比如温度显示成几万。原因:DB 块还是优化访问,或者地址偏移按“第几个变量”算的而不是按字节算的。也可能是数据类型没对上,PLC 里是 DINT,Intouch 里建成了 Integer 之外的错误类型。 解决:取消 DB 的优化访问并重新下载,然后对着 DB 的偏移列重新核一遍地址。建议把通讯用的 DB 单独建,变量按类型分组排列,减少对齐带来的空位。

现象四:开发机上一切正常,拷到现场机器上打不开工程或者连不上。原因:工程路径含中文或空格;或者现场机器没装 SIDIRECT 驱动,SMC 里根本没有对应分支;也可能现场机器的 hosts 文件或网卡配置跟开发机不同。 解决:工程统一放在全英文短路径下;到现场先确认驱动已装、SMC 里有 SIDIRECT 分支、服务在运行,再打开工程。

现象五:重启电脑后通讯全断,重新 Activate 又好了。原因:SMC 相关服务没有设置成自动启动,或者激活状态没有持久化。 解决:把服务启动类型改成自动,并在操作规程里加一条“开机后先看 SMC 状态”。这条看起来是运维问题,但它造成的停机时间往往比配置错误还长。

5.2 用日志和状态位快速定位

排查时最忌讳的是“三层一起改”。改一个参数试一次,改一个试一次,最后通了也不知道是哪一下起了作用。正确的做法是先分段。

第一段看网络:ping PLC 的 IP,通不通立刻能判断。第二段看端口:102 端口是否可达,不通就是防火墙或者 PLC 侧服务的问题。第三段看 SMC:连接实例是否激活、日志里有没有连接失败的记录。第四段才看 Intouch:访问名和标记名是否匹配。

SMC 的操作日志和 Windows 事件查看器里都能看到驱动的运行记录,连接建立、断开、超时这些事件都会留痕。Intouch 运行时窗口底部的消息也会提示标记名读取失败的原因。把这些日志按时间顺序对一遍,基本能定位到具体是哪一层出的问题,比盲改参数快得多。

6. 从单点验证到批量导入:把配置变成可复用资产

单个标记名调通只是开始。一个中等规模的画面动辄几百个标记名,全靠手工在字典里点,既慢又容易出错。我一般会先做一个“样板标记”,把访问名、类型、地址格式全部验证通过,再把它导出成 CSV,用表格批量改地址和名称,最后导回去。

标记名字典支持导出和导入,导出的 CSV 结构大致是名称、类型、访问名、地址、注释这几列。批量改的时候有两条规则要守:一是地址偏移必须按字节递增,并且注意 4 字节类型的对齐;二是命名要有统一前缀,比如DB1_开头,这样后面按前缀筛选、批量改动画链接都方便。

# 批量导入用的标记名模板,列顺序以当前版本导出结果为准 # TagName,Type,AccessName,ItemName,Comment DB1_Start,Discrete,PLC1,"DB1,BIT,0.1",一号线启动 DB1_Stop,Discrete,PLC1,"DB1,BIT,0.2",一号线停止 DB1_SpeedSP,Real,PLC1,"DB1,REAL,4",速度给定 DB1_Count,Integer,PLC1,"DB1,DINT,8",产量计数

上面这份模板里,注释列一定不要省。三个月后回来改画面,看到DB1_Count你能想起它是产量计数,看到Tag001就只能回去翻 PLC 程序了。导入之后别急着全量上线,先抽三五个点跟博途监控表对一遍,确认偏移没整体错位,再往下做动画。

最后是一条我自己踩过坑之后固定下来的习惯:每次交付前,不管画面看着多正常,都要做一遍“断线重连测试”——把网线拔掉十秒再插回去,看画面能否自动恢复、数值是否回到正确状态、有没有卡在旧值上不动。这个动作能暴露出很多在正常状态下看不出来的配置问题,比如重连后主题没重新绑定、写值动作堆积。从那以后我每次上电调试都强制走一遍这个流程,宁可多花十分钟,也不想在半夜接到产线电话。希望帮到你。

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

返回列表