news 2026/8/8 10:55:45

PLC编程入门:从电机启停与闪烁灯案例掌握自锁与定时器核心逻辑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PLC编程入门:从电机启停与闪烁灯案例掌握自锁与定时器核心逻辑

1. 先搞清楚这两个案例到底在解决什么实际问题

如果你刚开始接触PLC编程,看到“电机启停”和“闪烁灯”这两个案例,可能会觉得太简单、太基础。但恰恰是这两个案例,是理解PLC逻辑控制最核心的“开关”。它们解决的不仅仅是让一个电机转起来、让一个灯闪起来,而是帮你建立一套最底层的编程思维:如何用程序语言去描述物理世界的“启动-保持-停止”和“周期性动作”

很多人学PLC不动手,只看理论,结果就是面对一个真实的控制需求时,脑子里有一堆指令,却不知道从哪里开始接线、画梯形图。杨小飞老师这两个案例之所以经典,就是因为它们剥离了复杂的工艺,直击本质:

  • 案例一(电机启停):核心是理解“自锁”(OR自锁)。它解决的是“如何用一个瞬间的按钮信号,去维持一个持续的输出状态”。这是所有保持型控制的基础,比如一台设备运行、一个阀门打开、一个指示灯常亮,背后都是这个逻辑。
  • 案例二(闪烁灯):核心是理解“定时器(T)的交替计时”。它解决的是“如何让输出按照固定的时间周期自动循环通断”。这是周期性动作的基石,比如报警灯闪烁、设备间歇运行、巡检周期触发,都离不开这个模式。

所以,这篇文章不是给你一堆指令表,而是带你亲手搭建这两个逻辑,并讲清楚每一个触点、线圈、定时器为什么必须这么放。我会假设你手边有一套PLC硬件(三菱FX系列或西门子S7-200 SMART这类入门机型)或者一个仿真软件(如GX Works2的仿真器),我们从头开始接线、编程、调试。

2. 动手前的准备:软硬件环境与核心概念对齐

在动手写第一行程序之前,必须把“战场”准备好。这里不讲复杂理论,只说马上要用的。

2.1 你需要准备什么

  1. 硬件(二选一)

    • 真实PLC:如三菱FX3U、FX5U,西门子S7-200 SMART,欧姆龙CP1E等。这是最好的方式。
    • 仿真软件(最低成本):三菱的GX Works2/3自带仿真器(GX Simulator2),西门子的STEP 7-Micro/WIN SMART也自带仿真。强烈建议初学者先用仿真软件跑通,避免接线错误导致设备问题。
  2. 软件

    • 根据你的PLC品牌安装对应的编程软件。本文以三菱GX Works2为例进行演示,因为其梯形图直观,仿真器易用。逻辑本身是通用的。
  3. 核心元件认知(就这几个,记牢)

    • X:输入继电器。对应物理按钮、传感器信号。X0就代表接在PLC第0个输入端子上的按钮。
    • Y:输出继电器。对应物理接触器、指示灯。Y0就代表从PLC第0个输出端子输出的信号。
    • T:定时器。用于计时。T0 K10表示定时器T0,设定时间为10(单位可能是100ms或1s,看PLC型号,常用100ms)。
    • 常开触点-||-。信号通了,这个触点就“闭合”。
    • 常闭触点-|/|-。信号通了,这个触点就“断开”。
    • 线圈-( )-。表示输出。前面的逻辑通了,这个线圈就“得电”。

2.2 案例的物理接线想象(非常重要!)

即使你用仿真,也要在脑子里接好线:

  • 电机启停:启动按钮(常开)接X0,停止按钮(常闭)接X1。输出Y0接一个接触器,控制电机主回路。
  • 闪烁灯:一个常开按钮接X2作为总开关。输出Y1接一个指示灯。

注意:实际停止按钮通常用常闭触点接入PLC,这样按钮线断了,PLC也会认为停止信号有效,更安全。在程序里,我们用常闭触点X1来编程。

3. 案例一:电机启停控制——深入理解“自锁”

