西门子 S7-200 SMART PLC 编程:转换 / 定时器 / 计数器指令详解 + 实战案例(案例篇)
二、综合实战:自动包装生产线控制
掌握单个指令后,关键是 “组合应用”。以下案例还原工业场景,串联三大类指令,附完整程序逻辑。
1. 控制需求(工业常见场景)
一条产品包装线,需实现:
- 按下启动按钮(I0.0)→传送带(Q0.0)运行;
- 光电传感器(I0.1)每检测 10 个产品→机械手(Q0.1)动作 5 秒(打包 1 箱),期间传送带停止;
- 累计打包 50 箱→生产线自动停止,“完成灯”(Q0.2)亮;
- 任何时候按停止按钮(I0.2)→立即停止。
2. 程序设计思路(分模块拆解)
控制模块 | 核心指令 | 逻辑说明 |
主启停 + 传送带 | 常开 / 常闭触点(启保停电路) | 启动按钮触发,停止按钮或 “完成信号” 触发停止;机械手动作时强制停传送带 |
产品计数(10 个 / 箱) | CTU(C1,PV=10) | 光电传感器每触发 1 次,C1+1;到 10 时触发打包,同时复位 C1 |
打包延时(5 秒) | TON(T37,100ms,PT=50) | C1 计数到 10→T37 启动,5 秒内机械手动作,传送带停止 |
箱数计数(50 箱完成) | CTU(C2,PV=50) | T37 计时结束(打包完成)→C2+1;到 50 时停止生产线,亮完成灯 |
3. 实战程序(梯形图 + 符号表)
第一步:符号表(清晰对应地址与功能)
绝对地址 | 符号名 | 功能说明 |
I0.0 | Start | 启动按钮(常开) |
I0.1 | Sensor | 光电传感器(常开) |
I0.2 | Stop | 停止按钮(常闭) |
Q0.0 | Conveyor | 传送带输出 |
Q0.1 | Arm | 机械手输出 |
Q0.2 | Done_Light | 完成指示灯 |
C1 | Product_Cnt | 产品计数器(10 个 / 箱) |
C2 | Box_Cnt | 箱数计数器(50 箱完成) |
T37 | Pack_Timer | 打包定时器(5 秒) |
第二步:梯形图程序(分网络解释)
// 网络1:主启停控制+传送带运行(启保停电路) // 条件:启动按钮I0.0触发,停止按钮I0.2或箱数完成C2断开时停止;机械手动作T37时传送带停 LD I0.0 O Q0.0 AN I0.2 AN C2 AN T37 = Q0.0 // 网络2:产品计数(每检测1个产品,C1+1;打包时/T37或完成时/C2不计数) LD I0.1 AN T37 AN C2 CTU C1, 10 // PV=10,计数到10时C1位=1 // 网络3:触发打包定时器+复位产品计数器 // C1计数到10→启动T37(5秒),同时复位C1准备下次计数 LD C1 AN C2 TON T37, 50 // 100ms分辨率,50×100ms=5秒 LD C1 R C1, 1 // 复位C1 // 网络4:机械手控制(T37计时期间,机械手动作) LD T37 = Q0.1 // 网络5:箱数计数(每完成1次打包/T37结束,C2+1) LD T37 CTU C2, 50 // PV=50,计数到50时C2位=1 // 网络6:完成指示灯(C2计数到50时亮) LD C2 = Q0.2 |
4. 程序逻辑验证(关键场景)
- 启动运行:按 I0.0→Q0.0(传送带)亮;I0.1 每检测 1 个产品→C1+1;
- 打包触发:C1 到 10→T37 启动(5 秒)→Q0.1(机械手)亮,Q0.0(传送带)灭;同时 C1 复位;
- 箱数累计:T37 计时结束→C2+1,Q0.1 灭,Q0.0 恢复运行;
- 完成停止:C2 到 50→Q0.0 灭,Q0.2 亮;按 I0.2→所有输出立即灭。
三、避坑指南与扩展建议
1. 3 个高频错误及解决方法
- 定时器计时不准:选对分辨率!比如需 1 秒延时,用 T37(100ms)设 PT=10,而非 T32(1ms)设 PT=1000(浪费资源);
- 计数器不计数:检查 “触发端” 是否有上升沿!比如传感器信号持续导通,需加 “P 触发”(如用 I0.1 的上升沿检测);
- 数据运算溢出:整数运算前先转双整数!比如 2000×20=40000(超 16 位整数上限),需先 I_DI 转双整数再相乘。
2. 功能扩展方向
- 手动 / 自动切换:加 I0.3(手动按钮),手动模式下直接控制 Q0.0、Q0.1,自动模式走程序逻辑;
- HMI 监控:通过以太网连接 HMI,显示 C1(当前产品数)、C2(当前箱数)、T37(剩余打包时间);
- 急停连锁:加 I0.4(急停按钮,常闭),串入所有输出回路,按下立即切断所有执行器。
结语
转换、定时器、计数器是 S7-200 SMART 编程的 “基石”—— 转换指令解决 “数据沟通” 问题,定时器控制 “时间节奏”,计数器统计 “事件次数”。本文的包装线案例虽简单,但涵盖了工业控制的核心逻辑:“触发条件→中间逻辑(计数 / 计时)→执行动作”。
如果在指令调试或案例扩展中遇到问题,比如定时器复位异常、计数器数值不更新,欢迎在评论区留言,一起探讨解决方案!也可以分享你的实际应用场景,我们一起拆解编程思路~