☰
S7-1200 PLC课程设计实战:八段LED与交通灯控制及HMI仿真
2026/11/2 21:54:41 网站建设 项目流程

简介:这份资源面向电气工程及其自动化等专业学生与PLC初学者,围绕S7-1200可编程控制器与TIA Portal V13,提供八段LED编程与智能交通红绿灯两项实验的完整实践方案,帮助读者从软件操作、梯形图编程到HMI画面设计逐步建立工程化思路。压缩包内为1个docx文档,约1.62MB,按实验目的、仪器材料、操作步骤、思考题与反思总结组织内容,涵盖变量表设置、定时器与MOVE指令应用、16进制段位码显示、触摸屏按钮与动画关联,以及交通灯手自动切换逻辑和PROFINET连接配置。已有451人学习,适合课程设计、实验报告撰写与仿真验证时对照参考,也可作为课后扩展练习的排错与设计思路来源。

1. 从两个实验看PLC课程设计到底要交付什么

电气工程及其自动化专业的PLC课程设计,最常见的翻车点不是梯形图写不出来,而是交付物不完整:程序能跑,HMI 画面却对不上变量;仿真通过了,变量表里还留着复制粘贴带来的重复定时器编号。这份方案围绕 S7-1200 可编程控制器与 TIA Portal V13 编程环境,把八段LED编码显示和交通红绿灯控制两个实验串成一条完整的交付链路——从 Portal 项目创建、PLC 变量表规划、梯形图逻辑实现,到 KTP700 触摸屏的 HMI 程序设计与仿真验证。适合正在做 PLC 课程设计、实验报告或毕设前期验证的读者直接对照搭建,也适合需要快速复现一套可演示 HMI 交互方案的从业者参考。

2. 总体方案设计:两个实验、一套工程、三层职责

2.1 为什么把八段LED和交通灯放进同一个 Portal 项目

很多人做课程设计习惯一个实验建一个项目,结果变量表、HMI 画面、仿真配置全部重来一遍,时间全耗在重复劳动上。更合理的做法是在同一个 Portal 项目里建两个 FC(FC1 八段LED、FC2 交通灯),共用一套 PLC 硬件组态和 HMI 连接。这样做的好处很直接:硬件组态只配一次,PROFINET 连接只建一次,IP 地址只设一次,后面两个实验的差异全部收敛在 FC 内部和 HMI 画面上。

从交付角度看,一个工程对应一份完整方案,答辩时打开一个项目就能演示两个功能,逻辑清晰,也避免了“两个项目哪个是最终版”这种尴尬。我一般会建议学生把项目命名成带日期和版本的形式,比如PLC_CourseDesign_V1,后续改逻辑时另存为 V2,别在一个工程上反复覆盖,血泪经验。

2.2 硬件组态与网络参数:CPU1214C 与 KTP700 的对接

硬件组态是整个方案的地基。按实验要求,PLC 选 CPU1214DC/DC/DC(订货号 6ES7 214-1AG40-0XB0),HMI 选 KTP700,两者通过 PROFINET 连接。IP 地址规划如下表,这个表建议直接写进实验报告的“实验环境”章节,答辩时被问到网络配置能立刻答上来。

设备型号IP 地址角色
PLCCPU1214DC/DC/DC192.168.0.200PROFINET IO 控制器
HMIKTP700192.168.0.201PROFINET IO 设备
编程电脑—同网段下载与仿真

配置顺序是:先添加 PLC 设备,再添加 HMI 设备,然后在“设备和网络”视图里用 PROFINET 把两者连起来,最后分别设置 IP。注意 HMI 的 IP 必须和 PLC 在同一网段,否则仿真时 HMI 读不到 PLC 变量,画面上的指示灯永远是灰的——这是新手最常踩的坑之一。

2.3 变量表规划:先定地址,再写逻辑

变量表是 PLC 程序和 HMI 程序之间的契约。八段LED实验的输入输出相对简单,交通灯实验的 I/O 点多一些,建议在写任何梯形图之前先把两张变量表定死。交通灯实验的关键地址按实验要求整理如下:

变量名地址类型说明
启动按钮I0.0Bool启动/停止共用触发
手自动切换I0.1Bool低电平自动,高电平手动
南北通行按钮I0.2Bool手动模式南北放行
东西通行按钮I0.3Bool手动模式东西放行
南北红灯Q0.0Bool—
南北黄灯Q0.1Bool—
南北绿灯Q0.2Bool—
东西红灯Q0.3Bool—
东西绿灯Q0.5Bool—

八段LED实验的段码输出通常占一个字节(Q0.0~Q0.7 对应 a~g 加小数点),具体段位映射按实验箱的八段LED编码表来,不同实验箱的 a~g 顺序可能不同,这一点必须对着硬件接线核对,不能照抄网上的段码表。

3. 八段LED程序实现:定时器驱动、MOVE 传段码、HMI 同步显示

3.1 用接通延时定时器做 1 秒节拍

八段LED的核心需求是数字 0~8 每隔 1 秒自动跳转,按下停止按钮循环终止。实现节拍最直接的方式是接通延时定时器(TON),PT 设为T#1S,定时器输出接通时触发计数加一,同时复位定时器自身,形成自循环。梯形图里通常这样组织:

程序段1:启动/停止保持 I0.0(启动) I0.1(停止) M0.0(运行标志) ----| |----+----|/|-----------------( )---- | M0.0 | ----| |----+ 程序段2:1秒节拍 M0.0 TON_1.Q TON_1(IN) ----| |----------|/|----------------(TON) PT: T#1S 程序段3:计数与循环 TON_1.Q MW10(当前数字) ----| |-----------------------------(ADD 1) MW10 >= 8 MW10 ----| |-----------------------------(MOVE 0)

这里的关键设计点有三个。第一,启动和停止用“启动常开并联自锁、停止常闭串联”的标准起保停结构,M0.0 作为运行标志贯穿后续所有程序段,停止时整个节拍链自然断开。第二,TON 的 IN 端串了自身 Q 的常闭触点,定时器到点后自己把自己复位,下一个扫描周期重新计时,形成稳定的 1 秒脉冲,不需要额外的时钟存储器。第三,计数到 8 之后用比较指令复位到 0,实现 0~8 循环,如果需求是 0~9 就把比较值改成 9。

3.2 MOVE 指令与十六进制段码的对应关系

数字算出来之后,要把它翻译成八段LED的段位码。实验要求用 MOVE 指令把当前数字对应的 16 进制段码移动到输出字节。典型做法是建一个段码表(DB 块里的数组或直接用 CASE 逻辑),当前数字作为索引,取出段码后 MOVE 到 QB0。以共阴数码管、a 为最低位为例,0~8 的段码大致如下表,实际值必须以实验箱的编码表为准:

数字点亮段十六进制段码
0a b c d e f16#3F
1b c16#06
2a b d e g16#5B
3a b c d g16#4F
4b c f g16#66
5a c d f g16#6D
6a c d e f g16#7D
7a b c16#07
8a b c d e f g16#7F

程序里用 CASE 或数组索引都行,CASE 的可读性更好,答辩时一眼能看出每个数字对应哪段码:

CASE MW10 OF 0: QB0 := 16#3F; 1: QB0 := 16#06; 2: QB0 := 16#5B; 3: QB0 := 16#4F; 4: QB0 := 16#66; 5: QB0 := 16#6D; 6: QB0 := 16#7D; 7: QB0 := 16#07; 8: QB0 := 16#7F; END_CASE;

思考题里问“不用 16 进制段码还有什么方法”,答案就是把 a~g 每个段当成独立布尔量,用触点组合直接驱动。这种方法逻辑直观但程序量大,数字一多就是灾难,所以工程上还是段码表更实用。课后作业要求用三个八段LED显示学号后三位,思路是每个数码管配一个独立的 FC 或 FB,各自维护自己的当前数字和段码输出字节,三个块并行调用即可,注意输出地址不能重叠。

3.3 HMI 画面:用矩形拼八段LED并做动画关联