这个案例的目标是:按下启动按钮X0,电机Y0运行;松开X0,电机保持运行;按下停止按钮X1,电机停止。

3.1 梯形图程序与逐行解析

我们直接在GX Works2里编写以下梯形图:

X0 X1 Y0 |--||------|/|------( )--| // 网络1:启动与自锁 Y0 | |--||-----------------| END // 程序结束

逐行拆解,为什么这么写:

  1. 第一行逻辑(启动与自锁回路)

    • X0(常开):启动按钮。按下时,X0状态为ON(触点闭合)。
    • X1(常闭):停止按钮。注意这里是常闭。未按下时,X1状态为ON(触点闭合);按下时,X1状态为OFF(触点断开)。
    • Y0(线圈):电机输出。
    • 当按下X0,当前提是X1没被按下(常闭闭合),电流(能流)从左母线流经X0X1,到达Y0线圈,Y0得电输出。
    • 关键来了Y0得电的同时,与X0并联的Y0常开触点也闭合了。这时,即使你松开了启动按钮X0,电流可以从左母线流经这个已经闭合的Y0触点,再经过X1,继续维持Y0线圈得电。这就是“自锁”(也叫自保持)。
  2. 停止动作

    • 当按下停止按钮X1,其常闭触点断开,整个回路被切断,Y0线圈失电,电机停止。
    • 同时,并联的Y0触点也断开。此时即使你再松开停止按钮X1(触点恢复闭合),因为X0Y0触点都是断开的,回路无法导通,Y0保持停止状态。必须再次按下X0才能启动。

3.2 在仿真中调试与验证

光看懂不行,必须跑起来看。

  1. 在GX Works2中写好程序,转换(F4)后,启动仿真(工具 -> 调试 -> 模拟开始)。
  2. 打开“软元件监视”窗口,强制X0为ON(模拟按下启动按钮)。你应该立刻看到Y0变为ON并保持。
  3. X0强制为OFF(模拟松开按钮),Y0应保持ON。
  4. 强制X1为ON(模拟按下停止按钮),Y0应立即变为OFF。
  5. 再将X1置为OFF,Y0应保持OFF。

常见问题与排查:

  • 现象:按下X0Y0不亮。
    • 排查:首先检查X1的状态。如果你在程序里错误地将停止信号X1写成了常开触点-||-,那么在未按下时它是断开的,整个回路不通。这是新手最常犯的错误:搞混物理接线的常闭按钮与程序中的常闭触点逻辑。
  • 现象:松开X0后,Y0也灭了,无法保持。
    • 排查:100%是自锁线路没接对。检查并联的Y0常开触点是否并在了正确的位置(必须与X0并联),并且其地址是否正确。
  • 现象:停止按钮X1不起作用。
    • 排查:检查X1触点是否用的是常闭-|/|-,并且串联在回路中。如果错用成常开或放错了位置,就无法切断回路。

这个案例务必练到肌肉记忆。它是后续所有复杂逻辑的“原子”。

4. 案例二:闪烁灯(振荡电路)——掌握定时器的接力赛

这个案例的目标是:按下总开关X2,指示灯Y1以1秒亮、1秒灭的周期循环闪烁;断开X2,灯灭。

4.1 梯形图程序与逻辑流分析

这里用到两个定时器T0T1,实现交替计时。程序如下:

X2 T1 |--||------|/|------[T0 K10]--| // 网络1:T0计时回路 X2 T0 |--||------|/|------[T1 K10]--| // 网络2:T1计时回路 X2 T0 T1 |--||------|/|------||------(Y1)--| // 网络3:输出灯逻辑 END

