ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

S7 通信里的 Rack/Slot 与 TSAP:IP 通了,为什么还是找不到 CPU

S7 通信里的 Rack/Slot 与 TSAP:IP 通了,为什么还是找不到 CPU 现场给采集平台加一台西门子 PLCIP 和端口都填对了连接就是红叉。协议选了 ISO-on-TCP端口 102 也没错问题出在哪模式里的Rack/Slot和TSAP到底填哪个S7-1200 的机架号、槽号为什么网上有人说 0/0有人说 0/1IP 只负责把数据送到 PLC 这台设备门口门口之后还要一块牌子告诉门卫你找的是屋里哪一块 CPU。这块牌子就是 Rack/Slot 或 TSAP。本文按「为什么要找 CPU → 协议栈位置 → Rack/Slot 是什么 → TSAP 是什么 → 两者怎么换算 → S7-1200 实操踩坑 → 排障清单」来写适合现场配置采集网关时随手翻。1. 为什么有这两个东西先打个比方。你寄快递到一个工厂IP 地址快递柜在厂门口端口 102。但工厂里有好几栋楼、每栋楼有好几个办公室你光写某某工厂门卫不知道把包裹递到哪一间。西门子 PLC 的情况一模一样IP 地址找到这台 PLC 设备本身。端口 102找到这台设备上跑 ISO-on-TCP 服务的那个门口。Rack/Slot 或 TSAP告诉对方你要和设备里插的哪一块 CPU通信。一块 S7-400 机架上可能插了 CPU 315、CP 443、FM 模块多机架时还可能有扩展机架。TCP 连接建好了但 S7 应用层报文发出去CPU 不知道这是找它还是找隔壁模块就不回。所以采集平台的添加控制器弹窗里IP 和端口只是第一步模式那一栏才是真正定位 CPU 的地方。2. 它在协议栈的哪一层西门子 S7 走以太网常见的协议栈长这样S7comm / S7comm ← 读 DB、读 M、读 I/Q 的应用层报文PDU ISO-on-TCP (RFC 1006) ← 把 ISO 传输层报文塞进 TCP端口 102 TCP ← 三次握手、重传 以太网 / 网线几个名词先对齐名词是什么ISO-on-TCP西门子选的信封本质是 RFC 1006在 TCP 上模拟一个 ISO 传输层RFC 1006把 ISO 传输服务TPKT封装到 TCP 的国际标准端口固定102S7comm在这个信封里跑的应用协议功能码比如读变量、写变量、上传下载块TSAPISO 传输层里的服务访问点地址是 RFC 1006 原生的寻址字段要点你在采集平台选的控制器协议 ISO-on-TCP底层就是 TCP 102 TPKT。Rack/Slot 这个词在 ISO 标准里不存在是西门子在 S7 硬件组态里的概念。平台把它翻译成 TSAP再塞进报文。所以两个模式不是两套协议只是两种填法。3. Rack/Slot按柜子和插槽找 CPURack 机架Slot 槽位。这是西门子 PLC 硬件组态里的物理位置字段含义现场类比机架号 RackCPU 插在第几号机架0 号主机架1/2 号是扩展机架第几排柜子槽号 SlotCPU 在该机架上插在第几个槽位柜子里的第几个槽绝大多数项目里 PLC 只有一个主机架所以Rack 永远是 0变化的只有 Slot。常见型号的固定值PLC 型号RackSlot说明S7-120001单机架CPU 在 1 号槽S7-150001同上S7-30002CPU 从 2 号槽起1 号槽通常是电源S7-400按硬件组态按硬件组态多机架时 Rack 可能是 0/1/2以 TIA 或 Step7 里的机架视图为准S7-200 SMART不适用不适用它走的是 S7 协议的简化实现部分网关用 Rack0, Slot1 或 TSAP01 00兼容怎么确认你手上那台 Slot 是几打开 Step7 / TIA Portal在线连上 CPU看设备视图里 CPU 模块所在的槽号。CPU 模块上印的槽位编号和软件里看到的一致。4. TSAPRFC 1006 原生的 2 字节地址TSAP Transport Service Access Point传输服务访问点。它是 ISO-on-TCP 报文里真正携带的地址字段长度通常2 个字节写成两个十六进制数。西门子 S7 通信里TSAP 的编码规则是TSAP 第 1 字节0x03 ← 固定值表示 S7 连接 TSAP 第 2 字节(Rack 5) Slot也就是把机架号左移 5 位占高位加上槽号占低位拼成一个字节。举几个例子换算一下实际硬件位置RackSlotTSAPHEXS7-12000103 01S7-15000103 01S7-3000203 02S7-400 主机架 CPU 在 3 号槽0303 03S7-400 扩展机架 1 上、CPU 在 2 号槽1203 22你截图里填的0003 00验证一下最后两行Rack1, Slot2(1 5) 2 32 2 34 0x22所以 TSAP 是03 22。✅Rack0, Slot10 1 1 0x01TSAP 是03 01。✅所以你在采集平台里看到的两种模式背后是这么回事选Rack/Slot你填 0 和 1平台内部自己算成03 01发出去。选TSAP你直接填03 01平台原样塞进报文。5. 什么时候选 Rack/Slot什么时候选 TSAP场景选哪个原因标准西门子 S7-300/1200/1500Rack/Slot直观硬件视图里看一眼就能填不容易错老项目文档只给了03 02这种值TSAP直接抄省去换算第三方协议网关、软 PLC、把 S7 做透传的设备TSAP它们不按西门子机架规则Rack/Slot 框死了反而对不上同一 PLC 上多个连接端点PG/OP/S7 路由TSAPTSAP 第一字节的高位有时会区分连接类型0x01PG0x02OP0x03S7 基本通信需要精确指定做教学、抓包分析TSAPWireshark 里看到的就是原始 TSAP能直接对照小提示抓包看 S7comm 连接请求报文COTP CR 帧里面的 called TSAP 字段就是你在平台上填的那个值。连接被拒时先看这个值和 PLC 实际 CPU 位置对不对得上。6. S7-1200 实操连不上的三个高频原因截图里那台 S7-1200配置界面默认 Rack0、Slot0。很多人照默认填结果连不上。按下面三步检查90% 的问题能解决。6.1 Slot 填 1不是 0S7-1200 的 CPU 固定在0 号机架、1 号槽。把槽号从默认的 0 改成1。这是新手最容易踩的坑——采集平台的输入框默认值是 0/0但那是平台的占位不是 S7-1200 的真实值。6.2 打开 PUT/GET 开关S7-1200/1500 默认禁止外部主动读写。必须在 TIA Portal 里双击项目里的CPU打开属性。进入防护与安全 → 连接机制。勾选“允许来自远程伙伴的 PUT/GET 通信访问”。下载硬件组态到 PLC。不开这个开关TCP 能连上、102 端口能通但 S7comm 读变量一律返回拒绝。6.3 其他容易忽略的点IP 和网关要在同一网段采集站能 ping 通 PLC是最低要求。PLC 里没有防火墙挡 102S7-1200 本身不带防火墙但上位机 Windows 的防火墙、现场工业防火墙可能挡 102。保护级别CPU 属性里如果设了完全访问权限需要密码外部连接还要在采集平台里填 S7 密码如果平台支持。固件版本太老的 S7-1200 固件V4.0 以下对 RFC 1006 的支持有 bug建议升到 V4.4 以上。7. 一张排障清单连接失败时按从下到上的顺序查步骤检查项怎么验证1网线/物理层PLC 上 Link 灯亮采集站网口灯亮2IP 可达ping 10.5.23.203通3端口可达telnet 10.5.23.203 102或Test-NetConnection能握手4TSAP/Rack-Slot 对不对S7-1200 填 Rack0, Slot1TSAP03 015PUT/GET 开关TIA 里允许远程伙伴 PUT/GET已勾并下载6变量地址读 DB1.DBW0 这种地址DB号、字节偏移、数据类型是否和程序一致7连接资源S7-1200 同时支持的 S7 连接数有限超过会拒绝新连接排障口诀先 ping、再 telnet、后看 TSAP、最后查开关。前两步通了问题 90% 在第 4、5 步。8. 一句话总结IP 102把数据送到 PLC 门口。Rack/Slot是用第几排柜子、第几个槽告诉 CPU这消息是找你的。TSAP是把 Rack/Slot 按(Rack5)Slot编码成两个十六进制字节直接写进 ISO-on-TCP 报文里。两者是同一件事的两种写法标准西门子 PLC 用 Rack/Slot 最省心第三方设备或抓包排障时用 TSAP 最精确。S7-1200 记牢一个值Rack0, Slot1再打开 PUT/GET基本就能采上。
返回列表