第二章 通讯协议基础:OSI七层模型、TCP/IP协议栈、串口通讯与工业以太网
各位同学,大家好。我是老张,干SCADA系统这行有十几年了。今天咱们聊聊通讯协议的基础。说实话,很多刚入行的工程师,一上来就盯着Modbus、Profinet这些具体协议猛学,结果遇到现场问题还是抓瞎。为什么?因为底层逻辑没搞透。
这一章,我会把OSI七层模型、TCP/IP协议栈、串口通讯(RS232/RS485)和工业以太网这四块内容串起来讲。你想想看,它们其实是一脉相承的。搞懂了这些,后面学任何协议都会轻松很多。
核心观点:通讯协议的本质,就是约定好「谁在什么时候、用什么格式、说什么话」。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、SMTP | Profinet、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