S7-1200OB组织块的使用
展开全文
一、OB 组织块
● 什么是组织块?
组织块是操作系统和用户程序之间的接口。OB 用于执行具体的程序:
1、在 CPU 启动时;
2、在一个循环或延时时间到达时;
3、当发生硬件中断时;
4、当发生故障时;
5、组织块根据其优先级执行。
OB 事件
● 组织块 OB 的类型
图1. OB 事件概览
● 通过上图,可以看到 OB 组织块分为三个优先组,高优先组中的组织块可中断低优先组
中的组织块;如果同一个优先组中的组织块同时触发将按其优先级由高到低进行排队依次执行;如果同一个优先级的组织块同时触发时,将按块的编号由小到大依次执行。
● CPU 为三个 OB 优先级组中的每一个组都提供了临时(本地)存储器:
1、16 KB 用于启动和程序循环(包括相关的 FB 和 FC)
2、4 KB 用于标准中断事件(包括 FB 和 FC)
3、4 KB 用于错误中断事件(包括 FB 和 FC)
● 嵌套深度:是指可从 OB 调用功能 (FC) 或功能块 (FB) 等程序代码块的深度,如图2所示。
1、从程序循环 OB 或启动 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为16层;
2、从延时中断、循环中断、硬件中断、时间错误中断或诊断错误中断 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为4层。
图2 嵌套深度
二、程序循环 OB
● 程序循环 OB 的功能
程序循环 OB 在 CPU 处于 RUN 模式时,周期性地循环执行。可在程序循环 OB 中放置控制程序的指令或调用其它功能块(FC 或 FB)。主程序(Main)为程序循环 OB ,要启动程序执行,项目中至少有一个程序循环 OB 。操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。
S7-1200 允许使用多个程序循环 OB ,按 OB 的编号顺序执行。OB1 是默认设置,其它程序循环 OB 的编号必须大于或等于123。程序循环 OB 的优先级为1,可被高优先级的组织块中断;程序循环执行一次需要的时间即为程序的循环扫描周期时间。最长循环时间缺省设置为150ms。如果您的程序超过了最长循环时间,操作系统将调用 OB80(时间故障OB );如果 OB80 不存在,则 CPU 停机。
● 操作系统的执行过程,请参见下图1:
1、操作系统启动扫描循环监视时间;
2、操作系统将输出过程映像区的值写到输出模块;
3、操作系统读取输入模块的输入状态,并更新输入过程映像区;
4、操作系统处理用户程序并执行程序中包含的运算;
5、当循环结束时,操作系统执行所有未决的任务,例如加载和删除块,或调用其他循环 OB ;
6、最后,CPU 返回循环起点,并重新启动扫描循环监视时间。
图1. 程序循环图例
● 程序循环 OB 的使用示例:
一块操
例如:在循环组织块 OB123 中调用 FC1 。具体实现过程如下:
1、按如下步骤创建循环组织块 OB123 。如图2。
图2. 创建循环组织块
2、通过上述类似方法创建功能 FC1 。如图3。
图3. 创建 FC1
3、在循环组织块 OB123 中调用 FC1 。如图4。
图4. 调用 FC1
从零学PLC
提供全套从零学习PLC资料,扎扎实实学技术。
71篇原创内容
三、时间中断 OB10
● 时间中断 OB10 的功能
时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达时只运行一次;或者在设定的触发日期到达后,按每分/小时/天/周/月等周期运行。
只有在设置并激活了时间中断,且程序中存在相应组织块的情况下,才能运行时间中断。
● 与时间中断 OB10 相关的指令
指令名称
功能说明
SET_TINTL(设置时间中断)
设置日期和时间中断。程序中断 OB 可以设置为执行一次,或者在分配的时间段内多次执行。
CAN_TINT(取消时间中断)
为指定的中断 OB 取消起始日期和时钟中断事件。
ACT_TINT(激活时间中断)
为指定的中断 OB 激活起始日期和时间中断事件。
QRY_TINT(查询时间中断状态)
为指定的中断 OB 查询日期和时间中断状态。
以上指令的相关详细信息,请查看链接中S7-1200系统手册,第9.5.3章:时钟中断。
● 时间中断 OB 的设置和激活方法