news 2026/8/8 8:53:54

PLC编程入门实战:电机启停与闪烁灯案例详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PLC编程入门实战:电机启停与闪烁灯案例详解

大家好,我是杨小飞。很多朋友在学习PLC编程时,总感觉看懂了,但一上手就卡壳,根本原因就是缺少“动手”环节。编程是门实践技术,光看不练永远学不会。今天,我就手把手带大家完成两个最经典、最核心的PLC编程案例,从新建项目到程序下载,一步步拆解,确保你能跟着做出来。无论你是刚入门的新手,还是想巩固基础的同行,这篇文章都能让你收获满满。

我们将完成两个案例:

  1. 电机启停控制:理解最基础的“启-保-停”电路和自锁逻辑,这是所有复杂控制的基础。
  2. 闪烁灯(振荡电路):掌握定时器的核心用法,理解如何让输出信号自动、周期性地通断。

学完这两个案例,你不仅能掌握PLC编程的基本操作流程,更能深刻理解“自锁”和“定时器交替计时”这两个至关重要的编程思想。下面,我们直接进入实战。

1. 背景与核心概念:为什么是这两个案例?

在开始动手前,我们先明确一下这两个案例在PLC学习中的“基石”地位。

PLC(可编程逻辑控制器)本质上是一台为工业环境设计的专用计算机。它通过循环扫描的方式,读取外部输入设备(如按钮、传感器)的状态,根据内部用户编写的程序进行逻辑运算,然后驱动外部输出设备(如接触器、指示灯、电磁阀)动作。学习PLC编程,就是学习如何用“梯形图”这种图形化语言,来描述输入、输出之间的控制逻辑。

案例一:电机启停控制

  • 它是什么?用一个启动按钮让电机运行,一个停止按钮让电机停止。即使松开启动按钮,电机也能保持运行,直到按下停止按钮。
  • 解决什么问题?模拟了工业现场最常见的设备控制需求,比如水泵、风机、传送带的启动与停止。
  • 核心思想:自锁(OR自锁)。这是PLC编程中第一个需要跨越的思维门槛。在继电器电路中,我们通过接触器的辅助触点实现“自保持”。在PLC中,我们则用输出线圈的常开触点并联在启动条件上,来实现同样的功能。理解并熟练运用自锁,是编写任何保持型控制逻辑的前提。

案例二:闪烁灯(振荡电路)

  • 它是什么?让一个指示灯以固定的时间间隔(比如亮1秒、灭1秒)循环闪烁。
  • 解决什么问题?广泛应用于设备运行状态指示、报警闪烁、交通信号灯模拟等场景。它是时序控制的基础。
  • 核心思想:定时器的交替触发与复位。这个案例教你如何让两个定时器互相控制,形成一个闭环的时序逻辑。T0计时到设定值后,触发T1开始计时并改变输出状态;T1计时到后,又复位T0并再次改变输出状态,如此循环往复。掌握这个,你就掌握了用PLC生成任意周期脉冲信号的方法。

接下来,我们将以三菱FX系列PLC及其编程软件GX Works2为例进行演示。虽然品牌和软件界面不同,但核心编程思想(自锁、定时器应用)是通用的,完全适用于西门子、欧姆龙等其他品牌的PLC。

2. 环境准备与版本说明

工欲善其事,必先利其器。在开始编程前,请确保你已准备好以下环境:

  1. PLC硬件(可选,但推荐)

    • 型号:三菱FX3U、FX3G、FX5U等均可。如果没有实物PLC,可以使用软件的“模拟仿真”功能来测试程序,这也是一个极好的学习方式。
    • 重要提示:如果连接真实PLC,请务必在断电状态下进行接线,并由具备电工资质的人员操作,安全第一!
  2. 编程软件

    • 软件:Mitsubishi GX Works2GX Works3(较新PLC使用)。本文以GX Works2为例,因其用户基数大,且基本操作与Works3相似。
    • 版本:GX Works2 Version 1.xxx 均可。软件安装过程请参考网络教程,安装后需要安装对应的PLC型号模拟仿真插件(通常叫MELSOFT NavigatorSimulator)。
  3. 通信线缆(实物连接时需要)

    • 根据你的PLC型号准备编程电缆,如USB-SC09-FX。
  4. 示例项目结构预览

    电机启停闪烁灯项目 ├── 主程序(MAIN) // 我们将在这里编写梯形图 ├── 软元件注释 // 给X、Y、T等点起个易懂的名字 ├── 参数 - PLC参数 // 保持默认即可 └── 模拟仿真结果 // 用于验证程序逻辑

