在食品、医药、电子等制造业中,自动包装系统是提升效率的核心设备 ------ 它需要精准完成 "产品检测→计数统计→箱满封箱→产量达标停机" 的全流程。而西门子 S7-200 SMART 的布尔、传送、数学运算、比较四大指令,正是实现这些功能的 "核心工具"。
本次案例将围绕一套小型自动包装设备展开,从控制需求到梯形图编程,带你看清每一条指令如何解决实际问题,学会用基础指令搭建完整的工业控制逻辑。
一、案例背景与控制需求
某电子元件包装线需实现以下功能:
- 启停控制:启动按钮(I0.0)触发传送带运行,停止按钮(I0.1)紧急停机,传送带由 Q0.0 驱动;
- 产品检测与计数:3 个光电传感器分别检测 A/B/C 三类产品(I0.2=A、I0.3=B、I0.4=C),需统计每种产品的数量及总产量;
- 自动封箱:当单个包装箱内产品数达到 10 个时,触发封箱装置(Q0.1)动作 2 秒,同时点亮箱满指示灯(Q0.2);
- 产量管控:预设总产量目标,当实际总产量达到目标值时,传送带停止,点亮完成指示灯(Q0.3);
- 系统初始化:PLC 上电时自动重置所有计数器,预设目标产量(如 500 个),避免初始值混乱。
设计流程如下:
A[开始:PLC上电] --> B[系统初始化]
B --> B1[重置计数器:Count_A=0、Count_B=0、Count_C=0、Total_Count=0、Box_Count=0]
B1 --> B2[预设目标产量:Target_Total=500]
B2 --> C{启停控制判断}
C -->|按下启动按钮(Start/I0.0)| D[启动传送带(Conveyor/Q0.0)]
C -->|未按启动| C
D --> E[实时检测停止按钮(Stop/I0.1)]
E -->|按下Stop| F[紧急停机:Conveyor=OFF,流程终止]
E -->|未按Stop| G[产品检测与计数]
G --> G1{检测Sensor_A(I0.2)}
G1 -->|有产品(ON)| G11[Count_A=Count_A+1,Total_Count=Total_Count+1,Box_Count=Box_Count+1]
G --> G2{检测Sensor_B(I0.3)}
G2 -->|有产品(ON)| G21[Count_B=Count_B+1,Total_Count=Total_Count+1,Box_Count=Box_Count+1]
G --> G3{检测Sensor_C(I0.4)}
G3 -->|有产品(ON)| G31[Count_C=Count_C+1,Total_Count=Total_Count+1,Box_Count=Box_Count+1]
G1 -->|无产品(OFF)| G
G2 -->|无产品(OFF)| G
G3 -->|无产品(OFF)| G
G11 --> H
G21 --> H
G31 --> H
H{箱满判断:Box_Count≥10?}
H -->|是| I[触发封箱流程]
I --> I1[封箱装置ON(Sealer/Q0.1),箱满灯ON(Full_Indicator/Q0.2)]
I1 --> I2[启动封箱定时器(Timer_Sealer/T37,2秒)]
I2 -->|Timer_Sealer计时到2秒| I3[Sealer=OFF,Full_Indicator=OFF,重置Box_Count=0]
I3 --> J
H -->|否| J
J{产量达标判断:Total_Count≥Target_Total?}
J -->|是| K[停机流程:Conveyor=OFF,完成灯ON(Complete_Indicator/Q0.3),流程终止]
J -->|否| E[返回继续检测/运行]
二、符号表:让程序 "看懂" 功能
和之前的案例一样,先定义符号表------ 将抽象的 PLC 地址与实际功能绑定,后期维护时无需记忆 "I0.2 是什么",直接看 "Sensor_A" 即可。
|-------|--------------------|----------------------------|
| 地址 | 符号名 | 注释说明 |
| I0.0 | Start | 启动按钮(常开,按下导通) |
| I0.1 | Stop | 停止按钮(常闭,按下断开) |
| I0.2 | Sensor_A | 产品 A 检测传感器(有产品时 ON) |
| I0.3 | Sensor_B | 产品 B 检测传感器(有产品时 ON) |
| I0.4 | Sensor_C | 产品 C 检测传感器(有产品时 ON) |
| Q0.0 | Conveyor | 传送带电机线圈(ON 时运行) |
| Q0.1 | Sealer | 封箱装置线圈(ON 时动作) |
| Q0.2 | Full_Indicator | 箱满指示灯(箱满时点亮) |
| Q0.3 | Complete_Indicator | 产量完成指示灯(达标时点亮) |
| VW100 | Count_A | 产品 A 计数器(字类型,0~32767) |
| VW102 | Count_B | 产品 B 计数器(字类型,0~32767) |
| VW104 | Count_C | 产品 C 计数器(字类型,0~32767) |
| VW106 | Total_Count | 总产量计数器(字类型,0~32767) |
| VW108 | Box_Count | 当前箱内产品数(字类型,0~10) |
| VW110 | Target_Total | 目标总产量(预设值,如 500) |
| T37 | Timer_Sealer | 封箱定时器(100ms 时基,最大 3276.7s) |