西门子S7-1200 PLC比较指令学习笔记
一、比较指令的作用
- 核心功能:用于比较两个数值的大小或相等性,结果为布尔值(True/False)。
- 典型应用:
- 触发条件控制(如温度超过阈值启动报警)
- 数据筛选(如统计合格零件数量)
- 流程切换(如根据计数器的值切换生产阶段)
二、比较指令类型
S7-1200支持6种基本比较指令,覆盖所有逻辑条件:
指令名称 | 符号 | 功能 | 示例(TIA Portal中的表示) |
---|---|---|---|
等于 | CMP == | 判断两值是否相等 | DB1.DBW0 == 100 |
不等于 | CMP <> | 判断两值是否不相等 | MW10 <> 50 |
大于 | CMP > | 判断左值是否大于右值 | "Tag_1".RealValue > 3.14 |
大于等于 | CMP >= | 判断左值是否大于或等于右值 | DB2.DBD4 >= DB3.DBD8 |
小于 | CMP < | 判断左值是否小于右值 | Counter1.CV < 200 |
小于等于 | CMP <= | 判断左值是否小于或等于右值 | MD20 <= 0 |
三、TIA Portal中的操作步骤
1. 添加比较指令
- 触点比较(常用):
在梯形图(LAD)中右击网络 → 选择“比较” → 选择指令类型(如“==”)。 - 框比较:
使用指令栏中的“Compare”功能块,可配置多个比较条件。
2. 参数配置
- 操作数1(IN1):可以是常量、直接地址(如
DB1.DBW0
)或变量标签。 - 操作数2(IN2):与IN1类型一致,但必须与IN1数据类型匹配(如INT与INT比较)。
3. 输出结果
- 比较结果为True时,触点闭合,允许电流通过;为False时断开。
四、实际应用案例
案例1:电机启停控制
Network 1:当I0.0(启动按钮)按下,且温度值(MD10)≥80.0℃时,启动风扇Q0.0。--| I0.0 |-----| CMP >= |-----(Q0.0)| MD10 || 80.0 |
案例2:零件计数筛选
Network 2:当计数器C1的当前值在50~100之间时,点亮合格指示灯Q0.1。--| CMP >= |-----| CMP <= |-----(Q0.1)| C1.CV | | C1.CV || 50 | | 100 |
案例3:点机顺启,一键停止
要求:按下启动I0.0,第一台启动,再按第二台启动,共4台,按下停止,全部停止。
梯形图如下。
五、关键注意事项
-
数据类型一致性
- 确保比较的两个操作数类型相同(如INT与INT,REAL与REAL)。
- 错误示例:
DB1.DBW0(INT)
与3.14(REAL)
比较会报错,需先转换数据类型。
-
操作数范围
- 避免超出数据类型的数值范围(如INT范围为-32768~32767)。
-
扫描周期影响
- 比较结果在每个扫描周期更新一次,需注意时序逻辑设计。
六、常见问题解答
Q1:如何比较两个浮点数是否近似相等?
- 由于浮点数精度问题,建议用范围判断:
(Value >= Target - 0.001) AND (Value <= Target + 0.001)
Q2:比较指令能否直接用于定时器/计数器的状态判断?
- 可以!例如判断定时器是否到达设定值:
T1.TV == T1.PT