如果你的软件版本或PLC型号与本文略有不同,不用担心,核心步骤和逻辑是完全一致的。我们重点关注编程思路和操作流程。

3. 核心软元件与指令拆解

在画梯形图之前,必须清楚我们要用到的“积木块”——也就是PLC的软元件和基本指令。

3.1 软元件(地址)分配

我们需要给实际的物理设备(按钮、灯)分配一个PLC内部的“地址”。

物理设备PLC软元件说明
启动按钮X0常开按钮,按下时X0状态为ON(1)
停止按钮X1常闭按钮(通常接线为常闭,程序用常开),按下时X1状态为ON(1)*
电机/指示灯1Y0控制电机运行的输出点,Y0=ON则电机运行
闪烁指示灯Y1用于闪烁案例的输出点
定时器1T0定时器,需搭配设定值K(如K10)使用
定时器2T1定时器,需搭配设定值K(如K10)使用

说明:停止按钮在硬件上通常接成常闭触点,这样在正常未按下时,PLC的X1点一直有输入信号(ON),线路是通的。当按下停止按钮,常闭触点断开,X1点输入信号消失(OFF)。在程序中,我们习惯用X1常开触点作为停止条件。这样,未按下时程序中的X1常开触点断开(因为X1实际是ON,但常开触点取的是OFF状态),不影响启动;按下时,X1常开触点闭合(因为X1实际变为OFF,但常开触点取的是ON状态),从而切断电路。这是一种安全设计,即使信号线断了,也会导致电机停止。

3.2 关键指令与逻辑

  1. 常开触点-| |-、常闭触点-|/|-:代表输入或其他软元件的状态。-| |-表示当对应地址为ON时导通;-|/|-则相反,为OFF时导通。
  2. 线圈-( )-:代表输出。当它前面的逻辑运算结果为“导通”时,该线圈被驱动(ON)。
  3. 定时器T
    • 格式:T0 K10T0是定时器编号,K10是设定值(单位通常为100ms,K10即10*100ms=1秒)。
    • 工作原理:当定时器的驱动条件导通时,它开始计时。当前值从0递增,达到设定值K时,定时器的触点动作(常开触点闭合,常闭触点断开)。驱动条件断开时,定时器当前值立即复位为0。
    • 定时器触点T0的线圈计时到后,它的常开触点-|T0|-会闭合,常闭触点-|/T0|-会断开。
  4. 自锁逻辑:这是本课的重点。用输出线圈Y0自己的常开触点,并联在启动按钮X0的后面。这样,一旦Y0X0启动,Y0自身的触点就会代替X0维持通路,即使X0松开了,Y0也保持得电。这就是“自锁”或“自保持”。

理解了这些“积木”,我们就可以开始搭建程序了。

4. 案例一实战:电机启停控制

让我们打开GX Works2,一步步创建这个经典程序。

4.1 创建新工程

  1. 打开GX Works2,点击【工程】→【新建】。
  2. 选择你的PLC系列(如FXCPU)和型号(如FX3U(C))。
  3. 程序语言选择【梯形图】。
  4. 点击“确定”,完成工程创建。

4.2 编写梯形图程序

在导航窗口的“程序”->“MAIN”上双击,打开主编程界面。

现在,输入以下梯形图逻辑:

X0 X1 Y0 |--| |-----|/|-----( ) // 网络1:启动与自锁 | | | Y0 | |-----| |--| X1 |--| |----------------( ) // 网络2:停止优先(单独一行,清晰)

