4. 皮带启停延时与顺序控制

任务拆解:两个延时方向,一条启动链

本例要解决的不是“皮带能不能转”,而是“什么时候才允许转、什么时候必须晚一点停”。S7-1200 的 TON 定时器在 IN 由 0 变 1 时开始计时,当前值 ET 达到预设 PT 后输出 Q 置 1;IN 一旦变 0,Q 立即复位、ET 清零。因此同一个 TON 既能做“启动前预警延时”,也能做“停止后延时断电”,区别只在于它被谁触发、它的 Q 去驱动什么。

工程上把这两段延时拆成两条独立链路,互不干扰:

  • 启动链:启动按钮 → 预警定时器 TON(PT = 3 s)→ 预警灯闪烁/常亮 → 延时到 → 主接触器 Q0.0 得电。
  • 停止链:停止按钮 → 运行标志复位 → 主接触器立即断电 → 停止延时 TON(PT = 5 s)→ 延时到 → 辅助输出(如尾部清扫器、指示灯)断电。

下面这张图把两条链的触发源、定时器、被驱动对象和时序关系画在一起,重点看“谁先动、谁后动”。

启动链(预警延时 3 s) 启动按钮 I0.0 上升沿置位 M0.0 TON 预警定时器 IN=M0.0 PT=T#3s 预警输出 Q0.1 蜂鸣器 / 黄灯 主接触器 Q0.0 TON.Q 驱动 Q=1 停止链(延时断电 5 s) 停止按钮 I0.1 复位 M0.0 Q0.0 立即断开 皮带电机停转 TON 停止定时器 IN=NOT Q0.0 PT=T#5s 辅助输出 Q0.2 清扫器 / 尾灯 Q=1 输出时序对照 t0 t0+3s 停止 停止+5s Q0.1 预警 Q0.0 主电机 Q0.2 辅助 预警满 3 s 才启动 主电机先停 辅助再延时 5 s 断电

变量与定时器参数约定

为避免“定时器到底该用常开还是常闭触发”这类反复出错的问题,先把本例用到的地址和参数固定下来。定时器采用 IEC 定时器 TON,背景数据块各用一个,互不共用。

符号地址 / 类型作用说明
启动按钮I0.0启动指令上升沿有效,避免长按重复触发
停止按钮I0.1停止指令常闭按钮,程序中取反使用
运行标志M0.0启动链保持位置位后保持,停止时复位
预警定时器TON,DB1启动前延时PT = T#3s
停止定时器TON,DB2停止后延时PT = T#5s
预警输出Q0.1蜂鸣器 / 黄灯由预警定时器 Q 驱动
主接触器Q0.0皮带电机由预警定时器 Q 驱动
辅助输出Q0.2清扫器 / 尾灯由停止定时器 Q 取反驱动

梯形图逻辑(分段说明)

程序分三段,按“启动保持 → 预警延时 → 停止延时”的顺序编写。下面用结构化文本等价表达,便于直接对照梯形图网络。

// 网络1:启动保持与停止复位
IF "启动按钮" AND NOT "运行标志" THEN
    "运行标志" := TRUE;      // 上升沿置位
END_IF;
IF NOT "停止按钮" THEN       // 常闭按钮断开即停止
    "运行标志" := FALSE;
END_IF;

// 网络2:启动前预警延时 3 s
"预警定时器"(IN := "运行标志",
             PT := T#3s);
"预警输出" := "运行标志" AND NOT "预警定时器".Q;  // 预警期间亮
"主接触器" := "预警定时器".Q;                     // 延时到才启动

// 网络3:停止后延时断电 5 s
"停止定时器"(IN := NOT "主接触器",
             PT := T#5s);
"辅助输出" := NOT "停止定时器".Q;                 // 延时到才断电
网络 2 中预警输出用 运行标志 AND NOT 定时器.Q,这样预警灯只在 3 s 等待期内亮,主电机启动后自动熄灭,不需要额外复位。

关键点:为什么停止定时器的 IN 取 NOT Q0.0

停止延时不能用“停止按钮”直接触发,否则按钮松开后 IN 变 0,定时器立刻清零,延时形同虚设。正确做法是让定时器的 IN 跟随“主接触器是否已断电”这个持续状态:主接触器一旦断开,NOT Q0.0 持续为 1,定时器才能稳定计满 5 s。这也是 TON 与“脉冲定时”最容易混淆的地方——TON 计的是 IN 持续为 1 的时间,不是按钮按下的瞬间。

若把停止定时器的 IN 写成停止按钮的常开触点,会出现“按一下就停、松手就恢复”的假延时。判断方法:在线监控时观察定时器 ET 是否在松手瞬间归零,若是,则触发源接错。

上机验证与现象判读

把程序下载到 CPU 后,用监控表同时观察 M0.0、两个定时器的 ET/Q 和三个输出,按以下顺序操作并核对现象:

  1. 按启动按钮 I0.0:M0.0 置 1,预警定时器 ET 从 0 开始递增,Q0.1 立即亮,Q0.0 仍为 0。
  2. 持续观察约 3 s:预警定时器 Q 变 1,Q0.0 得电,Q0.1 熄灭,皮带开始运行。
  3. 按停止按钮 I0.1:M0.0 复位,Q0.0 立即断开,停止定时器 ET 开始从 0 递增,Q0.2 仍保持为 1。
  4. 约 5 s 后:停止定时器 Q 变 1,Q0.2 断开,整条链路回到初始状态。

判读要点:启动链看“预警灯亮到主电机得电之间是否恰好 3 s”;停止链看“主电机断电到辅助输出断电之间是否恰好 5 s”。若某一延时明显偏短,优先检查定时器 IN 是否被按钮的瞬时信号驱动,而不是被保持位或输出状态驱动。

常见时序异常与处理

现象可能原因处理
预警灯一闪即灭,主电机立刻启动预警定时器 PT 被写成 T#0s 或 IN 直接接 Q0.0PT 改为 T#3s,IN 接运行标志 M0.0
停止后辅助输出立即断电停止定时器 IN 接了停止按钮瞬时信号IN 改为 NOT Q0.0,保证持续为 1
再次启动时预警时间变短两个定时器共用同一背景 DB预警、停止各用一个 DB,互不复用
停止按钮按下后电机不停停止按钮常开/常闭类型与程序取反不一致核对现场按钮类型,统一取反逻辑

完成以上验证后,本例的核心就落在“两条延时链各自被谁触发、各自驱动谁”上:启动链用运行标志触发、用定时器 Q 放行主电机;停止链用主接触器断电状态触发、用定时器 Q 切断辅助输出。把这两个触发源接对,延时顺序自然正确。