
简介这是一份面向电气自动化、机电一体化专业学生及PLC初学者的课程设计文档围绕西门子S7-200 PLC在十字路口交通信号灯控制中的应用展开。内容以设计任务书与完整论文形式呈现明确了南北红灯25秒、东西绿灯20秒闪3秒、黄灯2秒等时序要求并覆盖时序状态示意图绘制、控制流程图设计、I/O端口分配与外部接线图、梯形图编程四项核心任务同时包含总体设计框图、电路原理图、功能分析、参数计算、元器件清单与器件介绍等论文模块可作为课程设计或毕业设计的参考模板。资源为单个PDF文件压缩包约1.41MB篇幅不少于4000字图纸以原图呈现。目前已有758人学习下载适合用于理解PLC定时器与顺序控制思路、对照时序逻辑梳理编程步骤并借助其格式规范完成自己的设计报告撰写与排版。1. 路口机柜里真正的麻烦从来不是让灯亮起来一个双向四相位路口东西向绿灯 25 秒、黄灯 3 秒南北向绿灯 20 秒、黄灯 3 秒看上去六只继电器加几个时间继电器就能跑通可只要配时改动一次控制箱里就要重新对线接线端子排跟着一起改。基于 S7-200 PLC 的十字路口交通灯控制系统设计解决的正是这件事把配时从接线变成数据把相位切换从时间继电器互相较劲变成扫描周期里的一段 plc梯形图。它适合三类人做 plc 课程设计 和 plc 毕业设计 的学生需要一台实训台就能演示完整时序刚入门 plc编程 的电气人员用它练 I/O 分配、定时器、状态机和互锁以及小型路口、厂区门口、地下车库出入口这类不需要联网协调控制的小型信号灯改造。后面按相位表怎么定 → 梯形图怎么写 → 联调怎么排错 → 配时怎么在线改这条线走每一步都给到能直接抄的地址表和 STL 代码。2. 十字路口交通灯的相位时序拆解与 S7-200 的 I/O 分配2.1 把路口画成一张四相位时序表画梯形图之前先把路口画成一张表是这类控制系统设计里最省时间的一步。表里只放三样东西相位编号、本相位持续时长、这个时长内六路灯各自的状态。不要把红灯还剩几秒这种倒计时逻辑混进来倒计时是显示层的事控制层只关心相位什么时候切换。相位时长东西红东西黄东西绿南北红南北黄南北绿说明P125 s001100主路放行P23 s010100主路清路口P320 s100001次路放行P43 s100010次路清路口P52 s100100全红间隔可选P5 是全红相位很多教学案例会省略它但实际路口的尾车清空、行人二次过街都靠这两秒。加上它之后任何一个瞬间都不存在两个方向都亮绿灯的合法状态这一点在后面做互锁时会反复用到。四个相位的总周期是 51 秒含 P5 则 53 秒这就是最基础的固定配时方案。51 秒这个数字不要硬编码在程序里后面第 5 章会把它拆成一组可以随时改的参数。2.2 S7-200 的 I/O 分配表六路输出怎么分S7-200 的 CPU 224 有 14 点输入、10 点输出跑一个双向路口绰绰有余。地址分配上有个习惯输入点按控制源排输出点按物理方向排这样对着图纸查线的时候不用来回翻。地址符号名类型说明I0.0Start_Auto输入自动运行启动自锁按钮I0.1Stop_All输入停止常开按钮I0.2Mode_Night输入夜间黄闪模式I0.3Mode_Manual输入手动单步模式I0.4Step_Next输入手动步进按钮上升沿I0.5E_Stop输入急停接常闭触点正常为 1Q0.0EW_Red输出东西向红灯Q0.1EW_Yellow输出东西向黄灯Q0.2EW_Green输出东西向绿灯Q0.3NS_Red输出南北向红灯Q0.4NS_Yellow输出南北向黄灯Q0.5NS_Green输出南北向绿灯急停接常闭是个容易被忽略的细节。接常闭时正常状态下 I0.5 恒为 1程序里用AN I0.5判断一旦急停被按下或者急停回路的线断掉I0.5 变 0程序立刻脱离自动运行。如果接常开断线故障和没按急停在程序里长得一模一样这类失效在 plc 课程设计 的答辩现场经常被问到。在 STEP 7-Micro/WIN 的符号表里把这十几个地址填进去程序里就能直接写符号名阅读成本立刻降下来// STEP 7-Micro/WIN 符号表节选 // 符号名 地址 注释 Start_Auto I0.0 自动运行启动 Stop_All I0.1 停止 Mode_Night I0.2 夜间黄闪 E_Stop I0.5 急停常闭 EW_Green Q0.2 东西向绿灯 NS_Green Q0.5 南北向绿灯 Step_No VW100 当前相位号1~5 Time_P1 VW200 相位1时长100ms 单位VW100 和 VW200 这两个变量是整个程序的骨架VW100 表示现在在第几步VW200 开始的一组 VW 表示每一步走多久。把状态和参数分开是后面能在线改配时的前提。2.3 输出模块选型继电器输出还是晶体管输出这一步经常被跳过然后在现场被灯组坑一次。S7-200 的 CPU 224 常见三种规格DC/DC/DC、AC/DC/RLY、AC/AC/RLY后两种是继电器输出。选哪一种取决于你驱动什么。输出型式负载能力开关频率适用场景继电器输出每点 2 A 左右可直接带 220 V 交流灯组低机械触点有寿命直接驱动 AC220V 交通灯头晶体管输出DC 型每点 0.5 A 左右需外接中间继电器或固态继电器高无触点磨损驱动 LED 灯组、需要做 PWM 调光或高速闪烁灯头是 AC220V 白炽灯或 LED 灯组直接接继电器输出最省事但要有心理准备黄灯每秒闪一次一天就动作几万次触点寿命是按十万次量级算的几个月就得换模块。稳妥做法是继电器输出带中间继电器或者用晶体管输出配固态继电器。这里还牵扯一个常被问到的点——plc 输出晶体管区分 npn 和 pnp晶体管输出是源型PNP输出端对负载供正电压还是漏型NPN输出端把负载拉到 0V决定了固态继电器的输入端怎么接。买 SSR 之前先确认模块型号别等到接线时才发现极性对不上。2.4 为什么先定相位表再动梯形图常见的写法是一个相位一个定时器第一个定时器到点触发第二个第二个到点触发第三个首尾相接成一条链。这个写法在四个相位时还能看加到早高峰/平峰两套配时就开始失控——因为时间链是硬连的改一处时长要顺着往下捋。另一种写法是把相位看成状态机的状态用 VW100 保存当前相位号用比较指令决定哪个灯亮、哪个定时器在计时。改配时只是改 VW200 那组数据逻辑一行不动。这个思路和近几年热词里提到的plc编程状态机写法是同一套东西只不过在交通灯这种小系统上它最大的价值不是优雅而是可验证把时间参数压缩到十分之一几十秒就能跑完一个完整周期全部相位一眼看完。2.4 节把表定死第 3 章就按这张表落代码。3. 在 STEP 7-Micro/WIN 里把交通灯梯形图写出来3.1 定时器时基怎么选100 ms 还是 10 msS7-200 的 TON 定时器按时基分三档编号决定时基100 ms 档的定时器设定值 250 就是 25 秒10 ms 档的设定值 2500 才是 25 秒。记不住编号没有关系在 STEP 7-Micro/WIN 里输入定时器号软件会直接显示它的时基编程时瞄一眼就行别凭记忆写。时基单次最大延时适合的用途100 ms约 3276 s绿灯 25 s、黄灯 3 s 这类秒级相位时长10 ms约 327 s黄灯闪烁的半周期、按键消抖、脉冲展宽1 ms约 32.7 s高速计数、精确定时交通灯基本用不到原则很简单能用粗时基就用粗时基。相位时长是秒级的用 100 ms 时基一个 25 秒的相位误差最多 0.1 秒对路口没有任何影响用 1 ms 时基反而占用了本该留给高速计数器的资源。10 ms 时基留给黄闪——但更省事的做法是用 SM0.5。3.2 时间链写法一个相位一个 TON先给一版最直白的时间链方便对照理解后面再改成状态机版本。这版代码只跑 P1 到 P4直接对应 2.1 的表。// 网络 1启动自锁急停和停止都能打断 LD I0.0 // 启动按钮 O M0.0 // 运行自锁 AN I0.1 // 停止按钮常开 AN I0.5 // 急停常闭输入正常为1 M0.0 // 自动运行标志 // 网络 2P1 东西绿 南北红25 s LD M0.0 AN M0.1 // P1 尚未结束 TON T37, 250 // 100ms × 250 25 s // 网络 3P1 到点后进入 P2同时点亮东西黄 LD T37 M0.1 // 网络 4P2 东西黄 3 s LD M0.1 AN M0.2 TON T38, 30 // 100ms × 30 3 s LD T38 M0.2 // 网络 5输出映射只列东西向南北向同理 LD M0.0 AN M0.1 AN M0.2 Q0.2 // P1 期间东西绿 LD M0.1 AN M0.2 Q0.1 // P2 期间东西黄 LD M0.1 O M0.2 Q0.0 // P2、P3、P4 期间东西红逻辑说明M0.1、M0.2 是相位结束标志由定时器完成位置位再作为下一级定时器的使能条件形成时间链。Q0.0 的三段拼法是这一版的关键——东西红灯不是在 P2 才开始亮而是从 P2 一直亮到 P4 结束用两个相位标志相或就能覆盖不必再单独设一个定时器。参数说明T37 的设定值 250 是100 ms 的个数不是秒数想改成 30 秒就写 300。T38 的 30 对应 3 秒。所有设定值都是整型常数范围 1 到 32767写超了软件会直接报编译错误不会悄悄截断。这版代码的问题也很明显四个相位就是四个定时器加四个标志位再加全红间隔就是五个如果还要做早高峰、平峰两套配时定时器的设定值就得再用选择指令切换网络数量翻倍。所以下一节换成状态机写法。3.3 用步序号 VW100 代替定时器串联状态机写法的核心只有三句话一个变量存当前步号一个比较指令决定本步的灯态一个定时器负责本步的停留时间。所有相位共用同一个定时器 T37因为每一刻只有一个相位在计时。// 网络 10只有自动运行且定时器不在计时的时候才刷新本步的时长 LD M0.0 AW VW100, 1 // 当前是 P1 MOVW VW200, VW210 // 把 P1 时长搬到定时器预设值工作区 LD M0.0 AW VW100, 2 MOVW VW202, VW210 // P2 时长 LD M0.0 AW VW100, 3 MOVW VW204, VW210 LD M0.0 AW VW100, 4 MOVW VW206, VW210 // 网络 11用一个 TON 给当前相位计时 LD M0.0 // 自动运行中 A SM0.0 // 始终接通保证每一扫描周期都执行 TON T37, VW210 // 预设值来自 VW210100ms 单位 // 网络 12计时到点步号加一走完 P4 回到 P1 LD T37 A M0.0 INCW VW100 // 步号 1 LDW VW100, 4 // 超过 4 MOVW 1, VW100 // 回到 P1 // 网络 13灯态输出用步号直接判断以东西向为例 LD M0.0 AW VW100, 1 Q0.2 // P1 东西绿 LD M0.0 AW VW100, 2 Q0.1 // P2 东西黄 LD M0.0 AW VW100, 2 Q0.0 // P2 及以上东西红逻辑说明网络 10 把当前相位的时长从参数区搬到一个统一的工作变量 VW210好处是网络 11 的定时器只有一个预设值来源不用到处改。网络 12 用INCW加步号再加一个比较把 5 拉回 1形成环形步进因为 T37 的使能条件是 M0.0 一直为真步号一变定时器自动重新开始计时TON 在使能保持时不会自己复位必须靠步号切换打断它的计时过程——这一点和第 4 章的一个坑直接相关。参数说明AW是 S7-200 的整数比较指令串联在触点之后使用AW用于从某步开始一直成立的条件比写AW VW100,2或AW VW100,3或AW VW100,4省三个网络。VW200 到 VW206 分别对应 P1 到 P4 的时长单位是 100 ms。3.4 黄闪与夜间模式夜间模式在路口是刚需实现却只要两个网络。SM0.5 是 S7-200 的 1 秒时钟脉冲0.5 秒通、0.5 秒断直接串在输出上就是标准的黄灯闪烁。// 网络 20夜间模式东西、南北同时黄闪 LD I0.2 // 夜间模式开关 A SM0.5 // 1s 时钟脉冲 Q0.1 // 东西黄 Q0.4 // 南北黄 // 网络 21夜间模式下强制熄灭其他四路灯 LD I0.2 R Q0.0, 2 // 复位 Q0.0、Q0.1 R Q0.2, 3 // 复位 Q0.2、Q0.3、Q0.4参数说明R Q0.2, 3是一次复位连续的 3 个位即 Q0.2、Q0.3、Q0.4。这里有一个顺序问题——网络 20 置位 Q0.1网络 21 又把 Q0.1 复位了最终结果取决于扫描顺序黄灯就不会闪。正确做法是复位网络放在置位网络之前或者复位范围避开 Q0.1 和 Q0.4。这种同一个输出点被两个网络以不同方式驱动的问题就是第 4 章要说的双线圈。如果不用 SM0.5想自己控制闪烁频率就用 10 ms 时基的定时器做一个自复位振荡电路把半周期设成 500.5 秒。SM0.5 的优点是零开销、精度够缺点是频率固定调不了。3.5 下载、程序状态与状态表调试写完之后按下面顺序验证比接上灯组以后再猜要快得多。编译确认没有语法错误特别留意定时器编号是否重复使用。用程序状态Program Status在线看梯形图的能流绿色表示当前接通能直接影响看到 Q0.2 该亮的时候是不是真的亮了。打开状态表填入 VW100、VW210、T37 三个变量观察步号是否 1→2→3→4 循环T37 的当前值是否在 0 到设定值之间递增。用状态表的强制功能把 I0.2 置 1验证夜间黄闪是否正常验证完立刻取消强制。断开 PLC 再上电检查步号 VW100 的初值是 1 还是随机值——这一条关系到第 4 章讲的断电恢复。把时间参数临时压缩成十分之一VW200 写 25 而不是 250整个循环 5 秒多一点就能看完比等 51 秒看一个完整周期省事得多。4. 交通灯 PLC 联调最常踩的坑与排查方法4.1 红绿同亮输出互锁必须显式写出来最典型的故障现象是东西绿灯和南北绿灯同时亮。原因往往不是逻辑写错而是输出映射用了或关系。比如东西绿灯的条件写成P1 OR P2、南北绿灯写成P3 OR P4某个相位标志因为定时器没有及时复位而多保持了一个扫描周期两个绿灯就撞在一起。稳妥做法是在程序最后专门加一层硬互锁不依赖前面的相位判断// 网络 30显式互锁——红灯优先级最高 LD Q0.0 // 东西红 O Q0.3 // 南北红 A M0.0 M10.0 // 互锁使能逻辑说明更彻底的写法是把六路灯的最终状态用一个字节映射先算出该字节的值再用 0/1 表查错。但工程上更省事的做法是在每个绿灯输出的串联条件里加AN Q0.3之类的互斥触点让南北红和东西绿在梯形图里物理串联上。多写这几个触点换来的是故障时不会出现两个方向同时放行。4.2 定时器自复位引起的跳相位3.3 节的写法里T37 的使能是M0.0一直为真。如果步号切换的瞬间定时器没有被打断下一个扫描周期它可能已经处于到点状态于是INCW又加一次步号相位直接跳过一步。现象是灯态快速闪动、某个相位几乎看不见。排查办法是打开状态表盯住 VW100正常应该是 1、2、3、4 各停设定时长如果出现跳号就是定时器复位时机不对。修法有两种一是在INCW后面紧跟一条R T37, 1强制清掉完成位二是把定时器的使能条件改成本步有效例如用AW VW100, VW100这种恒假条件切断一个扫描周期——但更干净的做法是给定时器加一个重新触发标志位 M0.2切换步号时置位下一个扫描周期再复位。注意S7-200 的 TON 在使能保持为真的情况下不会自动复位即使完成位置 1 后当前值仍在继续变化这一点和某些别的 plc 品牌不一样。4.3 双线圈与定时器复用双线圈在梯形图里不会报错编译能过下载也能跑只是后面的网络会覆盖前面的结果。交通灯程序里最容易出现双线圈的地方有两个一是输出映射二是复位网络和置位网络抢同一个 Q 点3.4 节提到过。定时器复用是另一种隐性问题。同一个定时器号在两个网络里被调用比如 T37 既做 P1 计时又做黄闪振荡两个网络同时改写它的当前值结果是两边都不准。S7-200 的定时器数量有限复用之前先数一遍四个相位加一个全红加一个夜间振荡六个定时器CPU 224 完全够用没必要省。4.4 断电恢复后出现全绿断电再上电如果 VW100 的值被保持在断电瞬间的某个值上而输出点复位后需要重新计算就存在一个极短的窗口——程序还没扫到输出映射网络Q 点保持上次的通电状态。对于灯组来说这个窗口可能被肉眼看到也可能被后级清路口逻辑放大。处理方式是在首次扫描时把所有输出和状态强制到安全初态用 SM0.1首次扫描接通一个扫描周期做初始化// 网络 40首次扫描初始化全部输出清零步号归 1 LD SM0.1 R Q0.0, 6 // 复位 Q0.0 到 Q0.5 MOVW 1, VW100 // 步号从 P1 开始 MOVW 250, VW200 MOVW 30, VW202 MOVW 200, VW204 MOVW 30, VW206参数说明R Q0.0, 6一次复位连续六个输出位比写六条复位指令短。如果确实需要掉电保持步号就在系统块里把 VW100 所在的 V 区地址设为保持范围但步号保持的意义不大保持配时参数 VW200 到 VW206 才有价值。4.5 输出侧故障速查表灯不亮的时候先分清是程序问题还是回路问题。用状态表把 Q0.2 强制置 1灯亮了就是程序问题灯不亮就是硬件问题。现象可能原因排查动作PLC 上对应输出指示灯亮灯不亮负载回路断、保险丝熔断、灯泡坏用万用表量输出端子对公共端电压输出指示灯不亮程序里条件成立双线圈覆盖、输出点被别处复位用程序状态看最后一个写该点的网络黄灯闪烁频率不对驱动用了继电器输出、触点抖动换固态继电器或用晶体管输出型 CPU某个相位时长明显偏短定时器被复用、时基选错检查该定时器号是否出现在两处核对时基上电瞬间两方向同时亮初始化缺失、扫描顺序问题补 SM0.1 初始化网络输出映射放程序末尾这张表里的前两条占了现场故障的一大半。剩下一小半是电源和接地问题机柜里变频器、接触器一多输出线不屏蔽就容易误动作这一点在做 plc 课程设计 的实训台上不一定碰得到但在真实机柜里很常见。5. 把固定配时做成可在线切换的配时方案表5.1 用 V 存储区装四套配时参数固定配时的最大问题是改一次要动程序。把参数外提之后改配时就是改数据。CPU 224 及以上有数 KB 的 V 存储区放四套配时表绰绰有余。下面是一份典型的参数布局地址含义单位早高峰平峰晚高峰夜间VW200P1 东西绿100 ms350250300—VW202P2 东西黄100 ms303030—VW204P3 南北绿100 ms300200250—VW206P4 南北黄100 ms303030—VW208P5 全红100 ms202020—在 STEP 7-Micro/WIN 里新建数据块 DB1把默认值写进去下载后 V 区就有初值不用再单独写一段初始化程序// 数据块 DB1节选 VW200 350 // 早高峰 P1 时长 VW202 30 // 早高峰 P2 时长 VW204 300 VW206 30 VW208 20参数说明数据块里的值只有在下载时才会写入 V 区运行中用状态表改 VW200 不会被保存到掉电之后除非在系统块里把这段 V 区设为保持范围并配了电池或超级电容。很多 plc 课程设计 的答辩老师会追问这一点改参数为什么重启就没了。5.2 MCGS 组态改参数不改程序想让非编程人员也能调配时接一块触摸屏用 MCGS 组态画面把 VW200 到 VW208 做成输入框再放六个指示灯对应 Q0.0 到 Q0.5。通信上用 S7-200 的 PPI 或 MPI 口波特率 9600 到 187.5 kbps 之间选触摸屏侧选西门子 S7-200 驱动站地址和 PLC 的地址对上就能连通。这种plc 程序 组态画面的结构在很多场合都通用比如热词里出现的基于 plc 的煤矿排水系统控制控制逻辑在 PLC 里、参数和监视在画面上交通灯只是规模最小的一个例子。组态画面里最值得加的不是参数输入框而是一个配方切换按钮组对应 5.1 表里的四列。点一下按钮画面把四个参数一次性写进 VW200 到 VW208PLC 侧在下一次相位切换时自然生效不需要停灯重启。前提是程序里读参数的地方集中在网络 10 那一处而不是散落在各个相位。5.3 时间压缩法做全流程验证配时表改完不要直接上路试。把 VW200 到 VW208 全部按比例缩小 10 倍比如 350 写 35、30 写 3、20 写 2整个循环从 58 秒压到 5.8 秒用状态表盯着 VW100 跑十来个循环确认步号循环正确、没有跳号、没有红绿同亮再恢复真实数值。压缩的时候注意两个边界黄灯 3 秒压到 0.3 秒以后肉眼几乎看不见灯态变化验证时改用状态表看 Q 点而不是看灯全红 2 秒压到 0.2 秒时如果程序里有别的地方也用了同一个定时器会暴露出复用问题——这反而是压缩验证最容易抓到的 bug。压缩验证跑通不等于现场就没问题但它能在三分钟内排除掉九成以上的逻辑错误比接上灯组之后拿秒表掐时间靠谱得多。本文还有配套的精品资源点击获取