逻辑流分步解析(像看一场接力赛):

  1. 初始状态X2=OFF,所有定时器未触发,Y1=OFF。
  2. 启动X2=ON(总开关打开)。
    • 网络1X2通,T1的常闭触点初始是通的(因为T1未计时完成),所以定时器T0开始计时。设定值K10,假设定时器单位是100ms,则计时时间为10 * 100ms = 1秒。
    • 网络3:此时T0未到时间(常闭通),T1未到时间(常开断),Y1不输出,灯灭。
  3. 第一秒(灯灭期)T0计时进行中...
    • 网络3T0常闭仍通,T1常开仍断,Y1=OFF。
  4. 第一秒到(触发翻转)T0计时1秒到,其状态发生变化:
    • T0线圈得电,其常开触点闭合,常闭触点断开
    • 网络1T0的常闭触点(|/|)断开,T0计时停止。
    • 网络2T0的常开触点(||)闭合,T1开始计时(同样计1秒)。
    • 网络3T0的常闭触点断开,T1的常开触点尚未闭合,Y1状态?别急,看下一步。
  5. 第二秒(灯亮期)T1开始计时。
    • 网络3:此时T0常闭已断,但T1常开已闭合(因为T1线圈一得电,其常开触点瞬间闭合),所以Y1回路导通,灯亮!这里是个关键点:灯亮是由T1的启动瞬间触发的。
  6. 第二秒到(再次翻转)T1计时1秒到。
    • T1线圈得电,其触点动作。
    • 网络2T1的常闭触点断开,T1自己停止计时。
    • 网络1T1的常闭触点断开(但此时T0已停,无影响),更重要的是T1的常闭触点断开后,又为T0的重新启动清除了障碍(因为网络1中串联了T1的常闭)。
    • 网络3T1的常开触点闭合(但T0常闭已断),Y1回路断开,灯灭。
    • 同时,由于网络1中的T1常闭变回闭合,T0又重新开始计时...如此循环,形成振荡。

4.2 仿真调试与参数调整

  1. 在仿真中写入程序,启动。
  2. 强制X2为ON。你应该在监视窗口看到T0T1的当前值交替变化,Y1的状态也跟随T1的得电状态周期性ON/OFF。
  3. 用波形图或时序图功能观察,可以清晰看到Y1输出一个完美的方波。

如何改变闪烁频率?

  • 修改定时器设定值K10。例如改为K5,则亮0.5秒,灭0.5秒。
  • 注意:两个定时器的设定值K要相等,才能形成对称的方波。如果想亮3秒灭1秒,那么T0的设定值应为K30(3秒),T1的设定值应为K10(1秒),同时需要调整网络3的输出逻辑,可能要用T0的常开来驱动Y1

常见问题与排查:

  • 现象X2接通后,灯常亮或不亮,不闪烁。
    • 排查:检查两个定时器的触点是否用错。核心规则:一个定时器的常闭触点去控制另一个定时器的线圈回路,同时用自己的常开触点去触发输出或下一个动作。确保T0T1的常闭触点串联在对方的启动回路中。
  • 现象:闪烁周期不对。
    • 排查:第一,确认定时器单位时间(看PLC手册,FX系列普通定时器T0-T199是100ms单位)。第二,检查设定值K是否正确。第三,在仿真中监视定时器的当前值,看它是否从0累加到设定值。
  • 现象X2断开后,灯还闪了一下才停。
    • 排查:这是因为X2断开时,定时器可能正在计时。需要在T0T1的线圈回路中都串联X2的常开触点(如程序所示),保证主开关能同时切断两个定时器的“电源”。

5. 从案例到实战:避坑指南与扩展思路

把两个案例独立跑通只是第一步。真正理解是能把它们组合、扩展,并应用到实际设备中。

5.1 两个经典“坑”与解决方法

  1. “双线圈输出”冲突

    • 现象:在程序的不同位置,出现了两个或以上驱动同一个Y线圈的指令。PLC扫描周期最后,只会执行最后一个线圈的状态,导致逻辑混乱。
    • 案例:在电机启停程序中,如果你又在另一个地方用X3单独去驱动Y0,就冲突了。
    • 解决:一个输出线圈在程序中只应被驱动一次。复杂的控制逻辑应通过中间继电器(M)进行汇合,最后再统一输出给Y
  2. 定时器/计数器复位问题

    • 现象:定时器计时不准,或计数器计数累加。
    • 案例:在闪烁灯案例中,如果X2断开后,T0T1的当前值没有清零,下次启动时可能从残余值开始计时。
    • 解决:在定时器/计数器线圈前串联一个常闭触点,当需要复位时,用RST指令(三菱)或专门的复位逻辑将其当前值清零。对于简单的启停控制,像我们案例中串联X2,断开即停止计时,通常当前值会归零,但最好养成使用复位指令的习惯。

