西门子 S7-200 SMART PLC 编程:转换 / 定时器 / 计数器指令详解 + 实战案例(指令讲解篇)
S7-200 SMART 作为西门子小型 PLC 的经典款,凭借高性价比广泛应用于自动化生产线、设备控制等场景。要实现复杂控制逻辑,转换指令(数据类型适配)、定时器(时序控制)、计数器(脉冲计数) 是三大核心基础。本文将从指令原理、应用场景入手,再通过 “自动包装生产线” 综合案例,教你把指令组合成实用程序。
一、核心指令精讲:从功能到场景
1. 转换指令:解决数据类型 “不兼容” 问题
PLC 中不同模块(如传感器、HMI、执行器)的数据格式不同,转换指令是 “数据桥梁”,常用 6 种如下:
指令名称 | 功能描述 | 典型应用场景 |
BCD_I | BCD 码→整数 | 读取数码拨码开关(输出 BCD 码)的设定值,转为整数参与运算 |
I_BCD | 整数→BCD 码 | 驱动数码管显示(需 BCD 码信号),如显示计数器当前值 |
I_DI | 整数→双整数 | 16 位整数(范围 - 32768~32767)转 32 位双整数,避免乘法 / 加法溢出 |
DI_R | 双整数→实数 | 需小数运算时(如流量计算、比例控制),先转实数再计算 |
ROUND | 实数→双整数(四舍五入) | 温度采集后(如 25.6℃),四舍五入为 26℃显示 |
TRUNC | 实数→双整数(截断小数) | 计件计数时(如 10.9 个产品),截断为 10 个,避免计数误差 |
关键提醒:数学运算前务必 “统一数据类型”!比如整数 × 整数若结果超 16 位,需先通过I_DI转双整数,再运算。
2. 定时器指令:精准控制 “时间逻辑”
定时器用于实现延时、脉冲生成等,S7-200 SMART 有 3 种核心类型,核心区别在 “计时触发方式” 和 “断电后状态”:
指令类型 | 工作原理 | 分辨率(编号示例) | 应用场景 |
TON(通电延时) | IN 端导通→开始计时,当前值 = PT→定时器位置 1;IN 端断开→当前值清零、位复位 | 1ms(T32)、10ms(T33)、100ms(T37) | 启动后延时动作(如电机启动后,3 秒再开风机) |
TOF(断电延时) | IN 端导通→定时器位立即置 1、当前值清零;IN 端断开→开始计时,当前值 = PT→位复位 | 同 TON | 停止后延时关闭(如设备断电后,散热风扇再转 5 秒) |
TONR(保持型通电延时) | IN 端导通→计时,IN 端断开→当前值保持;需用 “复位指令(R)” 清零 | 同 TON | 累计工作时间(如机床累计运行时长,断电不丢失) |
分辨率计算:如 T37(100ms),若 PT 设为 50→实际延时 = 50×100ms=5 秒,选定时器时需先确认分辨率!
3. 计数器指令:统计 “脉冲次数”
对输入脉冲(如传感器信号、按钮触发)计数,3 种类型覆盖 “加、减、加减” 需求:
指令类型 | 工作原理 | 关键端子 | 应用场景 |
CTU(加计数器) | CU 端检测到上升沿(OFF→ON)→当前值 + 1;当前值 = PV→计数器位置 1;R 端导通→清零 | CU(加计数端)、R(复位端) | 产品计数(光电传感器每检测 1 个产品,CU 端触发 1 次) |
CTD(减计数器) | CD 端上升沿→当前值 - 1;当前值 = 0→计数器位置 1;LD 端导通→装载 PV 值到当前值 | CD(减计数端)、LD(装载端) | 物料剩余量计数(如料仓取料 1 次,CD 端触发 1 次) |
CTUD(加减计数器) | CU 端上升沿 + 1,CD 端上升沿 - 1;当前值≥PV→位置 1;R 端导通→清零 | CU、CD、R | 生产线进出料计数(进料 CU+1,出料 CD-1,统计库存) |
注意:计数器 “位” 与 “当前值” 独立!当前值到 PV 时 “位” 置 1,但当前值仍会继续累加(除非复位)。