逐行解释:

  • 网络1(启动与自锁)

    • X0:启动按钮的常开触点。按下X0,此触点闭合。
    • X1:停止按钮的常闭触点。未按下时,此触点闭合(因为X1硬件常闭,程序中用常闭触点,则常态导通)。
    • Y0:电机输出线圈。
    • Y0(下方并联的触点):Y0自身的常开触点,用于自锁。
    • 逻辑流程
      1. 按下启动按钮X0,电流路径为:左母线 ->X0(闭合) ->X1(常闭,闭合) -> 驱动Y0线圈。
      2. Y0线圈得电后,其并联的常开触点Y0立即闭合。
      3. 此时,即使松开X0X0触点断开),电流仍可通过已闭合的Y0触点继续流通,保持Y0线圈得电。这就是自锁
      4. 当按下停止按钮X1,其常闭触点X1断开,整个回路被切断,Y0线圈失电,电机停止。同时,自锁触点Y0也断开。
      5. 松开X1后,虽然X1触点恢复闭合,但由于X0Y0触点都是断开的,Y0无法自行启动,除非再次按下X0
  • 网络2(停止显示,可选但推荐)

    • 这一行单独用X1的常开触点驱动一个输出(比如Y2作为停止指示灯),在实际项目中可以更清晰地监控停止信号。在本例中,它主要起演示作用,强调X1作为停止信号的动作。

4.3 程序转换与模拟仿真

  1. 转换程序:编写完梯形图后,按F4键或点击工具栏的【转换/编译】按钮。如果程序没有语法错误,左下角状态栏会显示“转换完毕”。
  2. 启动模拟仿真
    • 点击工具栏上的【模拟开始/停止】按钮(一个电脑显示器图标)。
    • 会弹出“GX Simulator2”窗口,模拟PLC运行。
  3. 调试与测试
    • 在软件菜单中点击【在线】→【调试】→【软元件测试】或使用快捷键Alt+1,打开“软元件测试”窗口。
    • 在这里,你可以强制X0X1等点的ON/OFF状态。
    • 测试步骤: a.强制X0为ON:在软元件测试窗口输入X0,点击【强制ON】。观察Y0是否变为ON(黄色高亮)。 b.强制X0为OFF:点击【强制OFF】。观察Y0是否仍然保持ON(自锁成功)。 c.强制X1为ON:输入X1,点击【强制ON】。观察Y0是否立即变为OFF(自锁被解除)。 d.强制X1为OFF:点击【强制OFF】。观察Y0是否保持OFF(不会自行启动)。

通过以上测试,你就完整验证了电机启停的自锁逻辑。这是你构建更复杂程序的第一个坚实台阶。

5. 案例二实战:闪烁灯(振荡电路)

掌握了自锁,我们来看一个更动态的例子——让灯闪烁起来。这需要用到两个定时器互相配合。

5.1 编写梯形图程序

在刚才的工程里,我们可以在电机启停程序后面继续编写,也可以新建一个程序段。为了清晰,我们在MAIN程序里接着写。

Y0 T0 K10 |--| |---------------| |--------( ) // 网络3:用Y0启动T0计时 T0 T1 K10 |--| |---------------| |--------( ) // 网络4:T0到时启动T1计时 T1 |--| |---------------|/|--------( ) // 网络5:T1到时复位T0,并形成交替 | | | T0 | |-----|/|-----------------| T0 |--| |--------------------( Y1 ) // 网络6:用T0的触点控制闪烁灯Y1

逐行解释:

