1. 项目概述从“点动”到“联动”的基石如果你刚接触西门子S7-200 SMART PLC面对编程软件里那一排排指令图标感觉像在看天书那太正常了。我刚开始学的时候也觉得这些“基本指令”不就是些开关、线圈吗能有多复杂但真正上手做项目从最简单的电机启停到复杂的流水线联锁控制我才深刻体会到所谓“高级”的PLC程序其骨架和血肉恰恰就是这些最基础的指令搭建起来的。S7-200 SMART PLC的基本指令就是这套控制逻辑的“单词”和“语法”不把它们吃透后续学习功能指令、通信、运动控制就像在沙地上盖楼随时可能崩塌。这个内容就是为你系统拆解这些构成所有PLC程序核心逻辑的基本指令。它面向的是所有工控领域的初学者、从其他品牌PLC比如三菱、欧姆龙转过来的工程师或者那些虽然会用但想深究其底层逻辑的从业者。我们将不局限于手册上的简单描述而是结合真实的电气控制场景比如如何用一个按钮实现“点动自锁”如何用计时器做一个精准的延时报警如何用计数器统计产品数量并自动停机。我会把我在调试中踩过的坑、那些手册上不会写的细节以及如何灵活组合这些指令解决实际问题的思路都揉碎了讲给你听。掌握了它们你就能真正理解PLC程序是如何“思考”和“执行”的而不仅仅是照猫画虎地写几行梯形图。2. 核心逻辑触点、线圈与逻辑“流”在深入每条指令之前我们必须先建立PLC程序执行的核心世界观。这不同于计算机编程的“顺序执行”PLC遵循的是“循环扫描”机制。你可以把它想象成一个不知疲倦的巡查员在每个扫描周期内它会从头到尾、从左到右地读取你的梯形图程序根据输入端子的实际状态通/断来更新程序中所有触点的状态然后根据逻辑运算结果去驱动输出线圈最后将输出线圈的状态一次性更新到实际的输出端子上去。这个过程周而复始。在这个世界里最基本的两个元素就是“触点”和“线圈”。触点代表“条件”它可以是外接的物理按钮、传感器信号在PLC内部的映射我们称为“输入映像寄存器I”也可以是程序内部中间运算的结果内部辅助继电器M、定时器触点T、计数器触点C等。线圈代表“动作”它最终会驱动一个外部的继电器、接触器、指示灯或者改变一个内部状态位。所有的基本指令都是围绕如何组织“触点”来控制“线圈”而展开的。其核心逻辑是“能流”概念在梯形图中想象有一条“能量流”从左母线电源正极流向右侧。只有当连接到一个线圈的所有路径上触点构成的逻辑条件全部满足即“能流”能够畅通无阻地流到线圈时这个线圈才会被“通电”或置位。理解了这个“能流”模型再看梯形图就会豁然开朗。2.1 位逻辑指令控制世界的“开”与“关”位逻辑指令是构建一切逻辑的基础它直接操作布尔量Bit0或1。S7-200 SMART的位逻辑指令非常丰富但核心可以归纳为以下几类。2.1.1 标准触点与输出指令这是最基础的“开关”逻辑。常开触点LD A O相当于一个常开按钮。当它对应的位状态为“1”时触点闭合“能流”通过。LDLoad用于一个逻辑行的开始AAnd用于串联连接OOr用于并联连接。常闭触点LDN AN ON相当于一个常闭按钮。当它对应的位状态为“0”时触点闭合“能流”通过。N表示取反。这是PLC编程中极易出错的地方一定要根据实际物理设备的常态如停止按钮通常常闭接入来正确选择使用常开还是常闭触点进行编程。输出线圈最直接的赋值操作。当“能流”到达时将对应的输出点Q或内部位M置为“1”“能流”断开时则复位为“0”。它是最简单的“瞬时”动作。实操心得很多新手会混淆物理设备的常开/常闭接法与程序内部触点的常开/常闭使用。一个黄金法则是在程序中尽量使用“正逻辑”思维。即你希望设备动作的条件成立时对应的触点状态应为“1”。例如一个物理接为常闭的停止按钮平时导通按下断开在PLC输入点上按下时得到的是“0”。如果你在程序里用常开触点I0.1去判断停止那么永远判断不到因为按钮没按时I0.10触点不通按下时I0.10触点还是不通。正确的做法是使用常闭触点I0.1这样平时I0.10常闭触点导通允许运行按下时I0.10常闭触点依然导通错了这里是个关键点对于LDN I0.1它检查的是I0.1的值是否为0为0则触点闭合。所以无论按不按只要I0.1是0它就通。这显然不对。真正的关键在于物理常闭按钮接入在PLC输入映像寄存器里常态是1按下瞬间是0。所以程序里应该用常开触点I0.1来检测这个“1”是否变为“0”。记住程序触点类型的选择取决于你希望逻辑在什么条件下导通而不是简单对应物理触点。2.1.2 置位S与复位R指令这是实现“自锁”、“保持”功能的核心比输出线圈更常用。置位指令S当“能流”接通时将指定的位可以是1个位也可以是一段连续的位置为“1”并保持即使“能流”后续断开该位也保持为“1”除非被复位指令清零。复位指令R当“能流”接通时将指定的位或连续位置为“0”并保持。这是实现“启保停”电路的灵魂。一个典型的电机控制逻辑如下启动按钮常开I0.0按下产生一个脉冲“能流”。此能流通过后执行S Q0.0, 1将电机输出Q0.0置位为1并保持电机运行。停止按钮常闭接入程序用常开I0.1按下时执行R Q0.0, 1将Q0.0复位为0电机关闭。这里不需要自锁触点因为S/R指令本身就具有保持功能。但通常我们还会串联热继电器信号I0.2常闭等保护条件。2.1.3 边沿检测指令在实际工程中我们经常需要捕捉一个信号从0到1上升沿或从1到0下降沿的瞬间变化用于只执行一次的动作比如计数、启动一个单次流程。上升沿检测EU在S7-200 SMART的梯形图LAD中它体现为触点上的一个“P”标识。当该触点前的逻辑运算结果从0变为1时它会产生一个宽度为一个扫描周期的脉冲“能流”。下降沿检测ED在LAD中体现为触点上的一个“N”标识。当逻辑结果从1变为0时产生一个单扫描周期脉冲。注意事项边沿检测指令在PLC的一个扫描周期内只有效一次。如果你用在一个持续为1的条件后面它只会在第一个扫描周期产生脉冲之后即使条件一直满足也不会再产生。这是实现“单按钮启停”等功能的关键。另外边沿检测指令要使用内部位M作为存储位来记忆上一个扫描周期的状态以供比较。在编程时软件通常会帮你自动生成这个存储位但你需要知道它的原理。2.1.4 取反与立即指令取反触点NOT将它所在的逻辑路径的“能流”状态取反。前面通它后面就断前面断它后面就通。慎用因为容易让逻辑变得晦涩。立即指令I包括立即输入LDI,AI,OI和立即输出I。它们不经过输入/输出映像寄存器的缓冲直接读取物理输入点或驱动物理输出点。这能减少I/O延迟但会轻微增加扫描周期时间且不能频繁使用。通常用于需要极快响应的关键安全信号但绝大多数普通应用不需要。2.2 定时器指令让PLC拥有“时间感”定时器是自动化中实现延时、定时、脉冲发生等功能的核心。S7-200 SMART提供了三种类型的定时器理解它们的区别至关重要。2.2.1 定时器的工作机理所有定时器都有两个关键要素预设值PT和当前值ET。预设值是你设定的时间目标单位可以是1ms、10ms或100ms当前值是一个从0开始递增的寄存器。当定时器的使能条件满足时当前值开始按时间基增量累加。根据当前值与预设值的关系以及定时器类型会产生不同的输出行为。2.2.2 三种定时器详解类型梯形图符号工作特点典型应用场景TON接通延时定时器TON Txx, PT使能端IN接通后当前值开始增加。当当前值 预设值时定时器位被置位1。使能端断开时定时器位立即复位0当前值清零。电机启动后延时开启风扇报警信号持续一定时间后再确认。TOF断开延时定时器TOF Txx, PT使能端IN接通时定时器位立即置位1当前值清零。当使能端从接通变为断开时当前值开始增加。当当前值 预设值后定时器位才复位0。照明灯在按下关闭按钮后延时熄灭设备停机后润滑泵继续运行一段时间。TONR保持型接通延时定时器TONR Txx, PT使能端接通当前值累加。使能端断开当前值保持不像TON那样清零。下次使能端再接通当前值从保持值继续累加。只有当当前值 预设值时定时器位才置位。定时器位一旦置位只能用复位指令R将其复位同时当前值清零。累计设备的总运行时间需要多次间隔时间累加才能触发的动作。2.2.3 定时器使用中的坑时间基准与预设值范围每个定时器编号如T37都固定了时间基准1ms, 10ms, 100ms。例如T37是100ms定时器。预设值PT是一个整数实际定时时间 PT × 时间基准。T37的PT设为50则定时时间为5秒。务必查阅手册确认编号对应的基准。定时器精度定时器在当前扫描周期结束时更新当前值。如果使能条件在一个扫描周期中间发生变化这个周期内的计时可能不准确。对于精度要求高的短延时考虑使用定时中断。TONR的复位这是最容易忘记的。如果你用TONR做了一个累计运行时间的功能在达到预设值触发动作后一定要记得在某个条件如复位按钮下用R Txx, 1指令将其复位否则它的位将一直为1当前值也不再变化。2.3 计数器指令PLC的“记忆”与“统计”计数器用来累计输入脉冲的次数。S7-200 SMART主要有两种计数器。2.3.1 CTU加计数器逻辑每当加计数输入CU端检测到一个上升沿从0到1计数器的当前值CV就加1。当当前值 预设值PV时计数器位C被置位1。复位输入R端为1时计数器位被复位当前值清零。应用产品数量统计当计数值达到设定值如一箱24瓶时计数器位置1触发装箱或停止信号。2.3.2 CTD减计数器逻辑每当减计数输入CD端检测到一个上升沿当前值CV就减1。当当前值 0时计数器位C被置位。装载输入LD端为1时计数器位被复位同时将预设值PV装载到当前值CV中。应用倒计数应用如预置工位数量每完成一个工位减1减到0时表示所有工位完成。2.3.3 CTUD加/减计数器这是功能最全的计数器拥有CU、CD、R、LD四个输入端。它可以实现加、减计数并在达到上下限时停止计数。常用于需要双向计数的场合如仓库物料进出库管理。实操心得计数器的输入信号必须是脉冲信号。如果你连接的是一个持续为1的信号每个扫描周期它都会检测到上升沿导致当前值飞速增加完全失控。通常我们需要将物理的持续信号如传感器检测到物体通过边沿检测指令EU转换成脉冲再送给计数器的CU端。例如一个光电传感器I0.3检测到产品I0.3会从0变1并保持。如果直接连到CTU CU每个扫描周期都会计数。正确做法是LD I0.3EULD(或A)CTU C0, 24。这样只有产品经过的瞬间计一次数。3. 指令组合与经典电路解析单独理解指令只是第一步真正的功力体现在如何将它们组合起来解决实际控制问题。下面我们分析几个最经典的电路。3.1 经典“启保停”电路的多重实现这是电机控制的基石有多种实现方式体现了不同的编程思想。3.1.1 使用输出线圈自锁这是最教科书式的方法但实际工程中较少直接使用因为它不利于模块化和状态保持。网络1 LD I0.0 // 启动按钮常开 O Q0.0 // 自锁触点 AN I0.1 // 停止按钮常闭接入程序用常开 Q0.0 // 电机输出缺点如果Q0.0在程序别处被复位自锁会失效。且状态无法在PLC断电再上电后保持除非使用有记忆功能的存储区。3.1.2 使用置位/复位指令推荐这是工业中最主流、最清晰的方法。网络1启动 LD I0.0 // 启动按钮 S Q0.0, 1 // 置位电机输出 网络2停止 LD I0.1 // 停止按钮 R Q0.0, 1 // 复位电机输出 网络3过载保护 LD I0.2 // 热继电器常闭信号断开表示过载 R Q0.0, 1 // 过载时复位电机优点逻辑清晰启动、停止、故障条件独立成块互不干扰。状态明确易于维护和调试。3.1.3 使用上升沿与异或逻辑实现“单按钮启停”这是一个经典的逻辑练习题常用于空间受限、只有一个按钮的场合。网络1用中间位存储按钮上升沿 LD I0.0 EU M0.0 // M0.0是一个单扫描周期的脉冲 网络2实现启停切换核心 LD M0.0 A Q0.0 R Q0.0, 1 // 如果当前是运行状态(Q0.01)则复位 LD M0.0 AN Q0.0 S Q0.0, 1 // 如果当前是停止状态(Q0.00)则置位这个逻辑巧妙地利用了Q0.0自身的状态作为判断条件结合按钮脉冲M0.0实现了按一次启动、再按一次停止的功能。理解这个电路对掌握边沿和逻辑组合非常有帮助。3.2 时间控制电路星三角降压启动这是一个结合了定时器的典型电机控制应用。主电路需要三个接触器主接触器、星型接触器、三角型接触器。PLC程序需要控制它们按顺序动作。按下启动按钮主接触器Q0.0和星型接触器Q0.1得电电机星型启动。同时启动一个TON定时器例如T37设为6秒。6秒后定时器位T37置位其常闭触点断开切断星型接触器Q0.1其常开触点闭合接通三角型接触器Q0.2电机转入三角型运行。停止按钮或过载信号可同时切断Q0.0、Q0.1、Q0.2。关键点必须在程序中加入电气互锁和软件互锁。电气上星型和三角型接触器必须有机械互锁或电气互锁触点防止同时吸合短路。软件上在Q0.1和Q0.2的输出逻辑中必须串联对方的常闭触点形成双重保护。网络1启动及主接触器 LD I0.0 //启动 O M0.0 //自锁位 AN I0.1 //停止 AN I0.2 //过载 M0.0 //运行状态保持 Q0.0 //主接触器 网络2星型启动及定时 LD M0.0 AN T37 //定时未到 AN Q0.2 //软件互锁三角型未运行 Q0.1 //星型接触器 TON T37, 60 //100ms基准*606秒 网络3三角型运行 LD M0.0 A T37 //定时到 AN Q0.1 //软件互锁星型已断开 Q0.2 //三角型接触器3.3 计数与联动流水线产品装箱控制假设一条流水线每通过24个产品打包一箱然后暂停5秒等待换箱。光电传感器I0.3检测产品每个产品产生一个脉冲。使用加计数器CTU C0, 24进行计数。当C0的位为1计满24个时触发以下动作置位打包装置动作Q0.3。启动一个5秒的定时器TON T38, 50假设100ms基准。复位计数器C0为下一箱计数做准备注意复位时机可在打包动作开始时或定时结束后。定时器T38到时复位打包装置R Q0.3, 1流水线继续运行。这里涉及了计数器触发定时器定时器控制输出的联动逻辑。需要注意计数器复位的时机如果复位过早可能丢失正在计数的脉冲如果复位过晚可能影响下一箱的起始计数。通常可以在打包动作启动后立即或稍作延时复位计数器。4. 编程实战从梯形图到语句表S7-200 SMART的编程软件STEP 7-Micro/WIN SMART支持梯形图LAD、语句表STL和功能块图FBD。理解LAD与STL的对应关系能加深你对指令执行逻辑的理解。4.1 一个完整的小项目传送带控制控制要求按下启动按钮I0.0传送带电机Q0.0运行。传送带末端有光电传感器I0.1检测物品到达。物品到达后延时2秒推动气缸Q0.1动作将物品推出。气缸动作1秒后自动缩回。按下停止按钮I0.2或急停I0.3所有动作立即停止。梯形图程序实现网络1主启停控制 LD I0.0 //启动 O M10.0 //运行状态自锁 AN I0.2 //停止 AN I0.3 //急停 M10.0 //系统运行标志 网络2传送带控制 LD M10.0 Q0.0 //传送带运行 网络3检测到物品启动延时 LD M10.0 A I0.1 //光电检测到 TON T37, 20 //100ms定时器定时2秒 网络4延时到推出气缸 LD T37 //2秒到 S Q0.1, 1 //推出气缸 TON T38, 10 //启动1秒定时器 网络51秒到缩回气缸并复位流程 LD T38 //1秒到 R Q0.1, 1 //缩回气缸 R T37, 1 //复位2秒定时器重要 R T38, 1 //复位1秒定时器关键点分析M10.0作为系统总使能标志简化了停止和急停逻辑。网络3中TON T37的使能条件是M10.0和I0.1同时成立。这意味着只有系统运行且检测到物品时才计时。网络5中在缩回气缸的同时必须复位T37和T38。如果不复位T37下一次检测到物品时由于T37的位已经是1且当前值已到达预设值将无法再次启动2秒延时对于TON使能端断开才会复位当前值和位。这是一个非常常见的调试陷阱。4.2 程序调试与监控技巧写好程序只是第一步下载到PLC后的调试才是重头戏。STEP 7-Micro/WIN SMART的“程序状态监控”和“状态图表”功能是你的得力助手。4.2.1 程序状态监控在线后点击“监控”按钮梯形图中通路的触点会变蓝线圈得电也会变蓝。这能直观地看到程序的执行流程。对于定时器和计数器你可以看到当前值CV的实时变化。这是排查逻辑错误最直接的方法。4.2.2 状态图表对于需要同时观察或强制修改多个变量I, Q, M, V, T, C等的状态状态图表更高效。你可以添加需要监视的地址并在线查看其当前值。在调试时你可以通过“强制”功能给某个输入点如I0.0强制赋值为1来模拟按钮按下的效果而无需实际去接线和操作物理按钮。但强制功能要慎用特别是输出点强制前务必确认设备处于安全状态。4.2.3 交叉引用在修改大型程序时使用“交叉引用”功能可以快速查找到某个地址如Q0.0在程序的所有使用位置。这对于理清逻辑、避免重复赋值冲突至关重要。5. 常见问题与深度避坑指南在实际项目和教学中我总结了新手最容易踩的以下几个坑这里集中解答。5.1 为什么我的定时器/计数器不工作检查使能条件定时器TON/TOF的IN端计数器CTU的CU端是否确实有从0到1的“能流”用状态监控看一下。检查复位条件TONR和计数器是否被意外复位R端为1CTUD的LD端是否被意外置位扫描周期问题使能条件在一个扫描周期内变化太快可能无法被捕捉。考虑使用边沿检测后的脉冲去触发。地址冲突是否在程序其他地方重复使用了同一个定时器/计数器编号对其进行了操作5.2 双线圈输出问题这是PLC编程的大忌。绝对禁止在程序的多个网络中对同一个输出线圈如Q0.0进行赋值。因为PLC按顺序扫描最后一个网络对Q0.0的赋值结果会覆盖前面的所有结果导致逻辑混乱。解决方法是对于同一个输出设备其控制逻辑集中在一个网络内或者使用中间标志位M进行逻辑整合最后在一个网络里统一输出。5.3 如何实现上电初始化很多设备要求PLC上电后进入一个确定的初始状态如所有气缸缩回电机停止。可以使用SM0.1仅第一个扫描周期为1的特殊存储器位来触发初始化程序段。网络1上电初始化 LD SM0.1 // 上电第一个扫描周期接通 R Q0.0, 10 // 复位Q0.0开始的连续10个输出点 MOVW 0, VW0 // 将0传送到字地址VW0清零数据5.4 急停处理逻辑急停I0.3的处理至关重要必须安全、直接、可靠。通常采用“硬线接入软件冗余”的方式。在编程上急停信号应作为常闭触点串联在关键输出如所有电机、气缸的控制逻辑中或者使用急停信号直接复位所有相关的输出标志位。确保无论程序运行到哪一步急停都能立即使设备进入安全状态。5.5 关于“掉电保持”普通的输出位Q和中间位M在PLC断电后状态会丢失。如果某些状态需要记住如设备运行模式、累计产量中间值需要使用具有掉电保持功能的存储区在S7-200 SMART中通常是V存储区变量存储器。你可以在系统块中设置V区的掉电保持范围。对于需要保持的定时器当前值或计数器当前值可以考虑在每次扫描时将其传送到V区上电后再从V区读回。掌握基本指令就像学会了武功的扎马步和基本拳脚。它们看似简单枯燥但每一个细节都蕴含着PLC工作的核心哲学。我建议你不要满足于让程序“跑起来”而是多问几个“为什么”为什么这里要用常闭触点这个定时器不复位会怎样这个计数器用上升沿和直接用信号有什么区别多动手模拟多利用监控功能观察程序的实际运行过程把这些指令的“脾气”摸透。当你再看到复杂的生产线程序时你会发现它们无非是这些基本指令精妙组合而成的交响乐。打好这个基础后面学习数据操作、流程控制、通信等高级功能时你会感到无比顺畅。