ARTICLE DETAIL

资讯详情

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

Intouch对接S7-1500 PLC:SIDIRECT通讯配置与避坑指南

Intouch对接S7-1500 PLC:SIDIRECT通讯配置与避坑指南

简介:面向自动化工程师与Intouch、西门子PLC通讯调试人员的实操手册,聚焦Intouch 2020R2 SP1与S1500 PLC建立稳定通讯的配置流程与安全注意事项。包内仅1个PDF文件,压缩包约1.42MB,篇幅精炼,按博图软件设置、SMC配置、创建通讯程序、配置访问名与标记名、建立动画链接等章节组织,目录清晰便于按步骤查阅。文档不仅给出关键参数与操作路径,还穿插警告、注意等安全提示,帮助读者理解PUT/GET通信、优化块访问等设置要点,降低联调中的常见错误。已有288人学习,适合具备基础安装调试能力、需要完成实际项目通讯配置或查漏补缺的技术人员参考。

1. 一套跑通的 Intouch 2020R2 SP1 与西门子 S7-1500 PLC 通讯配置

现场最常见的画面是:画面做得挺漂亮,数值全是 0 或者一串问号,工程师蹲在机柜前 ping 得通、端口也通,就是不读数。Intouch 2020R2 SP1 与西门子 S7-1500 PLC 的通讯配置,卡点基本不在“网通不通”,而是博图里三个开关没打开、DB 块地址没对齐、SMC 里通道没激活。这份资源是一份二十多页的实操手册,按博图设置、SMC 配置、建 Intouch 工程、配访问名、配标记名、做动画链接六段走完,每步都标了参数位置和截图,也写了作者自己踩过的点。

它适合已经能装软件、但第一次用 SIDIRECT 驱动对接 1500 的自动化工程师和系统集成人员,也适合当现场调试的对照清单——尤其是那种“别人配过一遍、你只负责复现”的活,对着走比翻帮助文档快得多。我从这份手册里挑出真正会卡住人的环节,补上参数含义和失败判据。

2. 博图侧三个开关:PUT/GET、保护级别与取消优化块访问

上位机软件还没打开之前,通讯能不能成其实已经在博图里定死了。这三个设置在 CPU 属性、DB 块属性里各藏一处,漏掉任何一个,后面 SMC 和 Intouch 里怎么做都是白折腾。

2.1 为什么选 SIDIRECT:走的是 S7 协议而不是 OPC UA

SIDIRECT 驱动本质是一个按 S7 协议直接寻址的 OI Server,它读写的是 PLC 里 M、I、Q、DB 这些真实地址,不经过符号表和中间服务器。选它的理由很实际:Intouch 侧不需要额外部署 OPC UA 服务端,标记名的 Item Name 直接写DB号,类型偏移,工程师看得懂也改得动;缺点也明显——它依赖非优化块和绝对地址,一旦 PLC 侧有人把 DB 块改回“优化的块访问”,通讯立刻失效,而且报错信息不会告诉你是这个原因。

如果项目要求跨网段、跨防火墙、或者 PLC 侧要统一走 OPC UA,那就不该用 SIDIRECT,这是选型边界。本文场景是单机架、单网段的产线 HMI,SIDIRECT 是成本最低的一条路。

2.2 保护与安全:允许 PUT/GET 是总闸

新建项目、选好 CPU 型号之后,第一件事是把 PROFINET 接口的 IP 地址配好,并保证和上位机在同一网段、不冲突。第二件事在 CPU 属性的“保护与安全”→“连接机制”里,勾上“允许来自远程对象的 PUT/GET 通信访问”。这一项默认是关的,S7-1500 出于安全考虑把它封了,不勾就等于把 S7 协议的读写通道焊死。

访问级别那一项,手册里写的是“无保护”,现场我一般会按项目安全要求来:调试阶段可以放宽,交付前至少设成“完全访问(无密码)”之外的受控级别,但要确认 HMI 读写不受影响。这一条建议在调试记录里留一笔,别等验收时被安全审计问住。

