OB1PI 无须初始化的循环过程影响
PTP1 需要用户程序进行初始换的局部过程影像区
在用户程序中访问输入(I) 和输出(Q) 地址区时,程序并不扫描数字信号模块上的信号状态,而是访问CPU系统存储器和分布式I/O 中的存储器区。该存储器区就是过程映像。
操作系统(OS)的内部任务之一是读取输入状态到过程映像输入表(PII) 。一旦该步骤完成,将执行用户程序以及它所调用的所有块。周期结束时,将过程映像输出表(PIQ) 写入到模块的输出。读入过程映像输入表以及将过程映像输出表写入模块的输出,均由操作系统独立控制。
操作系统(OS)的内部任务之一是过程映像输出表(PIQ) 写入模块的输出,并读取输入状态到过程映像输入表(PII) 。一旦该步骤完成,将执行用户程序以及它所调用的所有块。将过程映像输出表写入模块的输出和读入过程映像输入表均由操作系统独立控制。
过程映像的优点
与直接访问输入/输出模块相比,过程映像访问的主要优点在于在一个程序周期持续期间,CPU具有过程信号的一致性的映像。如果在程序执行期间,输入模块的信号状态发生了变化时,过程映像中的信号状态仍被保持,直到下一个周期过程映像进行了更新。在用户程序中周期性地扫描输入信号的过程,确保了总有一致的输入信息。
访问过程映像还比直接访问信号模块更节省时间,因为过程映像位于 CPU的内存中。
局部过程映像(过程映像分区)
除了由操作系统自动更新的过程映像(过程映像输入表 PII和过程映像输出表 PIQ),还可为S7-400 CPU 分配***多 15个局部过程映像(CPU 专用的,no. 1到no. 15 )。也就是说,在必要时,可以独立于过程映像表的更新周期,更新过程映像表的部分。通过STEP 7为每个输入/输出地址分配的过程映像分区将不再属于OB1过程映像输入/输出表。输入和输出地址只能一次分配到 OB 1过程映像和所有的过程映像分区。
在分配地址时,可以使用 STEP 7定义过程映像分区(哪些模块输入/输出地址列在哪些过程映像分区)。过程映像分区既可由用户通过 SFC 来更新,也可通过系统连接的OB进行自动更新。
例外:同步周期中断OB的过程映像分区并不在系统侧更新,即使它们已链接到 OB (OB 61 到OB 64)上。
使用SFC更新局部过程映像(过程映像分区)
可以在用户程序中使用 SFC 来更新整个过程映像或一个过程映像分区。
• 要求:所说的过程映像不能由系统更新。
• SFC26 UPDAT_PI:更新过程映像输入表
• SFC27 UPDAT_PO:更新过程映像输出表。
局部过程映像(过程映像分区)的系统更新
也可以调用OB自动对过程映像分区进行系统更新 - 与(整个)过程映像类似,它是在OB1处理之前或之后周期性地更新。只能作为一个参数为特定的 CPU分配该功能。
在运行期间,所分配的过程映像分区将自动更新:
• 在处理OB之前,用于输入的过程映像分区
• 在处理OB之后,用于输出的过程映像分区
在分配OB优先级的同时,可以为 CPU分配参数,来指示哪个过程映像分区被分配给了哪个OB。
在过程映像更新期间的I/O 访问错误(PZF)
在过程映像更新时,CPU默认情况下(S7-300 系列和 S7-400系列)对错误的反应有差别:
• S7-300:不在诊断缓冲区中生成条目,不调用OB,相应的输入字节被复位为“0”并将保持为“0”,直到故障消失。
• S7-400:在诊断缓冲区中生成一个条目,为相应的每个过程映像更新的每个I/O访问启动 OB85。每次访问过程映像时,故障输入字节被复位为“0”。
对于新型的 CPU (如4/99),可以为 I/O 访问错误的反应重新分配参数,以便 CPU以下列方式之一工作:
• 在诊断缓冲区中生成条目,仅为进入的和离开的PZF 启动OB85 (在调用OB 85之前,故障输入字节被复位为“0”,而且在 PZF 离开之前操作系统不会再将其覆盖)
• 生成默认的 S7-300执行结果(不调用OB85;相应的输入字节被复位为“0”,并且故障清除之前操作系统不会再将其覆盖。)
• 生成默认的 S7-400执行结果(为每个单独访问调用OB85;每次访问过程映像时将故障输入字节复位为“0”。)
OB85 的启动频率
除了作为参数分配的 PZF 的反应(进入的/离开的或对于每个I/O 访问)之外,模块的地址空间也会影响OB85的启动频率:
对于一个地址空间多达双字的模块,OB85启动一次,例如对于***多为 32位的输入或输出的数字模块或对于有两个通道的模拟模块。