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连接,主要分三步:
- 建立网络视图:在设备组态中,把PLC和HMI或者其他设备拖到同一个网络里
- 创建S7连接:在网络视图中,右键点击PLC,选择“添加新连接”
- 配置连接参数:设置伙伴设备的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 单边与双边通讯的区别
好,接下来是今天的重点——单边通讯和双边通讯的区别。这个问题,我在面试时经常问,也是实际项目中容易搞混的地方。
单边通讯,说白了就是“一方主动,一方被动”。主动方(客户端)发起读写请求,被动方(服务器端)只负责响应。被动方不需要编写任何通讯程序,只需要在组态中开放数据访问权限即可。
双边通讯,则是“双方对等”。每一方都可以主动发起读写请求,也都可以被动响应。双方都需要编写通讯程序,配置连接参数。
我画了一张图,帮你理解这两种模式的区别:
从这张图可以看得很清楚:单边通讯就像“主从模式”,双边通讯就像“对等模式”。
在实际项目中,我一般这样选择:
- 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