博图侧设置项位置推荐值漏掉的后果
CPU IP 地址硬件组态 → PROFINET 接口与上位机同网段网络不通,ping 失败
PUT/GET 通信访问CPU 属性 → 保护与安全 → 连接机制勾选连接建立但所有读值为 0 或报错
访问级别CPU 属性 → 保护与安全按项目要求,允许 HMI 读写读写被拒,日志提示权限不足
DB 块优化访问DB 属性 → 属性取消勾选Item Name 无绝对地址,读写全失败

2.3 DB 块取消“优化的块访问”与地址规划表

S7-1500 新建的 DB 块默认是优化访问,块内变量没有固定偏移,博图只给符号名不给绝对地址。SIDIRECT 不认识符号名,只认DB10.DBD4这种写法,所以必须进 DB 属性把“优化的块访问”取消掉。取消之后重新编译,DB 的“偏移量”列才会显示出来,那才是后面 Intouch 要抄的地址。

这里有个血泪经验:地址规划要在写 PLC 程序之前做,不要等程序写完了再回头看偏移。变量一多、类型一混(BOOL 和 REAL 交替),偏移会跳得很难看,某些 REAL 落在非 4 字节对齐的位置上,上位机读出来就是乱码。我一般会留一张规划表,PLC 侧和 HMI 侧共用同一份。

变量用途数据类型DB 地址写法偏移要求
电机运行状态BOOLDB10,X0.0位偏移,同字节内可连续排
频率设定REALDB10,REAL4起始偏移建议 4 的整数倍
累计产量DINTDB10,DINT8起始偏移建议 4 的整数倍
报警字WORDDB10,WORD12按字节对齐即可
温度INTDB10,INT14按字节对齐即可

表里 REAL 和 DINT 的偏移要求是硬约束。为了省事,我会把同类型的变量排在一起,先 REAL、再 DINT、再 WORD/INT、最后 BOOL,这样基本不会踩到对齐的坑。

2.4 下载、上电与网络连通性自检

博图侧改完,编译并下载到设备,重启 CPU 到运行态。然后在上位机做两件事:ping 通、确认 102 端口可达。S7 协议走的就是 102 端口,这一步能提前把“PLC 没通电”“网线插错交换机”“IP 冲突”这类低级问题排除掉,别等到 SMC 里配了半天才发现根本不是软件问题。

# 1. 确认上位机与 PLC 在同一网段且能通 ping -n 4 192.168.0.10 # 2. 确认 S7 协议端口(102)可达,Windows 下用 PowerShell 测试 Test-NetConnection -ComputerName 192.168.0.10 -Port 102

ping通只说明 IP 层没问题,Test-NetConnection返回TcpTestSucceeded : True才说明 S7 服务在监听。如果 ping 通但 102 不通,先查 PLC 是否处于运行态、是否被防火墙策略拦掉,别急着去改 SMC。手册里没写这一步,但现场十次“通讯配不通”里至少三次卡在这里,加上这两条命令能省半小时。

3. SMC 里的 SIDIRECT 通道:从 Port 到 Activate 的六步

SMC(System Platform Management Console)在这一套里扮演的是“驱动配置中心”的角色。Intouch 本身不直接跟 PLC 说话,中间隔着一层 OI Server,SMC 就是把这一层配起来的地方。配错了不会报红,只会安静地不通讯,这是它最坑的地方。

3.1 层级结构:Port 到底是什么

装好驱动后,从开始菜单打开 SMC,展开的路径是:Operations Integration Server Manager → Default Group → Local → Operations Integration Supervisory Servers → Siemens - SIDIRECT → Configuration → Port。这一长串不是随便排的,它对应的是“服务管理器 → 分组 → 本机节点 → supervisory 服务 → 具体驱动 → 驱动配置 → 端口”。Port 是驱动的入口对象,一个 Port 下面可以挂多个连接,每个连接对应一台 PLC。

