过程映像区和外设地址

循环程序执行与过程映像区的更新

  • 主程序循环过程:
      1. OS启动扫描循环监视时间
      1. 将输出过程映像区的值写到输出模块
      1. 读取输入模块的值状态值,并更新到输入过程映像区
      1. 逻辑处理
      1. 当循环结束,处理其他未决任务,例如删除和加载块。
      1. CPU返回循环启动,重新启动扫描循环监视时间

过程映像区和外设地址:

  • 'I'/'Q'实际上是输入过程映像区和输出过程映像区
  • 'PI(B/W/D)'/'PQ(B/W/D)'实际上是外设模板(最小单位是byte),PQW为只写操作,无法监看 / PIW为只读操作,无法写入
  • 在博图上也可以用:P来直接访问某个I/O地址而不是过程映像区,比如L %IB0: P | T %QW0: P
以模拟量输入为例理解IW与PIW:

PIW,直接读取物理地址,即直接采集模板信号。
IW,每个扫描周期将模板数据读取至过程映像区,程序访问读取的是过程映象区数值。

直接访问外设地址的优缺点

  • 优点
    • 立即读/立即写
    • 可以让对应的一个I/O端口在一个扫描周期内多次被访问
  • 缺点
    • 由于外设地址的刷新可以在一个周期内执行多次,所以程序逻辑上需要注意同一个扫描周期内读写的一致性。
    • 在集中式IO系统中,立即读/立即写拿到的是实际的I/O的端口状态,但在分布式(比如PN/DP)系统中,立即读/立即写拿到的仅仅是PLC映像存储区里的值(受限于IOC和IOD之间的更新时间

PIP过程映像分区

  • 在PLC里,默认的PIP是OB1 PI,也就是自动更新区域;当我们把外部IO的过程映像区放到自动更新或者OB1里的时候,就算在更快循环的cyclic OB里面使用I点和Q点,它们的刷新时间也之和OB1的刷新时间关联

  • 为了获得比OB1扫描周期更快且稳定的刷新时间,可以把I/O的过程映像区放在其他的PIP里面,去绑定其他的循环OB

  • 在1500系统上,过程映像区被细分为32个,PIP0(自动更新)默认给OB1,其他PIP1-PIP31可以设置给其他某些OB。

  • 在400系统上,过程映像区被细分为16个,PIP0(OB1 PI)默认给OB1,其他PIP1-PIP15可以设置给其他某些OB。

  • 相比于一个统一的OB1 PI,更小的过程映像分区也具有更快的IO响应时间,比如在OB1 PI里面更新IO外设地址需要9us/字,那么在其他的分区里面可能仅需要0.5us/字。

  • 在Step7上设置PIP分区:

    • 设置循环中断Cyclic Interrupts
    • 给指定IO模块绑定对应循环中断的PIP
  • 在博图上直接设置组织块过程映像

  • 手动批量更新过程映像的指令:

    • UPDATSYNC

posted @ 2024-12-10 23:21  不愿透露姓名的小村村  阅读(41)  评论(0编辑  收藏  举报