在西门子 S7‑300 PLC 上通过屏(WinCC flexible/WinCC Runtime)设定定时器时间,核心是屏输入整数→PLC 转成 S5TIME,直接给 T 块的 PT 端,或用自定义 DB 做中间变量再转 S5TIME。以下是两种稳用方案,按场景选。
一、核心原理:数据类型与转换
S7‑300 内置定时器(T)的 PT 是 S5TIME(16 位,含 2 位时基 + 3 位 BCD 计数值),屏通常只能直接写整数,因此必须在 PLC 侧做转换。
S5TIME 时基对应
表格
| 时基编码 | 时间单位 | 最大定时 |
|---|---|---|
| 00 | 10 ms | 9.99 s |
| 01 | 100 ms | 99.9 s |
| 10 | 1 s | 999 s |
| 11 | 10 s | 9990 s |
二、方案一:简单直接(推荐,1 秒时基)
屏输入 “秒数”→PLC 转毫秒→封装 S5TIME,适合大多数场景,直观不易错。
1. PLC 侧(STEP 7)
在 DB 块建变量(掉电保持):
HMI_SetSec:DINT(屏写,单位:秒)S5T_PT:WORD(最终给 T 块 PT)在 OB1/FC 写程序(以 1 秒时基为例):
pascal
// 1. 秒转毫秒(HMI_SetSec * 1000)L "HMI_SetSec" L 1000*D T "MS_Count" // 临时DINT变量// 2. 转S5TIME(1秒时基 W#16#2000)L "MS_Count" ITB // DINT→BCDL W#16#2000 // 时基1s,高2位=10OW T "S5T_PT"// 3. 给定时器PTTON T100, PT := "S5T_PT", IN := "Start_Tag", Q => "Q_Tag", ET => "ET_Tag"
2. 屏侧(WinCC flexible/WinCC Runtime)
新建变量:
HMI_SetSec,数据类型 DINT,地址与 PLC 一致画面放 数值输入框,关联该变量,格式设为 整数(示例:5→5 秒)
可选:加范围限制(0–999)
3. 说明
1 秒时基满足多数需求,最大 999 秒≈16 分钟
需更高时基(10 秒),只需将
W#16#2000改为W#16#3000
三、方案二:精确时基(自定义单位)
屏输入计数值→PLC 按指定时基封装 S5TIME,适合要求精确单位的场景。
1. PLC 侧
DB 变量:
HMI_Count:INT(屏写计数值)、Time_base:WORD(时基编码)程序示例(以 100 ms 时基为例):
pascal
L "HMI_Count" ITB // INT→BCDL W#16#1000 // 时基100ms(01)OW T "S5T_PT"
2. 屏侧
变量
HMI_Count设为 INT输入框说明文字提示 “×100 ms”(输入 10→1 秒)
四、常见问题与避坑
屏无 S5TIME 类型不要直接绑定 S5TIME 地址,必须用中间整数变量 + PLC 转换。
中文逗号 / 非法字符程序中符号、逗号均为英文,否则编译报错。
时基选错10 ms 精度高但时间短;10 s 时间长但精度低,按需求选。
掉电保持设定值务必放在 DB 块(属性勾选 “保持”),避免 M 区掉电丢失。
范围检查屏输入建议加上限(如 999 秒),防止溢出。
五、快速配置清单
表格
| 步骤 | 操作 |
|---|---|
| 1. 建 DB | 建 HMI_SetSec(DINT)、S5T_PT(WORD) |
| 2. 写程序 | 秒→毫秒→S5TIME 转换,赋值给 T 块 PT |
| 3. 屏变量 | 建 HMI_SetSec(DINT),关联输入框 |
| 4. 测试 | 输入 5→验证 T100.PT=5 秒 |
六、进阶:用 IEC TIME 变量(TIA 推荐)
TIA Portal 中推荐用 IEC TIME(32 位,1 ms 单位)做中间变量,再用 FC40 转 S5TIME,更直观:
DB 建
IEC_Time:TIME屏写
IEC_Time(单位 ms,输入 5000→5 秒)PLC 调用 FC40 转 S5TIME 给 PT。





