PLC / Modbus 控制模块
- ✓ 搞懂 PLC 在展厅里的角色,和中控软件的分工边界
- ✓ 理解 PLC 和 Modbus 的关系,知道如何从中控软件读写 PLC 寄存器
- ✓ 了解梯形图基本逻辑,能看懂一个简单的 PLC 控制程序
- ✓ 拿到展厅 PLC 选型维度对比表和故障排查表
- ✓ 知道典型展厅 PLC 应用场景(沙盘机械/多轴顺序/安全联锁)
展厅联调期间,有工程师问过我这个问题:"沙盘有个机械模型要按时序转动,中控能不能直接控继电器驱动电机?"
能,但你会很快遇到麻烦:时序稍微复杂一点(A 转到位置后才能 B 启动,B 超时没到位要停下来报警),继电器加定时继电器加 IO 模块绕在一起,接线越来越复杂,出了故障根本找不到原因。这时候正确的工具是 PLC(Programmable Logic Controller,可编程逻辑控制器)。
PLC 就是为复杂时序控制、安全联锁、精确定时这类需求设计的。展厅里,它和中控软件的分工是:PLC 管机械世界的逻辑,中控软件管展览体验的逻辑——两者通过 Modbus 通信协作。
R2 内容,涉及 PLC 接线、IO 配置和 Modbus 通信。具体 IO 点数、寄存器地址、接线端子定义以你手上 PLC 型号的官方手册为准(文末来源);文中参数为说明性举例。
PLC 是什么:为工业控制而生的专用控制器
PLC 诞生于 1960 年代,最初是替代工厂里大量继电器接线盘的——以前要实现"A 传感器触发,B 电机延时 5 秒启动,C 限位到位后停机"这样的逻辑,需要接一大堆继电器、定时器、行程开关……改一次逻辑就要重新接线。PLC 把这些逻辑变成程序,接线只需要把传感器和执行器接到 IO 端子,逻辑改程序,不改线。
PLC 的核心能力:
- 高速精确的 IO 扫描:每几毫秒扫描一次 IO 状态,响应速度远超 PC 软件(PC 任务调度精度通常在 10ms 量级,PLC 可到 1ms 甚至更低,以型号为准)
- 确定性执行:扫描周期固定,不受操作系统调度影响,机械控制不会因为 CPU 忙而"漏拍"
- 内置定时器/计数器:精确的时序控制,不需要外接硬件定时器
- 安全联锁:超时/过载/限位保护,硬件级联锁不依赖软件稳定性
PLC 和中控软件的分工
这是展厅里最重要的设计决策。下面这张分工表可以作为项目设计时的参考:
| 控制类型 | 谁来负责 | 原因 |
|---|---|---|
| 机械装置时序(电机启停、气缸动作) | PLC | 需要毫秒级响应和确定性,PC 软件不可靠 |
| 安全联锁(限位保护、急停) | PLC | 安全逻辑必须硬件级保障,不能因软件崩溃失效 |
| 展览体验逻辑("参观者触发→内容切换") | 中控软件 | 逻辑复杂、需要和内容系统打通、频繁改动 |
| 传感器/按钮采集 | 两者都可(取决于位置) | 如果传感器紧靠机械装置,接 PLC 更合理 |
| 状态上报(机械到位、故障报警) | PLC 写寄存器,中控软件读 | 中控软件通过 Modbus 读 PLC 状态寄存器 |
| 远程操控(展览结束后机械归位) | 中控软件写指令,PLC 执行 | 中控软件通过 Modbus 写 PLC 控制寄存器 |
典型协作模式:
中控软件(SoftControl,运行在工控机)
│ Modbus TCP / RTU(读状态/写指令)
▼
PLC(运行机械控制梯形图)
│ 硬件 IO(高速扫描)
▼
电机驱动器 / 气缸电磁阀 / 传感器 / 限位开关
参观者触发一个交互(中控感知)→ 中控软件通过 Modbus 写 PLC 的控制寄存器("启动机械展项 1")→ PLC 扫描到控制位置位 → 按梯形图逻辑依次启动 A 电机、等待限位、启动 B 电机、超时保护 → 运动完成后 PLC 置"完成"状态位 → 中控读到"完成",触发下一步展示内容。
Modbus 和 PLC:数据区和寄存器
大多数展厅级 PLC(台达 DVP 系列、西门子 S7-1200 系列等)都支持 Modbus RTU(RS485)或 Modbus TCP(网口)。PLC 的 Modbus 数据区结构:
| Modbus 数据区 | 功能码 | PLC 对应 | 典型用途 |
|---|---|---|---|
| 线圈(Coil) | 01 读 / 05 写单 / 0F 写多 | 内部标志位、输出线圈 | 开关机械/状态位 |
| 离散输入(DI) | 02 读 | 物理输入点状态 | 读传感器/限位开关 |
| 输入寄存器 | 04 读 | 模拟量输入 | 读传感器数值 |
| 保持寄存器 | 03 读 / 06 写单 / 10 写多 | 数据寄存器 D | 读状态值/写控制参数 |
典型寄存器分配约定(以你手上 PLC 的 Modbus 映射表为准,不同厂家地址有差异):
- 状态区(PLC 写,中控读):中控软件读这些寄存器判断机械当前状态
- 控制区(中控写,PLC 读):中控软件写这些寄存器触发 PLC 动作
- 参数区:运动参数(速度/延时)由中控动态写入,PLC 读取执行
第一次对接新 PLC 时,让 PLC 工程师给你一份"Modbus 寄存器地址表"——哪个地址是什么意义、读/写、数据类型(位/字/整数/浮点)。这张表是对接的基础,没有它别靠猜,猜出来的地址写错了可能触发意外动作。
Modbus 读写 PLC 示例(Python)
from pymodbus.client import ModbusTcpClient
# 替换为你 PLC 的实际 IP(需配置 PLC 以太网模块 IP,以手册为准)
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()
# 读保持寄存器(功能码 03):从 D0 开始读 4 个字
# 地址映射以 PLC Modbus 手册为准(台达 DVP Modbus 地址偏移等以官方为准)
result = client.read_holding_registers(address=0, count=4, slave=1)
if not result.isError():
print("状态寄存器:", result.registers)
# 例如:[0, 1, 0, 256] → 第 2 个寄存器=1 代表"机械运行中"(含义以手册定义为准)
else:
print("读取失败:", result)
# 写单寄存器(功能码 06):写控制指令
# 向控制寄存器地址 10(以手册为准)写 1 = 触发"机械 A 启动"
write_result = client.write_register(address=10, value=1, slave=1)
if not write_result.isError():
print("写入成功:机械 A 启动指令已发送")
else:
print("写入失败:", write_result)
client.close()
你应该看到什么
- 读寄存器返回一组整数,对照 PLC 工程师给的寄存器地址表解读含义
- 写寄存器成功后,PLC 侧的指示灯应该有响应,或 PLC 编程软件的监控界面能看到对应线圈/寄存器变化
- 如果写入成功但 PLC 没反应:查 PLC 程序里是否把这个寄存器地址接入了梯形图逻辑
- 如果 Modbus TCP 连接失败:确认 PLC 以太网模块 IP 配置,以及 PLC Modbus 服务是否启用(以手册配置步骤为准)
梯形图基本概念(看懂就够)
PLC 的程序用"梯形图(Ladder Diagram)"写,因为外形像梯子而得名。你不需要会写复杂的 PLC 程序,但能看懂基本梯形图能帮你和 PLC 工程师对话,排障也更有效。
基本符号:
|----[ ]----( )----|
常开触点 线圈输出
[ ]常开触点(Normally Open):对应的变量为 1(ON)时,这个触点"接通"[/]常闭触点(Normally Closed):对应变量为 0(OFF)时接通,为 1 时断开( )线圈:如果从左到右有电(逻辑满足),线圈对应变量置 1
一个简单的例子:
|---[启动按钮 X0]---[急停正常 /X1]---[运行中标志 /M0]---(电机正转 Y0)---|
含义:当 X0=1(启动按钮按下)AND X1=0(急停正常,常闭为接通)AND M0=0(不在运行中),则 Y0 线圈置 1(电机正转驱动输出)。
定时器和计数器:
|---[启动 M1]---(TON T1 IN:=1 PT:=5000)---| % 5000ms 定时器
|---[T1.Q]-----(电机停止 Y0:=0)------------| % 定时到后停止
展厅机械展项常用的逻辑模式:
- 限位到位(传感器 X2 触发)→ 停下一段
- 超时未到位(定时器 T1 超时)→ 急停并报警(防止机械卡死损坏)
- 完成动作后置完成标志(写状态寄存器)→ 中控读到并触发下一步
展厅典型 PLC 应用场景
沙盘机械控制
科技馆沙盘上有多个机械模型(卫星展开、火箭升降、地球旋转),每个有 1 路驱动电机和 2 个限位开关(到位检测)。PLC 控制每个模型的启停,中控软件发"启动展示"指令,PLC 顺序驱动各机械动作,到位后上报状态,中控同步触发对应讲解视频。
多轴顺序动作
展项有 3 根机械臂需要按顺序(A 到位才能 B 启动,B 到位才能 C 启动),用 PLC 做状态机控制,确保顺序严格执行,任何一个轴超时未到位立刻全部停机报警。这种逻辑用继电器接线做会非常复杂,PLC 梯形图写 20 行就能实现。
安全联锁
机械展项的旋转部件有安全护栏,护栏门开着时机械不允许动(安全联锁)。护栏门磁接 PLC 的 DI,梯形图里护栏常闭触点串联在所有驱动输出线圈前面——不管中控发什么指令,门没关好电机就不动。这个安全联锁在 PLC 内部实现,不依赖中控软件的可靠性。
选型维度对比
| 维度 | 小型 PLC(台达 DVP 系列等) | 中型 PLC(西门子 S7-1200 等) |
|---|---|---|
| IO 点数 | 10~60 点(基本型) | 几十到几百点(可扩展模块) |
| 编程软件 | 台达 WPLSoft / ISPSoft(免费) | TIA Portal(需授权) |
| Modbus 支持 | RTU/TCP,需查具体型号和固件 | 通过通信模块支持,配置较复杂 |
| 成本 | 几百元到千余元 | 千元到万元量级 |
| 适用场景 | 单机械展项、小型沙盘 | 大型沙盘、多展区机械联控 |
| 扩展性 | 有 IO 扩展模块,但规模有限 | 扩展模块丰富,生态完整 |
| 中文资料 | 台达有完整中文手册 | 西门子中文文档完整,中文社区活跃 |
| 展厅常见程度 | 高(成本低、接入简单) | 中(大型展馆或有特殊要求时) |
展厅项目里,如果机械展项规模不大(单台设备,IO 点数在 20 以内),台达 DVP 这类小型 PLC 性价比很高,配置简单,Modbus RTU/TCP 开箱即用。大型沙盘或多展区联控才需要考虑 S7-1200 这类中型 PLC。以你的项目机械复杂度决定,不要因为品牌溢价买超出需求的型号。
PLC 和 Arduino / 单片机的区别
有工程师会问:机械控制用 Arduino 不行吗?
可以做原型,但不适合正式展厅:
| 维度 | Arduino / ESP32 | PLC |
|---|---|---|
| 稳定性 | 消费级,长期运行有风险 | 工业级,设计用于 24h 不间断 |
| 确定性 | 无实时 OS,任务调度不精确 | 扫描周期固定,毫秒级响应可靠 |
| 看门狗 | 有,但软件看门狗 | 硬件看门狗,掉电/死机自恢复 |
| 工作环境 | 消费级温度范围 | 工业级宽温宽压 |
| 维修换件 | 找替代品难(断货/停产) | 品牌 PLC 零件供应有保障 |
| 展厅定位 | 原型验证、小玩具级互动 | 正式工程,机械展项生产环境 |
故障排查表
| 现象 | 最可能的原因 | 怎么查 |
|---|---|---|
| Modbus TCP 连接失败 | PLC 以太网模块 IP 配错 / Modbus 服务未开 | ping PLC IP;查 PLC 以太网配置;确认 Modbus Server 功能已启用(以手册为准) |
| 读寄存器报错(非法地址) | 地址超出 PLC 定义范围 / 地址偏移计算错 | 对照 PLC Modbus 地址表,确认起始地址和访问类型(线圈/寄存器) |
| 写寄存器成功但 PLC 没动作 | 梯形图程序里没有读这个寄存器 / 程序逻辑条件未满足 | 用 PLC 编程软件在线监控,看对应变量是否变化 |
| 机械动作异常(不到位就停/不停) | 限位开关接线错 / 定时器参数错 | 用 PLC 在线监控看 IO 状态,确认限位传感器信号;检查接线端子 |
| PLC 急停(红灯亮) | 安全联锁触发 / 过载保护 | 查 PLC 错误寄存器(以手册错误码说明为准);检查是否有机械卡死或过载 |
| RS485 Modbus RTU 部分时候超时 | 总线终端电阻 / 波特率不匹配 / 多台设备地址冲突 | 确认总线两端终端电阻(以手册建议为准);检查每台设备从机地址唯一 |
| 机械停不下来(限位到了还在转) | 限位传感器断线 / 梯形图常闭/常开选错 | 测限位传感器输出,到位时应有信号变化;查梯形图触点类型 |
| PLC 掉电后程序丢失 | 未做断电保持配置 | 查 PLC 配置,确认程序存在 Flash(非仅 RAM);保持寄存器和初始值设置(以手册为准) |
动手挑战
- 取一台入门级 PLC(台达 DVP 系列或同类),接一个按钮到 DI(X0),接一个 24V 指示灯到 DO(Y0),写一段梯形图:按钮按下(X0=1)指示灯亮(Y0=1)。下载程序,验证 IO 基本可控——这是 PLC 最小闭环。
- 在上面的基础上加 Modbus:从 PC 上用 Python 写 1 到 PLC 控制寄存器,让 PLC 梯形图读这个寄存器控制 Y0——跑通"中控 → Modbus → PLC → IO"完整链路。
本节学到的知识
- PLC = 可编程逻辑控制器,为复杂时序、安全联锁、精确定时而生;接线只把传感器/执行器接到 IO 端子,改逻辑改程序、不改线。
- 核心优势是确定性:扫描周期固定,响应能到 1ms 量级(PC 软件通常 10ms 量级,以型号为准),不受操作系统调度影响,机械控制不"漏拍"。
- 展厅里的分工铁律:PLC 管机械世界逻辑,中控软件管展览体验逻辑,两者靠 Modbus 通信协作。
- 安全联锁必须在 PLC 硬件级实现(如护栏门常闭触点串在所有驱动线圈前),不依赖中控软件的可靠性。
- Modbus 四个数据区认准:线圈 Coil(01 读 / 05 写单 / 0F 写多)、离散输入 DI(02 读)、输入寄存器(04 读)、保持寄存器(03 读 / 06 写单 / 10 写多)。
- 对接前先要一份 Modbus 寄存器地址表(地址含义 / 读写 / 数据类型),别靠猜——猜错地址可能触发意外动作。
- 中控读写路径:中控读状态寄存器判断机械状态、写控制寄存器触发 PLC 动作;Modbus TCP 默认端口 502。
- 梯形图三个基本符号:
[ ]常开触点(变量为 1 时接通)、[/]常闭触点(变量为 0 时接通)、( )线圈(逻辑满足则置 1);定时器用 TON(PT 单位毫秒)。 - 选型分档:小型 台达 DVP(IO 约 10~60 点,WPLSoft/ISPSoft 免费,几百到千余元)够单展项 / 小沙盘;大型联控才上 西门子 S7-1200(TIA Portal 需授权,千到万元),别为品牌溢价买超需求型号。
- 通信口两种:RS485 走 Modbus RTU、网口走 Modbus TCP;RS485 总线两端要加终端电阻、每台从机地址唯一(以手册为准)。
- 正式展厅机械控制别用 Arduino/ESP32(消费级、无实时 OS、软件看门狗),要用工业级 PLC(宽温宽压、硬件看门狗、零件供应有保障)。
小结 · 你掌握了什么
- 你搞清楚了 PLC 在展厅里的角色:管机械世界的确定性时序和安全联锁,和中控软件分工——PLC 管机械逻辑,中控软件管展览体验。
- 你理解了 Modbus 是中控软件和 PLC 对接的标准协议,知道中控通过读写 PLC 保持寄存器来读状态、发指令。
- 你看懂了梯形图的基本结构(常开/常闭触点、线圈、定时器),能和 PLC 工程师有效沟通。
- 你拿到了展厅级 PLC 的选型对比和故障排查表。
展厅机械展项的整体中控架构,参考 中控主机图鉴 和 软件中控网关图鉴;想了解 Modbus 协议的完整细节,参考 串口协议入门。