一、课程导论:Modbus协议概述、上位机与PLC通信架构、课程目标与学习路径

1.1 为什么我选择Modbus作为入门协议

做自动化这么多年,我接触过的工业协议少说也有十几种。但要说哪个协议最适合入门,我首推Modbus。

为什么?

说白了,Modbus就是工业界的"普通话"。它不挑设备,不挑厂家。西门子的PLC能用,三菱的能用,就连我几年前在污水处理厂见过的一台老掉牙的国产仪表,照样支持Modbus。

我记得刚入行那会儿,第一个项目就是给一套老旧生产线做上位机监控。甲方要求:不能动PLC程序,不能改硬件接线。我当时头都大了。后来发现,PLC上有个串口,默认就跑着Modbus RTU协议。我花了三天时间,写了个简单的上位机程序,把数据全读上来了。从那以后,我就认定了——Modbus是工控人的必修课。

核心认知:Modbus不是最快的协议,也不是最安全的协议,但它一定是兼容性最好的协议。你想想看,一个1980年代诞生的协议,到现在还在广泛使用,这本身就说明问题。

1.2 Modbus协议到底是个什么东西?

咱们不扯那些晦涩的理论。Modbus本质上就干一件事:一个设备问,另一个设备答

问的一方叫"主站"(Master),答的一方叫"从站"(Slave)。上位机通常是主站,PLC通常是从站。当然,也有PLC做主站的情况,这个后面会讲到。

Modbus定义了三种常见的数据类型:

类型 说明 我常用的场景
线圈(Coil) 1位,可读可写 控制继电器、指示灯
离散输入(Discrete Input) 1位,只读 读取按钮、限位开关状态
保持寄存器(Holding Register) 16位,可读可写 设定温度、读取当前值
输入寄存器(Input Register) 16位,只读 读取模拟量输入

嗯,这里要注意:很多初学者搞不清"保持寄存器"和"输入寄存器"的区别。我教你一个笨办法——能写的叫保持,只能读的叫输入。记住了吧?

1.3 上位机与PLC的通信架构

我在项目中见过三种典型的通信架构,给你画张图看看:

上位机与PLC通信架构 上位机(主站) PLC(从站) 架构一:串口直连(RS232/RS485) 上位机(主站) 以太网交换机 PLC(从站) 架构二:以太网(Modbus TCP) 上位机(主站) RS485总线 PLC 1# PLC 2# PLC 3# 架构三:多从站(RS485总线)

这三种架构,我在项目中都遇到过:

  • 串口直连:最简单,适合单台PLC。我曾经在一个小型的恒压供水项目里就用这个方案,成本低,稳定可靠。
  • 以太网:现在的主流方案。速度快,距离远。我去年做的一个汽车零部件产线,20多台设备全走Modbus TCP,一点问题没有。
  • RS485总线:多台PLC共用一根线。注意,每个从站要有唯一的地址,不能重复。我曾经犯过这个错——两台PLC设了同一个地址,结果数据全乱了。

我的建议:新手入门,先用串口直连。等把Modbus的报文结构搞明白了,再上以太网。别一上来就搞复杂的,容易把自己绕晕。

1.4 课程目标:学完你能干什么?

这门课不是讲理论,是讲实战。学完以后,你至少能做到三件事:

  1. 看懂Modbus报文——给你一串十六进制数据,你能说出它是什么意思
  2. 用Python写上位机——从零开始,写一个能读写PLC数据的程序
  3. 排查通信故障——通信不上?知道从哪里下手查

我记得有个学员,学完这门课后,回去就把他们厂里的老式温控仪数据读上来了。原来每天要人工记录,现在全自动了。他跟我说,就这一个改进,每年省了至少200个工时。

1.5 学习路径:我建议你这样走

这门课一共10章,我建议你按这个顺序来:

阶段 章节 核心内容
基础 1-3章 协议原理、Python环境搭建、串口通信基础
核心 4-7章 Modbus功能码实战、读写寄存器、异常处理
进阶 8-10章 多线程通信、日志系统、完整项目实战

避坑指南:我曾经见过不少学员,第一章还没看完就跳去写代码了。结果遇到问题又回头翻基础,反而更浪费时间。我的建议是——按部就班,每章动手练。代码一定要自己敲一遍,光看是学不会的。

好了,导论就讲这么多。下一章,咱们直接上手,把Python的开发环境搭起来,再写一个最简单的串口通信程序。到时候你就知道,Modbus通信其实没那么神秘。


专注资料整理