跳到正文
Learn-LAD
示例库/垃圾压缩机循环

垃圾压缩机循环

启动后压缩机运行 20 秒;传感器有效时执行器再动作 10 秒(输出用 %I 地址,疑似笔误)。

进阶 S7-1500 压缩机 循环 定时器

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按下启动开关,压缩机运行 20 秒;如果传感器检测到物料,执行器再动作 10 秒。

程序很短,但有一个值得注意的问题:Compressor 和 Actuator 在点表里是 %I 输入地址,却被当作线圈写入——这在真实 PLC 上通常无法驱动执行机构。示例按原样保留,便于认识这类地址错误。

信号表

信号 类型 含义 作用
Start_system I 启动开关 触发压缩循环
Sensor I 物料/位置传感器 决定执行器是否动作
Compressor I 压缩机(点表地址为 %I) 运行 20 秒
Actuator I 执行器(点表地址为 %I) 传感器有效时动作 10 秒
定时器 TP/TON 20s、20ms、10s 压缩与执行器时序

工作流程

  1. Start_system=1 → Compressor=1,运行 20 秒;
  2. 同时启动一个 20 ms 的 TON;
  3. 如果在这之后 Sensor=1,触发 10 秒 TP → Actuator=1;
  4. 松开启动开关,所有输出停止(当前 TP 会走完脉冲)。

MainOB

Network 1 — 压缩 20 秒

Network 1:Start_system、Compressor

条件 → 动作:Start_system=1 → TP 输出 20 秒,驱动 Compressor。

为什么:用 TP 固定压缩时间,按一次就走完一个压缩周期。

注意:Compressor 是 %I 地址,写入它不会驱动真实输出;实际项目应改成 %Q。

逻辑:Compressor = TP(IN = Start_system, PT = T#20s).Q

Network 2 — 执行器动作

Network 2:Start_system、Sensor、Actuator

条件 → 动作:Start_system=1 且 20 ms 延时到,且 Sensor=1 → 触发 TP → Actuator=1 保持 10 秒。

为什么:20 ms 的 TON 是一个很短的延时,用来错开压缩机和执行器的动作时刻;传感器决定是否真的有物料需要执行。

注意:Actuator 同样是 %I 地址(见上);另外 20 ms 的延时在实际设备上几乎不可见,可能只是原工程的实验参数。

逻辑:Actuator = TP(IN = TON(IN = Start_system, PT = T#20MS).Q AND Sensor, PT = T#10s).Q

常见问题

  • 压缩机/执行器不动作:先检查点表地址——%I 是输入,不能作为输出驱动。
  • 执行器不动作:确认 Sensor=1,并且 20 ms 延时已过。
  • 时间不对:压缩 20 秒、执行器 10 秒,分别改两个 TP 的 PT。

变体与扩展

  • 修正输出地址:把 Compressor/Actuator 改成 %Q,再下载到 PLC 测试。
  • 加安全门联锁:压缩动作前确认防护门关闭。
  • 循环压缩:每完成一次压缩后自动重新触发,直到料位满或手动停止。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Start_systemBool%I0.0
SensorBool%I0.1
CompressorBool%I0.2
ActuatorBool%I0.3
系统实例 DB(3 个)

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
IEC_Timer_0_DB_2 实例 DB(IEC_TIMER)
名称数据类型起始值注释
Static
PTTime
ETTime
INBool
QBool

下一步