理解这个层级的价值在于排错:通讯不上时,你顺着这棵树往上找,先确认服务在不在、再确认 Port 下有没有连接、最后确认连接有没有激活,比乱猜快得多。我见过有人在 Intouch 里改了十几遍访问名,实际上 SMC 里那个 Port 根本没建。

3.2 新建 Legacy Connection:IP、机架号、槽号

在 Port 上右键,选 Add Legacy Connection。弹出的对话框里可以给连接重命名,默认名也能用,但现场多台 PLC 时一定要改——后面 Intouch 的访问名要引用这个名字,叫New_Connection_1和叫Line1_PLC在三个月后的可维护性上完全是两回事。

关键参数是三个:PLC 的 IP 地址、机架号(Rack)、槽号(Slot)。IP 不用解释。机架号和槽号对应的是博图硬件组态里 CPU 所在的位置——单机架的 S7-1500 通常是机架 0、槽 1,但带扩展机架或者用 ET200SP 做分布式的时候就不是了,必须回博图设备视图里看 CPU 图标标的那两个数字。

参数取值来源常见值填错的典型表现
IP 地址博图 CPU 的 PROFINET 接口与上位机同网段连接超时,日志报无法建立连接
Rack(机架号)博图设备视图 CPU 所在机架0连接建立但读不到任何数据
Slot(槽号)博图设备视图 CPU 所在槽位1同上,或间歇性断连
连接名自定义按产线/设备命名不影响通讯,影响后期维护

机架号和槽号填错的表现很迷惑:SMC 里看着连接是好的,Intouch 里标记名也建出来了,就是值为 0。这时候不要怀疑地址写错,先回去核对这两个数字。

3.3 Device Group 与主题名:命名一次,后面少改十次

连接建好之后,在 Device Group 上右键空白处选 Add,在 Name 里输入组名,比如PLC。这个组名不是随便起的摆设——它会成为后面 Intouch 访问名里 Topic Name 的取值。手册里直接用默认的PLC,我建议按工艺段来命名,比如Filling、Packing,一旦现场扩到七八台 PLC,默认名会让人抓狂。

保存用右上角的保存图标,别用 Ctrl+S 之后就切窗口,SMC 的保存有时候会静默失败。保存成功后左侧树里会出现新建的项目节点,检查一眼名字对不对。

3.4 保存并激活:状态怎么确认

最后一步,右键OI.SIDIR.1,选 Activate。激活成功后节点图标会变色,日志窗口会打出启动信息。这一步漏了,前面配得再对也白搭,而 SMC 不会弹窗提醒你“你忘了激活”。

激活之后做一次状态核验:看一眼连接的状态列是不是“已连接”,再看驱动的诊断日志有没有反复重连的记录。如果状态是连接中但一直不变成已连接,回到 3.2 核对 IP 和机架槽号;如果日志里出现权限相关的报错,回到博图检查 2.2 里的 PUT/GET 开关。这套顺序走下来,问题基本定位在某一层,不会来回瞎改。

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

SMC 通了,只代表“驱动能跟 PLC 说话”。Intouch 里还要再建一层映射,把画面上的对象绑到驱动的地址上。这一层由三个东西串起来:访问名负责“找谁要数据”,标记名负责“要哪个数据”,动画链接负责“数据怎么显示和写回”。

4.1 建工程与窗口:模板选择与路径

从开始菜单打开 Intouch HMI Application Manager,在空白处右键选新建,模板选“独立型带符号库”。这个模板自带符号库,画阀门、电机、管道的时候能省不少事;如果选错成不带符号库的模板,后面补起来很麻烦,建议一开始就选对。

工程名按项目命名,比如“通讯”,存储路径不要放在桌面或者中文路径下——这条不是玄学,Intouch 的部分组件对路径长度和字符集敏感,路径里带空格和中文,出问题时的报错信息会非常难懂。建完双击打开,进入 WindowMaker,在窗口空白处右键新建一个窗口,先建一个测试窗口就够,别一上来就堆主画面。

