用户程序的执行
CPU 支持以下类型的代码块,使用它们可以创建有效的用户程序结构:
● 组织块 (OB) 定义程序的结构。 有些 OB 具有预定义的行为和启动事件,但用户也可以创建具有自定义启动事件的 OB。
● 功能 (FC) 和功能块 (FB) 包含与特定任务或参数组合相对应的程序代码。 每个 FC 或 FB 都提供一组输入和输出参数,用于与调用块共享数据。 FB 还使用相关联的数据块(称为背景数据块)来保存该 FB 调用实例的数据值。 可多次调用 FB,每次调用都采用唯一的背景数据块。 调用带有不同背景数据块的同一 FB 不会对其它任何背景数据块的数据值产生影响。
● 数据块 (DB) 存储程序块可以使用的数据。 用户程序的执行顺序是:从一个或多个在进入 RUN 模式时运行一次的可选启动组织块 (OB) 开始,然后执行一个或多个循环执行的程序循环 OB。还可以将 OB 与中断事件关联,该事件可以是标准事件或错误事件。当发生相应的标准或错误事件时, 即会执行这些 OB。
功能 (FC) 或功能块 (FB) 是指可从 OB 或其它 FC/FB
调用的程序代码块,可下至以下嵌套深度:
● 16(从程序循环 OB 或启动 OB 开始)
● 6(从任意中断事件 OB 开始) 注:安全程序使用二级嵌套。因此,用户程序在安全程序中的嵌套深度为四。
FC 不与任何特定数据块 (DB) 相关联。FB 与 DB 直接相关并使用该 DB 传递参数及存储中间值和结果。 用户程序、数据及组态的大小受 CPU 中可用装载存储器和工作存储器的限制。对各个 OB、FC、FB 和 DB 块的数目没有特殊限制。但是块的总数限制在 1024 之内。 每个周期都包括写入输出、读取输入、执行用户程序指令以及执行后台处理。该周期称为 扫描周期或扫描。
S7-1200 自动化解决方案可由配备 S7-1200 CPU 和附加模块的中央机架组成。术语“中央机架”表示 CPU 和关联模块采用导轨或面板式安装。只有在通电时才会对模块(SM、SB、BB、CB、CM 或 CP)进行检测和记录。
● 不支持通电时在中央机架中插入或拔出模块(热插拔)。切勿在 CPU 通电时在中央机架中插入或拔出模块。
插入或拔出模块的安全要求
从中央机架插入或移除模块(SM、SB、BB、CD、CM 或 CP)之前,如果未禁用 CPU 的所有电源,可能会造成损坏或不可预测的行为,从而导致死亡或人员重伤和/或财 产损失。 在中央机架中插入或拔出模块前,请务必切断 CPU 和中央机架的电源并遵守相应的安全预防措施。
可在 CPU 通电时插入或拔出 SIMATIC 存储卡。但在 CPU 处于 RUN 模式时插入或拔出存储卡会使 CPU 进入 STOP 模式。
CPU 处于 RUN 模式时拔出存储卡的风险: 在 CPU 处于 RUN 模式时插入或拔出存储卡会使 CPU 进入 STOP 模式,这可能导致受控的设备或过程受损。 只要插入或拔出存储卡,CPU 就立即进入 STOP 模式。在插入或拔出存储卡前,务必确保 CPU 当前未控制任何机器或过程。因此务必要为您的应用或过程安装急停电路。
● 如果在 CPU 处于 RUN 模式时在分布式 I/O 机架(AS-i、PROFINET 或 PROFIBUS)中插入或拔出模块,CPU 将在诊断缓冲区中生成一个条目,若存在拔出或插入模块 OB 则执行该 OB,并且默认保持在 RUN 模式。
过程映像更新与过程映像分区
CPU 伴随扫描周期使用内部存储区(即过程映像)对本地数字量和模拟量 I/O 点进行同步更新。过程映像包含物理输入和输出(CPU、信号板和信号模块上的物理 I/O 点)的快照。 可组态在每个扫描周期或发生特定事件中断时在过程映像中对 I/O 点进行更新。也可对 I/O 点进行组态使其排除在过程映像的更新之外。例如,当发生如硬件中断这类事件时,过程 可能只需要特定的数据值。通过为这些 I/O 点组态映像过程更新,使其与分配给硬件中断 OB 的分区相关联,就可避免在过程不需要持续更新时,CPU 于每个扫描周期中执行不必要的数据值更新。
对于需要在每个扫描周期进行更新的 I/O,CPU 将在每个扫描周期期间执行以下任务:
● CPU 将过程映像输出区中的输出值写入到物理输出。
● CPU 仅在用户程序执行前读取物理输入,并将输入值存储在过程映像输入区。这样一来, 这些值便将在整个用户指令执行过程中保持一致。
● CPU 执行用户指令逻辑,并更新过程映像输出区中的输出值,而不是写入实际的物理输出 。
这一过程通过在给定周期内执行用户指令而提供一致的逻辑,并防止物理输出点可能 在过程映像输出区中多次改变状态而出现抖动。
为控制在每个扫描周期或在事件触发时是否自动更新 I/O 点,S7-1200 提供了五个过程映像分区。个过程映像分区 PIP0 指定用于每个扫描周期都自动更新的 I/O,此为默认分配。其余四个分区 PIP1、PIP2、PIP3 和 PIP4 可用于将 I/O 过程映像更新分配给不同的中断事件。在设备组态中将 I/O 分配给过程映像分区,并在创建中断 OB (页 198) 或编辑 OB 属性 时将过程映像分区分配给中断事件。
默认情况下,在设备视图中插入模块时,STEP 7 会将其 I/O 过程映像更新为“自动更新”(Automatic update)。对于组态为“自动更新”(Automatic update) 的 I/O,CPU 将在每个扫描周期自动处理模块和过程映像之间的数据交换。
要将数字量或模拟量点分配给过程映像分区,或将 I/O 点排除在过程映像更新之外,请按照以下步骤操作:
在设备组态中查看相应设备的“属性”(Properties) 选项卡。 2. 根据需要在“常规 (General)”下展开选项,找出所需的 I/O 点。 3. 选择“I/O 地址”(I/O addresses)。 4. 也可以从“组织块”(Organization block) 下拉列表中选择一个特定的 OB。 5. 在“过程映像”(Process image) 下拉列表中将“自动更新”(Automatic update) 更改为“PIP1”、“PIP2”、“PIP3”、“PIP4”或“无”(None)。选择“无”(None) 表示只能通过立即指令对此 I/O 进行读写。要将这些点重新添加到过程映像自动更新中,请将该选项再次更改为“自动 更新”(Automatic update)。
可以在指令执行时立即读取物理输入值和立即写入物理输出值。无论 I/O 点是否被组态为存储到过程映像中,立即读取功能都将访问物理输入的当前状态而不更新 过程映像输入区。立即写入物理输出功能将同时更新过程映像输出区(如果相应 I/O 点组态为存储到过程映像中)和物理输出点。如果想要程序不使用过程映像,而是直接从 物理点立即访问 I/O 数据,则在 I/O 地址后加后缀“:P”。
如果将 I/O 分配给过程映像分区 PIP1 - PIP4 中的其中一个,但未将 OB 分配给该分区,那么 CPU 决不会将 I/O 更新至过程映像,也不会通过过程映像更新 I/O。将 I/O 分配给未分配相应 OB 的 PIP,相当于将过程映像指定为“无”(None)。可使用直接读指令直接从物理 I/O 中读取 I/O,或使用直接写指令直接写入物理 I/O。CPU 不更新过程映像。
CPU 支持 PROFINET、PROFIBUS、以及 AS-Interface 网络的分布式 I/O。