简介这份资源面向电气工程及其自动化等专业学生与PLC初学者围绕西门子S7-1200可编程控制器提供八段LED编程与智能交通红绿灯两个实验的完整实践方案帮助读者掌握TIA Portal V13基本操作、梯形图编程与HMI画面设计。压缩包内为1个docx文档约1.62MB按实验目的、仪器设备、实验步骤、思考题与反思总结组织内容涵盖PLC变量表设置、定时器与MOVE指令应用、16进制段位码显示、触摸屏按钮与动画关联以及交通灯手自动切换逻辑和PROFINET组网配置。文档还记录了定时器编号冲突等排错思路与课后扩展练习便于对照复现实验过程、理解程序每步控制作用。目前已有451人学习适合课程设计参考与仿真验证对照使用。1. 从一张 I/O 地图看 PLC 实验八段 LED 与交通灯到底在练什么很多人第一次打开 TIA Portal 时会被左侧那棵项目树吓住PLC 变量、程序块、监控表、HMI 画面、连接配置一层套一层。但把这两个实验拆开看核心其实只有一句话——把物理 I/O 点映射成有顺序的状态再让人能看见并干预这个状态。八段 LED 练的是「输出编码 定时循环」交通灯练的是「状态机 手自动切换」两者共用同一套 S7-1200 变量表、梯形图、HMI 绑定和仿真验证流程。适合正在做课程设计、准备实验答辩或者复习 PLC 编程基础的人。下面这份梳理按「知识地图 → 模块要点 → 易错点 → 复习清单」展开重点放在变量分配、定时器编号、HMI 变量匹配这些真正会翻车的地方。2. 八段 LED 实验编码表、定时循环与 HMI 动画的完整链路八段 LED 实验看起来只是让数字 0 到 8 循环亮但它把 PLC 编程里最基础的几件事一次性串了起来变量表怎么建、定时器怎么接、MOVE 指令怎么搬数据、HMI 怎么跟 PLC 变量对上。梳理下来会发现这个实验的难点不在梯形图本身而在「段码」和「变量地址」之间的对应关系。2.1 段码表与 PLC 变量表先定地址再画图八段 LED 的每一段对应一个输出点实验里用 a 到 g 七段加小数点通常占 Q0.0 到 Q0.7 这八个连续输出。段码表是整条链路的起点必须先把它写死后面梯形图和 HMI 都依赖它。显示数字abcdefg十六进制段码0111111016#3F1011000016#062110110116#5B3111100116#4F4011001116#665101101116#6D6101111116#7D7111000016#078111111116#7F变量表里要同时出现三类地址输入 I0.0 启动、I0.1 停止输出 Q0.0 到 Q0.7 对应段中间变量 MW10 或 DB 块里的一个字用来存当前段码。注意段码表里的「1」代表该段点亮实际接线如果是共阳数码管输出为 0 才亮段码要整体取反这一点实验指导书通常不强调但接上实物就会暴露。2.2 定时器 MOVE让数字自己走起来循环显示的核心是一个接通延时定时器 TONPT 设成 1s定时到就自复位同时把计数变量加一再用 MOVE 把对应段码搬到输出字节。梯形图里常见写法是启动按钮置位一个运行标志 M0.0M0.0 常开触点串 TON 的 INTON 的 Q 输出接一个上升沿上升沿触发 INC 指令让 MW10 从 0 加到 8超过 8 就复位回 0最后用 MOVE 把段码表里第 MW10 项送到 QB0。# 变量表关键条目TIA Portal 变量表视图 启动按钮 I0.0 Bool 停止按钮 I0.1 Bool 运行标志 M0.0 Bool 当前数字 MW10 Int 段码输出 QB0 Byte 定时器 TON IEC_TIMER这里最容易忽略的是定时器的自复位TON 的 Q 只保持一个扫描周期如果不做自锁或上升沿处理数字会跳得比预期快。另一个坑是 MOVE 的数据类型段码是十六进制字节MOVE 的源和目标都必须是 Byte写成 Int 会在监控表里看到数值对但输出不对。2.3 HMI 八段图形用矩形拼出来再绑变量HMI 部分不是直接放一个数码管控件而是用七个矩形拼成八段形状每个矩形的「背景色」动画关联一个 PLC 布尔变量。实验里要求添加静态文本和按钮按钮事件里写「置位/复位」对应 PLC 变量。梳理下来HMI 动画的关键是变量匹配矩形 1 关联 Q0.0矩形 2 关联 Q0.1依次排下去颜色动画设成「变量为 1 时亮、为 0 时灭」。提示HMI 变量表里会出现两个名字很像的变量一个是 PLC 变量表里的绝对地址一个是 HMI 内部连接生成的符号名选错不会报错但仿真时画面不动。判断方法是看变量后面的连接名称是否指向 S7-1200 的 PROFINET 连接。2.4 仿真验证先看 PLC 再看 HMI仿真顺序有讲究先编译 PLC 程序、下载到 PLCSIM确认 QB0 按 1s 节奏变化再启动 HMI 仿真确认画面上的段跟着亮。如果先开 HMI 仿真连接还没建立画面会一直停在初始状态容易误判成程序错。验证时在监控表里强制 MW10 从 0 走到 8观察 QB0 是否依次等于 16#3F、16#06……16#7F这一步能快速定位是段码表错还是定时器没走。3. 交通灯实验状态切换、手自动逻辑与 HMI 时间设定的复习重点交通灯实验比八段 LED 多了一层「状态」概念南北通行、南北黄灯、东西通行、东西黄灯四个状态按时间轮转还要支持手动强制切换。这个实验真正考的是顺序功能图怎么落到梯形图以及 HMI 上设定的时间怎么传进 PLC 定时器。3.1 状态划分与输出分配先画时序再写程序实验里南北方向和东西方向的灯分别占 Q0.0 到 Q0.5典型分配是南北红 Q0.0、南北黄 Q0.1、南北绿 Q0.2、东西红 Q0.3、东西黄 Q0.4、东西绿 Q0.5。自动运行时状态顺序是初始化全灭 → 南北绿 东西红 → 南北黄 东西红 → 南北红 东西绿 → 南北红 东西黄 → 回到南北绿。每个状态停留时间由 HMI 上的「通行时间」和「黄灯时间」决定。状态南北东西持续时间来源S0 初始化全灭全灭一个扫描周期S1 南北通行绿 Q0.2红 Q0.3HMI 通行时间S2 南北黄灯黄 Q0.1红 Q0.3HMI 黄灯时间S3 东西通行红 Q0.0绿 Q0.5HMI 通行时间S4 东西黄灯红 Q0.0黄 Q0.4HMI 黄灯时间写程序时建议用 DB 块存状态字比如「交通灯_DB」里放 CurrentState、GreenTime、YellowTime 三个变量FC 块里用比较指令判断当前状态再驱动对应输出。这样比一堆自锁互锁的触点串并联清楚得多也方便后面加手动逻辑。3.2 手自动切换一个选择开关决定两条路径实验里 I0.1 是手自动选择低电平自动、高电平手动。自动路径按上面的状态机走手动路径下I0.2 为高则南北绿 东西红I0.3 为高则东西绿 南北红。两条路径的输出必须互斥否则会出现两个方向同时绿的危险状态。-- 自动状态切换的伪逻辑梯形图比较指令的等价表达 IF 启动 AND NOT 手自动 THEN CASE 交通灯_DB.CurrentState OF 1: 南北绿 : TRUE; 东西红 : TRUE; 2: 南北黄 : TRUE; 东西红 : TRUE; 3: 南北红 : TRUE; 东西绿 : TRUE; 4: 南北红 : TRUE; 东西黄 : TRUE; END_CASE; END_IF;手自动切换的瞬间要复位所有灯输出实验步骤里专门写了这一条。实际写的时候把「手自动」的上升沿和下降沿各接一个复位指令清掉 Q0.0 到 Q0.5再进入对应模式能避免切换时残留上一个状态的灯。3.3 HMI 时间输入与变量绑定IO 域不是文本框HMI 上设定通行时间和黄灯时间用的是「IO 域」而不是普通文本关联变量选 DB 块里的 GreenTime 和 YellowTime模式设为输入输出格式选十进制。PLC 侧定时器的 PT 直接引用这两个变量改画面上的数字定时器时间立刻变。这里有个细节IO 域的值类型要和 DB 变量一致DB 里是 Time 类型就选 Time 格式是 Int 就按秒换算混用会导致写入失败但不报错。3.4 仿真与强制表用监控表验证状态跳转交通灯仿真时监控表里同时盯 CurrentState、Q0.0 到 Q0.5 和两个时间变量。启动后看状态字是否按 1→2→3→4 循环每个状态停留时间是否等于 HMI 设定值。手动模式下拨 I0.1 为高再分别置位 I0.2、I0.3确认输出互斥。强制表里改 GreenTime 从 5s 到 3s观察状态切换是否立即变快这一步能验证 HMI 变量是否真的写进了 DB。4. 易错点定时器编号、变量匹配与段码取反这三处最容易翻车4.1 易漏点复制粘贴导致定时器编号重复为什么漏写八段 LED 循环或者交通灯多状态时很多人图快直接复制上一段梯形图改触点定时器的背景数据块编号没改编译能过但运行时几个定时器共用一个实例时间全乱。实验反思里就提到过这个血泪经验——编译时发现每段代码用了同一个定时器只能全部删掉重新从右侧库拉取。怎么补每放一个 TON立刻在属性里确认背景 DB 编号唯一或者在 DB 块里手动建多个 IEC_TIMER 实例梯形图上引用不同实例。写完一段就编译一次别等全部画完再编。4.2 易漏点HMI 变量选到同名但不同连接的条目为什么漏HMI 变量表里既有 PLC 变量表同步过来的绝对地址也有手动建的内部变量名字可能都叫「启动」。选错时画面按钮按下去没反应仿真也不报错排查起来像玄学。怎么补建 HMI 变量时统一从「PLC 变量」筛选视图里拖不手敲名字每个变量后面确认连接名是那条 PROFINET 连接。仿真前在 HMI 变量表里看「质量」列显示良好才说明连上了。4.3 易错点共阳/共阴段码没取反为什么漏段码表按「1 点亮」写仿真时 PLCSIM 上看 QB0 数值完全正确但接实物数码管不亮或显示乱码因为实验箱上的数码管是共阳接法输出 0 才亮。怎么补先确认实验箱数码管的公共端接法共阳就把段码表整体按位取反再写入或者在输出前加一个 INV 指令。仿真阶段可以用监控表看 QB0实物阶段必须看灯两者不能互相替代。4.4 易错点手自动切换不复位输出为什么漏自动状态停在南北绿时拨到手动如果只写手动路径的置位逻辑南北绿不会被清掉再置位东西绿就出现双向绿。实验步骤里写了「手自动切换时复位所有灯输出」但写程序时容易只写切换后的赋值。怎么补把「手自动」选择开关的上升沿和下降沿各接一个复位网络清 Q0.0 到 Q0.5再让手动或自动逻辑接管。仿真时专门在绿灯状态拨开关看六个输出是否全灭后再亮。4.5 易错点MOVE 指令的数据类型不匹配为什么漏段码是十六进制字节有人把目标写成 MW10字MOVE 过去高字节补零低字节对但监控表显示的值和段码表对不上误以为段码错。怎么补MOVE 的源和目标都定义成 Byte输出直接写 QB0中间变量用 MB 而不是 MW。监控表里按十六进制格式看和段码表逐项对。5. 复习清单从变量表到仿真验收的查漏补缺顺序复习这两个实验不建议从头重画梯形图按「变量表 → 程序块 → HMI 绑定 → 仿真验收」四步走一遍哪里卡住就补哪里。下面这张清单可以直接对着 TIA Portal 项目逐项打勾。检查项合格标准常见问题PLC 变量表输入输出地址连续、无重叠I0.0 和 I0.1 被重复定义段码表0 到 8 九项齐全、进制正确共阳未取反定时器实例每个 TON 背景 DB 唯一复制粘贴编号重复状态字DB 块里有 CurrentState用 M 区散落标志位HMI 变量全部来自 PLC 连接选到内部变量IO 域格式与 DB 变量类型一致Time 和 Int 混用手自动复位切换沿触发全输出复位只写赋值不写复位仿真顺序先 PLC 后 HMI先开 HMI 误判连接具体操作上先打开变量表按地址排序看有没有两个变量抢同一个 Q 点再打开每个 FC 块逐个定时器点属性看背景 DB 编号然后到 HMI 变量表按连接名筛选把不是 PLC 连接的条目清掉最后启动 PLCSIM用监控表强制关键变量走一遍完整流程。交通灯重点看状态字跳转和手自动互斥八段 LED 重点看 QB0 是否按 1s 节奏变化、HMI 输入数字 6 时输出是否等于 16#7D。我自己的习惯是每次新建项目先把变量表和段码表写在纸上画完梯形图先编译再仿真仿真通过才接实物。有一次偷懒跳过监控表直接接数码管结果共阳没取反对着不亮的管子查了半小时才想起段码这回事。从那以后每次做 PLC 实验变量表、定时器编号、HMI 连接这三项都强制走一遍检查清单再进仿真。希望这份梳理帮到你复习时少走几段弯路。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
游戏数值策划核心:战斗节奏与属性价值推导 简介:面向游戏数值策划与战斗系统设计者的入门到进阶学习资料,围绕网络游戏数值体系展开,重点解决属性价值、战斗节奏与公式推导等核心问题。内容从公式与模型的基本逻辑切入,依次讲解模型设定、模型特征参数与公式简介࿰… · 2026/11/2 16:10:40
GPT分区表深度解析:从原理到实战,彻底掌握GUID分区与数据恢复 1. 为什么我劝你彻底搞懂GPT分区表硬盘分区表这个东西,平时没人会主动去想它,直到某天你换了大容量硬盘、系统死活认不全容量,或者装系统时引导程序莫名其妙报错,才会意识到它的存在。GPT,全称GUID Partition Table&am… · 2026/11/2 16:10:40
华为ICT工程师认证全攻略:从报考到职业发展 1. 华为ICT工程师认证概述 华为ICT工程师认证是华为技术有限公司推出的专业技术认证体系,主要面向信息通信技术(ICT)领域的从业人员。作为行业公认的技术能力凭证,该认证已经成为众多企业招聘和晋升的重要参考标准。 认证体系采用三级进阶模式ÿ… · 2026/11/2 16:10:40
Rust 构建 Nostr 中继:buzz 项目架构与工程实践 1. 从 "buzz" 这个名字说起:它到底想解决什么问题第一次看到 "buzz" 这个项目名,加上关键词里蹦出来的 Nostr、relay、Rust、workspace,我大概能猜到这是个什么路数——一个用 Rust 写的 Nostr 中继(relay&am… · 2026/11/3 6:29:27
电赛H题用电器识别:多维特征与残差法破解小电流难题 简介:这份PDF面向备战全国大学生电子设计竞赛的本科组选手与指导教师,聚焦2021年H题「用电器分析识别装置」的完整赛题原文,帮助读者准确掌握命题意图与评分导向。压缩包内仅含1个PDF文件,约315KB,篇幅精炼,… · 2026/11/3 6:29:27
嵌入式软件设计说明书模板:结构、填写要点与避坑指南 简介:面向嵌入式系统开发初学者与课程设计、毕业设计参与者,这份软件设计说明书模板提供了一套可直接套用的文档框架,帮助解决设计文档结构混乱、章节缺失、格式不统一的问题。压缩包共1个文件,为doc格式,约64KB&#… · 2026/11/3 6:29:27
无线网络性能指标解析与优化实践 1. 无线网络性能指标全景解读当手机信号栏显示满格却刷不出内容时,我们常抱怨"信号差",但专业工程师会查看RSRP、RSRQ、RSSI、SNR这一组关键指标。这些参数就像无线网络的"体检报告",每个指标都揭示着不同维度的连接质量… · 2026/11/3 6:29:27
reverse-skill:从代码到流程的逆向拆解实战指南 1. 从“reverse-skill”这个标题说起:它到底在指什么第一次看到“reverse-skill”这个词,我脑子里蹦出来的第一反应是“逆向技能”——不是游戏里那种“反弹伤害”的技能,而是指把一项已经封装好的能力、流程或者成品,反向拆解回它… · 2026/11/3 6:29:27
从零搭建可复用的buzz传播系统:社交货币与情绪触发实战指南 1. 从“buzz”这个词说起:一个被低估的传播引擎“buzz”这个词,做市场的人听到会眼睛一亮,做产品的人听到会心头一紧,做技术的人听到可能第一反应是“又来了一个造词运动”。但不管你怎么看它,这个词背后指向的东西是真… · 2026/11/3 6:28:26
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46