HMI 部分是这个实验的加分项。KTP700 画面上没有现成的八段LED控件,做法是用 7 个矩形(加一个小数点矩形共 8 个)按数码管形状摆放,每个矩形的“动画→外观”里关联 PLC 输出字节的对应位,位为 1 时显示亮色(比如红色),为 0 时显示暗色(比如深灰)。这样 PLC 输出什么段码,画面上就显示什么数字,仿真时非常直观。

再添加启动、停止两个按钮,按钮的“事件→按下”里分别置位/复位 M0.0;添加一个 I/O 域用于手动输入数字(实验要求“在触摸屏上输入 6,LED 会输出 6”),I/O 域关联 MW10,模式设为输入/输出。注意输入数字和自动循环会打架,通常的做法是加一个“手动输入”模式开关,或者输入时暂停自动节拍,否则你刚输入 6,下一秒定时器就把它加成了 7,画面闪得没法看。

4. 交通灯控制实现:顺序功能图转梯形图、手自动双模式

4.1 自动模式的时序设计与定时器参数化

交通灯自动模式的本质是一个状态机:南北绿+东西红 → 南北黄+东西红 → 南北红+东西绿 → 南北红+东西黄 → 回到起点。实验要求通行时间和黄灯时间都能在触摸屏上设定,所以定时器的 PT 不能写死,要关联 DB 块里的变量(比如"交通灯_DB".绿灯时间和"交通灯_DB".黄灯时间),HMI 上的 I/O 域直接读写这两个变量。

状态切换用定时器串联实现,每个状态一个 TON,当前状态的定时器到点后置位下一状态、复位当前状态。这种“定时器链”写法比用计数器+比较更贴合顺序功能图,答辩时对着 SFC 图能一段一段讲清楚。参数化之后有个细节要注意:HMI 输入的绿灯时间如果是 0 或负数,定时器 PT 非法,程序行为不可预期,通常的做法是在 DB 里给变量设初值(比如绿 5 秒、黄 2 秒),并在 HMI 的 I/O 域上限制输入范围。

4.2 手动模式的互锁与切换复位

手动模式按实验要求:I0.1 为高电平时进入手动,I0.2 高电平南北通行(南北绿 Q0.2、东西红 Q0.3),I0.3 高电平东西通行(东西绿 Q0.5、南北红 Q0.1)。这里有两个必须处理的点。

第一是互锁。南北通行和东西通行绝不能同时有效,否则四个方向的绿灯一起亮,逻辑上就是事故。梯形图里在南北通行的输出支路串上东西通行按钮的常闭触点,反之亦然,形成硬互锁。第二是切换复位。实验明确要求“手自动切换时复位所有灯输出”,做法是在模式切换的上升沿触发一个复位程序段,把 Q0.0~Q0.5 全部复位,再进入对应模式的逻辑。如果不做这个复位,从自动切手动时残留的灯状态会和手动输出叠加,画面上的灯色对不上,排查起来很费时间。

4.3 HMI 指示灯动画与 IO 域的时间设定

交通灯的 HMI 画面比八段LED简单但元素更多:三个方向的灯用圆形或矩形表示,每个灯的“动画→外观”关联对应 Q 地址,1 亮 0 灭;启动按钮、手自动切换开关、南北/东西通行按钮各关联对应 I 地址;两个 I/O 域分别关联绿灯时间和黄灯时间变量,设为输入/输出模式并限定数值格式。

变量关联时有个容易翻车的点:Portal 的变量选择列表里可能出现名称相近的变量(比如两个都叫“绿灯”但分属不同 DB),选错了画面表现就是“按钮按了没反应”。我一般会养成习惯,关联变量时先看变量的完整路径(DB 名.变量名),而不是只看显示名,选完再在仿真里点一遍确认。这个习惯是从一次答辩演示时按钮失灵、当场翻变量表的经历里换来的。

5. 避坑与排查:五个最容易让仿真跑不起来的点

5.1 复制粘贴导致定时器编号重复