这个逻辑需要仔细理解,它是环环相扣的:

  • 网络3:我们假设用电机运行信号Y0来启动这个闪烁电路(当然你也可以用M0等内部继电器来独立控制)。当Y0为ON时,定时器T0的线圈开始计时,设定值为K10(1秒)。
  • 网络4:当T0计时到1秒后,它的常开触点T0闭合(注意,这里是T0的触点,不是线圈)。这个闭合的触点会驱动定时器T1的线圈开始计时,设定值也是K10(1秒)。
  • 网络5:这是实现交替和复位的关键。
    • T1计时到1秒后,它的常开触点T1闭合。
    • T1触点闭合后,会驱动一个并联支路。这条支路上有两个触点:
      1. T1自身触点(已闭合)。
      2. T0常闭触点|/T0|。在T0计时过程中,其常闭触点是闭合的;当T0计时到后,其常闭触点会断开。
    • T1计时到的瞬间,T0的常闭触点还是闭合的吗?是的,因为T0计时到后其线圈得电,但它的常闭触点立即断开。所以,T1触点闭合的瞬间,T0的常闭触点已经断开。因此,T1触点的闭合,实际上会通过它自己下方的T0常闭触点,产生一个**复位T0**的信号(更准确地说,是切断了T0的驱动条件)。
    • 同时,T1触点的闭合也驱动了它自己的线圈吗?注意看,T1线圈的驱动条件是其前面的T0常开触点。当T0被复位,T0常开触点断开,T1线圈也就失电了。
    • 这个过程的结果是T1计时到后,立刻导致T0复位(T0线圈失电,当前值清零,T0常开触点断开,常闭触点恢复闭合)。T0触点断开又导致T1线圈失电。于是,两个定时器都复位了。
  • 网络6:我们用T0的常开触点来控制输出Y1(闪烁灯)。T0在计时的1秒内,其触点是断开的,所以Y1为OFF(灯灭)。当T0计时到的瞬间到被T1复位前这个极短的时间(一个扫描周期)内,T0触点是闭合的,Y1为ON(灯亮)。但由于T0很快被复位,Y1又变回OFF。接着,因为Y0一直为ON,T0又重新开始计时...如此循环,Y1就会以T0计时到的那一个瞬间为“亮”,其他时间为“灭”的方式闪烁。但这样亮的时间太短了(一个扫描周期,几毫秒),人眼几乎无法察觉。

等等!这似乎不是我们想要的1秒亮、1秒灭?没错,上面的经典写法中,Y1亮的时间只有一个扫描周期。为了得到1秒亮、1秒灭的效果,我们需要稍微调整一下Y1的控制逻辑:

T1 |--|/|--------------------( Y1 ) // 网络6(修正版):用T1的常闭触点控制Y1

修正版解释

  • 我们用T1常闭触点来控制Y1
  • T1在计时的1秒内,其常闭触点是闭合的,所以Y1为ON(灯亮)。
  • T1计时到后,其常闭触点断开,Y1为OFF(灯灭)。
  • T1计时到后立即复位,其常闭触点又恢复闭合,Y1又变亮...如此循环。
  • 这样一来
    • T0开始计时的1秒内,T1未启动,其常闭触点为ON ->Y1亮。
    • T0计时到,启动T1T1开始计时的1秒内,其常闭触点为OFF ->Y1灭。
    • T1计时到,复位T0和自身。T0重新开始计时,T1常闭恢复ON ->Y1亮。
    • 如此便实现了Y1亮1秒(T0计时时段)、灭1秒(T1计时时段)的闪烁效果。

5.2 模拟仿真测试

  1. 同样按F4转换程序。
  2. 启动模拟仿真。
  3. 打开软元件测试窗口,强制Y0为ON(作为闪烁电路的总开关)。
  4. 观察T0T1的当前值变化,以及Y1的输出状态。你应该能看到T0从0增加到10(100ms为单位),然后T1从0增加到10,Y1的状态随着T1的计时过程在ON和OFF之间交替变化,周期约为2秒(亮1秒+灭1秒)。

恭喜!你已经成功创建了一个标准的闪烁灯(振荡电路)。这是PLC实现延时、脉冲、周期控制的基础模板。

6. 程序整合与优化思考

在实际项目中,我们通常会把这两个功能整合在一起,并考虑更多实际因素。下面是一个整合后的程序框架思路:

// 网络1:电机启停控制 X0 X1 Y0 |--| |-----|/|-----( ) | | | Y0 | |-----| |--| // 网络2:闪烁电路控制(由电机运行信号Y0触发) Y0 T0 K10 |--| |---------------| |--------( ) T0 T1 K10 |--| |---------------| |--------( ) T1 |--| |---------------|/|--------( ) | | | T0 | |-----|/|-----------------| // 网络3:闪烁灯输出 T1 |--|/|--------------------( Y1 ) // Y1作为闪烁指示灯 // 网络4:电机运行指示灯(常亮) Y0 |--| |--------------------( Y2 ) // Y2作为电机运行常亮指示灯

