在S7-300/400 PLC中,有的CPU的过程映像区是固定的,例如有的S7-300PLC为128个字节输入和128个字节输出,S7-400 PLC的过程映像区大小可以在软件中设置。S7-1500CPU所有地址区都在过程映像区中,地址空间为32KB。访问数字量模块与模拟量模块方式相同:输入都是以关键字符%I开头,例如%I1.5、%IW272;输出都是以关键字符%Q开头,例如%Q1.5、%QW272。
为了减小过程的响应时间,在用户程序中也可以不经过过程映像区而直接访问某个I/O端口(在地址区后加“:P”)。端口扫描将在指令运行期间执行,由此可获得较快的响应时间。例如在程序中可以一次或多次使用“L%IB2:P”或“T %QW2:P”指令替代“L %IB2”或 “T%QW2”,这样对应的I/O端口在一个扫描周期内被多次访问。使用“:P”快速读写I/O端口也称为立即读、立即写。直接访问I/O端口,允许Zui小的数据类型为位信号。为了继承S7-300/400的编程方式,也可以在地址区前加“P”,例如“L PIB2”或“T PQW2”,TIA博途软件会自动进行转换。
在S7-1500自动化系统中,整个过程映像区被细分为32个过程映像分区(PIP)。
PIP 0(自动更新)在每个程序周期中自动更新。可将过程映像分区 PIP 1 至PIP 31分配给某些 OB。在TIA博途软件中,分配过程在组态I/O模块期间进行。例如点击“模块”->“属性”标签->“I/O地址”,将过程映像分区PIP 2分配给循环中断OB30,如图3- 13所示
一旦PIP 2分配给循环中断OB30后,就不能再次分配给其它OB块。
注意:
如果过程映像区通过OB块进行更新,则不能再次调用函数“UPDAT_PI”和“UPDAT_PO”来更新这个过程映像分区。
使用过程映像分区好处在于:
每个过程映像区分区可以在需要的情况下更新,完全独立于操作系统对过程映像区的更新;
过程映像区分区比较小,CPU的响应时间更快,以CPU 1513为例,集中式I/O模块的更新时间为9微秒/字,如果使用分布式I/O,CPU与IO控制器间的更新时间(数据交换)为0.5微秒/字,接口模块更新本站的I/O模块同样需要时间。
响应时间长短也与扫描时间有关,例如OB1扫描时间是20毫秒,OB30设定扫描时间为10毫秒,在OB30中对几个I/O模块的信号进行处理。如果将这些I/O模块配置为自动更新PIP0,那么更新时间至少需要20毫秒,即使OB30再快,过程响应时间也会增加。如果将这些I/O模块配置在一个过程映像分区,并分配给OB30,就可以得到Zui优化的效果