1. 项目背景与核心价值
这个S7-1200+精智HMI广告屏流水灯项目,是我当年从PLC小白进阶路上啃过的经典案例。现在回头看,它完美融合了基础指令练习和HMI组态实操,特别适合刚接触博途(TIA Portal)的新手突破入门瓶颈。
为什么说它经典?首先,流水灯逻辑涵盖了PLC编程最基础的位操作、定时器应用和循环控制思想;其次,通过HMI实现动态控制,又能掌握人机交互设计的基本要领。最关键的是,这个项目麻雀虽小五脏俱全——从硬件组态到软件编程,从变量关联到画面设计,完整走一遍就能建立起自动化项目的整体认知框架。
2. 硬件准备与环境搭建
2.1 设备选型要点
- PLC选择:西门子S7-1214C DC/DC/DC(6ES7 214-1AG40-0XB0)是最经济实惠的练手型号,自带14点数字量输入/10点输出
- HMI选择:精智面板KTP700 Basic(6AV2 123-2GB03-0AX0)性价比突出,7寸屏足够演示需求
- 外围器件:8个LED灯(建议用贴片LED+电阻模块)、24V开关电源、导线若干
注意:若实验室条件有限,可完全使用TIA Portal的PLCSIM Advanced和HMI仿真功能完成项目,但实际硬件操作体验更深刻
2.2 博途软件配置
推荐使用TIA Portal V17或更新版本(当前最新为V18),安装时注意:
- 勾选"SIMATIC STEP 7 Professional"和"SIMATIC WinCC Professional"
- 安装前关闭所有杀毒软件
- 确保系统盘有至少50GB剩余空间
常见安装问题解决方案:
- 安装卡在.NET Framework:手动下载最新版安装后再继续
- 许可证管理器报错:以管理员身份运行Automation License Manager
3. PLC程序设计详解
3.1 硬件组态流程
- 新建项目→选择"Create new project"
- 添加设备:依次添加S7-1200 PLC和精智HMI
- 网络配置:在"Network view"中将HMI和PLC拖拽连接,自动建立PROFINET连接
3.2 流水灯核心逻辑实现
采用移位寄存器思想实现8位流水灯效果,提供三种经典编程方式:
方式1:基本指令版
STL复制// 初始化
L "启动信号"
S "LED1"
// 主循环
L "定时器脉冲"
JCNB loop_end
L "LED8"
R "LED8"
L "LED7"
S "LED8"
...
L "LED1"
S "LED2"
L "启动信号"
R "LED1"
loop_end: NOP 0
方式2:移位指令优化版
SCL复制IF "启动信号" THEN
"LED阵列" := 16#01;
END_IF;
IF "定时器脉冲" THEN
"LED阵列" := SHL("LED阵列",1);
IF "LED阵列" > 16#FF THEN
"LED阵列" := 16#01;
END_IF;
END_IF;
方式3:数组循环版(推荐)
LAD复制// 使用Array[1..8] of Bool存储LED状态
// 定时器每500ms触发一次移位
3.3 关键参数计算
流水灯速度由定时器决定,推荐计算公式:
- 单灯亮灭时间(ms) = 总周期时间 / LED数量
- 例如:想要4秒完成一轮流动(8个灯),则定时器应设为4000/8=500ms
4. HMI组态设计技巧
4.1 画面元素布局
- 添加8个圆形元素作为LED可视化
- 创建Start/Stop按钮
- 添加速度调节IO域(范围200-1000ms)
- 设计流动方向选择开关(左移/右移)
4.2 动态效果实现
通过"动画→外观"功能关联PLC变量:
- 填充颜色关联对应Q点(如Q0.0~Q0.7)
- 添加亮度变化效果增强视觉反馈
高级技巧:
- 使用"全局脚本→C脚本"实现跑马灯文字效果
- 添加背景图片切换功能提升展示效果
5. 调试与问题排查
5.1 常见故障速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| HMI无法连接PLC | IP地址冲突 | 检查PG/PC接口设置 |
| 流水灯不流动 | 定时器未使能 | 监控定时器状态 |
| 个别LED不亮 | 输出点损坏 | 更换输出点测试 |
| 画面元素无反应 | 变量连接错误 | 检查HMI变量连接 |
5.2 仿真调试要点
- 先启动PLCSIM Advanced实例
- 在TIA Portal中配置接口为"PLCSIM Virtual Eth.Adapter"
- HMI仿真时勾选"Start runtime with project"
6. 项目扩展方向
掌握基础实现后,可以尝试以下进阶改造:
- 增加模式选择(单灯流动/双灯追逐/全闪)
- 添加声光同步效果(通过蜂鸣器模块)
- 实现网络远程控制(通过OPC UA)
- 接入真实广告屏(通过RS485转接)
这个项目最宝贵的地方在于,它像乐高积木一样可以无限扩展。当年我就是通过不断给它加新功能,逐步吃透了数据块、函数块、报警管理这些高级特性。建议新手先把基础版本吃透,再循序渐进地尝试扩展功能,这样的学习曲线最平缓也最扎实。
