跳到正文
Learn-LAD
示例库/按钮与电机控制

按钮与电机控制

按一下按钮自锁,延时 10 秒后电机运行 10 秒自动停止(TON + TP 组合)。

入门 S7-1200 电机控制 TON TP 自锁

导入到我的 TIA 项目

通过 TiaLink 把本示例的 4 个对象导入你当前打开的 TIA Portal 项目。导入前会先预检,默认不覆盖同名对象,导入后不会自动保存。

TiaLink 设置

默认 http://localhost:8080。也可以在本页地址后加 ?tialink= 临时指定。

TiaLink 启动时若设置了 --api-token,这里要填相同的值;只保存在本机浏览器 localStorage,不会上传。

概述

按一下按钮,Tag_1 自锁;延时 10 秒后,电机运行 10 秒,然后自动停止。

程序只有两个网络:Network 1 是自锁,Network 2 用 TON + TP 串联出"等 10 秒、再运行 10 秒"的时序。注意它没有停止按钮,Tag_1 会一直保持,所以电机只运行一次。

信号表

信号 类型 含义 作用
Pushbutton I 启动按钮 按一下置位运行标志
Tag_1 M 运行标志 自锁,作为延时链的使能
Motor 1 Q 电机输出 延时 10 秒后运行 10 秒
IEC_Timer_0_DB TON 启动延时 10 秒 等 10 秒
IEC_Timer_0_DB_1 TP 运行脉冲 10 秒 电机运行时长

工作流程

  1. 按下 Pushbutton → Tag_1 置位并自锁;
  2. Tag_1=1 持续 10 秒 → TON 输出;
  3. TON 输出触发 TP,Motor 1 运行 10 秒后自动停止;
  4. 之后 Tag_1 仍为 1,但 TP 不会再次触发,电机保持停止;要再来一次需要先复位 Tag_1。

MainOB

Network 1 — 按钮自锁

Network 1:Pushbutton、Tag_1、Tag_1

目的:把一次按钮动作记住。

条件 → 动作:按下 Pushbutton → Tag_1 置位;自身触点并联保持,松开后仍为 1。

为什么:标准自锁。因为没有停止条件,Tag_1 一旦置位就不会自动清零。

注意:实际设备必须加停止按钮或急停;这个示例故意省略,便于观察"没有复位会怎样"。

逻辑:Tag_1 = (Pushbutton OR Tag_1)

Network 2 — 延时启动 + 定时运行

Network 2:Tag_1、Motor 1

目的:启动后先等 10 秒,再让电机运行 10 秒。

条件 → 动作:Tag_1=1 持续 10 秒 → TON 输出;TON 的输出触发 TP,TP 输出保持 10 秒 → Motor 1=1。

为什么:TON 负责"等多久",TP 负责"运行多久"。把 TON 的 Q 接到 TP 的 IN,两个定时器一串联就得到"延迟 + 定长运行"。

注意:TP 需要新的上升沿;TON 输出一直保持为 1 时,TP 只动作一次。所以这个程序是"单次"的。

逻辑:Motor 1 = TP(IN = TON(IN = Tag_1, PT = T#10s).Q, PT = T#10s).Q

常见问题

  • 按一次后不能再来一次:Tag_1 没有复位;需要复位 Tag_1(或加停止按钮)才能重新触发。
  • 电机不启动:确认 Tag_1 是否已保持、TON 的 10 秒是否走完。
  • 想改时间:TON 的 PT 改启动延时,TP 的 PT 改运行时长。

变体与扩展

  • 加停止按钮:在 Network 1 的自锁回路上串一个常闭停止触点。
  • 循环运行:用 TP 输出结束后自动复位 Tag_1,再重新置位,就能周期运行。
  • 正反转:复制一套逻辑,用两个按钮和互锁触点控制正/反转接触器。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
PushbuttonBool%I0.0
Motor 1Bool%Q0.0
Tag_1Bool%M0.0
系统实例 DB(2 个)

TIA 自动生成的定时器/计数器实例 DB,导入示例时会一并导入。

IEC_Timer_0_DB 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool
IEC_Timer_0_DB_1 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步