PLC用户程序怎么执行

2019年1月14日15:01:45 发表评论 526 阅读

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通电时在中央机架中插入或拔出模块。

插入或拔出模块的安全要求

在 CPU 通电时在中央机架中插入或拔出模块(SM、SB、BB、CD、CM 或CP)可能导致不可预知的行为,从而导致设备受损和/或人员受伤。 在中央机架中插入或拔出模块前,请务必切断 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 或编辑OB属性时将过程映像分区分配给中断事件。

默认情况下,在设备视图中插入模块时,STEP 7 会将其 I/O 过程映像更新为“自动更新”(Automatic update)。 对于组态为“自动更新”(Automatic update) 的 I/O,CPU 将在每个扫描周期自动处理模块和过程映像之间的数据交换。

要将数字量或模拟量点分配给过程映像分区,或将I/O点排除在过程映像更新之外,请按照以下步骤操作:

  1.  在设备组态中查看相应设备的“属性”(Properties)选项卡。
  2. 根据需要在“常规(General)”下展开选项,找出所需的 I/O 点。
  3.  选择“I/O 地址”(I/Oaddresses)。
  1.  也可以从“组织块”(Organization block) 下拉列表中选择一个特定的OB。
  2. 在“过程映像”(Process image) 下拉列表中将“自动更新”(Automaticupdate)更改为“PIP1”、“PIP2”、“PIP3”、“PIP4”或“无”(None)。 选择“无”(None) 表示只能通过立即指令对此 I/O 进行读写。 要将这些点重新添加到过程映像自动更新中,请将该选项再次更改为“自动更新”(Auto matic update)。

说明 使用过程映像分区

如果将 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 网络 上的分布式I/O。

 

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: