当前位置: 首页 > news >正文

西门子PLC基础指令4:输出指令、立即输出指令

布尔指令

1. 输出指令

在这里插入图片描述
输出指令:当PLC处于“输出刷新”阶段时,会将“输出映射区”中的运算结果,同步到硬件输出端口(继电器、晶体管等),真正控制外部设备动作。

2. 立即输出指令

在这里插入图片描述

区别

  • 普通输出指令(如 = Q0.0):在程序执行阶段,只是将运算结果写入 输出映像区,不会立即作用于实际硬件输出,必须等到整个程序执行完毕,进入 输出刷新阶段 时,才会将输出映像区的所有结果一次性同步到硬件输出端口。
  • 立即输出指令(如 =I Q0.0):在程序执行阶段遇到该指令时,会直接跳过输出映像区,将运算结果立即同步到实际硬件输出端口,同时也会更新输出映像区(保持映像区与硬件状态一致)。

1. 立即输出指令的实时性:仅在执行瞬间生效而非持续监控:

立即输出指令的核心是 “打破输出刷新阶段的统一同步”,但它并非 “持续监控地址变化”,而是在程序执行到该指令的那一刻,强制将当前结果输出到硬件,具体逻辑:

  1. 程序执行阶段,按顺序扫描指令,当运行到 =I Q0.0 时:
    • 读取当前逻辑运算的结果(0 或 1);
    • 直接将结果发送到实际输出端口(如继电器、晶体管),硬件立即动作;
    • 同时更新输出映像区中 Q0.0 的值(确保后续指令读取的是最新状态)。
  2. 指令执行完毕后,PLC 继续扫描后续程序,不会 “持续监控” 该地址,只有再次执行到该指令时,才会根据当时的逻辑结果再次更新硬件输出。

2. 立即输出的硬件访问成本

立即输出指令(=I)直接访问硬件,这比访问内存(映像区)更耗时。在高速或大型程序中,过度使用立即输出可能增加扫描时间。

这里说的扫描时间是什么?为什么会增加扫描时间?

  • 这里说的扫描时间,就是PLC循坏周期 扫描一次的时间。
  • 操作会增加扫描时间的原因是:
    • 正常情况下,PLC 对输出的处理是 “批量的”(程序执行阶段只修改映像区,最后统一刷新硬件),效率很高。
    • 而 “立即输出” 需要单独与硬件进行通信(如直接向输出端口发送电信号),硬件访问的速度远慢于内存(映像区)的读写速度。
    • 如果在程序中频繁使用立即输出,相当于在循环扫描过程中插入了大量低速的硬件操作,导致整个扫描周期变长。

3. 为什么要更新 输出映像区

这确保了后续指令如果读取同一个输出点(从映像区)会得到最新值。

4. 时序问题:代码中普通输出与立即输出同时使用以谁为准?

假设在一个扫描周期内,对同一个输出点 Q0.0 有以下操作:

  1. 执行普通输出指令= Q0.0(将映像区中 Q0.0 设为 0)

    此时,仅输出映像区的 Q0.0 变为 0,硬件硬件输出未变化。

  2. 执行立即输出指令=I Q0.0(将 Q0.0 设为 1)

    此时,不仅输出映像区的 Q0.0 变为 1,硬件输出也立即变为 1。

  3. 再次执行普通输出指令= Q0.0(将映像区中 Q0.0 设为 0)
    1. 此时,输出映像区的 Q0.0 再次变为 0,硬件输出仍保持 1(未刷新)。
    2. 这种情况:设备先是1状态,等plc进入输出刷新阶段后,输出映射区的值被同步到设备,设备又变为了0状态

在这个例子中:

  • 最后执行的是普通输出指令,所以输出映像区的最终值是 0
  • 硬件输出被立即输出指令修改为 1,之后未再更新,所以硬件输出为 1
  • 如果最后执行的是立即输出指令,那么映像区和硬件输出会保持一致

注意:这种情况会导致设备状态和输出映射区状态暂时不匹配。比如你奇怪为什么明明输出映射区是0,但是设备却动了一下1!
这便是普通输出指令立即输出指令针对同地址操作所需要的注意带点!

http://www.dtcms.com/a/312513.html

相关文章:

  • 信用衍生工具
  • 《基于特征融合的小目标检测方法及其在医学影像领域的应用研究》论文解析
  • Coin Combinations I(Dynamic Programming)
  • ThinkPHP 与 Vue.js 结合的全栈开发模式
  • 多线程(三)-线程安全原因与解决
  • Day26-二叉树的最小深度
  • 【软考中级网络工程师】知识点之 RIP 协议
  • C++ 之 【模拟实现 优先级队列】
  • SQL 地理空间原理与实现
  • slice() 和 splice()
  • 信创及一次ORACLE到OB的信创迁移
  • 自由学习记录(76)
  • Python 的标准库 bisect 模块
  • 源码交易平台排行榜
  • 机器学习 决策树基本介绍
  • Mysql的MVCC是什么
  • HCIE-Datacom题库_07_设备【道题】
  • 《深入解析 Python 的 `*args` 和 `**kwargs`:从基础使用到高级应用》
  • 【数据结构】哈希表实现
  • 网关和BFF是如何演化的
  • uniapp 跨端开发
  • 基于Springboot+UniApp+Ai实现模拟面试小工具八:管理端基础功能实现
  • (论文速读)探索多模式大型语言模型的视觉缺陷
  • DeepSeek 论文夺冠,智谱开源 GLM-4.5,OpenAI 学习模式上线!| AI Weekly 7.28-8.3
  • 基于机器学习的Web应用漏洞分析与预测系统,使用django框架,三种机器学习模型
  • 深入探讨AI在测试领域的三大核心应用:自动化测试框架、智能缺陷检测和A/B测试优化,并通过代码示例、流程图和图表详细解析其实现原理和应用场景。
  • 关于Web前端安全防御之内容安全策略(CSP)
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 采用PyTorch 内置函数F.kl_div的实现方式
  • 【Linux系统】进程间通信:匿名管道
  • AI 时代的 IT 从业者:共生而非替代