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

西门子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.xdnf.cn/news/16859.html

相关文章:

  • 【Bluetooth】【基础篇】第二章 关于蓝牙协议栈架构与其硬件方案架构大致概述
  • 12.Redis 主从复制
  • innoDB的buffer pool
  • 2025熵密杯 -- 初始谜题 -- Reproducibility
  • sqli-labs:Less-19关卡详细解析
  • 交互 Codeforces Round 1040 Interactive RBS
  • 网易云音乐硬刚腾讯系!起诉SM娱乐滥用市场支配地位
  • 联合索引全解析:一棵树,撑起查询的半边天
  • Anthropic:跨越生产效能拐点的AI增长飞轮
  • Linux学习--数据结构
  • 牛客 - 旋转数组的最小数字
  • MySQL 内置函数
  • Anthropic最新研究Persona vector人格向量
  • Python正则表达式使用指南:从基础到实战
  • 2025.8.2
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • 文心4.5开源测评:国产大模型的轻量化革命与全栈突破
  • 每日五个pyecharts可视化图表-bars(1)
  • SpringBoot启动项目详解
  • 详解Python标准库之命令行界面库
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 未来交通:元宇宙技术重塑出行体验
  • SLAM中的非线性优化-2D图优化之零空间实战(十六)
  • Selenium自动化:轻松实现网页操控
  • 归并排序(简单讲解)
  • MySQL 基础
  • linux source命令使用详细介绍
  • 浅拷贝与深拷贝的区别
  • Vue 响应式基础全解析2
  • Python Pandas.unique函数解析与实战教程