跳到正文
Learn-LAD
示例库/三电机延时启停

三电机延时启停

按钮触发后三台电机分别延时 5/10/15 秒启动,20 秒窗口结束后同时停止。

进阶 S7-1200 多电机 TON TP 顺序启动

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按一下按钮,三台电机分别延时 5 秒、10 秒、15 秒依次启动;20 秒后整个窗口结束,三台电机同时停止。

这个例子是"多定时器错峰启动"的最小模板:一个 TP 做总窗口,三个 TON 做各自的启动延时。

信号表

信号 类型 含义 作用
PB Switch I 启动按钮 触发 20 秒总窗口
Tag_1 M 总窗口 TP 输出,保持 20 秒
Motor 1 Q 电机 1 5 秒后启动
Motor 2 Q 电机 2 10 秒后启动
Motor 3 Q 电机 3 15 秒后启动
IEC_Timer_0_DB TP 总窗口 20 秒 决定运行总时长
IEC_Timer_0_DB_4/5/6 TON 5/10/15 秒 各自的启动延时

工作流程

  1. 按一下 PB Switch → TP 触发,Tag_1=1 保持 20 秒;
  2. 第 5 秒:Motor 1 启动;
  3. 第 10 秒:Motor 2 启动;
  4. 第 15 秒:Motor 3 启动;
  5. 第 20 秒:TP 结束,Tag_1=0,三台电机同时停止。

MainOB

Network 1 — 20 秒总窗口

Network 1:PB Switch、Tag_1

目的:产生一个固定 20 秒的运行窗口。

条件 → 动作:按下 PB Switch 触发 TP → Tag_1 输出 20 秒。

为什么:用 TP 而不是自锁,保证按一次就走完固定时长;时间到自动结束,不需要停止按钮。

注意:TP 需要新的触发沿;窗口结束后要再按一次按钮才会重新开始。

逻辑:Tag_1 = TP(IN = PB Switch, PT = T#20s).Q

Network 2 — 三路延时启动

Network 2:Tag_1、Motor 1、Motor 2、Motor 3

目的:在总窗口内让三台电机错峰启动。

条件 → 动作:Tag_1=1 分别送到三个 TON;5/10/15 秒到,对应的 Motor 输出为 1。

为什么:三个 TON 共用同一个使能 Tag_1,各自计自己的延时,结构对称、容易扩展到更多电机。

注意:三台电机的停止是同时的——只要 20 秒窗口结束,Tag_1=0,三个 TON 同时复位。原工程标题写的是 "Delayed ON and OFF",但实际逻辑只做了延时启动,停止并没有分别延时。

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

Motor 2 = TON(IN = Tag_1, PT = T#10s).Q

Motor 3 = TON(IN = Tag_1, PT = T#15s).Q

常见问题

  • 电机启动顺序不对:改三个 TON 的 PT;数字越小越早启动。
  • 运行时间太短/太长:改总窗口 TP 的 PT(T#20s),要保证它大于最大的启动延时。
  • 想分别延时停止:需要给每台电机单独的停止延时(TOF),当前程序没有。

变体与扩展

  • 分别延时停止:给每台电机加一个 TOF,用各自的停止延时实现"逆序停止"。
  • 加互锁:如果三台电机不能同时运行,可在启动条件中串入其他电机的常闭触点。
  • 更多电机:复制 TON 支路,改延时时间即可;总窗口时间要相应加长。

变量与数据块

变量表:Default tag table

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

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

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

下一步