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)功能强大且代码简洁,特别适合新手入门和项目实战。

图片 S7-1200定时指令全:3大核心指令+实战案例(附代码)2

---

二、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`标志位控制累积计时

---

图片 S7-1200定时指令全:3大核心指令+实战案例(附代码)

三、实战案例:定时指令如何落地?

案例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秒

```

图片 S7-1200定时指令全:3大核心指令+实战案例(附代码)1

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个月就能成为定时控制专家!

相关阅读