4.2 访问名的四个字段怎么填

在 WindowMaker 的“特殊”→“访问名”里新建一条,四个字段各有讲究:

字段填什么说明
节点名OI Server 所在机器的节点名通讯程序和 OI 服务装同一台机时就是本机名
应用程序名SIDIRECT对应 SMC 里那个驱动服务
主题名SMC 里建的 Device Group 名,如PLC必须完全一致,大小写也别改
协议优先 SuiteLink,不通再回退 DDESuiteLink 效率更高,DDE 兼容性更老

这四个字段里最容易错的是主题名。SMC 里叫PLC,访问名里写成plc或者PLC(带个尾空格),表现就是标记名一直是问号。另外一个常见误解是节点名要填 PLC 的 IP——不是,节点名指的是“驱动服务跑在哪台机器上”,PLC 的 IP 已经在 SMC 的连接里配过了。

4.3 标记名的 Item Name 与地址对照表

标记名是真正跟地址绑定的地方。新建标记名时,类型选 I/O 离散、I/O 整型、I/O 实型,访问名选刚建的那条,Item Name 按DB号,类型偏移的格式写。不同类型对应的写法不一样:

变量类型标记名类型Item Name 写法备注
BOOLI/O 离散DB10,X0.0位偏移,注意字节和位之间用点
INTI/O 整型DB10,INT14按字节对齐
DINTI/O 整型DB10,DINT8起始偏移建议 4 的倍数
REALI/O 实型DB10,REAL4起始偏移建议 4 的倍数
M 区位I/O 离散M10.0中间继电器区
输入点I/O 离散I0.0只读,别拿来做写入测试

写不准的时候有个笨办法但很好用:在标记名对话框里点 Item Name 旁边的浏览按钮,驱动会把当前连接下能识别的项目名列出来,照着选比自己敲安全。手册里给的截图基本就是这个思路,先把一个点打通,再批量复制改偏移。

建标记名时顺手把“工程单位”和“最大/最小值”填上,后面做趋势和报警会用得到,等到用的时候再回头补,几十个点补起来很烦。

4.4 动画链接:从“看得见”到“写得回”

标记名建完,回到窗口里放一个文本对象,双击做动画链接,选“值显示”,把标记名挂上去运行。这一步只验证读。写回要单独测:放一个按钮,动画选“动作”,动作类型选“直接”,按下时写入 1、释放时写入 0,挂到一个可写的 BOOL 上(比如 M 区或者非优化 DB 里的位),在博图里监控这个位是否真的翻转。

读和写要分开验,这是现场最容易混的一步。只测了读就以为通了,交付后才发现按钮没反应,回头查是一整条链路的问题。测试顺序建议是:先读一个 REAL 看数值对不对,再读一个 BOOL 看状态对不对,最后写一个 BOOL 看 PLC 侧有没有反应。三步都过,这条链路才算真的通了。

5. 避坑与排查:五条现场最容易翻车的记录

5.1 现象:所有值恒为 0,SMC 显示已连接

原因:博图里“允许来自远程对象的 PUT/GET 通信访问”没勾。S7-1500 默认关闭这一项,S7 协议的读写请求会被 CPU 直接丢弃,表现就是连接能建立、读值永远为 0,日志里还不一定有明显报错。

解决:回博图 CPU 属性 → 保护与安全 → 连接机制,勾上 PUT/GET,重新编译下载后断电重启 CPU。改完不要只下载不重启,有些固件版本需要重启才生效。

5.2 现象:标记名显示问号,或者 REAL 读出来是天文数字

原因:两种可能,一是 DB 块还开着“优化的块访问”,没有绝对偏移,SIDIRECT 拿不到地址;二是偏移没对齐,REAL 落在 2 字节偏移上,读出来的字节顺序是错位的,数值就成了 1.7e38 这种鬼东西。

