跳到正文
Learn-LAD
示例库/喷漆房控制

喷漆房控制

启动且传感器有效:喷漆 10 秒 → 烘干 10 秒 → 20 秒后冲压 2 秒。

进阶 S7-1200 喷漆 定时器 顺序控制

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

启动按钮按下且传感器有效时,喷漆房按顺序执行:喷漆 10 秒 → 烘干 10 秒 → 20 秒后冲压 2 秒。

程序用一个网络把三个执行器排成时间线,是"喷漆 + 烘干 + 后处理"的顺序控制示例。

信号表

信号 类型 含义 作用
Start_Button I 启动按钮 按住时流程有效
Sensor I 工件/位置传感器 确认工件到位
Spray_Button Q 喷漆输出 0~10 秒
Drying_Fan Q 烘干风机 10~20 秒
Puncher Q 冲压执行器 20~22 秒
定时器 TP/TON 10s/10s/20s/2s 顺序控制

工作流程

  1. Start_Button=1 且 Sensor=1 → Spray_Button=1,喷漆 10 秒;
  2. 喷漆结束 → Drying_Fan=1,烘干 10 秒(第 10~20 秒);
  3. 第 20 秒 → Puncher=1,冲压 2 秒;
  4. 松开按钮或传感器失效,流程停止(TP 会走完当前脉冲)。

MainOB

Network 1 — 喷漆 → 烘干 → 冲压

Network 1:Start_Button、Sensor、Spray_Button、Spray_Button、Drying_Fan、Puncher

目的:在工件到位后按固定时序完成三个动作。

条件 → 动作:

  • Spray_Button = TP(IN = Start & Sensor, 10s).Q:立即喷漆 10 秒;
  • Drying_Fan = TP(IN = Start & Sensor & NOT Spray_Button, 10s).Q:喷漆结束后烘干 10 秒;
  • Puncher = TP(IN = TON(IN = Start & Sensor, 20s).Q, 2s).Q:第 20 秒冲压 2 秒。

为什么:喷漆和烘干用"前一步结束"串联;冲压用 TON 固定在第 20 秒触发,保证在烘干结束后才动作。

注意:Puncher 的 TON 与喷漆/烘干并行计时,如果喷漆或烘干因条件中断而提前结束,冲压仍可能按原时间点触发——这是原逻辑的特点。

逻辑(节选): Spray_Button = TP(IN = Start_Button AND Sensor, PT = T#10s).Q

Drying_Fan = TP(IN = Start_Button AND Sensor AND NOT Spray_Button, PT = T#10s).Q

Puncher = TP(IN = TON(IN = Start_Button AND Sensor, PT = T#20s).Q, PT = T#2s).Q

常见问题

  • 喷漆不启动:确认启动按钮和传感器是否同时为 1。
  • 烘干预热不动作:烘干条件是"喷漆结束",检查 Spray_Button 的 10 秒是否走完。
  • 冲压时刻不对:冲压由 20 秒的 TON 决定,和喷漆/烘干的时间点相互独立。

变体与扩展

  • 加通风联锁:喷漆前先开排风,喷漆结束后延时关排风。
  • 加安全门:喷漆房的门未关闭时禁止喷漆。
  • 配方:把各段 PT 做成参数,适配不同工件。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Start_ButtonBool%I0.0
SensorBool%I0.1
Spray_ButtonBool%Q0.0
Drying_FanBool%Q0.1
PuncherBool%Q0.2
系统实例 DB(4 个)

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

下一步