3、S7通讯(上):S7协议基础、TIA Portal中S7连接配置、单边与双边通讯的区别

各位工程师朋友,咱们今天聊聊S7通讯。说实话,这是西门子PLC最核心的通讯方式之一。我在现场调试时,十次有八次都在跟S7协议打交道。你想想看,不管是跟西门子自家的设备通讯,还是跟第三方设备对接,S7几乎都是首选方案。

为什么?因为S7协议简单、稳定、效率高。说白了,它就是西门子设备之间的“普通话”。今天这一讲,咱们把S7协议的基础、TIA Portal里的配置方法,还有单边和双边通讯的区别,一次性讲透。

核心要点:S7通讯基于TCP/IP协议栈,工作在应用层。它不需要额外的硬件模块,直接用PLC的以太网口就能通讯。这一点在实际项目中非常方便。

3.1 S7协议基础

S7协议,全称是S7 Communication Protocol。它是西门子专有的通讯协议,用于S7系列PLC之间的数据交换。我记得刚入行时,总以为S7协议很复杂,后来发现它的设计思路其实很清晰。

S7协议的核心机制是“请求-响应”模式。客户端发送请求,服务器端返回响应。就这么简单。但这里有个关键点——S7协议支持两种通讯模式:单边通讯双边通讯。这两种模式的区别,我后面会详细讲。

咱们先看S7协议的数据包结构。一个典型的S7请求包包含以下几个部分:

  • Header(头部):协议版本、消息类型、保留字段等
  • Parameter(参数):功能码、数据块编号、起始地址、数据长度等
  • Data(数据):实际要读写的数据内容

嗯,这里要注意:S7协议的数据长度最大支持240字节。如果你一次要传输超过240字节的数据,就得拆分成多个包。我在项目中遇到过这种情况——上位机一次性要读取500个字节的数组,结果程序跑飞了。后来排查才发现是S7协议的数据长度限制。

个人经验:我建议你在设计通讯数据时,尽量把数据块控制在200字节以内。留点余量,避免踩坑。

3.2 TIA Portal中S7连接配置

接下来咱们看看TIA Portal里怎么配置S7连接。说实话,TIA Portal的配置界面做得挺友好的,但新手容易在几个地方卡住。

配置S7连接,主要分三步:

  1. 建立网络视图:在设备组态中,把PLC和HMI或者其他设备拖到同一个网络里
  2. 创建S7连接:在网络视图中,右键点击PLC,选择“添加新连接”
  3. 配置连接参数:设置伙伴设备的IP地址、TSAP、连接类型等

这里我重点说一下TSAP。TSAP是Transport Service Access Point的缩写,说白了就是通讯端口的标识。S7协议用TSAP来区分不同的通讯服务。比如:

设备类型 TSAP(本地) TSAP(伙伴)
S7-1200 03.01 03.02
S7-1500 03.01 03.02
S7-300/400 03.01 03.02
PC Station 03.01 03.02

你看,TSAP的格式是“XX.YY”。XX代表机架号,YY代表槽号。默认情况下,本地TSAP是03.01,伙伴TSAP是03.02。但如果你用的是S7-1200,它的TSAP是固定的,不能修改。

避坑指南:我曾经在配置S7-1200和S7-1500通讯时,发现连接总是建立不起来。查了半天,原来是TSAP写错了。S7-1200的TSAP是03.00,不是03.01。这个细节很容易忽略。

配置完成后,TIA Portal会自动生成对应的通讯指令。你只需要在程序中调用这些指令,就能实现数据交换。具体怎么调用,咱们下一节会讲。

3.3 单边与双边通讯的区别

好,接下来是今天的重点——单边通讯和双边通讯的区别。这个问题,我在面试时经常问,也是实际项目中容易搞混的地方。

单边通讯,说白了就是“一方主动,一方被动”。主动方(客户端)发起读写请求,被动方(服务器端)只负责响应。被动方不需要编写任何通讯程序,只需要在组态中开放数据访问权限即可。

双边通讯,则是“双方对等”。每一方都可以主动发起读写请求,也都可以被动响应。双方都需要编写通讯程序,配置连接参数。

我画了一张图,帮你理解这两种模式的区别:

单边通讯 vs 双边通讯 单边通讯 客户端(主动) 服务器端(被动) 请求 响应 只需客户端编程 服务器端无需编程 适用于:PLC与HMI、上位机 双边通讯 设备A(对等) 设备B(对等) 请求/响应 请求/响应 双方都需要编程 双方都可以主动发起 适用于:PLC与PLC

从这张图可以看得很清楚:单边通讯就像“主从模式”,双边通讯就像“对等模式”。

在实际项目中,我一般这样选择:

  • PLC与HMI通讯:用单边通讯。HMI作为客户端,PLC作为服务器端。HMI主动读取PLC的数据,PLC被动响应。
  • PLC与上位机通讯:用单边通讯。上位机作为客户端,PLC作为服务器端。上位机主动读写PLC的数据。
  • PLC与PLC通讯:用双边通讯。两个PLC都可以主动发起读写请求,实现数据同步。

重要提醒:单边通讯中,服务器端(PLC)不需要编写任何通讯程序。你只需要在PLC的组态中,把要访问的数据块设置为“可访问”即可。这一点在实际项目中非常省事。

但是,双边通讯也有它的优势。比如,当两个PLC需要实时交换数据时,双边通讯的效率更高。因为双方都可以主动发起请求,不需要等待对方轮询。

我记得有一次,一个客户要求两台S7-1500之间实时同步生产数据。我一开始用了单边通讯,结果发现数据刷新速度跟不上。后来改成双边通讯,问题就解决了。为什么?因为单边通讯中,客户端需要轮询服务器端,轮询周期限制了数据刷新速度。而双边通讯中,双方都可以主动推送数据,刷新速度更快。

个人建议:如果你的项目对数据实时性要求不高(比如1秒以上刷新一次),用单边通讯就够了。如果要求毫秒级的实时性,建议用双边通讯。

3.4 实际项目中的选择策略

说了这么多,咱们总结一下在实际项目中怎么选择:

场景 推荐模式 原因
PLC与HMI 单边通讯 HMI主动读取,PLC无需编程
PLC与上位机 单边通讯 上位机主动读写,PLC无需编程
PLC与PLC(少量数据) 单边通讯 配置简单,编程量小
PLC与PLC(大量数据) 双边通讯 效率高,实时性好
PLC与第三方设备 单边通讯 第三方设备通常作为服务器端

嗯,这里要补充一点:如果你用的是S7-1200,它只支持单边通讯中的服务器端模式。也就是说,S7-1200只能作为被动方,不能主动发起S7通讯。这一点在设计系统架构时一定要注意。

避坑指南:我曾经在一个项目中,用S7-1200作为客户端去读取S7-1500的数据。结果程序死活跑不通。后来查手册才发现,S7-1200不支持作为S7客户端。最后只能把S7-1500作为客户端,S7-1200作为服务器端,才解决了问题。

好了,这一讲的内容就到这里。S7协议的基础、TIA Portal的配置方法、单边和双边通讯的区别,咱们都讲清楚了。下一讲,我会带大家实际动手,在TIA Portal中配置一个S7连接,并编写通讯程序。到时候咱们再细聊。


公众号:蓝海资料掘金营,微信deep3321