优化与扩展思考

  1. 闪烁频率调整:只需修改T0T1的设定值K。例如K5是0.5秒,K20是2秒。
  2. 占空比调整:让亮和灭的时间不同。例如,亮2秒灭1秒,可以设置T0 K20T1 K10,并用T1的常闭触点控制Y1
  3. 启停控制:可以增加一个开关X2来控制闪烁电路是否工作,只需在T0线圈前串联X2的常开触点即可。
  4. 使用辅助继电器M:在实际工程中,复杂的逻辑控制部分最好使用内部辅助继电器M作为中间变量,而不是直接用输出Y去驱动复杂的定时逻辑,这样程序更清晰,易于调试和维护。

7. 常见问题与排查思路

在学习过程中,你可能会遇到以下问题:

问题现象可能原因排查思路与解决方案
程序转换失败,提示错误1. 梯形图存在语法错误(如母线连接不当)。
2. 软元件编号超出范围。
3. 指令使用不正确。
1. 仔细检查红色错误提示位置。
2. 检查X/Y/T的编号是否在PLC型号允许范围内(如FX3U的X0-X177)。
3. 确保定时器线圈T0后跟的是设定值Kxx,而不是其他。
模拟仿真时,输出Y0不动作1. 停止按钮X1的触点类型用错(该用常闭`/
闪烁灯Y1不闪烁,常亮或常灭1. 定时器T0T1没有被正确驱动。
2. 定时器设定值K为0或太小。
3.Y1的控制触点用错了(该用T1常闭却用了T0常开)。
4. 两个定时器互相复位逻辑有误,导致无法循环。
1. 监视T0T1线圈是否有蓝色通断变化,当前值是否在增加。
2. 检查K值,至少设为K1(0.1秒)以上以便观察。
3. 对照本文【5.1节】的修正版逻辑,检查控制Y1的触点。
4. 重点检查网络5中T1触点与T0常闭触点的并联复位逻辑是否构成通路。
下载到真实PLC后不运行1. PLC未切换到“RUN”模式。
2. PLC硬件有故障或输出端子未接线。
3. 程序中有双线圈输出等逻辑冲突。
4. 电源问题。
1. 将PLC模式开关拨到“RUN”,或通过软件远程设置为RUN。
2. 检查PLC的“ERROR”指示灯是否亮起。检查输出端子接线是否牢固,负载(如指示灯)是否完好。
3. 避免同一Y点在不同网络中被多次驱动(双线圈)。
4. 检查PLC供电电源是否正常。
停止按钮不起作用硬件接线错误,停止按钮接成了常开。检查硬件接线。在程序中,如果硬件接常开,则程序中的X1就应用常开触点,但逻辑上要能切断自锁回路。通常建议硬件接常闭,程序用常开,这样更安全。

8. 最佳实践与工程建议

当你掌握了基本逻辑后,以下建议能帮助你将实验程序提升到工程应用级别:

  1. 规范软元件命名(注释)

    • 永远不要只使用X0Y0这样的地址。在编程软件的“软元件注释”栏中,为每个点添加中文说明,如X0注释为“启动按钮”,Y0注释为“主电机”。
    • 这在你几个月后维护程序,或者其他人阅读你的程序时,至关重要。
  2. 使用内部继电器M进行逻辑隔离

    • 复杂的控制逻辑不要直接堆在输出线圈Y前面。先用内部继电器M0M1等完成所有的逻辑运算,最后再用一个网络M100->(Y0)来驱动输出。
    • 这样做的好处是:输出逻辑清晰,易于修改和调试,也避免了“双线圈”问题。
  3. 定时器/计数器的编号规划

    • 不同类型的定时器(100ms、10ms、1ms)编号范围不同。提前规划好,例如T0-T99用于100ms普通定时,T200-T用于累计定时。
    • 为定时器注释其用途,如T0注释为“电机启动延时”。
  4. 程序结构模块化

    • 即使是小程序,也养成好习惯。可以按功能划分程序段:第一段是初始化,第二段是电机控制,第三段是闪烁发生器,第四段是报警处理等。
    • 在GX Works2中,可以使用“子程序”或“结构化工程”来更好地组织代码。
  5. 重视仿真与调试

    • 在将程序下载到真实设备前,务必使用模拟仿真功能进行充分测试。模拟所有可能的输入情况,包括异常情况,观察输出是否符合预期。
    • 利用【软元件测试】和【监视模式】一步步调试,是理解程序运行过程的最快途径。
  6. 安全第一

    • 涉及真实设备时,断电接线、上电前检查、先点动测试再连续运行,这些安全规程必须遵守。
    • 在程序中,对于急停、安全门等关键安全信号,应使用硬件直接切断安全回路,而不仅仅依赖于PLC程序。

电机启停和闪烁灯是PLC编程的“Hello World”。它们虽然简单,却包含了自锁和时序控制这两大核心思想。通过亲手完成这两个案例,你不仅学会了GX Works2的基本操作,更重要的是建立了用梯形图描述控制逻辑的思维方式。接下来,你可以尝试挑战更复杂的案例,比如小车往返控制、流水线顺序启动、多种工作模式切换等,这些都是在自锁和定时器基础上搭建起来的。记住,多动手、多思考、多调试,是学好PLC的不二法门。

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

使用Cheat Engine修改《造梦西游3》内存实现无限强化石与任务

1. 项目概述:重温经典与探索边界说起《造梦西游3》,很多朋友应该和我一样,瞬间就能回想起那些在4399游戏网站上度过的童年时光。这款以西游记为背景的横版动作角色扮演游戏,凭借其丰富的角色、技能和装备系统,在那个Fl…

作者头像 李华
网站建设 2026/8/5 2:13:28

正则表达式实战指南:从核心原理到非捕获匹配与性能优化

1. 项目概述:从“魔法字符”到精准工具正则表达式,这个名字听起来有点学术,但在我十多年的编程和数据处理生涯里,它一直是我工具箱里最趁手、也最让我又爱又恨的“瑞士军刀”。爱它,是因为它能用一行看似天书的字符&am…

作者头像 李华
网站建设 2026/8/8 2:32:39

商标设计注册通过后多久能拿到证书?

“商标公告已经看到了,证书什么时候能到手?”这是很多商标申请人最关心的问题。本文结合国家知识产权局官方答复和2026年最新政策,帮你算清这笔“时间账”。从提交到拿证:常规流程8-12个月商标注册的完整周期,通常需要…

作者头像 李华
网站建设 2026/8/7 10:30:02

软件架构设计实战指南:从核心目标到主流模式解析

1. 项目概述:从“码农”到“架构师”的思维跃迁“软件架构设计”这六个字,听起来既宏大又抽象,似乎是那些资深技术专家才需要关心的高深话题。但如果你写过超过三个模块需要交互的代码,或者经历过一次因为需求变更导致整个系统推倒…

作者头像 李华
网站建设 2026/8/7 17:48:23

蛋白多因子【抗体芯片】检测技术全解析:原理、优势与应用场景

蛋白多因子检测(以抗体芯片为核心代表)是生命科学领域成熟应用的高通量研究技术,可对单一样本中多种低丰度功能蛋白实现同步定性与定量分析;搭配高通量上样体系,单次实验即可完成多样本、多指标的并行检测,…

作者头像 李华
网站建设 2026/8/8 21:37:33

磷酸化抗体芯片如何赋能信号通路研究,助推高水平成果发表?

蛋白质磷酸化是细胞信号转导的核心调控方式 —— 胞外信号被细胞膜受体识别后,通过胞内激酶的级联放大反应传递调控信息,最终作用于转录因子、启动下游基因表达程序。几乎所有细胞生命活动的稳态维持与应激应答,都依赖磷酸化与去磷酸化的动态…

作者头像 李华