跳到正文
Learn-LAD
示例库/自动洗衣机

自动洗衣机

洗衣机主流程:进水、洗涤、排水与脱水阶段的时序与互锁控制。

进阶 S7-1200 流程控制 定时器 多步动作

导入到我的 TIA 项目

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

TiaLink 设置

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

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

概述

按住启动按钮,洗衣机按顺序执行:进水 10 秒 → 洗涤(搅拌)30 秒 → 排水 10 秒 → 脱水 10 秒 → 蜂鸣提示 10 秒,然后结束。

这个例子的精华在 Network 2:每一步都以上一步的输出结束作为启动条件,把五台设备串联成一条自动流程。学会这个结构,就能把任意多步流程排出来。

信号表

信号 类型 含义 作用
Start button I 启动按钮 按住时程序有效
Washmachine Program M 程序使能 直接反映启动按钮
Fill valve Q 进水阀 进水 10 秒
Agitator motor Q 搅拌电机 洗涤 30 秒
Drain valve/pump Q 排水阀/泵 排水 10 秒
Spin motor Q 脱水电机 脱水 10 秒
Buzzer Q 蜂鸣器 结束提示 10 秒
定时器 TP ×5 各步时长 10s / 30s / 10s / 10s / 10s

工作流程

  1. 按住 Start button → Washmachine Program=1;
  2. 进水阀打开 10 秒;
  3. 进水结束(Fill valve=0)→ 搅拌电机运行 30 秒;
  4. 搅拌结束 → 排水阀/泵运行 10 秒;
  5. 排水结束 → 脱水电机运行 10 秒;
  6. 脱水结束 → 蜂鸣器响 10 秒,程序完成;松开按钮可停止整个流程。

MainOB

Network 1 — 程序使能

Network 1:Start button、Washmachine Program

目的:把启动按钮映射成程序使能标志。

条件 → 动作:按下 Start button → Washmachine Program=1;松开立即为 0。

为什么:所有动作都以它为总条件,所以松开按钮可以中断流程(相当于"急停")。这是一个简化写法;实际洗衣机通常会用自锁或状态机。

注意:没有自锁,必须按住按钮程序才会走完。

逻辑:Washmachine Program = Start button

Network 2 — 五步顺序流程

Network 2:Washmachine Program、Fill valve、Fill valve、Agitator motor、Fill valve、Agitator motor、Drain valve/pump、Drain valve/pump

目的:用一串"上一步已结束"的条件,让五台设备依次动作。

条件 → 动作:

  • Fill valve = TP(IN = Program, 10s):程序一开始就进水 10 秒;
  • Agitator motor = TP(IN = Program AND NOT Fill valve, 30s):进水结束后洗涤 30 秒;
  • Drain valve/pump = TP(IN = Program AND NOT Fill valve AND NOT Agitator motor, 10s):洗涤结束后排水 10 秒;
  • Spin motor = TP(IN = Program AND NOT Fill valve AND NOT Agitator motor AND NOT Drain valve/pump, 10s):排水结束后脱水 10 秒;
  • Buzzer = TP(IN = Program AND NOT Fill valve AND NOT Agitator motor AND NOT Drain valve/pump AND NOT Spin motor, 10s):脱水结束后响 10 秒。

为什么:每一步的条件都是"总使能 + 前面所有步骤都已结束"。TP 输出结束的瞬间,下一步的条件自然成立,于是自动接上——不需要状态变量,也不需要步序编号。

注意:这种"链式顺序"要求每一步完全结束才开始下一步;如果两个步骤需要重叠运行,就不能直接复用这个结构。

逻辑(节选): Fill valve = TP(IN = Washmachine Program, PT = T#10s).Q

Agitator motor = TP(IN = Washmachine Program AND NOT Fill valve, PT = T#30s).Q

Drain valve/pump = TP(IN = Washmachine Program AND NOT Fill valve AND NOT Agitator motor, PT = T#10s).Q

常见问题

  • 流程走到一半停住:检查启动按钮是否被松开(程序使能消失,所有 TP 复位)。
  • 某一步不启动:确认上一步的输出确实已经结束;链条上任何一环没结束,后面的步骤都不会开始。
  • 想改各步时长:改对应 TP 的 PT(10s/30s/10s/10s/10s)。

变体与扩展

  • 按一下走完全程:把 Washmachine Program 改成自锁(启动置位、结束或停止按钮复位),程序就能一次启动走完。
  • 增加漂洗:在洗涤和排水之间再插一条 TP 链,条件同样用"前一步结束"。
  • 真正的水位控制:把进水 TP 换成水位传感器的条件,用实际水位判断何时停止进水。

变量与数据块

变量表:Default tag table

名称数据类型地址注释
Start buttonBool%I0.0
Fill valveBool%Q0.0
Agitator motorBool%Q0.1
Drain valve/pumpBool%Q0.2
Spin motorBool%Q0.3
BuzzerBool%Q0.4
Washmachine ProgramBool%M0.0
系统实例 DB(5 个)

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

下一步