西门子OB组织块介绍
OB组织块
● 什么是组织块?
组织块是操作系统和用户程序之间的接口。OB 用于执行具体的程序:
- 在 CPU 启动时
- 循环程序处理
- 在循环或延时时间到达时
- 当发生外部条件触发时
- 当发生故障、错误时
OB内部调用FB、FC,并且这些FB、FC还可以继续向下嵌套调用FB、FC。除主程序和启动OB以外,其他OB的执行是根据各种中断条件(错误、时间、硬件等)来触发的,OB无法被FB、FC调用。
每个组织块都有各自的优先级,在低优先级OB运行过程中,高优先级OB到来会打断低优先级执行。
以主循环程序为例,在没有其他OB执行时,程序循环中的程序,即主程序在周而复始的执行,当有高优先级中断(例如循环中断)出现时,立即停止主程序执行,转而执行高优先级中断OB的程序,当高优先级中断OB的程序执行完,则继续从中断处的主程序执行。两个不同优先级OB的程序之间的打断也是同样道理。
OB事件
● 组织块 OB 的类型
图1 OB 的类型
* V4.0版本CPU以前,延时中断OB+循环中断OB数量<=4
** V4.0版本CPU开始支持
** V4.1版本CPU开始支持
** V4.2版本CPU开始支持
通信优先级
通信任务的优先级为 1。因为 1 是最低优先级,所以其他事件可以中断通信处理。其他事件导致的中断可能会对扫描周期的通信处理产生负面影响。可以调整'通信造成的周期负载'百分比,以增加专用于通信处理的扫描周期部分。
● CPU 为每个OB 优先级提供了临时(本地)存储器:
1、16 KB 用于启动和程序循环(包括相关的 FB 和 FC)
2、6 KB 用于其他中断事件(包括 FB 和 FC)
● 嵌套深度:是指可从 OB 调用功能 (FC) 或功能块 (FB) 等程序代码块的深度,如图1所示。
1、从程序循环 OB 或启动 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为16层;
2、从其他中断 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为6层。
注意:安全程序嵌套深度为4层。
图2 嵌套深度