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

实验目标
这次不再是简单的"接通就亮、断开就灭"。我们要实现的是工业控制中经典的启保停逻辑:
- 按下启动按钮,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随之断开。

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);
}
测试结果
测试过程:
- 初始状态:LED熄灭,PLC输出Q1.5=0。
- 按下启动按钮:M0.0得电自锁,Q1.5接通,Arduino检测到信号,LED点亮。
- 松开启动按钮:M0.0通过自锁保持,Q1.5仍然接通,LED保持点亮。
- 按下停止按钮:M0.0失电,Q1.5断开,LED熄灭。

这次实验说明了什么
启保停是工业控制中最基础也最重要的逻辑之一。几乎所有电机控制、设备启停都离不开它。
这次实验证明了:
- PLC可以独立完成启保停的工业逻辑。
- PLC的输出信号可以安全地通过光耦隔离传递给Arduino。
- Arduino可以作为PLC系统的"显示终端"或"扩展处理器"。
两个控制器各司其职:PLC负责工业逻辑和安全性,Arduino负责人机交互或数据处理。
注明:本项目有部分内容涉及到交流电。这个内容面向对象主要是有高低压电路知识和工控编程的人。不适合只有12V、5V电路知识的中小学生。











启保停是工控入门必学的经典电路,用PLC+Arduino来演示很直观
自锁逻辑在工厂里太常见了,电机启停几乎都用这个
光耦隔离这一步很关键,不然24V直接烧Arduino