解决:先取消 DB 优化访问、重新编译,把“偏移量”列的绝对值抄到 Item Name 里;再检查 REAL 和 DINT 的起始偏移是不是 4 的倍数,不是就调整 DB 里变量的排列顺序。这个坑我踩过不止一次,现在建 DB 的第一件事就是把 REAL 全部排到前面。

5.3 现象:通讯时通时断,运行几小时后自己掉线

原因:机架号或槽号填错(常见于带扩展机架的配置),或者上位机上有多个 OI 服务实例抢同一个 PLC 连接,也可能是网络里有 IP 冲突。

解决:回博图设备视图核对 CPU 的实际机架、槽位;在 SMC 里确认只有一个连接指向该 IP;用arp -a看同一个 IP 是否对应多个 MAC。多实例抢占这个问题很隐蔽,表现是两边都“能用”,但都断断续续。

5.4 现象:工程从 A 机器拷到 B 机器后,一切配置都在,就是不通讯

原因:访问名里的节点名写的是 A 机器的主机名,B 机器上解析不到;或者 SMC 里的项目没在新机器上重新激活。

解决:把访问名的节点名改成新机器的主机名或localhost(同机部署时),再到 SMC 里确认项目存在并重新 Activate。工程迁移时我一般会把节点名统一写成localhost,省掉这类静默失效。

5.5 现象:能读不能写,或者写入后 PLC 侧没变化

原因:访问级别或 DB 块属性限制了写;也可能是动画链接挂错了对象,动作挂在了只读的 I 区上。

解决:确认标记名挂的地址在可写区(M、Q、非优化 DB),确认 PLC 侧没有对该地址做覆盖写。测试时用一个独立的测试位,别直接拿生产变量试写。

6. 通讯上线前的验证套路:心跳变量与标记名批量导入

配通了不等于配对了。交付前我会走一遍三级验证,成本很低但能挡掉大部分返工。

第一级是链路验证:ping加 102 端口测试,确认网络和 S7 服务在线,这一步在 2.4 已经写过。第二级是驱动验证:在 SMC 里看连接状态和日志,确认没有反复重连。第三级是数据验证,也是最能说明问题的一级——在 PLC 里做一个心跳变量,让它在 OB1 里每秒自增,HMI 上显示出来,看数字是否稳定跳动。

// OB1 中调用,用 1Hz 系统时钟位做自增,产生通讯心跳 IF "Clock_1Hz" THEN "CommHeartbeat".Count := "CommHeartbeat".Count + 1; END_IF;

CommHeartbeat是一个非优化 DB 里的 DINT,起始偏移 0。心跳在跳说明“链路活着且数值在更新”,心跳停了但 HMI 上其他值还在,说明只是那个变量的问题;心跳停了且所有值冻结,才是链路断了。这个小变量是判断“断线”还是“值本来就没变”的唯一可靠依据,比看画面颜色猜靠谱得多。

标记名一多,一个个手敲就是折磨。Intouch 自带 DB Dump 和 DB Load 两个小工具,在应用程序管理器里能调出来:先用 DB Dump 把现有标记名导成 CSV,看清楚列顺序和前几行的格式定义,再在 Excel 里按同样的列结构批量填新行,最后用 DB Load 导回去。要点是导出和导入必须用同一份模板,列顺序错一位就会整体错乱,导入前务必备份原工程。我的习惯是每加完一批点就 Dump 一次,留一个带日期后缀的 CSV,出问题时能快速对比。

最后说个我自己的教训。早些年配这类通讯,我总想着“先把画面做出来,通讯后面再说”,结果画面做完发现地址规划一塌糊涂,DB 里的 REAL 全落在奇偏移上,最后是重排 DB、重做标记名、重挂动画链接,三天工作量翻倍。从那以后我每次接新项目,都是先在博图里把 DB 结构和偏移表定死、导出成表格,再动 HMI 一个像素。这张表后来成了整个项目里被引用最多的文件。希望帮到你。

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

返回列表