5.2 如何将案例组合应用?

实际项目往往是多个基础逻辑的组合。例如,一个带延时启动和闪烁报警的电机控制

  1. 主逻辑:采用案例一的电机启停逻辑(X0启动,X1停止,控制Y0电机)。
  2. 延时启动:在启动回路中,加入一个定时器T2。按下启动按钮X0后,先让T2计时(例如5秒),T2计时到,其常开触点才接通电机Y0的线圈。
  3. 故障报警:假设X10是故障信号(常开,故障时接通)。当X10接通,则触发一个类似案例二的闪烁电路(用T3T4),驱动报警灯Y10闪烁,同时还可以驱动蜂鸣器Y11响。
  4. 复位:增加一个报警复位按钮X11,用于复位报警灯和蜂鸣器,并复位闪烁用的定时器。

这样,你就把自锁、定时、振荡三个基本元素用在一个项目里了。

5.3 下一步该练什么?

当你熟练这两个案例后,建议按以下顺序深化练习:

  1. 变式练习:把电机启停的停止按钮X1,从程序中的“常闭”改为“常开”,思考物理接线该如何改变?程序该如何调整?(这是理解“常开/常闭”物理与逻辑对应关系的关键)。
  2. 功能扩展:给电机启停增加一个“点动”功能(X2点动按钮),即按下X2时电机转,松开就停,与自锁逻辑互不干扰。
  3. 参数化:让闪烁灯的亮时间和灭时间可以通过两个数据寄存器(D)来设定,而不是固定的K值。
  4. 仿真到实物:如果条件允许,在真实的PLC和指示灯、按钮上复现这两个案例。你会遇到接线松动、电源问题、COM端接错等仿真中遇不到的问题,这才是真正的经验。

记住,PLC编程是“动手”的学问。眼睛看懂了,手没动过,等于没懂。把这篇文章当作操作手册,打开你的软件,从建立新工程、编写第一行梯形图、进行第一次仿真监视开始,把每一个触点的状态变化、每一条能流的走向都盯明白。这两个案例吃透了,后面学习顺序控制、数据处理、通信等高级功能,才会有一个坚实可靠的逻辑地基。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/8 4:30:13

Unity性能优化利器:ProjectAuditor静态分析工具实战指南

1. 项目概述:为什么我们需要ProjectAuditor?如果你是一个Unity开发者,尤其是在项目规模逐渐变大、团队协作日益复杂的时候,肯定遇到过这样的场景:项目打包时间越来越长,运行时偶尔卡顿,内存占用…

作者头像 李华
网站建设 2026/8/8 3:02:52

MCP协议与无状态核心架构:构建高可扩展AI服务的设计与实践

1. 项目概述:MCP与无状态协议核心的深度解构最近在梳理一些现代应用架构时,MCP(Model Context Protocol)这个词频繁出现在视野里,尤其是在讨论如何让AI助手更深度、更安全地接入各类工具和数据源时。与此同时&#xff…

作者头像 李华
网站建设 2026/8/5 4:25:33

CentOS 7离线安装MySQL 5.7全攻略:从依赖包下载到安全配置

1. 项目概述与核心需求解析 最近在给一个客户部署一套内部管理系统,他们的服务器环境比较特殊,位于一个完全隔离的内网中,无法连接外网。客户要求使用稳定成熟的 CentOS 7 作为操作系统,数据库则指定了 MySQL 5.7 版本。这个“Lin…

作者头像 李华
网站建设 2026/8/8 2:27:46

OpenClaw热潮下的冷思考:智能抓取技术的十大灵魂拷问

1. 项目概述:当“OpenClaw”成为现象级话题最近,我的技术圈和创投圈的朋友们,几乎都在讨论同一个词:OpenClaw。从社交媒体上的刷屏,到技术论坛里的激烈辩论,再到投资机构内部的热门研报,这个词以…

作者头像 李华