第二章 通讯协议基础:OSI七层模型、TCP/IP协议栈、串口通讯与工业以太网

各位同学,大家好。我是老张,干SCADA系统这行有十几年了。今天咱们聊聊通讯协议的基础。说实话,很多刚入行的工程师,一上来就盯着Modbus、Profinet这些具体协议猛学,结果遇到现场问题还是抓瞎。为什么?因为底层逻辑没搞透。

这一章,我会把OSI七层模型、TCP/IP协议栈、串口通讯(RS232/RS485)和工业以太网这四块内容串起来讲。你想想看,它们其实是一脉相承的。搞懂了这些,后面学任何协议都会轻松很多。

核心观点:通讯协议的本质,就是约定好「谁在什么时候、用什么格式、说什么话」。OSI模型是理论框架,TCP/IP是实战标准,串口是工业老将,以太网是未来趋势。

通讯协议基础四件套 OSI七层模型 TCP/IP协议栈 串口通讯 工业以太网 理论框架 7层分层模型 理解数据封装过程 实战标准 4层简化模型 IP/TCP/UDP核心 工业老将 RS232/RS485 差分信号/主从结构 未来趋势 实时以太网 Profinet/EtherCAT 核心逻辑:从理论到实践,从串口到以太网 OSI教你怎么分层 → TCP/IP教你怎么跑 → 串口解决远距离 → 以太网解决高速率

2.1 OSI七层模型:通讯界的「宪法」

OSI七层模型,说白了就是国际标准化组织(ISO)给通讯行业定的一套「宪法」。它不负责具体实现,只告诉你通讯应该怎么分层、每层干什么活。

我个人习惯把这七层分成三组来记:

  • 上三层(应用层、表示层、会话层):跟用户打交道。你写的SCADA软件、数据库查询、文件传输,都在这一块。
  • 传输层:承上启下的关键。负责端到端的可靠传输,TCP和UDP就在这层。
  • 下三层(网络层、数据链路层、物理层):跟硬件打交道。IP地址、MAC地址、网线、串口线,都在这里。
层级名称核心功能SCADA中的例子
7应用层用户接口、应用协议Modbus TCP、OPC UA
6表示层数据格式转换、加密ASCII/二进制转换
5会话层建立/管理/终止会话PLC与上位机的连接管理
4传输层端到端可靠传输TCP保证数据不丢包
3网络层路由选择、逻辑寻址IP地址、子网划分
2数据链路层帧封装、差错检测MAC地址、CRC校验
1物理层比特流传输、电气特性RS485电平、网线

我的经验:刚入行时总觉得OSI模型太抽象,直到有一次排查一个PLC通讯超时问题。我按OSI分层逐层排查:物理层看线有没有断,链路层看MAC地址对不对,网络层看IP能不能ping通,传输层看端口有没有开,应用层看协议格式对不对。结果发现是网线水晶头接触不良——物理层的问题。从那以后,我排查通讯故障都按这个思路来,效率高很多。

2.2 TCP/IP协议栈:工业通讯的「实战手册」

OSI模型太理想化了,七层在实际中很少完全实现。TCP/IP协议栈才是真正在用的东西。它只有四层:应用层、传输层、网络层、网络接口层。

你想想看,我们SCADA系统里最常见的Modbus TCP,就是应用层的协议。它把Modbus帧封装在TCP报文里,通过IP网络传输。这里有个关键点:Modbus TCP去掉了CRC校验,因为TCP/IP协议栈本身已经保证了数据的完整性。

重点记忆:

  • TCP:面向连接、可靠、有确认重传。适合SCADA主站与PLC之间的关键数据交换。
  • UDP:无连接、不可靠、速度快。适合广播、状态量采集等允许偶尔丢包的场景。

我记得有一次在化工厂做项目,客户要求PLC数据刷新率小于50ms。用TCP的话,三次握手和确认机制导致延迟不稳定。后来我改用UDP+应用层自定义确认机制,把刷新率压到了20ms以内。嗯,这里要注意:UDP虽然快,但你要自己处理丢包和乱序。

2.3 串口通讯:RS232与RS485

说到串口,很多年轻工程师可能觉得过时了。其实在工业现场,串口通讯依然大量存在。尤其是RS485,几乎成了PLC、仪表、变频器的标配接口。

