S7-1200定时指令全3大核心指令实战案例附代码
at 2026.02.20 09:29 ca 设备销售区 pv 1691 by 工控设备哥
S7-1200定时指令全:3大核心指令+实战案例(附代码)
🔧 **工控工程师必看!** 西门子S7-1200定时器编程全攻略,手把手教你用TON/TOF/TONR实现精准控制!
---
一、为什么选择S7-1200定时指令?
在工业自动化场景中,定时器是PLC编程的「灵魂组件」!无论是设备启停控制、流水线节拍同步,还是报警超时提醒,定时指令都能精准实现时间逻辑。而S7-1200作为中小型PLC的标杆机型,其定时指令(TON/TOF/TONR)功能强大且代码简洁,特别适合新手入门和项目实战。
2.jpg)
---
二、S7-1200三大核心定时指令详解
1️⃣ **TON(定时器启动)**
**功能**:实现从启动到触发的定时过程,类似「倒计时器」
**语法**:`TON Txxx, PT, PV`
- **Txxx**:定时器编号(T0-T255)
- **PT**:预置时间(单位:ms)
- **PV**:当前时间(可动态修改)
**代码示例**:
```stl
TON T0, 5000, 0 // 预置5秒,当前时间从0开始
```
**应用场景**:
- 设备启动后延时5秒再接通电源
- 流水线物料到位后延时3秒启动传送带
**注意事项**:
- PT最大值:T0-T199为16383ms,T200-T255为65535ms
- 当PV=0时,定时器立即启动
---
2️⃣ **TOF(定时器停止)**
**功能**:实现从启动到停止的定时过程,类似「计时器」
**语法**:`TOF Txxx, PT, PV`
- **PT**:定时时间(单位:ms)
- **PV**:当前时间(可动态修改)
**代码示例**:
```stl
TOF T1, 3000, 0 // 3秒内未触发则自动停止
```
**应用场景**:
- 超时保护:若传感器在3秒内未检测到信号则切断电源
- 临时延时:仅当特定条件满足时启动5秒延时
**进阶技巧**:
- 可通过`PV`参数动态调整超时时间(如根据温度变化)
- 结合`N`标志位实现循环计数
---
3️⃣ **TONR(累积定时器)**
**功能**:实现无限循环的定时过程,类似「循环计时器」
**语法**:`TONR Txxx, PT, PV`
- **PT**:预置时间(单位:ms)
- **PV**:当前时间(可动态修改)
**代码示例**:
```stl
TONR T2, 2000, 0 // 每2秒触发一次中断
```
**应用场景**:
- 定期数据采集:每5分钟采集一次设备振动数据
- 间歇性控制:每10秒开启一次冷却风扇
**核心特性**:
- 定时器超时后自动复位,无需手动清除
- 可通过`R`标志位控制累积计时
---
.jpg)
三、实战案例:定时指令如何落地?
案例1:电机启停控制(TON+TOF)
**需求**:电机启动后延时3秒启动冷却风扇,运行5秒后自动停止。
**解决方案**:
```stl
// 启动条件
IF StartButton AND NOT FanRunning THEN
TON T0, 3000, 0 // 延时3秒启动风扇
TOF FanStart, 3000, 0 // 超时后停止电机
ENDIF
// 运行控制
IF T0 AND NOT FanRunning THEN
M100.1? // 风扇运行状态
ENDIF
```
**效果**:
- 按下启动按钮后,风扇延迟3秒运行
- 若3秒内未手动停止,风扇持续运行5秒后自动关闭
---
案例2:流水线节拍控制(TONR)
**需求**:每15秒完成一条产品组装,超时则触发报警。
**代码实现**:
```stl
TONR T3, 15000, 0 // 15秒循环中断
IF Overflow THEN // 超时触发
M200.1? // 触发急停信号
ENDIF
```
**调试技巧**:
1. 使用`T3`的当前时间(PV)监控实际节拍
2. 通过`SM0.1`(定时器溢出标志)记录超时次数
---
案例3:报警超时复位(TOF+TONR)
**需求**:故障报警持续10秒后自动复位,若需手动复位则重新计时。
**完整代码**:
```stl
// 自动复位逻辑
TOF T4, 10000, 0 // 10秒超时自动复位
IF ResetButton THEN // 手动复位
TONR T5, 10000, 0 // 重置计时器
ENDIF
```
**注意事项**:
- 避免同时使用TONR和TON导致计时冲突
- 建议通过`SM0.5`(系统时间)校准定时精度
---
四、定时指令常见问题Q&A
Q1:定时器精度是多少?
A:S7-1200定时器精度为1ms,但建议预留10-20ms余量以应对扫描周期波动。
Q2:如何修改定时器预置时间?
A:通过`PV`参数动态调整,例如:
```stl
TON T6, 5000, 3000 // 将预置时间改为3秒
```
1.jpg)
Q3:定时器中断服务程序怎么写?
A:在`OB35`中断块中编写,需注意:
1. 使用` Overflow`标志判断超时
2. 释放中断资源(`N`标志位)
---
五、学习路径推荐
1. **基础阶段**:先掌握TON/TOF的简单应用(建议2天)
2. **进阶阶段**:研究TONR的累积特性(建议3天)
3. **实战阶段**:尝试将定时器与计数器、比较指令结合(建议1周)
**必备工具**:
- 西门子TIA Portal V16(最新版)
- S7-1200编程手册(官方文档)
- 工控仿真软件(如WinPLC)
---
💡 ****:S7-1200定时指令是工控编程的「时间管理大师」,掌握TON/TOF/TONR的配合使用,90%的定时控制场景都能轻松搞定!建议收藏本文,搭配官方案例库反复练习,3个月就能成为定时控制专家!