PLC+Arduino启保停实验:自锁控制实战

2026-10-26 09:33:26 58阅读

PLC和Arduino联合做启保停实验

上一篇文章验证了PLC的24V工业信号可以通过光耦隔离模块安全地传递给Arduino。这次我们把实验升级一点:用CR40 PLC做启保停控制,Arduino接收PLC输出信号并驱动LED模拟负载。

PLC+Arduino启保停实验硬件

实验目标

这次不再是简单的"接通就亮、断开就灭"。我们要实现的是工业控制中经典的启保停逻辑:

  • 按下启动按钮,LED点亮并保持。
  • 松开启动按钮,LED仍然保持点亮(自锁)。
  • 按下停止按钮,LED熄灭。

这就是工控中最基本的"启保停"(Start-Stop-Latch)电路。

实验结构

CR40 梯形图(启保停逻辑)
  ↓
CR40 继电器输出 Q1.5
  ↓ 24V信号
24V—3.3V 光耦隔离模块
  ↓
Arduino D2(信号输入)
Arduino D10(LED输出)
  ↓
LED(模拟负载)

实验接线示意图

CR40梯形图:启保停逻辑

启保停的核心是"自锁":启动信号消失后,输出仍然通过自身的常开触点维持通电。

梯形图程序

梯形图逻辑说明:

  • I0.0:启动按钮(常开触点,按下时导通)
  • I0.1:停止按钮(常闭触点,按下时断开)
  • M0.0:内部辅助继电器(自锁触点)
  • Q1.5:输出线圈(控制LED)

按下启动按钮I0.0时,M0.0得电并自锁;松开后,M0.0通过自身的常开触点继续保持通电。按下停止按钮I0.1时,M0.0失电,Q1.5随之断开。

PLC状态表设置

Arduino程序

Arduino部分和上一篇文章类似,只负责读取PLC输出信号并控制LED:

const int plcInput = 2;
const int ledPin = 10;

void setup() {
  pinMode(plcInput, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
}

void loop() {
  bool plcOn = (digitalRead(plcInput) == LOW);
  if (plcOn) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  delay(10);
}

Arduino接线图

测试结果

测试过程:

  1. 初始状态:LED熄灭,PLC输出Q1.5=0。
  2. 按下启动按钮:M0.0得电自锁,Q1.5接通,Arduino检测到信号,LED点亮。
  3. 松开启动按钮:M0.0通过自锁保持,Q1.5仍然接通,LED保持点亮。
  4. 按下停止按钮:M0.0失电,Q1.5断开,LED熄灭。

LED测试状态

这次实验说明了什么

启保停是工业控制中最基础也最重要的逻辑之一。几乎所有电机控制、设备启停都离不开它。

这次实验证明了:

  • PLC可以独立完成启保停的工业逻辑。
  • PLC的输出信号可以安全地通过光耦隔离传递给Arduino。
  • Arduino可以作为PLC系统的"显示终端"或"扩展处理器"。

两个控制器各司其职:PLC负责工业逻辑和安全性,Arduino负责人机交互或数据处理。

注明:本项目有部分内容涉及到交流电。这个内容面向对象主要是有高低压电路知识和工控编程的人。不适合只有12V、5V电路知识的中小学生。


作者:gada888
链接:https://www.aiddithome.com/p/49e2d08a2610e.html
本作遵循 [CC BY 4.0 署名] 许可,版权归作者所有。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
触底反弹的Tony
1楼 · 2026-10-26 09:33:27

启保停是工控入门必学的经典电路,用PLC+Arduino来演示很直观

阿强焊点总飞
2楼 · 2026-10-26 09:33:27

自锁逻辑在工厂里太常见了,电机启停几乎都用这个

拆开看看再说
3楼 · 2026-10-26 09:33:27

光耦隔离这一步很关键,不然24V直接烧Arduino