SPLC过程映像区详解.doc
一、概念W过程镜像区输入字PIW立即输入区字PIW不用等系统刷新,立即读入IW等待系统刷新后读入 二、PIW/IW,PQW/QW引用西门子论坛一位大侠的比方加深理解: “打个比方,你吃饭的时候要吃菜, 你一般都是将菜从锅里乘到碗里, 再从碗里夹着吃, 可是有时候饿得太急了,你顾不了那么多,直接就从锅里夹菜吃了。 这个PIW与IW其实最终装的都是一个东西,相当于这个“菜, 只不过PIW是锅里的菜, 而IW是碗里的菜! 要注意了,上面的动作已经说明,直接从锅里夹菜的话,会“实时些,菜也热一些。但是本质上还都是菜 PIW/IW,PQW/QW两者有什么区别? 1、I/O区可以对“位寻址,而PI与PQ区不能,PI与PQ最小寻址单位是BYTE,如PIB256、PQW300. 2、I/O区,按西门子的定义应该叫“过程映像区,本身这个过程映像区自己也是带有外设地址的!比方IB0,它对应一个PIB0, 它俩不同之处在于每个PLC扫描周期的开场,系统会将PIB0里的数据刷新到IB0内, 然后在接下来的一个扫描周期之内,IB0的数据均保持不变当然,如果调用SFC在程序内刷新输入端口,那又当别论,而PIB0那么是实时的,即完全物理意义上的端口! 所以我们看到一些S7-300标出最大I/O寻址为1024位,算算看,一块CPU带四个机架,每个机架装满八个模块, 每个模块最大32点,那么4*8*32=1024位=128BYTE . .超过这个以后就是外设通道了,就只能以PI或者Q来表示了,而且这就意味着不对直接对“位寻址了! 如果你非要对位寻址,怎么办? 很好办: L PIB256 T MB0 那么MB0里的位就对应了PIB256的八位。三、过程映像区详解问题描述当在程序中使用 "I." 或 "Q." 对输入、输出进展访问时,实际上并未直接访问输入、输出模板,而是访问 CPU 的系统存储区。此 "I"/ "Q" 区分别被称作输入过程映像区 (PII) 与输出过程映像区 (PIQ)。只有在过程映像区刷新时刻,I 区与 Q 区的内容才与输入/输出的实际值一样,所以它们并不能直接反映输入/输出的实际状态。因此,在某些需要对输入/输出进展较为实时处理的场合,需要选择使用直接外设寻址。假设将 I/O 输入输出模块 I/O 地址分配在过程映像区以外,必须通过外设寻址方式访问这些 I/O。为了分清楚,以下对过程映像与外设寻址进展分别介绍。OB1过程映像OB1过程映像就是普通的PLC的输入、输出区。PLC采用循环执行用户程序的方式,每次循环CPU将OB1过程映像输出区的数据写到输出模块;读取输入模块的输入状态,保存到OB1过程映像输入区;然后执行用户程序。这种工作方式不能马上将逻辑运算得到的输出点的值送到输出模块,使用的输入点的状态也不是最新的,因此造成了输入、输出的响应延迟。任何 CPU 均可使用 OB1 过程映像 (OB1-PI)。OB1 过程映像在每个 OB1 循环周期之前被更新,CPU 的程序依照以下顺序循环执行:1. 执行 CPU 操作系统的内部工作。2. 将 OB1 中输出过程映像区的值写入到实际模板输出。3. 从模板读取实际输入值至 OB1 中的输入过程映像区。4. 执行 OB1 的程序。5. 执行第一步操作,开场下一次循环操作系统自动完成对 OB1 过程映像 (OB1-PI) 的读写。对于 S7-400 CPUs ,可以禁用 OB1 过程映像循环更新 ("HW Config" 硬件组态界面 > CPU 右键 选择 "Object Properties"> "Cycle/Clock memory" > 去除 "Update OB1 process image cyclically" 选项勾),同时必须在用户程序中使用 SFC 26 (UPDAT_PI) 与SFC 27 (UPDAT_PO) 对OB1 过程映像进展更新。以下是 OB1 过程映像区循环更新的主要特点:· 循环时间越短,OB1 过程映像的更新频率越快。· 过程映像区的更新时间长短依情况而定,它取决于以下因素:o OB1 过程映像增加的地址数量o 与单个模板通讯的速率o 用于寻址单个模板的通讯协议类型 (MPI, PROFIBUS, .)· 设置的 OB1 过程映像越大 ( 仅局部 CPU 可设置),映像区中所包含的模板通道数越多那么循环时间也随之增长。过程映像分区 ( PIP )除 OB1 过程映像之外,在某些类型 CPU 中还可以将输入/输出地址分配至过程映像分区 (PIP) 。不能将同一输入/输出地址既分配至 OB1 过程映像,又分配至过程映像分区 (PIP),只能二选一。过程映像分区的更新有以下两种方式:· 在用户程序中通过调用 SFC 26 (UPDAT_PI) 与 SFC 27 (UPDAT_PO)· 将 PIP 分配至 OB当使用 SFC 进展更新时,可对过程映像分区进展一致性数据读写,数据长度取决于 CPU 的类型。相关信息可参照 SFC 功能块的 S7 在线帮助。在硬件组态中,可以对OB的过程映像分区进展参数设置 (右键单击 CPU 选择"Object Properties" > "Cycle/Clock bit memory"). 可将过程映像分区分配至 OB 块。当该 OB 块被调用时,与之有关的过程映像分区读入输入值。当 OB 块处理完毕,与之相关的过程映像分区立即将输出值写至输出。请参考在线帮助了解 OB 块的执行情况 (分配至 OB 61 至 64 的过程映像分区不会被自动更新) 。外设寻址过程映像区不能涵盖整个 CPU 的输入/输出地址区域。如,CPU 315-2DP (6ES7315-2EG10-0AB0) 的 I/O 地址总量最大为 2048 字节,但其过程映像区的大小为 128 字节。一旦所要使用的模板 I/O 地址超出了过程映像区范围,就必须使用外设寻址。外设地址使用户程序与外设地址进展快速数据交互。这一点对模拟量与过程报警尤为重要。通过外设寻址同样可以访问已被分配过程映像的 I/O 地址区域。外设寻址意指直接访问外设模板,在地址前加上字母 'P' 来表示:· PIB -> Peripheral Input Byte 外设输入字节· PQB -> Peripheral output Byte 外设输出字节· PIW -> Peripheral Input Word 外设输入字· PQW -> Peripheral output Word 外设输出字· PID -> Peripheral Input Double-word 外设输入双字· PQD -> Peripheral Output Double-word 外设输出双字以下情况需要使用外设寻址:· 模板地址未分配至过程映像区· 用户程序需要比过程映像更为实时的输入值 · 输出值需要即刻输出至模板 (至少一个字节)使用外设寻址时请注意:1. 直接访问外设地址比访问过程映象所需时间长。如:CPU 317-2 DP:L IB x 0.05 s L PIB x 15.01 s· "L PIB 1" 与"L PIW 2" 这两条指令获得的数据不一致,而 "L PID 1" 那么可保证 PIB 1至 PIB 4 数据的一致性。如果需要直接读取大于4个字节的连续地址区域,可以使用 SFC 14 (DPRD_DAT),如要向模板写入大于4个字节的连续数据,可以使用 SFC 15 (DPWR_DAT)。· 直接读写外设输入/输出地址必须整个字节的读取,而不能对外设进展位寻址。在一些应用中可以利用对应于同一地址的外设寻址与过程映像的差异。其差异表现在,在用户程序中外设寻址直接写至模板输出,而过程映像那么保持此次的更新值。如:Fig. 01· A Q 1.0 语句中 Q 1.0 的信号状态与上一次程序执行时的外设访问值保持一样,而不随本次程序中 PQB 1的值发生变化。对于输入,可以使用装载、传送指令,来更新过程映像的值。如:Fig. 02利用 MC7 指令可以对过程映像区进展编辑。I 与 Q 区可以存储外设信号,以对外设信号进展预处理或进一步处理。 当然,M、D 或 L 区也可实现此功能。· 外设输入地址为只读· 外设输出地址为只写第 8 页