现象:程序编译通过,但仿真时多个程序段的定时器互相干扰,节拍全乱。原因:从一段逻辑复制到另一段时,定时器实例(如 TON_1)被一起复制,多个程序段共用同一个背景数据块,后写的覆盖先写的。解决:删除重复的定时器实例,从右侧指令库重新拖拽新的 TON,让 Portal 自动分配不同编号;或者干脆用多重背景,把定时器放进 FB 的静态变量里,从结构上杜绝重名。这个坑在八段LED实验里几乎人人踩一次。

5.2 HMI 变量关联到错误的 DB 或地址

现象:画面上按钮点了没反应,或者指示灯常亮不灭。原因:HMI 动画关联的变量和 PLC 程序实际使用的变量不是同一个,常见于同名变量分属不同 DB,或者关联到了 M 区而程序写的是 Q 区。解决:在 HMI 变量的属性里核对完整符号路径,仿真时用 PLC 的监控表同时观察程序侧和 HMI 侧的值,两边对不上就说明关联错了。

5.3 手自动切换不复位导致灯状态叠加

现象:从自动切到手动后,某些灯保持自动模式最后的状态,和手动输出冲突。原因:切换时没有清输出,两个模式的逻辑同时作用于同一批 Q 地址。解决:在模式切换的上升沿加复位程序段,把全部灯输出清零后再进入新模式逻辑,这是实验要求里写明的,别省。

5.4 段码表与实验箱接线不匹配

现象:程序逻辑正确,但数码管显示的数字是乱的或某几段不亮。原因:段码表按共阴/共阳或 a~g 顺序假设的,和实验箱实际接线不一致。解决:先写一个只输出单段(比如只点亮 a 段)的测试程序,逐段确认 Q 地址和物理段的对应关系,再反推段码表,别信网上抄来的表。

5.5 仿真环境与下载目标不一致

现象:PLCSIM 仿真正常,下载到真实实验箱后行为不同。原因:仿真时某些 I/O 被强制表覆盖,或者 HMI 仿真连接的是仿真 PLC 而非真实 PLC。解决:下载前清空强制表,确认 HMI 连接指向正确的 PLC 接口;真实设备调试时先用手动模式逐个点灯验证接线,再跑自动时序。

6. 验收与答辩:怎么证明这套方案真的跑通了

验收这件事,我一般按“三层证据链”来准备,答辩时按顺序展示,评委问什么都能接住。

第一层是静态证据:Portal 项目结构截图,包括硬件组态里 PLC 和 HMI 的 PROFINET 连接、IP 地址设置、变量表、FC 块的程序段。这一层证明工程是完整搭起来的,不是拼凑的。第二层是动态证据:PLCSIM 仿真录屏或现场演示,八段LED要演示启动后 0~8 循环、停止后定格、HMI 输入 6 显示 6;交通灯要演示自动模式完整走一个周期、手动模式南北/东西切换、手自动切换时灯全灭复位。第三层是边界证据:故意把绿灯时间设成很短(比如 1 秒)看时序是否仍然正确,故意在自动运行中切手动看复位是否生效——这些边界用例最能体现你是不是真理解了自己的程序。

答辩陈述建议按“需求→设计→实现→验证”四段走,每段控制在两分钟内。需求段讲清两个实验各自的控制要求;设计段重点讲变量表规划和状态机思路,这是体现设计能力的地方;实现段挑一个关键程序段(比如交通灯的定时器链或八段LED的段码 CASE)现场讲逻辑;验证段直接演示,别念稿。常见提问集中在“定时器为什么这样串”“手自动互锁怎么保证”“段码表怎么来的”,提前把这三问答顺,基本就稳了。

还有一个容易被忽略的细节:实验报告里的程序截图要清晰到能看清地址和指令参数,模糊的截图在答辩时等于没有。我习惯在仿真运行状态下截图,这样画面上的实时值也能一并留下,比静态截图有说服力得多。

从那以后我每次带课程设计,都强制要求学生先交变量表和 I/O 分配表,表不过关不许写梯形图——因为绝大多数返工都源于地址没定死就动手,改一个地址牵动半个程序和整个 HMI。这套“先契约、后实现、再验收”的顺序走顺了,八段LED和交通灯这两个实验其实都不难,难的是把交付物做完整。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询