2.3.1 RS232:点对点的老前辈

RS232是最早的串口标准之一。它的特点是:

  • 传输距离短:一般不超过15米
  • 速率低:通常9600bps~115200bps
  • 信号方式:单端传输,共地干扰大
  • 接口:DB9公头/母头,3线(TX、RX、GND)就能通讯

避坑指南:我曾经在一个项目中,用RS232连接PLC和上位机,距离大概20米。结果数据经常出错,偶尔还掉线。排查了半天,发现是线太长导致信号衰减。后来换成RS485转以太网模块,问题才解决。所以记住:RS232只适合短距离、低速率、一对一场景。

2.3.2 RS485:工业现场的主力军

RS485才是工业通讯的「老黄牛」。它的优势很明显:

  • 差分信号:抗干扰能力强,适合工厂恶劣环境
  • 传输距离远:理论可达1200米(实际建议800米以内)
  • 多站能力:一条总线上最多挂32个节点(加中继可扩展)
  • 半双工:同一时刻只能一个设备发送,其他设备接收

RS485的接线很简单:A线(+)、B线(-)、GND。但有个细节很多人忽略——终端电阻。在总线两端各加一个120欧姆电阻,可以消除信号反射。我见过太多现场因为没加终端电阻导致通讯不稳定的案例了。

我的习惯:做RS485项目时,我会在总线两端各放一个120欧姆电阻,并且用万用表量一下A-B之间的电阻,正常应该在60欧姆左右(两个120欧并联)。如果量出来是120欧,说明只有一端有电阻;如果是无穷大,说明两端都没加。这个小技巧帮我省了不少排查时间。

2.4 工业以太网:从办公网到工业现场

工业以太网,说白了就是把以太网技术搬到工厂里。但它跟办公用的以太网有本质区别:

对比项办公以太网工业以太网
环境要求常温、无尘-40~85℃、防尘、防震
实时性毫秒级即可微秒级(如EtherCAT)
可靠性99%可用99.999%可用(双冗余)
协议HTTP、FTP、SMTPProfinet、EtherNet/IP、EtherCAT
拓扑星型为主线型、环型、星型均可

工业以太网的核心优势在于:实时性和确定性。比如Profinet IRT(等时实时)模式,可以在1ms内完成100个从站的同步数据交换。这在运动控制、高速生产线中至关重要。

关键概念:工业以太网并不是一种协议,而是一类技术的总称。它基于标准以太网硬件(IEEE 802.3),但在数据链路层和应用层做了实时性优化。常见的工业以太网协议有:

  • Profinet:西门子力推,支持RT和IRT两种实时模式
  • EtherNet/IP:罗克韦尔主导,基于CIP协议
  • EtherCAT:倍福开发,采用「飞读飞写」技术,延迟极低
  • Modbus TCP:最简单,兼容性最好,但实时性一般

我记得有个项目,客户要求用Profinet连接30台伺服驱动器,循环时间要求1ms。一开始我用的是标准交换机,结果发现数据包冲突严重,循环时间根本达不到。后来换成支持Profinet IRT的专用交换机,并且配置了等时同步模式,问题才解决。所以工业以太网不是换个工业级交换机就完事了,协议层面的配置同样重要。

避坑指南:我曾经在项目里混用了办公交换机和工业交换机,结果Profinet通讯时断时续。后来发现办公交换机的存储转发机制引入了不确定延迟,导致实时数据包超时。所以工业以太网一定要用支持对应协议实时功能的交换机,别图便宜用普通交换机。

小结

这一章的内容比较多,但都是基础中的基础。OSI七层模型帮你建立分层思维,TCP/IP协议栈让你理解实际通讯过程,串口通讯是工业现场的老兵,工业以太网则是未来的方向。

你想想看,后面我们要学的Modbus RTU就是基于RS485的,Modbus TCP就是基于以太网的。搞懂了这些底层原理,学具体协议就是水到渠成的事。

课后建议:找一台PLC和一台电脑,用串口线连起来。用串口调试助手发几个字节,观察RS485的A/B线上的波形。再用Wireshark抓一个Modbus TCP的包,看看TCP三次握手和Modbus帧结构。动手做一遍,比看十遍书都管用。


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