PLC / Modbus 控制模块

2026-06-22 接口:RS485/网口/Modbus/IO R2
你将学到
  • 搞懂 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);保持寄存器和初始值设置(以手册为准)

动手挑战

  1. 取一台入门级 PLC(台达 DVP 系列或同类),接一个按钮到 DI(X0),接一个 24V 指示灯到 DO(Y0),写一段梯形图:按钮按下(X0=1)指示灯亮(Y0=1)。下载程序,验证 IO 基本可控——这是 PLC 最小闭环。
  2. 在上面的基础上加 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 协议的完整细节,参考 串口协议入门

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

相关自研产品

本模块与我们的自研产品深度配套,欢迎了解详情。

需要展厅软硬件方案或定制开发?