过程映像区和外设地址
循环程序执行与过程映像区的更新
- 主程序循环过程:
-
- OS启动扫描循环监视时间
-
- 将输出过程映像区的值写到输出模块
-
- 读取输入模块的值状态值,并更新到输入过程映像区
-
- 逻辑处理
-
- 当循环结束,处理其他未决任务,例如删除和加载块。
-
- CPU返回循环启动,重新启动扫描循环监视时间
- 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
- 设置循环中断
-
在博图上直接设置
组织块
和过程映像
-
手动批量更新过程映像的指令:
UPDAT
和SYNC